SpyBara
Go Premium

Documentation 2026-09-30 23:00 UTC to 2026-10-01 21:02 UTC

64 files changed +4,917 −1,101. View all changes and history on the product overview
2026
Thu 1 21:59

admin-setup.md +1 −0

Details

106| [Disable claude.ai sync](/docs/it/settings-reference#syncclaudeaiskills) | Impedire a Claude Code di caricare i [skills](/docs/it/skills#how-synced-skills-behave) e i [plugin](/docs/it/plugins/loading#synced-plugins) che i tuoi sviluppatori abilitano su claude.ai. Se disattivi Skills per la tua organizzazione su claude.ai, Claude Code interrompe la sincronizzazione di entrambi, e su v2.1.273 o successivo rimuove anche quelli già sincronizzati. Per interrompere uno dei due senza disattivare Skills, imposta la sua chiave su `false` nelle impostazioni gestite | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |106| [Disable claude.ai sync](/docs/it/settings-reference#syncclaudeaiskills) | Impedire a Claude Code di caricare i [skills](/docs/it/skills#how-synced-skills-behave) e i [plugin](/docs/it/plugins/loading#synced-plugins) che i tuoi sviluppatori abilitano su claude.ai. Se disattivi Skills per la tua organizzazione su claude.ai, Claude Code interrompe la sincronizzazione di entrambi, e su v2.1.273 o successivo rimuove anche quelli già sincronizzati. Per interrompere uno dei due senza disattivare Skills, imposta la sua chiave su `false` nelle impostazioni gestite | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |

107| [Hook restrictions](/docs/it/settings-reference#allowmanagedhooksonly) | Limitare quali hook vengono eseguiti e limitare gli URL degli hook HTTP; consulta [cosa viene eseguito sotto `allowManagedHooksOnly`](/docs/it/settings-reference#what-runs-under-allowmanagedhooksonly) per l'elenco completo degli effetti | `allowManagedHooksOnly`, `allowedHttpHookUrls` |107| [Hook restrictions](/docs/it/settings-reference#allowmanagedhooksonly) | Limitare quali hook vengono eseguiti e limitare gli URL degli hook HTTP; consulta [cosa viene eseguito sotto `allowManagedHooksOnly`](/docs/it/settings-reference#what-runs-under-allowmanagedhooksonly) per l'elenco completo degli effetti | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

108| [Login enforcement](/docs/it/settings-reference#forceloginmethod) | Limitare l'accesso a un metodo specifico o a un'organizzazione Anthropic. La restrizione del metodo si applica all'estensione VS Code, Agent SDK, `claude setup-token` e `/install-github-app`, e la schermata di accesso interattivo del terminale, raggiunta da `/login` o dall'onboarding al primo avvio, preseleziona il metodo senza applicarlo; Claude Code verifica l'organizzazione per gli accessi dell'account claude.ai nel terminale, nell'estensione VS Code e in Agent SDK, e non la verifica per gli accessi a Claude Console o per l'accesso al [gateway](/docs/it/claude-apps-gateway). Prima della v2.1.212, solo gli accessi al terminale applicavano entrambe le chiavi. Quando impostato, le sessioni autenticate da `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` o `apiKeyHelper` vengono bloccate all'avvio; le sessioni dei provider cloud non sono interessate a meno che una di queste credenziali, o una chiave API salvata da un accesso precedente a Claude Console, non sia anche presente | `forceLoginMethod`, `forceLoginOrgUUID` |108| [Login enforcement](/docs/it/settings-reference#forceloginmethod) | Limitare l'accesso a un metodo specifico o a un'organizzazione Anthropic. La restrizione del metodo si applica all'estensione VS Code, Agent SDK, `claude setup-token` e `/install-github-app`, e la schermata di accesso interattivo del terminale, raggiunta da `/login` o dall'onboarding al primo avvio, preseleziona il metodo senza applicarlo; Claude Code verifica l'organizzazione per gli accessi dell'account claude.ai nel terminale, nell'estensione VS Code e in Agent SDK, e non la verifica per gli accessi a Claude Console o per l'accesso al [gateway](/docs/it/claude-apps-gateway). Prima della v2.1.212, solo gli accessi al terminale applicavano entrambe le chiavi. Quando impostato, le sessioni autenticate da `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` o `apiKeyHelper` vengono bloccate all'avvio; le sessioni dei provider cloud non sono interessate a meno che una di queste credenziali, o una chiave API salvata da un accesso precedente a Claude Console, non sia anche presente | `forceLoginMethod`, `forceLoginOrgUUID` |

109| [Provider restrictions](/docs/it/settings-reference#allowedproviders) | Limitare quali provider API una macchina può utilizzare. Una sessione su un provider non elencato viene rifiutata all'avvio, al login e quando contatta successivamente l'API. Richiede Claude Code v2.1.285 o successivo | `allowedProviders` |

109| [Disable agent view](/docs/it/agent-view#how-background-sessions-are-hosted) | Disattivare `claude agents`, `--bg`, `/background` e il supervisore on-demand | `disableAgentView` |110| [Disable agent view](/docs/it/agent-view#how-background-sessions-are-hosted) | Disattivare `claude agents`, `--bg`, `/background` e il supervisore on-demand | `disableAgentView` |

110| [Configure the corporate launcher](/docs/it/corporate-launcher) | Anteponi il [supervisore dell'agente di background](/docs/it/agent-view#how-background-sessions-are-hosted), i suoi worker e gli [altri processi di background coperti](/docs/it/corporate-launcher#what-the-launcher-covers) con un launcher aziendale richiesto invece di disattivare la visualizzazione dell'agente | `processWrapper` |111| [Configure the corporate launcher](/docs/it/corporate-launcher) | Anteponi il [supervisore dell'agente di background](/docs/it/agent-view#how-background-sessions-are-hosted), i suoi worker e gli [altri processi di background coperti](/docs/it/corporate-launcher#what-the-launcher-covers) con un launcher aziendale richiesto invece di disattivare la visualizzazione dell'agente | `processWrapper` |

111| [Model restrictions](/docs/it/model-config#restrict-model-selection) | `availableModels` filtra quali modelli appaiono nel selettore. L'aggiunta di `enforceAvailableModels` vincola anche il modello predefinito selezionato automaticamente. Consulta [surface coverage](/docs/it/model-config#surface-coverage) per come questa impostazione raggiunge la CLI, il web e l'IDE | `availableModels`, `enforceAvailableModels` |112| [Model restrictions](/docs/it/model-config#restrict-model-selection) | `availableModels` filtra quali modelli appaiono nel selettore. L'aggiunta di `enforceAvailableModels` vincola anche il modello predefinito selezionato automaticamente. Consulta [surface coverage](/docs/it/model-config#surface-coverage) per come questa impostazione raggiunge la CLI, il web e l'IDE | `availableModels`, `enforceAvailableModels` |

Details

418 ```418 ```

419</CodeGroup>419</CodeGroup>

420 420 

421Per confermare il blocco, registrate il callback sotto `PreToolUse` con un matcher `Write|Edit` e chiedete all'agente di creare un file sotto `/etc`: il risultato dello strumento Write nel flusso di messaggi contiene `Writing to /etc is not allowed`, e nessun file viene creato.

422 

421<h3 id="auto-approve-specific-tools">423<h3 id="auto-approve-specific-tools">

422 Approvare automaticamente strumenti specifici424 Approvare automaticamente strumenti specifici

423</h3>425</h3>


468 470 

469Quando un evento si attiva, tutti gli hooks corrispondenti vengono eseguiti in parallelo. Per le decisioni di autorizzazione, il risultato più restrittivo vince: un singolo `deny` blocca la chiamata dello strumento indipendentemente da ciò che gli altri hooks restituiscono. Poiché l'ordine di completamento è non deterministico, scrivete ogni hook per agire in modo indipendente piuttosto che fare affidamento su un altro hook che sia stato eseguito per primo.471Quando un evento si attiva, tutti gli hooks corrispondenti vengono eseguiti in parallelo. Per le decisioni di autorizzazione, il risultato più restrittivo vince: un singolo `deny` blocca la chiamata dello strumento indipendentemente da ciò che gli altri hooks restituiscono. Poiché l'ordine di completamento è non deterministico, scrivete ogni hook per agire in modo indipendente piuttosto che fare affidamento su un altro hook che sia stato eseguito per primo.

470 472 

471L'esempio seguente registra tre controlli indipendenti per ogni chiamata a uno strumento:473L'esempio seguente registra tre controlli indipendenti per ogni chiamata a uno strumento. I nomi degli hooks in esso, come `audit_logger` in Python o `auditLogger` in TypeScript, stanno al posto di callback che voi definite:

472 474 

473<CodeGroup>475<CodeGroup>

474 ```python Python theme={null}476 ```python Python theme={null}


500 Filtrare con matcher multi-strumento502 Filtrare con matcher multi-strumento

501</h3>503</h3>

502 504 

503Utilizzate matcher multi-strumento per condividere un callback tra strumenti correlati. Questo esempio registra tre matcher con ambiti diversi:505Utilizzate matcher multi-strumento per condividere un callback tra strumenti correlati. Questo esempio registra tre matcher con ambiti diversi, e ogni hook che nomina sta al posto di un callback che voi definite:

504 506 

505* Un elenco esatto separato da pipe (`Write|Edit|NotebookEdit`) attiva `file_security_hook` solo per gli strumenti di modifica dei file.507* Un elenco esatto separato da pipe (`Write|Edit|NotebookEdit`) attiva `file_security_hook` solo per gli strumenti di modifica dei file.

506* Un'espressione regolare (`^mcp__`) attiva `mcp_audit_hook` per qualsiasi strumento MCP il cui nome inizia con `mcp__`.508* Un'espressione regolare (`^mcp__`) attiva `mcp_audit_hook` per qualsiasi strumento MCP il cui nome inizia con `mcp__`.


585 ```587 ```

586</CodeGroup>588</CodeGroup>

587 589 

590Per confermare che l'hook si attiva, registrate il callback e chiedete all'agente di delegare un piccolo compito a un subagente, come elencare i file nella directory corrente: quando il subagente finisce, il callback stampa le righe `[SUBAGENT] Completed:` con l'ID del subagente e il percorso della trascrizione.

591 

588<h3 id="make-http-requests-from-hooks">592<h3 id="make-http-requests-from-hooks">

589 Effettuare richieste HTTP dagli hooks593 Effettuare richieste HTTP dagli hooks

590</h3>594</h3>

Details

121 121 

122Le 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.122Le 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.

123 123 

124Se non ne imposti una, Claude Code sceglie la modalità di autorizzazione iniziale in base alle regole in [Quale modalità inizia una sessione](/docs/it/permission-modes#which-mode-a-session-starts-in):

125 

126* Un `permissions.defaultMode` dai [file di impostazioni](/docs/it/settings#where-settings-live) della sessione quando uno si applica

127* Altrimenti il valore predefinito integrato, che può essere [modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode)

128 

129Una sessione che inizia in modalità auto elimina le regole di autorizzazione ampie come una voce `Bash` semplice, come [Come la modalità auto valuta le azioni](/docs/it/permission-modes#how-auto-mode-evaluates-actions) descrive. Se la tua applicazione si basa sulla modalità `default` o su tale regola, passa `default` esplicitamente.

130 

131Prima di TypeScript Agent SDK v0.3.286, omettere `permissionMode` era lo stesso che passare `default`.

132 

124<h3 id="available-modes">133<h3 id="available-modes">

125 Modalità disponibili134 Modalità disponibili

126</h3>135</h3>

agent-sdk/python.md +246 −72

Details

517 async def set_model(self, model: str | None = None) -> None517 async def set_model(self, model: str | None = None) -> None

518 async def rewind_files(self, user_message_id: str) -> None518 async def rewind_files(self, user_message_id: str) -> None

519 async def get_mcp_status(self) -> McpStatusResponse519 async def get_mcp_status(self) -> McpStatusResponse

520 async def get_context_usage(self) -> ContextUsageResponse

520 async def reconnect_mcp_server(self, server_name: str) -> None521 async def reconnect_mcp_server(self, server_name: str) -> None

521 async def toggle_mcp_server(self, server_name: str, enabled: bool) -> None522 async def toggle_mcp_server(self, server_name: str, enabled: bool) -> None

522 async def stop_task(self, task_id: str) -> None523 async def stop_task(self, task_id: str) -> None


540| `set_model(model)` | Cambia il modello per la sessione corrente. Passa `None` per ripristinare il [modello predefinito di Claude Code](/docs/it/model-config) |541| `set_model(model)` | Cambia il modello per la sessione corrente. Passa `None` per ripristinare il [modello predefinito di Claude Code](/docs/it/model-config) |

541| `rewind_files(user_message_id)` | Ripristina i file al loro stato al messaggio utente specificato. Richiede `enable_file_checkpointing=True`. Vedi [File checkpointing](/docs/it/agent-sdk/file-checkpointing) |542| `rewind_files(user_message_id)` | Ripristina i file al loro stato al messaggio utente specificato. Richiede `enable_file_checkpointing=True`. Vedi [File checkpointing](/docs/it/agent-sdk/file-checkpointing) |

542| `get_mcp_status()` | Ottieni lo stato di tutti i server MCP configurati. Restituisce [`McpStatusResponse`](#mcpstatusresponse) |543| `get_mcp_status()` | Ottieni lo stato di tutti i server MCP configurati. Restituisce [`McpStatusResponse`](#mcpstatusresponse) |

544| `get_context_usage()` | Ottieni una suddivisione dell'utilizzo della finestra di contesto per categoria, skill e strumento. Gli stessi dati che `/context` mostra in una sessione interattiva. Restituisce [`ContextUsageResponse`](#contextusageresponse). Per calcolare la suddivisione, Claude Code effettua diverse richieste API di conteggio dei token che non compaiono nel flusso di messaggi; vedi [come vengono gestite queste richieste](#contextusageresponse) |

543| `reconnect_mcp_server(server_name)` | Riprova a connettersi a un server MCP che ha fallito o è stato disconnesso |545| `reconnect_mcp_server(server_name)` | Riprova a connettersi a un server MCP che ha fallito o è stato disconnesso |

544| `toggle_mcp_server(server_name, enabled)` | Abilita o disabilita un server MCP a metà sessione. La disabilitazione rimuove i suoi strumenti |546| `toggle_mcp_server(server_name, enabled)` | Abilita o disabilita un server MCP a metà sessione. La disabilitazione di un server stdio, SSE o HTTP rimuove i suoi strumenti |

545| `stop_task(task_id)` | Interrompi un'attività in background in esecuzione. Un [`TaskNotificationMessage`](#tasknotificationmessage) con stato `"stopped"` segue nel flusso di messaggi |547| `stop_task(task_id)` | Interrompi un'attività in background in esecuzione. Un [`TaskNotificationMessage`](#tasknotificationmessage) con stato `"stopped"` segue nel flusso di messaggi |

546| `get_server_info()` | Ottieni le informazioni di inizializzazione del server, inclusi i comandi disponibili e gli stili di output |548| `get_server_info()` | Ottieni le informazioni di inizializzazione del server, inclusi i comandi disponibili e gli stili di output |

547| `disconnect()` | Disconnettiti da Claude |549| `disconnect()` | Disconnettiti da Claude |


616 Esempio - Input streaming con ClaudeSDKClient618 Esempio - Input streaming con ClaudeSDKClient

617</h4>619</h4>

618 620 

621`query()` accetta anche un iterabile asincrono di dict di messaggi utente, quindi puoi assemblare il prompt al momento dell'invio o includere blocchi di contenuto come immagini. Claude Code inizia a rispondere al primo messaggio generato non appena arriva, senza aspettare che l'iterabile finisca, e `receive_response()` si ferma al `ResultMessage` che termina quella risposta. Metti tutto ciò che Claude dovrebbe leggere prima di rispondere in un messaggio, come fa questo generatore, e abbina ogni chiamata `query()` al suo proprio ciclo `receive_response()`.

622 

619```python theme={null}623```python theme={null}

620import asyncio624import asyncio

621from claude_agent_sdk import ClaudeSDKClient625from claude_agent_sdk import ClaudeSDKClient

622 626 

623 627 

624async def message_stream():628async def message_stream():

625 """Generate messages dynamically."""629 """Assemble the prompt at send time and yield it as one user message."""

626 yield {630 readings = {"Temperature": "25°C", "Humidity": "60%"}

627 "type": "user",631 data = ", ".join(f"{name}: {value}" for name, value in readings.items())

628 "message": {"role": "user", "content": "Analyze the following data:"},

629 }

630 await asyncio.sleep(0.5)

631 yield {

632 "type": "user",

633 "message": {"role": "user", "content": "Temperature: 25°C, Humidity: 60%"},

634 }

635 await asyncio.sleep(0.5)

636 yield {632 yield {

637 "type": "user",633 "type": "user",

638 "message": {"role": "user", "content": "What patterns do you see?"},634 "message": {

635 "role": "user",

636 "content": f"Analyze the following sensor data and describe any patterns you see: {data}",

637 },

639 }638 }

640 639 

641 640 


1607| `scope` | `str` (opzionale) | Ambito di configurazione |1606| `scope` | `str` (opzionale) | Ambito di configurazione |

1608| `tools` | `list` (opzionale) | Strumenti forniti da questo server, ognuno con i campi `name`, `description`, e `annotations` |1607| `tools` | `list` (opzionale) | Strumenti forniti da questo server, ognuno con i campi `name`, `description`, e `annotations` |

1609 1608 

1609<h3 id="contextusageresponse">

1610 `ContextUsageResponse`

1611</h3>

1612 

1613Risposta da [`ClaudeSDKClient.get_context_usage()`](#methods). Questo è lo stesso payload che Claude Code renderizza per il comando `/context` in una sessione interattiva, quindi insieme ai conteggi dei token contiene campi di visualizzazione come `color` e `gridRows` che Claude Code utilizza per disegnare la griglia di utilizzo `/context`.

1614 

1615Claude Code costruisce questo payload inviando diverse richieste all'API di [token-counting](https://platform.claude.com/docs/en/build-with-claude/token-counting). Queste richieste non appaiono nel flusso di messaggi, quindi il tracciamento dei costi che legge il flusso non le vedrà. Sull'API Anthropic, il conteggio dei token non viene fatturato.

1616 

1617```python theme={null}

1618class ContextUsageResponse(TypedDict):

1619 categories: list[ContextUsageCategory]

1620 totalTokens: int

1621 maxTokens: int

1622 rawMaxTokens: int

1623 percentage: float

1624 model: str

1625 isAutoCompactEnabled: bool

1626 memoryFiles: list[dict[str, Any]]

1627 mcpTools: list[dict[str, Any]]

1628 agents: list[dict[str, Any]]

1629 gridRows: list[list[dict[str, Any]]]

1630 autoCompactThreshold: NotRequired[int]

1631 deferredBuiltinTools: NotRequired[list[dict[str, Any]]]

1632 systemTools: NotRequired[list[dict[str, Any]]]

1633 systemPromptSections: NotRequired[list[dict[str, Any]]]

1634 slashCommands: NotRequired[dict[str, Any]]

1635 skills: NotRequired[dict[str, Any]] # skill usage with frontmatter breakdown

1636 messageBreakdown: NotRequired[dict[str, Any]] # message tokens by type

1637 apiUsage: NotRequired[dict[str, Any] | None]

1638```

1639 

1640Ogni voce `ContextUsageCategory` contiene `name`, `tokens`, `color` e un flag opzionale `isDeferred`. `totalTokens` è l'utilizzo del contesto corrente della sessione, e `maxTokens` è la finestra rispetto alla quale viene misurato l'utilizzo. Quella finestra è la finestra di contesto del modello, o la finestra di auto-compattazione inferiore quando se ne applica una, e `rawMaxTokens` contiene lo stesso valore di `maxTokens`. `apiUsage` contiene l'utilizzo dalla risposta API più recente, non un totale in esecuzione per la sessione. Claude Code lascia i campi opzionali `deferredBuiltinTools`, `systemTools` e `systemPromptSections` non impostati, quindi aspettati che siano assenti anche se il tipo li dichiara.

1641 

1610<h3 id="sdkpluginconfig">1642<h3 id="sdkpluginconfig">

1611 `SdkPluginConfig`1643 `SdkPluginConfig`

1612</h3>1644</h3>


2712 2744 

2713Documentazione degli schemi di input/output per tutti gli strumenti Claude Code integrati. Mentre Python SDK non esporta questi come tipi, rappresentano la struttura degli input e output dello strumento nei messaggi.2745Documentazione degli schemi di input/output per tutti gli strumenti Claude Code integrati. Mentre Python SDK non esporta questi come tipi, rappresentano la struttura degli input e output dello strumento nei messaggi.

2714 2746 

2747Ogni output mostrato è il valore che leggete da [`UserMessage.tool_use_result`](#usermessage) per quello strumento. I nomi delle chiavi appaiono esattamente come Claude Code li emette. Una chiave annotata `| None` con un commento "presente quando" o "opzionale" viene omessa quando non si applica.

2748 

2715<h3 id="agent">2749<h3 id="agent">

2716 Agent2750 Agent

2717</h3>2751</h3>


2805```python theme={null}2839```python theme={null}

2806{2840{

2807 "status": "remote_launched",2841 "status": "remote_launched",

2808 "taskId": str, # ID dell'attività remota2842 "taskId": str, # ID dell'attività inviata

2809 "sessionUrl": str, # Collegamento alla sessione cloud remota2843 "sessionUrl": str, # Collegamento alla sessione cloud

2810 "description": str, # La descrizione del compito2844 "description": str, # La descrizione del compito

2811 "prompt": str, # Il prompt che l'agente esegue2845 "prompt": str, # Il prompt che l'agente esegue

2812 "outputFile": str, # Percorso del file dove viene scritto l'output dell'agente2846 "outputFile": str, # Percorso del file dove viene scritto l'output dell'agente

2813}2847}

2814```2848```

2815 2849 

2816Restituisce il risultato dal subagente. L'output è discriminato sul campo `status`: `"completed"` per compiti terminati, `"async_launched"` per compiti in background, e `"remote_launched"` per compiti che Claude Code ha inviato a una sessione cloud remota, dove `sessionUrl` si collega a quella sessione e `taskId` l'identifica. Se Claude Code [ha mantenuto il worktree isolato del subagente](/docs/it/worktrees#isolate-subagents-with-worktrees), `worktreePath` sulla variante `completed` è dove trovarlo, e `worktreeBranch` è il suo ramo quando Claude Code ha creato il worktree con git.2850Restituisce il risultato dal subagente. L'output è discriminato sul campo `status`: `"completed"` per compiti terminati, `"async_launched"` per compiti in background, e `"remote_launched"` per compiti che Claude Code ha inviato a una sessione cloud, dove `sessionUrl` si collega a quella sessione e `taskId` l'identifica. Se Claude Code [ha mantenuto il worktree isolato del subagente](/docs/it/worktrees#isolate-subagents-with-worktrees), `worktreePath` sulla variante `completed` è dove trovarlo, e `worktreeBranch` è il suo ramo quando Claude Code ha creato il worktree con git.

2817 2851 

2818Sulla variante `completed`, `resolvedModel` nomina il modello su cui il subagente ha iniziato, che può differire dal `model` input richiesto quando [`availableModels`](/docs/it/model-config#restrict-model-selection) o un altro override si applica. Questo campo richiede Claude Code v2.1.174 o successivo. Sulla variante `async_launched`, `resolvedModel` nomina il modello in uso quando l'agente si è spostato in background, quindi uno scambio che è accaduto prima del backgrounding si riflette lì. Il campo `modelsUsed` su entrambe le varianti elenca i modelli utilizzati in ordine, con ripetizioni consecutive compresse; è impostato solo quando il modello è stato scambiato durante l'esecuzione. `modelsUsed` e il comportamento di `resolvedModel` al momento del backgrounding richiedono Claude Code v2.1.212 o successivo.2852Sulla variante `completed`, `resolvedModel` nomina il modello su cui il subagente ha iniziato, che può differire dal `model` input richiesto quando [`availableModels`](/docs/it/model-config#restrict-model-selection) o un altro override si applica. Questo campo richiede Claude Code v2.1.174 o successivo. Sulla variante `async_launched`, `resolvedModel` nomina il modello in uso quando l'agente si è spostato in background, quindi uno scambio che è accaduto prima del backgrounding si riflette lì. Il campo `modelsUsed` su entrambe le varianti elenca i modelli utilizzati in ordine, con ripetizioni consecutive compresse; è impostato solo quando il modello è stato scambiato durante l'esecuzione. `modelsUsed` e il comportamento di `resolvedModel` al momento del backgrounding richiedono Claude Code v2.1.212 o successivo.

2819 2853 


2885 2919 

2886**Nome dello strumento:** `Bash`2920**Nome dello strumento:** `Bash`

2887 2921 

2888Per ciò che imposta il limite massimo in primo piano, vedi [Timeout e limiti di output](/docs/it/tools-reference#timeout-and-output-limits). Per il limite di tempo in background, vedi [Comandi in background](/docs/it/tools-reference#background-commands).2922Per ciò che imposta il limite massimo in primo piano, vedi [Timeout e limiti di output](/docs/it/tools-reference#timeout-and-output-limits). Per il limite di tempo in background, vedi [Limite di tempo per i comandi in background](/docs/it/tools-reference#time-limit-for-background-commands).

2889 2923 

2890**Input:**2924**Input:**

2891 2925 


2962 2996 

2963```python theme={null}2997```python theme={null}

2964{2998{

2965 "message": str, # Messaggio di conferma2999 "filePath": str, # Il file che è stato modificato

2966 "replacements": int, # Numero di sostituzioni effettuate3000 "oldString": str, # Il testo che è stato sostituito

2967 "file_path": str, # Percorso del file che è stato modificato3001 "newString": str, # Il testo che lo ha sostituito

3002 "originalFile": str | None, # Contenuto del file prima della modifica

3003 "structuredPatch": [ # Diff hunks per la modifica

3004 {

3005 "oldStart": int,

3006 "oldLines": int,

3007 "newStart": int,

3008 "newLines": int,

3009 "lines": list[str],

3010 }

3011 ],

3012 "userModified": bool, # Se l'utente ha modificato la modifica proposta prima di accettarla

3013 "replaceAll": bool, # Se tutte le occorrenze sono state sostituite

3014 "gitDiff": { # Riepilogo git diff opzionale per il file

3015 "filename": str,

3016 "status": "modified" | "added",

3017 "additions": int,

3018 "deletions": int,

3019 "changes": int,

3020 "patch": str,

3021 "repository": str | None, # Proprietario/repo GitHub quando disponibile

3022 } | None,

2968}3023}

2969```3024```

2970 3025 


2984}3039}

2985```3040```

2986 3041 

2987**Output (File di testo):**3042L'output assume una delle seguenti forme a seconda di ciò che Claude ha letto. Controllare la chiave `type` per distinguerle.

3043 

3044**Output (type: `"text"`):**

3045 

3046```python theme={null}

3047{

3048 "type": "text",

3049 "file": {

3050 "filePath": str, # Il file che è stato letto

3051 "content": str, # Il contenuto restituito

3052 "numLines": int, # Numero di righe nel contenuto restituito

3053 "startLine": int, # Numero di riga in cui inizia il contenuto

3054 "totalLines": int, # Numero totale di righe nel file

3055 "truncatedByTokenCap": bool | None, # Presente e True quando una lettura dell'intero file ha superato il limite di token e il contenuto è la prima pagina

3056 },

3057}

3058```

3059 

3060**Output (type: `"image"`):**

3061 

3062```python theme={null}

3063{

3064 "type": "image",

3065 "file": {

3066 "base64": str, # Dati dell'immagine codificati in Base64

3067 "type": "image/jpeg" | "image/png" | "image/gif" | "image/webp", # Tipo MIME dell'immagine

3068 "originalSize": int, # Dimensione del file originale in byte

3069 "dimensions": { # Informazioni di dimensionamento opzionali per la mappatura delle coordinate

3070 "originalWidth": int | None, # Opzionale; larghezza originale in pixel

3071 "originalHeight": int | None, # Opzionale; altezza originale in pixel

3072 "displayWidth": int | None, # Opzionale; larghezza dopo il ridimensionamento

3073 "displayHeight": int | None, # Opzionale; altezza dopo il ridimensionamento

3074 } | None,

3075 },

3076}

3077```

3078 

3079**Output (type: `"notebook"`):**

3080 

3081```python theme={null}

3082{

3083 "type": "notebook",

3084 "file": {

3085 "filePath": str, # Il notebook che è stato letto

3086 "cells": list, # Celle del notebook

3087 },

3088}

3089```

3090 

3091**Output (type: `"pdf"`):**

3092 

3093```python theme={null}

3094{

3095 "type": "pdf",

3096 "file": {

3097 "filePath": str, # Il PDF che è stato letto

3098 "base64": str, # Dati PDF codificati in Base64

3099 "originalSize": int, # Dimensione del file in byte

3100 },

3101}

3102```

3103 

3104**Output (type: `"parts"`):**

2988 3105 

2989```python theme={null}3106```python theme={null}

2990{3107{

2991 "content": str, # Contenuto del file con numeri di riga3108 "type": "parts",

2992 "total_lines": int, # Numero totale di righe nel file3109 "file": {

2993 "lines_returned": int, # Righe effettivamente restituite3110 "filePath": str, # Il PDF che è stato letto

3111 "originalSize": int, # Dimensione del file in byte

3112 "count": int, # Numero di pagine estratte come immagini

3113 "outputDir": str, # Directory contenente le immagini delle pagine estratte

3114 },

3115 "firstPage": int | None, # Numero di pagina del documento opzionale della prima pagina estratta

2994}3116}

2995```3117```

2996 3118 

2997**Output (Immagini):**3119**Output (type: `"file_unchanged"`):**

2998 3120 

2999```python theme={null}3121```python theme={null}

3000{3122{

3001 "image": str, # Dati dell'immagine codificati in Base643123 "type": "file_unchanged", # Il file è invariato da quando Claude l'ha letto l'ultima volta in questa sessione, quindi il contenuto non viene ripetuto

3002 "mime_type": str, # Tipo MIME dell'immagine3124 "file": {

3003 "file_size": int, # Dimensione del file in byte3125 "filePath": str,

3126 },

3127 "source": "seeded" | None, # Presente quando la copia precedente proveniva da un file CLAUDE.md o memory caricato all'avvio piuttosto che da una chiamata Read

3004}3128}

3005```3129```

3006 3130 


3023 3147 

3024```python theme={null}3148```python theme={null}

3025{3149{

3026 "message": str, # Messaggio di successo3150 "type": "create" | "update", # Se la scrittura ha creato un nuovo file o sovrascritto uno esistente

3027 "bytes_written": int, # Numero di byte scritti3151 "filePath": str, # Il file che è stato scritto

3028 "file_path": str, # Percorso del file che è stato scritto3152 "content": str, # Il contenuto che è stato scritto

3153 "structuredPatch": [ # Diff hunks; vuoto per un nuovo file, quando nulla è cambiato, o quando Claude Code ha saltato il diff

3154 {

3155 "oldStart": int,

3156 "oldLines": int,

3157 "newStart": int,

3158 "newLines": int,

3159 "lines": list[str],

3160 }

3161 ],

3162 "originalFile": str | None, # Contenuto precedente; None per un nuovo file o quando il contenuto precedente era troppo grande da includere

3163 "gitDiff": { # Riepilogo git diff opzionale per il file

3164 "filename": str,

3165 "status": "modified" | "added",

3166 "additions": int,

3167 "deletions": int,

3168 "changes": int,

3169 "patch": str,

3170 "repository": str | None, # Proprietario/repo GitHub quando disponibile

3171 } | None,

3172 "userModified": bool | None, # Opzionale; se l'utente ha modificato il contenuto proposto prima di accettarlo

3029}3173}

3030```3174```

3031 3175 


3048 3192 

3049```python theme={null}3193```python theme={null}

3050{3194{

3051 "matches": list[str], # Array dei percorsi dei file corrispondenti3195 "durationMs": int, # Tempo impiegato per eseguire la ricerca, in millisecondi

3052 "count": int, # Numero di corrispondenze trovate3196 "numFiles": int, # Numero di percorsi restituiti, dopo qualsiasi troncamento

3053 "search_path": str, # Directory di ricerca utilizzata3197 "filenames": list[str], # Percorsi dei file corrispondenti

3198 "truncated": bool, # Se i risultati sono stati troncati al limite di 100 file

3199 "totalMatches": int | None, # Numero totale opzionale di file corrispondenti prima del troncamento; un limite inferiore quando countIsComplete è False

3200 "countIsComplete": bool | None, # Opzionale; se totalMatches è esatto

3054}3201}

3055```3202```

3056 3203 

3204`totalMatches` e `countIsComplete` richiedono Claude Code v2.1.191 o successivo.

3205 

3057<h3 id="grep">3206<h3 id="grep">

3058 Grep3207 Grep

3059</h3>3208</h3>


3074 "-B": int | None, # Righe da mostrare prima di ogni corrispondenza3223 "-B": int | None, # Righe da mostrare prima di ogni corrispondenza

3075 "-A": int | None, # Righe da mostrare dopo ogni corrispondenza3224 "-A": int | None, # Righe da mostrare dopo ogni corrispondenza

3076 "-C": int | None, # Righe da mostrare prima e dopo3225 "-C": int | None, # Righe da mostrare prima e dopo

3226 "context": int | None, # Righe da mostrare prima e dopo; -C è un alias

3227 "-o": bool | None, # Stampa solo le parti corrispondenti di ogni riga

3077 "head_limit": int | None, # Limita l'output alle prime N righe/voci3228 "head_limit": int | None, # Limita l'output alle prime N righe/voci

3229 "offset": int | None, # Salta le prime N righe/voci prima di applicare head_limit

3078 "multiline": bool | None, # Abilita la modalità multilinea3230 "multiline": bool | None, # Abilita la modalità multilinea

3079}3231}

3080```3232```

3081 3233 

3082**Output (modalità content):**3234**Output:**

3083 3235 

3084```python theme={null}3236```python theme={null}

3085{3237{

3086 "matches": [3238 "mode": "content" | "files_with_matches" | "count" | None, # La modalità di output che è stata utilizzata

3087 {3239 "numFiles": int, # Numero di file nel risultato; sempre 0 in modalità content

3088 "file": str,3240 "filenames": list[str], # File corrispondenti in modalità files_with_matches; vuoto nelle altre modalità

3089 "line_number": int | None,3241 "content": str | None, # Righe corrispondenti in modalità content, o conteggi per file in modalità count

3090 "line": str,3242 "numLines": int | None, # Numero di righe nel contenuto, presente in modalità content

3091 "before_context": list[str] | None,3243 "numMatches": int | None, # Conteggio totale delle corrispondenze, presente in modalità count

3092 "after_context": list[str] | None,3244 "totalFiles": int | None, # Totale opzionale prima di head_limit e offset, in modalità files_with_matches

3093 }3245 "totalLines": int | None, # Totale opzionale prima di head_limit e offset, in modalità content

3094 ],3246 "appliedLimit": int | None, # Presente quando head_limit ha troncato il risultato

3095 "total_matches": int,3247 "appliedOffset": int | None, # Presente quando è stato applicato un offset

3096}3248}

3097```3249```

3098 3250 

3099**Output (modalità files\_with\_matches):**3251Grep restituisce questa forma di dict in ogni modalità di output. Quali chiavi opzionali sono presenti dipende da `output_mode`.

3100 3252 

3101```python theme={null}3253`totalFiles` richiede Claude Code v2.1.208 o successivo. `totalLines` richiede Claude Code v2.1.210 o successivo.

3102{

3103 "files": list[str], # File contenenti corrispondenze

3104 "count": int, # Numero di file con corrispondenze

3105}

3106```

3107 3254 

3108<h3 id="notebookedit">3255<h3 id="notebookedit">

3109 NotebookEdit3256 NotebookEdit


3127 3274 

3128```python theme={null}3275```python theme={null}

3129{3276{

3130 "message": str, # Messaggio di successo3277 "new_source": str, # La sorgente scritta nella cella

3131 "edit_type": "replaced" | "inserted" | "deleted", # Tipo di modifica eseguita3278 "old_source": str | None, # Sorgente della cella precedente, presente per replace e delete

3132 "cell_id": str | None, # ID della cella interessata3279 "cell_id": str | None, # ID della cella modificata, quando disponibile

3133 "total_cells": int, # Numero totale di celle nel notebook dopo la modifica3280 "cell_type": "code" | "markdown", # Il tipo della cella

3281 "language": str, # Il linguaggio di programmazione del notebook

3282 "edit_mode": str, # La modalità di modifica che è stata utilizzata

3283 "error": str | None, # Messaggio di errore quando l'operazione non è riuscita

3284 "notebook_path": str, # Il file del notebook

3285 "original_file": str, # Contenuto del notebook prima della modifica

3286 "updated_file": str, # Contenuto del notebook dopo la modifica

3134}3287}

3135```3288```

3136 3289 


3228 3381 

3229```python theme={null}3382```python theme={null}

3230{3383{

3231 "message": str, # Messaggio di successo3384 "oldTodos": [ # L'elenco todo prima dell'aggiornamento

3232 "stats": {"total": int, "pending": int, "in_progress": int, "completed": int},3385 {

3386 "content": str,

3387 "status": "pending" | "in_progress" | "completed",

3388 "activeForm": str,

3389 }

3390 ],

3391 "newTodos": [ # L'elenco todo dopo l'aggiornamento

3392 {

3393 "content": str,

3394 "status": "pending" | "in_progress" | "completed",

3395 "activeForm": str,

3396 }

3397 ],

3233}3398}

3234```3399```

3235 3400 


3401 3566 

3402```python theme={null}3567```python theme={null}

3403{3568{

3404 "message": str, # Messaggio di conferma3569 "plan": str | None, # Il piano che è stato presentato all'utente

3405 "approved": bool | None, # Se l'utente ha approvato il piano3570 "isAgent": bool, # True quando un subagente ha chiamato lo strumento

3571 "filePath": str | None, # Presente quando il piano è stato salvato in un file

3572 "hasTaskTool": bool | None, # Opzionale; se lo strumento Agent è disponibile nel contesto corrente

3573 "planWasEdited": bool | None, # Presente e True quando l'utente ha modificato il piano prima di approvarlo

3574 "awaitingLeaderApproval": bool | None, # Presente e True quando un compagno di squadra ha inviato il piano al team lead per l'approvazione

3575 "requestId": str | None, # ID opzionale di quella richiesta di approvazione

3406}3576}

3407```3577```

3408 3578 


3420}3590}

3421```3591```

3422 3592 

3593Il risultato è un elenco piuttosto che un dict, quindi `tool_use_result` contiene un `list` per questo strumento.

3594 

3423**Output:**3595**Output:**

3424 3596 

3425```python theme={null}3597```python theme={null}

3426{3598[ # Una voce per risorsa

3427 "resources": [

3428 {3599 {

3429 "uri": str,3600 "uri": str, # URI della risorsa

3430 "name": str,3601 "name": str, # Nome della risorsa

3431 "description": str | None,3602 "mimeType": str | None, # Tipo MIME opzionale

3432 "mimeType": str | None,3603 "description": str | None, # Descrizione opzionale

3433 "server": str,3604 "server": str, # Server che fornisce questa risorsa

3434 }3605 }

3435 ],3606]

3436 "total": int,

3437}

3438```3607```

3439 3608 

3440<h3 id="readmcpresource">3609<h3 id="readmcpresource">


3457```python theme={null}3626```python theme={null}

3458{3627{

3459 "contents": [3628 "contents": [

3460 {"uri": str, "mimeType": str | None, "text": str | None, "blob": str | None}3629 {

3630 "uri": str, # URI della risorsa

3631 "mimeType": str | None, # Tipo MIME opzionale

3632 "text": str | None, # Contenuto di testo, o una nota sul contenuto binario

3633 "blobSavedTo": str | None, # Presente quando Claude Code ha salvato il contenuto binario su disco; percorso del file salvato

3634 }

3461 ],3635 ],

3462 "server": str,3636 "error": str | None, # Presente quando il server non poteva leggere la risorsa

3463}3637}

3464```3638```

3465 3639 

Details

575| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Definisci il formato di output per i risultati dell'agente. Vedi [Structured outputs](/docs/it/agent-sdk/structured-outputs) per i dettagli |575| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Definisci il formato di output per i risultati dell'agente. Vedi [Structured outputs](/docs/it/agent-sdk/structured-outputs) per i dettagli |

576| `outputStyle` | `string` | `undefined` | Non è un campo `Options`. Imposta `outputStyle` nell'oggetto [`settings`](/docs/it/settings) inline o in un file di impostazioni. Vedi [Attiva uno stile di output](/docs/it/agent-sdk/modifying-system-prompts#activate-an-output-style) |576| `outputStyle` | `string` | `undefined` | Non è un campo `Options`. Imposta `outputStyle` nell'oggetto [`settings`](/docs/it/settings) inline o in un file di impostazioni. Vedi [Attiva uno stile di output](/docs/it/agent-sdk/modifying-system-prompts#activate-an-output-style) |

577| `pathToClaudeCodeExecutable` | `string` | Auto-risolto dal binario nativo in bundle | Percorso all'eseguibile Claude Code. Necessario solo se le dipendenze opzionali sono state saltate durante l'installazione o la tua piattaforma non è nel set supportato |577| `pathToClaudeCodeExecutable` | `string` | Auto-risolto dal binario nativo in bundle | Percorso all'eseguibile Claude Code. Necessario solo se le dipendenze opzionali sono state saltate durante l'installazione o la tua piattaforma non è nel set supportato |

578| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | Modalità di permesso per la sessione |578| `permissionMode` | [`PermissionMode`](#permissionmode) | `undefined` | Modalità di permesso per la sessione. Se la ometti, la sessione può iniziare in modalità auto. Vedi [Permission modes](/docs/it/agent-sdk/permissions#permission-modes) per come Claude Code sceglie la modalità di permesso iniziale |

579| `permissionPromptToolName` | `string` | `undefined` | Nome dello strumento MCP per i prompt di permesso |579| `permissionPromptToolName` | `string` | `undefined` | Nome dello strumento MCP per i prompt di permesso |

580| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Chi risponde ai prompt di permesso: `'host'` li instrada al tuo callback [`canUseTool`](#canusetool) o allo strumento `permissionPromptToolName`, e `'none'` [nega le chiamate che avrebbero richiesto](/docs/it/agent-sdk/permissions#how-permissions-are-evaluated). Richiede Claude Code v2.1.259 o successivo |580| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Chi risponde ai prompt di permesso: `'host'` li instrada al tuo callback [`canUseTool`](#canusetool) o allo strumento `permissionPromptToolName`, e `'none'` [nega le chiamate che avrebbero richiesto](/docs/it/agent-sdk/permissions#how-permissions-are-evaluated). Richiede Claude Code v2.1.259 o successivo |

581| `persistSession` | `boolean` | `true` | Quando `false`, disabilita la persistenza della sessione su disco. Le sessioni non possono essere riprese in seguito |581| `persistSession` | `boolean` | `true` | Quando `false`, disabilita la persistenza della sessione su disco. Le sessioni non possono essere riprese in seguito |


709| `supportedModels()` | Restituisce i modelli disponibili con informazioni di visualizzazione |709| `supportedModels()` | Restituisce i modelli disponibili con informazioni di visualizzazione |

710| `supportedAgents()` | Restituisce i subagent disponibili come [`AgentInfo`](#agentinfo)`[]` |710| `supportedAgents()` | Restituisce i subagent disponibili come [`AgentInfo`](#agentinfo)`[]` |

711| `mcpServerStatus()` | Restituisce lo stato dei server MCP connessi come [`McpServerStatus`](#mcpserverstatus)`[]` |711| `mcpServerStatus()` | Restituisce lo stato dei server MCP connessi come [`McpServerStatus`](#mcpserverstatus)`[]` |

712| `getContextUsage(opts?)` | Restituisce un [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) che suddivide l'utilizzo della finestra di contesto della sessione per categoria, skill e strumento. Con il predefinito `detail`, sono gli stessi dati che `/context` mostra in una sessione interattiva. L'[opzione `detail`](#sdkcontrolgetcontextusageresponse) richiede Agent SDK v0.3.257 o successivo |712| `getContextUsage(opts?)` | Restituisce un [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) che suddivide l'utilizzo della finestra di contesto della sessione per categoria, skill e strumento. Con il predefinito `detail`, sono gli stessi dati che `/context` mostra in una sessione interattiva, calcolati con richieste API di conteggio dei token che non appaiono nel flusso di messaggi; vedi [come queste richieste vengono gestite](#sdkcontrolgetcontextusageresponse). L'[opzione `detail`](#sdkcontrolgetcontextusageresponse) richiede Agent SDK v0.3.257 o successivo |

713| `readFile(path, options?)` | Legge un file dal filesystem della sessione. Claude Code risolve il percorso rispetto a `cwd`; [Cosa `readFile()` può leggere](#what-readfile-can-read) elenca i file che serve. Passa `{ maxBytes }` per cambiare il limite di lettura (predefinito 1 MB, massimo 10 MB) e `{ encoding: 'base64' }` per file binari come immagini. Si risolve con un [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), o `null` su rifiuto di permesso, file mancante, o errore di trasporto. Richiede TypeScript SDK v0.2.121 o successivo |713| `readFile(path, options?)` | Legge un file dal filesystem della sessione. Claude Code risolve il percorso rispetto a `cwd`; [Cosa `readFile()` può leggere](#what-readfile-can-read) elenca i file che serve. Passa `{ maxBytes }` per cambiare il limite di lettura (predefinito 1 MB, massimo 10 MB) e `{ encoding: 'base64' }` per file binari come immagini. Si risolve con un [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), o `null` su rifiuto di permesso, file mancante, o errore di trasporto. Richiede TypeScript SDK v0.2.121 o successivo |

714| `reloadPlugins(options?)` | Ricarica i plugin dal disco, in modo che i plugin che installi o modifichi mid-session raggiungano la sessione in esecuzione. Si risolve con un [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) che elenca i comandi, i subagent, i plugin e lo stato del server MCP della sessione. Richiede Agent SDK v0.2.85 o successivo. L'[opzione `holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) richiede Agent SDK v0.3.268 o successivo |714| `reloadPlugins(options?)` | Ricarica i plugin dal disco, in modo che i plugin che installi o modifichi mid-session raggiungano la sessione in esecuzione. Si risolve con un [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) che elenca i comandi, i subagent, i plugin e lo stato del server MCP della sessione. Richiede Agent SDK v0.2.85 o successivo. L'[opzione `holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) richiede Agent SDK v0.3.268 o successivo |

715| `reloadSkills()` | Ricarica le skill dal disco, in modo che le skill che aggiungi o modifichi mid-session diventino disponibili per la sessione in esecuzione. Si risolve con un [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) che elenca le skill disponibili dopo il ricaricamento. Richiede Agent SDK v0.3.163 o successivo |715| `reloadSkills()` | Ricarica le skill dal disco, in modo che le skill che aggiungi o modifichi mid-session diventino disponibili per la sessione in esecuzione. Si risolve con un [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) che elenca le skill disponibili dopo il ricaricamento. Richiede Agent SDK v0.3.163 o successivo |

716| `reloadOutputStyles()` | Re-legge gli [stili di output](/docs/it/output-styles) dal disco, in modo che un file di stile che aggiungi o modifichi mid-session diventi disponibile per la sessione in esecuzione. Si risolve con un [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) che elenca i nomi di stile disponibili dopo il ricaricamento. Richiede Agent SDK v0.3.261 o successivo |716| `reloadOutputStyles()` | Re-legge gli [stili di output](/docs/it/output-styles) dal disco, in modo che un file di stile che aggiungi o modifichi mid-session diventi disponibile per la sessione in esecuzione. Si risolve con un [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) che elenca i nomi di stile disponibili dopo il ricaricamento. Richiede Agent SDK v0.3.261 o successivo |

717| `accountInfo()` | Restituisce le informazioni dell'account |717| `accountInfo()` | Restituisce le informazioni dell'account |

718| `reconnectMcpServer(serverName)` | Ricollega un server MCP per nome. Se il nome corrisponde anche a una voce in un file di impostazioni come `.mcp.json` o `~/.claude.json`, Claude Code ricollega il server che hai configurato tramite [`mcpServers`](#options) o `setMcpServers()`, non la voce del file di impostazioni. Quell'ordine di risoluzione richiede Claude Code v2.1.257 o successivo |718| `reconnectMcpServer(serverName)` | Ricollega un server MCP per nome. Se il nome corrisponde anche a una voce in un file di impostazioni come `.mcp.json` o `~/.claude.json`, Claude Code ricollega il server che hai configurato tramite [`mcpServers`](#options) o `setMcpServers()`, non la voce del file di impostazioni. Quell'ordine di risoluzione richiede Claude Code v2.1.257 o successivo |

719| `toggleMcpServer(serverName, enabled)` | Abilita o disabilita un server MCP per nome, con la stessa risoluzione del nome di `reconnectMcpServer()`. La disabilitazione disconnette il server |719| `toggleMcpServer(serverName, enabled)` | Abilita o disabilita un server MCP per nome, con la stessa risoluzione del nome di `reconnectMcpServer()`. La disabilitazione di un server stdio, SSE o HTTP lo disconnette e rimuove i suoi strumenti; per un server che hai aggiunto mid-session con `setMcpServers()`, la rimozione dello strumento richiede Claude Code v2.1.285 o successivo |

720| `setMcpServers(servers)` | Sostituisci dinamicamente l'insieme dei server MCP per questa sessione. Si risolve con un [`McpSetServersResult`](#mcpsetserversresult) che nomina quali server sono stati aggiunti e rimossi, e eventuali errori |720| `setMcpServers(servers)` | Sostituisci dinamicamente l'insieme dei server MCP per questa sessione. Si risolve con un [`McpSetServersResult`](#mcpsetserversresult) che nomina quali server sono stati aggiunti e rimossi, e eventuali errori |

721| `readMcpResource(serverName, uri)` | *Alpha.* Legge una risorsa MCP Apps `ui://` da un server MCP connesso in modo che la tua applicazione possa rendere il widget di uno strumento. Si risolve con un [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Richiede TypeScript Agent SDK v0.3.280 o successivo |721| `readMcpResource(serverName, uri)` | *Alpha.* Legge una risorsa MCP Apps `ui://` da un server MCP connesso in modo che la tua applicazione possa rendere il widget di uno strumento. Si risolve con un [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Richiede TypeScript Agent SDK v0.3.280 o successivo |

722| `streamInput(stream)` | Trasmetti i messaggi di input alla query per conversazioni multi-turno |722| `streamInput(stream)` | Trasmetti i messaggi di input alla query per conversazioni multi-turno |


909 909 

910Tipo di ritorno di [`getContextUsage()`](#query-object). Con il predefinito `detail`, questo è lo stesso payload che Claude Code rende per il comando `/context` in una sessione interattiva, quindi insieme ai conteggi di token trasporta campi di visualizzazione come `color` e `gridRows` che Claude Code usa per disegnare la griglia di utilizzo `/context`.910Tipo di ritorno di [`getContextUsage()`](#query-object). Con il predefinito `detail`, questo è lo stesso payload che Claude Code rende per il comando `/context` in una sessione interattiva, quindi insieme ai conteggi di token trasporta campi di visualizzazione come `color` e `gridRows` che Claude Code usa per disegnare la griglia di utilizzo `/context`.

911 911 

912L'argomento `detail` facoltativo del metodo sceglie come Claude Code conta ogni categoria. Con il predefinito, `'full'`, Claude Code conta ogni categoria con richieste API di conteggio dei token. Passa `{ detail: 'summary' }` per ottenere una risposta dall'utilizzo dell'ultima risposta e dalle stime locali. Nessuna richiesta di conteggio dei token esce, e i numeri per categoria sono approssimativi. L'argomento `detail` richiede Agent SDK v0.3.257 o successivo.912L'argomento `detail` facoltativo del metodo sceglie come Claude Code conta ogni categoria. Il `detail` argomento richiede Agent SDK v0.3.257 o successivo.

913 

914* **`'full'`**: il predefinito. Claude Code conta ogni categoria con richieste API di [conteggio dei token](https://platform.claude.com/docs/en/build-with-claude/token-counting). Queste richieste non appaiono nel flusso di messaggi, quindi il tracciamento dei costi che legge il flusso non le vedrà. Sull'API Anthropic, il conteggio dei token non è fatturato.

915* **`'summary'`**: passa `{ detail: 'summary' }` per ottenere una risposta dall'utilizzo dell'ultima risposta e dalle stime locali. Nessuna richiesta di conteggio dei token esce, e i numeri per categoria sono approssimativi.

913 916 

914Quando invii `/context` come prompt invece di chiamare il metodo, Claude Code allega un payload [`SDKContextUsage`](#sdkcontextusage) al campo `context_usage` del messaggio dell'assistente che consegna il risultato. Quel campo richiede Agent SDK v0.3.232 o successivo.917Quando invii `/context` come prompt invece di chiamare il metodo, Claude Code allega un payload [`SDKContextUsage`](#sdkcontextusage) al campo `context_usage` del messaggio dell'assistente che consegna il risultato. Quel campo richiede Agent SDK v0.3.232 o successivo.

915 918 


1015* `memoryFiles` elenca ogni file di memoria caricato con il suo costo.1018* `memoryFiles` elenca ogni file di memoria caricato con il suo costo.

1016* `skills.skillFrontmatter` attribuisce i token della voce di skill a ogni skill inclusa. I conteggi per skill misurano ogni voce di skill come Claude Code effettivamente la invia, che può essere più breve del frontmatter completo della skill. Confronta `skills.totalSkills` con `skills.includedSkills` per vedere se ogni skill scoperta ha fatto parte dell'elenco.1019* `skills.skillFrontmatter` attribuisce i token della voce di skill a ogni skill inclusa. I conteggi per skill misurano ogni voce di skill come Claude Code effettivamente la invia, che può essere più breve del frontmatter completo della skill. Confronta `skills.totalSkills` con `skills.includedSkills` per vedere se ogni skill scoperta ha fatto parte dell'elenco.

1017 1020 

1018`totalTokens` è l'utilizzo di contesto corrente della sessione, e `maxTokens` è la finestra rispetto alla quale l'utilizzo viene misurato. Quella finestra è la finestra di contesto del modello, o la finestra di auto-compattazione inferiore quando una si applica. `rawMaxTokens` trasporta lo stesso valore di `maxTokens`, e `percentage` è `totalTokens` come percentuale arrotondata di quella finestra.1021`totalTokens` è l'utilizzo di contesto corrente della sessione, e `maxTokens` è la finestra rispetto alla quale l'utilizzo viene misurato. Quella finestra è la finestra di contesto del modello, o la finestra di auto-compattazione inferiore quando una si applica. `rawMaxTokens` trasporta lo stesso valore di `maxTokens`, e `percentage` è `totalTokens` come percentuale arrotondata di quella finestra. `apiUsage` contiene l'utilizzo dall'ultima risposta API, non un totale in esecuzione per la sessione.

1019 1022 

1020Claude Code lascia i diagnostici facoltativi `deferredBuiltinTools`, `systemTools`, e `systemPromptSections` non impostati, quindi aspettati che siano assenti anche se il tipo li dichiara.1023Claude Code lascia i diagnostici facoltativi `deferredBuiltinTools`, `systemTools`, e `systemPromptSections` non impostati, quindi aspettati che siano assenti anche se il tipo li dichiara.

1021 1024 


1275 | "bypassPermissions" // Bypass permission checks; explicit ask rules still prompt1278 | "bypassPermissions" // Bypass permission checks; explicit ask rules still prompt

1276 | "plan" // Planning mode - explore without editing1279 | "plan" // Planning mode - explore without editing

1277 | "dontAsk" // Don't prompt for permissions, deny if not pre-approved1280 | "dontAsk" // Don't prompt for permissions, deny if not pre-approved

1278 | "auto"; // Model classifier approves or denies permission prompts1281 | "auto"; // A model classifier reviews actions such as shell commands and network requests

1279```1282```

1280 1283 

1281<h3 id="canusetool">1284<h3 id="canusetool">


1821```typescript theme={null}1824```typescript theme={null}

1822type SDKStartupFailureReason =1825type SDKStartupFailureReason =

1823 | "org_pin_api_key_conflict"1826 | "org_pin_api_key_conflict"

1827 | "provider_not_allowed"

1824 | "org_verify_failed"1828 | "org_verify_failed"

1825 | "org_pin_mismatch"1829 | "org_pin_mismatch"

1826 | "managed_settings_invalid"1830 | "managed_settings_invalid"


1843| Valore | Cosa ha interrotto la sessione |1847| Valore | Cosa ha interrotto la sessione |

1844| :- | :- |1848| :- | :- |

1845| `org_pin_api_key_conflict` | Le impostazioni gestite [richiedono un accesso gateway cloud o first-party](/docs/it/authentication#restrict-login-to-your-organization), e una chiave API Anthropic, token di autenticazione, o `apiKeyHelper` è configurato invece |1849| `org_pin_api_key_conflict` | Le impostazioni gestite [richiedono un accesso gateway cloud o first-party](/docs/it/authentication#restrict-login-to-your-organization), e una chiave API Anthropic, token di autenticazione, o `apiKeyHelper` è configurato invece |

1850| `provider_not_allowed` | Le impostazioni gestite [elencano i provider API che questa macchina può utilizzare](/docs/it/settings-reference#allowedproviders), e la sessione è configurata per un provider che non è elencato, o per un endpoint che le impostazioni non fissano. Richiede Claude Code v2.1.285 o successivo |

1846| `org_verify_failed` | L'organizzazione dell'accesso non ha potuto essere verificata rispetto al pin, ad esempio a causa di un errore di rete o un token revocato |1851| `org_verify_failed` | L'organizzazione dell'accesso non ha potuto essere verificata rispetto al pin, ad esempio a causa di un errore di rete o un token revocato |

1847| `org_pin_mismatch` | L'accesso appartiene a un'organizzazione che il pin non consente |1852| `org_pin_mismatch` | L'accesso appartiene a un'organizzazione che il pin non consente |

1848| `managed_settings_invalid` | Le impostazioni della politica gestita non hanno potuto essere lette, il pin non nomina alcuna organizzazione, o [le restrizioni di modello gestite](/docs/it/errors#managed-settings-block-the-default-model) non lasciano alcun modello consentito per l'opzione Predefinito |1853| `managed_settings_invalid` | Le impostazioni della politica gestita non hanno potuto essere lette, il pin non nomina alcuna organizzazione, o [le restrizioni di modello gestite](/docs/it/errors#managed-settings-block-the-default-model) non lasciano alcun modello consentito per l'opzione Predefinito |


2087 `SDKContextUsage`2092 `SDKContextUsage`

2088</h3>2093</h3>

2089 2094 

2090Forma strutturata del rapporto `/context`, portata come `context_usage` sul [`SDKAssistantMessage`](#sdkassistantmessage) che consegna un risultato `/context`. Agent SDK v0.3.232 e successivo esportano il tipo. A differenza di [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), contiene solo i dati necessari per rendere la suddivisione dell'utilizzo, senza campi di visualizzazione come `color` e `gridRows`.2095Forma strutturata del rapporto `/context`, portata come `context_usage` sul [`SDKAssistantMessage`](#sdkassistantmessage) che consegna un risultato `/context`. Agent SDK v0.3.232 e successivo esportano il tipo. A differenza di [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), contiene solo i dati necessari per rendere la suddivisione dell'utilizzo, senza campi di visualizzazione come `color` e `gridRows`. Claude Code calcola il rapporto con richieste API di conteggio dei token che non appaiono nel flusso dei messaggi; vedi [come queste richieste vengono gestite](#sdkcontrolgetcontextusageresponse).

2091 2096 

2092```typescript theme={null}2097```typescript theme={null}

2093type SDKContextUsage = {2098type SDKContextUsage = {


3206};3211};

3207```3212```

3208 3213 

3209Esegue comandi Bash con timeout opzionale ed esecuzione in background. La directory di lavoro persiste tra i comandi, inclusi i comandi eseguiti in turni successivi di una sessione multi-turno; lo stato della shell come le variabili di ambiente esportate non persiste. Per i limiti su quali cambiamenti di directory si mantengono, vedi [Cosa persiste tra i comandi](/docs/it/tools-reference#what-persists-between-commands). Per ciò che imposta il limite di foreground, vedi [Timeout e limiti di output](/docs/it/tools-reference#timeout-and-output-limits). Per il limite di tempo in background, vedi [Comandi in background](/docs/it/tools-reference#background-commands).3214Esegue comandi Bash con timeout opzionale ed esecuzione in background. La directory di lavoro persiste tra i comandi, inclusi i comandi eseguiti in turni successivi di una sessione multi-turno; lo stato della shell come le variabili di ambiente esportate non persiste. Per i limiti su quali cambiamenti di directory si mantengono, vedi [Cosa persiste tra i comandi](/docs/it/tools-reference#what-persists-between-commands). Per ciò che imposta il limite di foreground, vedi [Timeout e limiti di output](/docs/it/tools-reference#timeout-and-output-limits). Per il limite di tempo in background, vedi [Limite di tempo per i comandi in background](/docs/it/tools-reference#time-limit-for-background-commands).

3210 3215 

3211<h3 id="monitor">3216<h3 id="monitor">

3212 Monitor3217 Monitor


4110 4115 

4111`timedOutAfterMs` è il timeout in millisecondi, impostato quando il comando ha raggiunto il suo timeout e si è spostato allo sfondo piuttosto che iniziare lì esplicitamente. `backgroundCwdHint` viene impostato quando il comando in background conteneva un builtin di cambio directory come `cd`, `pushd`, `popd` o `chdir`, e nota che la directory di lavoro della sessione non è cambiata. Entrambi i campi richiedono Claude Code v2.1.210 o successivo.4116`timedOutAfterMs` è il timeout in millisecondi, impostato quando il comando ha raggiunto il suo timeout e si è spostato allo sfondo piuttosto che iniziare lì esplicitamente. `backgroundCwdHint` viene impostato quando il comando in background conteneva un builtin di cambio directory come `cd`, `pushd`, `popd` o `chdir`, e nota che la directory di lavoro della sessione non è cambiata. Entrambi i campi richiedono Claude Code v2.1.210 o successivo.

4112 4117 

4113Quando un subagente in esecuzione in primo piano possiede un comando in background, il comando [termina quando quel subagente completa la sua esecuzione](/docs/it/tools-reference#background-commands). Claude Code imposta `backgroundEndsWithFinalResponse` su `true` su tali comandi, e omette il campo quando il comando sopravvive al turno, come i comandi avviati dalla conversazione principale o dai subagenti di background. Il campo richiede Claude Code v2.1.227 o successivo.4118Quando un subagente in esecuzione in primo piano possiede un comando in background, il comando [termina quando quel subagente completa la sua esecuzione](/docs/it/tools-reference#when-a-background-command-stops). Claude Code imposta `backgroundEndsWithFinalResponse` su `true` su tali comandi, e omette il campo quando il comando sopravvive al turno, come i comandi avviati dalla conversazione principale o dai subagenti di background. Il campo richiede Claude Code v2.1.227 o successivo.

4114 4119 

4115Claude Code imposta `gitOperation.commit.branch` al ramo denominato nella riga di riepilogo del commit di git, e lo omette per un commit effettuato su un HEAD staccato. Il campo richiede Agent SDK v0.3.227 o successivo. Claude Code segnala un comando `gh pr reopen` come l'azione PR `reopened`, che richiede Agent SDK v0.3.234 o successivo.4120Claude Code imposta `gitOperation.commit.branch` al ramo denominato nella riga di riepilogo del commit di git, e lo omette per un commit effettuato su un HEAD staccato. Il campo richiede Agent SDK v0.3.227 o successivo. Claude Code segnala un comando `gh pr reopen` come l'azione PR `reopened`, che richiede Agent SDK v0.3.234 o successivo.

4116 4121 

agent-view.md +2 −20

Details

8 8 

9Agent view, aperto con `claude agents`, è una sola schermata per tutte le tue sessioni in background: cosa sta girando, cosa ha bisogno del tuo input e cosa è fatto. Invia nuove sessioni, osserva il loro stato a colpo d'occhio invece di scorrere i transcript, e intervieni solo quando uno ne ha bisogno. Ogni sessione in background è una conversazione completa di Claude Code che continua a girare senza un terminale collegato, quindi puoi aprirla, rispondere e andare via quando vuoi.9Agent view, aperto con `claude agents`, è una sola schermata per tutte le tue sessioni in background: cosa sta girando, cosa ha bisogno del tuo input e cosa è fatto. Invia nuove sessioni, osserva il loro stato a colpo d'occhio invece di scorrere i transcript, e intervieni solo quando uno ne ha bisogno. Ogni sessione in background è una conversazione completa di Claude Code che continua a girare senza un terminale collegato, quindi puoi aprirla, rispondere e andare via quando vuoi.

10 10 

11<img src="https://mintcdn.com/claude-code/1B48Qz2Z9hac4SLG/images/agent-view-light.png?fit=max&auto=format&n=1B48Qz2Z9hac4SLG&q=85&s=7a186c96ed47d6700d084d77e786be65" className="dark:hidden" alt="Agent view in a terminal: the header shows Claude Code v2.1.140, the model, the working directory, and a summary count. Sessions are grouped under Needs input, Working, and Completed, with a dispatch input at the bottom and a footer of keyboard hints." width="1772" height="780" data-path="images/agent-view-light.png" />11<img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/agent-view-light.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=d6905012bee31f3e6b3920b09c05dd02" className="dark:hidden" alt="Agent view in a terminal. A line at the top counts the sessions awaiting input, working, and completed. Four sessions are grouped under Needs input, Working, and Completed. Each row shows the session's name, its latest status or question, and a time. At the bottom are an input for describing a new task and a row of keyboard hints." width="1872" height="680" data-path="images/agent-view-light.png" />

12 12 

13<img src="https://mintcdn.com/claude-code/1B48Qz2Z9hac4SLG/images/agent-view-dark.png?fit=max&auto=format&n=1B48Qz2Z9hac4SLG&q=85&s=a5bed7434bae368faea3a8f023b52aa2" className="hidden dark:block" alt="Agent view in a terminal: the header shows Claude Code v2.1.140, the model, the working directory, and a summary count. Sessions are grouped under Needs input, Working, and Completed, with a dispatch input at the bottom and a footer of keyboard hints." width="1772" height="780" data-path="images/agent-view-dark.png" />13<img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/agent-view-dark.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=fc3c195bfc57e313ced1f1beb36cee93" className="hidden dark:block" alt="Agent view in a terminal. A line at the top counts the sessions awaiting input, working, and completed. Four sessions are grouped under Needs input, Working, and Completed. Each row shows the session's name, its latest status or question, and a time. At the bottom are an input for describing a new task and a row of keyboard hints." width="1872" height="680" data-path="images/agent-view-dark.png" />

14 14 

15Usa agent view quando hai diversi compiti indipendenti su cui Claude può lavorare senza che tu guardi ogni passo. Invia una correzione di bug, una revisione di pull request e un'investigazione di test instabile come tre righe, continua a lavorare in un'altra finestra e controlla quando una riga mostra che ha bisogno di te o ha un risultato.15Usa agent view quando hai diversi compiti indipendenti su cui Claude può lavorare senza che tu guardi ogni passo. Invia una correzione di bug, una revisione di pull request e un'investigazione di test instabile come tre righe, continua a lavorare in un'altra finestra e controlla quando una riga mostra che ha bisogno di te o ha un risultato.

16 16 


966 966 

967Claude Code non riavvia mai una riga che esegue un [comando shell](#run-a-shell-command), da `Enter` o da `claude attach`, perché ciò eseguirebbe di nuovo il comando; il messaggio della riga e `claude attach` entrambi dicono che il comando non viene eseguito di nuovo.967Claude Code non riavvia mai una riga che esegue un [comando shell](#run-a-shell-command), da `Enter` o da `claude attach`, perché ciò eseguirebbe di nuovo il comando; il messaggio della riga e `claude attach` entrambi dicono che il comando non viene eseguito di nuovo.

968 968 

969<h4 id="terminal-host-died">

970 L'host del terminale è morto

971</h4>

972 

973Su Linux e WSL, il supervisor controlla ogni processo host ogni pochi secondi, indipendentemente dal fatto che apri la sessione o meno, e contrassegna la sessione come non riuscita quando il processo è uscito ma la sua connessione al supervisor non si è mai chiusa.

974 

975* In agent view, la riga mostra `terminal host process died — press Enter to restart`. Premi `Enter` su di essa e Claude Code riavvia la sessione su un processo host fresco.

976* Dalla shell, `claude attach <id>` riavvia una sessione già contrassegnata come non riuscita. Altrimenti segnala la causa e esce, dicendoti di eseguire `claude attach <id>` di nuovo.

977 

978<h4 id="session-isn’t-responding">

979 La sessione non sta rispondendo

980</h4>

981 

982Quando il supervisor accetta un'apertura ma nessun output arriva per circa dieci secondi, Claude Code termina il tentativo e offre un riavvio. Una sessione che semplicemente si è bloccata, ad esempio durante il sonno della macchina, non raggiunge questa offerta: il supervisor la [riavvia all'apertura](#read-session-state) stesso.

983 

984* In agent view, il footer mostra `Press enter again to restart this session — it isn't responding (its conversation is saved and resumes).` Premi `Enter` sulla stessa riga di nuovo e Claude Code ferma il processo che non risponde e riavvia la sessione; non ferma nulla senza quel secondo press.

985* Dalla shell, `claude attach <id>` segnala la causa e esce, dicendoti di eseguire `claude stop <id>`, poi `claude attach <id>`.

986 

987<h3 id="a-session-fails-before-starting-with-a-possibly-low-memory-note">969<h3 id="a-session-fails-before-starting-with-a-possibly-low-memory-note">

988 Una sessione non riesce prima di iniziare con una nota `possibly low memory`970 Una sessione non riesce prima di iniziare con una nota `possibly low memory`

989</h3>971</h3>

Details

384 384 

385Gli alias dei modelli come `opus` non agiscono come pin, e nemmeno un ID del modello che Claude Code non riconosce, come un ARN del profilo di inferenza dell'applicazione.385Gli alias dei modelli come `opus` non agiscono come pin, e nemmeno un ID del modello che Claude Code non riconosce, come un ARN del profilo di inferenza dell'applicazione.

386 386 

387Quando questi controlli trovano un modello che il vostro account non può richiamare, Claude Code ricorda il rifiuto su questa macchina per un massimo di un giorno, e durante quel tempo l'avvio salta il modello ricordato senza chiedere di nuovo ad Amazon Bedrock. Claude Code controlla un rifiuto ricordato di un modello predefinito corrente di nuovo all'avvio una volta che sono passati dieci minuti dall'ultimo controllo, quindi un valore predefinito che l'amministratore riabilita ritorna. Per disattivare la memoria, impostate [`CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY=1`](/docs/it/env-vars).

388 

389<h3 id="when-a-model-is-disabled-mid-session">

390 Quando un modello viene disabilitato durante la sessione

391</h3>

392 

393Se il vostro account perde l'accesso al modello su cui è in esecuzione la sessione, ad esempio perché un amministratore lo disabilita nel vostro account Amazon Bedrock, Claude Code passa la sessione a un altro modello invece di far fallire ogni richiesta, e mostra `Switched to <fallback> because <model> is not available`. Prova gli stessi modelli del fallback all'avvio: versioni precedenti dello stesso livello prima e, per una sessione Opus senza alcuna versione Opus disponibile, il modello Sonnet predefinito.

394 

395Il passaggio si applica solo a un livello che non avete fissato, la stessa condizione del fallback all'avvio. Una sessione su una versione specifica che avete scelto, o su un [ARN del profilo di inferenza dell'applicazione](#map-each-model-version-to-an-inference-profile), mantiene il suo modello e, senza una catena di modelli di fallback, la richiesta fallisce invece. In [modalità auto](/docs/it/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry), Claude Code passa solo a un modello che la modalità auto supporta su Amazon Bedrock. Se nessuno di questi modelli è disponibile, la richiesta fallisce con [AWS authentication failed](/docs/it/errors#aws-authentication-failed) e un suggerimento per abilitare il modello.

396 

397Una [catena di modelli di fallback](/docs/it/model-config#fallback-model-chains) che configurate sostituisce il passaggio di livello: su questi rifiuti Claude Code passa al vostro fallback configurato invece. Per fare in modo che le richieste rifiutate falliscano piuttosto che passare, impostate [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](/docs/it/env-vars). Una catena di fallback che avete configurato continua comunque a passare su questi rifiuti; rimuovete anche la catena se volete che ogni richiesta rifiutata fallisca.

398 

387<h2 id="cross-region-inference-profile-prefixes">399<h2 id="cross-region-inference-profile-prefixes">

388 Prefissi del profilo di inferenza tra regioni400 Prefissi del profilo di inferenza tra regioni

389</h2>401</h2>

artifacts.md +1 −1

Details

398| [Variabile di ambiente](/docs/it/env-vars) | Imposta `CLAUDE_CODE_DISABLE_ARTIFACT=1` |398| [Variabile di ambiente](/docs/it/env-vars) | Imposta `CLAUDE_CODE_DISABLE_ARTIFACT=1` |

399| [Regola di autorizzazione](/docs/it/permissions) | Aggiungi `Artifact` a `permissions.deny` |399| [Regola di autorizzazione](/docs/it/permissions) | Aggiungi `Artifact` a `permissions.deny` |

400 400 

401Una volta che disattivi gli artifact in un file [`--settings`](/docs/it/cli-reference#cli-flags) o con `CLAUDE_CODE_DISABLE_ARTIFACT`, o il tuo amministratore li disattiva nelle [impostazioni gestite](/docs/it/server-managed-settings), nessun file di impostazioni li riattiva. Prima della v2.1.242, un file più in alto nella [stack di precedenza](/docs/it/settings#settings-precedence) potrebbe riattivare gli artifact anche quando un file con precedenza inferiore impostava `"enableArtifact": false`.401Una volta che disattivi gli artifact in un file [`--settings`](/docs/it/cli-reference#cli-flags) o con `CLAUDE_CODE_DISABLE_ARTIFACT`, o il tuo amministratore li disattiva nelle [impostazioni gestite](/docs/it/server-managed-settings), nessun file di impostazioni li riattiva.

402 402 

403Puoi anche impostare `"enableArtifact": false` nel `.claude/settings.json` o `.claude/settings.local.json` di un progetto per disattivare gli artifact per le sessioni in quel progetto. Un `"enableArtifact": true` in uno dei due file non li riattiva. L'onorare la chiave nelle impostazioni di progetto e locali richiede Claude Code v2.1.242 o successivo.403Puoi anche impostare `"enableArtifact": false` nel `.claude/settings.json` o `.claude/settings.local.json` di un progetto per disattivare gli artifact per le sessioni in quel progetto. Un `"enableArtifact": true` in uno dei due file non li riattiva. L'onorare la chiave nelle impostazioni di progetto e locali richiede Claude Code v2.1.242 o successivo.

404 404 

Details

194* **Sessioni del provider cloud come Amazon Bedrock**: bloccate solo mentre una credenziale `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o `apiKeyHelper`, o una chiave API salvata da un precedente accesso Claude Console, è ancora presente sulla macchina. Rimuovetela e la sessione inizia. Queste sessioni si autenticano rispetto al vostro provider cloud, le cui policy di accesso le governano194* **Sessioni del provider cloud come Amazon Bedrock**: bloccate solo mentre una credenziale `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o `apiKeyHelper`, o una chiave API salvata da un precedente accesso Claude Console, è ancora presente sulla macchina. Rimuovetela e la sessione inizia. Queste sessioni si autenticano rispetto al vostro provider cloud, le cui policy di accesso le governano

195* **[Profilo Anthropic o credenziali di federazione](#anthropic-profiles-and-federation-credentials)**: non bloccate a meno che una credenziale `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o `apiKeyHelper`, o una chiave API salvata da un precedente accesso Claude Console, sia anche presente sulla macchina. Le chiavi non controllano a quale organizzazione appartiene il profilo195* **[Profilo Anthropic o credenziali di federazione](#anthropic-profiles-and-federation-credentials)**: non bloccate a meno che una credenziale `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o `apiKeyHelper`, o una chiave API salvata da un precedente accesso Claude Console, sia anche presente sulla macchina. Le chiavi non controllano a quale organizzazione appartiene il profilo

196 196 

197<h3 id="restrict-which-api-providers-a-machine-may-use">

198 Limitare quali provider API una macchina può utilizzare

199</h3>

200 

201[`allowedProviders`](/docs/it/settings-reference#allowedproviders) nelle [impostazioni gestite](/docs/it/managed-settings) elenca quali servizi una macchina gestita può raggiungere Claude attraverso, come l'API Anthropic, Amazon Bedrock, o un gateway LLM. Completa `forceLoginMethod` e `forceLoginOrgUUID`, che governano quale account una sessione utilizza quando parla con Anthropic. Richiede Claude Code v2.1.285 o successivo.

202 

203```json managed-settings.json theme={null}

204{

205 "forceLoginMethod": "claudeai",

206 "forceLoginOrgUUID": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"],

207 "allowedProviders": ["anthropic", "bedrock"]

208}

209```

210 

211Con questo file, uno sviluppatore acceduto alla vostra organizzazione claude.ai o configurato per Amazon Bedrock inizia normalmente. Una sessione configurata per qualsiasi altro provider è rifiutata all'avvio, e una sessione in esecuzione che passa a uno è rifiutata alla sua prossima richiesta. [Managed settings don't allow this API provider](/docs/it/errors#managed-settings-dont-allow-this-api-provider) mostra ogni messaggio.

212 

213* **Consentire un gateway LLM o proxy**: elencate `"customEndpoint"` e impostate l'URL del gateway nel blocco `env` gestito della stessa fonte. Il [riferimento delle impostazioni](/docs/it/settings-reference#allowedproviders) elenca ogni valore e dice quali variabili di endpoint necessitano di un pin `env` gestito.

214* **Distribuire su macchine gestite**: mettete l'elenco nella fonte gestita che porta il resto della vostra policy. La nota [Scope](/docs/it/settings-reference#allowedproviders) della voce dice come un elenco gestito dal server si combina con esso.

215* **Solo impostazioni gestite dal server**: un elenco che impostate solo nelle [impostazioni gestite dal server](/docs/it/server-managed-settings) raggiunge solo le sessioni che recuperano le impostazioni della vostra organizzazione, quindi trattarlo come una comodità per le macchine che non potete raggiungere con la gestione dei dispositivi, non come applicazione. La [disponibilità della piattaforma](/docs/it/server-managed-settings#platform-availability) elenca quali sessioni le recuperano.

216 

197<h2 id="credential-management">217<h2 id="credential-management">

198 Gestione delle credenziali218 Gestione delle credenziali

199</h2>219</h2>

Details

283 Modificare le regole da `/permissions`283 Modificare le regole da `/permissions`

284</h2>284</h2>

285 285 

286Per visualizzare e modificare le regole del classificatore senza aprire un file di impostazioni, esegui [`/permissions`](/docs/it/permissions#manage-permissions) e seleziona la scheda **Auto mode**. La scheda richiede Claude Code v2.1.246 o successivo e appare solo quando [la modalità auto è disponibile](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) per la tua sessione.286Per visualizzare e modificare le regole del classificatore e le voci `environment` senza aprire un file di impostazioni, esegui [`/permissions`](/docs/it/permissions#manage-permissions) e seleziona la scheda **Auto mode**. La scheda richiede Claude Code v2.1.246 o successivo e appare solo quando [la modalità auto è disponibile](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) per la tua sessione.

287 287 

288La scheda elenca le voci `allow`, `soft_deny`, `hard_deny` e `environment` da ognuno degli [ambiti che il classificatore legge](#where-the-classifier-reads-configuration) e mostra se le regole incorporate sono in vigore per ogni sezione. Claude Code mostra le voci dalle [impostazioni gestite](/docs/it/server-managed-settings) o dal flag `--settings` come di sola lettura e salva ogni modifica che fai sulla scheda in `~/.claude/settings.json`. Dalla scheda puoi:288Claude Code mostra le voci dalle [impostazioni gestite](/docs/it/server-managed-settings) o dal flag `--settings` come di sola lettura e salva ogni modifica che fai sulla scheda in `~/.claude/settings.json`.

289 

290* Aggiungere, modificare o eliminare regole nelle sezioni `allow`, `soft_deny` e `hard_deny`. Quando aggiungi la prima regola a una sezione, Claude Code inserisce anche `"$defaults"` in modo che le [regole incorporate](#override-the-block-and-allow-rules) rimangono in vigore.

291* Attivare o disattivare le regole incorporate per `allow`, `soft_deny` o `hard_deny`. Claude Code registra la scelta aggiungendo o rimuovendo `"$defaults"` nel tuo elenco per quella sezione, quindi una sezione ha bisogno di almeno una regola propria prima di poter disattivare le sue regole incorporate.

292* Modificare le voci `environment` come un documento nel tuo editor. Se non hai ancora configurato voci `environment`, Claude Code prima chiede se sostituire l'ambiente incorporato, quindi apre l'editor sul testo incorporato completo. Quando salvi, Claude Code sostituisce il tuo array `autoMode.environment` con il documento. Includi la riga `"$defaults"` per [mantenere le voci incorporate](#define-trusted-infrastructure).

293 289 

294<h2 id="route-all-shell-commands-through-the-classifier">290<h2 id="route-all-shell-commands-through-the-classifier">

295 Instradare tutti i comandi shell attraverso il classificatore291 Instradare tutti i comandi shell attraverso il classificatore

Details

1561| `paste-cache/` | Contenuti di incollamenti di grandi dimensioni |1561| `paste-cache/` | Contenuti di incollamenti di grandi dimensioni |

1562| `image-cache/<session>/` | Immagini allegate salvate da Claude Code v2.1.274 e versioni precedenti. Le versioni successive salvano le immagini incollate e allegate al di fuori di `~/.claude`, in una directory `images/` per ogni sessione nella directory temporanea che [`CLAUDE_CODE_TMPDIR`](/docs/it/env-vars) controlla. La pulizia rimuove le directory di altre sessioni rimaste qui, indipendentemente dalla loro età. |1562| `image-cache/<session>/` | Immagini allegate salvate da Claude Code v2.1.274 e versioni precedenti. Le versioni successive salvano le immagini incollate e allegate al di fuori di `~/.claude`, in una directory `images/` per ogni sessione nella directory temporanea che [`CLAUDE_CODE_TMPDIR`](/docs/it/env-vars) controlla. La pulizia rimuove le directory di altre sessioni rimaste qui, indipendentemente dalla loro età. |

1563| `uploads/<session>/` | File che allega dal web o dall'app mobile, e foto che allega dall'app mobile, quando messaggia una sessione [Remote Control](/docs/it/remote-control). Un allegato a una [sessione cloud](/docs/it/claude-code-on-the-web) viene salvato nell'ambiente cloud della sessione stessa, non sulla tua macchina. |1563| `uploads/<session>/` | File che allega dal web o dall'app mobile, e foto che allega dall'app mobile, quando messaggia una sessione [Remote Control](/docs/it/remote-control). Un allegato a una [sessione cloud](/docs/it/claude-code-on-the-web) viene salvato nell'ambiente cloud della sessione stessa, non sulla tua macchina. |

1564| `dev-mods/<session>/` | [Mods che Claude ha scritto](/docs/it/plugins/mods/create#ask-claude-for-a-mod) durante la sessione |

1564| `session-env/` | Metadati di ambiente per sessione |1565| `session-env/` | Metadati di ambiente per sessione |

1565| `tasks/` | Elenchi di attività scritti dagli strumenti di attività, una directory per elenco |1566| `tasks/` | Elenchi di attività scritti dagli strumenti di attività, una directory per elenco |

1566| `shell-snapshots/` | Alias, funzioni e opzioni shell acquisiti all'avvio e applicati dallo [strumento Bash](/docs/it/tools-reference#bash-tool-behavior) a ogni comando. Rimosso all'uscita pulita. La pulizia cancella qualsiasi cosa rimasta dopo un arresto anomalo. |1567| `shell-snapshots/` | Alias, funzioni e opzioni shell acquisiti all'avvio e applicati dallo [strumento Bash](/docs/it/tools-reference#bash-tool-behavior) a ogni comando. Rimosso all'uscita pulita. La pulizia cancella qualsiasi cosa rimasta dopo un arresto anomalo. |

Details

84| `--dangerously-skip-permissions` | Salta i prompt di permesso. Equivalente a `--permission-mode bypassPermissions`. Vedi [modalità di permesso](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) per quello che questo fa e non salta. Per le sessioni avviate con `--bg`, la modalità [persiste quando il supervisore riavvia la sessione](/docs/it/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |84| `--dangerously-skip-permissions` | Salta i prompt di permesso. Equivalente a `--permission-mode bypassPermissions`. Vedi [modalità di permesso](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) per quello che questo fa e non salta. Per le sessioni avviate con `--bg`, la modalità [persiste quando il supervisore riavvia la sessione](/docs/it/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |

85| `--debug` | Abilita la modalità debug con filtro di categoria opzionale, come `--debug='mcp,startup'` o `--debug='!1p'`. Il filtro si lega solo nella forma `=`; un filtro separato da spazi abilita la modalità debug senza filtrare | `claude --debug='mcp,startup'` |85| `--debug` | Abilita la modalità debug con filtro di categoria opzionale, come `--debug='mcp,startup'` o `--debug='!1p'`. Il filtro si lega solo nella forma `=`; un filtro separato da spazi abilita la modalità debug senza filtrare | `claude --debug='mcp,startup'` |

86| `--debug-file <path>` | Scrivi i log di debug in un percorso di file specifico. Abilita implicitamente la modalità debug. Ha la precedenza su `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |86| `--debug-file <path>` | Scrivi i log di debug in un percorso di file specifico. Abilita implicitamente la modalità debug. Ha la precedenza su `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |

87| `--desktop` | Apri l'[app Claude Desktop](/docs/it/desktop) nella directory corrente e esci senza avviare una sessione nel terminale. Aggiungi `--continue`, o `--resume` con un ID di sessione, per [aprire quella sessione in Desktop](/docs/it/desktop#coming-from-the-cli) invece. `--resume` qui accetta solo un ID di sessione, non un nome o un percorso di trascrizione. Non accetta prompt e nessun altro flag tranne `--verbose` e i flag `--debug`, poiché l'app avvia la sessione stessa. Disponibile su macOS e Windows x64 quando sei connesso con un abbonamento Claude. Richiede Claude Code v2.1.285 o successivo | `claude --desktop` |

87| `--disable-slash-commands` | Disabilita tutte le skills e i comandi per questa sessione | `claude --disable-slash-commands` |88| `--disable-slash-commands` | Disabilita tutte le skills e i comandi per questa sessione | `claude --disable-slash-commands` |

88| `--disallowedTools`, `--disallowed-tools` | Regole di negazione. Un nome di strumento nudo rimuove gli strumenti corrispondenti dal contesto di Claude: `"Edit"` rimuove Edit, `"*"` rimuove ogni strumento, e `"mcp__*"` rimuove ogni strumento MCP. Una regola con ambito come `Bash(rm *)` lascia lo strumento disponibile e nega solo le chiamate che corrispondono [come scritto](/docs/it/permissions#bash-rule-limits). Una regola che nomina [`EndConversation`](/docs/it/tools-reference#endconversation-tool-behavior) non può rimuoverla mentre rimane qualsiasi altro strumento | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |89| `--disallowedTools`, `--disallowed-tools` | Regole di negazione. Un nome di strumento nudo rimuove gli strumenti corrispondenti dal contesto di Claude: `"Edit"` rimuove Edit, `"*"` rimuove ogni strumento, e `"mcp__*"` rimuove ogni strumento MCP. Una regola con ambito come `Bash(rm *)` lascia lo strumento disponibile e nega solo le chiamate che corrispondono [come scritto](/docs/it/permissions#bash-rule-limits). Una regola che nomina [`EndConversation`](/docs/it/tools-reference#endconversation-tool-behavior) non può rimuoverla mentre rimane qualsiasi altro strumento | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

89| `--effort` | Imposta il [livello di sforzo](/docs/it/model-config#adjust-effort-level) per la sessione corrente. Opzioni: `low`, `medium`, `high`, `xhigh`, `max`, o `ultracode`. I livelli disponibili dipendono dal modello. `ultracode` richiede uno sforzo `xhigh` con [ultracode](/docs/it/workflows#let-claude-decide-with-ultracode) attivato, e richiede Claude Code v2.1.203 o successivo. Sostituisce le impostazioni [`modelSettings`](/docs/it/settings-reference#modelsettings) e [`effortLevel`](/docs/it/settings-reference#effortlevel) per questa sessione e non persiste | `claude --effort high` |90| `--effort` | Imposta il [livello di sforzo](/docs/it/model-config#adjust-effort-level) per la sessione corrente. Opzioni: `low`, `medium`, `high`, `xhigh`, `max`, o `ultracode`. I livelli disponibili dipendono dal modello. `ultracode` richiede uno sforzo `xhigh` con [ultracode](/docs/it/workflows#let-claude-decide-with-ultracode) attivato, e richiede Claude Code v2.1.203 o successivo. Sostituisce le impostazioni [`modelSettings`](/docs/it/settings-reference#modelsettings) e [`effortLevel`](/docs/it/settings-reference#effortlevel) per questa sessione e non persiste | `claude --effort high` |


111| `--no-chrome` | Disabilita l'[integrazione del browser Chrome](/docs/it/chrome) per questa sessione | `claude --no-chrome` |112| `--no-chrome` | Disabilita l'[integrazione del browser Chrome](/docs/it/chrome) per questa sessione | `claude --no-chrome` |

112| `--no-session-persistence` | Disabilita la persistenza della sessione in modo che le sessioni non vengono salvate su disco e non possono essere riprese. Solo modalità print. La variabile di ambiente [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/it/env-vars) fa lo stesso in qualsiasi modalità | `claude -p --no-session-persistence "query"` |113| `--no-session-persistence` | Disabilita la persistenza della sessione in modo che le sessioni non vengono salvate su disco e non possono essere riprese. Solo modalità print. La variabile di ambiente [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/it/env-vars) fa lo stesso in qualsiasi modalità | `claude -p --no-session-persistence "query"` |

113| `--output-format` | Specifica il formato di output per la modalità print (opzioni: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |114| `--output-format` | Specifica il formato di output per la modalità print (opzioni: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |

114| `--permission-mode` | Inizia in una [modalità di permesso](/docs/it/permission-modes) specificata. Accetta `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, o `manual` come alias per `default`. L'alias `manual` seleziona la modalità di permesso che l'interfaccia utente etichetta Manual e richiede Claude Code v2.1.200 o successivo; `claude --help` la elenca al posto di `default`, e entrambi i valori funzionano. Sostituisce `defaultMode` dai file di impostazioni. Senza questo flag o `--dangerously-skip-permissions`, una nuova sessione inizia nella modalità di permesso descritta in [quale modalità di permesso inizia una sessione](/docs/it/permission-modes#which-mode-a-session-starts-in). Per `-p`, è `default` quando nulla è configurato | `claude --permission-mode plan` |115| `--permission-mode` | Inizia in una [modalità di permesso](/docs/it/permission-modes) specificata. Accetta `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, o `manual` come alias per `default`. L'alias `manual` seleziona la modalità di permesso che l'interfaccia utente etichetta Manual e richiede Claude Code v2.1.200 o successivo; `claude --help` la elenca al posto di `default`, e entrambi i valori funzionano. Sostituisce `defaultMode` dai file di impostazioni. Senza questo flag o `--dangerously-skip-permissions`, una nuova sessione inizia nella modalità di permesso descritta in [quale modalità di permesso inizia una sessione](/docs/it/permission-modes#which-mode-a-session-starts-in), che copre anche cosa inizia una sessione `-p` | `claude --permission-mode plan` |

115| `--permission-prompt-tool` | Specifica uno strumento MCP per gestire i prompt di permesso in modalità non interattiva. Claude Code attende che il server MCP di quello strumento si connetta prima di eseguire il primo turno, fino al timeout di avvio [`MCP_TIMEOUT`](/docs/it/env-vars), 30 secondi per impostazione predefinita. <br /><br />Lo strumento di prompt non può approvare uno strumento MCP contrassegnato come [richiedente interazione dell'utente](/docs/it/mcp#require-approval-for-a-specific-tool): Claude Code converte un risultato `allow` per uno in una negazione. Questa restrizione richiede Claude Code v2.1.199 o successivo | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |116| `--permission-prompt-tool` | Specifica uno strumento MCP per gestire i prompt di permesso in modalità non interattiva. Claude Code attende che il server MCP di quello strumento si connetta prima di eseguire il primo turno, fino al timeout di avvio [`MCP_TIMEOUT`](/docs/it/env-vars), 30 secondi per impostazione predefinita. <br /><br />Lo strumento di prompt non può approvare uno strumento MCP contrassegnato come [richiedente interazione dell'utente](/docs/it/mcp#require-approval-for-a-specific-tool): Claude Code converte un risultato `allow` per uno in una negazione. Questa restrizione richiede Claude Code v2.1.199 o successivo | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

116| `--permission-prompts` | Imposta chi risponde ai prompt di permesso in modalità print. Con l'impostazione predefinita `host`, Claude Code li invia all'host dell'Agent SDK o allo strumento `--permission-prompt-tool`. Passa `none` quando nessuno può rispondere, e Claude Code li nega invece. Vedi [Disattiva i prompt di permesso nelle esecuzioni incustodite](/docs/it/headless#turn-off-permission-prompts-in-unattended-runs). Richiede Claude Code v2.1.259 o successivo | `claude -p --permission-prompts none "query"` |117| `--permission-prompts` | Imposta chi risponde ai prompt di permesso in modalità print. Con l'impostazione predefinita `host`, Claude Code li invia all'host dell'Agent SDK o allo strumento `--permission-prompt-tool`. Passa `none` quando nessuno può rispondere, e Claude Code li nega invece. Vedi [Disattiva i prompt di permesso nelle esecuzioni incustodite](/docs/it/headless#turn-off-permission-prompts-in-unattended-runs). Richiede Claude Code v2.1.259 o successivo | `claude -p --permission-prompts none "query"` |

117| `--plugin-dir` | Carica un plugin da una directory o un archivio `.zip`, o diversi da una [cartella di plugin](/docs/it/plugins/create#load-a-directory-or-archive-for-one-session), solo per questa sessione. Ogni flag accetta un percorso. Ripeti il flag per più percorsi: `--plugin-dir A --plugin-dir B.zip`. Passare una cartella di plugin richiede Claude Code v2.1.265 o successivo | `claude --plugin-dir ./my-plugin` |118| `--plugin-dir` | Carica un plugin da una directory o un archivio `.zip`, o diversi da una [cartella di plugin](/docs/it/plugins/create#load-a-directory-or-archive-for-one-session), solo per questa sessione. Ogni flag accetta un percorso. Ripeti il flag per più percorsi: `--plugin-dir A --plugin-dir B.zip`. Passare una cartella di plugin richiede Claude Code v2.1.265 o successivo | `claude --plugin-dir ./my-plugin` |

118| `--plugin-url` | Recupera un archivio plugin `.zip` da un URL solo per questa sessione. Ripeti il flag per più plugin, o passa URL separati da spazi in un singolo valore tra virgolette | `claude --plugin-url https://example.com/plugin.zip` |119| `--plugin-url` | Recupera un archivio plugin `.zip` da un URL solo per questa sessione. Ripeti il flag per più plugin, o passa URL separati da spazi in un singolo valore tra virgolette | `claude --plugin-url https://example.com/plugin.zip` |

119| `--print`, `-p` | Stampa la risposta senza modalità interattiva (vedi la [documentazione dell'Agent SDK](/docs/it/agent-sdk/overview) per i dettagli di utilizzo programmatico) | `claude -p "query"` |120| `--print`, `-p` | Stampa la risposta senza modalità interattiva (vedi la [documentazione dell'Agent SDK](/docs/it/agent-sdk/overview) per i dettagli di utilizzo programmatico). Per `--resume` su una sessione in background ancora in esecuzione, vedi [Riprendi una sessione](/docs/it/sessions#resume-a-running-background-session) | `claude -p "query"` |

120| `--prompt-suggestions` | Emetti un messaggio `prompt_suggestion` con un prompt utente successivo previsto dopo ogni turno che ne genera uno; le conversazioni molto brevi possono non produrne. Richiede `--print`, `--output-format stream-json`, e `--verbose`. Vedi [Suggerimenti di prompt](/docs/it/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |121| `--prompt-suggestions` | Emetti un messaggio `prompt_suggestion` con un prompt utente successivo previsto dopo ogni turno che ne genera uno; le conversazioni molto brevi possono non produrne. Richiede `--print`, `--output-format stream-json`, e `--verbose`. Vedi [Suggerimenti di prompt](/docs/it/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |

121| `--ref <branch>` | Con `--environment`, basa il checkout della nuova sessione su un ref denominato invece di `HEAD` locale | `claude -p "Run the smoke test" --environment ccpool_abc123 --ref main` |122| `--ref <branch>` | Con `--environment`, basa il checkout della nuova sessione su un ref denominato invece di `HEAD` locale | `claude -p "Run the smoke test" --environment ccpool_abc123 --ref main` |

122| `--remote` | Alias deprecato per `--cloud`, inclusa la forma di sessione esistente | `claude --remote "Fix the login bug"` |123| `--remote` | Alias deprecato per `--cloud`, inclusa la forma di sessione esistente | `claude --remote "Fix the login bug"` |


124| `--remote-control-session-name-prefix <prefix>` | Prefisso per i nomi di sessione [Remote Control](/docs/it/remote-control) generati automaticamente quando nessun nome esplicito è impostato. Per impostazione predefinita il nome host della tua macchina, producendo nomi come `myhost-graceful-unicorn`. Imposta `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` per lo stesso effetto | `claude remote-control --remote-control-session-name-prefix dev-box` |125| `--remote-control-session-name-prefix <prefix>` | Prefisso per i nomi di sessione [Remote Control](/docs/it/remote-control) generati automaticamente quando nessun nome esplicito è impostato. Per impostazione predefinita il nome host della tua macchina, producendo nomi come `myhost-graceful-unicorn`. Imposta `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` per lo stesso effetto | `claude remote-control --remote-control-session-name-prefix dev-box` |

125| `--replay-user-messages` | Ri-emetti i messaggi dell'utente da stdin su stdout per il riconoscimento. Richiede `--input-format stream-json` e `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --verbose --replay-user-messages` |126| `--replay-user-messages` | Ri-emetti i messaggi dell'utente da stdin su stdout per il riconoscimento. Richiede `--input-format stream-json` e `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --verbose --replay-user-messages` |

126| `--restricted` | Inizia in modalità ristretta. Usalo quando un harness di valutazione guida `claude` su una macchina condivisa e Claude Code non deve eseguire comandi o leggere le impostazioni utente e progetto di quella macchina. Claude Code rimuove gli strumenti integrati che eseguono comandi o codice, e WebFetch, a meno che non li nomini individualmente in `--tools`, non attraverso il preset `default`. Confina anche gli strumenti file integrati alle [directory di lavoro](/docs/it/permissions#working-directories), carica solo [impostazioni gestite](/docs/it/managed-settings) e `--settings`, rifiuta [`bypassPermissions`](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode), e [rifiuta di creare sessioni cloud](/docs/it/errors#cloud-sessions-cannot-be-created-from-a-restricted-session). Richiede Claude Code v2.1.248 o successivo | `claude --restricted -p "query"` |127| `--restricted` | Inizia in modalità ristretta. Usalo quando un harness di valutazione guida `claude` su una macchina condivisa e Claude Code non deve eseguire comandi o leggere le impostazioni utente e progetto di quella macchina. Claude Code rimuove gli strumenti integrati che eseguono comandi o codice, e WebFetch, a meno che non li nomini individualmente in `--tools`, non attraverso il preset `default`. Confina anche gli strumenti file integrati alle [directory di lavoro](/docs/it/permissions#working-directories), carica solo [impostazioni gestite](/docs/it/managed-settings) e `--settings`, rifiuta [`bypassPermissions`](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode), e [rifiuta di creare sessioni cloud](/docs/it/errors#cloud-sessions-cannot-be-created-from-a-restricted-session). Richiede Claude Code v2.1.248 o successivo | `claude --restricted -p "query"` |

127| `--resume`, `-r` | Riprendi una sessione specifica per ID o nome, o mostra un selettore interattivo per scegliere una sessione. Al posto di un ID, puoi passare il percorso assoluto al file di [trascrizione](/docs/it/sessions#where-transcripts-are-stored) `.jsonl` di una sessione. Il selettore e la ricerca per nome includono le sessioni che hanno aggiunto questa directory con `/add-dir`. Quando passi un ID di sessione, Claude Code cerca nella directory del progetto corrente e nei suoi git worktrees, quindi in ogni altro progetto su questa macchina. Prima di v2.1.223, la ricerca per ID copriva solo la directory del progetto corrente e i suoi git worktrees. Le [sessioni in background](/docs/it/agent-view) appaiono nel selettore contrassegnate con `bg` | `claude --resume auth-refactor` |128| `--resume`, `-r` | Riprendi una sessione specifica per ID o nome, o mostra un selettore interattivo per scegliere una sessione. Al posto di un ID, puoi passare il percorso assoluto al file di [trascrizione](/docs/it/sessions#where-transcripts-are-stored) `.jsonl` di una sessione. Il selettore e la ricerca per nome includono le sessioni che hanno aggiunto questa directory con `/add-dir`. Quando passi un ID di sessione, Claude Code cerca nella directory del progetto corrente e nei suoi git worktrees, quindi in ogni altro progetto su questa macchina. Prima di v2.1.223, la ricerca per ID copriva solo la directory del progetto corrente e i suoi git worktrees. Le [sessioni in background](/docs/it/agent-view) appaiono nel selettore contrassegnate con `bg`. Riprendere una che è ancora in esecuzione [apre quella sessione](/docs/it/sessions#resume-a-running-background-session) in questo terminale tramite `claude attach`, e un prompt che passi sulla riga di comando va a essa come suo turno successivo. Prima di v2.1.285, Claude Code rifiutava e stampava il comando `claude attach` da eseguire invece | `claude --resume auth-refactor` |

128| `--safe-mode` | Inizia con tutte le personalizzazioni disabilitate per risolvere i problemi di una configurazione interrotta: CLAUDE.md, skills, plugins, hooks, server MCP, comandi e agenti personalizzati, stili di output, flussi di lavoro, temi personalizzati, scorciatoie da tastiera personalizzate, comandi della barra di stato e suggerimento di file, server LSP, e memoria automatica non si caricano. L'autenticazione, la selezione del modello, gli strumenti integrati e i permessi funzionano normalmente, il che differisce da [`--bare`](/docs/it/headless#start-faster-with-bare-mode). La politica delle impostazioni gestite si applica comunque, inclusi gli hook configurati dalla politica, la barra di stato e i comandi di suggerimento di file; i plugin gestiti, le skills gestite, CLAUDE.md gestito, e i server MCP configurati dalla politica non lo fanno. Utile per verificare se una personalizzazione è quello che attiva il [fallback automatico del modello](/docs/it/model-config#automatic-model-fallback). Imposta [`CLAUDE_CODE_SAFE_MODE`](/docs/it/env-vars) | `claude --safe-mode` |129| `--safe-mode` | Inizia con tutte le personalizzazioni disabilitate per risolvere i problemi di una configurazione interrotta: CLAUDE.md, skills, plugins, hooks, server MCP, comandi e agenti personalizzati, stili di output, flussi di lavoro, temi personalizzati, scorciatoie da tastiera personalizzate, comandi della barra di stato e suggerimento di file, server LSP, e memoria automatica non si caricano. L'autenticazione, la selezione del modello, gli strumenti integrati e i permessi funzionano normalmente, il che differisce da [`--bare`](/docs/it/headless#start-faster-with-bare-mode). La politica delle impostazioni gestite si applica comunque, inclusi gli hook configurati dalla politica, la barra di stato e i comandi di suggerimento di file; i plugin gestiti, le skills gestite, CLAUDE.md gestito, e i server MCP configurati dalla politica non lo fanno. Utile per verificare se una personalizzazione è quello che attiva il [fallback automatico del modello](/docs/it/model-config#automatic-model-fallback). Imposta [`CLAUDE_CODE_SAFE_MODE`](/docs/it/env-vars) | `claude --safe-mode` |

129| `--session-id` | Usa un ID di sessione specifico per la conversazione (deve essere un UUID valido) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |130| `--session-id` | Usa un ID di sessione specifico per la conversazione (deve essere un UUID valido) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

130| `--setting-sources` | Elenco separato da virgole delle fonti di impostazione da caricare (`user`, `project`, `local`). Vedi [agent view](/docs/it/agent-view#what-carries-over-when-you-background) e [agent teams](/docs/it/agent-teams#context-and-communication) per le sessioni che avvii da questa che ereditano l'elenco | `claude --setting-sources user,project` |131| `--setting-sources` | Elenco separato da virgole delle fonti di impostazione da caricare (`user`, `project`, `local`). Vedi [agent view](/docs/it/agent-view#what-carries-over-when-you-background) e [agent teams](/docs/it/agent-teams#context-and-communication) per le sessioni che avvii da questa che ereditano l'elenco | `claude --setting-sources user,project` |

Details

439 439 

440* **Comandi che Claude esegue**: un ambiente cloud non imposta il suo proprio timeout di comando, quindi si applicano i default dello strumento Bash. Claude attende 2 minuti per un comando per impostazione predefinita e può chiedere fino a 10 minuti.440* **Comandi che Claude esegue**: un ambiente cloud non imposta il suo proprio timeout di comando, quindi si applicano i default dello strumento Bash. Claude attende 2 minuti per un comando per impostazione predefinita e può chiedere fino a 10 minuti.

441 441 

442 Quando un comando raggiunge il suo [timeout](/docs/it/tools-reference#timeout-and-output-limits), Claude Code [lo sposta in background](/docs/it/tools-reference#background-commands) invece di fermarlo, a meno che il comando non inizi con `sleep`. Un comando spostato in questo modo può continuare a essere eseguito per altri 30 minuti prima che Claude Code lo interrompa al suo [limite di tempo in background](/docs/it/tools-reference#background-commands). Impostare `BASH_DEFAULT_TIMEOUT_MS` sopra `1800000` millisecondi allunga sia quel limite che il default per il foreground.442 Quando un comando raggiunge il suo [timeout](/docs/it/tools-reference#timeout-and-output-limits), Claude Code [lo sposta in background](/docs/it/tools-reference#foreground-commands-that-move-to-the-background) invece di fermarlo, a meno che il comando non inizi con `sleep`. Un comando spostato in questo modo può continuare a essere eseguito per altri 30 minuti prima che Claude Code lo interrompa al suo [limite di tempo in background](/docs/it/tools-reference#time-limit-for-background-commands). Impostare `BASH_DEFAULT_TIMEOUT_MS` sopra `1800000` millisecondi allunga sia quel limite che il default per il foreground.

443* **Hook SessionStart**: Claude Code annulla un hook `command` dopo 600 secondi a meno che non impostiate [`timeout`](/docs/it/hooks#common-fields), in secondi, sulla voce dell'hook. Claude Code non applica il timeout su un hook che eseguite con [`async: true`](/docs/it/hooks#run-hooks-in-the-background).443* **Hook SessionStart**: Claude Code annulla un hook `command` dopo 600 secondi a meno che non impostiate [`timeout`](/docs/it/hooks#common-fields), in secondi, sulla voce dell'hook. Claude Code non applica il timeout su un hook che eseguite con [`async: true`](/docs/it/hooks#run-hooks-in-the-background).

444* **Script di configurazione**: uno script che richiede più di circa cinque minuti non viene memorizzato nella cache. [Requisiti dello script](#script-requirements) copre come rimanere sotto questo limite.444* **Script di configurazione**: uno script che richiede più di circa cinque minuti non viene memorizzato nella cache. [Requisiti dello script](#script-requirements) copre come rimanere sotto questo limite.

445* **Sessioni inattive**: dopo alcuni minuti senza attività, la VM di una sessione si mette in pausa con i suoi file salvati, e una VM in pausa può essere successivamente recuperata. [Impostare variabili di ambiente](#set-environment-variables) descrive cosa una sessione raccoglie in ogni caso, e [Environment expired](/docs/it/claude-code-on-the-web#environment-expired) copre come riaprire una sessione la cui VM è stata recuperata.445* **Sessioni inattive**: dopo alcuni minuti senza attività, la VM di una sessione si mette in pausa con i suoi file salvati, e una VM in pausa può essere successivamente recuperata. [Impostare variabili di ambiente](#set-environment-variables) descrive cosa una sessione raccoglie in ogni caso, e [Environment expired](/docs/it/claude-code-on-the-web#environment-expired) copre come riaprire una sessione la cui VM è stata recuperata.

commands.md +1 −1

Details

132| `/remote-control` | Rendere questa sessione disponibile per [Remote Control](/docs/it/remote-control) da claude.ai. L'esecuzione mentre siete disconnessi stampa che Remote Control richiede un abbonamento claude.ai e vi dice come accedere; prima della v2.1.206 segnalava `Unknown command: /remote-control`. Alias: `/rc` |132| `/remote-control` | Rendere questa sessione disponibile per [Remote Control](/docs/it/remote-control) da claude.ai. L'esecuzione mentre siete disconnessi stampa che Remote Control richiede un abbonamento claude.ai e vi dice come accedere; prima della v2.1.206 segnalava `Unknown command: /remote-control`. Alias: `/rc` |

133| `/remote-env` | Scegliere l'[ambiente cloud](/docs/it/cloud-environments#select-an-environment-from-the-cli) predefinito per le sessioni cloud che avviate dalla CLI |133| `/remote-env` | Scegliere l'[ambiente cloud](/docs/it/cloud-environments#select-an-environment-from-the-cli) predefinito per le sessioni cloud che avviate dalla CLI |

134| `/rename [name]` | Rinominare la sessione corrente e mostrare il nome sulla barra dei prompt. Senza un nome, genera automaticamente uno dalla cronologia della conversazione. Disponibile anche in modalità non interattiva (`-p`); richiede Claude Code v2.1.205 o successivo. Da ogni superficie di rinomina, inclusi claude.ai e l'app desktop, Claude Code sostituisce i caratteri di controllo e invisibili nel nuovo nome con spazi e limita il nome a 200 caratteri. Se il nome è vuoto una volta rimossi i caratteri invisibili, Claude Code lo rifiuta e mostra `That name is empty once invisible characters are removed. Usage: /rename <name>`. La sostituzione dei caratteri e il limite di lunghezza richiedono Claude Code v2.1.221 o successivo. Se un'altra sessione live su questa macchina utilizza già un nome che passate, Claude Code applica [una variante di esso](/docs/it/sessions#name-your-sessions) invece |134| `/rename [name]` | Rinominare la sessione corrente e mostrare il nome sulla barra dei prompt. Senza un nome, genera automaticamente uno dalla cronologia della conversazione. Disponibile anche in modalità non interattiva (`-p`); richiede Claude Code v2.1.205 o successivo. Da ogni superficie di rinomina, inclusi claude.ai e l'app desktop, Claude Code sostituisce i caratteri di controllo e invisibili nel nuovo nome con spazi e limita il nome a 200 caratteri. Se il nome è vuoto una volta rimossi i caratteri invisibili, Claude Code lo rifiuta e mostra `That name is empty once invisible characters are removed. Usage: /rename <name>`. La sostituzione dei caratteri e il limite di lunghezza richiedono Claude Code v2.1.221 o successivo. Se un'altra sessione live su questa macchina utilizza già un nome che passate, Claude Code applica [una variante di esso](/docs/it/sessions#name-your-sessions) invece |

135| `/resume [session]` | Riprendere una conversazione per ID o nome, o aprire il selettore di sessione. Le [sessioni background](/docs/it/agent-view) appaiono nel selettore contrassegnate con `bg`; una che è ancora in esecuzione non può essere ripresa qui, quindi collegatevi da `claude agents` o fermatela lì per primo. Alias: `/continue` |135| `/resume [session]` | Riprendere una conversazione per ID o nome, o aprire il selettore di sessione. Le [sessioni background](/docs/it/agent-view) appaiono nel selettore contrassegnate con `bg`. Riprendere una che è ancora in esecuzione, dal selettore o per ID o nome, [apre quella sessione](/docs/it/sessions#resume-a-running-background-session): la vostra conversazione corrente si sposta in background e questo terminale si collega a quella in esecuzione. Premete `←` su un prompt vuoto per tornare ad agent view, che elenca anche la conversazione che avete lasciato. Prima della v2.1.285, Claude Code rifiutava e vi diceva di aprire la sessione con `claude attach` o fermarla prima. Alias: `/continue` |

136| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | Alias di [`/code-review`](/docs/it/code-review#review-a-diff-locally): rivede il diff corrente, o un numero PR, ramo o percorso che passate, come `/review 1234`, e accetta gli stessi livelli di sforzo e flag. Senza un livello dato, la revisione riusa l'ultimo livello `low` attraverso `max` che avete digitato; consultate [Rivedere un diff localmente](/docs/it/code-review#review-a-diff-locally) per le regole esatte. Per una revisione cloud profonda, usate [`/code-review ultra`](/docs/it/ultrareview). Prima della v2.1.223, `/review` era un comando separato che eseguiva una revisione di una singola passata, di sola lettura di una richiesta di pull GitHub per numero, elencando le PR aperte da cui scegliere quando eseguito senza argomento; da v2.1.186 attraverso v2.1.201, eseguiva lo stesso motore multi-agente di `/code-review medium` |136| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | Alias di [`/code-review`](/docs/it/code-review#review-a-diff-locally): rivede il diff corrente, o un numero PR, ramo o percorso che passate, come `/review 1234`, e accetta gli stessi livelli di sforzo e flag. Senza un livello dato, la revisione riusa l'ultimo livello `low` attraverso `max` che avete digitato; consultate [Rivedere un diff localmente](/docs/it/code-review#review-a-diff-locally) per le regole esatte. Per una revisione cloud profonda, usate [`/code-review ultra`](/docs/it/ultrareview). Prima della v2.1.223, `/review` era un comando separato che eseguiva una revisione di una singola passata, di sola lettura di una richiesta di pull GitHub per numero, elencando le PR aperte da cui scegliere quando eseguito senza argomento; da v2.1.186 attraverso v2.1.201, eseguiva lo stesso motore multi-agente di `/code-review medium` |

137| `/rewind` | Riavvolgere la conversazione e/o il codice a un punto precedente, o riassumere da un messaggio selezionato. Consultate [checkpointing](/docs/it/checkpointing). Alias: `/checkpoint`, `/undo` |137| `/rewind` | Riavvolgere la conversazione e/o il codice a un punto precedente, o riassumere da un messaggio selezionato. Consultate [checkpointing](/docs/it/checkpointing). Alias: `/checkpoint`, `/undo` |

138| `/run` | **[Skill](/docs/it/skills#bundled-skills).** Lanciare e guidare l'app del vostro progetto per vedere un cambiamento funzionante, non solo passare i test. Consultate [Eseguire e verificare la vostra app](/docs/it/skills#run-and-verify-your-app) |138| `/run` | **[Skill](/docs/it/skills#bundled-skills).** Lanciare e guidare l'app del vostro progetto per vedere un cambiamento funzionante, non solo passare i test. Consultate [Eseguire e verificare la vostra app](/docs/it/skills#run-and-verify-your-app) |

Details

1634 1634 

1635Se hai bisogno di una finestra più grande piuttosto che di una conversazione più piccola, i modelli Fable, Sonnet 5 e versioni successive, Opus 4.6 e versioni successive, e Sonnet 4.6 supportano una finestra di contesto di 1 milione di token. Vedi [Extended context](/docs/it/model-config#extended-context) per la disponibilità per piano e come selezionare una variante di modello `[1m]`. La compattazione funziona allo stesso modo al limite più grande.1635Se hai bisogno di una finestra più grande piuttosto che di una conversazione più piccola, i modelli Fable, Sonnet 5 e versioni successive, Opus 4.6 e versioni successive, e Sonnet 4.6 supportano una finestra di contesto di 1 milione di token. Vedi [Extended context](/docs/it/model-config#extended-context) per la disponibilità per piano e come selezionare una variante di modello `[1m]`. La compattazione funziona allo stesso modo al limite più grande.

1636 1636 

1637Sonnet 5.5 e Sonnet 5 funzionano con la finestra di contesto 1M e non hanno alcuna variante `[1m]` da selezionare. Vedi [Sonnet 5.5 and Sonnet 5 context window](/docs/it/model-config#sonnet-5-5-and-sonnet-5-context-window) per le loro soglie di auto-compattazione e l'eccezione del gateway LLM.1637Sonnet 5.5 e Sonnet 5 funzionano con la finestra di contesto 1M e non hanno alcuna variante `[1m]` da selezionare. Vedi [Sonnet 5.5 and Sonnet 5 context window](/docs/it/model-config#sonnet-5-5-and-sonnet-5-context-window) per le loro soglie di auto-compattazione, e [the context window behind a gateway](/docs/it/model-config#context-window-behind-a-gateway) per come Claude Code dimensiona la finestra quando imposti `ANTHROPIC_BASE_URL` su un [LLM gateway](/docs/it/llm-gateway).

1638 1638 

1639Il punto in cui viene eseguita la compattazione automatica dipende dal tuo modello e dalla configurazione. Vedi [Default auto-compact thresholds](/docs/it/model-config#default-auto-compact-thresholds) per i confini per modello, e [Correct the window for a gateway or custom model ID](/docs/it/model-config#correct-the-window-for-a-gateway-or-custom-model-id) se Claude Code assume la finestra sbagliata per il tuo ID modello, come un alias [LLM gateway](/docs/it/llm-gateway).1639Il punto in cui viene eseguita la compattazione automatica dipende dal tuo modello e dalla configurazione. Vedi [Default auto-compact thresholds](/docs/it/model-config#default-auto-compact-thresholds) per i confini per modello, e [Correct the window for a gateway or custom model ID](/docs/it/model-config#correct-the-window-for-a-gateway-or-custom-model-id) se Claude Code assume la finestra sbagliata per il tuo ID modello, come un alias [LLM gateway](/docs/it/llm-gateway).

1640 1640 

costs.md +1 −1

Details

51 51 

52I mancati accessi, i rebuild previsti e le parti calde o fredde della riga significano quanto segue:52I mancati accessi, i rebuild previsti e le parti calde o fredde della riga significano quanto segue:

53 53 

54* **Misses**: richieste che hanno rielaborato contenuti che la cache già conteneva, con l'ora dell'ultimo mancato accesso e quanti token quelle richieste hanno scritto di nuovo nella cache. Claude Code conta una richiesta come mancato accesso quando la richiesta ha rielaborato più del 5% e almeno 2.000 token di ciò che avrebbe potuto leggere dalla cache. [Le azioni che invalidano la cache](/docs/it/prompt-caching#actions-that-invalidate-the-cache) elencano le cause usuali. Quando Claude Code riesce a identificare una probabile causa per l'ultimo mancato accesso, la riga la nomina anche, ad esempio `likely cause: tool definitions changed`. Il testo della probabile causa richiede Claude Code v2.1.260 o versione successiva.54* **Misses**: richieste che hanno rielaborato contenuti che la cache già conteneva, con l'ora dell'ultimo mancato accesso e quanti token quelle richieste hanno scritto di nuovo nella cache. [Le azioni che invalidano la cache](/docs/it/prompt-caching#actions-that-invalidate-the-cache) elencano le cause usuali. Quando Claude Code riesce a identificare una probabile causa per l'ultimo mancato accesso, la riga la nomina anche, ad esempio `likely cause: tool definitions changed`. Il testo della probabile causa richiede Claude Code v2.1.260 o versione successiva.

55* **Expected rebuilds**: quando Claude Code ha appena riscritto la conversazione, per [compattazione](/docs/it/prompt-caching#compacting-the-conversation) o per cancellazione dei vecchi risultati degli strumenti dal contesto, conta lo stesso tipo di mancato accesso come rebuild previsto. Questa parte appare solo dopo che si è verificato almeno un rebuild previsto.55* **Expected rebuilds**: quando Claude Code ha appena riscritto la conversazione, per [compattazione](/docs/it/prompt-caching#compacting-the-conversation) o per cancellazione dei vecchi risultati degli strumenti dal contesto, conta lo stesso tipo di mancato accesso come rebuild previsto. Questa parte appare solo dopo che si è verificato almeno un rebuild previsto.

56* **Warm or cold**: se il prefisso memorizzato nella cache è ancora entro la sua [durata della cache](/docs/it/prompt-caching#cache-lifetime), con il TTL in vigore. Quando la cache è fredda, la riga mostra quanto tempo la sessione è rimasta inattiva. Quando nessuna risposta ha segnalato token della cache, la riga termina con `no prompt caching reported by the API` invece.56* **Warm or cold**: se il prefisso memorizzato nella cache è ancora entro la sua [durata della cache](/docs/it/prompt-caching#cache-lifetime), con il TTL in vigore. Quando la cache è fredda, la riga mostra quanto tempo la sessione è rimasta inattiva. Quando nessuna risposta ha segnalato token della cache, la riga termina con `no prompt caching reported by the API` invece.

57 57 

desktop.md +8 −0

Details

967 967 

968Per spostare una sessione CLI in Desktop, esegui `/desktop` nel terminale. Claude salva la tua sessione e l'apre nell'app desktop, quindi esce dalla CLI. Questo comando è disponibile su macOS e Windows x64 quando sei connesso con un abbonamento Claude. Non è disponibile con autenticazione tramite chiave API o su Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry.968Per spostare una sessione CLI in Desktop, esegui `/desktop` nel terminale. Claude salva la tua sessione e l'apre nell'app desktop, quindi esce dalla CLI. Questo comando è disponibile su macOS e Windows x64 quando sei connesso con un abbonamento Claude. Non è disponibile con autenticazione tramite chiave API o su Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry.

969 969 

970Dalla tua shell, [`claude --desktop`](/docs/it/cli-reference#cli-flags) apre Desktop direttamente senza avviare una sessione di terminale. Richiede Claude Code v2.1.285 o successivo e ha gli stessi requisiti di piattaforma e accesso di `/desktop`. Senza altri argomenti, apre Desktop nella directory corrente. Per aprire una sessione CLI esistente in Desktop, aggiungi `--continue` per la conversazione più recente in questa directory, o `--resume` con l'ID della sessione che `/status` mostra:

971 

972```bash theme={null}

973claude --desktop --resume <session-id>

974```

975 

976Claude Code stampa `Opening session <session-id> in Claude Desktop`, la sessione si apre nell'app e il comando esce. Un nome di sessione non funziona al posto dell'ID. Claude Code non sposta una sessione che è aperta in un altro terminale o ancora in esecuzione in background. Se Claude Desktop non è installato, il comando stampa un link di download e esce.

977 

970Puoi anche riprendere una sessione CLI da Desktop con `/resume`. Il comando è disponibile nelle sessioni locali, non in SSH, WSL o sessioni cloud.978Puoi anche riprendere una sessione CLI da Desktop con `/resume`. Il comando è disponibile nelle sessioni locali, non in SSH, WSL o sessioni cloud.

971 979 

972Per continuare una sessione di terminale in Desktop:980Per continuare una sessione di terminale in Desktop:

desktop-linux.md +12 −0

Details

163 163 

164Se `claude-desktop` esce con questo messaggio, l'avete lanciato come root. Accedete come utente regolare e lanciatelo da lì.164Se `claude-desktop` esce con questo messaggio, l'avete lanciato come root. Accedete come utente regolare e lanciatelo da lì.

165 165 

166<h3 id="your-sign-in-won’t-be-saved-on-this-device">

167 La vostra registrazione non verrà salvata su questo dispositivo

168</h3>

169 

170Claude Desktop salva la vostra registrazione nel portachiavi del vostro desktop, come GNOME Keyring o KDE Wallet. Se non riesce a raggiungere un portachiavi sbloccato, la vostra registrazione non viene salvata e vi registrate di nuovo ogni volta che lanciate l'app. Scegliete il caso che corrisponde al vostro sistema:

171 

172* **Nessun portachiavi installato, su un desktop diverso da KDE Plasma**: se avete installato con `--no-install-recommends`, o su un'immagine minima che salta i pacchetti consigliati, apt non ha installato un portachiavi. Installate GNOME Keyring con `sudo apt install gnome-keyring`.

173* **KDE Plasma con GNOME Keyring anche installato**: KDE Wallet viene fornito con il desktop Plasma. I due portachiavi entrano in conflitto, e Claude Desktop può mostrare questo avviso anche se KDE Wallet funziona. Rimuovete quello extra con `sudo apt remove gnome-keyring`, quindi riavviate il vostro computer.

174* **Portachiavi installato ma bloccato**: sblocccatelo.

175 

176Dopo la correzione, riavviate l'app e registratevi. Quindi chiudete e lanciate di nuovo per confermare che l'app si apre con voi ancora registrati.

177 

166<h3 id="cowork-isn’t-available">178<h3 id="cowork-isn’t-available">

167 Cowork non è disponibile179 Cowork non è disponibile

168</h3>180</h3>

errors.md +616 −491

Details

96| `rejected the credential from its headersHelper` / `rejected the Authorization header in its config` | [Autenticazione](#mcp-server-needs-you-to-sign-in-again) |96| `rejected the credential from its headersHelper` / `rejected the Authorization header in its config` | [Autenticazione](#mcp-server-needs-you-to-sign-in-again) |

97| `MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate` | [Autenticazione](#mcp-server-needs-you-to-sign-in-again) |97| `MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate` | [Autenticazione](#mcp-server-needs-you-to-sign-in-again) |

98| `MCP server "<name>" requires re-authorization (token expired)` | [Autenticazione](#mcp-server-needs-you-to-sign-in-again) |98| `MCP server "<name>" requires re-authorization (token expired)` | [Autenticazione](#mcp-server-needs-you-to-sign-in-again) |

99| `This server's URL is missing or not a valid URL, so sign-in can't start` | [Autenticazione](#mcp-server-url-is-missing-or-not-a-valid-url) |

99| `Issuer mismatch in authorization response (RFC 9207)` | [Autenticazione](#issuer-mismatch-in-authorization-response) |100| `Issuer mismatch in authorization response (RFC 9207)` | [Autenticazione](#issuer-mismatch-in-authorization-response) |

101| `Refusing to send credentials to non-https token endpoint` / `<short-name> from the MCP SDK for <server-url>` | [Autenticazione](#refusing-to-send-credentials-to-non-https-token-endpoint) |

100| `Cloud gateway session expired — run /login to reconnect.` | [Autenticazione](#cloud-gateway-session-expired) |102| `Cloud gateway session expired — run /login to reconnect.` | [Autenticazione](#cloud-gateway-session-expired) |

101| `Cloud gateway <url> no longer accepts this session` | [Autenticazione](#cloud-gateway-session-expired) |103| `Cloud gateway <url> no longer accepts this session` | [Autenticazione](#cloud-gateway-session-expired) |

102| `Sign-in timed out while waiting for you to continue. Try again.` | [Autenticazione](#sign-in-timed-out-while-waiting-for-you-to-continue) |104| `Sign-in timed out while waiting for you to continue. Try again.` | [Autenticazione](#sign-in-timed-out-while-waiting-for-you-to-continue) |


159| `Claude Code ... is older than the minimum version required by your organization's policy` | [Errori di richiesta](#claude-code-does-not-support-this-model) |161| `Claude Code ... is older than the minimum version required by your organization's policy` | [Errori di richiesta](#claude-code-does-not-support-this-model) |

160| `Model ... is restricted by your organization's settings` | [Errori di richiesta](#model-is-restricted-by-your-organizations-settings) |162| `Model ... is restricted by your organization's settings` | [Errori di richiesta](#model-is-restricted-by-your-organizations-settings) |

161| `Model ... is not available. Your organization restricts model selection.` | [Errori di richiesta](#model-is-restricted-by-your-organizations-settings) |163| `Model ... is not available. Your organization restricts model selection.` | [Errori di richiesta](#model-is-restricted-by-your-organizations-settings) |

164| `Can't switch to the default model` | [Errori di richiesta](#cant-switch-to-the-default-model) |

162| `Model switch ... blocked by a PreModelSwitch hook` | [Errori di richiesta](#model-switch-was-blocked-by-a-premodelswitch-hook) |165| `Model switch ... blocked by a PreModelSwitch hook` | [Errori di richiesta](#model-switch-was-blocked-by-a-premodelswitch-hook) |

163| `couldn't save it as your default` / `couldn't confirm it was saved as your default` | [Errori di richiesta](#couldnt-save-it-as-your-default) |166| `couldn't save it as your default` / `couldn't confirm it was saved as your default` | [Errori di richiesta](#couldnt-save-it-as-your-default) |

164| `thinking.type.enabled is not supported for this model` | [Errori di richiesta](#thinking-type-enabled-is-not-supported-for-this-model) |167| `thinking.type.enabled is not supported for this model` | [Errori di richiesta](#thinking-type-enabled-is-not-supported-for-this-model) |


202| `Cannot add MCP server to scope: managed` | [Errori della riga di comando](#cannot-add-mcp-server-to-the-managed-scope) |205| `Cannot add MCP server to scope: managed` | [Errori della riga di comando](#cannot-add-mcp-server-to-the-managed-scope) |

203| `is Anthropic-hosted and doesn't support local OAuth` | [Errori della riga di comando](#anthropic-hosted-and-doesnt-support-local-oauth) |206| `is Anthropic-hosted and doesn't support local OAuth` | [Errori della riga di comando](#anthropic-hosted-and-doesnt-support-local-oauth) |

204| `Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes` | [Errori della riga di comando](#cant-read-mcp-json) |207| `Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes` | [Errori della riga di comando](#cant-read-mcp-json) |

208| `MCP server "<name>" was not saved to` / `was not removed from` | [Errori della riga di comando](#mcp-server-was-not-saved-or-removed) |

209| `MCP server "<name>" may not have been saved` / `may not have been removed` | [Errori della riga di comando](#mcp-server-may-not-have-been-saved-or-removed) |

205| `Server rejected the Authorization header minted by the configured headersHelper` | [Errori della riga di comando](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) |210| `Server rejected the Authorization header minted by the configured headersHelper` | [Errori della riga di comando](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) |

206| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [Errori della riga di comando](#mcp-permission-prompt-tool-not-found) |211| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [Errori della riga di comando](#mcp-permission-prompt-tool-not-found) |

207| `OAuth callback port <port> is already in use — another process may be holding it` | [Errori della riga di comando](#oauth-callback-port-is-already-in-use) |212| `OAuth callback port <port> is already in use — another process may be holding it` | [Errori della riga di comando](#oauth-callback-port-is-already-in-use) |


317| `Transcript writes are failing (...)` | [Avvisi di salvataggio della sessione](#transcript-writes-are-failing) |322| `Transcript writes are failing (...)` | [Avvisi di salvataggio della sessione](#transcript-writes-are-failing) |

318| `Transcript saving is off — CLAUDE_CODE_SKIP_PROMPT_HISTORY is set` | [Avvisi di salvataggio della sessione](#transcript-saving-is-off-skip-prompt-history) |323| `Transcript saving is off — CLAUDE_CODE_SKIP_PROMPT_HISTORY is set` | [Avvisi di salvataggio della sessione](#transcript-saving-is-off-skip-prompt-history) |

319| `Transcript saving is off — inherited CLAUDE_CODE_CHILD_SESSION marker` | [Avvisi di salvataggio della sessione](#transcript-saving-is-off-child-session-marker) |324| `Transcript saving is off — inherited CLAUDE_CODE_CHILD_SESSION marker` | [Avvisi di salvataggio della sessione](#transcript-saving-is-off-child-session-marker) |

320| `Claude Code's fullscreen renderer didn't finish starting last time on this machine` / `Claude Code's fullscreen renderer has repeatedly failed to start on this machine` | [Avvisi di configurazione](#fullscreen-failed-start-notice) |325| `Claude Code's fullscreen renderer didn't finish starting last time on this machine` / `Claude Code's fullscreen renderer has repeatedly failed to start on this machine` | [Fullscreen rendering](/docs/it/fullscreen#fullscreen-renderer-didnt-finish-starting) |

321| `Claude Code exited after an unrecoverable interface error (...)` | [Avvisi di configurazione](#exited-after-an-unrecoverable-interface-error) |326| `Claude Code exited after an unrecoverable interface error (...)` | [Avvisi di configurazione](#exited-after-an-unrecoverable-interface-error) |

322| `Agent descriptions are over the 15.0k-token limit` | [Avvisi di configurazione](#agent-descriptions-are-over-the-15000-token-limit) |327| `Agent descriptions are over the 15.0k-token limit` | [Avvisi di configurazione](#agent-descriptions-are-over-the-15000-token-limit) |

323| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [Avvisi di configurazione](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |328| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [Avvisi di configurazione](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |


326| `Remote managed settings failed to load (<cause>)` | [Avvisi di configurazione](#remote-managed-settings-failed-to-load) |331| `Remote managed settings failed to load (<cause>)` | [Avvisi di configurazione](#remote-managed-settings-failed-to-load) |

327| `Managed settings were not approved; exiting without applying them.` | [Avvisi di configurazione](#managed-settings-were-not-approved) |332| `Managed settings were not approved; exiting without applying them.` | [Avvisi di configurazione](#managed-settings-were-not-approved) |

328| `Claude Code can't start: your organization's managed settings block the default model` / `Claude Code can't start: your organization allows only the models listed in "availableModels"` | [Avvisi di configurazione](#managed-settings-block-the-default-model) |333| `Claude Code can't start: your organization's managed settings block the default model` / `Claude Code can't start: your organization allows only the models listed in "availableModels"` | [Avvisi di configurazione](#managed-settings-block-the-default-model) |

334| `Your organization's managed settings allow Claude Code to use: <providers>` | [Avvisi di configurazione](#managed-settings-dont-allow-this-api-provider) |

335| `Your organization's managed settings allow Claude Code to use no API provider at all` | [Avvisi di configurazione](#managed-settings-dont-allow-this-api-provider) |

329| `MCP server <name> is blocked by enterprise managed policy` | [Avvisi di configurazione](#mcp-server-is-blocked-by-enterprise-managed-policy) |336| `MCP server <name> is blocked by enterprise managed policy` | [Avvisi di configurazione](#mcp-server-is-blocked-by-enterprise-managed-policy) |

330| `Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.` | [Avvisi di configurazione](#managed-settings-document-could-not-be-parsed) |337| `Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.` | [Avvisi di configurazione](#managed-settings-document-could-not-be-parsed) |

331| `Managed settings drop-in directory could not be read` | [Avvisi di configurazione](#managed-settings-document-could-not-be-parsed) |338| `Managed settings drop-in directory could not be read` | [Avvisi di configurazione](#managed-settings-document-could-not-be-parsed) |

339| `Unable to read managed policy settings` | [Avvisi di configurazione](#unable-to-read-managed-policy-settings) |

332| `otelHeadersHelper failed; telemetry is not being exported. See /status: ...` | [Avvisi di configurazione](#otelheadershelper-failed) |340| `otelHeadersHelper failed; telemetry is not being exported. See /status: ...` | [Avvisi di configurazione](#otelheadershelper-failed) |

333| `"crossSessionInbound" must be one of "accept", "hold", "refuse"` | [Avvisi di configurazione](#crosssessioninbound-must-be-one-of-accept-hold-refuse) |341| `"crossSessionInbound" must be one of "accept", "hold", "refuse"` | [Avvisi di configurazione](#crosssessioninbound-must-be-one-of-accept-hold-refuse) |

334| `headersHelper not run — this workspace has no persisted trust` | [Avvisi di configurazione](#headershelper-not-run) |342| `headersHelper not run — this workspace has no persisted trust` | [Avvisi di configurazione](#headershelper-not-run) |


730 The prompt to confirm went unanswered738 The prompt to confirm went unanswered

731</h3>739</h3>

732 740 

733Se il tuo account richiede il [consenso per i crediti di utilizzo Fable](/docs/it/model-config#fable-and-usage-credits), Claude Code ti chiede di confermare prima che una richiesta Fable fatturi i crediti di utilizzo. Quando nessuno risponde a quel prompt di consenso in una sessione che potrebbe non avere nessuno al suo terminale, Claude Code chiude il prompt e termina il turno con uno di questi messaggi:741Se il tuo account richiede il [consenso per i crediti di utilizzo Fable](/docs/it/model-config#fable-and-usage-credits), Claude Code ti chiede di confermare prima che una richiesta Fable fatturi i crediti di utilizzo. Quando il prompt di consenso si chiude senza che nessuno lo risponda, Claude Code termina il turno con uno di questi messaggi:

734 742 

735```text theme={null}743```text theme={null}

736Fable limit reached · continuing on Fable 5.1 uses usage credits, and the prompt to confirm went unanswered — nothing was sent · answer it where this session is running, or /model to change744Fable limit reached · continuing on Fable 5.1 uses usage credits, and the prompt to confirm went unanswered — nothing was sent · answer it where this session is running, or /model to change


739 747 

740I messaggi nominano il modello Fable della sessione, quindi su Fable 5 leggono `continuing on Fable 5` e `Fable 5 now uses usage credits`. Prima della v2.1.257, il primo messaggio iniziava `Fable 5 limit reached`.748I messaggi nominano il modello Fable della sessione, quindi su Fable 5 leggono `continuing on Fable 5` e `Fable 5 now uses usage credits`. Prima della v2.1.257, il primo messaggio iniziava `Fable 5 limit reached`.

741 749 

742Questo accade nelle sessioni [Remote Control](/docs/it/remote-control), [sessioni in background](/docs/it/agent-view) e sessioni compagni [team agente](/docs/it/agent-teams). Claude Code mostra il prompt di consenso solo nella vista interattiva della sessione: il terminale dove viene eseguito, o, per una sessione in background, la [vista agenti](/docs/it/agent-view) una volta che ti colleghi. Un client Remote Control non può visualizzarlo. Claude Code chiude il prompt alla scadenza [`dialogExpiry`](/docs/it/settings-reference#dialogexpiry), cinque minuti per impostazione predefinita, o non appena arriva un nuovo prompt mentre nessuno ha digitato a quel terminale, come un prompt inviato da un client Remote Control. Digitare al terminale dove viene eseguita la sessione annulla la scadenza, e Claude Code attende la tua risposta. Nella vista allegata di una sessione in background, digitare non annulla la scadenza, e un nuovo prompt chiude comunque il prompt di consenso, quindi rispondi prima che accada uno dei due. Claude Code non invia nulla e mantiene il tuo modello, quindi quando invii il tuo prossimo prompt, Claude Code mostra di nuovo il prompt di consenso.750Questo accade nelle sessioni [Remote Control](/docs/it/remote-control), [sessioni in background](/docs/it/agent-view), [team agente](/docs/it/agent-teams) sessioni compagni, e sessioni che un'altra applicazione ospita tramite Agent SDK. Per quando Claude Code chiude il prompt, vedi [Fable and usage credits](/docs/it/model-config#fable-and-usage-credits).

743 751 

744**Cosa fare:**752**Cosa fare:**

745 753 

746* Al terminale dove viene eseguita la sessione, invia un altro prompt e rispondi al prompt di consenso quando riappare. Per una sessione in background, collegati prima dalla [vista agenti](/docs/it/agent-view). Reinviare da un client Remote Control mostra di nuovo questo messaggio, perché il client non può visualizzare il prompt.754* Dove viene eseguita la sessione, al terminale o nell'applicazione che la ospita, invia un altro prompt e rispondi al prompt di consenso quando riappare. Per una sessione in background, collegati prima dalla [vista agenti](/docs/it/agent-view). Reinviare da un client Remote Control mostra di nuovo questo messaggio, perché il client non può visualizzare il prompt.

747* Esegui `/model` per passare a un modello che non fattura i crediti di utilizzo755* Esegui `/model` per passare a un modello che non fattura i crediti di utilizzo

748* Per darti più tempo per raggiungere quel terminale, imposta [`dialogExpiry`](/docs/it/settings-reference#dialogexpiry) su un valore più lungo o `"never"`756* Per darti più tempo, imposta [`dialogExpiry`](/docs/it/settings-reference#dialogexpiry) su un valore più lungo o `"never"`

749 757 

750Prima della v2.1.236, questo messaggio non appariva: mentre un client Remote Control era connesso, Claude Code attendeva 60 secondi per una risposta e poi continuava il turno sul tuo modello predefinito.758Prima della v2.1.236, questo messaggio non appariva: mentre un client Remote Control era connesso, Claude Code attendeva 60 secondi per una risposta e poi continuava il turno sul tuo modello predefinito.

751 759 


1498 1506 

1499Prima della v2.1.274, questo caso mostrava il messaggio `needs you to sign in again`, e prima della v2.1.273 mostrava `requires re-authorization (token expired)` come gli altri casi.1507Prima della v2.1.274, questo caso mostrava il messaggio `needs you to sign in again`, e prima della v2.1.273 mostrava `requires re-authorization (token expired)` come gli altri casi.

1500 1508 

1509<h3 id="mcp-server-url-is-missing-or-not-a-valid-url">

1510 URL del server MCP mancante o non valido

1511</h3>

1512 

1513Claude Code ha rifiutato di avviare un accesso OAuth per un server MCP remoto perché l'URL `url` configurato del server non viene analizzato come un URL. A meno che Claude Code non abbia un problema di configurazione più specifico da segnalare per il server, l'esecuzione di [`claude mcp login <name>`](/docs/it/mcp#authenticate-from-the-command-line) nella Vostra shell stampa il rifiuto come:

1514 

1515```text theme={null}

1516Couldn't complete authentication for "<name>": This server's URL is missing or not a valid URL, so sign-in can't start. Fix the URL in its MCP config (or set the environment variable it uses) and try again.

1517```

1518 

1519**Cosa fare:**

1520 

1521* Impostate la voce `url` all'endpoint reale del server dove il server è configurato, o impostate la variabile d'ambiente che il suo riferimento [`${VAR}`](/docs/it/mcp#environment-variable-expansion-in-mcp-json) nomina, quindi eseguite di nuovo l'accesso.

1522 

1501<h3 id="issuer-mismatch-in-authorization-response">1523<h3 id="issuer-mismatch-in-authorization-response">

1502 Mancata corrispondenza dell'emittente nella risposta di autorizzazione1524 Mancata corrispondenza dell'emittente nella risposta di autorizzazione

1503</h3>1525</h3>


1518 1540 

1519Prima della v2.1.232, Claude Code utilizzava il runtime v2 solo in un rollout graduale o quando impostavate `MCP_SDK_GENERATION=v2`.1541Prima della v2.1.232, Claude Code utilizzava il runtime v2 solo in un rollout graduale o quando impostavate `MCP_SDK_GENERATION=v2`.

1520 1542 

1543<h3 id="refusing-to-send-credentials-to-non-https-token-endpoint">

1544 Rifiuto di inviare credenziali a un endpoint token non HTTPS

1545</h3>

1546 

1547Sul [runtime v2](/docs/it/mcp#mcp-client-runtimes), Claude Code invia una richiesta di token [MCP OAuth](/docs/it/mcp#authenticate-with-remote-mcp-servers) solo a un endpoint token servito su HTTPS o su `localhost`, `127.0.0.1` o `::1`. Questo messaggio significa che l'endpoint token del server non è nessuno dei due, quindi Claude Code si è fermato prima di inviare la richiesta. Questo accade dopo l'accesso del browser, quindi il passaggio del browser ha successo per primo, e di nuovo ogni volta che Claude Code aggiorna il token del server.

1548 

1549Nella sua forma completa, il messaggio proviene dall'SDK MCP e cita l'endpoint token che ha rifiutato. Nel log di debug, segue `Error during auth completion:` per un accesso o `Token refresh failed:` per un aggiornamento. Nella Vostra shell, `claude mcp login <name>` lo stampa dopo `Couldn't complete authentication for "<name>":`, e in una sessione, `/mcp` lo mostra sotto il menu del server:

1550 

1551```text theme={null}

1552Refusing to send credentials to non-https token endpoint 'http://192.168.1.50:8123/oauth/token'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).

1553```

1554 

1555Claude Code tratta un URL del server che ha una stringa di query o un segmento di percorso lungo e casuale come possibilmente segreto. Per un tale server, redige gli errori di accesso che l'SDK MCP solleva prima di mostrarli o registrarli. Questo errore legge quindi come un nome breve che può cambiare tra i rilasci, come `io`, seguito da `from the MCP SDK for` e l'URL del server redatto. Gli altri errori dall'SDK MCP assumono la stessa forma lì. Il messaggio redatto può essere questo errore solo quando l'endpoint token del server è `http://` semplice a un indirizzo diverso da `localhost`, `127.0.0.1` o `::1`.

1556 

1557**Cosa fare:**

1558 

1559* Servite quell'endpoint token su HTTPS, ad esempio mettendo il server dietro un proxy inverso o un tunnel che termina TLS e configurando il server per pubblicizzare l'indirizzo `https://`

1560* Per connettervi senza modificare il server, avviate Claude Code con [`MCP_SDK_GENERATION=v1`](/docs/it/env-vars), il cui [runtime](/docs/it/mcp#mcp-client-runtimes) non applica questa regola e invia la richiesta di token su HTTP semplice. Quella scelta dura fino a quando non uscite e si applica a ogni server. Il runtime v1 salta anche il [controllo dell'emittente](#issuer-mismatch-in-authorization-response), quindi preferite servire l'endpoint su HTTPS

1561 

1521<h3 id="aws-credentials-expired-or-invalid">1562<h3 id="aws-credentials-expired-or-invalid">

1522 Credenziali AWS scadute o non valide1563 Credenziali AWS scadute o non valide

1523</h3>1564</h3>


1940 1981 

1941* Apri la routine per la modifica, o avvia una sessione cloud. Seleziona l'icona cloud che mostra il nome del tuo ambiente, come **Default**, per aprire il selettore. Passa il mouse sopra il tuo ambiente e fai clic sull'icona delle impostazioni.1982* Apri la routine per la modifica, o avvia una sessione cloud. Seleziona l'icona cloud che mostra il nome del tuo ambiente, come **Default**, per aprire il selettore. Passa il mouse sopra il tuo ambiente e fai clic sull'icona delle impostazioni.

1942* Nella finestra di dialogo **Update cloud environment**, cambia **Network access** da **Trusted** a **Custom**, quindi aggiungi il dominio bloccato a **Allowed domains**. Inserisci un dominio per riga. Seleziona **Also include default list of common package managers** per mantenere la [allowlist predefinita](/docs/it/cloud-environments#default-allowed-domains) insieme ai tuoi domini personalizzati. Seleziona **Full** invece se desideri accesso senza restrizioni.1983* Nella finestra di dialogo **Update cloud environment**, cambia **Network access** da **Trusted** a **Custom**, quindi aggiungi il dominio bloccato a **Allowed domains**. Inserisci un dominio per riga. Seleziona **Also include default list of common package managers** per mantenere la [allowlist predefinita](/docs/it/cloud-environments#default-allowed-domains) insieme ai tuoi domini personalizzati. Seleziona **Full** invece se desideri accesso senza restrizioni.

1943* Fai clic su **Save changes**. La prossima esecuzione utilizza l'allowlist aggiornata.1984* Fai clic su **Save changes**. La prossima esecuzione utilizza l'allowlist aggiornata. Per una sessione cloud che è già aperta, vedi [quando una modifica dell'accesso di rete raggiunge le sessioni esistenti](/docs/it/cloud-environments#network-access).

1944 1985 

1945Vedi [Network access](/docs/it/cloud-environments#network-access) per i livelli di accesso e l'allowlist predefinita. Le sessioni CLI locali non sono interessate da questa politica.1986Vedi [Network access](/docs/it/cloud-environments#network-access) per i livelli di accesso e l'allowlist predefinita. Le sessioni CLI locali non sono interessate da questa politica.

1946 1987 


2070 Errori di richiesta2111 Errori di richiesta

2071</h2>2112</h2>

2072 2113 

2073Questi errori riguardano il contenuto della Vostra richiesta. La maggior parte proviene dall'API dopo che ha rifiutato la richiesta; alcuni sono prodotti localmente da Claude Code prima che venga inviata qualsiasi richiesta.2114Questi errori riguardano il contenuto della tua richiesta. La maggior parte proviene dall'API dopo che ha rifiutato la richiesta; alcuni sono prodotti localmente da Claude Code prima che venga inviata qualsiasi richiesta.

2074 2115 

2075<h3 id="prompt-is-too-long">2116<h3 id="prompt-is-too-long">

2076 Prompt troppo lungo2117 Prompt è troppo lungo

2077</h3>2118</h3>

2078 2119 

2079La conversazione più i file allegati superano la finestra di contesto del modello.2120La conversazione più i file allegati superano la finestra di contesto del modello.


2090 2131 

2091La riga nomina solo `/clear` quando [`DISABLE_COMPACT`](/docs/it/env-vars) è impostato. Le forme più lunghe dell'errore, come la forma di compattazione non riuscita di seguito, mantengono la dicitura `Prompt is too long ·`. Nell'output `-p` e nella trascrizione, il testo rimane `Prompt is too long`.2132La riga nomina solo `/clear` quando [`DISABLE_COMPACT`](/docs/it/env-vars) è impostato. Le forme più lunghe dell'errore, come la forma di compattazione non riuscita di seguito, mantengono la dicitura `Prompt is too long ·`. Nell'output `-p` e nella trascrizione, il testo rimane `Prompt is too long`.

2092 2133 

2093Quando avete disattivato la compattazione automatica nelle Vostre [impostazioni utente](/docs/it/settings-reference#autocompactenabled), la riga dice anche:2134Quando hai disattivato la compattazione automatica nelle tue [impostazioni utente](/docs/it/settings-reference#autocompactenabled), la riga dice anche:

2094 2135 

2095```text theme={null}2136```text theme={null}

2096Context limit reached · /compact or /clear to continue · auto-compact is off · /config to turn it on2137Context limit reached · /compact or /clear to continue · auto-compact is off · /config to turn it on


2108Prompt is too long · automatic compaction failed: <the underlying error>2149Prompt is too long · automatic compaction failed: <the underlying error>

2109```2150```

2110 2151 

2111Risolvete prima l'errore nominato; `/compact` fallisce sullo stesso errore finché non lo fate. Prima della v2.1.229, una compattazione automatica non riuscita mostrava `Prompt is too long` senza la causa.2152Risolvi prima l'errore nominato; `/compact` fallisce sullo stesso errore finché non lo fai. Prima della v2.1.229, una compattazione automatica non riuscita mostrava `Prompt is too long` senza la causa.

2112 2153 

2113Quando la compattazione automatica viene eseguita su questo errore, normalmente riassume i Vostri scambi più vecchi e mantiene i più recenti. Come ultima risorsa, Claude Code riassume diversamente:2154Quando la compattazione automatica viene eseguita su questo errore, normalmente riassume i tuoi scambi più vecchi e mantiene i più recenti. Come ultima risorsa, Claude Code riassume diversamente:

2114 2155 

2115* Quando non può riassumere alcuno scambio completo, Claude Code mantiene il Vostro prompt più recente parola per parola e riassume tutto prima di esso.2156* Quando non può riassumere alcuno scambio completo, Claude Code mantiene il tuo prompt più recente parola per parola e riassume tutto prima di esso.

2116* In quel caso, quando la conversazione non termina con il Vostro prompt, Claude Code riassume l'intera conversazione.2157* In quel caso, quando la conversazione non termina con il tuo prompt, Claude Code riassume l'intera conversazione.

2117 2158 

2118Claude Code salta questo recupero quando il contenuto che porterebbe avanti non contiene alcuna risposta del modello e meno di circa 1.000 token del Vostro testo, come un breve ritentativo inviato dopo un incollamento di grandi dimensioni. Eseguite `/clear` per ricominciare da capo. Prima della v2.1.269, la compattazione falliva ogni volta che non poteva riassumere uno scambio completo, quindi una sessione in quello stato colpiva questo errore di nuovo ad ogni turno.2159Claude Code salta questo recupero quando il contenuto che porterebbe avanti non contiene alcuna risposta del modello e meno di circa 1.000 token del tuo testo, come un breve tentativo inviato dopo un incolla di dimensioni eccessive. Esegui `/clear` per ricominciare da capo. Prima della v2.1.269, la compattazione falliva ogni volta che non poteva riassumere uno scambio completo, quindi una sessione in quello stato colpiva questo errore di nuovo ad ogni turno.

2119 2160 

2120Una conversazione a singolo scambio non ha turni precedenti da riassumere. Quando la compattazione automatica si sarebbe eseguita su uno, Claude Code salta il tentativo e spiega cosa riempie la richiesta. Quando l'API non segnala i conteggi dei token nel suo errore, il messaggio recita:2161Una conversazione con un singolo scambio non ha turni precedenti da riassumere. Quando la compattazione automatica avrebbe dovuto essere eseguita su uno, Claude Code salta il tentativo e spiega cosa riempie la richiesta. Quando l'API non segnala i conteggi dei token nel suo errore, il messaggio recita:

2121 2162 

2122```text theme={null}2163```text theme={null}

2123Prompt is too long · this conversation is a single exchange and cannot be compacted — the request size comes mostly from system prompt, tool definitions, or attachments.2164Prompt is too long · this conversation is a single exchange and cannot be compacted — the request size comes mostly from system prompt, tool definitions, or attachments.


2139 2180 

2140**Cosa fare:**2181**Cosa fare:**

2141 2182 

2142* Eseguite `/compact` per riassumere i turni precedenti e liberare spazio, oppure `/clear` per ricominciare da capo. Se `/compact` risponde `Not enough messages to compact.`, la conversazione è un singolo scambio senza nulla prima da riassumere, quindi lo spazio è occupato da quel singolo prompt e da ciò che Claude Code invia con ogni richiesta: eseguite `/clear` e rinviate con meno testo incollato o allegati più piccoli, oppure riducete le definizioni degli strumenti e i file di memoria usando i passaggi di seguito2183* Esegui `/compact` per riassumere i turni precedenti e liberare spazio, oppure `/clear` per ricominciare da capo. Se `/compact` risponde `Not enough messages to compact.`, la conversazione è un singolo scambio senza nulla di precedente da riassumere, quindi lo spazio è occupato da quel prompt e da quello che Claude Code invia con ogni richiesta: esegui `/clear` e reinvia con meno testo incollato o allegati più piccoli, oppure riduci le definizioni degli strumenti e i file di memoria utilizzando i passaggi seguenti

2143* Eseguite `/context` per vedere una suddivisione di ciò che consuma la finestra: prompt di sistema, strumenti, file di memoria e messaggi2184* Esegui `/context` per vedere una suddivisione di ciò che consuma la finestra: prompt di sistema, strumenti, file di memoria e messaggi

2144* Disabilitate i server MCP che non state utilizzando con `/mcp disable <name>` per rimuovere le loro definizioni di strumenti dal contesto2185* Disabilita i server MCP che non stai utilizzando con `/mcp disable <name>` per rimuovere le loro definizioni di strumenti dal contesto

2145* Tagliate i file di memoria `CLAUDE.md` di grandi dimensioni, oppure spostate le istruzioni in [regole con ambito di percorso](/docs/it/memory#path-specific-rules) che si caricano solo quando rilevanti2186* Taglia i file di memoria `CLAUDE.md` di grandi dimensioni, oppure sposta le istruzioni in [regole con ambito di percorso](/docs/it/memory#path-specific-rules) che si caricano solo quando rilevanti

2146* La compattazione automatica è attiva per impostazione predefinita e normalmente previene questo errore. Se l'avete disattivata in `/config` o con [`DISABLE_AUTO_COMPACT`](/docs/it/env-vars), riattivatela. Se la mantenete disattivata, eseguite `/compact` voi stessi prima che la finestra si riempia.2187* La compattazione automatica è attiva per impostazione predefinita e normalmente previene questo errore. Se l'hai disattivata in `/config` o con [`DISABLE_AUTO_COMPACT`](/docs/it/env-vars), riattivala. Se la mantieni disattivata, esegui `/compact` tu stesso prima che la finestra si riempia.

2147 2188 

2148Vedete [Explore the context window](/docs/it/context-window) per una visualizzazione interattiva di come il contesto si riempie.2189Vedi [Esplora la finestra di contesto](/docs/it/context-window) per una visualizzazione interattiva di come il contesto si riempie.

2149 2190 

2150<h3 id="context-exceeds-the-token-limit">2191<h3 id="context-exceeds-the-token-limit">

2151 Il contesto supera il limite di token2192 Il contesto supera il limite di token

2152</h3>2193</h3>

2153 2194 

2154`/context` mostra questo avviso in cima al suo output quando la conversazione ha superato la finestra di contesto del modello. Le richieste falliscono con [`Prompt is too long`](#prompt-is-too-long) finché non liberate spazio. Una sessione interattiva mostra quell'errore come la riga `Context limit reached`.2195`/context` mostra questo avviso in cima al suo output quando la conversazione ha superato la finestra di contesto del modello. Le richieste falliscono con [`Prompt is too long`](#prompt-is-too-long) finché non liberi spazio. Una sessione interattiva mostra quell'errore come la riga `Context limit reached`.

2155 2196 

2156```text theme={null}2197```text theme={null}

2157Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.2198Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.

2158```2199```

2159 2200 

2160Quando il limite che avete superato è una finestra di compattazione, come il limite di 200K su modelli con contesto 1M, l'avviso recita diversamente. Una finestra di compattazione può stare al di sotto della finestra di contesto del modello, quindi le richieste oltre di essa possono ancora avere successo.2201Quando il limite che hai superato è una finestra di compattazione, come il limite di 200K sui modelli con contesto 1M, l'avviso recita diversamente. Una finestra di compattazione può stare al di sotto della finestra di contesto del modello, quindi le richieste oltre ad essa possono ancora avere successo.

2161 2202 

2162```text theme={null}2203```text theme={null}

2163Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.2204Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.

2164```2205```

2165 2206 

2166Entrambe le forme nominano `/clear` invece di `/compact` quando avete impostato [`DISABLE_COMPACT`](/docs/it/env-vars).2207Entrambe le forme nominano `/clear` invece di `/compact` quando hai impostato [`DISABLE_COMPACT`](/docs/it/env-vars).

2167 2208 

2168**Cosa fare:**2209**Cosa fare:**

2169 2210 

2170* In una conversazione multi-turno, eseguite `/compact` per riassumere i turni precedenti e liberare spazio. Per ricominciare da capo, eseguite `/clear`2211* In una conversazione multi-turno, esegui `/compact` per riassumere i turni precedenti e liberare spazio. Per ricominciare da capo, esegui `/clear`

2171* Per altri modi di ridurre l'utilizzo, vedete [Prompt is too long](#prompt-is-too-long)2212* Per altri modi per ridurre l'utilizzo, vedi [Prompt è troppo lungo](#prompt-is-too-long)

2172 2213 

2173Prima della v2.1.216, `/context` mostrava l'utilizzo sopra il 100% senza una riga di avviso che spiegasse cosa significava o come recuperare.2214Prima della v2.1.216, `/context` mostrava l'utilizzo sopra il 100% senza una riga di avviso che spiegasse cosa significava o come recuperare.

2174 2215 


2176 Richiesta troppo grande2217 Richiesta troppo grande

2177</h3>2218</h3>

2178 2219 

2179Il corpo della richiesta grezza ha superato il limite di 32MB dell'API prima della tokenizzazione, solitamente a causa di contenuto incollato di grandi dimensioni, risultati di strumenti o allegati. Questo limite è separato dalla [finestra di contesto](#prompt-is-too-long).2220Il corpo della richiesta grezza ha superato il limite di 32MB dell'API prima della tokenizzazione, solitamente a causa di contenuto incollato di grandi dimensioni, risultati degli strumenti o allegati. Questo limite è separato dalla [finestra di contesto](#prompt-is-too-long).

2180 2221 

2181```text theme={null}2222```text theme={null}

2182Request too large (max 32MB). Accumulated images and attachments in the conversation pushed the request over the limit. Run /compact, or double press esc to go back and remove attachments.2223Request too large (max 32MB). Accumulated images and attachments in the conversation pushed the request over the limit. Run /compact, or double press esc to go back and remove attachments.

2183```2224```

2184 2225 

2185Quando la richiesta è andata direttamente all'API Claude e l'API stessa l'ha rifiutata, Claude Code misura la conversazione e formula il messaggio in base al fatto che il recupero possa funzionare. Attraverso un proxy, gateway o provider cloud ottenete il messaggio generale. Le forme misurate:2226Quando la richiesta è andata direttamente all'API Claude e l'API stessa l'ha rifiutata, Claude Code misura la conversazione e formula il messaggio in base al fatto che il recupero possa funzionare. Attraverso un proxy, gateway o provider cloud ottieni il messaggio generale. Le forme misurate:

2186 2227 

2187* `Request too large (max 32MB; 20.1MB of about 33.4MB is images or documents).`: le immagini o i documenti hanno spinto la richiesta oltre il limite. Claude Code ritenta con essi rimossi.2228* `Request too large (max 32MB; 20.1MB of about 33.4MB is images or documents).`: le immagini o i documenti hanno spinto la richiesta oltre il limite. Claude Code ritenta con essi rimossi.

2188* `Request too large for the API's 32MB request limit`: i messaggi da soli superano il limite, quindi il messaggio dice `compacting cannot make it fit` e Claude Code non ritenta. In [modalità non interattiva](/docs/it/headless), il messaggio vi dice di ridurre l'input o avviare una nuova sessione invece.2229* `Request too large for the API's 32MB request limit`: i messaggi da soli superano il limite, quindi il messaggio dice `compacting cannot make it fit` e Claude Code non ritenta. In [modalità non interattiva](/docs/it/headless), il messaggio ti dice di ridurre l'input o avviare una nuova sessione.

2189 2230 

2190Prima della v2.1.212, le conversazioni con abbastanza immagini accumulate fallivano ad ogni turno con `Request too large (max 32MB). Double press esc to go back and try with a smaller file.` Prima della v2.1.229, Claude Code mostrava il consiglio di allegato per ogni rifiuto, anche quando la compattazione non poteva aiutare.2231Prima della v2.1.212, le conversazioni con abbastanza immagini accumulate fallivano ad ogni turno con `Request too large (max 32MB). Double press esc to go back and try with a smaller file.` Prima della v2.1.229, Claude Code mostrava il consiglio di allegato per ogni rifiuto, anche quando la compattazione non poteva aiutare.

2191 2232 

2192**Cosa fare:**2233**Cosa fare:**

2193 2234 

2194* Se il messaggio dice `compacting cannot make it fit`, premete Esc due volte per tornare indietro oltre il turno che ha aggiunto il contenuto di grandi dimensioni, oppure eseguite `/clear` per ricominciare da capo2235* Se il messaggio dice `compacting cannot make it fit`, premi Esc due volte per tornare indietro oltre il turno che ha aggiunto il contenuto di grandi dimensioni, oppure esegui `/clear` per ricominciare da capo

2195* Altrimenti, eseguite `/compact`, che elimina le immagini e gli allegati accumulati2236* Altrimenti, esegui `/compact`, che elimina le immagini e gli allegati accumulati

2196* Fate riferimento ai file di grandi dimensioni per percorso invece di incollarne i contenuti, in modo che Claude possa leggerli in blocchi2237* Fai riferimento ai file di grandi dimensioni per percorso invece di incollarne il contenuto, in modo che Claude possa leggerli in blocchi

2197* Per le immagini, vedete [Image was too large](#image-was-too-large) di seguito2238* Per le immagini, vedi [L'immagine era troppo grande](#image-was-too-large) di seguito

2198 2239 

2199<h3 id="image-was-too-large">2240<h3 id="image-was-too-large">

2200 L'immagine era troppo grande2241 L'immagine era troppo grande


2207API Error: 400 ... image dimensions exceed max allowed size2248API Error: 400 ... image dimensions exceed max allowed size

2208```2249```

2209 2250 

2210Claude Code sostituisce l'immagine non elaborabile con un segnaposto di testo e ritenta, quindi i messaggi successivi hanno successo. Nelle versioni precedenti alla 2.1.142, un'immagine incollata poteva rimanere nella conversazione e ripetere lo stesso errore ad ogni messaggio successivo. Per recuperare su quelle versioni, premete Esc due volte e tornate indietro oltre il turno in cui l'immagine è stata aggiunta.2251Claude Code sostituisce l'immagine non elaborabile con un segnaposto di testo e ritenta, quindi i messaggi successivi hanno successo. Nelle versioni precedenti alla 2.1.142, un'immagine incollata potrebbe rimanere nella conversazione e ripetere lo stesso errore ad ogni messaggio successivo. Per recuperare su quelle versioni, premi Esc due volte e torna indietro oltre il turno in cui è stata aggiunta l'immagine.

2211 2252 

2212**Cosa fare:**2253**Cosa fare:**

2213 2254 

2214* Ridimensionate l'immagine prima di incollarla. L'API accetta immagini fino a 8000 pixel sul lato più lungo per una singola immagine, o 2000 pixel quando molte immagini sono nel contesto.2255* Ridimensiona l'immagine prima di incollarla. L'API accetta immagini fino a 8000 pixel sul lato più lungo per una singola immagine, o 2000 pixel quando molte immagini sono nel contesto.

2215* Fate uno screenshot più stretto della regione rilevante invece dello schermo intero2256* Fai uno screenshot più stretto della regione rilevante invece dello schermo intero

2216 2257 

2217<h3 id="unable-to-resize-image">2258<h3 id="unable-to-resize-image">

2218 Impossibile ridimensionare l'immagine2259 Impossibile ridimensionare l'immagine


2234 2275 

2235**Cosa fare:**2276**Cosa fare:**

2236 2277 

2237* Se il messaggio vi chiede di convertire l'immagine, convertitela in PNG, JPEG, GIF o WebP e allegatela di nuovo. Claude Code può verificare le dimensioni per questi formati dall'intestazione del file, senza decodificare l'immagine.2278* Se il messaggio ti chiede di convertire l'immagine, convertila in PNG, JPEG, GIF o WebP e allegala di nuovo. Claude Code può verificare le dimensioni per questi formati dall'intestazione del file, senza decodificare l'immagine.

2238* Se il messaggio segnala un limite di dimensione o dimensione, ridimensionate o ricomprimete l'immagine al di sotto di quel limite prima di allegarla.2279* Se il messaggio segnala un limite di dimensione o dimensione, ridimensiona o ricomprimi l'immagine al di sotto di quel limite prima di allegare.

2239* Se il messaggio nomina una causa, come un JPEG CMYK, un WebP animato o un file possibilmente danneggiato, risalvate l'immagine nel formato che il messaggio suggerisce e allegatela di nuovo.2280* Se il messaggio nomina una causa, come un JPEG CMYK, un WebP animato o un file possibilmente danneggiato, risalva l'immagine nel formato che il messaggio suggerisce e allegala di nuovo.

2240 2281 

2241<h3 id="pdf-errors">2282<h3 id="pdf-errors">

2242 Errori PDF2283 Errori PDF

2243</h3>2284</h3>

2244 2285 

2245Il PDF che avete allegato non poteva essere elaborato. I messaggi sono mostrati qui nella loro forma non interattiva; in una sessione interattiva invece vi chiedono di premere esc due volte e riprovare.2286Il PDF che hai allegato non poteva essere elaborato. I messaggi sono mostrati qui nella loro forma non interattiva; in una sessione interattiva ti chiedono invece di premere Esc due volte e riprovare.

2246 2287 

2247```text theme={null}2288```text theme={null}

2248PDF too large (max 100 pages, 20MB). Try reading the file a different way (e.g., extract text with pdftotext).2289PDF too large (max 100 pages, 20MB). Try reading the file a different way (e.g., extract text with pdftotext).


2252 2293 

2253**Cosa fare:**2294**Cosa fare:**

2254 2295 

2255* Per i PDF di grandi dimensioni, chiedete a Claude di leggere un intervallo di pagine con lo strumento Read invece di allegare l'intero file, oppure estraete il testo con uno strumento come `pdftotext` e fate riferimento al file di output per percorso2296* Per i PDF di grandi dimensioni, chiedi a Claude di leggere un intervallo di pagine con lo strumento Read invece di allegare l'intero file, oppure estrai il testo con uno strumento come `pdftotext` e fai riferimento al file di output per percorso

2256* Per i PDF protetti o non validi, rimuovete la password o riesportate il file dall'applicazione sorgente, quindi riprovate2297* Per i PDF protetti o non validi, rimuovi la password o riesporta il file dall'applicazione sorgente, quindi riprova

2257 2298 

2258Quando Claude legge un intervallo di pagine da un PDF con lo strumento Read, la lettura può fallire con un messaggio diverso:2299Quando Claude legge un intervallo di pagine da un PDF con lo strumento Read, la lettura può fallire con un messaggio diverso:

2259 2300 


2261pdftoppm is not installed. Install poppler-utils (e.g. `brew install poppler` or `apt-get install poppler-utils`) to enable PDF page rendering.2302pdftoppm is not installed. Install poppler-utils (e.g. `brew install poppler` or `apt-get install poppler-utils`) to enable PDF page rendering.

2262```2303```

2263 2304 

2264Le letture di intervallo di pagine rendono le pagine con `pdftoppm`. Installate poppler-utils con il comando che il messaggio fornisce, oppure su altre piattaforme una build poppler che mette `pdftoppm` sul Vostro `PATH`. Vedete [Read tool behavior](/docs/it/tools-reference#read-tool-behavior) per quali PDF vengono letti per intervallo di pagine.2305Le letture dell'intervallo di pagine eseguono il rendering delle pagine con `pdftoppm`. Installa poppler-utils con il comando che il messaggio fornisce, o su altre piattaforme una build poppler che mette `pdftoppm` sul tuo `PATH`. Vedi [Comportamento dello strumento Read](/docs/it/tools-reference#read-tool-behavior) per quali PDF vengono letti per intervallo di pagine.

2265 2306 

2266<h3 id="extra-inputs-are-not-permitted">2307<h3 id="extra-inputs-are-not-permitted">

2267 Gli input extra non sono consentiti2308 Gli input extra non sono consentiti


2277 2318 

2278**Cosa fare:**2319**Cosa fare:**

2279 2320 

2280* Configurate il Vostro gateway per inoltrare l'intestazione `anthropic-beta`. Vedete [feature pass-through](/docs/it/llm-gateway-protocol#feature-pass-through) per ciò che i gateway devono inoltrare.2321* Configura il tuo gateway per inoltrare l'intestazione `anthropic-beta`. Vedi [feature pass-through](/docs/it/llm-gateway-protocol#feature-pass-through) per ciò che i gateway devono inoltrare.

2281* Come fallback, impostate [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/docs/it/env-vars) prima di avviare. [Disable pre-release capabilities](/docs/it/llm-gateway-protocol#disable-pre-release-capabilities) copre l'ambito esatto.2322* Come fallback, imposta [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/docs/it/env-vars) prima di avviare. [Disabilita le capacità pre-release](/docs/it/llm-gateway-protocol#disable-pre-release-capabilities) copre l'ambito esatto.

2282 2323 

2283<h3 id="tool-input-schema-is-invalid">2324<h3 id="tool-input-schema-is-invalid">

2284 Lo schema di input dello strumento non è valido2325 Lo schema di input dello strumento non è valido

2285</h3>2326</h3>

2286 2327 

2287Uno strumento nella richiesta ha dichiarato un `input_schema` che non supera la convalida JSON Schema dell'API, quindi l'API ha rifiutato l'intera richiesta. Il numero dopo `tools.` è la posizione dello strumento che fallisce nell'elenco degli strumenti della richiesta, non un nome che potete cercare.2328Uno strumento nella richiesta ha dichiarato un `input_schema` che non supera la convalida JSON Schema dell'API, quindi l'API ha rifiutato l'intera richiesta. Il numero dopo `tools.` è la posizione dello strumento che fallisce nell'elenco degli strumenti della richiesta, non un nome che puoi cercare.

2288 2329 

2289```text theme={null}2330```text theme={null}

2290API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid2331API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid

2291API Error: 400 ... tools.N.custom.input_schema.properties: Property keys should match pattern '^[a-zA-Z0-9_.-]{1,64}$'2332API Error: 400 ... tools.N.custom.input_schema.properties: Property keys should match pattern '^[a-zA-Z0-9_.-]{1,64}$'

2292```2333```

2293 2334 

2294La prima forma significa che lo schema non è uno schema JSON valido draft 2020-12. La seconda significa che un nome di proprietà di livello superiore non corrisponde al pattern che il messaggio cita.2335La prima forma significa che lo schema non è un JSON Schema draft 2020-12 valido. La seconda significa che un nome di proprietà di primo livello non corrisponde al pattern che il messaggio cita.

2295 2336 

2296Claude Code [esclude gli strumenti MCP il cui schema di input fallirebbe questa convalida](/docs/it/mcp#tools-with-invalid-input-schemas) quando carica gli strumenti di un server, quindi le richieste normalmente non ne includono mai uno.2337Claude Code [esclude gli strumenti MCP il cui schema di input fallirebbe questa convalida](/docs/it/mcp#tools-with-invalid-input-schemas) quando carica gli strumenti di un server, quindi le richieste normalmente non ne includono mai uno.

2297 2338 

2298Su un [deployment dove il recupero dei flag è disattivato](/docs/it/env-vars#features-that-need-feature-flag-fetching), o su una macchina i cui flag non sono mai arrivati, Claude Code registra nel log del server quale strumento verrebbe rifiutato ma lo invia comunque, quindi questo errore può ancora verificarsi.2339Su una [distribuzione in cui il recupero dei flag è disattivato](/docs/it/env-vars#features-that-need-feature-flag-fetching), o su una macchina i cui flag non sono mai arrivati, Claude Code registra nel log del server quale strumento verrebbe rifiutato ma lo invia comunque, quindi questo errore può ancora verificarsi.

2299 2340 

2300L'errore può anche verificarsi per uno strumento il cui schema dichiara un dialetto JSON Schema diverso da draft 2020-12 in `$schema`. Claude Code non controlla questi schemi rispetto al meta-schema JSON Schema, anche se il controllo del nome della proprietà di livello superiore si applica comunque.2341L'errore può verificarsi anche per uno strumento il cui schema dichiara un dialetto JSON Schema diverso da draft 2020-12 in `$schema`. Claude Code non controlla questi schemi rispetto al meta-schema JSON Schema, anche se il controllo del nome della proprietà di primo livello si applica comunque.

2301 2342 

2302Prima della v2.1.216, nessun deployment eseguiva i controlli di esclusione.2343Prima della v2.1.216, nessuna distribuzione eseguiva i controlli di esclusione.

2303 2344 

2304**Cosa fare:**2345**Cosa fare:**

2305 2346 

2306* Se la Vostra versione di Claude Code è precedente alla v2.1.216, eseguite `claude update`.2347* Se la tua versione di Claude Code è precedente alla v2.1.216, esegui `claude update`.

2307* Rimuovete o [disabilitate](/docs/it/mcp#disable-a-server-without-removing-it) il server MCP che dichiara lo schema non valido. L'errore nomina lo strumento solo per posizione. Sulla v2.1.216 o successiva, controllate il log di ogni server per una riga che nomina uno strumento il cui schema di input verrebbe rifiutato. Se nessun log ne nomina uno, disabilitate i server uno alla volta.2348* Rimuovi o [disabilita](/docs/it/mcp#disable-a-server-without-removing-it) il server MCP che dichiara lo schema non valido. L'errore nomina lo strumento solo per posizione. Sulla v2.1.216 o successiva, controlla il log di ogni server per una riga che nomina uno strumento il cui schema di input verrebbe rifiutato. Se nessun log ne nomina uno, disabilita i server uno alla volta.

2308* Se mantenete il server, correggete l'`input_schema` dello strumento. Lo schema deve essere uno schema JSON valido, e i nomi delle proprietà di livello superiore devono essere da 1 a 64 caratteri e usare solo lettere ASCII e cifre, `_`, `.` e `-`. Vedete [Tools with invalid input schemas](/docs/it/mcp#tools-with-invalid-input-schemas).2349* Se mantieni il server, correggi il `input_schema` dello strumento. Lo schema deve essere un JSON Schema valido e i nomi delle proprietà di primo livello devono essere da 1 a 64 caratteri e utilizzare solo lettere ASCII e cifre, `_`, `.` e `-`. Vedi [Strumenti con schemi di input non validi](/docs/it/mcp#tools-with-invalid-input-schemas).

2309 2350 

2310<h3 id="tool-use-name-over-200-characters">2351<h3 id="tool-use-name-over-200-characters">

2311 tool\_use.name oltre 200 caratteri2352 tool\_use.name oltre 200 caratteri


2321 2362 

2322**Cosa fare:**2363**Cosa fare:**

2323 2364 

2324* Eseguite `claude update`, quindi riprendete la conversazione. La versione aggiornata ripara il nome eccessivamente lungo quando carica la trascrizione, quindi una conversazione che era bloccata funziona di nuovo.2365* Esegui `claude update`, quindi riprendi la conversazione. La versione aggiornata ripara il nome eccessivamente lungo quando carica la trascrizione, quindi una conversazione che era bloccata funziona di nuovo.

2325 2366 

2326Prima della v2.1.281, il nome eccessivamente lungo rimase nella cronologia e l'API rifiutò ogni richiesta che rinviasse la conversazione, inclusi `/compact` e `--resume`, quindi questo errore si ripetè e la conversazione rimase bloccata.2367Prima della v2.1.281, il nome eccessivamente lungo rimaneva nella cronologia e l'API rifiutava ogni richiesta che reinviava la conversazione, inclusi `/compact` e `--resume`, quindi questo errore si ripeteva e la conversazione era bloccata.

2327 2368 

2328<h3 id="theres-an-issue-with-the-selected-model">2369<h3 id="theres-an-issue-with-the-selected-model">

2329 C'è un problema con il modello selezionato2370 C'è un problema con il modello selezionato

2330</h3>2371</h3>

2331 2372 

2332Il nome del modello configurato non è stato riconosciuto o il Vostro account non ha accesso ad esso. A partire dalla v2.1.160 l'hint finale, mostrato qui nella sua forma interattiva, varia per superficie.2373Il nome del modello configurato non è stato riconosciuto o il tuo account non ha accesso ad esso. A partire dalla v2.1.160 l'hint finale, mostrato qui nella sua forma interattiva, varia in base alla superficie.

2333 2374 

2334```text theme={null}2375```text theme={null}

2335There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to pick a different model.2376There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to pick a different model.


2337 2378 

2338**Cosa fare:**2379**Cosa fare:**

2339 2380 

2340* **CLI interattiva**: eseguite `/model` per scegliere dai modelli disponibili per il Vostro account.2381* **CLI interattiva**: esegui `/model` per scegliere dai modelli disponibili per il tuo account.

2341* **Modalità non interattiva (`-p`)**: passate `--model` con un alias o ID valido, oppure impostate [`ANTHROPIC_MODEL`](/docs/it/env-vars). Il testo di errore mostra `Run --model` su questa superficie.2382* **Modalità non interattiva (`-p`)**: passa `--model` con un alias o ID valido, oppure imposta [`ANTHROPIC_MODEL`](/docs/it/env-vars). Il testo dell'errore mostra `Run --model` su questa superficie.

2342* **Agent SDK**: il testo di errore omette l'hint perché il modello è impostato a livello di programmazione. Impostate [`model` su `Options`](/docs/it/agent-sdk/typescript#options) in TypeScript o [`ClaudeAgentOptions(model=...)`](/docs/it/agent-sdk/python#claudeagentoptions) in Python, e gestite l'errore strutturato `model_not_found` per mostrare il Vostro proprio ritentativo o selettore di modello.2383* **Agent SDK**: il testo dell'errore omette l'hint perché il modello è impostato a livello di programmazione. Imposta [`model` su `Options`](/docs/it/agent-sdk/typescript#options) in TypeScript o [`ClaudeAgentOptions(model=...)`](/docs/it/agent-sdk/python#claudeagentoptions) in Python, e gestisci l'errore strutturato `model_not_found` per mostrare il tuo ritentativo o selettore di modello.

2343* Usate un alias come `sonnet` o `opus` invece di un ID completo con versione. Gli alias si risolvono in un valore predefinito mantenuto in modo che non diventino obsoleti. Vedete [Model configuration](/docs/it/model-config).2384* Usa un alias come `sonnet` o `opus` invece di un ID completo con versione. Gli alias si risolvono in un valore predefinito mantenuto in modo che non diventino obsoleti. Vedi [Configurazione del modello](/docs/it/model-config).

2344* Se il modello sbagliato continua a tornare nella CLI, un ID obsoleto è impostato da qualche parte. Controllate i posti in cui potete impostare un modello in [ordine di priorità](/docs/it/model-config#setting-your-model) e rimuovete il valore obsoleto.2385* Se il modello sbagliato continua a tornare nella CLI, un ID obsoleto è impostato da qualche parte. Controlla i posti in cui puoi impostare un modello in [ordine di priorità](/docs/it/model-config#setting-your-model) e rimuovi il valore obsoleto.

2345* Claude Code segnala un login claude.ai scaduto come [Login expired](#login-expired), non come questo errore. Prima della v2.1.206, un login scaduto che non poteva più essere aggiornato falliva ad ogni modello con questo errore; eseguite `/login` se lo vedete su una versione più vecchia.2386* Claude Code segnala un accesso claude.ai scaduto come [Login scaduto](#login-expired), non come questo errore. Prima della v2.1.206, un accesso scaduto che non poteva più essere aggiornato falliva con ogni modello con questo errore; esegui `/login` se lo vedi su una versione precedente.

2346* Per i deployment di Google Cloud's Agent Platform, vedete [Google Cloud's Agent Platform troubleshooting](/docs/it/google-vertex-ai#troubleshooting).2387* Per le distribuzioni di Google Cloud's Agent Platform, vedi [Risoluzione dei problemi di Google Cloud's Agent Platform](/docs/it/google-vertex-ai#troubleshooting).

2347 2388 

2348<h3 id="model-is-not-a-recognized-model-id">2389<h3 id="model-is-not-a-recognized-model-id">

2349 Il modello non è un ID modello riconosciuto2390 Il modello non è un ID modello riconosciuto

2350</h3>2391</h3>

2351 2392 

2352La stringa che avete passato a un cambio di modello non è un alias di modello, un ID di modello che Claude Code può usare, quindi ha rifiutato il cambio senza inviare una richiesta e la sessione mantiene il suo modello corrente. Potete ottenere questo errore quando un modello è impostato attraverso il metodo [Agent SDK](/docs/it/agent-sdk/typescript) `setModel()`, da un'app che esegue la CLI di Claude Code per voi, come l'[app Desktop](/docs/it/desktop), o quando scegliete un modello da un dispositivo connesso attraverso [Remote Control](/docs/it/remote-control). Prima della v2.1.200, Claude Code salvava la stringa e falliva alla richiesta successiva con [There's an issue with the selected model](#theres-an-issue-with-the-selected-model).2393La stringa che hai passato a un cambio di modello non è una che Claude Code può usare come modello, quindi ha rifiutato il cambio senza inviare una richiesta e la sessione mantiene il suo modello attuale. Puoi ottenere questo errore quando un modello è impostato tramite il metodo [Agent SDK](/docs/it/agent-sdk/typescript) `setModel()`, da un'app che esegue la CLI di Claude Code per te, come l'[app Desktop](/docs/it/desktop), o quando scegli un modello da un dispositivo connesso tramite [Remote Control](/docs/it/remote-control). Prima della v2.1.200, Claude Code salvava la stringa e falliva alla richiesta successiva con [C'è un problema con il modello selezionato](#theres-an-issue-with-the-selected-model).

2353 2394 

2354```text theme={null}2395```text theme={null}

2355Model "Sonnet5" is not a recognized model id. Did you mean 'claude-sonnet-5'?2396Model "Sonnet5" is not a recognized model id. Did you mean 'claude-sonnet-5'?

2356```2397```

2357 2398 

2358In questo esempio un'app ha inviato il nome visualizzato `Sonnet 5`, che il messaggio ripete senza il suo spazio. L'hint finale nomina l'alias o l'ID modello più simile. Quando nulla è abbastanza simile, recita `Run /model to see available models.` invece. In una sessione che l'[app Desktop](/docs/it/desktop) avvia per voi, l'hint senza corrispondenza recita `Switch to a different model.`2399In questo esempio un'app ha inviato il nome visualizzato `Sonnet 5`, che il messaggio ripete senza il suo spazio. L'hint finale nomina l'alias o l'ID del modello più vicino. Quando nulla è abbastanza vicino, recita `Run /model to see available models.` Invece. In una sessione che l'[app Desktop](/docs/it/desktop) avvia per te, l'hint senza corrispondenza recita `Switch to a different model.`

2359 2400 

2360Quando cambiate attraverso l'Agent SDK o un'app sull'API Anthropic, solo una stringa che non può essere un ID modello riceve questo errore, come un nome visualizzato o una stringa vuota.2401Quando cambi tramite l'Agent SDK o un'app sull'API Anthropic, solo una stringa che non può essere un ID modello ottiene questo errore, come un nome visualizzato o una stringa vuota.

2361 2402 

2362Quando scegliete un modello da un dispositivo Remote Control, Claude Code controlla la stringa localmente. Qualsiasi stringa che non sia un alias di modello, un modello che Claude Code elenca o che avete configurato, o un ID che inizia con `claude-` riceve questo errore, un ID errato come `claud-sonnet-5` incluso. Prima della v2.1.260, questo controllo non copriva le scelte di Remote Control, quindi una stringa non riconosciuta veniva applicata e falliva alla richiesta successiva.2403Quando scegli un modello da un dispositivo Remote Control, Claude Code controlla la stringa localmente. Qualsiasi stringa che non sia un alias di modello, un modello che Claude Code elenca o che hai configurato, o un ID che inizia con `claude-` ottiene questo errore, un ID digitato male come `claud-sonnet-5` incluso. Prima della v2.1.260, questo controllo non copriva le scelte di Remote Control, quindi una stringa non riconosciuta veniva applicata e falliva alla richiesta successiva.

2363 2404 

2364**Cosa fare:**2405**Cosa fare:**

2365 2406 

2366* Eseguite `/model` senza argomenti per aprire il selettore e scegliere dai modelli disponibili per il Vostro account, quindi passate l'alias o l'ID mostrato lì2407* Esegui `/model` senza argomenti per aprire il selettore e scegliere dai modelli disponibili per il tuo account, quindi passa l'alias o l'ID mostrato lì

2367* Se avete usato un alias che solo una versione più recente di Claude Code supporta, eseguite `claude update`, oppure passate l'ID completo del modello. Il server può comunque richiedere una versione minima di Claude Code per quel modello; vedete [Claude Code does not support this model](#claude-code-does-not-support-this-model).2408* Se hai usato un alias che solo una versione più recente di Claude Code supporta, esegui `claude update`, oppure passa l'ID completo del modello. Il server può comunque richiedere una versione minima di Claude Code per quel modello; vedi [Claude Code non supporta questo modello](#claude-code-does-not-support-this-model).

2368* Un modello salvato prima della v2.1.200 non viene riparato da questo controllo. Se un valore obsoleto continua a tornare, rimuovetelo dalle posizioni elencate sotto [Setting your model](/docs/it/model-config#setting-your-model).2409* Un modello salvato prima della v2.1.200 non viene riparato da questo controllo. Se un valore obsoleto continua a tornare, rimuovilo dalle posizioni elencate in [Impostazione del modello](/docs/it/model-config#setting-your-model).

2369* Su qualsiasi provider diverso dall'API Anthropic, o dietro un gateway o un `ANTHROPIC_BASE_URL` personalizzato, solo una stringa vuota riceve questo errore. Claude Code può comunque scrivere la [riga diagnostica di modello non riconosciuto](#unrecognized-model-id-on-a-request) al momento della richiesta, su ogni provider.2410* Su qualsiasi provider diverso dall'API Anthropic, o dietro un gateway o `ANTHROPIC_BASE_URL` personalizzato, solo una stringa vuota ottiene questo errore. Claude Code può comunque scrivere la [riga diagnostica del modello non riconosciuto](#unrecognized-model-id-on-a-request) al momento della richiesta, su ogni provider.

2370 2411 

2371<h3 id="model-not-found">2412<h3 id="model-not-found">

2372 Modello non trovato2413 Modello non trovato

2373</h3>2414</h3>

2374 2415 

2375Avete scelto un modello per nome e Claude Code non ha potuto confermare che esista un modello con quel nome. Quando il nome non è un [alias di modello](/docs/it/model-config#model-aliases) o un'altra ortografia che Claude Code accetta localmente, Claude Code lo verifica con una richiesta API minima, e questo errore è solitamente la risposta del Vostro endpoint API. Con `/model <name>`, un nome che non può essere un ID modello affatto, come uno contenente spazi, riceve lo stesso messaggio.2416Hai cambiato a un modello per nome e Claude Code non ha potuto confermare che esista un modello con quel nome. Quando il nome non è un [alias di modello](/docs/it/model-config#model-aliases) o un'altra ortografia che Claude Code accetta localmente, Claude Code lo verifica con una richiesta API minima, e questo errore è solitamente la risposta del tuo endpoint API. Con `/model <name>`, un nome che non può essere un ID modello affatto, come uno contenente spazi, ottiene lo stesso messaggio.

2376 2417 

2377```text theme={null}2418```text theme={null}

2378Model 'claude-opus-9' not found2419Model 'claude-opus-9' not found

2379```2420```

2380 2421 

2381Su provider con ID modello specifici del provider, il messaggio può aggiungere un suggerimento `Try '...' instead` che nomina l'ID del Vostro provider per un modello di fallback.2422Su provider con ID modello specifici del provider, il messaggio può aggiungere un suggerimento `Try '...' instead` che nomina l'ID del tuo provider per un modello di fallback.

2382 2423 

2383**Cosa fare:**2424**Cosa fare:**

2384 2425 

2385* Eseguite `/model` senza argomenti e scegliete dai modelli disponibili per il Vostro account, oppure usate un [alias di modello](/docs/it/model-config#model-aliases) come `sonnet`, che si risolve in un valore predefinito mantenuto2426* Esegui `/model` senza argomenti e scegli dai modelli disponibili per il tuo account, oppure usa un [alias di modello](/docs/it/model-config#model-aliases) come `sonnet`, che si risolve in un valore predefinito mantenuto

2386* Se avete digitato un ID completo, controllarlo rispetto al catalogo dei modelli del Vostro provider. Un modello appena lanciato può essere disponibile sull'API Anthropic prima che il Vostro provider o regione lo offra.2427* Se hai digitato un ID completo, controllalo rispetto al catalogo dei modelli del tuo provider. Un modello appena lanciato può essere disponibile sull'API Anthropic prima che il tuo provider o la tua regione lo offra.

2387* Nell'Agent SDK, `setModel()` fallisce con questo messaggio e la sessione continua a funzionare sul suo modello precedente. Nel TypeScript SDK, chiamate [`supportedModels()`](/docs/it/agent-sdk/typescript#query-object) per elencare i modelli a cui potete passare.2428* Nell'Agent SDK, `setModel()` fallisce con questo messaggio e la sessione continua a funzionare sul suo modello precedente. Nell'SDK TypeScript, chiama [`supportedModels()`](/docs/it/agent-sdk/typescript#query-object) per elencare i modelli a cui puoi passare.

2388* Prima della v2.1.265, `/model` rifiutava anche l'ortografia dell'alias `opusplan[1m]` con questo errore. Su quelle versioni, aggiornate Claude Code, oppure impostate il modello in [settings](/docs/it/model-config#setting-your-model) o con `--model` invece.2429* Prima della v2.1.265, `/model` ha anche rifiutato l'ortografia dell'alias `opusplan[1m]` con questo errore. Su quelle versioni, aggiorna Claude Code, oppure imposta il modello in [impostazioni](/docs/it/model-config#setting-your-model) o con `--model` invece.

2389 2430 

2390<h3 id="couldnt-confirm-model-with-the-api">2431<h3 id="couldnt-confirm-model-with-the-api">

2391 Impossibile confermare il modello con l'API2432 Impossibile confermare il modello con l'API

2392</h3>2433</h3>

2393 2434 

2394Avete scelto modelli attraverso il metodo [Agent SDK](/docs/it/agent-sdk/typescript) `setModel()` o un'app che esegue la CLI di Claude Code per voi, come l'[app Desktop](/docs/it/desktop), e la richiesta che conferma l'ID modello con il Vostro endpoint API non ha ricevuto risposta entro cinque secondi. La sessione mantiene il suo modello corrente.2435Hai cambiato modelli tramite il metodo [Agent SDK](/docs/it/agent-sdk/typescript) `setModel()` o un'app che esegue la CLI di Claude Code per te, come l'[app Desktop](/docs/it/desktop), e la richiesta che conferma l'ID del modello con il tuo endpoint API non ha ricevuto risposta entro cinque secondi. La sessione mantiene il suo modello attuale.

2395 2436 

2396```text theme={null}2437```text theme={null}

2397Couldn't confirm model "claude-sonnet-5" with the API. Try again, or run /model to see available models.2438Couldn't confirm model "claude-sonnet-5" with the API. Try again, or run /model to see available models.

2398```2439```

2399 2440 

2400In una sessione che l'[app Desktop](/docs/it/desktop) avvia per voi, il messaggio termina a `Try again.`2441In una sessione che l'[app Desktop](/docs/it/desktop) avvia per te, il messaggio termina a `Try again.`

2401 2442 

2402**Cosa fare:**2443**Cosa fare:**

2403 2444 

2404* Cambiate il modello di nuovo2445* Cambia di nuovo al modello

2405* Se il cambio continua a fallire, controllate che Claude Code possa raggiungere il Vostro endpoint API; vedete [Network and connection errors](#network-and-connection-errors)2446* Se il cambio continua a fallire, controlla che Claude Code possa raggiungere il tuo endpoint API; vedi [Errori di rete e connessione](#network-and-connection-errors)

2406 2447 

2407<h3 id="api-error-model-not-changed">2448<h3 id="api-error-model-not-changed">

2408 Errore API durante il controllo del modello scelto2449 Errore API durante il controllo del modello selezionato

2409</h3>2450</h3>

2410 2451 

2411Avete scelto un modello con `/model <name>`, oppure un'app connessa alla sessione ha richiesto il cambio. L'API ha rifiutato la richiesta minima che Claude Code invia per verificare il modello, per un motivo che ha no una voce propria, come un limite di velocità o un errore del server. La sessione mantiene il suo modello corrente, e il messaggio termina dicendo così:2452Hai selezionato un modello con `/model <name>`, oppure un'app connessa alla sessione ha richiesto il cambio. L'API ha rifiutato la richiesta minima che Claude Code invia per verificare il modello, per un motivo che non ha una voce propria, come un limite di velocità o un errore del server. La sessione mantiene il suo modello attuale, e il messaggio termina dicendo così:

2412 2453 

2413```text theme={null}2454```text theme={null}

2414API error: 429 <the server's explanation> · model not changed2455API error: 429 <the server's explanation> · model not changed


2418 2459 

2419**Cosa fare:**2460**Cosa fare:**

2420 2461 

2421* Agite sulla spiegazione del server; per un limite di velocità o uno stato 5xx, aspettate e scegliete il modello di nuovo2462* Agisci sulla spiegazione del server; per un limite di velocità o uno stato 5xx, attendi e seleziona di nuovo il modello

2422* I rifiuti con la loro propria dicitura sono coperti dalle voci circostanti, come [Model not found](#model-not-found) e [Model is restricted by your organization's settings](#model-is-restricted-by-your-organizations-settings)2463* I rifiuti con la loro propria dicitura sono coperti dalle voci circostanti, come [Modello non trovato](#model-not-found) e [Il modello è limitato dalle impostazioni della tua organizzazione](#model-is-restricted-by-your-organizations-settings)

2423 2464 

2424<h3 id="claude-opus-is-not-available-with-the-claude-pro-plan">2465<h3 id="claude-opus-is-not-available-with-the-claude-pro-plan">

2425 Claude Opus non è disponibile con il piano Claude Pro2466 Claude Opus non è disponibile con il piano Claude Pro

2426</h3>2467</h3>

2427 2468 

2428Il Vostro piano di abbonamento attivo non include il modello che avete selezionato.2469Il tuo piano di abbonamento attivo non include il modello che hai selezionato.

2429 2470 

2430```text theme={null}2471```text theme={null}

2431Claude Opus is not available with the Claude Pro plan. If you have updated your subscription plan recently, run /logout and /login for the plan to take effect.2472Claude Opus is not available with the Claude Pro plan. If you have updated your subscription plan recently, run /logout and /login for the plan to take effect.

2432```2473```

2433 2474 

2434In una sessione che l'app Claude Desktop avvia, il messaggio dice di `sign out and sign in again` invece di nominare i comandi.2475In una sessione che l'app Claude Desktop esegue, il messaggio dice di `sign out and sign in again` invece di nominare i comandi.

2435 2476 

2436**Cosa fare:**2477**Cosa fare:**

2437 2478 

2438* Eseguite `/model` e selezionate un modello che il Vostro piano include2479* Esegui `/model` e seleziona un modello che il tuo piano include

2439* Se avete aggiornato il Vostro piano di recente e lo vedete ancora, eseguite `/logout` quindi `/login`. Il token memorizzato riflette il Vostro piano al momento in cui avete effettuato l'accesso, quindi l'aggiornamento su claude.ai non ha effetto in una sessione esistente finché non vi autenticate di nuovo.2480* Se hai aggiornato il tuo piano di recente e vedi ancora questo, esegui `/logout` quindi `/login`. Il token memorizzato riflette il tuo piano al momento dell'accesso, quindi l'aggiornamento su claude.ai non ha effetto in una sessione esistente finché non ti autentica di nuovo.

2440* Vedete [claude.com/pricing](https://claude.com/pricing) per quali modelli ogni piano include2481* Vedi [claude.com/pricing](https://claude.com/pricing) per quali modelli ogni piano include

2441 2482 

2442<h3 id="claude-code-does-not-support-this-model">2483<h3 id="claude-code-does-not-support-this-model">

2443 Claude Code non supporta questo modello2484 Claude Code non supporta questo modello

2444</h3>2485</h3>

2445 2486 

2446L'API ha rifiutato la richiesta con un 400 perché la Vostra versione di Claude Code è inferiore a un minimo richiesto. O il modello che avete selezionato richiede una versione più recente, che il server controlla per modello, oppure la politica della Vostra organizzazione ne richiede una. Il 400 porta il codice di errore `claude_code_version_too_old`, e il messaggio dice quale minimo si applica.2487L'API ha rifiutato la richiesta con un 400 perché la tua versione di Claude Code è al di sotto di un minimo richiesto. O il modello che hai selezionato richiede una versione più recente, che il server controlla per modello, o la politica della tua organizzazione ne richiede una. Il 400 porta il codice di errore `claude_code_version_too_old`, e il messaggio dice quale minimo si applica.

2447 2488 

2448```text theme={null}2489```text theme={null}

2449API Error: 400 Claude Code 2.1.219 does not support this model; version 2.1.255 or newer is required. Run 'claude update', or update the Claude desktop app, then try again.2490API Error: 400 Claude Code 2.1.219 does not support this model; version 2.1.255 or newer is required. Run 'claude update', or update the Claude desktop app, then try again.


2455API Error: 400 Claude Code 2.1.240 is older than the minimum version required by your organization's policy. Run 'claude update', or update the Claude desktop app, to continue.2496API Error: 400 Claude Code 2.1.240 is older than the minimum version required by your organization's policy. Run 'claude update', or update the Claude desktop app, to continue.

2456```2497```

2457 2498 

2458La versione che l'API controlla è quella segnalata dal binario Claude Code che ha effettuato la richiesta.2499La versione che l'API controlla è quella segnalata dal binario di Claude Code che ha effettuato la richiesta.

2459 2500 

2460**Cosa fare:**2501**Cosa fare:**

2461 2502 

2462Aggiornate quel binario, quindi avviate una nuova sessione. Da dove proviene il binario decide come, tranne in un [ambiente auto-ospitato](/docs/it/self-hosted-environments-deploy#pin-the-version):2503Aggiorna quel binario, quindi avvia una nuova sessione. Da dove proviene il binario decide come, tranne in un [ambiente auto-ospitato](/docs/it/self-hosted-environments-deploy#pin-the-version):

2463 2504 

2464| Il binario che ha effettuato la richiesta | Come aggiornarlo |2505| Il binario che ha effettuato la richiesta | Come aggiornarlo |

2465| :- | :- |2506| :- | :- |

2466| Un Claude Code che avete installato | Eseguite `claude update` |2507| Un Claude Code che hai installato | Esegui `claude update` |

2467| L'app Claude desktop | Aggiornate l'app |2508| L'app Claude desktop | Aggiorna l'app |

2468| Il binario che l'[estensione VS Code](/docs/it/vs-code) raggruppa | Aggiornate l'estensione |2509| Il binario che l'[estensione VS Code](/docs/it/vs-code) raggruppa | Aggiorna l'estensione |

2469| Il binario che un pacchetto Agent SDK raggruppa | [Aggiornate il pacchetto SDK](/docs/it/agent-sdk/hosting#runtime-dependencies), quindi riavviate la Vostra applicazione. In un [eseguibile a file singolo compilato](/docs/it/agent-sdk/typescript#compile-to-a-single-executable), ricostruitelo |2510| Il binario che un pacchetto Agent SDK raggruppa | [Aggiorna il pacchetto SDK](/docs/it/agent-sdk/hosting#runtime-dependencies), quindi riavvia la tua applicazione. In un [eseguibile a file singolo compilato](/docs/it/agent-sdk/typescript#compile-to-a-single-executable), ricostruiscilo |

2470 2511 

2471* Per la dicitura per modello, potete continuare a lavorare nella sessione corrente passando a un altro modello: eseguite `/model` nella CLI, chiamate [`setModel()`](/docs/it/agent-sdk/typescript#query-object) sull'oggetto `Query` del TypeScript SDK in modalità di input in streaming, oppure chiamate [`set_model()`](/docs/it/agent-sdk/python#claudesdkclient) su `ClaudeSDKClient` del Python SDK2512* Per la dicitura per modello, puoi continuare a lavorare nella sessione attuale passando a un altro modello: esegui `/model` nella CLI, chiama [`setModel()`](/docs/it/agent-sdk/typescript#query-object) sull'oggetto `Query` dell'SDK TypeScript in modalità di input in streaming, o chiama [`set_model()`](/docs/it/agent-sdk/python#claudesdkclient) su `ClaudeSDKClient` dell'SDK Python

2472* Per la dicitura della politica organizzativa, aggiornate prima di continuare2513* Per la dicitura della politica organizzativa, aggiorna prima di continuare

2473 2514 

2474<h3 id="model-is-restricted-by-your-organizations-settings">2515<h3 id="model-is-restricted-by-your-organizations-settings">

2475 Il modello è limitato dalle impostazioni della Vostra organizzazione2516 Il modello è limitato dalle impostazioni della tua organizzazione

2476</h3>2517</h3>

2477 2518 

2478L'amministratore della Vostra organizzazione ha disabilitato questo modello nella console di amministrazione claude.ai, oppure le impostazioni gestite lo escludono attraverso un elenco di consentiti [`availableModels`](/docs/it/model-config#restrict-model-selection) o un elenco [`deniedModels`](/docs/it/model-config#block-specific-models-or-versions). L'avviso appare all'avvio quando `--model`, `ANTHROPIC_MODEL` o l'impostazione `model` ha nominato il modello limitato, e nomina il modello che la sessione usa invece. Se le impostazioni gestite non lasciano alcun modello consentito per la sessione da usare, vedete [Managed settings block the default model](#managed-settings-block-the-default-model). L'avviso di sostituzione può anche apparire a metà sessione dopo che un amministratore disabilita il modello su cui una sessione è in esecuzione nella console di amministrazione claude.ai.2519L'amministratore della tua organizzazione ha disabilitato questo modello nella console di amministrazione claude.ai, oppure le impostazioni gestite lo escludono tramite un elenco di autorizzazione [`availableModels`](/docs/it/model-config#restrict-model-selection) o un elenco [`deniedModels`](/docs/it/model-config#block-specific-models-or-versions). L'avviso appare all'avvio quando `--model`, `ANTHROPIC_MODEL`, o l'impostazione `model` ha nominato il modello limitato, e nomina il modello che la sessione usa invece. Se le impostazioni gestite non lasciano alcun modello consentito per la sessione da usare, vedi [Le impostazioni gestite bloccano il modello predefinito](#managed-settings-block-the-default-model). L'avviso di sostituzione può anche apparire a metà sessione dopo che un amministratore disabilita il modello su cui una sessione è in esecuzione nella console di amministrazione claude.ai.

2479 2520 

2480```text theme={null}2521```text theme={null}

2481Model "claude-opus-4-8" is restricted by your organization's settings. Using claude-sonnet-4-6 instead.2522Model "claude-opus-4-8" is restricted by your organization's settings. Using claude-sonnet-4-6 instead.

2482```2523```

2483 2524 

2484Digitare `/model <name>` per un modello limitato viene rifiutato e la sessione mantiene il suo modello corrente. Per un modello disabilitato nella console di amministrazione, il rifiuto recita `Model '<name>' is restricted by your organization's settings. Run /model to choose a different model.` Per un modello che le impostazioni gestite escludono, recita `Model '<name>' is not available. Your organization restricts model selection.`2525Digitare `/model <name>` per un modello limitato viene rifiutato e la sessione mantiene il suo modello attuale. Per un modello disabilitato nella console di amministrazione, il rifiuto recita `Model '<name>' is restricted by your organization's settings. Run /model to choose a different model.` Per un modello che le impostazioni gestite escludono, recita `Model '<name>' is not available. Your organization restricts model selection.`

2485 2526 

2486Un avviso con prefisso un nome di agente, skill o comando significa che la restrizione si è applicata al [modello richiesto di quel subagent](/docs/it/sub-agents#choose-a-model): il subagent viene eseguito sul modello sostituito e il modello della Vostra sessione rimane invariato. Prima della v2.1.223, Claude Code mostrava l'avviso solo per i subagent lanciati con lo strumento Agent.2527Un avviso con prefisso un agente, abilità o nome di comando significa che la restrizione si è applicata al [modello richiesto di quel subagente](/docs/it/sub-agents#choose-a-model): il subagente viene eseguito sul modello sostituito e il modello della tua sessione rimane invariato. Prima della v2.1.223, Claude Code mostrava l'avviso solo per i subagenti lanciati con lo strumento Agent.

2487 2528 

2488Claude Code tratta un alias di famiglia di modelli, uno di `opus`, `sonnet`, `haiku` o `fable`, come una richiesta per quella famiglia piuttosto che per la sua versione più recente. Sull'API Anthropic e su [Claude Platform on AWS](/docs/it/claude-platform-on-aws), un alias di famiglia limitato si risolve nella versione più recente della famiglia che le impostazioni gestite della Vostra organizzazione consentono, e l'avviso di sostituzione nomina quella versione. Claude Code rifiuta `/model <alias>` solo quando ogni versione della famiglia è limitata. Prima della v2.1.205, un alias di famiglia veniva sostituito o rifiutato in base alla sua versione più recente sola, anche quando una versione più vecchia della stessa famiglia era consentita.2529Claude Code tratta un alias di famiglia di modelli, uno di `opus`, `sonnet`, `haiku`, o `fable`, come una richiesta per quella famiglia piuttosto che per la sua versione più recente. Sull'API Anthropic e su [Claude Platform on AWS](/docs/it/claude-platform-on-aws), un alias di famiglia limitato si risolve nella versione più recente della famiglia che le impostazioni della tua organizzazione consentono, e l'avviso di sostituzione nomina quella versione. Claude Code rifiuta `/model <alias>` solo quando ogni versione della famiglia è limitata. Prima della v2.1.205, un alias di famiglia veniva sostituito o rifiutato in base alla sua versione più recente sola, anche quando una versione precedente della stessa famiglia era consentita.

2489 2530 

2490**Cosa fare:**2531**Cosa fare:**

2491 2532 

2492* Eseguite `/model` per scegliere dai modelli che la Vostra organizzazione consente. I modelli limitati sono nascosti dal selettore.2533* Esegui `/model` per scegliere dai modelli che la tua organizzazione consente. I modelli limitati sono nascosti dal selettore.

2493* Se il modello limitato è stato impostato in `--model`, `ANTHROPIC_MODEL`, il campo `model` di un file di impostazioni, o il frontmatter `model` di un [subagent](/docs/it/sub-agents#choose-a-model), skill o comando, rimuovete o aggiornate quel valore in modo che l'avviso non si ripeta2534* Se il modello limitato è stato impostato in `--model`, `ANTHROPIC_MODEL`, il campo `model` di un file di impostazioni, o il frontmatter `model` di un [subagente](/docs/it/sub-agents#choose-a-model), abilità o comando, rimuovi o aggiorna quel valore in modo che l'avviso non si ripeta

2494* Se avete bisogno di accesso al modello limitato, chiedete all'amministratore della Vostra organizzazione di abilitarlo. Vedete [Organization model restrictions](/docs/it/model-config#organization-model-restrictions).2535* Se hai bisogno di accesso al modello limitato, chiedi all'amministratore della tua organizzazione di abilitarlo. Vedi [Restrizioni del modello dell'organizzazione](/docs/it/model-config#organization-model-restrictions).

2536 

2537<h3 id="cant-switch-to-the-default-model">

2538 Impossibile passare al modello predefinito

2539</h3>

2540 

2541Hai selezionato il modello Predefinito, ad esempio selezionando la riga Predefinito nel selettore `/model` o digitando `/model default`. Claude Code ha rifiutato il cambio, quindi la sessione mantiene il suo modello attuale.

2542 

2543```text theme={null}

2544Can't switch to the default model: your organization's managed settings block it (claude-opus-4-6) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".

2545```

2546 

2547La dicitura dopo i due punti nomina ciò che ha bloccato il cambio:

2548 

2549* **`your organization's managed settings block it ... in "deniedModels"`**: un elenco di negazione gestito blocca il modello a cui l'opzione Predefinito si risolve

2550* **`your organization allows only the models listed in "availableModels"`**: un elenco di autorizzazione [`availableModels`](/docs/it/model-config#restrict-model-selection) gestito con [`availableModelsMatch`](/docs/it/settings-reference#availablemodelsmatch) impostato su `"exact"` lascia fuori il modello a cui l'opzione Predefinito si risolve

2551* **`Claude Code couldn't read your organization's managed settings to check which models they allow`**: le [impostazioni gestite](/docs/it/managed-settings) non potevano essere lette, e Claude Code rifiuta il cambio piuttosto che applicarlo senza controllo

2552 

2553**Cosa fare:**

2554 

2555* Per le diciture [`deniedModels`](/docs/it/settings-reference#deniedmodels) e `availableModels`, esegui `/model` e seleziona un modello che la tua organizzazione consente per nome

2556* Chiedi al tuo amministratore di aggiornare l'impostazione gestita che il messaggio nomina

2557* Per la dicitura `couldn't read`, riavvia Claude Code; se continua a succedere, chiedi al tuo amministratore di controllare le impostazioni gestite

2558 

2559Se una sessione invece non riesce ad avviarsi con un messaggio `Claude Code can't start` in queste impostazioni gestite, vedi [Le impostazioni gestite bloccano il modello predefinito](#managed-settings-block-the-default-model).

2495 2560 

2496<h3 id="model-switch-was-blocked-by-a-premodelswitch-hook">2561<h3 id="model-switch-was-blocked-by-a-premodelswitch-hook">

2497 Il cambio di modello è stato bloccato da un hook PreModelSwitch2562 Il cambio di modello è stato bloccato da un hook PreModelSwitch

2498</h3>2563</h3>

2499 2564 

2500Un [hook PreModelSwitch](/docs/it/hooks#premodelswitch) non ha approvato il cambio di modello che voi o un client avete richiesto, quindi la sessione mantiene il suo modello corrente. Quando il cambio è venuto da un host [Agent SDK](/docs/it/agent-sdk/overview) o [Remote Control](/docs/it/remote-control) piuttosto che da un comando che avete digitato, il messaggio recita `Model switch blocked by a PreModelSwitch hook` senza nominare il modello di destinazione.2565Un [hook PreModelSwitch](/docs/it/hooks#premodelswitch) non ha approvato il cambio di modello che tu o un client hai richiesto, quindi la sessione mantiene il suo modello attuale. Quando il cambio è venuto da un host [Agent SDK](/docs/it/agent-sdk/overview) o [Remote Control](/docs/it/remote-control) piuttosto che da un comando che hai digitato, il messaggio recita `Model switch blocked by a PreModelSwitch hook` senza nominare il modello di destinazione.

2501 2566 

2502```text theme={null}2567```text theme={null}

2503Model switch to Opus 4.6 was blocked by a PreModelSwitch hook: Opus 4.6 is retired for this project. Use a newer model.2568Model switch to Opus 4.6 was blocked by a PreModelSwitch hook: Opus 4.6 is retired for this project. Use a newer model.


2505 2570 

2506La ragione dopo i due punti dice cosa ha rifiutato il cambio:2571La ragione dopo i due punti dice cosa ha rifiutato il cambio:

2507 2572 

2508* **Una ragione che un hook ha scritto**: un hook PreModelSwitch ha fornito quella ragione quando ha [negato il cambio o chiesto conferma](/docs/it/hooks#premodelswitch-decision-control). Affrontate ciò che chiede, oppure scegliete un modello che i Vostri hook consentono.2573* **Una ragione che un hook ha scritto**: un hook PreModelSwitch ha fornito quella ragione quando ha [negato il cambio o chiesto conferma](/docs/it/hooks#premodelswitch-decision-control). Affronta ciò che chiede, o seleziona un modello che i tuoi hook consentono.

2509* **`PreModelSwitch hook <name> did not respond before its timeout`**: un hook che non risponde prima del suo [timeout](/docs/it/hooks#timeouts) blocca il cambio. Correggete il comando sospeso o aumentate il `timeout` di quell'hook, quindi cambiate di nuovo.2574* **`PreModelSwitch hook <name> did not respond before its timeout`**: un hook che non risponde prima del suo [timeout](/docs/it/hooks#timeouts) blocca il cambio. Correggi il comando sospeso o aumenta il `timeout` di quell'hook, quindi cambia di nuovo.

2510* **`confirmation required, and this session cannot ask`**: un hook ha risposto `ask` senza una ragione, e una richiesta di controllo non ha modo di mostrare il prompt di conferma. Un comando `/model` in un'esecuzione [`-p`](/docs/it/headless) segnala la stessa condizione con `(run /model interactively to confirm)` dopo la ragione. Effettuate il cambio da una sessione interattiva, oppure cambiate la decisione dell'hook per questo modello.2575* **`confirmation required, and this session cannot ask`**: un hook ha risposto `ask` senza una ragione, e una richiesta di controllo non ha modo di mostrare il prompt di conferma. Un comando `/model` in un'esecuzione [`-p`](/docs/it/headless) segnala la stessa condizione con `(run /model interactively to confirm)` dopo la ragione. Effettua il cambio da una sessione interattiva, o cambia la decisione dell'hook per questo modello.

2511* **`so organization-managed PreModelSwitch hooks could not be checked`**: Claude Code non ha potuto dire quali hook PreModelSwitch i [plugin gestiti](/docs/it/settings-reference#enabledplugins) della Vostra organizzazione forniscono, ad esempio perché un plugin gestito non ha caricato. Uno di questi hook potrebbe bloccare il cambio, quindi Claude Code rifiuta piuttosto che applicare il cambio non controllato. L'inizio della ragione nomina cosa ha fallito. Claude Code ricontrolla ad ogni tentativo di cambio, quindi un fallimento che da allora si è chiarito smette di bloccare; se continua a fallire, eseguite `claude --debug` e cambiate di nuovo per catturare i dettagli, quindi correggete il plugin o chiedete al Vostro admin di correggerlo.2576* **`so organization-managed PreModelSwitch hooks could not be checked`**: Claude Code non ha potuto dire quali hook PreModelSwitch i [plugin gestiti](/docs/it/settings-reference#enabledplugins) della tua organizzazione forniscono, ad esempio perché un plugin gestito non è riuscito a caricarsi. Uno di quegli hook potrebbe bloccare il cambio, quindi Claude Code rifiuta piuttosto che applicare il cambio senza controllo. L'inizio della ragione nomina cosa ha fallito. Claude Code ricontrolla ad ogni tentativo di cambio, quindi un fallimento che da allora si è chiarito smette di bloccare; se continua a fallire, esegui `claude --debug` e cambia di nuovo per catturare i dettagli, quindi correggi il plugin o chiedi al tuo amministratore di correggerlo.

2512* **`a PreModelSwitch hook failed before answering`** o **`PreModelSwitch hooks were cancelled (the control stream closed) before answering`**: l'esecuzione dell'hook è terminata senza un verdetto, e Claude Code non lo tratta come approvazione. Eseguite `claude --debug` per vedere cosa ha fallito, quindi cambiate di nuovo.2577* **`a PreModelSwitch hook failed before answering`** o **`PreModelSwitch hooks were cancelled (the control stream closed) before answering`**: l'esecuzione dell'hook è terminata senza un verdetto, e Claude Code non lo tratta come approvazione. Esegui `claude --debug` per vedere cosa ha fallito, quindi cambia di nuovo.

2513 2578 

2514Prima della v2.1.260, il rifiuto del plugin gestito recitava `plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log`. Claude Code ha ritentato il caricamento del plugin una volta e poi ha rifiutato i cambi successivi nella sessione, anche quando la Vostra organizzazione non gestiva alcun plugin. Riavviate la sessione per eseguire il caricamento del plugin di nuovo su quelle versioni.2579Prima della v2.1.260, il rifiuto del plugin gestito recitava `plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log`. Claude Code ha ritentato il caricamento del plugin una volta e poi ha rifiutato i cambi successivi nella sessione, anche quando la tua organizzazione non ha gestito alcun plugin. Riavvia la sessione per eseguire di nuovo il caricamento del plugin su quelle versioni.

2515 2580 

2516<h3 id="couldnt-save-it-as-your-default">2581<h3 id="couldnt-save-it-as-your-default">

2517 Non è stato possibile salvarlo come predefinito2582 Impossibile salvarlo come predefinito

2518</h3>2583</h3>

2519 2584 

2520Avete scelto un modello da salvare come predefinito, ad esempio con `/model <name>` o `Enter` nel selettore `/model`, e Claude Code non ha potuto scrivere la scelta nel Vostro file di impostazioni utente, `~/.claude/settings.json`. Il cambio stesso si è applicato, quindi la sessione corrente viene eseguita sul modello che avete scelto, ma il Vostro predefinito rimane invariato e la sessione successiva inizia sul valore precedente.2585Hai selezionato un modello da salvare come predefinito, ad esempio con `/model <name>` o `Enter` nel selettore `/model`, e Claude Code non ha potuto scrivere la selezione nel file delle impostazioni utente, `~/.claude/settings.json`. Il cambio stesso è stato applicato, quindi la sessione attuale viene eseguita sul modello che hai selezionato, ma il tuo predefinito rimane invariato e la sessione successiva inizia sul valore precedente.

2521 2586 

2522```text theme={null}2587```text theme={null}

2523Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS)2588Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS)


2525 2590 

2526La ragione dopo il percorso del file dice cosa ha fallito:2591La ragione dopo il percorso del file dice cosa ha fallito:

2527 2592 

2528* **`can't be written (<code>)`**: la scrittura ha fallito con il codice di errore del sistema operativo tra parentesi, come `EROFS` quando il file, o il file a cui si collega, si trova su un filesystem che rifiuta le scritture. Rendete il file scrivibile e cambiate di nuovo. Se un altro strumento genera il file, impostate la chiave `model` in quello strumento; vedete [A change you made in Claude Code is lost in new sessions](/docs/it/settings#a-change-you-made-in-claude-code-is-lost-in-new-sessions).2593* **`can't be written (<code>)`**: la scrittura ha fallito con il codice di errore del sistema operativo tra parentesi, come `EROFS` quando il file, o il file a cui si collega, si trova su un filesystem che rifiuta le scritture. Rendi il file scrivibile e cambia di nuovo. Se un altro strumento genera il file, imposta la chiave `model` in quello strumento; vedi [Una modifica che hai fatto in Claude Code viene persa nelle nuove sessioni](/docs/it/settings#a-change-you-made-in-claude-code-is-lost-in-new-sessions).

2529* **`isn't valid JSON`**: il file su disco non analizza, e Claude Code lo lascia intatto piuttosto che sovrascrivere il contenuto che non può leggere di nuovo. Correggete l'errore di sintassi, quindi cambiate di nuovo; vedete [Fix a broken settings file](/docs/it/settings#fix-a-broken-settings-file).2594* **`isn't valid JSON`**: il file su disco non si analizza, e Claude Code lo lascia intatto piuttosto che sovrascrivere il contenuto che non può leggere di nuovo. Correggi l'errore di sintassi, quindi cambia di nuovo; vedi [Correggi un file di impostazioni rotto](/docs/it/settings#fix-a-broken-settings-file).

2530 2595 

2531Un avviso che termina `couldn't confirm it was saved as your default (~/.claude/settings.json is still being written)` significa che la scrittura non era terminata dopo tre secondi. Continua in background, quindi il predefinito potrebbe comunque essere salvato; controllate quale modello la Vostra sessione successiva inizia, oppure eseguite `/model <name>` di nuovo.2596Un avviso che termina `couldn't confirm it was saved as your default (~/.claude/settings.json is still being written)` significa che la scrittura non era terminata dopo tre secondi. Continua in background, quindi il predefinito potrebbe comunque essere salvato; controlla quale modello la tua sessione successiva inizia, oppure esegui `/model <name>` di nuovo.

2532 2597 

2533Prima della v2.1.265, l'avviso diceva che il modello era `saved as your default for new sessions` anche quando la scrittura falliva.2598Prima della v2.1.265, l'avviso diceva che il modello era `saved as your default for new sessions` anche quando la scrittura ha fallito.

2534 2599 

2535<h3 id="thinking-type-enabled-is-not-supported-for-this-model">2600<h3 id="thinking-type-enabled-is-not-supported-for-this-model">

2536 thinking.type.enabled non è supportato per questo modello2601 thinking.type.enabled non è supportato per questo modello

2537</h3>2602</h3>

2538 2603 

2539La Vostra versione di Claude Code è più vecchia del minimo per il modello selezionato. La CLI ha inviato una configurazione di thinking che il modello non accetta più.2604La tua versione di Claude Code è più vecchia del minimo per il modello selezionato. La CLI ha inviato una configurazione di thinking che il modello non accetta più.

2540 2605 

2541```text theme={null}2606```text theme={null}

2542API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.2607API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.


2544 2609 

2545**Cosa fare:**2610**Cosa fare:**

2546 2611 

2547* Eseguite `claude update` e riavviate Claude Code. Opus 4.7 ha bisogno della v2.1.111 o successiva. Opus 4.8 ha bisogno della v2.1.154 o successiva. Sonnet 5 ha bisogno della v2.1.197 o successiva. Opus 5 ha bisogno della v2.1.219 o successiva. Opus 5.5 ha bisogno della v2.1.280 o successiva. Sonnet 5.5 ha bisogno della v2.1.284 o successiva2612* Esegui `claude update` e riavvia Claude Code. Opus 4.7 ha bisogno della v2.1.111 o successiva. Opus 4.8 ha bisogno della v2.1.154 o successiva. Sonnet 5 ha bisogno della v2.1.197 o successiva. Opus 5 ha bisogno della v2.1.219 o successiva. Opus 5.5 ha bisogno della v2.1.280 o successiva. Sonnet 5.5 ha bisogno della v2.1.284 o successiva

2548* Se non potete aggiornare, eseguite `/model` e selezionate Opus 4.6 o Sonnet 4.6 invece2613* Se non puoi aggiornare, esegui `/model` e seleziona Opus 4.6 o Sonnet 4.6

2549* Se lo incontrate nell'[Agent SDK](/docs/it/agent-sdk/overview), aggiornate il pacchetto SDK. Opus 4.8 ha bisogno di TypeScript SDK v0.3.154 o successiva e Python SDK v0.2.88 o successiva. Sonnet 5 ha bisogno di TypeScript SDK v0.3.197 o successiva. Opus 5 ha bisogno di TypeScript SDK v0.3.219 o successiva. Opus 5.5 ha bisogno di TypeScript SDK v0.3.280 o successiva. Sonnet 5.5 ha bisogno di TypeScript SDK v0.3.284 o successiva2614* Se colpisci questo nell'[Agent SDK](/docs/it/agent-sdk/overview), aggiorna il pacchetto SDK. Opus 4.8 ha bisogno di TypeScript SDK v0.3.154 o successiva e Python SDK v0.2.88 o successiva. Sonnet 5 ha bisogno di TypeScript SDK v0.3.197 o successiva. Opus 5 ha bisogno di TypeScript SDK v0.3.219 o successiva. Opus 5.5 ha bisogno di TypeScript SDK v0.3.280 o successiva. Sonnet 5.5 ha bisogno di TypeScript SDK v0.3.284 o successiva

2550 2615 

2551<h3 id="effort-isnt-available-with-thinking-turned-off">2616<h3 id="effort-isnt-available-with-thinking-turned-off">

2552 Effort non è disponibile con thinking disattivato2617 L'effort non è disponibile con il thinking disattivato

2553</h3>2618</h3>

2554 2619 

2555Avete disattivato il [thinking esteso](/docs/it/model-config#extended-thinking) e avete eseguito a un [livello di effort](/docs/it/model-config#adjust-effort-level) superiore a `high`. Il modello non accetta quella combinazione, quindi l'API ha rifiutato la richiesta.2620Hai disattivato il [thinking esteso](/docs/it/model-config#extended-thinking) e hai eseguito a un [livello di effort](/docs/it/model-config#adjust-effort-level) superiore a `high`. Il modello non accetta quella combinazione, quindi l'API ha rifiutato la richiesta.

2556 2621 

2557```text theme={null}2622```text theme={null}

2558API Error: Effort 'xhigh' isn't available with thinking turned off on this model · run /effort high to continue, or turn thinking back on (unset MAX_THINKING_TOKENS=0)2623API Error: Effort 'xhigh' isn't available with thinking turned off on this model · run /effort high to continue, or turn thinking back on (unset MAX_THINKING_TOKENS=0)

2559```2624```

2560 2625 

2561L'hint dopo il `·` varia per sessione: in una sessione non interattiva recita `use --effort high (or the effortLevel setting)`, e in una sessione che l'app Claude Desktop avvia recita `you can lower effort to High`.2626L'hint dopo il `·` varia in base alla sessione: in una sessione non interattiva recita `use --effort high (or the effortLevel setting)`, e in una sessione che l'app Claude Desktop esegue recita `you can lower effort to High`.

2562 2627 

2563**Cosa fare:**2628**Cosa fare:**

2564 2629 

2565* [Abbassate il livello di effort](/docs/it/model-config#set-the-effort-level) a `high` o inferiore.2630* [Abbassa il livello di effort](/docs/it/model-config#set-the-effort-level) a `high` o inferiore.

2566* Riattivate il thinking, ad esempio annullando [`MAX_THINKING_TOKENS`](/docs/it/env-vars) o rimuovendo [`"alwaysThinkingEnabled": false`](/docs/it/settings-reference#alwaysthinkingenabled) dalle Vostre impostazioni.2631* Attiva il thinking di nuovo, ad esempio annullando [`MAX_THINKING_TOKENS`](/docs/it/env-vars) o rimuovendo [`"alwaysThinkingEnabled": false`](/docs/it/settings-reference#alwaysthinkingenabled) dalle tue impostazioni.

2567 2632 

2568Prima della v2.1.242, Claude Code mostrava il messaggio proprio dell'API: `API Error: 400 output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking.` Prima della v2.1.251, Claude Code inviava la richiesta al livello di effort che avete impostato, quindi Opus 5 rifiutava ogni richiesta superiore a `high` con thinking disattivato. Claude Code ora invia effort `high` invece ai modelli che sa rifiutano la combinazione, come Opus 5.2633Prima della v2.1.242, Claude Code mostrava il messaggio proprio dell'API: `API Error: 400 output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking.` Prima della v2.1.251, Claude Code inviava la richiesta al livello di effort che hai impostato, quindi Opus 5 rifiutava ogni richiesta superiore a `high` con il thinking disattivato. Claude Code ora invia effort `high` ai modelli che sa rifiutano la combinazione, come Opus 5.

2569 2634 

2570<h3 id="thinking-budget-exceeds-output-limit">2635<h3 id="thinking-budget-exceeds-output-limit">

2571 Il budget di thinking supera il limite di output2636 Il budget di thinking supera il limite di output


2579 2644 

2580**Cosa fare:**2645**Cosa fare:**

2581 2646 

2582* Abbassate `MAX_THINKING_TOKENS`, oppure aumentate [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/docs/it/env-vars) sopra il budget di thinking2647* Aumenta [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/docs/it/env-vars) al di sopra del budget di thinking

2583* Vedete [Extended thinking](/docs/it/model-config#extended-thinking) per come il budget interagisce con la lunghezza di output2648* Vedi [Extended thinking](/docs/it/model-config#extended-thinking) per come il budget interagisce con la lunghezza dell'output

2584 2649 

2585<h3 id="tool-use-or-thinking-block-mismatch">2650<h3 id="tool-use-or-thinking-block-mismatch">

2586 Mancata corrispondenza di blocco di tool use o thinking2651 Mancata corrispondenza di blocco tool use o thinking

2587</h3>2652</h3>

2588 2653 

2589La cronologia della conversazione ha raggiunto l'API in uno stato incoerente.2654La cronologia della conversazione ha raggiunto l'API in uno stato incoerente.


2600 2665 

2601**Cosa fare:**2666**Cosa fare:**

2602 2667 

2603* Se state usando Opus 4.7 o Opus 4.8, eseguite `claude update` prima. Le versioni precedenti alla v2.1.156 possono attivare questo errore durante il normale uso di strumenti, e `/rewind` non lo cancella.2668* Se stai usando Opus 4.7 o Opus 4.8, esegui prima `claude update`. Le versioni precedenti alla v2.1.156 possono attivare questo errore durante il normale uso dello strumento, e `/rewind` non lo cancella.

2604* Eseguite `/rewind`, oppure premete Esc due volte, per tornare indietro a un checkpoint prima del turno corrotto e continuare da lì. Vedete [Checkpointing](/docs/it/checkpointing) per come i checkpoint vengono creati e ripristinati.2669* Esegui `/rewind`, o premi Esc due volte, per tornare indietro a un checkpoint prima del turno corrotto e continua da lì. Vedi [Checkpointing](/docs/it/checkpointing) per come i checkpoint vengono creati e ripristinati.

2605 2670 

2606<h3 id="invalid-data-in-redacted-thinking-block">2671<h3 id="invalid-data-in-redacted-thinking-block">

2607 Dati non validi nel blocco redacted\_thinking2672 Dati non validi nel blocco redacted\_thinking


2617 2682 

2618**Cosa fare:**2683**Cosa fare:**

2619 2684 

2620* Se siete sulla v2.1.281 o precedente e ogni turno fallisce con questo errore, eseguite `claude update` e riprendete la sessione2685* Se sei sulla v2.1.281 o precedente e ogni turno fallisce con questo errore, esegui `claude update` e riprendi la sessione

2621* Se l'errore persiste, eseguite `/clear` per avviare una conversazione che non porta il blocco2686* Se l'errore persiste, esegui `/clear` per avviare una conversazione che non porta il blocco

2622 2687 

2623<h3 id="unsupported-tool-content-removed">2688<h3 id="unsupported-tool-content-removed">

2624 Contenuto di strumento non supportato rimosso2689 Contenuto dello strumento non supportato rimosso

2625</h3>2690</h3>

2626 2691 

2627Quando Claude Code si connette direttamente all'API Anthropic e carica o visualizza un'anteprima di una sessione salvata, rimuove il contenuto dello strumento che l'API Anthropic non accetta e lascia questa riga dove il contenuto rimosso si trovava tra due blocchi di thinking:2692Quando Claude Code si connette direttamente all'API Anthropic e carica o visualizza un'anteprima di una sessione salvata, rimuove il contenuto dello strumento che l'API Anthropic non accetta e lascia questa riga dove il contenuto rimosso si trovava tra due blocchi di thinking:


2630[Unsupported tool content removed]2695[Unsupported tool content removed]

2631```2696```

2632 2697 

2633Tale contenuto raggiunge un file di sessione quando qualcosa di diverso dall'API Anthropic risponde nel formato dell'API, tipicamente un proxy di terze parti impostato attraverso [`ANTHROPIC_BASE_URL`](/docs/it/env-vars) che traduce le chiamate di strumento di un altro provider. Claude Code lo rimuove solo quando la sessione si connette direttamente all'API Anthropic, e carica la cronologia salvata come è quando la sessione viene eseguita attraverso un proxy o su un altro provider. Prima della v2.1.246, Claude Code inviava il tool use e il suo risultato di nuovo all'API, e ogni turno della sessione ripresa falliva con un errore 400 come `messages.1.content.0.server_tool_use.name: Input should be 'web_search', 'web_fetch', ...`.2698Tale contenuto raggiunge un file di sessione quando qualcosa di diverso dall'API Anthropic ha risposto nel formato dell'API, tipicamente un proxy di terze parti impostato tramite [`ANTHROPIC_BASE_URL`](/docs/it/env-vars) che traduce le chiamate di strumento di un altro provider. Claude Code lo rimuove solo quando la sessione si connette direttamente all'API Anthropic, e carica la cronologia salvata come è quando la sessione viene eseguita tramite un proxy o su un altro provider. Prima della v2.1.246, Claude Code inviava l'uso dello strumento e il suo risultato di nuovo all'API, e ogni turno della sessione ripresa falliva con un errore 400 come `messages.1.content.0.server_tool_use.name: Input should be 'web_search', 'web_fetch', ...`.

2634 2699 

2635**Cosa fare:**2700**Cosa fare:**

2636 2701 

2637* Nessuna azione necessaria quando vedete la riga segnaposto. La sessione continua senza il contenuto rimosso.2702* Nessuno necessario quando vedi la riga segnaposto. La sessione continua senza il contenuto rimosso.

2638* Se ogni turno di una sessione ripresa fallisce con l'errore 400 invece, eseguite `claude update` e riprendete la sessione di nuovo. Le versioni precedenti alla v2.1.246 non rimuovono il contenuto.2703* Se ogni turno di una sessione ripresa fallisce con l'errore 400, esegui `claude update` e riprendi la sessione di nuovo. Le versioni precedenti alla v2.1.246 non rimuovono il contenuto.

2639 2704 

2640<h3 id="role-system-must-precede-an-assistant-message">2705<h3 id="role-system-must-precede-an-assistant-message">

2641 role 'system' deve precedere un messaggio 'assistant'2706 Il ruolo 'system' deve precedere un messaggio 'assistant'

2642</h3>2707</h3>

2643 2708 

2644L'API ha rifiutato la richiesta con un 400 perché un messaggio di sistema si trova in una posizione nella conversazione che non accetta:2709L'API ha rifiutato la richiesta con un 400 perché un messaggio di sistema si trova in una posizione nella conversazione che non accetta:


2647API Error: 400 messages.6: role 'system' must precede an 'assistant' message or end the array; ...2712API Error: 400 messages.6: role 'system' must precede an 'assistant' message or end the array; ...

2648```2713```

2649 2714 

2650Claude Code invia parte del suo testo di promemoria e allegato come messaggi di sistema all'interno della conversazione. Quando l'API rifiuta la posizione di uno, Claude Code ritenta la richiesta una volta con quel testo inviato come messaggi utente ordinari. Le diciture di posizionamento fratello dell'API, come `use the top-level 'system' parameter for the initial system prompt`, ricevono lo stesso recupero.2715Claude Code invia parte del suo testo di promemoria e allegato come messaggi di sistema all'interno della conversazione. Quando l'API rifiuta la posizione di uno, Claude Code ritenta la richiesta una volta con quel testo inviato come messaggi utente ordinari. Le diciture di posizionamento fratello dell'API, come `use the top-level 'system' parameter for the initial system prompt`, ottengono lo stesso recupero.

2651 2716 

2652Quando l'errore appare, il messaggio di sistema rifiutato non è uno che Claude Code può rimuovere. Questo solitamente significa che un proxy o [gateway LLM](/docs/it/llm-gateway) tra Claude Code e l'API ha aggiunto un messaggio di sistema proprio o ha riordinato la conversazione.2717Quando l'errore appare, il messaggio di sistema rifiutato non è uno che Claude Code può rimuovere. Questo di solito significa che un proxy o [gateway LLM](/docs/it/llm-gateway) tra Claude Code e l'API ha aggiunto un messaggio di sistema proprio.

2653 2718 

2654**Cosa fare:**2719**Cosa fare:**

2655 2720 

2656* Se l'errore si ripete ad ogni turno dietro un proxy o gateway configurato attraverso [`ANTHROPIC_BASE_URL`](/docs/it/env-vars), connettetevi senza il proxy per confermare la fonte, e segnalate l'errore a chi lo gestisce2721* Se l'errore si ripete ad ogni turno dietro un proxy o gateway configurato tramite [`ANTHROPIC_BASE_URL`](/docs/it/env-vars), connettiti senza il proxy per confermare la fonte, e segnala l'errore a chi lo gestisce

2657* Eseguite `/clear` per avviare una conversazione nuova. Se l'errore ritorna anche lì, la causa è sul percorso della richiesta, non nella conversazione salvata.2722* Esegui `/clear` per avviare una conversazione fresca. Se l'errore ritorna anche lì, la causa è sul percorso della richiesta, non nella conversazione salvata.

2658 2723 

2659Prima della v2.1.280, Claude Code non riconosceva questa dicitura, quindi l'errore appariva anche quando il messaggio di sistema rifiutato era uno che Claude Code stesso inviava, e ogni turno successivo della conversazione falliva allo stesso modo.2724Prima della v2.1.280, Claude Code non riconosceva questa dicitura, quindi l'errore appariva anche quando il messaggio di sistema rifiutato era uno che Claude Code stesso inviava, e ogni turno successivo della conversazione falliva allo stesso modo.

2660 2725 

2661<h3 id="invalid-encrypted-content-in-search-result-block">2726<h3 id="invalid-encrypted-content-in-search-result-block">

2662 Contenuto crittografato non valido nel blocco search\_result2727 Encrypted\_content non valido nel blocco search\_result

2663</h3>2728</h3>

2664 2729 

2665L'API ha rifiutato la richiesta con un 400 perché la cronologia della conversazione contiene contenuto di ricerca web ospitato che non può decrittare. La dicitura nomina il campo che non può leggere:2730L'API ha rifiutato la richiesta con un 400 perché la cronologia della conversazione contiene contenuto di ricerca web ospitato che non può decrittare. La dicitura nomina il campo che non può leggere:


2671API Error: 400 ... Invalid `encrypted_stdout` in `encrypted_code_execution_result` block2736API Error: 400 ... Invalid `encrypted_stdout` in `encrypted_code_execution_result` block

2672```2737```

2673 2738 

2674I risultati dallo strumento di [ricerca web ospitato](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool) dell'API portano campi crittografati che solo l'API può leggere. L'`encrypted_stdout` nomina l'output di un programma di esecuzione di codice ospitato che ha letto tali risultati, che l'API crittografa anche. L'API rifiuta una richiesta che riproduce contenuto che non può decrittare, come contenuto prodotto per un'organizzazione diversa.2739I risultati dello [strumento di ricerca web](/docs/en/changelog) ospitato dell'API portano campi crittografati che solo l'API può leggere. La dicitura `encrypted_stdout` nomina l'output di un programma di esecuzione del codice ospitato che ha letto tali risultati, che l'API crittografa anche. L'API rifiuta una richiesta che riproduce il contenuto che non può decrittare, come il contenuto prodotto per un'organizzazione diversa.

2675 2740 

2676Lo strumento [WebSearch](/docs/it/tools-reference#websearch-tool-behavior) proprio di Claude Code registra i risultati di ricerca come testo semplice, quindi questi blocchi solitamente raggiungono una conversazione attraverso un proxy o [gateway LLM](/docs/it/llm-gateway) che ha eseguito la ricerca web ospitata stesso.2741Lo strumento [WebSearch](/docs/it/tools-reference#websearch-tool-behavior) proprio di Claude Code registra i risultati della ricerca come testo semplice, quindi questi blocchi di solito raggiungono una conversazione tramite un proxy o [gateway LLM](/docs/it/llm-gateway) che ha eseguito la ricerca web ospitata stesso.

2677 2742 

2678Per le tre diciture di ricerca web, Claude Code lascia le chiamate di ricerca, i risultati e le citazioni fuori da ciò che invia e ritenta la richiesta una volta, quindi la sessione continua senza mostrare l'errore. La dicitura `encrypted_stdout` non ha tale recupero, quindi quel messaggio vi raggiunge ancora. Prima della v2.1.282, Claude Code manteneva anche i blocchi di ricerca web rifiutati, e ogni turno successivo e `/compact` falliva allo stesso modo.2743Per le tre diciture di ricerca web, Claude Code lascia le chiamate di ricerca, i risultati e le citazioni fuori da ciò che invia e ritenta la richiesta una volta, quindi la sessione continua senza mostrare l'errore. La dicitura `encrypted_stdout` non ha tale recupero, quindi quel messaggio ti raggiunge comunque. Prima della v2.1.282, Claude Code manteneva anche i blocchi di ricerca web rifiutati, e ogni turno successivo e `/compact` falliva allo stesso modo.

2679 2744 

2680**Cosa fare:**2745**Cosa fare:**

2681 2746 

2682* Se siete sulla v2.1.281 o precedente e ogni turno fallisce con una delle diciture di ricerca web, eseguite `claude update` e riprendete la sessione2747* Se sei sulla v2.1.281 o precedente e ogni turno fallisce con una delle diciture di ricerca web, esegui `claude update` e riprendi la sessione

2683* Se l'errore persiste, oppure il messaggio nomina `encrypted_stdout`, eseguite `/rewind` per tornare indietro a un checkpoint prima del turno che ha aggiunto il contenuto, oppure eseguite `/clear` per avviare una conversazione che non lo porta2748* Se l'errore persiste, o il messaggio nomina `encrypted_stdout`, esegui `/rewind` per tornare indietro a un checkpoint prima del turno che ha aggiunto il contenuto, oppure esegui `/clear` per avviare una conversazione che non lo porta

2684* Se eseguite Claude Code dietro un proxy o gateway, segnalate l'errore a chi lo gestisce2749* Se esegui Claude Code dietro un proxy o gateway, segnala l'errore a chi lo gestisce

2685 2750 

2686<h3 id="usage-policy-refusal">2751<h3 id="usage-policy-refusal">

2687 Rifiuto della politica di utilizzo2752 Rifiuto della politica di utilizzo


2689 2754 

2690L'API ha rifiutato di rispondere perché il contenuto nella conversazione ha attivato un controllo della [Politica di utilizzo](https://www.anthropic.com/legal/aup).2755L'API ha rifiutato di rispondere perché il contenuto nella conversazione ha attivato un controllo della [Politica di utilizzo](https://www.anthropic.com/legal/aup).

2691 2756 

2692Il messaggio include un ID richiesta e un ID messaggio che potete citare al supporto se ritenete che il rifiuto sia scorretto.2757Il messaggio include un ID richiesta e un ID messaggio che puoi citare al supporto se ritieni che il rifiuto sia errato.

2693 2758 

2694```text theme={null}2759```text theme={null}

2695API Error: Opus 4.6 can't help with this. Start a new session to continue.2760API Error: Opus 4.6 can't help with this. Start a new session to continue.


2699 2764 

2700Il messaggio nomina il modello che ha rifiutato, o `Claude` quando nessun modello è registrato.2765Il messaggio nomina il modello che ha rifiutato, o `Claude` quando nessun modello è registrato.

2701 2766 

2702Il controllo valuta l'intera conversazione, non solo il Vostro prompt più recente, quindi inviare un nuovo messaggio nella stessa sessione solitamente riattiva lo stesso rifiuto. Lo stesso si applica dopo aver uscito e riaperto la sessione con `--continue` o `--resume`, poiché la trascrizione su disco contiene ancora il contenuto che attiva. Su [Amazon Bedrock](/docs/it/amazon-bedrock), [Google Cloud's Agent Platform](/docs/it/google-vertex-ai) e [Microsoft Foundry](/docs/it/microsoft-foundry), questo messaggio copre anche le richieste che le misure di sicurezza del modello hanno contrassegnato come un argomento di cibersicurezza. Vedete [Safety measures flagged a cybersecurity topic](#safety-measures-flagged-a-cybersecurity-topic).2767Il controllo valuta l'intera conversazione, non solo il tuo ultimo prompt, quindi inviare un nuovo messaggio nella stessa sessione di solito ri-attiva lo stesso rifiuto. Lo stesso si applica dopo l'uscita e la riapertura della sessione con `--continue` o `--resume`, poiché la trascrizione su disco contiene ancora il contenuto che attiva. Su [Amazon Bedrock](/docs/it/amazon-bedrock), [Google Cloud's Agent Platform](/docs/it/google-vertex-ai), e [Microsoft Foundry](/docs/it/microsoft-foundry), questo messaggio copre anche le richieste che le misure di sicurezza del modello hanno contrassegnato come un argomento di cibersicurezza. Vedi [Le misure di sicurezza hanno contrassegnato un argomento di cibersicurezza](#safety-measures-flagged-a-cybersecurity-topic).

2703 2768 

2704Prima della v2.1.219, il messaggio recitava `Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Please double press esc to edit your last message or start a new session for Claude Code to assist with a different task.`2769Prima della v2.1.219, il messaggio recitava `Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Please double press esc to edit your last message or start a new session for Claude Code to assist with a different task.`

2705 2770 

2706**Cosa fare:**2771**Cosa fare:**

2707 2772 

2708* Premete Esc due volte o eseguite `/rewind` per tornare indietro a un checkpoint prima del turno che ha attivato il rifiuto, quindi riformulate o prendete un approccio diverso. Vedete [Checkpointing](/docs/it/checkpointing).2773* Premi Esc due volte o esegui `/rewind` per tornare indietro a un checkpoint prima del turno che ha attivato il rifiuto, quindi riformula o prendi un approccio diverso. Vedi [Checkpointing](/docs/it/checkpointing).

2709* Se non riuscite a identificare quale turno l'ha causato, eseguite `/clear` per avviare una conversazione nuova nello stesso progetto. La Vostra conversazione precedente è preservata su disco e rimane disponibile in `/resume`.2774* Se non riesci a identificare quale turno l'ha causato, esegui `/clear` per avviare una conversazione fresca nello stesso progetto. La tua conversazione precedente è preservata su disco e rimane disponibile in `/resume`.

2710* In [modalità non interattiva](/docs/it/headless) (`-p`), dove il rewind non è disponibile, ritentate con un prompt riformulato in una nuova sessione senza `--continue`. I controlli della politica variano per modello, quindi passare a un modello diverso con `--model` può anche risolvere il rifiuto in alcuni casi.2775* In [modalità non interattiva](/docs/it/headless) (`-p`), dove il rewind non è disponibile, ritenta con un prompt riformulato in una nuova sessione senza `--continue`. I controlli della politica variano in base al modello, quindi passare a un modello diverso con `--model` può anche risolvere il rifiuto in alcuni casi.

2711 2776 

2712<h3 id="safety-measures-flagged-a-cybersecurity-topic">2777<h3 id="safety-measures-flagged-a-cybersecurity-topic">

2713 Le misure di sicurezza hanno contrassegnato un argomento di cibersicurezza2778 Le misure di sicurezza hanno contrassegnato un argomento di cibersicurezza


2719API Error: Opus 4.8's safeguards flagged this message. Our intentionally broad safeguards allow us to deliver more capabilities faster, but can sometimes flag legitimate cybersecurity work. Apply to the Cyber Verification Program to reduce these interruptions. Send feedback with /feedback or learn more: https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude2784API Error: Opus 4.8's safeguards flagged this message. Our intentionally broad safeguards allow us to deliver more capabilities faster, but can sometimes flag legitimate cybersecurity work. Apply to the Cyber Verification Program to reduce these interruptions. Send feedback with /feedback or learn more: https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude

2720```2785```

2721 2786 

2722Il messaggio si collega al [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude), che concede accesso per il lavoro di cibersicurezza legittimo. Su Opus 5.5 e Sonnet 5.5, il messaggio si apre con `<model>'s safeguards flagged this session` invece. Quando la categoria contrassegnata ha un modello di fallback disponibile, Claude Code [cambia modelli](/docs/it/model-config#automatic-model-fallback) piuttosto che mostrare questo errore.2787Il messaggio si collega al [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude), che concede l'accesso per il lavoro di cibersicurezza legittimo. Su Opus 5.5 e Sonnet 5.5, il messaggio si apre con `<model>'s safeguards flagged this session` invece. Quando la categoria contrassegnata ha un modello di fallback disponibile, Claude Code [cambia modelli](/docs/it/model-config#automatic-model-fallback) piuttosto che mostrare questo errore.

2723 2788 

2724Su [Amazon Bedrock](/docs/it/amazon-bedrock), [Google Cloud's Agent Platform](/docs/it/google-vertex-ai) e [Microsoft Foundry](/docs/it/microsoft-foundry), un contrassegno di cibersicurezza produce il messaggio di [rifiuto della politica di utilizzo](#usage-policy-refusal) invece.2789Su [Amazon Bedrock](/docs/it/amazon-bedrock), [Google Cloud's Agent Platform](/docs/it/google-vertex-ai), e [Microsoft Foundry](/docs/it/microsoft-foundry), un flag di cibersicurezza produce il messaggio di [rifiuto della politica di utilizzo](#usage-policy-refusal).

2725 2790 

2726La salvaguardia stessa è lato server e precede la v2.1.203; i rilasci client da allora hanno cambiato solo la formulazione del messaggio.2791La salvaguardia stessa è lato server e precede la v2.1.203; i rilasci client da allora hanno cambiato solo la dicitura del messaggio.

2727Dalla v2.1.203 alla v2.1.218, il messaggio recitava `<model> has safety measures that flagged this message for a cybersecurity topic. To learn about the Cyber Verification Program and apply for access, visit our help center:` seguito dallo stesso link del centro assistenza, e le sessioni interattive aggiungevano `If you were not engaging in a cybersecurity topic, please send feedback via /feedback.`2792Dalla v2.1.203 alla v2.1.218, il messaggio recitava `<model> has safety measures that flagged this message for a cybersecurity topic. To learn about the Cyber Verification Program and apply for access, visit our help center:` seguito dallo stesso link del centro assistenza, e le sessioni interattive aggiungevano `If you were not engaging in a cybersecurity topic, please send feedback via /feedback.`

2728Prima della v2.1.203, recitava `<model>'s safeguards flagged this message for a cybersecurity topic. If your work requires this access, you can apply for an exemption:` seguito da un link di modulo di esenzione.2793Prima della v2.1.203, recitava `<model>'s safeguards flagged this message for a cybersecurity topic. If your work requires this access, you can apply for an exemption:` seguito da un link del modulo di esenzione.

2729 2794 

2730**Cosa fare:**2795**Cosa fare:**

2731 2796 

2732* Se il Vostro lavoro richiede questo contenuto, applicate per l'accesso attraverso il [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude)2797* Se il tuo lavoro richiede questo contenuto, richiedi l'accesso tramite il [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude)

2733* Se la Vostra richiesta non riguardava un argomento di cibersicurezza, eseguite `/feedback` per segnalare il falso positivo2798* Se la tua richiesta non riguardava un argomento di cibersicurezza, esegui `/feedback` per segnalare il falso positivo

2734* Per continuare a lavorare nella stessa sessione, premete Esc due volte o eseguite `/rewind` per tornare indietro a un checkpoint prima del turno che ha attivato il contrassegno, quindi prendete un approccio diverso. Vedete [Checkpointing](/docs/it/checkpointing).2799* Per continuare a lavorare nella stessa sessione, premi Esc due volte o esegui `/rewind` per tornare indietro a un checkpoint prima del turno che ha attivato il flag, quindi prendi un approccio diverso. Vedi [Checkpointing](/docs/it/checkpointing).

2735 2800 

2736<h2 id="installation-errors">2801<h2 id="installation-errors">

2737 Errori di installazione2802 Errori di installazione


2784 Errori da riga di comando2849 Errori da riga di comando

2785</h2>2850</h2>

2786 2851 

2787Questi errori provengono dal comando `claude` da riga di comando e dai suoi sottocomandi, da un nome di comando che invii al prompt, e da comandi come `/security-review` che raccolgono il contesto eseguendo comandi shell prima che il loro prompt venga eseguito. Provengono anche da `/tui`, che riavvia la CLI.2852Questi errori provengono dal comando `claude` da riga di comando e dai suoi sottocomandi, da un nome di comando che invii al prompt e da comandi come `/security-review` che raccolgono il contesto eseguendo comandi shell prima dell'esecuzione del loro prompt. Provengono anche da `/tui`, che riavvia la CLI.

2788 2853 

2789<h3 id="conflict-between-bg-and-print">2854<h3 id="conflict-between-bg-and-print">

2790 Conflitto tra `--bg` e `--print`2855 Conflitto tra `--bg` e `--print`

2791</h3>2856</h3>

2792 2857 

2793Questo messaggio richiede Claude Code v2.1.198 o successivo. Hai combinato `--bg` con `-p` o `--print` nella stessa invocazione di `claude`. `--bg` avvia una [sessione in background](/docs/it/agent-view#from-your-shell) a cui ti colleghi successivamente con `claude agents`, mentre `--print` esegue [in modo non interattivo](/docs/it/headless) e non avvia mai la sessione interattiva a cui `claude agents` si collega. Prima della v2.1.198 questa combinazione creava silenziosamente un lavoro in background che non poteva mai essere collegato.2858Questo messaggio richiede Claude Code v2.1.198 o successivo. Avete combinato `--bg` con `-p` o `--print` nella stessa invocazione di `claude`. `--bg` avvia una [sessione in background](/docs/it/agent-view#from-your-shell) a cui vi collegherete successivamente con `claude agents`, mentre `--print` esegue [in modo non interattivo](/docs/it/headless) e non avvia mai la sessione interattiva a cui `claude agents` si collega. Prima della v2.1.198 questa combinazione creava silenziosamente un lavoro in background che non poteva mai essere collegato.

2794 2859 

2795```text theme={null}2860```text theme={null}

2796--bg and --print conflict: --print never starts the interactive session that `claude agents` attaches to, so the job would be unattachable. The prompt is the positional — drop --print: `claude --bg '<task>'`.2861--bg and --print conflict: --print never starts the interactive session that `claude agents` attaches to, so the job would be unattachable. The prompt is the positional — drop --print: `claude --bg '<task>'`.


2798 2863 

2799**Cosa fare:**2864**Cosa fare:**

2800 2865 

2801* Rimuovi `-p` o `--print`. `--bg` accetta il prompt come argomento posizionale, quindi `claude --bg "<task>"` è il comando completo. Vedi [Dispatch new agents from your shell](/docs/it/agent-view#from-your-shell).2866* Eliminate `-p` o `--print`. `--bg` accetta il prompt come argomento posizionale, quindi `claude --bg "<task>"` è il comando completo. Vedete [Dispatch new agents from your shell](/docs/it/agent-view#from-your-shell).

2802* Per eseguire il prompt in modo non interattivo e stampare il risultato invece di creare una sessione in background, rimuovi `--bg` ed esegui `claude -p "<task>"`2867* Per eseguire il prompt in modo non interattivo e stampare il risultato invece di creare una sessione in background, eliminate `--bg` ed eseguite `claude -p "<task>"`

2803 2868 

2804<h3 id="invalid-agents-configuration">2869<h3 id="invalid-agents-configuration">

2805 Configurazione `--agents` non valida2870 Configurazione `--agents` non valida

2806</h3>2871</h3>

2807 2872 

2808Il valore che hai passato a `--agents` non è valido, quindi `claude` esce con codice 1 invece di avviare la sessione. Quando passi `--safe-mode` o imposti [`CLAUDE_CODE_SAFE_MODE`](/docs/it/env-vars#variables), Claude Code ignora `--agents` completamente. Con `--resume` o `--continue`, un valore JSON inline non viene controllato e la sessione si avvia; un valore letto da un file viene controllato ad ogni avvio. Prima della v2.1.242, Claude Code avviava comunque la sessione.2873Il valore che avete passato a `--agents` non è valido, quindi `claude` esce con codice 1 invece di avviare la sessione. Quando passate `--safe-mode` o impostate [`CLAUDE_CODE_SAFE_MODE`](/docs/it/env-vars#variables), Claude Code ignora completamente `--agents`. Con `--resume` o `--continue`, un valore JSON inline non viene controllato e la sessione si avvia; un valore letto da un file viene controllato ad ogni avvio. Prima della v2.1.242, Claude Code avviava comunque la sessione.

2809 2874 

2810```text theme={null}2875```text theme={null}

2811Error: Invalid --agents configuration:2876Error: Invalid --agents configuration:

2812<what failed>2877<what failed>

2813```2878```

2814 2879 

2815Quello che segue la prima riga dipende da come il valore ha fallito. Claude Code esegue questi controlli in ordine e si ferma al primo che fallisce. Se il tuo valore ha due tipi di problema, vedi il secondo solo dopo aver corretto il primo:2880Quello che segue la prima riga dipende da come il valore ha fallito. Claude Code esegue questi controlli in ordine e si ferma al primo che fallisce. Se il vostro valore ha due tipi di problema, vedete il secondo solo dopo aver corretto il primo:

2816 2881 

28171. Quando il valore inizia con `{` ma non viene analizzato come JSON, o il contenuto di un file `--agents` non viene analizzato, Claude Code stampa una riga `invalid JSON:` con il messaggio del parser JSON stesso28821. Quando il valore inizia con `{` ma non viene analizzato come JSON, o il contenuto di un file `--agents` non viene analizzato, Claude Code stampa una riga `invalid JSON:` con il messaggio del parser JSON stesso

28182. Quando viene analizzato ma una definizione di agente non corrisponde allo schema per [subagenti definiti da CLI](/docs/it/sub-agents#choose-the-subagent-scope), Claude Code stampa una riga per problema28832. Quando viene analizzato ma una definizione di agente non corrisponde allo schema per [subagenti definiti da CLI](/docs/it/sub-agents#choose-the-subagent-scope), Claude Code stampa una riga per problema


2820 2885 

2821Quando ci sono più di 20 righe di problema, Claude Code stampa le prime 20 e sostituisce il resto con `…and N more`.2886Quando ci sono più di 20 righe di problema, Claude Code stampa le prime 20 e sostituisce il resto con `…and N more`.

2822 2887 

2823Con `--print`, `--agents` accetta anche [il percorso a un file JSON](/docs/it/sub-agents#choose-the-subagent-scope) al posto dell'oggetto inline. Prima della v2.1.281, `--agents` accettava solo JSON inline e trattava un percorso di file come JSON non valido. La forma di file ha i suoi rifiuti, stampati al posto di questo messaggio, inclusi questi:2888Con `--print`, `--agents` accetta anche [il percorso di un file JSON](/docs/it/sub-agents#choose-the-subagent-scope) al posto dell'oggetto inline. Prima della v2.1.281, `--agents` accettava solo JSON inline e trattava un percorso di file come JSON non valido. La forma di file ha i suoi rifiuti, stampati al posto di questo messaggio, inclusi questi:

2824 2889 

2825* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`**: Claude Code ha letto il valore come percorso di file in una sessione interattiva. Passa le definizioni come JSON inline, o aggiungi `-p` per leggerle da un file.2890* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`**: Claude Code ha letto il valore come percorso di file in una sessione interattiva. Passate le definizioni come JSON inline, oppure aggiungete `-p` per leggerle da un file.

2826* **`Error: --agents file not found: <path>`**: nessun file esiste in quel percorso. Un valore che non inizia con `{` e non è JSON valido viene letto come percorso, quindi JSON inline che la tua shell ha rovinato può fallire in questo modo. Controlla il percorso o le virgolette e esegui di nuovo il comando.2891* **`Error: --agents file not found: <path>`**: nessun file esiste in quel percorso. Un valore che non inizia con `{` e non è JSON valido viene letto come percorso, quindi JSON inline che la vostra shell ha danneggiato può fallire in questo modo. Controllate il percorso o le virgolette e eseguite di nuovo il comando.

2827 2892 

2828**Cosa fare:**2893**Cosa fare:**

2829 2894 

2830* Correggi ogni problema che il messaggio elenca, quindi esegui di nuovo il comando. Vedi [i campi che un subagente definito da CLI accetta](/docs/it/sub-agents#choose-the-subagent-scope).2895* Correggete ogni problema che il messaggio elenca, quindi eseguite di nuovo il comando. Vedete [i campi che un subagente definito da CLI accetta](/docs/it/sub-agents#choose-the-subagent-scope).

2831 2896 

2832<h3 id="cloud-sessions-cannot-be-created-from-a-restricted-session">2897<h3 id="cloud-sessions-cannot-be-created-from-a-restricted-session">

2833 Le sessioni cloud non possono essere create da una sessione `--restricted`2898 Le sessioni cloud non possono essere create da una sessione `--restricted`

2834</h3>2899</h3>

2835 2900 

2836Quando avvii una sessione con [`--restricted`](/docs/it/cli-reference#cli-flags), Claude Code rifiuta di creare [sessioni cloud](/docs/it/claude-code-on-the-web#from-terminal-to-cloud) da essa, perché la nuova sessione verrebbe eseguita al di fuori del processo ristretto e non farebbe rispettare la modalità ristretta. Claude Code rifiuta sul client, prima di contattare il server, quindi nessuna sessione cloud viene creata:2901Quando avviate una sessione con [`--restricted`](/docs/it/cli-reference#cli-flags), Claude Code rifiuta di creare [sessioni cloud](/docs/it/claude-code-on-the-web#from-terminal-to-cloud) da essa, perché la nuova sessione verrebbe eseguita al di fuori del processo ristretto e non farebbe rispettare la modalità ristretta. Claude Code rifiuta dal client, prima di contattare il server, quindi nessuna sessione cloud viene creata:

2837 2902 

2838```text theme={null}2903```text theme={null}

2839Cloud sessions cannot be created from a --restricted session: they would not enforce it.2904Cloud sessions cannot be created from a --restricted session: they would not enforce it.


2841 2906 

2842**Cosa fare:**2907**Cosa fare:**

2843 2908 

2844* Esegui l'attività localmente nella sessione ristretta2909* Eseguite l'attività localmente nella sessione ristretta

2845* Se controlli come è stata avviata la sessione, avvia una nuova sessione `claude` senza `--restricted` e crea la sessione cloud da lì2910* Se controllate come è stata avviata la sessione, avviate una nuova sessione `claude` senza `--restricted` e create la sessione cloud da lì

2846 2911 

2847Prima della v2.1.248, Claude Code non aveva il flag `--restricted`; le versioni precedenti rifiutano il flag stesso con un errore di opzione sconosciuta.2912Prima della v2.1.248, Claude Code non aveva il flag `--restricted`; le versioni precedenti rifiutano il flag stesso con un errore di opzione sconosciuta.

2848 2913 

2849<h3 id="cloud-sessions-are-disabled-by-your-organizations-policy">2914<h3 id="cloud-sessions-are-disabled-by-your-organizations-policy">

2850 Le sessioni cloud sono disabilitate dalla politica della tua organizzazione2915 Le sessioni cloud sono disabilitate dalla politica della vostra organizzazione

2851</h3>2916</h3>

2852 2917 

2853La politica `allow_remote_sessions` della tua organizzazione è disattivata, quindi [sessioni cloud](/docs/it/claude-code-on-the-web) e i comandi che le utilizzano non sono disponibili:2918La politica `allow_remote_sessions` della vostra organizzazione è disattivata, quindi [le sessioni cloud](/docs/it/claude-code-on-the-web) e i comandi che le utilizzano non sono disponibili:

2854 2919 

2855```text theme={null}2920```text theme={null}

2856Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.2921Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.

2857```2922```

2858 2923 

2859Il messaggio appare quando [crei una sessione cloud dal terminale](/docs/it/claude-code-on-the-web#from-terminal-to-cloud) e quando invii un comando che ha bisogno di sessioni cloud, come `/teleport`, `/remote-env`, o `/web-setup`. Prima della v2.1.268, l'invio di uno di questi comandi restituiva [`Unknown command`](#unknown-command) invece.2924Il messaggio appare quando [create una sessione cloud dal terminale](/docs/it/claude-code-on-the-web#from-terminal-to-cloud) e quando inviate un comando che ha bisogno di sessioni cloud, come `/teleport`, `/remote-env` o `/web-setup`. Prima della v2.1.268, l'invio di uno di questi comandi restituiva [`Unknown command`](#unknown-command) invece.

2860 2925 

2861Questa è una politica organizzativa lato server, quindi non può essere ignorata dalle impostazioni locali, variabili di ambiente o flag CLI.2926Questa è una politica organizzativa lato server, quindi non può essere ignorata dalle impostazioni locali, dalle variabili di ambiente o dai flag CLI.

2862 2927 

2863Se Claude Code non ha ancora caricato la politica della tua organizzazione o non può recuperarla, questi comandi rispondono `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` invece.2928Se Claude Code non ha ancora caricato la politica della vostra organizzazione o non riesce a recuperarla, questi comandi rispondono `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` invece.

2864 2929 

2865**Cosa fare:**2930**Cosa fare:**

2866 2931 

2867* Chiedi a un [Owner](/docs/it/server-managed-settings#access-control) nella tua organizzazione di abilitare le sessioni cloud nelle impostazioni di amministrazione di Claude Code su [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)2932* Chiedete a un [Owner](/docs/it/server-managed-settings#access-control) della vostra organizzazione di abilitare le sessioni cloud nelle impostazioni di amministrazione di Claude Code su [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

2868* Se il messaggio dice che non potrebbe verificare la politica, controlla la tua connessione di rete, quindi riavvia Claude Code e riprova2933* Se il messaggio dice che non ha potuto verificare la politica, controllate la vostra connessione di rete, quindi riavviate Claude Code e riprovate

2869 2934 

2870<h3 id="the-json-schema-value-is-not-a-valid-json-schema">2935<h3 id="the-json-schema-value-is-not-a-valid-json-schema">

2871 Il valore `--json-schema` non è un JSON Schema valido2936 Il valore `--json-schema` non è uno schema JSON valido

2872</h3>2937</h3>

2873 2938 

2874Lo schema che hai passato a [`--json-schema`](/docs/it/cli-reference#cli-flags) in [modalità non interattiva](/docs/it/headless#get-structured-output) ha fallito la compilazione di JSON Schema, quindi `claude` esce con codice 1 invece di eseguire il prompt. Prima della v2.1.205, uno schema non valido produceva output non strutturato senza errore, e qualsiasi schema che utilizzava la parola chiave `format` era trattato come non valido.2939Lo schema che avete passato a [`--json-schema`](/docs/it/cli-reference#cli-flags) in [modalità non interattiva](/docs/it/headless#get-structured-output) ha fallito la compilazione dello schema JSON, quindi `claude` esce con codice 1 invece di eseguire il prompt. Prima della v2.1.205, uno schema non valido produceva output non strutturato senza errore, e qualsiasi schema che utilizzava la parola chiave `format` era trattato come non valido.

2875 2940 

2876```text theme={null}2941```text theme={null}

2877Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values2942Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values


2883 2948 

2884**Cosa fare:**2949**Cosa fare:**

2885 2950 

2886* Correggi la parte dello schema che la diagnostica nomina, quindi riesegui il comando2951* Correggete la parte dello schema che la diagnostica nomina, quindi rieseguite il comando

2887* Vedi [Get structured output](/docs/it/headless#get-structured-output) per uno schema funzionante e un comando2952* Vedete [Get structured output](/docs/it/headless#get-structured-output) per uno schema funzionante e un comando

2888 2953 

2889<h3 id="settings-file-exceeds-the-2mib-limit">2954<h3 id="settings-file-exceeds-the-2mib-limit">

2890 Il file di impostazioni supera il limite di 2MiB2955 Il file di impostazioni supera il limite di 2MiB

2891</h3>2956</h3>

2892 2957 

2893Il file che hai passato a [`--settings`](/docs/it/cli-reference#cli-flags) è più grande di 2 MiB, quindi `claude` esce con codice 1 all'avvio invece di caricarlo. Prima della v2.1.214, Claude Code leggeva il file senza controllo delle dimensioni, e un file di più gigabyte o un file di dispositivo come `/dev/zero` faceva crescere la memoria senza limiti.2958Il file che avete passato a [`--settings`](/docs/it/cli-reference#cli-flags) è più grande di 2 MiB, quindi `claude` esce con codice 1 all'avvio invece di caricarlo. Prima della v2.1.214, Claude Code leggeva il file senza controllo delle dimensioni, e un file di più gigabyte o un file di dispositivo come `/dev/zero` faceva crescere la memoria senza limiti.

2894 2959 

2895```text theme={null}2960```text theme={null}

2896Error: Settings file exceeds the 2MiB limit: /path/to/settings.json2961Error: Settings file exceeds the 2MiB limit: /path/to/settings.json


2900 2965 

2901**Cosa fare:**2966**Cosa fare:**

2902 2967 

2903* Punta `--settings` a un file JSON di impostazioni regolare sotto 2 MiB. Vedi [Settings](/docs/it/settings) per il formato.2968* Puntate `--settings` a un file JSON di impostazioni regolare sotto 2 MiB. Vedete [Settings](/docs/it/settings) per il formato.

2904 2969 

2905<h3 id="the-current-directory-no-longer-exists">2970<h3 id="the-current-directory-no-longer-exists">

2906 La directory corrente non esiste più2971 La directory corrente non esiste più

2907</h3>2972</h3>

2908 2973 

2909Hai avviato `claude` da una directory che è stata eliminata o spostata dopo che la tua shell vi è entrata, ad esempio una worktree o una directory temporanea che un'altra shell ha rimosso. Claude Code non può leggere la sua directory di lavoro, quindi esce con codice 1 prima di avviare la sessione, sia in modalità interattiva che [non interattiva](/docs/it/headless). Prima della v2.1.239, Claude Code si bloccava con il codice sorgente del bundle minimizzato e uno stack `ENOENT ... uv_cwd` grezzo su stderr invece di questo messaggio.2974Avete avviato `claude` da una directory che è stata eliminata o spostata dopo che la vostra shell vi è entrata, ad esempio una worktree o una directory temporanea che un'altra shell ha rimosso. Claude Code non riesce a leggere la sua directory di lavoro, quindi esce con codice 1 prima di avviare la sessione, sia in modalità interattiva che [non interattiva](/docs/it/headless). Prima della v2.1.239, Claude Code si bloccava con il codice sorgente del bundle minificato e uno stack `ENOENT ... uv_cwd` grezzo su stderr invece di questo messaggio.

2910 2975 

2911```text theme={null}2976```text theme={null}

2912The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.2977The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.

2913error: The current working directory was deleted, so that command didn't work. Please cd into a different directory and try again.2978error: The current working directory was deleted, so that command didn't work. Please cd into a different directory and try again.

2914```2979```

2915 2980 

2916La causa e la correzione sono le stesse per entrambe le forme.2981La causa e la soluzione sono le stesse per entrambe le forme.

2917 2982 

2918Quando Claude Code non può leggere la directory di lavoro per un motivo diverso, come un cambio di permessi, il messaggio nomina il codice di errore invece: `Can't read the current directory (EACCES). Start Claude Code from a different directory.`2983Quando Claude Code non riesce a leggere la directory di lavoro per un motivo diverso, come un cambio di permessi, il messaggio nomina il codice di errore invece: `Can't read the current directory (EACCES). Start Claude Code from a different directory.`

2919 2984 

2920Su macOS, `EPERM` per una directory in `~/Desktop`, `~/Documents`, `~/Downloads`, o iCloud Drive di solito significa che macOS sta bloccando l'accesso della tua app terminale a quella cartella. Altri comandi che leggono quella cartella falliscono allo stesso modo: `ls` lì segnala `Operation not permitted`, anche con `sudo`.2985Su macOS, `EPERM` per una directory in `~/Desktop`, `~/Documents`, `~/Downloads` o iCloud Drive di solito significa che macOS sta bloccando l'accesso della vostra app terminale a quella cartella. Altri comandi che leggono quella cartella falliscono allo stesso modo: `ls` lì segnala `Operation not permitted`, anche con `sudo`.

2921 2986 

2922**Cosa fare:**2987**Cosa fare:**

2923 2988 

2924* Cambia a una directory che esiste, come la tua home o la directory del progetto, quindi esegui di nuovo `claude`2989* Cambiate a una directory che esiste, come la vostra home o la directory del progetto, quindi eseguite di nuovo `claude`

2925* Se la directory è stata ricreata nello stesso percorso, la tua shell ne tiene ancora quella eliminata. Esegui `cd "$PWD"` o esci e rientra nella directory, quindi esegui di nuovo `claude`2990* Se la directory è stata ricreata nello stesso percorso, la vostra shell tiene ancora quella eliminata. Eseguite `cd "$PWD"` o lasciate e rientrate nella directory, quindi eseguite di nuovo `claude`

2926* Per `EPERM` su macOS, esci dalla tua app terminale con Cmd+Q, aprila di nuovo, torna a quella cartella, ed esegui `claude`. Se `ls` in quella cartella continua a fallire, apri **System Settings > Privacy & Security > Files and Folders**, attiva la cartella per la tua app terminale, quindi riapri il terminale2991* Per `EPERM` su macOS, chiudete la vostra app terminale con Cmd+Q, apritela di nuovo, tornate a quella cartella ed eseguite `claude`. Se `ls` in quella cartella continua a fallire, aprite **System Settings > Privacy & Security > Files and Folders**, attivate la cartella per la vostra app terminale, quindi riaprire il terminale

2927 2992 

2928<h3 id="temp-directory-refused-or-cannot-be-created">2993<h3 id="temp-directory-refused-or-cannot-be-created">

2929 La directory temporanea è stata rifiutata o non può essere creata2994 La directory temporanea è stata rifiutata o non può essere creata

2930</h3>2995</h3>

2931 2996 

2932Su macOS e Linux, Claude Code crea una directory temporanea privata all'avvio, `claude-<uid>` sotto la directory temporanea di sistema o l'override [`CLAUDE_CODE_TMPDIR`](/docs/it/env-vars). Quando la directory non può essere creata, o una voce già in quel percorso fallisce i controlli di sicurezza, Claude Code stampa il fallimento su stderr e esce con codice 1 piuttosto che avviare la sessione:2997Su macOS e Linux, Claude Code crea una directory temporanea privata all'avvio, `claude-<uid>` sotto la directory temporanea di sistema o l'override [`CLAUDE_CODE_TMPDIR`](/docs/it/env-vars). Quando la directory non può essere creata, o una voce già in quel percorso fallisce i controlli di sicurezza, Claude Code stampa l'errore su stderr ed esce con codice 1 piuttosto che avviare la sessione:

2933 2998 

2934```text wrap theme={null}2999```text wrap theme={null}

2935ENOSPC: no space left on device, mkdir '/tmp/claude-501'3000ENOSPC: no space left on device, mkdir '/tmp/claude-501'


2943 3008 

2944**Cosa fare:**3009**Cosa fare:**

2945 3010 

2946* Per `ENOSPC`, libera spazio su disco sul volume che contiene la directory temporanea3011* Per `ENOSPC`, liberate spazio su disco nel volume che contiene la directory temporanea

2947* Per le forme `Refusing to use it`, rimuovi la voce denominata stessa, non quello a cui un link punta, e avvia di nuovo Claude Code; per la forma `owned by uid`, solo un amministratore o quell'utente può rimuoverla3012* Per le forme `Refusing to use it`, rimuovete la voce denominata stessa, non quello a cui un link punta, e avviate di nuovo Claude Code; per la forma `owned by uid`, solo un amministratore o quell'utente può rimuoverla

2948* Per `is not readable`, esegui `chmod 0700` sulla directory denominata, o rimuovila e avvia di nuovo3013* Per `is not readable`, eseguite `chmod 0700` sulla directory denominata, oppure rimuovetela e avviate di nuovo

2949* In uno qualsiasi di questi casi, imposta [`CLAUDE_CODE_TMPDIR`](/docs/it/env-vars) a una directory che controlli e avvia di nuovo Claude Code, lasciando il percorso rifiutato da solo3014* In uno qualsiasi di questi casi, impostate [`CLAUDE_CODE_TMPDIR`](/docs/it/env-vars) a una directory che controllate e avviate di nuovo Claude Code, lasciando il percorso rifiutato da solo

2950 3015 

2951<h3 id="directory-couldnt-be-resolved-to-a-real-location">3016<h3 id="directory-couldnt-be-resolved-to-a-real-location">

2952 La directory non potrebbe essere risolta a una posizione reale3017 La directory non ha potuto essere risolta a una posizione reale

2953</h3>3018</h3>

2954 3019 

2955Hai eseguito `/add-dir` per una sottodirectory della tua directory di lavoro, e Claude Code non potrebbe risolvere la directory a una posizione reale.3020Avete eseguito `/add-dir` per una sottodirectory della vostra directory di lavoro, e Claude Code non ha potuto risolvere la directory alla sua posizione reale.

2956 3021 

2957Hai già accesso ai file a una sottodirectory della directory di lavoro, quindi `/add-dir` carica solo le sue skills, comandi e agenti. Prima di caricarli, Claude Code verifica che la posizione reale della directory, con eventuali symlink risolti, sia all'interno della directory di lavoro. Quando Claude Code non può risolvere quella posizione, non carica nulla e mostra questo messaggio:3022Avete già accesso ai file a una sottodirectory della directory di lavoro, quindi `/add-dir` carica solo le sue skills, comandi e agenti. Prima di caricarli, Claude Code controlla che la posizione reale della directory, con qualsiasi symlink risolto, sia dentro la directory di lavoro. Quando Claude Code non riesce a risolvere quella posizione, non carica nulla e mostra questo messaggio:

2958 3023 

2959```text theme={null}3024```text theme={null}

2960packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.3025packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.


2962 3027 

2963**Cosa fare:**3028**Cosa fare:**

2964 3029 

2965* Verifica che il percorso nomini una directory reale all'interno della directory di lavoro, quindi esegui di nuovo `/add-dir`3030* Controllate che il percorso nomini una directory reale dentro la directory di lavoro, quindi eseguite di nuovo `/add-dir`

2966* Il messaggio non cambia il tuo accesso ai file; riporta solo che il contenuto `.claude/` della directory non è stato caricato3031* Il messaggio non cambia l'accesso ai vostri file; riporta solo che il contenuto `.claude/` della directory non è stato caricato

2967 3032 

2968Prima della v2.1.261, questo messaggio appariva anche per ogni `/add-dir <subdirectory>` quando la directory di lavoro era su un automount `/net/<host>`, dove Claude Code rifiuta di risolvere i percorsi per progettazione; la directory era fine e riprovare non poteva aiutare.3033Prima della v2.1.261, questo messaggio appariva anche per ogni `/add-dir <subdirectory>` quando la directory di lavoro era su un automount `/net/<host>`, dove Claude Code rifiuta di risolvere i percorsi per progettazione; la directory era fine e riprovare non poteva aiutare.

2969 3034 


2971 Workspace non attendibile all'avvio di Remote Control3036 Workspace non attendibile all'avvio di Remote Control

2972</h3>3037</h3>

2973 3038 

2974Hai avviato la modalità server [Remote Control](/docs/it/remote-control) con `claude remote-control` o il suo alias `claude rc` in una directory che non hai attendibile, e il comando non potrebbe chiederti se fidarti di essa. Ad esempio, l'input standard o l'output standard del comando non è un terminale perché uno di essi è reindirizzato o piped. Il comando esce con codice 1:3039Avete avviato la modalità server [Remote Control](/docs/it/remote-control) con `claude remote-control` o il suo alias `claude rc` in una directory che non avete attendibile, e il comando non ha potuto chiedervi se fidarvi di essa. Ad esempio, l'input standard o l'output standard del comando non è un terminale perché uno di essi è reindirizzato o pipato. Il comando esce con codice 1:

2975 3040 

2976```text theme={null}3041```text theme={null}

2977Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.3042Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.

2978```3043```

2979 3044 

2980Due varianti che iniziano anche con `Error: Workspace not trusted.` appaiono in un terminale anche troppo piccolo per mostrare cosa fidarsi della directory attiva, o uno che non ha segnalato la sua dimensione. Ingrandisci la finestra o passa a una finestra terminale normale, quindi esegui di nuovo `claude rc`.3045Due varianti che iniziano anche con `Error: Workspace not trusted.` appaiono anche in un terminale troppo piccolo per mostrare cosa attiva l'attendibilità della directory, o uno che non ha segnalato le sue dimensioni. Ingrandite la finestra o passate a una finestra terminale normale, quindi eseguite di nuovo `claude rc`.

2981 3046 

2982Nella tua home directory il messaggio è diverso, perché il dialogo di attendibilità dell'area di lavoro non salva mai l'attendibilità per la home directory, quindi accettarlo lì non può soddisfare questo controllo. Prima della v2.1.214, la home directory mostrava il messaggio sopra, il cui consiglio non può avere successo lì.3047Nella vostra home directory il messaggio è diverso, perché la finestra di dialogo di attendibilità dell'area di lavoro non salva mai l'attendibilità per la home directory, quindi accettarla lì non può soddisfare questo controllo. Prima della v2.1.214, la home directory mostrava il messaggio sopra, il cui consiglio non può avere successo lì.

2983 3048 

2984```text theme={null}3049```text theme={null}

2985Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).3050Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).

2986```3051```

2987 3052 

2988Se rispondi `n` o premi Invio alla [domanda `Trust <directory>?`](/docs/it/remote-control#requirements), il comando stampa un messaggio `Remote Control did not start` che nomina la directory e esce con codice 1. Esegui di nuovo `claude rc` per rispondere `y`.3053Se rispondete `n` o premete Invio alla domanda [`Trust <directory>?`](/docs/it/remote-control#requirements), il comando stampa un messaggio `Remote Control did not start` che nomina la directory ed esce con codice 1. Eseguite di nuovo `claude rc` per rispondere `y`.

2989 3054 

2990**Cosa fare:**3055**Cosa fare:**

2991 3056 

2992* Fidati della directory da un terminale per primo: esegui `claude rc` lì e rispondi `y`, o esegui `claude` lì e accetta il [dialogo di attendibilità dell'area di lavoro](/docs/it/permissions#project-allow-rules-and-workspace-trust), quindi esegui di nuovo il tuo comando originale3057* Attendete la directory da un terminale prima: eseguite `claude rc` lì e rispondete `y`, oppure eseguite `claude` lì e accettate la [finestra di dialogo di attendibilità dell'area di lavoro](/docs/it/permissions#project-allow-rules-and-workspace-trust), quindi eseguite di nuovo il vostro comando originale

2993* Nella tua home directory, cambia a una directory del progetto e avvia Remote Control lì3058* Nella vostra home directory, cambiate a una directory di progetto e avviate Remote Control lì

2994 3059 

2995Prima della v2.1.284, il comando non chiedeva mai, nemmeno in un terminale.3060Prima della v2.1.284, il comando non ha mai chiesto, nemmeno in un terminale.

2996 3061 

2997<h3 id="not-carried-over-to-the-sessions-remote-control-starts">3062<h3 id="not-carried-over-to-the-sessions-remote-control-starts">

2998 Non trasportato alle sessioni che Remote Control avvia3063 Non trasportato alle sessioni che Remote Control avvia

2999</h3>3064</h3>

3000 3065 

3001Hai avviato [Remote Control](/docs/it/remote-control) con un flag `claude` globale prima del verbo `remote-control`, uno che limiterebbe o configurerebbe le sessioni che Remote Control avvia, come `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools`, o `--mcp-config`. Un flag posizionato prima del verbo non raggiunge mai quelle sessioni. Claude Code rifiuta di avviare invece, nominando il flag:3066Avete avviato [Remote Control](/docs/it/remote-control) con un flag `claude` globale prima del verbo `remote-control`, uno che limiterebbe o configurerebbe le sessioni che Remote Control avvia, come `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools` o `--mcp-config`. Un flag posizionato prima del verbo non raggiunge mai quelle sessioni. Claude Code rifiuta di avviare invece, nominando il flag:

3002 3067 

3003```text theme={null}3068```text theme={null}

3004Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).3069Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).

3005```3070```

3006 3071 

3007Claude Code non rifiuta i flag globali che sono innocui da eliminare, come `--verbose`, `--model`, o un `--session-id` o `--plugin-dir` iniettato dal wrapper: li ignora e Remote Control si avvia.3072Claude Code non rifiuta i flag globali che sono innocui da eliminare, come `--verbose`, `--model` o un `--session-id` o `--plugin-dir` iniettato da wrapper: li ignora e Remote Control si avvia.

3008 3073 

3009Claude Code rifiuta anche di avviare per un flag globale che non riconosce ancora come innocuo, quindi un flag aggiunto in una versione più recente può apparire in questo messaggio fino a quando una versione successiva non lo contrassegna come innocuo.3074Claude Code rifiuta anche di avviare per un flag globale che non riconosce ancora come innocuo, quindi un flag aggiunto in una versione più recente può apparire in questo messaggio fino a quando una versione successiva non lo contrassegna come innocuo.

3010 3075 

3011**Cosa fare:**3076**Cosa fare:**

3012 3077 

3013* Rimuovi il flag da prima del verbo e passa [le opzioni proprie di Remote Control](/docs/it/remote-control#start-a-remote-control-session) dopo di esso; `claude remote-control --help` le elenca3078* Rimuovete il flag da prima del verbo e passate [le opzioni proprie di Remote Control](/docs/it/remote-control#start-a-remote-control-session) dopo di esso; `claude remote-control --help` le elenca

3014* Quando il flag rifiutato è `--permission-mode`, esegui `claude remote-control --permission-mode <mode>` per impostare la modalità di permesso per le sessioni che Remote Control avvia3079* Quando il flag rifiutato è `--permission-mode`, eseguite `claude remote-control --permission-mode <mode>` per impostare la modalità di permesso per le sessioni che Remote Control avvia

3015 3080 

3016Prima della v2.1.248, `claude remote-control` non accettava i suoi flag quando un flag globale veniva per primo, e il comando falliva con un errore `unknown option`.3081Prima della v2.1.248, `claude remote-control` non accettava i suoi flag quando un flag globale veniva per primo, e il comando falliva con un errore di opzione sconosciuta.

3017 3082 

3018<h3 id="claude-import-is-not-yet-available-in-this-build">3083<h3 id="claude-import-is-not-yet-available-in-this-build">

3019 claude import non è ancora disponibile in questa build3084 claude import non è ancora disponibile in questa build

3020</h3>3085</h3>

3021 3086 

3022Hai eseguito [`claude import`](/docs/it/cli-reference#cli-commands), e Claude Code ha trovato il flusso di importazione disattivato, quindi il comando esce con codice 1 invece di avviare l'importazione. Prima della v2.1.222, una build con il flusso di importazione disattivato trattava `import` come un prompt e avviava una sessione interattiva invece di stampare questo messaggio.3087Avete eseguito [`claude import`](/docs/it/cli-reference#cli-commands), e Claude Code ha trovato il flusso di importazione disattivato, quindi il comando esce con codice 1 invece di avviare l'importazione. Prima della v2.1.222, una build con il flusso di importazione disattivato trattava `import` come un prompt e avviava una sessione interattiva invece di stampare questo messaggio.

3023 3088 

3024```text theme={null}3089```text theme={null}

3025`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.3090`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.


3027 3092 

3028Claude Code attiva `claude import` attraverso un feature flag che recupera da Anthropic e memorizza nella cache su disco. Questo messaggio significa che il valore memorizzato nella cache è disattivato. La causa è di solito una delle seguenti:3093Claude Code attiva `claude import` attraverso un feature flag che recupera da Anthropic e memorizza nella cache su disco. Questo messaggio significa che il valore memorizzato nella cache è disattivato. La causa è di solito una delle seguenti:

3029 3094 

3030* Non hai avviato una sessione dall'installazione, quindi Claude Code non ha ancora recuperato il flag. Il primo `claude import` può stampare questo anche quando la funzione è disponibile per te.3095* Non avete avviato una sessione dall'installazione, quindi Claude Code non ha ancora recuperato il flag. Il primo `claude import` può stampare questo anche quando la funzione è disponibile per voi.

3031* Usi Claude Code attraverso Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o Claude Platform su AWS, o attraverso un [gateway di app Claude](/docs/it/claude-apps-gateway#availability-and-limitations). Claude Code non recupera i feature flag in queste sessioni, quindi `claude import` rimane non disponibile.3096* Utilizzate Claude Code attraverso Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o Claude Platform su AWS, o attraverso un [gateway di app Claude](/docs/it/claude-apps-gateway#availability-and-limitations). Claude Code non recupera i feature flag in queste sessioni, quindi `claude import` rimane non disponibile.

3032* Hai impostato `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_GROWTHBOOK`, o [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/it/env-vars), che disattivano il recupero dei feature flag, quindi `claude import` rimane non disponibile.3097* Avete impostato `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_GROWTHBOOK` o [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/it/env-vars), che disattivano il recupero dei feature flag, quindi `claude import` rimane non disponibile.

3033 3098 

3034**Cosa fare:**3099**Cosa fare:**

3035 3100 

3036* Su un'installazione nuova, avvia `claude`, attendi che la sessione si carichi, esci, ed esegui di nuovo `claude import`3101* Su un'installazione nuova, avviate `claude`, aspettate che la sessione si carichi, uscite ed eseguite di nuovo `claude import`

3037* Dove il recupero dei feature flag rimane disattivato, configura tu stesso: aggiungi server MCP con [`claude mcp add`](/docs/it/mcp#installing-mcp-servers), e crea i file [`CLAUDE.md`](/docs/it/memory#how-claude-md-files-load), [skills e comandi](/docs/it/skills#where-skills-live), e [subagenti](/docs/it/sub-agents#choose-the-subagent-scope) che vuoi trasportare. Il messaggio nomina anche `~/.claude/settings.json`. Della configurazione che `claude import` trasporta, quel file contiene solo la [modalità di permesso](/docs/it/settings-reference#permission-settings); Claude Code non legge i server MCP da esso.3102* Dove il recupero dei feature flag rimane disattivato, impostate la configurazione voi stessi: aggiungete server MCP con [`claude mcp add`](/docs/it/mcp#installing-mcp-servers), e create i file [`CLAUDE.md`](/docs/it/memory#how-claude-md-files-load), [skills e comandi](/docs/it/skills#where-skills-live) e [subagenti](/docs/it/sub-agents#choose-the-subagent-scope) che volete trasportare. Il messaggio nomina anche `~/.claude/settings.json`. Della configurazione che `claude import` trasporta, quel file contiene solo la [modalità di permesso](/docs/it/settings-reference#permission-settings); Claude Code non legge i server MCP da esso.

3038 3103 

3039<h3 id="could-not-read-claude-code-config">3104<h3 id="could-not-read-claude-code-config">

3040 Non potrebbe leggere la configurazione di Claude Code3105 Non è stato possibile leggere la configurazione di Claude Code

3041</h3>3106</h3>

3042 3107 

3043Hai eseguito [`claude import`](/docs/it/cli-reference#cli-commands) mentre Claude Code non potrebbe analizzare `~/.claude.json`, il file dove memorizza il tuo login e lo stato per progetto. Il sottocomando legge quel file per controllare la disponibilità ma non mostra il dialogo di recupero che la sessione interattiva mostra, quindi esce con codice 1. Prima della v2.1.222, `claude import` con un file di configurazione illeggibile avviava una sessione interattiva, il cui dialogo di recupero gestiva il file.3108Avete eseguito [`claude import`](/docs/it/cli-reference#cli-commands) mentre Claude Code non poteva analizzare `~/.claude.json`, il file dove memorizza il vostro login e lo stato per progetto. Il sottocomando legge quel file per controllare la disponibilità ma non mostra la finestra di dialogo di recupero che la sessione interattiva mostra, quindi esce con codice 1. Prima della v2.1.222, `claude import` con un file di configurazione illeggibile avviava una sessione interattiva, la cui finestra di dialogo di recupero gestiva il file.

3044 3109 

3045```text theme={null}3110```text theme={null}

3046Could not read Claude Code config — run `claude` with no arguments to recover it.3111Could not read Claude Code config — run `claude` with no arguments to recover it.


3048 3113 

3049**Cosa fare:**3114**Cosa fare:**

3050 3115 

3051* Esegui `claude` senza argomenti. Claude Code rileva il file non valido e offre di ripristinarlo. Quindi esegui di nuovo `claude import`.3116* Eseguite `claude` senza argomenti. Claude Code rileva il file non valido e offre di ripristinarlo. Quindi eseguite di nuovo `claude import`.

3052* Per mantenere le modifiche manuali che hai fatto, correggi la sintassi JSON in `~/.claude.json` in un editor invece, quindi riesegui `claude import`3117* Per mantenere le modifiche manuali che avete fatto, correggete la sintassi JSON in `~/.claude.json` in un editor invece, quindi rieseguite `claude import`

3053 3118 

3054<h3 id="could-not-import-a-server-from-claude-desktop">3119<h3 id="could-not-import-a-server-from-claude-desktop">

3055 Non potrebbe importare un server da Claude Desktop3120 Non è stato possibile importare un server da Claude Desktop

3056</h3>3121</h3>

3057 3122 

3058Claude Code non potrebbe aggiungere uno dei server che hai selezionato in `claude mcp add-from-claude-desktop`. Il comando importa comunque gli altri server selezionati e stampa una riga per server che non potrebbe aggiungere. Prima della v2.1.205, il primo server che falliva fermava l'importazione.3123Claude Code non ha potuto aggiungere uno dei server che avete selezionato in `claude mcp add-from-claude-desktop`. Il comando importa comunque gli altri server selezionati e stampa una riga per server che non ha potuto aggiungere. Prima della v2.1.205, il primo server che falliva fermava l'importazione.

3059 3124 

3060```text theme={null}3125```text theme={null}

3061Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.3126Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.

3062```3127```

3063 3128 

3064Il testo dopo il nome del server è il motivo. Il più comune è il controllo del nome: Claude Desktop consente caratteri nei nomi dei server, come spazi e punti, che `claude mcp` limita a lettere, numeri, trattini e sottolineature. Altri motivi includono una configurazione del server che fallisce la validazione e un server bloccato dalla [politica MCP](/docs/it/managed-mcp) della tua organizzazione.3129Il testo dopo il nome del server è il motivo. Il più comune è il controllo del nome: Claude Desktop consente caratteri nei nomi dei server, come spazi e punti, che `claude mcp` limita a lettere, numeri, trattini e sottolineature. Altri motivi includono una configurazione del server che fallisce la convalida e un server bloccato dalla [politica MCP](/docs/it/managed-mcp) della vostra organizzazione.

3065 3130 

3066**Cosa fare:**3131**Cosa fare:**

3067 3132 

3068* Rinomina il server in `claude_desktop_config.json` per usare solo lettere, numeri, trattini e sottolineature, quindi esegui di nuovo `claude mcp add-from-claude-desktop`3133* Rinominate il server in `claude_desktop_config.json` per utilizzare solo lettere, numeri, trattini e sottolineature, quindi eseguite di nuovo `claude mcp add-from-claude-desktop`

3069* Aggiungi quel server direttamente con `claude mcp add` o `claude mcp add-json` con un nome valido. Vedi [Import MCP servers from Claude Desktop](/docs/it/mcp#import-mcp-servers-from-claude-desktop).3134* Aggiungete quel server direttamente con `claude mcp add` o `claude mcp add-json` con un nome valido. Vedete [Import MCP servers from Claude Desktop](/docs/it/mcp#import-mcp-servers-from-claude-desktop).

3070 3135 

3071<h3 id="cannot-add-mcp-server-to-the-managed-scope">3136<h3 id="cannot-add-mcp-server-to-the-managed-scope">

3072 Non potrebbe aggiungere il server MCP allo scope gestito3137 Non è possibile aggiungere un server MCP all'ambito gestito

3073</h3>3138</h3>

3074 3139 

3075Hai eseguito `claude mcp add` o `claude mcp add-json` con `--scope managed`. Quello scope contiene i server che la tua organizzazione fornisce attraverso l'impostazione gestita [`managedMcpServers`](/docs/it/settings-reference#managedmcpservers). Claude Code li legge solo dalle impostazioni gestite, quindi il comando non può scrivere un server in quello scope.3140Avete eseguito `claude mcp add` o `claude mcp add-json` con `--scope managed`. Quell'ambito contiene i server che la vostra organizzazione fornisce attraverso l'impostazione gestita [`managedMcpServers`](/docs/it/settings-reference#managedmcpservers). Claude Code li legge dalle impostazioni gestite solo, quindi il comando non può scrivere un server in quell'ambito.

3076 3141 

3077```text theme={null}3142```text theme={null}

3078Cannot add MCP server to scope: managed3143Cannot add MCP server to scope: managed


3080 3145 

3081**Cosa fare:**3146**Cosa fare:**

3082 3147 

3083* Aggiungi il server a uno scope in cui puoi scrivere: `local`, `user`, o `project`. Senza `--scope`, il comando usa `local`. Vedi [MCP installation scopes](/docs/it/mcp#mcp-installation-scopes)3148* Aggiungete il server a un ambito in cui potete scrivere: `local`, `user` o `project`. Senza `--scope`, il comando utilizza `local`. Vedete [MCP installation scopes](/docs/it/mcp#mcp-installation-scopes)

3084* Per fornire il server a ogni utente nella tua organizzazione, aggiungilo a [`managedMcpServers`](/docs/it/settings-reference#managedmcpservers) nelle impostazioni gestite che distribuisci3149* Per fornire il server a ogni utente della vostra organizzazione, aggiungetelo a [`managedMcpServers`](/docs/it/settings-reference#managedmcpservers) nelle impostazioni gestite che distribuite

3085 3150 

3086<h3 id="cant-read-mcp-json">3151<h3 id="cant-read-mcp-json">

3087 Non potrebbe leggere .mcp.json3152 Non è possibile leggere .mcp.json

3088</h3>3153</h3>

3089 3154 

3090Un comando che legge il [`.mcp.json`](/docs/it/mcp#project-scope) del progetto, come `claude mcp add` o `claude mcp add-json` con `--scope project`, o `claude mcp remove`, ha trovato che il file nella tua directory corrente non è un file regolare o è più grande di 2 MiB, quindi esce con questo errore invece di leggere il file.3155Un comando che legge il [`.mcp.json`](/docs/it/mcp#project-scope) del progetto, come `claude mcp add` o `claude mcp add-json` con `--scope project`, o `claude mcp remove`, ha trovato che il file nella vostra directory corrente non è un file regolare o è più grande di 2 MiB, quindi esce con questo errore invece di leggere il file.

3091 3156 

3092```text theme={null}3157```text theme={null}

3093Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.3158Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.

3094```3159```

3095 3160 

3096Prima della v2.1.257, un FIFO a `.mcp.json` lasciava il comando in attesa per sempre senza output, e un symlink a un file di dispositivo come `/dev/zero` faceva crescere la memoria fino a quando il processo veniva ucciso.3161Prima della v2.1.257, un FIFO in `.mcp.json` lasciava il comando in attesa per sempre senza output, e un symlink a un file di dispositivo come `/dev/zero` faceva crescere la memoria fino a quando il processo non veniva ucciso.

3162 

3163**Cosa fare:**

3164 

3165* Controllate cosa si trova in `.mcp.json` nella vostra directory corrente. Sostituitelo con un file JSON ordinario nel [formato project-scope](/docs/it/mcp#project-scope), oppure eliminatelo, quindi eseguite di nuovo il comando.

3166 

3167<h3 id="mcp-server-was-not-saved-or-removed">

3168 Il server MCP non è stato salvato o rimosso

3169</h3>

3170 

3171Avete eseguito `claude mcp add`, `claude mcp add-json` o `claude mcp remove` per un server nell'ambito `user` o `local` [scope](/docs/it/mcp#mcp-installation-scopes). Entrambi gli ambiti sono memorizzati in `~/.claude.json`, e la modifica non è in quel file quando Claude Code lo legge di nuovo dopo la scrittura. Il comando esce con questo errore invece della sua riga di successo.

3172 

3173```text theme={null}

3174MCP server "example" was not saved to /home/user/.claude.json. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox, then add the server again.

3175```

3176 

3177Dopo una rimozione, il messaggio legge `was not removed from` e termina con `then remove the server again`. Per un server `local`-scope, il percorso è seguito dalla directory del progetto a cui appartiene la voce, come `(local scope for /path/to/project)`.

3178 

3179Prima della v2.1.283, `claude mcp add`, `claude mcp add-json` e `claude mcp remove` segnalano il successo anche quando la modifica non raggiungeva il file.

3097 3180 

3098**Cosa fare:**3181**Cosa fare:**

3099 3182 

3100* Controlla cosa si trova a `.mcp.json` nella tua directory corrente. Sostituiscilo con un file JSON ordinario nel [formato project-scope](/docs/it/mcp#project-scope), o eliminalo, quindi esegui di nuovo il comando.3183* Rendete il file che il messaggio nomina scrivibile, oppure eseguite il comando al di fuori della sandbox, quindi eseguite di nuovo lo stesso comando di aggiunta o rimozione.

3184 

3185<h3 id="mcp-server-may-not-have-been-saved-or-removed">

3186 Il server MCP potrebbe non essere stato salvato o rimosso

3187</h3>

3188 

3189Avete eseguito `claude mcp add`, `claude mcp add-json` o `claude mcp remove` per un server nell'ambito `user` o `local` [scope](/docs/it/mcp#mcp-installation-scopes), e Claude Code non ha potuto leggere `~/.claude.json` di nuovo per confermare la modifica. La modifica potrebbe essere o non essere su disco. Il testo tra parentesi è l'errore da quella lettura.

3190 

3191```text theme={null}

3192MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.

3193```

3194 

3195Dopo una rimozione, il messaggio legge `may not have been removed` e termina con `then remove the server again if it is still listed`.

3196 

3197Prima della v2.1.283, i comandi segnalano il successo anche quando la modifica non poteva essere confermata.

3198 

3199**Cosa fare:**

3200 

3201* Eseguite `claude mcp get <name>` per controllare se la modifica è su disco. Per un server `local`-scope, eseguitelo dalla directory del progetto a cui appartiene il server, poiché l'ambito locale è per progetto.

3202* Se il server manca dopo un'aggiunta, o è ancora elencato dopo una rimozione, eseguite di nuovo lo stesso comando di aggiunta o rimozione.

3101 3203 

3102<h3 id="anthropic-hosted-and-doesnt-support-local-oauth">3204<h3 id="anthropic-hosted-and-doesnt-support-local-oauth">

3103 Il server è ospitato da Anthropic e non supporta OAuth locale3205 Il server è ospitato da Anthropic e non supporta OAuth locale

3104</h3>3206</h3>

3105 3207 

3106Hai avviato un accesso per un server MCP il cui URL punta a un host connettore ospitato da Anthropic che si autentica attraverso un provider di identità di terze parti. Questi host includono `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com`, e `gcal.mcp.claude.com`. Claude Code rifiuta di avviare il suo flusso OAuth locale per questi host sia dal pannello `/mcp` che da `claude mcp login`, perché [il loro accesso funziona solo attraverso claude.ai](/docs/it/mcp#use-mcp-servers-from-claude-ai).3208Avete avviato un accesso per un server MCP il cui URL punta a un host di connettore ospitato da Anthropic che si autentica attraverso un provider di identità di terze parti. Questi host includono `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com` e `gcal.mcp.claude.com`. Claude Code rifiuta di avviare il suo flusso OAuth locale per questi host sia dal pannello `/mcp` che da `claude mcp login`, perché [il loro accesso funziona solo attraverso claude.ai](/docs/it/mcp#use-mcp-servers-from-claude-ai).

3107 3209 

3108```text theme={null}3210```text theme={null}

3109"gmail" is Anthropic-hosted and doesn't support local OAuth. Connect it via Settings → Connectors on claude.ai (requires `claude login`), then it'll be available here automatically.3211"gmail" is Anthropic-hosted and doesn't support local OAuth. Connect it via Settings → Connectors on claude.ai (requires `claude login`), then it'll be available here automatically.

3110```3212```

3111 3213 

3112Claude Code corrisponde a questi host per URL, quindi il messaggio appare quando un server che hai aggiunto con `claude mcp add` o in `.mcp.json` punta a uno di loro.

3113 

3114**Cosa fare:**3214**Cosa fare:**

3115 3215 

3116* Rimuovi la tua voce con `claude mcp remove <name>`, così non può nascondere il connettore claude.ai allo stesso URL3216* Rimuovete la vostra voce con `claude mcp remove <name>`, in modo che non possa nascondere il connettore claude.ai allo stesso URL

3117* Dopo averlo rimosso, connetti il servizio su [claude.ai/customize/connectors](https://claude.ai/customize/connectors), mentre sei connesso all'account che usi in Claude Code. Una volta connesso, [il connettore appare in Claude Code automaticamente](/docs/it/mcp#use-mcp-servers-from-claude-ai) se il tuo metodo di autenticazione attivo è un accesso di sottoscrizione claude.ai3217* Dopo averlo rimosso, collegate il servizio su [claude.ai/customize/connectors](https://claude.ai/customize/connectors), mentre siete connessi all'account che utilizzate in Claude Code. Una volta collegato, [il connettore appare in Claude Code automaticamente](/docs/it/mcp#use-mcp-servers-from-claude-ai) se il vostro metodo di autenticazione attivo è un accesso di sottoscrizione a claude.ai

3118 3218 

3119<h3 id="server-rejected-the-authorization-header-minted-by-the-configured-headershelper">3219<h3 id="server-rejected-the-authorization-header-minted-by-the-configured-headershelper">

3120 Il server ha rifiutato l'intestazione Authorization coniata dal headersHelper configurato3220 Il server ha rifiutato l'intestazione Authorization creata dal headersHelper configurato

3121</h3>3221</h3>

3122 3222 

3123Un server MCP il cui [`headersHelper`](/docs/it/mcp#use-dynamic-headers-for-custom-authentication) fornisce l'intestazione `Authorization` ha risposto alla connessione con HTTP 401 o 403, quindi Claude Code segnala la connessione come fallita. Poiché l'helper fornisce l'intestazione `Authorization`, Claude Code [non ricade su OAuth](/docs/it/mcp#authenticate-with-remote-mcp-servers) per il server:3223Un server MCP il cui [`headersHelper`](/docs/it/mcp#use-dynamic-headers-for-custom-authentication) fornisce l'intestazione `Authorization` ha risposto alla connessione con HTTP 401 o 403, quindi Claude Code segnala la connessione come fallita. Poiché l'helper fornisce l'intestazione `Authorization`, Claude Code [non ricade su OAuth](/docs/it/mcp#authenticate-with-remote-mcp-servers) per il server:


3130 3230 

3131**Cosa fare:**3231**Cosa fare:**

3132 3232 

3133* Esegui il comando `headersHelper` tu stesso nel modo in cui Claude Code lo esegue: dalla [directory in cui Claude Code lo esegue](/docs/it/mcp#where-the-helper-runs), con le [variabili di ambiente che Claude Code imposta per esso](/docs/it/mcp#use-dynamic-headers-for-custom-authentication), e senza le [variabili di credenziale che Claude Code rimuove](/docs/it/mcp#which-variables-a-helper-can-read) per un server da un `.mcp.json` del progetto, un plugin, o un file agente del progetto. Controlla che stampi un valore `Authorization` che l'endpoint del server accetta3233* Eseguite il comando `headersHelper` voi stessi nel modo in cui Claude Code lo esegue: dalla [directory in cui Claude Code lo esegue](/docs/it/mcp#where-the-helper-runs), con le [variabili di ambiente che Claude Code imposta per esso](/docs/it/mcp#use-dynamic-headers-for-custom-authentication), e senza le [variabili di credenziale che Claude Code rimuove](/docs/it/mcp#which-variables-a-helper-can-read) per un server da un `.mcp.json` di progetto, un plugin o un file di agente di progetto. Controllate che stampi un valore `Authorization` che l'endpoint del server accetta

3134* Dopo aver corretto l'helper o la sua fonte di credenziale, seleziona il server in `/mcp` e scegli **Reconnect**3234* Dopo aver corretto l'helper o la sua fonte di credenziale, selezionate il server in `/mcp` e scegliete **Reconnect**

3135 3235 

3136Prima della v2.1.248, Claude Code eseguiva la scoperta OAuth per un server il cui helper forniva l'intestazione `Authorization`. Quella scoperta potrebbe fallire con `Incompatible auth server: does not support dynamic client registration` invece di segnalare la credenziale rifiutata.3236Prima della v2.1.248, Claude Code eseguiva la scoperta OAuth per un server il cui helper forniva l'intestazione `Authorization`. Quella scoperta potrebbe fallire con `Incompatible auth server: does not support dynamic client registration` invece di segnalare la credenziale rifiutata.

3137 3237 


3139 Strumento di prompt di permesso MCP non trovato3239 Strumento di prompt di permesso MCP non trovato

3140</h3>3240</h3>

3141 3241 

3142Lo strumento che hai passato a [`--permission-prompt-tool`](/docs/it/cli-reference#cli-flags) non era tra gli strumenti MCP connessi quando l'esecuzione ha avuto bisogno per la prima volta di una decisione di permesso, perché il suo server non si è mai connesso o perché nessun server connesso espone uno strumento con quel nome. Claude Code invia comunque il tuo prompt: l'esecuzione [non interattiva](/docs/it/headless) esce con questo errore, e codice di uscita 1, alla prima chiamata di strumento, quindi non produce alcuna risposta anche se la richiesta è stata fatta. Prima del primo prompt, Claude Code attende fino al timeout di connessione per server di 30 secondi impostato da [`MCP_TIMEOUT`](/docs/it/env-vars) affinché quel server si connetta. Prima della v2.1.206, l'avvio non attendeva che il server finisse di connettersi, quindi un server che si avvia lentamente ma sano produceva questo errore anche.3242Lo strumento che avete passato a [`--permission-prompt-tool`](/docs/it/cli-reference#cli-flags) non era tra gli strumenti MCP connessi quando l'esecuzione ha avuto bisogno per la prima volta di una decisione di permesso, perché il suo server non si è mai connesso o perché nessun server connesso espone uno strumento con quel nome. Claude Code invia comunque il vostro prompt: l'esecuzione [non interattiva](/docs/it/headless) esce con questo errore, e codice di uscita 1, alla prima chiamata dello strumento, quindi non produce alcuna risposta anche se la richiesta è stata fatta. Prima del primo prompt, Claude Code aspetta fino al timeout di connessione per server di 30 secondi impostato da [`MCP_TIMEOUT`](/docs/it/env-vars) affinché quel server si connetta. Prima della v2.1.206, l'avvio non aspettava che il server finisse di connettersi, quindi un server che si avvia lentamente ma sano produceva questo errore anche.

3143 3243 

3144```text theme={null}3244```text theme={null}

3145Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none3245Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none


3149 3249 

3150**Cosa fare:**3250**Cosa fare:**

3151 3251 

3152* Controlla che il server si avvii e rimanga connesso: esegui `claude mcp list` nella stessa directory e conferma che il server è elencato come connesso3252* Controllate che il server si avvii e rimanga connesso: eseguite `claude mcp list` nella stessa directory e confermate che il server è elencato come connesso

3153* Conferma che il nome dello strumento corrisponda al nome `mcp__<server>__<tool>` che il server espone3253* Confermate che il nome dello strumento corrisponda al nome `mcp__<server>__<tool>` che il server espone

3154* Se il server ha bisogno di più di 30 secondi per avviarsi, aumenta [`MCP_TIMEOUT`](/docs/it/env-vars)3254* Se il server ha bisogno di più di 30 secondi per avviarsi, aumentate [`MCP_TIMEOUT`](/docs/it/env-vars)

3155 3255 

3156<h3 id="oauth-callback-port-is-already-in-use">3256<h3 id="oauth-callback-port-is-already-in-use">

3157 La porta di callback OAuth è già in uso3257 La porta di callback OAuth è già in uso

3158</h3>3258</h3>

3159 3259 

3160Quando accedi a un server MCP remoto con OAuth, Claude Code avvia un listener locale per ricevere il callback di accesso. Se la porta di cui quel listener ha bisogno è tenuta da un altro processo, l'accesso fallisce con questo messaggio. Questo accade principalmente con una [porta di callback fissa](/docs/it/mcp#use-a-fixed-oauth-callback-port) impostata attraverso la variabile [`MCP_OAUTH_CALLBACK_PORT`](/docs/it/env-vars) o `--callback-port`, poiché senza una Claude Code sceglie una porta disponibile.3260Quando vi accedete a un server MCP remoto con OAuth, Claude Code avvia un listener locale per ricevere il callback di accesso. Se la porta di cui quel listener ha bisogno è tenuta da un altro processo, l'accesso fallisce con questo messaggio. Questo accade principalmente con una [porta di callback fissa](/docs/it/mcp#use-a-fixed-oauth-callback-port) impostata attraverso la variabile [`MCP_OAUTH_CALLBACK_PORT`](/docs/it/env-vars) o `--callback-port`, poiché senza una Claude Code sceglie una porta disponibile.

3161 3261 

3162```text theme={null}3262```text theme={null}

3163OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.3263OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.


3167 3267 

3168**Cosa fare:**3268**Cosa fare:**

3169 3269 

3170* Esegui il comando dal messaggio per trovare il processo che tiene la porta, e fermalo o attendi che finisca3270* Eseguite il comando dal messaggio per trovare il processo che tiene la porta, e fermatelo o aspettate che finisca

3171* Se un altro programma ha bisogno permanentemente di quella porta, registra un URI di reindirizzamento diverso con il server e imposta la sua porta con `MCP_OAUTH_CALLBACK_PORT` o `--callback-port`, a seconda di quale usi3271* Se un altro programma ha bisogno di quella porta in modo permanente, registrate un URI di reindirizzamento diverso con il server e impostate la sua porta con `MCP_OAUTH_CALLBACK_PORT` o `--callback-port`, a seconda di quale utilizzate

3172* Quindi avvia di nuovo l'accesso, ad esempio selezionando il server in `/mcp`3272* Quindi avviate di nuovo l'accesso, ad esempio selezionando il server in `/mcp`

3173 3273 

3174<h3 id="no-available-ports-for-oauth-redirect">3274<h3 id="no-available-ports-for-oauth-redirect">

3175 Nessuna porta disponibile per il reindirizzamento OAuth3275 Nessuna porta disponibile per il reindirizzamento OAuth

3176</h3>3276</h3>

3177 3277 

3178Quando accedi a un server MCP remoto con [OAuth](/docs/it/mcp#authenticate-with-remote-mcp-servers), Claude Code avvia un listener locale per ricevere il callback di accesso. L'accesso fallisce con questo messaggio quando Claude Code non può associare una porta locale per esso. Qualcosa sulla macchina sta impedendo di ascoltare su `127.0.0.1`, ad esempio software di sicurezza o una politica sandbox che nega i listener locali.3278Quando vi accedete a un server MCP remoto con [OAuth](/docs/it/mcp#authenticate-with-remote-mcp-servers), Claude Code avvia un listener locale per ricevere il callback di accesso. L'accesso fallisce con questo messaggio quando Claude Code non riesce a legare una porta locale per esso. Qualcosa sulla macchina sta impedendo di ascoltare su `127.0.0.1`, ad esempio software di sicurezza o una politica sandbox che nega i listener locali.

3179 3279 

3180```text theme={null}3280```text theme={null}

3181No available ports for OAuth redirect3281No available ports for OAuth redirect

3182```3282```

3183 3283 

3184Prima della v2.1.268, Claude Code non ricadeva su una porta assegnata dal sistema operativo, quindi il messaggio appariva anche quando solo le sue porte auto-scelte non potevano essere associate. Questo può accadere su host Windows dove Hyper-V riserva intervalli di porte che coprono le porte che Claude Code sceglie.3284Prima della v2.1.268, Claude Code non ricadeva su una porta assegnata dal sistema operativo, quindi il messaggio appariva anche quando solo le porte auto-scelte non potevano essere legate. Questo può accadere su host Windows dove Hyper-V riserva intervalli di porte che coprono le porte che Claude Code sceglie.

3185 3285 

3186**Cosa fare:**3286**Cosa fare:**

3187 3287 

3188* Controlla se il software di sicurezza o una politica sandbox blocca i processi dall'ascolto su `127.0.0.1`, e consenti a Claude Code di associare una porta locale3288* Controllate se il software di sicurezza o una politica sandbox blocca i processi dall'ascolto su `127.0.0.1`, e consentite a Claude Code di legare una porta locale

3189* Quindi avvia di nuovo l'accesso, ad esempio selezionando il server in `/mcp`3289* Quindi avviate di nuovo l'accesso, ad esempio selezionando il server in `/mcp`

3190 3290 

3191<h3 id="security-review-fails-without-origin-head">3291<h3 id="security-review-fails-without-origin-head">

3192 /security-review fallisce senza origin/HEAD3292 /security-review fallisce senza origin/HEAD

3193</h3>3293</h3>

3194 3294 

3195[`/security-review`](/docs/it/commands#all-commands) costruisce il suo contesto di revisione facendo il diff del tuo branch rispetto a `origin/HEAD`, il ref locale che registra quale branch è il predefinito sul tuo remote `origin`. Quando quel ref non esiste, i comandi git che raccolgono il diff falliscono e la revisione si ferma prima di iniziare.3295[`/security-review`](/docs/it/commands#all-commands) costruisce il suo contesto di revisione facendo il diff del vostro ramo rispetto a `origin/HEAD`, il ref locale che registra quale ramo è il predefinito sul vostro remote `origin`. Quando quel ref non esiste, i comandi git che raccolgono il diff falliscono e la revisione si ferma prima di iniziare.

3196 3296 

3197```text theme={null}3297```text theme={null}

3198Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]3298Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]


3201'git <command> [<revision>...] -- [<file>...]'3301'git <command> [<revision>...] -- [<file>...]'

3202```3302```

3203 3303 

3204Il messaggio può citare `git log` o un diverso `git diff` invece. Git crea `origin/HEAD` solo quando il remote pubblicizza un branch predefinito e il tuo refspec di fetch lo copre, che un `git clone` completo di un remote con commit fa. Il ref è mancante in questi setup:3304Il messaggio potrebbe citare `git log` o un diverso `git diff` invece. Git crea `origin/HEAD` solo quando il remote pubblicizza un ramo predefinito e il vostro refspec di fetch lo copre, cosa che un `git clone` completo di un remote con commit fa. Il ref manca in queste configurazioni:

3205 3305 

3206* Un checkout single-branch o CI, che recupera un refspec troppo stretto3306* Un checkout single-branch o CI, che recupera un refspec troppo stretto

3207* Un remote il cui server-side HEAD punta a un branch che nessuno ha spinto3307* Un remote il cui server-side HEAD punta a un ramo che nessuno ha spinto

3208* Un repository senza un remote `origin`, o uno da cui non hai mai recuperato3308* Un repository senza remote `origin`, o uno da cui non avete mai recuperato

3209 3309 

3210Claude Code mostra lo stesso errore per qualsiasi skill che [inietta contesto dinamico](/docs/it/skills#when-an-injected-command-fails), e un comando iniettato fallito interrompe l'invocazione di quella skill. Due stringhe sibling si attivano prima che il comando venga eseguito affatto:3310Claude Code mostra lo stesso errore per qualsiasi skill che [inietta contesto dinamico](/docs/it/skills#when-an-injected-command-fails), e un comando iniettato fallito interrompe l'invocazione di quella skill. Due stringhe sibling si attivano prima che il comando venga eseguito:

3211 3311 

3212* `Shell command permission check failed for pattern "..."`: il controllo di permesso del comando non ha consentito. [Permission checks on injected commands](/docs/it/skills#permission-checks-on-injected-commands) copre quali risultati interrompono in ogni modalità di permesso e come pre-approvare un comando con `allowed-tools`3312* `Shell command permission check failed for pattern "..."`: il controllo di permesso del comando non lo ha consentito. [Permission checks on injected commands](/docs/it/skills#permission-checks-on-injected-commands) copre quali risultati interrompono in ogni modalità di permesso e come pre-approvare un comando con `allowed-tools`

3213* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: il frontmatter della skill richiede bash su una macchina senza di esso. Installa Git per Windows o cambia il frontmatter a `shell: powershell`. Vedi [How injected commands run](/docs/it/skills#how-injected-commands-run)3313* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: il frontmatter della skill richiede bash su una macchina senza di esso. Installate Git per Windows o cambiate il frontmatter a `shell: powershell`. Vedete [How injected commands run](/docs/it/skills#how-injected-commands-run)

3214 3314 

3215**Cosa fare:**3315**Cosa fare:**

3216 3316 

3217* Crea il ref nominando il branch predefinito del tuo remote: `git remote set-head origin <default-branch>`. Questo funziona ogni volta che il ref di tracciamento locale `origin/<default-branch>` esiste. Se non esiste, come nei cloni single-branch, recupera prima il branch: esegui `git remote set-branches --add origin <branch>`, quindi `git fetch origin`, quindi riesegui il comando set-head. Riesegui `/security-review`.3317* Create il ref nominando il ramo predefinito del vostro remote: `git remote set-head origin <default-branch>`. Questo funziona ogni volta che il ref di tracciamento locale `origin/<default-branch>` esiste. Se non esiste, come nei cloni single-branch, recuperate prima il ramo: eseguite `git remote set-branches --add origin <branch>`, quindi `git fetch origin`, quindi rieseguite il comando set-head. Rieseguite `/security-review`.

3218* Se preferisci non nominare il branch, esegui `git fetch origin` e quindi `git remote set-head origin --auto`, che chiede al remote quale branch è il suo predefinito. Fallisce con `error: Cannot determine remote HEAD` quando il remote non pubblicizza un branch predefinito, perché è vuoto o il suo HEAD punta a un branch che nessuno ha spinto; nomina il branch esplicitamente invece. Fallisce con `error: Not a valid ref` quando il tuo clone non recupera quel branch; allarga il refspec come sopra prima.3318* Se preferite non nominare il ramo, eseguite `git fetch origin` e quindi `git remote set-head origin --auto`, che chiede al remote quale ramo è il suo predefinito. Fallisce con `error: Cannot determine remote HEAD` quando il remote non pubblicizza alcun ramo predefinito, perché è vuoto o il suo HEAD punta a un ramo che nessuno ha spinto; nominate il ramo esplicitamente invece. Fallisce con `error: Not a valid ref` quando il vostro clone non recupera quel ramo; allargare il refspec come sopra prima.

3219* Se il repository non ha un remote, aggiungine uno con `git remote add origin <url>` e recupera prima di creare il ref. Se il remote è vuoto, spinge il tuo branch prima con `git push -u origin HEAD` e nomina quel branch nel comando set-head; `origin/HEAD` quindi punta al branch che hai appena spinto, quindi `/security-review` vede un diff vuoto fino a quando il branch non diverge da esso.3319* Se il repository non ha un remote, aggiungete uno con `git remote add origin <url>` e recuperate prima di creare il ref. Se il remote è vuoto, spingete il vostro ramo prima con `git push -u origin HEAD` e nominate quel ramo nel comando set-head; `origin/HEAD` quindi punta al ramo che avete appena spinto, quindi `/security-review` vede un diff vuoto fino a quando il ramo non diverge da esso.

3220 3320 

3221<h3 id="input-must-be-provided-when-using-print">3321<h3 id="input-must-be-provided-when-using-print">

3222 L'input deve essere fornito quando si usa `--print`3322 L'input deve essere fornito quando si utilizza `--print`

3223</h3>3323</h3>

3224 3324 

3225Bare `claude` ha bisogno che stdout sia un terminale per avviare l'interfaccia utente interattiva. Quando stdout viene reindirizzato, o la console non è un vero terminale, come PowerShell ISE e alcuni riquadri di output IDE, `claude` esegue [in modo non interattivo](/docs/it/headless) invece. Questo è lo stesso modo di `claude -p`, che richiede un prompt, quindi il messaggio nomina `--print` anche se non hai passato il flag. Passare `-p`/`--print` senza prompt e nulla piped su stdin produce lo stesso errore ovunque.3325`claude` nudo ha bisogno che stdout sia un terminale per avviare l'interfaccia utente interattiva. Quando stdout è reindirizzato, o la console non è un vero terminale, come PowerShell ISE e alcuni riquadri di output IDE, `claude` esegue [in modo non interattivo](/docs/it/headless) invece. Questa è la stessa modalità di `claude -p`, che richiede un prompt, quindi il messaggio nomina `--print` anche se non avete passato il flag. Passare `-p`/`--print` senza prompt e nulla pipato su stdin produce lo stesso errore ovunque.

3226 3326 

3227```text theme={null}3327```text theme={null}

3228Error: Input must be provided either through stdin or as a prompt argument when using --print3328Error: Input must be provided either through stdin or as a prompt argument when using --print


3230 3330 

3231**Cosa fare:**3331**Cosa fare:**

3232 3332 

3233* Per l'uso interattivo, esegui `claude` in un vero terminale: Windows Terminal o la console PowerShell piuttosto che ISE, e il terminale integrato del tuo IDE piuttosto che un riquadro di output3333* Per l'uso interattivo, eseguite `claude` in un vero terminale: Windows Terminal o la console PowerShell piuttosto che ISE, e il terminale integrato del vostro IDE piuttosto che un riquadro di output

3234* Per l'uso una tantum, passa il prompt: `claude -p "your question"`, o piped con `echo "your question" | claude -p`3334* Per l'uso una tantum, passate il prompt: `claude -p "your question"`, oppure pipate con `echo "your question" | claude -p`

3235 3335 

3236<h3 id="input-contained-only-whitespace">3336<h3 id="input-contained-only-whitespace">

3237 L'input conteneva solo spazi bianchi3337 L'input conteneva solo spazi bianchi

3238</h3>3338</h3>

3239 3339 

3240In [modalità non interattiva](/docs/it/headless), Claude Code rifiuta un prompt composto interamente da spazi, tabulazioni o newline invece di inviarlo, perché l'API rifiuta i messaggi senza testo visibile. Quale messaggio vedi dipende da dove è venuto il prompt vuoto:3340In [modalità non interattiva](/docs/it/headless), Claude Code rifiuta un prompt composto interamente da spazi, tabulazioni o newline invece di inviarlo, perché l'API rifiuta i messaggi senza testo visibile. Quale messaggio vedete dipende da dove è venuto il prompt vuoto:

3241 3341 

3242* **Argomento prompt o stdin piped per `claude -p`**: `claude` esce con `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`3342* **Argomento prompt o stdin pipato per `claude -p`**: `claude` esce con `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`

3243* **Messaggio inviato a una sessione `--input-format stream-json` o [Agent SDK](/docs/it/agent-sdk/overview) in esecuzione**: Claude Code termina il turno senza chiamare il modello e la sessione rimane utilizzabile. Il rifiuto arriva come messaggio informativo e come testo del risultato del turno: `Blank prompt — the message was only whitespace, so nothing was sent to the model.`3343* **Messaggio inviato a una sessione `--input-format stream-json` o [Agent SDK](/docs/it/agent-sdk/overview) in esecuzione**: Claude Code termina il turno senza chiamare il modello e la sessione rimane utilizzabile. Il rifiuto arriva come messaggio informativo e come testo del risultato del turno: `Blank prompt — the message was only whitespace, so nothing was sent to the model.`

3244 3344 

3245Prima della v2.1.229, Claude Code inviava il messaggio solo spazi bianchi all'API, che rifiutava la richiesta con un errore 400.3345Prima della v2.1.229, Claude Code inviava il messaggio solo spazi bianchi all'API, che rifiutava la richiesta con un errore 400.

3246 3346 

3247**Cosa fare:**3347**Cosa fare:**

3248 3348 

3249* Includi testo visibile nel prompt. Se uno script costruisce il prompt da una variabile o file, controlla che la fonte non sia vuota prima di chiamare Claude Code.3349* Includete testo visibile nel prompt. Se uno script costruisce il prompt da una variabile o file, controllate che la fonte non sia vuota prima di chiamare Claude Code.

3250 3350 

3251<h3 id="stream-json-input-carried-over-256m-characters-with-no-newline">3351<h3 id="stream-json-input-carried-over-256m-characters-with-no-newline">

3252 stream-json input ha trasportato oltre 256M caratteri senza newline3352 L'input stream-json ha superato 256M caratteri senza newline

3253</h3>3353</h3>

3254 3354 

3255Il tuo programma ha inviato più di 268.435.456 caratteri su stdin senza newline a un'esecuzione `claude -p --input-format stream-json`, quindi Claude Code stampa questo errore su stderr e esce con codice 1 invece di bufferizzare più input. Il messaggio dichiara quel budget come `256M`. Prima della v2.1.257, Claude Code bufferizzava tale input senza limiti, facendo crescere la memoria fino a quando il processo si bloccava o veniva ucciso.3355Il vostro programma ha inviato più di 268.435.456 caratteri su stdin senza newline a un'esecuzione `claude -p --input-format stream-json`, quindi Claude Code stampa questo errore su stderr ed esce con codice 1 invece di bufferizzare più input. Il messaggio dichiara quel budget come `256M`. Prima della v2.1.257, Claude Code bufferizzava tale input senza limiti, facendo crescere la memoria fino a quando il processo si bloccava o veniva ucciso.

3256 3356 

3257```text theme={null}3357```text theme={null}

3258Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.3358Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.

3259```3359```

3260 3360 

3261L'input così lungo senza newline di solito significa che il produttore non è affatto un produttore stream-json, come un file binario o output di log semplice piped per errore. Un singolo messaggio oltre il budget fallisce lo stesso controllo.3361L'input così lungo senza newline di solito significa che il produttore non è affatto un produttore stream-json, come un file binario o output di log semplice pipato per errore. Un singolo messaggio oltre il budget fallisce lo stesso controllo.

3262 3362 

3263**Cosa fare:**3363**Cosa fare:**

3264 3364 

3265* Controlla cosa è piped su stdin. Con [`--input-format stream-json`](/docs/it/cli-reference#cli-flags), ogni messaggio deve essere una singola riga JSON terminata da newline3365* Controllate cosa è pipato su stdin. Con [`--input-format stream-json`](/docs/it/cli-reference#cli-flags), ogni messaggio deve essere una riga JSON terminata da newline

3266* Per inviare testo semplice invece, rimuovi `--input-format stream-json`; `claude -p` legge un prompt di testo semplice da stdin per impostazione predefinita3366* Per inviare testo semplice invece, eliminate `--input-format stream-json`; `claude -p` legge un prompt di testo semplice da stdin per impostazione predefinita

3267 3367 

3268<h3 id="unknown-command">3368<h3 id="unknown-command">

3269 Comando sconosciuto3369 Comando sconosciuto

3270</h3>3370</h3>

3271 3371 

3272In una sessione terminale interattiva, hai inviato un nome `/` che non corrisponde a nessun comando in questa sessione, quindi Claude Code segnala il nome invece di eseguire qualcosa:3372In una sessione terminale interattiva, avete inviato un nome `/` che non corrisponde a nessun comando in questa sessione, quindi Claude Code segnala il nome invece di eseguire qualsiasi cosa:

3273 3373 

3274```text theme={null}3374```text theme={null}

3275Unknown command: /hepl. Did you mean /help?3375Unknown command: /hepl. Did you mean /help?


3278Claude Code suggerisce il nome di comando o alias più vicino che il menu elenca in questa sessione. Quando nulla è vicino, il messaggio termina dopo il nome. La causa è di solito una delle seguenti:3378Claude Code suggerisce il nome di comando o alias più vicino che il menu elenca in questa sessione. Quando nulla è vicino, il messaggio termina dopo il nome. La causa è di solito una delle seguenti:

3279 3379 

3280* Un errore di battitura, come `/hepl` per `/help`. [How the command menu matches what you type](/docs/it/commands#how-the-command-menu-matches-what-you-type) copre la scelta di una corrispondenza vicina prima di inviare3380* Un errore di battitura, come `/hepl` per `/help`. [How the command menu matches what you type](/docs/it/commands#how-the-command-menu-matches-what-you-type) copre la scelta di una corrispondenza vicina prima di inviare

3281* Un comando che esiste ma non è disponibile in questa sessione perché un requisito non è soddisfatto, come la tua piattaforma, piano, o metodo di autenticazione. Le voci di risoluzione dei problemi per [`/web-setup`](/docs/it/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) e [`/schedule`](/docs/it/routines#schedule-returns-unknown-command) affrontano due casi comuni. Alcuni comandi rispondono con il loro messaggio quando la politica della tua organizzazione li disabilita, come [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)3381* Un comando che esiste ma non è disponibile in questa sessione perché un requisito non è soddisfatto, come la vostra piattaforma, piano o metodo di autenticazione. Le voci di risoluzione dei problemi per [`/web-setup`](/docs/it/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) e [`/schedule`](/docs/it/routines#schedule-returns-unknown-command) illustrano due casi comuni. Alcuni comandi rispondono con il loro messaggio quando la politica della vostra organizzazione li disabilita, come [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)

3282* Un comando da un [plugin](/docs/it/plugins/overview) o [server MCP](/docs/it/mcp#use-mcp-prompts-as-commands) che non è installato o connesso in questa sessione3382* Un comando da un [plugin](/docs/it/plugins/overview) o [server MCP](/docs/it/mcp#use-mcp-prompts-as-commands) che non è installato o connesso in questa sessione

3283 3383 

3284Claude Code risponde a un nome `/` non corrispondente in questo modo solo in una sessione terminale interattiva. In ogni altra sessione, invia il prompt a Claude come messaggio normale invece, con una nota che il comando non è stato eseguito e un elenco di comandi che Claude può eseguire nella sessione. Quelle sessioni includono:3384Claude Code risponde a un nome `/` non corrispondente in questo modo solo in una sessione terminale interattiva. In ogni altra sessione, invia il prompt a Claude come messaggio normale invece, con una nota che il comando non è stato eseguito e un elenco di comandi che Claude può eseguire nella sessione. Quelle sessioni includono:


3289* Il pannello chat dell'[estensione VS Code](/docs/it/vs-code)3389* Il pannello chat dell'[estensione VS Code](/docs/it/vs-code)

3290* [Sessioni cloud](/docs/it/claude-code-on-the-web) e [routine](/docs/it/routines)3390* [Sessioni cloud](/docs/it/claude-code-on-the-web) e [routine](/docs/it/routines)

3291 3391 

3292Per un comando integrato che non può essere eseguito in una di quelle sessioni, Claude Code risponde comunque che il comando non è disponibile invece di inviarlo a Claude. Prima della v2.1.274, solo le sessioni cloud e le routine inviavano un nome non corrispondente a Claude. Prima della v2.1.273, rispondevano `Unknown command` anche.3392Per un comando integrato che non può essere eseguito in una di quelle sessioni, Claude Code risponde comunque che il comando non è disponibile invece di inviarlo a Claude. Prima della v2.1.274, solo le sessioni cloud e le routine inviavano un nome non corrispondente a Claude. Prima della v2.1.273, rispondevano anche `Unknown command`.

3293 3393 

3294Claude Code non tratta ogni prompt che inizia con `/` come un comando. Invia il prompt a Claude come messaggio normale quando la prima parola dopo il `/` inizia con punteggiatura, come il `/--` che apre un commento Lean doc, o è un percorso come `/var/log/syslog`.3394Claude Code non tratta ogni prompt che inizia con `/` come un comando. Invia il prompt a Claude come messaggio normale quando la prima parola dopo il `/` inizia con punteggiatura, come il `/-` che apre un commento doc Lean, o è un percorso come `/var/log/syslog`.

3295 3395 

3296Prima della v2.1.236, se premevi `Enter` mentre il menu dei comandi elencava una corrispondenza vicina per il nome che hai digitato, Claude Code eseguiva quella corrispondenza, quindi un errore di battitura come `/hepl` eseguiva `/help` invece di produrre questo messaggio.3396Prima della v2.1.236, se premevate `Invio` mentre il menu dei comandi elencava una corrispondenza vicina per il nome che avete digitato, Claude Code eseguiva quella corrispondenza, quindi un errore di battitura come `/hepl` eseguiva `/help` invece di produrre questo messaggio.

3297 3397 

3298**Cosa fare:**3398**Cosa fare:**

3299 3399 

3300* Esegui il nome suggerito, o digita `/` seguito da parte del nome per vedere cosa è disponibile in questa sessione3400* Eseguite il nome suggerito, oppure digitate `/` seguito da parte del nome per vedere cosa è disponibile in questa sessione

3301* Se Claude Code segnala un comando documentato come sconosciuto, controlla la sua riga nel [riferimento dei comandi](/docs/it/commands) per il requisito che nomina3401* Se Claude Code segnala un comando documentato come sconosciuto, controllate la sua riga nel [riferimento dei comandi](/docs/it/commands) per il requisito che nomina

3302 3402 

3303<h3 id="diff-is-too-large-for-ultrareview">3403<h3 id="diff-is-too-large-for-ultrareview">

3304 Il diff è troppo grande per ultrareview3404 Il diff è troppo grande per ultrareview

3305</h3>3405</h3>

3306 3406 

3307Il diff tra il tuo branch e il branch base, incluse le modifiche non committate e staged, supera i limiti di dimensione per un [ultrareview](/docs/it/ultrareview), quindi `/code-review ultra` e il sottocomando `claude ultrareview` rifiutano la revisione prima che la sessione cloud si avvii. Una revisione rifiutata non usa un'esecuzione gratuita e non fattura crediti di utilizzo. Il messaggio nomina i limiti in vigore, la dimensione del tuo diff, e i file che contribuiscono il maggior numero di righe modificate. Prima della v2.1.216, il messaggio mostrava solo le statistiche di diff grezze.3407Il diff tra il vostro ramo e il ramo base, incluse le modifiche non committate e staged, supera i limiti di dimensione per un [ultrareview](/docs/it/ultrareview), quindi `/code-review ultra` e il sottocomando `claude ultrareview` rifiutano la revisione prima che la sessione cloud si avvii. Una revisione rifiutata non utilizza un'esecuzione gratuita e non fattura i crediti di utilizzo. Il messaggio nomina i limiti in vigore, la dimensione del vostro diff e i file che contribuiscono il maggior numero di righe modificate. Prima della v2.1.216, il messaggio mostrava solo le statistiche di diff grezze.

3308 3408 

3309```text theme={null}3409```text theme={null}

3310Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.3410Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.


3314 3414 

3315**Cosa fare:**3415**Cosa fare:**

3316 3416 

3317* Passa un branch base più vicino al tuo lavoro, come `/code-review ultra develop`, così la revisione copre solo il diff rispetto a quel branch3417* Passate un ramo base più vicino al vostro lavoro, come `/code-review ultra develop`, in modo che la revisione copra solo il diff rispetto a quel ramo

3318* Dividi il cambiamento in branch più piccoli e rivedi ognuno. I file che il messaggio nomina contribuiscono il maggior numero di righe modificate, quindi inizia spostando quelli nel loro proprio branch.3418* Dividete la modifica in rami più piccoli e revisionate ognuno. I file che il messaggio nomina contribuiscono il maggior numero di righe modificate, quindi iniziate spostando quelli nel loro ramo.

3319 3419 

3320<h3 id="could-not-find-merge-base-with-the-base-branch">3420<h3 id="could-not-find-merge-base-with-the-base-branch">

3321 Non potrebbe trovare merge-base con il branch base3421 Non è stato possibile trovare merge-base con il ramo base

3322</h3>3422</h3>

3323 3423 

3324`/code-review ultra` e il sottocomando `claude ultrareview` rivedono il diff tra il tuo branch e un branch base, che ha bisogno di un commit che i due condividono. Quando `git merge-base` non ne trova nessuno, Claude Code rifiuta la revisione prima che la sessione cloud si avvii. Su un clone che Claude Code può verificare è completo, con almeno un branch, ricade a [rivedere ogni file tracciato](/docs/it/ultrareview#diff-limits-and-fallbacks) invece di rifiutare. Vedi questo rifiuto quando il branch base non può essere trovato affatto, quando Claude Code non può verificare che il tuo clone è completo, o nel raro repository dove il diff dell'intero albero non è possibile, come il formato di oggetto SHA-256.3424`/code-review ultra` e il sottocomando `claude ultrareview` revisione il diff tra il vostro ramo e un ramo base, che ha bisogno di un commit che i due condividono. Quando `git merge-base` non ne trova nessuno, Claude Code rifiuta la revisione prima che la sessione cloud si avvii. Su un clone che Claude Code può verificare è completo, con almeno un ramo, ricade a [revisione di ogni file tracciato](/docs/it/ultrareview#diff-limits-and-fallbacks) invece di rifiutare. Vedete questo rifiuto quando il ramo base non può essere trovato affatto, quando Claude Code non può verificare che il vostro clone è completo, o nel raro repository dove il diff dell'intero albero non è possibile, come il formato di oggetto SHA-256.

3325 3425 

3326```text theme={null}3426```text theme={null}

3327Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.3427Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.

3328```3428```

3329 3429 

3330L'indizio dopo la prima frase dipende da cosa Claude Code ha osservato:3430Il suggerimento dopo la prima frase dipende da cosa Claude Code ha osservato:

3331 3431 

3332* **Non hai passato un branch base**: Claude Code ha confrontato rispetto al branch predefinito del repository e suggerisce di passare il tuo base esplicitamente, come nell'esempio sopra3432* **Non avete passato un ramo base**: Claude Code ha confrontato rispetto al ramo predefinito del repository e suggerisce di passare il vostro base esplicitamente, come nell'esempio sopra

3333* **Hai passato un branch base che era già nel tuo clone**: l'indizio legge ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3433* **Avete passato un ramo base che era già nel vostro clone**: il suggerimento legge ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3334* **Hai passato un branch base che non era nel tuo clone**: Claude Code lo ha recuperato da origin prima di confrontare. L'indizio legge ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; quando Claude Code non può dire se il tuo clone è shallow, suggerisce `git fetch --unshallow origin` invece. Prima della v2.1.221, l'indizio suggeriva `git fetch --unshallow origin` per ogni branch base recuperato, e su un clone completo quel comando fallisce con `fatal: --unshallow on a complete repository does not make sense`.3434* **Avete passato un ramo base che non era nel vostro clone**: Claude Code lo ha recuperato da origin prima di confrontare. Il suggerimento legge ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; quando Claude Code non può dire se il vostro clone è superficiale, suggerisce `git fetch --unshallow origin` invece. Prima della v2.1.221, il suggerimento suggeriva `git fetch --unshallow origin` per ogni ramo base recuperato, e su un clone completo quel comando fallisce con `fatal: --unshallow on a complete repository does not make sense`.

3335 3435 

3336**Cosa fare:**3436**Cosa fare:**

3337 3437 

3338* Se un altro branch è il tuo vero base, passalo esplicitamente: `/code-review ultra <branch>`3438* Se un altro ramo è il vostro vero base, passatelo esplicitamente: `/code-review ultra <branch>`

3339* Se il tuo clone potrebbe non avere la cronologia completa, esegui `git fetch --unshallow origin` e riesegui la revisione3439* Se il vostro clone potrebbe non avere la cronologia completa, eseguite `git fetch --unshallow origin` e rieseguite la revisione

3340 3440 

3341<h3 id="your-checkout-has-no-branches">3441<h3 id="your-checkout-has-no-branches">

3342 Il tuo checkout non ha branch3442 Il vostro checkout non ha rami

3343</h3>3443</h3>

3344 3444 

3345Un checkout può avere commit ma nessun branch: se esegui `git init` seguito da `git fetch <url>` e `git checkout FETCH_HEAD`, ottieni un HEAD staccato senza refs. Claude Code pacchetto il tuo repository come un git bundle per caricarlo per un [ultrareview](/docs/it/ultrareview), e non può fare il bundle di un repository che non ha branch o altri refs, quindi `/code-review ultra` e il sottocomando `claude ultrareview` rifiutano la revisione prima che la sessione cloud si avvii.3445Un checkout può avere commit ma nessun ramo: se eseguite `git init` seguito da `git fetch <url>` e `git checkout FETCH_HEAD`, ottenete un HEAD staccato senza ref. Claude Code pacchetto il vostro repository come un bundle git per caricarlo per un [ultrareview](/docs/it/ultrareview), e non può pacchetto un repository che non ha rami o altri ref, quindi `/code-review ultra` e il sottocomando `claude ultrareview` rifiutano la revisione prima che la sessione cloud si avvii.

3346 3446 

3347```text theme={null}3447```text theme={null}

3348Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.3448Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.

3349```3449```

3350 3450 

3351Prima della v2.1.221, Claude Code tentava di rivedere ogni file tracciato in questo checkout, e il caricamento falliva.3451Prima della v2.1.221, Claude Code tentava di revisione ogni file tracciato in questo checkout, e il caricamento falliva.

3352 3452 

3353**Cosa fare:**3453**Cosa fare:**

3354 3454 

3355* Crea un branch al tuo commit corrente con `git checkout -b <name>`, quindi riesegui la revisione3455* Create un ramo al vostro commit corrente con `git checkout -b <name>`, quindi rieseguite la revisione

3356 3456 

3357<h3 id="no-github-account-is-connected-to-your-claude-account">3457<h3 id="no-github-account-is-connected-to-your-claude-account">

3358 Nessun account GitHub è connesso al tuo account Claude3458 Nessun account GitHub è connesso al vostro account Claude

3359</h3>3459</h3>

3360 3460 

3361Hai eseguito `/code-review ultra <PR#>` o `claude ultrareview <PR#>`, e prima di creare la sessione cloud Claude Code chiede al server se [l'account GitHub connesso al tuo account Claude](/docs/it/ultrareview#review-a-pull-request) può raggiungere il repository della PR. Nessun account è connesso, o la connessione è scaduta, quindi il clone cloud fallirebbe e Claude Code rifiuta il lancio. Claude Code non spende un'esecuzione gratuita o fattura crediti di utilizzo per un lancio rifiutato.3461Avete eseguito `/code-review ultra <PR#>` o `claude ultrareview <PR#>`, e prima di creare la sessione cloud Claude Code chiede al server se [l'account GitHub connesso al vostro account Claude](/docs/it/ultrareview#review-a-pull-request) può raggiungere il repository della PR. Nessun account è connesso, o la connessione è scaduta, quindi il clone cloud fallirebbe e Claude Code rifiuta il lancio. Claude Code non spende un'esecuzione gratuita o fattura i crediti di utilizzo per un lancio rifiutato.

3362 3462 

3363```text theme={null}3463```text theme={null}

3364Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).3464Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).

3365```3465```

3366 3466 

3367Quando [`/web-setup`](/docs/it/web-quickstart#connect-from-your-terminal) non è disponibile nella tua sessione, il messaggio nomina solo il link claude.ai.3467Quando [`/web-setup`](/docs/it/web-quickstart#connect-from-your-terminal) non è disponibile nella vostra sessione, il messaggio nomina solo il link claude.ai.

3368 3468 

3369**Cosa fare:**3469**Cosa fare:**

3370 3470 

3371* Esegui `/web-setup` per connettere il tuo login GitHub CLI al tuo account Claude, o connetti un account su [claude.ai/connect-github](https://claude.ai/connect-github)3471* Eseguite `/web-setup` per connettere il vostro login GitHub CLI al vostro account Claude, oppure connettete un account su [claude.ai/connect-github](https://claude.ai/connect-github)

3372* Riesegui la revisione un minuto dopo la connessione3472* Rieseguite la revisione un minuto dopo la connessione

3373 3473 

3374Prima della v2.1.248, Claude Code non controllava questo prima del lancio.3474Prima della v2.1.248, Claude Code non controllava questo prima del lancio.

3375 3475 

3376<h3 id="your-connected-github-account-cant-see-the-repository">3476<h3 id="your-connected-github-account-cant-see-the-repository">

3377 Il tuo account GitHub connesso non può vedere il repository3477 Il vostro account GitHub connesso non riesce a vedere il repository

3378</h3>3478</h3>

3379 3479 

3380Hai eseguito `/code-review ultra <PR#>` o `claude ultrareview <PR#>`, e [l'account GitHub connesso al tuo account Claude](/docs/it/ultrareview#review-a-pull-request) non può leggere il repository della PR, quindi il clone cloud fallirebbe e Claude Code rifiuta il lancio. Claude Code non spende un'esecuzione gratuita o fattura crediti di utilizzo per un lancio rifiutato.3480Avete eseguito `/code-review ultra <PR#>` o `claude ultrareview <PR#>`, e [l'account GitHub connesso al vostro account Claude](/docs/it/ultrareview#review-a-pull-request) non riesce a leggere il repository della PR, quindi il clone cloud fallirebbe e Claude Code rifiuta il lancio. Claude Code non spende un'esecuzione gratuita o fattura i crediti di utilizzo per un lancio rifiutato.

3381 3481 

3382```text theme={null}3482```text theme={null}

3383Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.3483Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.

3384```3484```

3385 3485 

3386Quando [`/web-setup`](/docs/it/web-quickstart#connect-from-your-terminal) non è disponibile nella tua sessione, il messaggio nomina solo l'installazione dell'app.3486Quando [`/web-setup`](/docs/it/web-quickstart#connect-from-your-terminal) non è disponibile nella vostra sessione, il messaggio nomina solo l'installazione dell'app.

3387 3487 

3388**Cosa fare:**3488**Cosa fare:**

3389 3489 

3390* Se il tuo CLI `gh` locale può leggere il repository, esegui `/web-setup` per connettere quel login al tuo account Claude3490* Se il vostro CLI `gh` locale riesce a leggere il repository, eseguite `/web-setup` per connettere quel login al vostro account Claude

3391* Riesegui la revisione dopo il cambiamento3491* Rieseguite la revisione dopo la modifica

3392 3492 

3393Prima della v2.1.248, Claude Code non controllava questo prima del lancio.3493Prima della v2.1.248, Claude Code non controllava questo prima del lancio.

3394 3494 

3395<h3 id="the-github-app-preflight-failed-transiently">3495<h3 id="the-github-app-preflight-failed-transiently">

3396 Il preflight dell'app GitHub ha fallito transitoriamente3496 Il preflight dell'app GitHub ha fallito transientemente

3397</h3>3497</h3>

3398 3498 

3399Hai avviato una [sessione cloud](/docs/it/claude-code-on-the-web) da un repository locale, e due passaggi hanno fallito insieme. Claude Code non potrebbe costruire o caricare il bundle del tuo repository. Prima del caricamento, ha controllato se il servizio cloud può clonare il repository da GitHub, e piuttosto che una risposta definitiva, quel controllo è terminato in un errore che un nuovo tentativo potrebbe chiarire, come un errore di rete, un timeout, o un errore di server temporaneo. Il messaggio completo inizia con cosa ha fermato il bundle, ad esempio `Could not upload repo bundle (<error>)`, e termina con la frase di preflight:3499Avete avviato una [sessione cloud](/docs/it/claude-code-on-the-web) da un repository locale, e due passaggi hanno fallito insieme. Claude Code non ha potuto costruire o caricare il bundle del vostro repository. Prima del caricamento, ha controllato se il servizio cloud può clonare il repository da GitHub, e piuttosto che una risposta definitiva, quel controllo è terminato in un errore che un nuovo tentativo potrebbe cancellare, come un errore di rete, un timeout o un errore di server temporaneo. Il messaggio completo inizia con cosa ha fermato il bundle, ad esempio `Could not upload repo bundle (<error>)`, e termina con la frase di preflight:

3400 3500 

3401```text theme={null}3501```text theme={null}

3402Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead3502Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead


3404 3504 

3405**Cosa fare:**3505**Cosa fare:**

3406 3506 

3407* Riesegui il comando dopo un momento. Quando il controllo GitHub passa, Claude Code può avviare la sessione da un clone GitHub, quindi il caricamento fallito non blocca più il lancio3507* Rieseguite il comando dopo un momento. Quando il controllo GitHub passa, Claude Code può avviare la sessione da un clone GitHub, quindi il caricamento fallito non blocca più il lancio

3408* Se i nuovi tentativi continuano a fallire, l'inizio del messaggio nomina cosa ha fermato il caricamento. Quando quella causa è qualcosa che puoi correggere, correggila così la sessione può avviarsi dal tuo repository locale invece3508* Se i nuovi tentativi continuano a fallire, l'inizio del messaggio nomina cosa ha fermato il caricamento. Quando quella causa è qualcosa che potete correggere, correggete in modo che la sessione possa avviarsi dal vostro repository locale invece

3409 3509 

3410Prima della v2.1.251, Claude Code terminava il messaggio con `Please set up GitHub on https://claude.ai/code` anche quando il controllo GitHub falliva solo transitoriamente, e il consiglio di configurazione non può chiarire un fallimento transitorio.3510Prima della v2.1.251, Claude Code terminava il messaggio con `Please set up GitHub on https://claude.ai/code` anche quando il controllo GitHub falliva solo transientemente, e il consiglio di configurazione non può cancellare un fallimento transitorio.

3411 3511 

3412<h3 id="the-repository-upload-cant-follow-a-git-setting">3512<h3 id="the-repository-upload-cant-follow-a-git-setting">

3413 Il caricamento del repository non può seguire un'impostazione git3513 Il caricamento del repository non può seguire un'impostazione git

3414</h3>3514</h3>

3415 3515 

3416Hai avviato una [sessione cloud che carica il tuo repository locale](/docs/it/claude-code-on-the-web#send-local-repositories-without-github), o un [ultrareview](/docs/it/ultrareview) di un branch, e il caricamento non può seguire una delle impostazioni git che decidono quali regole di attributo si applicano ai tuoi file. Se il caricamento fosse andato avanti e avesse perso una regola, un file che git trasforma prima di memorizzarlo, come uno che un filtro clean crittografa, potrebbe raggiungere il cloud come è su disco. Claude Code rifiuta il caricamento invece, e nulla viene caricato:3516Avete avviato una [sessione cloud che carica il vostro repository locale](/docs/it/claude-code-on-the-web#send-local-repositories-without-github), o un [ultrareview](/docs/it/ultrareview) di un ramo, e il caricamento non può seguire una delle impostazioni git che decidono quali regole di attributo si applicano ai vostri file. Se il caricamento fosse andato avanti e avesse perso una regola, un file che git trasforma prima di memorizzarlo, come uno che un filtro pulito crittografa, potrebbe raggiungere il cloud come è su disco. Claude Code rifiuta il caricamento invece, e nulla viene caricato:

3417 3517 

3418```text theme={null}3518```text theme={null}

3419Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository's .git/config or directly into your ~/.gitconfig, then retry.3519Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository's .git/config or directly into your ~/.gitconfig, then retry.

3420```3520```

3421 3521 

3422Il messaggio nomina l'impostazione e dove è impostata, e termina con la correzione per il caso che hai colpito. Lo stesso rifiuto appare per `core.attributesFile` e `attr.tree`, ognuno con la sua propria correzione.3522Il messaggio nomina l'impostazione e dove è impostata, e termina con la correzione per il caso che avete colpito. Lo stesso rifiuto appare per `core.attributesFile` e `attr.tree`, ognuno con la sua correzione.

3423 3523 

3424Il messaggio può nominare un file di configurazione che la tua configurazione git estrae attraverso una direttiva `include` o `includeIf`, anche quando quella condizione della direttiva non si applica a questo repository.3524Il messaggio può nominare un file di configurazione che la vostra configurazione git tira in attraverso una direttiva `include` o `includeIf`, anche quando la condizione di quella direttiva non si applica a questo repository.

3425 3525 

3426**Cosa fare:**3526**Cosa fare:**

3427 3527 

3428* Applica la correzione nella frase finale del messaggio3528* Applicate la correzione nella frase finale del messaggio

3429 3529 

3430<h3 id="github-isnt-connected-to-your-claude-account">3530<h3 id="github-isnt-connected-to-your-claude-account">

3431 GitHub non è connesso al tuo account Claude3531 GitHub non è connesso al vostro account Claude

3432</h3>3532</h3>

3433 3533 

3434Hai avviato una [sessione cloud](/docs/it/claude-code-on-the-web) dal tuo repository locale, ad esempio con `/autofix-pr`. Nessun account GitHub è connesso al tuo account Claude, o la connessione è scaduta, quindi Claude Code rifiuta il lancio:3534Avete avviato una [sessione cloud](/docs/it/claude-code-on-the-web) dal vostro repository locale, ad esempio con `/autofix-pr`. Nessun account GitHub è connesso al vostro account Claude, o la connessione è scaduta, quindi Claude Code rifiuta il lancio:

3435 3535 

3436```text theme={null}3536```text theme={null}

3437GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github3537GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github

3438```3538```

3439 3539 

3440Quando crei una routine con [`/schedule`](/docs/it/routines), lo stesso messaggio appare come una nota di configurazione che nomina il repository; la nota non blocca la creazione della routine.3540Quando create una routine con [`/schedule`](/docs/it/routines), lo stesso messaggio appare come una nota di configurazione che nomina il repository; la nota non blocca la creazione della routine.

3441 3541 

3442**Cosa fare:**3542**Cosa fare:**

3443 3543 

3444* Esegui `/web-setup` per connettere il tuo login GitHub CLI al tuo account Claude, o connetti un account su [claude.ai/connect-github](https://claude.ai/connect-github). Vedi [GitHub authentication options](/docs/it/claude-code-on-the-web#github-authentication-options) per come i due differiscono.3544* Eseguite `/web-setup` per connettere il vostro login GitHub CLI al vostro account Claude, oppure connettete un account su [claude.ai/connect-github](https://claude.ai/connect-github). Vedete [GitHub authentication options](/docs/it/claude-code-on-the-web#github-authentication-options) per come i due differiscono.

3445* Riesegui il comando un minuto dopo la connessione3545* Rieseguite il comando un minuto dopo la connessione

3446 3546 

3447Prima della v2.1.268, Claude Code segnalava questo come un fallimento temporaneo del controllo dell'app GitHub di Claude e suggeriva di riprovare o installare l'app; nessuno dei due connette un account GitHub.3547Prima della v2.1.268, Claude Code segnalava questo come un fallimento temporaneo del controllo dell'app GitHub di Claude e suggeriva di riprovare o installare l'app; nessuno dei due connette un account GitHub.

3448 3548 


3450 Autorizzazione single sign-on necessaria3550 Autorizzazione single sign-on necessaria

3451</h3>3551</h3>

3452 3552 

3453Hai eseguito [`/install-github-app`](/docs/it/github-actions#quick-setup) e scelto un repository la cui organizzazione applica single sign-on SAML. Prima della configurazione, Claude Code controlla il tuo accesso al repository con la CLI GitHub, e GitHub ha rifiutato quel controllo perché il tuo token `gh` non è ancora autorizzato per l'organizzazione. La procedura guidata mostra l'avviso con i passaggi per autorizzare:3553Avete eseguito [`/install-github-app`](/docs/it/github-actions#quick-setup) e scelto un repository la cui organizzazione applica il single sign-on SAML. Prima della configurazione, Claude Code controlla il vostro accesso al repository con la CLI GitHub, e GitHub ha rifiutato quel controllo perché il vostro token `gh` non è ancora autorizzato per l'organizzazione. La procedura guidata mostra l'avviso con i passaggi per autorizzare:

3454 3554 

3455```text theme={null}3555```text theme={null}

3456Single sign-on authorization needed3556Single sign-on authorization needed


3459 3559 

3460**Cosa fare:**3560**Cosa fare:**

3461 3561 

3462* Riautentica il tuo login GitHub CLI con gli scope `repo` e `workflow` eseguendo `gh auth refresh -h github.com -s repo,workflow`, e autorizza l'organizzazione quando GitHub ti chiede il single sign-on3562* Riautorizzate il vostro login GitHub CLI con gli ambiti `repo` e `workflow` eseguendo `gh auth refresh -h github.com -s repo,workflow`, e autorizzate l'organizzazione quando GitHub chiede il single sign-on

3463* Se ti autentichi con un token di accesso personale in `GH_TOKEN`, apri [github.com/settings/tokens](https://github.com/settings/tokens), seleziona **Configure SSO** sul token, e autorizza l'organizzazione3563* Se vi autenticate con un token di accesso personale in `GH_TOKEN`, aprite [github.com/settings/tokens](https://github.com/settings/tokens), selezionate **Configure SSO** sul token, e autorizzate l'organizzazione

3464* Esegui di nuovo `/install-github-app`3564* Eseguite di nuovo `/install-github-app`

3465 3565 

3466Prima della v2.1.273, Claude Code mostrava l'avviso `Admin permissions required` per questa condizione invece.3566Prima della v2.1.273, Claude Code mostrava l'avviso `Admin permissions required` per questa condizione invece.

3467 3567 


3469 Impossibile riprendere la conversazione3569 Impossibile riprendere la conversazione

3470</h3>3570</h3>

3471 3571 

3472Claude Code non potrebbe leggere o elaborare la trascrizione salvata per la sessione che hai selezionato dal [picker `claude --resume`](/docs/it/sessions#use-the-session-picker), quindi termina il processo piuttosto che continuare in uno stato parzialmente caricato. Il messaggio include il comando per riprovare:3572Claude Code non ha potuto leggere o elaborare la trascrizione salvata per la sessione che avete selezionato dal [picker `claude --resume`](/docs/it/sessions#use-the-session-picker), quindi termina il processo piuttosto che continuare in uno stato parzialmente caricato. Il messaggio include il comando per riprovare:

3473 3573 

3474```text theme={null}3574```text theme={null}

3475Failed to resume the conversation.3575Failed to resume the conversation.

3476Run claude --resume <session-id> to retry, or claude to start a new session.3576Run claude --resume <session-id> to retry, or claude to start a new session.

3477```3577```

3478 3578 

3479Claude Code esce con codice 1 dopo aver mostrato il messaggio. Il picker `/resume` all'interno di una sessione in esecuzione segnala `Failed to resume conversation` nella conversazione invece, e la tua sessione corrente continua a funzionare. Prima della v2.1.216, una ripresa fallita dal picker `claude --resume` rimase sullo spinner `Resuming conversation…` indefinitamente invece di mostrare questo messaggio.3579Claude Code esce con codice 1 dopo aver mostrato il messaggio. Il picker `/resume` dentro una sessione in esecuzione segnala `Failed to resume conversation` nella conversazione invece, e la vostra sessione corrente continua a funzionare. Prima della v2.1.216, una ripresa fallita dal picker `claude --resume` rimaneva sullo spinner `Resuming conversation…` indefinitamente invece di mostrare questo messaggio.

3480 3580 

3481**Cosa fare:**3581**Cosa fare:**

3482 3582 

3483* Esegui `claude --resume <session-id>` con l'ID della sessione dal messaggio per riprovare3583* Eseguite `claude --resume <session-id>` con l'ID della sessione dal messaggio per riprovare

3484* Se ogni nuovo tentativo fallisce allo stesso modo, esegui `claude update` e riprendi di nuovo. Le versioni prima della v2.1.275 falliscono la ripresa quando la trascrizione salvata contiene una voce che non possono leggere.3584* Se ogni nuovo tentativo fallisce allo stesso modo, eseguite `claude update` e riprendete di nuovo. Le versioni prima della v2.1.275 falliscono la ripresa quando la trascrizione salvata contiene una voce che non riescono a leggere.

3485* Se il nuovo tentativo fallisce di nuovo, esegui `claude` per avviare una nuova sessione3585* Se il nuovo tentativo fallisce di nuovo, eseguite `claude` per avviare una nuova sessione

3486 3586 

3487<h3 id="no-conversation-found-with-the-session-id">3587<h3 id="no-conversation-found-with-the-session-id">

3488 Nessuna conversazione trovata con l'ID della sessione3588 Nessuna conversazione trovata con l'ID della sessione

3489</h3>3589</h3>

3490 3590 

3491Hai passato un ID della sessione a `claude --resume <session-id>` e nessuna trascrizione salvata lo ha corrisposto:3591Avete passato un ID della sessione a `claude --resume <session-id>` e nessuna trascrizione salvata lo ha abbinato:

3492 3592 

3493```text theme={null}3593```text theme={null}

3494No conversation found with session ID: <session-id>3594No conversation found with session ID: <session-id>

3495```3595```

3496 3596 

3497Claude Code esce con codice 1 dopo aver mostrato il messaggio. Claude Code [cerca prima il progetto corrente, quindi ogni altro progetto su questa macchina](/docs/it/sessions#resume-a-session) per l'ID. Prima della v2.1.223, la ricerca si fermava alla directory del progetto corrente e ai suoi git worktrees, quindi riprendi dalla directory in cui la sessione ha lavorato l'ultima volta.3597Claude Code esce con codice 1 dopo aver mostrato il messaggio. Claude Code [cerca prima il progetto corrente, quindi ogni altro progetto su questa macchina](/docs/it/sessions#resume-a-session) per l'ID. Prima della v2.1.223, la ricerca si fermava alla directory del progetto corrente e ai suoi git worktrees, quindi riprendete dalla directory in cui la sessione ha lavorato l'ultima volta.

3498 3598 

3499Cause comuni:3599Cause comuni:

3500 3600 

3501* **ID digitato male**: per un'esecuzione non interattiva, l'ID è il campo `session_id` dell'output [`--output-format json`](/docs/it/headless#get-structured-output)3601* **ID digitato male**: per un'esecuzione non interattiva, l'ID è il campo `session_id` dell'output [`--output-format json`](/docs/it/headless#get-structured-output)

3502* **Trascrizione eliminata**: Claude Code rimuove le trascrizioni dopo il [periodo di conservazione](/docs/it/sessions#where-transcripts-are-stored), 30 giorni per impostazione predefinita, seguendo le [regole di pulizia della conservazione](/docs/it/claude-directory#cleaned-up-automatically)3602* **Trascrizione eliminata**: Claude Code rimuove le trascrizioni dopo il [periodo di conservazione](/docs/it/sessions#where-transcripts-are-stored), 30 giorni per impostazione predefinita, seguendo le [regole di pulizia della conservazione](/docs/it/claude-directory#cleaned-up-automatically)

3503* **Macchina diversa**: Claude Code memorizza le trascrizioni localmente, quindi riprendi la sessione sulla macchina dove è stata eseguita3603* **Macchina diversa**: Claude Code memorizza le trascrizioni localmente, quindi riprendete la sessione sulla macchina dove è stata eseguita

3504* **Copie duplicate**: se hai copiato una directory di progetto sotto `~/.claude/projects` così due trascrizioni portano lo stesso ID, Claude Code segnala questo messaggio piuttosto che riprendere una copia arbitrariamente3604* **Copie duplicate**: se avete copiato una directory di progetto sotto `~/.claude/projects` in modo che due trascrizioni portino lo stesso ID, Claude Code segnala questo messaggio piuttosto che riprendere una copia arbitrariamente

3505 3605 

3506**Cosa fare:**3606**Cosa fare:**

3507 3607 

3508* Per una sessione interattiva, apri il [picker della sessione](/docs/it/sessions#use-the-session-picker) con `claude --resume` e premi `Ctrl+A` per allargarlo a ogni progetto su questa macchina, quindi seleziona la sessione3608* Per una sessione interattiva, aprite il [picker della sessione](/docs/it/sessions#use-the-session-picker) con `claude --resume` e premete `Ctrl+A` per allargarlo a ogni progetto su questa macchina, quindi selezionate la sessione

3509* Le sessioni create con `claude -p` o l'[Agent SDK](/docs/it/agent-sdk/overview) non appaiono nel picker, quindi ri-controlla l'ID rispetto al `session_id` che la tua esecuzione originale ha stampato3609* Le sessioni create con `claude -p` o l'[Agent SDK](/docs/it/agent-sdk/overview) non appaiono nel picker, quindi controllate di nuovo l'ID rispetto al `session_id` che la vostra esecuzione originale ha stampato

3510 3610 

3511<h3 id="windows-reported-an-error-ebadf">3611<h3 id="windows-reported-an-error-ebadf">

3512 Windows ha segnalato un errore (EBADF) quando Claude Code ha letto il file di trascrizione di questa sessione3612 Windows ha segnalato un errore (EBADF) quando Claude Code ha letto il file di trascrizione di questa sessione

3513</h3>3613</h3>

3514 3614 

3515Hai ripreso una sessione su Windows, il suo file di [trascrizione](/docs/it/sessions#where-transcripts-are-stored) salvato si è aperto normalmente, e la lettura ha quindi fallito con l'errore di sistema EBADF. L'errore di sistema non dice perché la lettura ha fallito, quindi il messaggio suggerisce cause probabili e cosa provare:3615Avete ripreso una sessione su Windows, il suo file di [trascrizione](/docs/it/sessions#where-transcripts-are-stored) salvato si è aperto normalmente, e la lettura ha quindi fallito con l'errore di sistema EBADF. L'errore di sistema non dice perché la lettura ha fallito, quindi il messaggio suggerisce cause probabili e cosa provare:

3516 3616 

3517```text theme={null}3617```text theme={null}

3518Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.3618Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.

3519```3619```

3520 3620 

3521Il messaggio segue la riga di fallimento del comando stesso, come `Failed to resume session <session-id>`. Un comando `claude --resume` o [`claude -p`](/docs/it/headless) esce con codice 1 dopo averlo mostrato. Dopo `/resume` all'interno di una sessione, la tua sessione corrente continua a funzionare.3621Il messaggio segue la riga di fallimento del comando stesso, come `Failed to resume session <session-id>`. Un comando `claude --resume` o [`claude -p`](/docs/it/headless) esce con codice 1 dopo averlo mostrato. Dopo `/resume` dentro una sessione, la vostra sessione corrente continua a funzionare.

3522 3622 

3523**Cosa fare:**3623**Cosa fare:**

3524 3624 

3525* Escludi la cartella che contiene le tue trascrizioni di sessione dal software che scansiona o intercetta le letture di file, come strumenti di sicurezza, crittografia o gestione degli endpoint. Le trascrizioni vivono sotto `%USERPROFILE%\.claude\projects` per impostazione predefinita, o sotto la directory che [`CLAUDE_CONFIG_DIR`](/docs/it/env-vars) nomina3625* Escludete la cartella che contiene le vostre trascrizioni di sessione dal software che scansiona o intercetta le letture di file, come strumenti di sicurezza, crittografia o gestione degli endpoint. Le trascrizioni vivono sotto `%USERPROFILE%\.claude\projects` per impostazione predefinita, o sotto la directory che [`CLAUDE_CONFIG_DIR`](/docs/it/env-vars) nomina

3526* Se non puoi aggiungere un'esclusione, aggiungi Claude Code alle applicazioni consentite di quel software invece3626* Se non potete aggiungere un'esclusione, aggiungete Claude Code alle applicazioni consentite di quel software invece

3527* Riprendi la sessione di nuovo3627* Riprendete la sessione di nuovo

3528 3628 

3529Prima della v2.1.282, il fallimento veniva senza spiegazione: `claude --resume <session-id>` terminava a `Failed to resume session <session-id>`, e un'esecuzione `-p` stampava solo il testo di errore di sistema, come `Failed to resume session: EBADF: bad file descriptor, read`.3629Prima della v2.1.282, il fallimento veniva senza spiegazione: `claude --resume <session-id>` terminava a `Failed to resume session <session-id>`, e un'esecuzione `-p` stampava solo il testo dell'errore di sistema, come `Failed to resume session: EBADF: bad file descriptor, read`.

3530 3630 

3531<h3 id="cannot-switch-renderers-in-this-session">3631<h3 id="cannot-switch-renderers-in-this-session">

3532 Impossibile cambiare renderer in questa sessione3632 Impossibile cambiare renderer in questa sessione

3533</h3>3633</h3>

3534 3634 

3535Quando cambi renderer, Claude Code riavvia il suo processo. Hai eseguito [`/tui`](/docs/it/fullscreen#enable-fullscreen-rendering) in una sessione che Claude Code rifiuta di riavviare, quindi non cambia e non salva nulla. Quale messaggio vedi ti dice la causa:3635Quando cambiate renderer, Claude Code riavvia il suo processo. Avete eseguito [`/tui`](/docs/it/fullscreen#enable-fullscreen-rendering) in una sessione che Claude Code rifiuta di riavviare, quindi non cambia e non salva nulla. Quale messaggio vedete vi dice la causa:

3536 3636 

3537* `Cannot switch renderers while work is running in the background`: hai lavoro in background in esecuzione che un riavvio abbandonarebbe, come una shell in background o un subagente. Attendi che il lavoro finisca o fermalo con [`/tasks`](/docs/it/commands), quindi esegui di nuovo `/tui fullscreen` o `/tui default`3637* `Cannot switch renderers while work is running in the background`: avete lavoro in background in esecuzione che un riavvio abbandonarebbe, come una shell in background o un subagente. Aspettate che il lavoro finisca o fermatelo con [`/tasks`](/docs/it/commands), quindi eseguite di nuovo `/tui fullscreen` o `/tui default`

3538* `Cannot switch renderers in this session`: la sessione ha restrizioni che Claude Code non può passare al processo riavviato. Prima della v2.1.234, Claude Code riavviava comunque e la sessione riavviata veniva eseguita senza di esse3638* `Cannot switch renderers in this session`: la sessione ha restrizioni che Claude Code non può passare al processo riavviato. Prima della v2.1.234, Claude Code riavviava comunque e la sessione riavviata veniva eseguita senza di esse

3539 3639 

3540Nel messaggio delle restrizioni, la parte tra parentesi nomina le restrizioni che Claude Code ha trovato:3640Nel messaggio delle restrizioni, la parte tra parentesi nomina le restrizioni che Claude Code ha trovato:


3545 3645 

3546Ogni motivo che il messaggio può mostrare tra parentesi:3646Ogni motivo che il messaggio può mostrare tra parentesi:

3547 3647 

3548* `launch flags: a custom system prompt, a tool allowlist, or restricted settings`: hai avviato la sessione con un flag che Claude Code non passa di nuovo al processo riavviato. Questi flag includono [`--system-prompt`](/docs/it/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, un allowlist [`--tools`](/docs/it/cli-reference#cli-flags), [`--setting-sources`](/docs/it/cli-reference#cli-flags), e [`--permission-prompt-tool`](/docs/it/cli-reference#cli-flags)3648* `launch flags: a custom system prompt, a tool allowlist, or restricted settings`: avete avviato la sessione con un flag che Claude Code non passa di nuovo al processo riavviato. Questi flag includono [`--system-prompt`](/docs/it/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, un allowlist [`--tools`](/docs/it/cli-reference#cli-flags), [`--setting-sources`](/docs/it/cli-reference#cli-flags) e [`--permission-prompt-tool`](/docs/it/cli-reference#cli-flags)

3549* `permission rules set for this session only`: un [aggiornamento di permesso](/docs/it/hooks#permission-update-entries) da un hook o chiamante SDK ha aggiunto regole deny o ask con la destinazione `session`. Le regole di allow con scope di sessione non attivano il rifiuto. Un riavvio le elimina, e Claude Code chiede di nuovo invece3649* `permission rules set for this session only`: un [aggiornamento di permesso](/docs/it/hooks#permission-update-entries) da un hook o da un chiamante SDK ha aggiunto regole di negazione o richiesta con la destinazione `session`. Le regole di permesso di sessione con ambito di sessione non attivano il rifiuto. Un riavvio le elimina, e Claude Code chiede di nuovo invece

3550* `ask-before-running rules with no command-line form`: un aggiornamento di permesso ha aggiunto regole ask insieme alle regole che Claude Code passa di nuovo come `--allowed-tools` e `--disallowed-tools`. Nessun flag esiste per le regole ask3650* `ask-before-running rules with no command-line form`: un aggiornamento di permesso da un hook o da un chiamante SDK ha aggiunto regole di richiesta insieme alle regole che Claude Code passa di nuovo come `--allowed-tools` e `--disallowed-tools`. Nessun flag esiste per le regole di richiesta

3551* `permission rules a command line cannot carry intact` e `added directories a command line cannot carry intact`: un aggiornamento di permesso ha aggiunto una regola o un percorso di directory a metà sessione. La riga di comando del processo riavviato non può portare il suo testo come lo stesso valore3651* `permission rules a command line cannot carry intact` e `added directories a command line cannot carry intact`: un aggiornamento di permesso ha aggiunto una regola o un percorso di directory a metà sessione. La riga di comando del processo riavviato non può portare il suo testo come lo stesso valore

3552 3652 

3553**Cosa fare:**3653**Cosa fare:**

3554 3654 

3555* In una sessione avviata senza quelle restrizioni, esegui `/tui fullscreen`, o `/tui default` per cambiare di nuovo. Claude Code salva l'impostazione [`tui`](/docs/it/settings-reference#tui) lì3655* In una sessione avviata senza quelle restrizioni, eseguite `/tui fullscreen`, o `/tui default` per cambiare di nuovo. Claude Code salva l'impostazione [`tui`](/docs/it/settings-reference#tui) lì

3556 3656 

3557<h3 id="couldnt-open-claude-desktop">3657<h3 id="couldnt-open-claude-desktop">

3558 Impossibile aprire Claude Desktop3658 Non è stato possibile aprire Claude Desktop

3559</h3>3659</h3>

3560 3660 

3561Hai eseguito [`/desktop`](/docs/it/desktop#coming-from-the-cli), o il suo alias `/app`, e il comando di sistema che Claude Code usa per aprire Claude Desktop ha fallito. La sessione rimane nel terminale.3661Avete eseguito [`/desktop`](/docs/it/desktop#coming-from-the-cli) o il suo alias `/app` in una sessione, o [`claude --desktop`](/docs/it/cli-reference#cli-flags) nella vostra shell, e il comando di sistema che Claude Code utilizza per aprire Claude Desktop ha fallito. Dopo `/desktop`, la sessione rimane nel terminale; `claude --desktop` stampa il messaggio senza il prefisso `Error:` ed esce con stato 1.

3662 

3663Il testo tra parentesi nomina il comando che ha fallito, con il suo stato di uscita e la prima riga del suo output di errore quando lo ha prodotto. Su macOS quel comando è `open`, come in questo esempio; su Windows è `rundll32`:

3562 3664 

3563```text theme={null}3665```text theme={null}

3564Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and run /desktop again.3666Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.

3565```3667```

3566 3668 

3567**Cosa fare:**3669**Cosa fare:**

3568 3670 

3569* Apri Claude Desktop tu stesso, quindi esegui di nuovo `/desktop`3671* Aprite Claude Desktop voi stessi, quindi eseguite di nuovo `/desktop` o `claude --desktop`

3570* Per leggere l'output di errore completo di quel comando, attiva il debug logging con `/debug`, esegui di nuovo `/desktop`, e controlla il log di debug3672* Per leggere l'output di errore completo del comando fallito, attivate la registrazione di debug con `/debug` ed eseguite di nuovo `/desktop`, oppure eseguite `claude --desktop --debug-file <path>`, quindi controllate il log di debug

3571 3673 

3572Prima della v2.1.275, il messaggio era `Failed to open Claude Desktop. Please try opening it manually.` e non diceva cosa era fallito.3674Prima della v2.1.285, il messaggio terminava `Open Claude Desktop and run /desktop again.` Prima della v2.1.275, era `Failed to open Claude Desktop. Please try opening it manually.` e non diceva cosa ha fallito.

3573 3675 

3574<h3 id="terminal-setup-left-your-zed-keymap-unchanged">3676<h3 id="terminal-setup-left-your-zed-keymap-unchanged">

3575 /terminal-setup ha lasciato la tua keymap Zed invariata3677 /terminal-setup ha lasciato la vostra mappa di tasti Zed invariata

3576</h3>3678</h3>

3577 3679 

3578Hai eseguito [`/terminal-setup`](/docs/it/terminal-config#enter-multiline-prompts) in Zed, e Claude Code non potrebbe completare l'aggiornamento al tuo Zed `keymap.json`, quindi ha lasciato il file come era.3680Avete eseguito [`/terminal-setup`](/docs/it/terminal-config#enter-multiline-prompts) in Zed, e Claude Code non ha potuto completare l'aggiornamento al vostro Zed `keymap.json`, quindi ha lasciato il file come era.

3579 3681 

3580Ogni messaggio nomina il percorso della tua keymap e termina con il blocco di scorciatoie da tastiera da aggiungere tu stesso:3682Ogni messaggio nomina il percorso della vostra mappa di tasti e termina con il blocco di scorciatoie da tastiera da aggiungere voi stessi:

3581 3683 

3582```text theme={null}3684```text theme={null}

3583Couldn't update your Zed keymap, so it was left unchanged.3685Couldn't update your Zed keymap, so it was left unchanged.


3587 3689 

3588La prima riga del messaggio nomina la causa:3690La prima riga del messaggio nomina la causa:

3589 3691 

3590* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code non potrebbe leggere il file, ad esempio a causa di permessi di file3692* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code non ha potuto leggere il file, ad esempio a causa di permessi di file

3591* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: il file è stato letto bene ma non viene analizzato come un array di blocchi di scorciatoie da tastiera, anche con commenti `//` e virgole finali consentiti3693* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: il file è stato letto bene ma non viene analizzato come un array di blocchi di scorciatoie da tastiera, anche con commenti `//` e virgole finali consentite

3592* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code non potrebbe copiare il file in un backup `.bak` accanto ad esso, quindi non ha cambiato nulla3694* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code non ha potuto copiare il file in un backup `.bak` accanto ad esso, quindi non ha cambiato nulla

3593* `Couldn't update your Zed keymap, so it was left unchanged.`: il risultato unito non ha verificato come una keymap valida che porta la scorciatoia da tastiera, quindi Claude Code lo ha scartato invece di scrivere. Un blocco di scorciatoia da tastiera con una chiave duplicata può causare questo3695* `Couldn't update your Zed keymap, so it was left unchanged.`: il risultato unito non ha verificato come una mappa di tasti valida che porta la scorciatoia da tastiera, quindi Claude Code lo ha scartato invece di scrivere. Un blocco di scorciatoia da tastiera con una chiave duplicata può causare questo

3594 3696 

3595**Cosa fare:**3697**Cosa fare:**

3596 3698 

3597* Copia il blocco dal messaggio nell'array di livello superiore nel tuo `keymap.json` al percorso che il messaggio nomina3699* Copiate il blocco dal messaggio nell'array di livello superiore nel vostro `keymap.json` al percorso che il messaggio nomina

3598* Per `isn't a readable list of keybindings`, correggi l'errore di sintassi, o rendi il valore di livello superiore del file un array, quindi esegui di nuovo `/terminal-setup`3700* Per `isn't a readable list of keybindings`, correggete l'errore di sintassi, o rendete il valore di livello superiore del file un array, quindi eseguite di nuovo `/terminal-setup`

3599 3701 

3600Prima della v2.1.247, `/terminal-setup` non potrebbe analizzare una keymap Zed che utilizzava commenti `//` o virgole finali, e ha sostituito l'intero file con solo la sua scorciatoia da tastiera mentre segnalava la scorciatoia da tastiera come installata. Per ripristinare una keymap che una versione precedente ha sostituito, usa il file di backup `.bak` descritto sotto [Enter multiline prompts](/docs/it/terminal-config#enter-multiline-prompts).3702Prima della v2.1.247, `/terminal-setup` non poteva analizzare una mappa di tasti Zed che utilizzava commenti `//` o virgole finali, e sostituiva l'intero file con solo la sua scorciatoia da tastiera mentre segnalava la scorciatoia da tastiera come installata. Per ripristinare una mappa di tasti che una versione precedente ha sostituito, utilizzate il file di backup `.bak` descritto sotto [Enter multiline prompts](/docs/it/terminal-config#enter-multiline-prompts).

3601 3703 

3602<h3 id="skill-usage-reports-are-not-available-on-this-connection">3704<h3 id="skill-usage-reports-are-not-available-on-this-connection">

3603 I rapporti di utilizzo delle skill non sono disponibili su questa connessione3705 I rapporti di utilizzo delle skill non sono disponibili su questa connessione

3604</h3>3706</h3>

3605 3707 

3606Hai eseguito [`/skill-doctor`](/docs/it/skills#find-unused-skills) su [Remote Control](/docs/it/remote-control), dal tuo telefono o browser. Claude Code non invia il rapporto di utilizzo delle skill su Remote Control e risponde con questo messaggio invece:3708Avete eseguito [`/skill-doctor`](/docs/it/skills#find-unused-skills) su [Remote Control](/docs/it/remote-control), dal vostro telefono o browser. Claude Code non invia il rapporto di utilizzo delle skill su Remote Control e risponde con questo messaggio invece:

3607 3709 

3608```text theme={null}3710```text theme={null}

3609Skill usage reports are not available on this connection.3711Skill usage reports are not available on this connection.


3611 3713 

3612**Cosa fare:**3714**Cosa fare:**

3613 3715 

3614* Esegui `/skill-doctor` nel terminale sulla macchina dove la sessione è in esecuzione, o esegui `claude -p "/skill-doctor"` lì3716* Eseguite `/skill-doctor` nel terminale sulla macchina dove la sessione è in esecuzione, oppure eseguite `claude -p "/skill-doctor"` lì

3615 3717 

3616<h3 id="custom-output-styles-cant-be-selected-over-remote-control">3718<h3 id="custom-output-styles-cant-be-selected-over-remote-control">

3617 Gli stili di output personalizzati non possono essere selezionati su Remote Control3719 Gli stili di output personalizzati non possono essere selezionati su Remote Control

3618</h3>3720</h3>

3619 3721 

3620Hai eseguito [`/output-style`](/docs/it/output-styles#change-your-output-style) dall'app mobile o web tramite [Remote Control](/docs/it/remote-control), o il comando è arrivato in un messaggio inoltrato nella sessione. Poiché tale turno potrebbe non provenire dal proprietario dell'account, Claude Code elenca e seleziona solo [stili integrati](/docs/it/output-styles#built-in-output-styles) su di esso, e aggiunge questo avviso ogni volta che il comando elenca gli stili o non riconosce il nome che hai fornito. Un nome di [stile personalizzato](/docs/it/output-styles#create-a-custom-output-style) riceve la stessa risposta di un nome che non esiste:3722Avete eseguito [`/output-style`](/docs/it/output-styles#change-your-output-style) dall'app mobile o web tramite [Remote Control](/docs/it/remote-control), o il comando è arrivato in un messaggio inoltrato nella sessione. Poiché tale turno potrebbe non provenire dal proprietario dell'account, Claude Code elenca e seleziona solo [stili integrati](/docs/it/output-styles#built-in-output-styles) su di esso, e aggiunge questo avviso ogni volta che il comando elenca gli stili o non riconosce il nome che avete dato. Un nome di [stile personalizzato](/docs/it/output-styles#create-a-custom-output-style) riceve la stessa risposta di un nome che non esiste:

3621 3723 

3622```text theme={null}3724```text theme={null}

3623Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.3725Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.


3625 3727 

3626**Cosa fare:**3728**Cosa fare:**

3627 3729 

3628* Scegli uno stile integrato, ad esempio `/output-style concise`3730* Scegliete uno stile integrato, ad esempio `/output-style concise`

3629* Per usare uno stile personalizzato, imposta [`outputStyle`](/docs/it/settings-reference#outputstyle) nel `.claude/settings.local.json` del progetto, o esegui `/output-style <style>` al terminale della sessione stessa se ne ha uno3731* Per utilizzare uno stile personalizzato, impostate [`outputStyle`](/docs/it/settings-reference#outputstyle) nel `.claude/settings.local.json` del progetto, oppure eseguite `/output-style <style>` nel terminale della sessione stessa se ne ha uno

3630 3732 

3631<h3 id="output-styles-are-saved-to-local-settings-which-this-session-doesnt-load">3733<h3 id="output-styles-are-saved-to-local-settings-which-this-session-doesnt-load">

3632 Gli stili di output vengono salvati nelle impostazioni locali che questa sessione non carica3734 Gli stili di output vengono salvati nelle impostazioni locali che questa sessione non carica

3633</h3>3735</h3>

3634 3736 

3635Hai provato a cambiare [stili di output](/docs/it/output-styles) con `/output-style <style>` o `/config outputStyle=<style>` in una sessione le cui fonti di impostazione escludono `local`. Gli esempi sono una sessione [Agent SDK](/docs/it/agent-sdk/typescript) il cui [`settingSources`](/docs/it/agent-sdk/typescript#options) lascia fuori `"local"` e una sessione CLI avviata con un valore [`--setting-sources`](/docs/it/cli-reference#cli-flags) che lascia fuori `local`. Entrambi i comandi salvano lo stile in `.claude/settings.local.json`, un file che tale sessione non legge mai, quindi Claude Code rifiuta invece di scrivere un'impostazione che non avrebbe effetto:3737Avete provato a cambiare [stili di output](/docs/it/output-styles) con `/output-style <style>` o `/config outputStyle=<style>` in una sessione le cui fonti di impostazione escludono `local`. Gli esempi sono una sessione [Agent SDK](/docs/it/agent-sdk/typescript) il cui [`settingSources`](/docs/it/agent-sdk/typescript#options) lascia fuori `"local"` e una sessione CLI avviata con un valore [`--setting-sources`](/docs/it/cli-reference#cli-flags) che lascia fuori `local`. Entrambi i comandi salvano lo stile a `.claude/settings.local.json`, un file che tale sessione non legge mai di nuovo, quindi Claude Code rifiuta invece di scrivere un'impostazione che non avrebbe alcun effetto:

3636 3738 

3637```text theme={null}3739```text theme={null}

3638Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.3740Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.


3640 3742 

3641**Cosa fare:**3743**Cosa fare:**

3642 3744 

3643* Aggiungi `local` alle fonti di impostazione della sessione e cambia di nuovo3745* Aggiungete `local` alle fonti di impostazione della sessione e cambiate di nuovo

3644* Imposta la chiave [`outputStyle`](/docs/it/settings-reference#outputstyle) in un file di impostazioni che la sessione carica, come `.claude/settings.json` nel progetto o `~/.claude/settings.json`. Nel TypeScript SDK, imposta `outputStyle` all'interno dell'oggetto `settings` inline invece; vedi [Activate an output style](/docs/it/agent-sdk/modifying-system-prompts#activate-an-output-style)3746* Impostate la chiave [`outputStyle`](/docs/it/settings-reference#outputstyle) in un file di impostazioni che la sessione carica, come `.claude/settings.json` nel progetto o `~/.claude/settings.json`. Nell'SDK TypeScript, impostate `outputStyle` dentro l'oggetto `settings` inline invece; vedete [Activate an output style](/docs/it/agent-sdk/modifying-system-prompts#activate-an-output-style)

3645 3747 

3646<h2 id="plugin-errors">3748<h2 id="plugin-errors">

3647 Errori dei plugin3749 Errori dei plugin

3648</h2>3750</h2>

3649 3751 

3650Questi errori provengono dalla configurazione di [plugin](/docs/it/plugins/overview) e [marketplace](/docs/it/plugins/overview). Per i problemi dei plugin che non producono uno dei messaggi in questa pagina, come un URL del marketplace che non si carica o un plugin che si installa ma non appare, vedere [Risoluzione dei problemi dei plugin](/docs/it/plugins/troubleshooting).3752Questi errori provengono dalla configurazione di [plugin](/docs/it/plugins/overview) e [marketplace](/docs/it/plugins/overview). Per i problemi dei plugin che non producono uno dei messaggi in questa pagina, come un URL del marketplace che non si carica o un plugin che si installa ma non appare, vedi [Risoluzione dei problemi dei plugin](/docs/it/plugins/troubleshooting).

3651 3753 

3652<h3 id="plugin-eval-is-currently-in-early-access">3754<h3 id="plugin-eval-is-currently-in-early-access">

3653 plugin eval is currently in early access3755 plugin eval è attualmente in accesso anticipato

3654</h3>3756</h3>

3655 3757 

3656Avete eseguito [`claude plugin eval`](/docs/it/plugin-evals) o `claude plugin eval init` e ha terminato con codice 1 con uno di questi messaggi prima di fare qualsiasi cosa:3758Hai eseguito [`claude plugin eval`](/docs/it/plugin-evals) o `claude plugin eval init` e ha terminato con codice 1 con uno di questi messaggi prima di fare qualsiasi cosa:

3657 3759 

3658```text theme={null}3760```text theme={null}

3659`plugin eval` is currently in early access3761`plugin eval` is currently in early access


3663`plugin eval` is currently unavailable3765`plugin eval` is currently unavailable

3664```3766```

3665 3767 

3666Il primo messaggio significa che la vostra build è più vecchia della v2.1.269, la prima versione in cui il comando è generalmente disponibile. Il secondo significa che Anthropic ha disattivato il comando lato server; nulla sulla vostra macchina lo riattiva.3768Il primo messaggio significa che la tua build è più vecchia della v2.1.269, la prima versione in cui il comando è generalmente disponibile. Il secondo significa che Anthropic ha disattivato il comando lato server; nulla sulla tua macchina lo riattiva.

3667 3769 

3668**Cosa fare:**3770**Cosa fare:**

3669 3771 

3670* Eseguite `claude --version`, quindi `claude update`, ed eseguite il comando di nuovo in una nuova sessione. Vedere i [requisiti per plugin evals](/docs/it/plugin-evals#requirements)3772* Esegui `claude --version`, quindi `claude update`, ed esegui il comando di nuovo in una nuova sessione. Vedi i [requisiti per le valutazioni dei plugin](/docs/it/plugin-evals#requirements)

3671* Se vedete il secondo messaggio su una build attuale, riprovate più tardi dopo un altro `claude update`3773* Se vedi il secondo messaggio su una build attuale, riprova più tardi dopo un altro `claude update`

3672 3774 

3673<h3 id="marketplace-is-registered-from-an-untrusted-source">3775<h3 id="marketplace-is-registered-from-an-untrusted-source">

3674 Marketplace is registered from an untrusted source3776 Marketplace è registrato da una fonte non attendibile

3675</h3>3777</h3>

3676 3778 

3677Il marketplace è registrato con un nome che è [riservato per i marketplace ufficiali di Anthropic](/docs/it/plugins/marketplace-reference#marketplace-file), ma la sua fonte registrata non è un repository GitHub di `anthropics`. Claude Code ri-controlla i nomi riservati ogni volta che carica o aggiorna un marketplace, quindi il marketplace e i plugin installati da esso smettono di caricarsi. Prima della v2.1.205, un'voce registrata prima che il suo nome diventasse riservato continuava a caricarsi.3779Il marketplace è registrato con un nome che è [riservato per i marketplace ufficiali di Anthropic](/docs/it/plugins/marketplace-reference#marketplace-file), ma la sua fonte registrata non è un repository GitHub `anthropics`. Claude Code ri-controlla i nomi riservati ogni volta che carica o aggiorna un marketplace, quindi il marketplace e i plugin installati da esso smettono di caricarsi. Prima della v2.1.205, una voce registrata prima che il suo nome diventasse riservato continuava a caricarsi.

3678 3780 

3679```text theme={null}3781```text theme={null}

3680Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.3782Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.

3681```3783```

3682 3784 

3683Per un marketplace la cui fonte non è un repository GitHub o un URL Git, come una directory locale, la frase centrale recita `can only be used with GitHub sources from the 'anthropics' organization` invece. `claude plugin marketplace add` esegue lo stesso controllo e rifiuta un nome riservato con `Failed to add marketplace:` seguito dalla stessa frase del nome riservato.3785Per un marketplace la cui fonte non è un repository GitHub o un URL Git, come una directory locale, la frase centrale legge `can only be used with GitHub sources from the 'anthropics' organization` invece. `claude plugin marketplace add` esegue lo stesso controllo e rifiuta un nome riservato con `Failed to add marketplace:` seguito dalla stessa frase del nome riservato.

3684 3786 

3685**Cosa fare:**3787**Cosa fare:**

3686 3788 

3687* Se il marketplace è già registrato, eseguite `claude plugin marketplace remove <name>`, quindi aggiungetelo di nuovo dal repository ufficiale `github.com/anthropics`3789* Se il marketplace è già registrato, esegui `claude plugin marketplace remove <name>`, quindi aggiungilo di nuovo dal repository ufficiale `github.com/anthropics`

3688* Se pubblicate un marketplace di terze parti che ha utilizzato il nome prima che diventasse riservato, rinominatelo e chiedete agli utenti di aggiungerlo di nuovo dalla vostra fonte3790* Se pubblichi un marketplace di terze parti che ha utilizzato il nome prima che diventasse riservato, rinominalo e chiedi agli utenti di aggiungerlo di nuovo dalla tua fonte

3689* Vedere l'elenco dei nomi riservati in [Marketplace schema](/docs/it/plugins/marketplace-reference#marketplace-file)3791* Vedi l'elenco dei nomi riservati in [Schema del Marketplace](/docs/it/plugins/marketplace-reference#marketplace-file)

3690 3792 

3691<h3 id="marketplace-name-is-another-spelling-of-a-reserved-name">3793<h3 id="marketplace-name-is-another-spelling-of-a-reserved-name">

3692 Marketplace name is another spelling of a reserved name3794 Il nome del marketplace è un'altra ortografia di un nome riservato

3693</h3>3795</h3>

3694 3796 

3695Il nome del marketplace non è di per sé un nome riservato, ma Claude Code lo tratta come un'altra ortografia di uno. [Reserved names](/docs/it/plugins/marketplace-reference#reserved-name-spellings) elenca quali ortografie contano come un nome riservato. Claude Code rifiuta tale nome quando aggiungete il marketplace:3797Il nome del marketplace non è di per sé un nome riservato, ma Claude Code lo tratta come un'altra ortografia di uno. [Nomi riservati](/docs/it/plugins/marketplace-reference#reserved-name-spellings) elenca quali ortografie contano come un nome riservato. Claude Code rifiuta un tale nome quando aggiungi il marketplace:

3696 3798 

3697```text theme={null}3799```text theme={null}

3698Failed to add marketplace: "claude.code.plugins" is another spelling of "claude-code-plugins", a reserved marketplace name.3800Failed to add marketplace: "claude.code.plugins" is another spelling of "claude-code-plugins", a reserved marketplace name.

3699```3801```

3700 3802 

3701Quando un marketplace è già registrato con tale nome, la sua voce smette di caricarsi, e `/plugin`, `claude plugin install`, e `claude plugin update` avvertono:3803Quando un marketplace è già registrato con un tale nome, la sua voce smette di caricarsi, e `/plugin`, `claude plugin install`, e `claude plugin update` avvertono:

3702 3804 

3703```text wrap theme={null}3805```text wrap theme={null}

3704known_marketplaces.json has an entry named "claude.code.plugins", another spelling of the reserved marketplace name "claude-code-plugins", so it is ignored. Remove it with: claude plugin marketplace remove claude.code.plugins3806known_marketplaces.json has an entry named "claude.code.plugins", another spelling of the reserved marketplace name "claude-code-plugins", so it is ignored. Remove it with: claude plugin marketplace remove claude.code.plugins

3705```3807```

3706 3808 

3707Quando il nome avrebbe bisogno di quoting della shell, il rifiuto al momento dell'aggiunta recita `This marketplace's name is another spelling of "<reserved>", a reserved marketplace name. It is not exactly the reserved name it appears to be.`3809Quando il nome avrebbe bisogno di quoting della shell, il rifiuto al momento dell'aggiunta legge `This marketplace's name is another spelling of "<reserved>", a reserved marketplace name. It is not exactly the reserved name it appears to be.`

3708 3810 

3709**Cosa fare:**3811**Cosa fare:**

3710 3812 

3711* Rinominate il marketplace con un nome che non ortografia un nome riservato e aggiungetelo di nuovo3813* Rinomina il marketplace con un nome che non ortografia un nome riservato e aggiungilo di nuovo

3712* Per l'avvertimento di voce ignorata, eseguite il comando `claude plugin marketplace remove` che fornisce, o rimuovete la voce da `~/.claude/plugins/known_marketplaces.json`3814* Per l'avvertimento della voce ignorata, esegui il comando `claude plugin marketplace remove` che fornisce, o rimuovi la voce da `~/.claude/plugins/known_marketplaces.json`

3713 3815 

3714<h3 id="claude-code-refuses-the-marketplace-name">3816<h3 id="claude-code-refuses-the-marketplace-name">

3715 Claude Code refuses the marketplace name3817 Claude Code rifiuta il nome del marketplace

3716</h3>3818</h3>

3717 3819 

3718Un nome di marketplace registrato [impersona un marketplace ufficiale di Anthropic](/docs/it/plugins/marketplace-reference#reserved-names) secondo le regole che quella sezione elenca.3820Il nome di un marketplace registrato [impersona un marketplace ufficiale di Anthropic](/docs/it/plugins/marketplace-reference#reserved-names) secondo le regole che quella sezione elenca.

3719 3821 

3720Se un marketplace è stato registrato con tale nome prima che il controllo lo bloccasse, il marketplace e i plugin installati da esso smettono di caricarsi, perché Claude Code controlla il nome ogni volta che legge il catalogo del marketplace. Quando il nome imita uno ufficiale, `claude plugin list` e la scheda **Errors** di `/plugin` segnalano ogni plugin interessato con un messaggio che inizia:3822Se un marketplace è stato registrato con un tale nome prima che il controllo lo bloccasse, il marketplace e i plugin installati da esso smettono di caricarsi, perché Claude Code controlla il nome ogni volta che legge il catalogo del marketplace. Quando il nome imita uno ufficiale, `claude plugin list` e la scheda **Errors** di `/plugin` segnalano ogni plugin interessato con un messaggio che inizia:

3721 3823 

3722```text theme={null}3824```text theme={null}

3723Claude Code refuses the marketplace name "anthropic-plugins-v2"3825Claude Code refuses the marketplace name "anthropic-plugins-v2"

3724```3826```

3725 3827 

3726Per un nome imitativo, l'errore del marketplace stesso recita `Claude Code refuses this marketplace's name: it looks like one of Anthropic's own` invece. `claude plugin marketplace add` rifiuta qualsiasi nome che impersona con `Marketplace name impersonates an official Anthropic/Claude marketplace`.3828Per un nome che imita, l'errore del marketplace stesso legge `Claude Code refuses this marketplace's name: it looks like one of Anthropic's own` invece. `claude plugin marketplace add` rifiuta qualsiasi nome che impersona con `Marketplace name impersonates an official Anthropic/Claude marketplace`.

3727 3829 

3728Prima della v2.1.282, `claude plugin list` e `/plugin` segnalano i plugin di un nome imitativo come falliti a caricarsi anche, senza nominare il nome del marketplace come la causa.3830Prima della v2.1.282, `claude plugin list` e `/plugin` segnalano i plugin di un nome che imita come non riusciti a caricarsi anche, senza nominare il nome del marketplace come la causa.

3729 3831 

3730**Cosa fare:**3832**Cosa fare:**

3731 3833 

3732* Eseguite `claude plugin marketplace remove <name>`. Questo disinstalla anche i plugin installati dal marketplace e cancella i loro dati salvati3834* Esegui `claude plugin marketplace remove <name>`. Questo disinstalla anche i plugin installati dal marketplace e cancella i loro dati salvati

3733* Per mantenere il marketplace invece, aspettate fino a quando il suo manutentore lo rinomina, quindi eseguite `claude plugin marketplace update <name>`3835* Per mantenere il marketplace invece, attendi fino a quando il suo manutentore lo rinomina, quindi esegui `claude plugin marketplace update <name>`

3734* Se pubblicate il marketplace, rinominatelo nel vostro `marketplace.json`; gli utenti aggiornano il marketplace invece di rimuoverlo3836* Se pubblichi il marketplace, rinominalo nel tuo `marketplace.json`; gli utenti aggiornano il marketplace invece di rimuoverlo

3735 3837 

3736<h3 id="marketplace-is-already-added-from-a-different-source">3838<h3 id="marketplace-is-already-added-from-a-different-source">

3737 Marketplace is already added from a different source3839 Marketplace è già aggiunto da una fonte diversa

3738</h3>3840</h3>

3739 3841 

3740Avete confermato l'aggiunta di un marketplace tramite [`/plugin install <plugin> --marketplace <source>`](/docs/it/plugins/install#add-a-marketplace-and-install-in-one-command), e il catalogo che Claude Code ha recuperato da quella fonte nomina se stesso con lo stesso nome di un marketplace che avete già aggiunto da una fonte diversa. Claude Code mantiene il marketplace esistente invece di sostituirlo, e il plugin non viene installato.3842Hai confermato l'aggiunta di un marketplace tramite [`/plugin install <plugin> --marketplace <source>`](/docs/it/plugins/install#add-a-marketplace-and-install-in-one-command), e il catalogo che Claude Code ha recuperato da quella fonte nomina se stesso come un marketplace che hai già aggiunto da una fonte diversa. Claude Code mantiene il marketplace esistente invece di sostituirlo, e il plugin non viene installato.

3741 3843 

3742```text theme={null}3844```text theme={null}

3743Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.3845Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.


3745 3847 

3746**Cosa fare:**3848**Cosa fare:**

3747 3849 

3748* Se il marketplace che avete già aggiunto è quello che desiderate, installate da esso per nome: `/plugin install <plugin>@<name>`3850* Se il marketplace che hai già aggiunto è quello che desideri, installa da esso per nome: `/plugin install <plugin>@<name>`

3749* Per passare alla nuova fonte, eseguite `/plugin marketplace remove <name>`, quindi riprovate l'installazione3851* Per passare alla nuova fonte, esegui `/plugin marketplace remove <name>`, quindi riprova l'installazione

3750 3852 

3751<h3 id="plugin-command-references-user-config">3853<h3 id="plugin-command-references-user-config">

3752 Plugin command references user\_config in a shell command3854 Il comando del plugin fa riferimento a user\_config in un comando shell

3753</h3>3855</h3>

3754 3856 

3755Un hook del plugin, [monitor](/docs/it/plugins/components#monitors), o un comando MCP [`headersHelper`](/docs/it/mcp#use-dynamic-headers-for-custom-authentication) fa riferimento a un'[opzione del plugin](/docs/it/plugins/manifest-reference#user-configuration) `${user_config.KEY}`, e la stringa sostituita verrebbe passata a una shell. Un valore configurato contenente `$(...)`, backtick, o `;` verrebbe eseguito come codice lì, quindi Claude Code rifiuta di avviare il componente invece di sostituire il valore. Il controllo viene eseguito sul modello di comando, quindi l'errore appare anche quando nessun valore è ancora configurato. Prima della v2.1.207, il valore veniva sostituito nel comando della shell.3857Un hook del plugin, [monitor](/docs/it/plugins/components#monitors), o comando MCP [`headersHelper`](/docs/it/mcp#use-dynamic-headers-for-custom-authentication) fa riferimento a un'[opzione del plugin](/docs/it/plugins/manifest-reference#user-configuration) `${user_config.KEY}`, e la stringa sostituita verrebbe passata a una shell. Un valore configurato contenente `$(...)`, backtick, o `;` verrebbe eseguito come codice lì, quindi Claude Code rifiuta di avviare il componente invece di sostituire il valore. Il controllo viene eseguito sul modello di comando, quindi l'errore appare anche quando nessun valore è ancora configurato. Prima della v2.1.207, il valore veniva sostituito nel comando shell.

3756 3858 

3757La formulazione dipende da quale superficie ha fatto riferimento all'opzione. Un hook in forma shell segnala:3859La formulazione dipende da quale superficie ha fatto riferimento all'opzione. Un hook in forma shell segnala:

3758 3860 


3774 3876 

3775**Cosa fare:**3877**Cosa fare:**

3776 3878 

3777* Per un hook, aggiungete un array `args` in modo che venga eseguito in [forma exec](/docs/it/hooks#exec-form-and-shell-form), dove ogni `${user_config.KEY}` diventa un argomento senza shell in mezzo. Oppure eliminate il riferimento e leggete la variabile di ambiente `$CLAUDE_PLUGIN_OPTION_<KEY>` all'interno dello script3879* Per un hook, aggiungi un array `args` in modo che venga eseguito in [forma exec](/docs/it/hooks#exec-form-and-shell-form), dove ogni `${user_config.KEY}` diventa un argomento senza shell in mezzo. Oppure elimina il riferimento e leggi la variabile di ambiente `$CLAUDE_PLUGIN_OPTION_<KEY>` all'interno dello script

3778* Per un monitor, eliminate il riferimento e fate in modo che lo script del monitor legga il valore da un file di configurazione3880* Per un monitor, elimina il riferimento e fai leggere al monitor script il valore da un file di configurazione

3779* Per un `headersHelper`, spostate `${user_config.KEY}` nel campo `headers` del server, che non viene analizzato dalla shell, oppure leggete il valore all'interno dello script helper3881* Per un `headersHelper`, sposta `${user_config.KEY}` nel campo `headers` del server, che non viene analizzato dalla shell, o leggi il valore all'interno dello script helper

3780 3882 

3781<h3 id="plugin-archive-integrity-check-failed">3883<h3 id="plugin-archive-integrity-check-failed">

3782 Plugin archive integrity check failed3884 Controllo dell'integrità dell'archivio del plugin non riuscito

3783</h3>3885</h3>

3784 3886 

3785La voce del marketplace del plugin utilizza una [fonte `archive`](/docs/it/plugins/marketplace-reference#archive-plugin-source) con un pin `sha256`, e il digest del file scaricato non corrisponde al pin. Claude Code rifiuta l'installazione, quindi nulla cambia nella cache del plugin. La mancata corrispondenza ha tre possibili cause:3887La voce del marketplace del plugin utilizza una [fonte `archive`](/docs/it/plugins/marketplace-reference#archive-plugin-source) con un pin `sha256`, e il digest del file scaricato non corrisponde al pin. Claude Code rifiuta l'installazione, quindi nulla cambia nella cache del plugin. La mancata corrispondenza ha tre possibili cause:

3786 3888 

3787* Il file all'URL è cambiato dopo che l'autore ha calcolato il pin3889* Il file all'URL è cambiato dopo che l'autore ha calcolato il pin

3788* L'autore ha inserito il digest sbagliato nella voce del marketplace3890* L'autore ha inserito il digest sbagliato nella voce del marketplace

3789* L'URL serve un file diverso da quello che l'autore ha fissato3891* L'URL serve un file diverso da quello che l'autore ha pinato

3790 3892 

3791```text theme={null}3893```text theme={null}

3792Plugin archive integrity check failed for https://artifacts.example.com/claude-plugins/my-plugin.zip: expected sha256 6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1, got ac52220c0914ef8ca6a602e4a7362f88d30fb021110f72a6d15b68c3fe7df2b7. The archive was not installed. Verify the sha256 in the marketplace entry, or that the URL serves the intended file.3894Plugin archive integrity check failed for https://artifacts.example.com/claude-plugins/my-plugin.zip: expected sha256 6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1, got ac52220c0914ef8ca6a602e4a7362f88d30fb021110f72a6d15b68c3fe7df2b7. The archive was not installed. Verify the sha256 in the marketplace entry, or that the URL serves the intended file.


3794 3896 

3795**Cosa fare:**3897**Cosa fare:**

3796 3898 

3797* Se pubblicate il plugin, ricalcolate il digest del file esatto che l'URL serve, ad esempio con `shasum -a 256 my-plugin.zip`, o `Get-FileHash -Algorithm SHA256 my-plugin.zip` in PowerShell, e aggiornate `sha256` nella voce del marketplace3899* Se pubblichi il plugin, ricalcola il digest del file esatto che l'URL serve, ad esempio con `shasum -a 256 my-plugin.zip`, o `Get-FileHash -Algorithm SHA256 my-plugin.zip` in PowerShell, e aggiorna `sha256` nella voce del marketplace

3798* Se installate il plugin, eseguite `/plugin marketplace update <name>` per aggiornare il catalogo nel caso in cui la voce sia stata corretta, quindi riprovate l'installazione3900* Se installi il plugin, esegui `/plugin marketplace update <name>` per aggiornare il catalogo nel caso in cui la voce sia stata corretta, quindi riprova l'installazione

3799* Se i digest continuano a non corrispondere dopo un aggiornamento, chiedete al proprietario del marketplace quale file hanno fissato prima di installare3901* Se i digest continuano a non corrispondere dopo un aggiornamento, chiedi al proprietario del marketplace quale file hanno pinato prima di installare

3800 3902 

3801<h3 id="path-escapes-plugin-directory">3903<h3 id="path-escapes-plugin-directory">

3802 Path escapes plugin directory3904 Il percorso esce dalla directory del plugin

3803</h3>3905</h3>

3804 3906 

3805Un percorso del componente del plugin, dichiarato nel `plugin.json` del plugin o nella sua [voce del marketplace](/docs/it/plugins/marketplace-reference#plugin-entries), si risolve al di fuori della directory del plugin stesso. Claude Code elimina quel percorso e carica il resto del plugin. Il nome del componente nel messaggio, come `commands` o `hooks`, nomina il campo che ha dichiarato il percorso.3907Un percorso del componente del plugin, dichiarato nel `plugin.json` del plugin o nella sua [voce del marketplace](/docs/it/plugins/marketplace-reference#plugin-entries), si risolve al di fuori della directory del plugin. Claude Code elimina quel percorso e carica il resto del plugin. Il nome del componente nel messaggio, come `commands` o `hooks`, nomina il campo che ha dichiarato il percorso.

3806 3908 

3807```text theme={null}3909```text theme={null}

3808commands path escapes plugin directory: ./../shared.md3910commands path escapes plugin directory: ./../shared.md

3809```3911```

3810 3912 

3811Nell'output del comando `claude plugin`, lo stesso errore recita `Path escapes plugin directory: ./../shared.md (commands)`.3913Nell'output del comando `claude plugin`, lo stesso errore legge `Path escapes plugin directory: ./../shared.md (commands)`.

3812 3914 

3813Claude Code rifiuta sia un percorso che punta al di fuori del plugin come scritto, come `../shared-utils`, sia un symlink che porta al di fuori del plugin e non è uno che le [regole dei symlink del marketplace](/docs/it/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks) consentono. Per un symlink, il messaggio dice anche dove il percorso si risolve:3915Claude Code rifiuta sia un percorso che punta al di fuori del plugin come scritto, come `../shared-utils`, sia un symlink che porta al di fuori del plugin e non è uno che le [regole del symlink del marketplace](/docs/it/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks) consentono. Per un symlink, il messaggio dice anche dove il percorso si risolve:

3814 3916 

3815```text theme={null}3917```text theme={null}

3816commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory3918commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory

3817```3919```

3818 3920 

3819Su macOS e Linux, Claude Code rifiuta anche un percorso del componente che contiene una barra rovesciata in qualsiasi punto, anche quando il percorso rimane all'interno del plugin. Un plugin i cui percorsi dei componenti utilizzano separatori in stile Windows si carica su Windows e attiva questo rifiuto sulle altre piattaforme:3921Su macOS e Linux, Claude Code rifiuta anche un percorso del componente che contiene una barra rovesciata ovunque in esso, anche quando il percorso rimane all'interno del plugin. Un plugin i cui percorsi dei componenti utilizzano separatori in stile Windows si carica su Windows e attiva questo rifiuto sulle altre piattaforme:

3820 3922 

3821```text theme={null}3923```text theme={null}

3822commands path escapes plugin directory: ./commands\deploy.md — its path contains a backslash, which is not resolved reliably on this platform3924commands path escapes plugin directory: ./commands\deploy.md — its path contains a backslash, which is not resolved reliably on this platform

3823```3925```

3824 3926 

3825Prima della v2.1.251, Claude Code caricava un percorso `commands` dichiarato in una voce del marketplace anche quando puntava al di fuori della directory del plugin. Claude Code ha già rifiutato i percorsi dichiarati in `plugin.json` e gli altri percorsi dei componenti in una voce del marketplace.3927Prima della v2.1.251, Claude Code caricava un percorso `commands` dichiarato in una voce del marketplace anche quando puntava al di fuori della directory del plugin.

3826 3928 

3827Prima della v2.1.257, il controllo guardava solo l'ortografia del percorso, non dove un symlink porta.3929Prima della v2.1.257, il controllo guardava solo l'ortografia del percorso, non dove un symlink porta.

3828 3930 

3829**Cosa fare:**3931**Cosa fare:**

3830 3932 

3831* Spostate il file referenziato all'interno della directory del plugin e puntate il percorso ad esso con un percorso relativo `./`3933* Sposta il file referenziato all'interno della directory del plugin e punta il percorso ad esso con un percorso relativo `./`

3832* Se il percorso è un symlink a un file al di fuori del plugin, sostituite il symlink con una copia del file3934* Se il percorso è un symlink a un file al di fuori del plugin, sostituisci il symlink con una copia del file

3833* Se il messaggio dice che il percorso contiene una barra rovesciata, scrivete il percorso con barre in avanti, ad esempio `./commands/deploy.md`3935* Se il messaggio dice che il percorso contiene una barra rovesciata, scrivi il percorso con barre in avanti, ad esempio `./commands/deploy.md`

3834* Per condividere file con altri plugin nello stesso marketplace, collegateli con un symlink all'interno della directory del plugin, seguendo le [regole dei symlink](/docs/it/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks)3936* Per condividere file con altri plugin nello stesso marketplace, collegali con un symlink all'interno della directory del plugin, seguendo le [regole del symlink](/docs/it/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks)

3835 3937 

3836<h3 id="path-could-not-be-checked">3938<h3 id="path-could-not-be-checked">

3837 Path could not be checked3939 Il percorso non poteva essere controllato

3838</h3>3940</h3>

3839 3941 

3840Claude Code ha chiesto al sistema operativo se un percorso del plugin esiste e ha ricevuto un errore diverso da "non trovato", quindi non carica ciò che il percorso nomina. Quanto del plugin si carica dipende da quale percorso ha fallito:3942Claude Code ha chiesto al sistema operativo se un percorso del plugin esiste e ha ricevuto un errore diverso da "non trovato", quindi non carica ciò che il percorso nomina. Quanto del plugin si carica dipende da quale percorso ha fallito:

3841 3943 

3842* Una delle [cartelle dei componenti predefinite](/docs/it/plugins/manifest-reference#standard-layout) di un plugin, come la cartella `skills/`, il file `monitors/monitors.json`, o uno [`SKILL.md` alla radice del plugin](/docs/it/plugins/components#skills): gli altri componenti del plugin si caricano comunque3944* Una delle [posizioni dei componenti predefiniti](/docs/it/plugins/manifest-reference#standard-layout) di un plugin, come la cartella `skills/`, il file `monitors/monitors.json`, o uno [`SKILL.md` alla radice del plugin](/docs/it/plugins/components#skills): gli altri componenti del plugin si caricano ancora

3843* La directory del plugin stesso: nulla da quel plugin si carica3945* La directory del plugin stesso: nulla da quel plugin si carica

3844 3946 

3845Non vedete questo errore per un percorso che non esiste affatto. In `/plugin`, l'errore appare sotto il plugin e nomina il percorso e il codice che il sistema operativo ha restituito:3947Non vedi questo errore per un percorso che non esiste affatto. In `/plugin`, l'errore appare sotto il plugin e nomina il percorso e il codice che il sistema operativo ha restituito:

3846 3948 

3847```text theme={null}3949```text theme={null}

3848skills path could not be checked: /home/user/my-plugin/skills (ELOOP)3950skills path could not be checked: /home/user/my-plugin/skills (ELOOP)

3849```3951```

3850 3952 

3851In `claude plugin list`, lo stesso errore recita `Path not found: /home/user/my-plugin/skills (skills, ELOOP)`.3953In `claude plugin list`, lo stesso errore legge `Path not found: /home/user/my-plugin/skills (skills, ELOOP)`.

3852 3954 

3853Le cause che producono questo errore includono:3955Le cause che producono questo errore includono:

3854 3956 


3858 3960 

3859**Cosa fare:**3961**Cosa fare:**

3860 3962 

3861* Sostituite un symlink che punta a se stesso con una cartella reale, oppure eliminatelo3963* Sostituisci un symlink che punta a se stesso con una cartella reale, o eliminalo

3862* Se il percorso è su un mount di rete, rimontate la condivisione3964* Se il percorso è su un mount di rete, rimonta la condivisione

3863* Se il codice è `EACCES`, ripristinate il vostro permesso di esecuzione sulle directory sopra il percorso3965* Se il codice è `EACCES`, ripristina il tuo permesso di esecuzione sulle directory sopra il percorso

3864* Eseguite `/reload-plugins` dopo aver corretto il percorso, o riavviate Claude Code, per caricare il plugin o il componente3966* Esegui `/reload-plugins` dopo aver corretto il percorso, o riavvia Claude Code, per caricare il plugin o il componente

3865 3967 

3866Prima della v2.1.265, Claude Code trattava una cartella dei componenti predefinita che non poteva controllare come assente e caricava il plugin senza quel componente, senza errore.3968Prima della v2.1.265, Claude Code trattava una cartella del componente predefinito che non poteva controllare come assente e caricava il plugin senza quel componente, senza errore.

3867 3969 

3868<h3 id="marketplace-entry-path-does-not-stay-inside-the-marketplace-directory">3970<h3 id="marketplace-entry-path-does-not-stay-inside-the-marketplace-directory">

3869 Marketplace entry path does not stay inside the marketplace directory3971 Il percorso della voce del marketplace non rimane all'interno della directory del marketplace

3870</h3>3972</h3>

3871 3973 

3872La [voce del marketplace](/docs/it/plugins/marketplace-reference#plugin-entries) del plugin dichiara un percorso di origine che Claude Code non può risolvere a una posizione all'interno della directory del marketplace stesso, quindi il plugin non si installa o non si carica. Il rifiuto copre:3974La [voce del marketplace](/docs/it/plugins/marketplace-reference#plugin-entries) del plugin dichiara un percorso di origine che Claude Code non può risolvere a una posizione all'interno della directory del marketplace stesso, quindi il plugin non si installa o carica. Il rifiuto copre:

3873 3975 

3874* Un percorso di voce che è assoluto, esce dal marketplace con `..`, o è scritto come un percorso di rete3976* Un percorso della voce che è assoluto, sale fuori dal marketplace con `..`, o è scritto come un percorso di rete

3875* Su macOS e Linux, un percorso di voce che contiene una barra rovesciata in qualsiasi punto dopo il `./` iniziale3977* Su macOS e Linux, un percorso della voce che contiene una barra rovesciata ovunque dopo il `./` iniziale

3876* Una voce in un marketplace recuperato da una fonte remota, come git o un URL, che raggiunge il suo target attraverso un symlink che si risolve al di fuori della directory del marketplace3978* Una voce in un marketplace recuperato da una fonte remota, come git o un URL, che raggiunge il suo target attraverso un symlink che si risolve al di fuori della directory del marketplace

3877* Una voce relativa in un marketplace aggiunto da un URL diretto al suo `marketplace.json`: Claude Code scarica solo quel file, quindi nessun file di plugin locale esiste per il percorso da nominare. Vedere [Plugins with relative paths fail in URL-based marketplaces](/docs/it/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces)3979* Una voce relativa in un marketplace aggiunto da un URL diretto al suo `marketplace.json`: Claude Code scarica solo quel file, quindi nessun file di plugin locale esiste per il percorso da nominare. Vedi [I plugin con percorsi relativi falliscono nei marketplace basati su URL](/docs/it/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces)

3878 3980 

3879`claude plugin install` segnala il rifiuto così:3981`claude plugin install` segnala il rifiuto così:

3880 3982 


3882Cannot install my-plugin@my-marketplace: its marketplace entry path does not stay inside the marketplace directory (an absolute, climbing, network-shaped, backslash-containing or link-traversing entry, an entry of a fetched marketplace that resolves or opens outside its tree — or a relative entry in a url-catalog marketplace, which has no local directory)3984Cannot install my-plugin@my-marketplace: its marketplace entry path does not stay inside the marketplace directory (an absolute, climbing, network-shaped, backslash-containing or link-traversing entry, an entry of a fetched marketplace that resolves or opens outside its tree — or a relative entry in a url-catalog marketplace, which has no local directory)

3883```3985```

3884 3986 

3885Quando la voce di un plugin già installato fallisce lo stesso controllo, `claude plugin list` mostra il plugin come `failed to load` con:3987Quando il percorso di una voce di un plugin già installato fallisce lo stesso controllo, `claude plugin list` mostra il plugin come `failed to load` con:

3886 3988 

3887```text theme={null}3989```text theme={null}

3888Plugin source path refused: ./my-plugin does not stay inside its marketplace directory. Check that the marketplace entry has a plain relative path.3990Plugin source path refused: ./my-plugin does not stay inside its marketplace directory. Check that the marketplace entry has a plain relative path.


3890 3992 

3891**Cosa fare:**3993**Cosa fare:**

3892 3994 

3893* Se mantenete il marketplace, scrivete il `source` della voce come un percorso relativo semplice con barre in avanti, come `./plugins/my-plugin`, e mantenete qualsiasi symlink che attraversa puntato all'interno della directory del marketplace3995* Se mantieni il marketplace, scrivi il `source` della voce come un percorso relativo semplice con barre in avanti, come `./plugins/my-plugin`, e mantieni qualsiasi symlink che attraversa puntato all'interno della directory del marketplace

3894* Se avete aggiunto il marketplace da un URL diretto, le voci relative non possono risolversi. Chiedete all'autore del marketplace di utilizzare [un'altra fonte di plugin](/docs/it/plugins/marketplace-reference#plugin-sources), o aggiungete il marketplace dal suo repository git invece3996* Se hai aggiunto il marketplace da un URL diretto, le voci relative non possono risolversi. Chiedi all'autore del marketplace di utilizzare [un'altra fonte di plugin](/docs/it/plugins/marketplace-reference#plugin-sources), o aggiungi il marketplace dal suo repository git invece

3895 3997 

3896<h3 id="failed-to-load-marketplace-configuration">3998<h3 id="failed-to-load-marketplace-configuration">

3897 Failed to load marketplace configuration3999 Impossibile caricare la configurazione del marketplace

3898</h3>4000</h3>

3899 4001 

3900Claude Code mantiene i marketplace dei plugin che avete aggiunto in un file di registro in `~/.claude/plugins/known_marketplaces.json`. Un comando di plugin che ha bisogno del registro, come `claude plugin install`, fallisce con uno di due messaggi quando Claude Code non può utilizzare il file:4002Claude Code mantiene i marketplace dei plugin che hai aggiunto in un file di registro in `~/.claude/plugins/known_marketplaces.json`. Un comando di plugin che ha bisogno del registro, come `claude plugin install`, fallisce con uno di due messaggi quando Claude Code non può utilizzare il file:

3901 4003 

3902* `Failed to load marketplace configuration`: il file non è JSON valido, o non può essere letto. Un file vuoto fallisce in questo modo.4004* `Failed to load marketplace configuration`: il file esiste ma non è JSON valido o non può essere letto. Un file vuoto fallisce in questo modo anche.

3903* `Marketplace configuration file is corrupted`: il file è JSON valido ma i suoi contenuti non corrispondono allo schema del registro.4005* `Marketplace configuration file is corrupted`: il file è JSON valido ma i suoi contenuti non corrispondono allo schema del registro.

3904 4006 

3905Un file mancante non è un fallimento: Claude Code lo tratta come un registro senza marketplace.

3906 

3907Con un file vuoto, `claude plugin install` segnala:4007Con un file vuoto, `claude plugin install` segnala:

3908 4008 

3909```text theme={null}4009```text theme={null}


3914 4014 

3915**Cosa fare:**4015**Cosa fare:**

3916 4016 

3917* Aprite `~/.claude/plugins/known_marketplaces.json` e riparate il JSON, o correggete le voci che il messaggio nomina come non corrispondenti allo schema del registro4017* Apri `~/.claude/plugins/known_marketplaces.json` e ripara il JSON, o correggi le voci che il messaggio nomina come non corrispondenti allo schema del registro

3918* Se non potete ripararla, eliminate il file o sostituite i suoi contenuti con `{}`, quindi aggiungete di nuovo ogni marketplace con `claude plugin marketplace add <source>`. Claude Code ri-registra i marketplace che le vostre impostazioni utente o gestite dichiarano in [`extraKnownMarketplaces`](/docs/it/settings-reference#extraknownmarketplaces) la prossima volta che lo avviate in una cartella che avete considerato attendibile.4018* Se non puoi ripararla, elimina il file o sostituisci i suoi contenuti con `{}`, quindi aggiungi di nuovo ogni marketplace con `claude plugin marketplace add <source>`. Claude Code ri-registra i marketplace che le tue impostazioni utente o gestite dichiarano in [`extraKnownMarketplaces`](/docs/it/settings-reference#extraknownmarketplaces) la prossima volta che lo avvii in una cartella che hai fiducia.

3919 4019 

3920<h3 id="plugin-is-required-by-your-organization">4020<h3 id="plugin-is-required-by-your-organization">

3921 Plugin is required by your organization4021 Il plugin è richiesto dalla tua organizzazione

3922</h3>4022</h3>

3923 4023 

3924Avete eseguito `claude plugin disable`, o utilizzato la scheda **Installed** di `/plugin`, per disattivare un [plugin sincronizzato da claude.ai](/docs/it/plugins/loading#synced-plugins) che la vostra organizzazione contrassegna come obbligatorio:4024Hai eseguito `claude plugin disable`, o utilizzato la scheda **Installed** di `/plugin`, per disattivare un [plugin sincronizzato da claude.ai](/docs/it/plugins/loading#synced-plugins) che la tua organizzazione contrassegna come richiesto:

3925 4025 

3926```text theme={null}4026```text theme={null}

3927Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.4027Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.


3929 4029 

3930Claude Code non salva nulla e il plugin rimane abilitato.4030Claude Code non salva nulla e il plugin rimane abilitato.

3931 4031 

3932Quando tentate di disattivare un plugin da cui dipende un plugin obbligatorio, Claude Code rifiuta allo stesso modo, con un messaggio che nomina il plugin obbligatorio che ne ha bisogno.4032Quando provi a disabilitare un plugin da cui dipende un plugin richiesto, Claude Code rifiuta allo stesso modo, con un messaggio che nomina il plugin richiesto che lo necessita.

3933 4033 

3934**Cosa fare:**4034**Cosa fare:**

3935 4035 

3936* Chiedete a un amministratore della vostra organizzazione claude.ai di cambiare lo stato obbligatorio del plugin su claude.ai4036* Chiedi a un amministratore della tua organizzazione claude.ai di cambiare lo stato richiesto del plugin su claude.ai

3937 4037 

3938<h3 id="plugin-was-not-uninstalled">4038<h3 id="plugin-was-not-uninstalled">

3939 Plugin was not uninstalled4039 Il plugin non è stato disinstallato

3940</h3>4040</h3>

3941 4041 

3942Avete eseguito [`claude plugin uninstall`](/docs/it/plugins/cli-reference#plugin-uninstall), o scelto **Uninstall** nella scheda **Installed** di `/plugin`, e la disinstallazione si è fermata con un messaggio che inizia `"<plugin>" was not uninstalled:`. Se il testo dopo quel due punti inizia con `installed_plugins.json` invece di nominare un file di impostazioni, la causa è il contenuto in `installed_plugins.json` che questa versione di Claude Code non può leggere. Per quella forma, vedere [`installed_plugins.json` holds a record this version can't read](/docs/it/plugins/troubleshooting#installed-plugins-json-holds-a-record-this-version-cannot-read).4042Hai eseguito [`claude plugin uninstall`](/docs/it/plugins/cli-reference#plugin-uninstall), o scelto **Uninstall** nella scheda **Installed** di `/plugin`, e la disinstallazione si è fermata con un messaggio che inizia `"<plugin>" was not uninstalled:`. Se il testo dopo i due punti inizia con `installed_plugins.json` invece di nominare un file di impostazioni, la causa è il contenuto in `installed_plugins.json` che questa versione di Claude Code non può leggere. Per quella forma, vedi [`installed_plugins.json` contiene un record che questa versione non può leggere](/docs/it/plugins/troubleshooting#installed-plugins-json-holds-a-record-this-version-cannot-read).

3943 4043 

3944Quando Claude Code ha rimosso la voce del plugin da `enabledPlugins` e ha letto di nuovo i file delle impostazioni di quel scope, il plugin era ancora attivato lì, oppure un file che potrebbe attivarlo non poteva essere letto o controllato. Eliminare le opzioni salvate del plugin, i segreti e i dati mentre una voce delle impostazioni potrebbe riattivarlo comporterebbe la loro perdita, quindi la disinstallazione si ferma invece: il plugin rimane installato e nulla che ha salvato viene eliminato.4044Quando Claude Code ha rimosso la voce del plugin da `enabledPlugins` e ha letto i file di impostazioni di quel scope di nuovo, o il plugin era ancora acceso lì, o un file che potrebbe accenderlo non poteva essere letto o controllato. Eliminare le opzioni salvate del plugin, i segreti e i dati mentre una voce di impostazioni potrebbe accenderlo di nuovo perderebbe, quindi la disinstallazione si ferma invece: il plugin rimane installato e nulla che ha salvato viene eliminato.

3945 4045 

3946```text theme={null}4046```text theme={null}

3947✘ Failed to uninstall plugin "formatter": "formatter" was not uninstalled: it is still switched on in /home/user/project/.claude/settings.local.json, although the settings change reported no error. It is still installed. Take it out of "enabledPlugins" in that file yourself, then uninstall it again.4047✘ Failed to uninstall plugin "formatter": "formatter" was not uninstalled: it is still switched on in /home/user/project/.claude/settings.local.json, although the settings change reported no error. It is still installed. Take it out of "enabledPlugins" in that file yourself, then uninstall it again.


3952* `it is still switched on in <file>, although the settings change reported no error`: la scrittura delle impostazioni ha segnalato il successo ma la voce è ancora lì quando il file viene letto di nuovo4052* `it is still switched on in <file>, although the settings change reported no error`: la scrittura delle impostazioni ha segnalato il successo ma la voce è ancora lì quando il file viene letto di nuovo

3953* `it is still switched on in <file>, and the settings change failed (<error>)`: il file non poteva essere salvato, per il motivo tra parentesi4053* `it is still switched on in <file>, and the settings change failed (<error>)`: il file non poteva essere salvato, per il motivo tra parentesi

3954* `<file> is there and could not be read`: il file esiste ma non poteva essere letto come impostazioni, ad esempio perché non è JSON valido, quindi potrebbe ancora abilitare il plugin4054* `<file> is there and could not be read`: il file esiste ma non poteva essere letto come impostazioni, ad esempio perché non è JSON valido, quindi potrebbe ancora abilitare il plugin

3955* `<file> (not read: it is on a network path or is a link to one, or could not be checked)`: Claude Code non ha letto il file delle impostazioni del progetto o locale perché il file, o la cartella `.claude` che lo contiene, è un link che porta a una posizione di rete, o perché non poteva esaminare quel percorso4055* `<file> (not read: it is on a network path or is a link to one, or could not be checked)`: Claude Code non ha letto il file di impostazioni del progetto o locale perché il file, o la cartella `.claude` che lo contiene, è un link che porta a una posizione di rete, o perché non poteva esaminare quel percorso

3956 4056 

3957`claude plugin uninstall` esce con 1, e con `--json` il risultato porta `failureCode: "settings_still_on"`. `/plugin` mostra lo stesso messaggio.4057`claude plugin uninstall` esce con 1, e con `--json` il risultato porta `failureCode: "settings_still_on"`. `/plugin` mostra lo stesso messaggio.

3958 4058 

3959**Cosa fare:**4059**Cosa fare:**

3960 4060 

3961* Seguite l'ultima frase del messaggio: riparate o sostituite il file delle impostazioni che nomina, o rimuovete la voce del plugin da `enabledPlugins` in quel file voi stessi, quindi eseguite di nuovo la disinstallazione4061* Segui l'ultima frase del messaggio: ripara o sostituisci il file di impostazioni che nomina, o rimuovi la voce del plugin da `enabledPlugins` in quel file tu stesso, quindi esegui di nuovo la disinstallazione

3962 4062 

3963<h2 id="tool-errors">4063<h2 id="tool-errors">

3964 Errori degli strumenti4064 Errori degli strumenti


4527terminal host process died — press Enter to restart4627terminal host process died — press Enter to restart

4528```4628```

4529 4629 

4530Se apri la riga prima che il controllo venga eseguito, il piè di pagina mostra `This session's terminal host process died (the conversation is saved) — press Enter to restart it` e la riga diventa fallita.

4531 

4532Dalla shell, `claude attach <id>` riavvia una sessione già contrassegnata come fallita per un host morto, e altrimenti stampa il motivo e esce:4630Dalla shell, `claude attach <id>` riavvia una sessione già contrassegnata come fallita per un host morto, e altrimenti stampa il motivo e esce:

4533 4631 

4534```text theme={null}4632```text theme={null}


4924 5022 

4925Claude Code scrive la maggior parte di questi messaggi su stderr, non nella conversazione, e scrive la maggior parte di essi all'avvio. Una voce lo dice quando il suo messaggio appare altrove, ad esempio nel log di debug o come avviso di avvio nella vista della conversazione, o in un altro momento, ad esempio la [riga diagnostica modello non riconosciuto](#unrecognized-model-id-on-a-request) al momento della richiesta.5023Claude Code scrive la maggior parte di questi messaggi su stderr, non nella conversazione, e scrive la maggior parte di essi all'avvio. Una voce lo dice quando il suo messaggio appare altrove, ad esempio nel log di debug o come avviso di avvio nella vista della conversazione, o in un altro momento, ad esempio la [riga diagnostica modello non riconosciuto](#unrecognized-model-id-on-a-request) al momento della richiesta.

4926 5024 

4927<h3 id="fullscreen-failed-start-notice">

4928 Il renderer fullscreen non ha finito di avviarsi

4929</h3>

4930 

4931Una precedente sessione [fullscreen](/docs/it/fullscreen) su questa macchina è uscita prima di finire di avviarsi, quindi Claude Code avvia questa sessione sul renderer classico e stampa uno di questi avvisi:

4932 

4933```text theme={null}

4934Claude Code's fullscreen renderer didn't finish starting last time on this machine, so this launch is using the classic renderer. It will try fullscreen again next launch; /tui default keeps the classic renderer.

4935 

4936Claude Code's fullscreen renderer has repeatedly failed to start on this machine, so it has been turned off here. Run /tui fullscreen to try it again (this also resets after an update).

4937```

4938 

4939**Cosa fare:**

4940 

4941* Seguire [Fullscreen rendering](/docs/it/fullscreen#fullscreen-renderer-didnt-finish-starting). Dice quale avviso ricevete, cosa Claude Code fa nelle sessioni successive, e come provare di nuovo fullscreen o mantenere il renderer classico.

4942* Se la sessione che è morta ha stampato un messaggio di uscita, vedere [Claude Code è uscito dopo un errore di interfaccia irrecuperabile](#exited-after-an-unrecoverable-interface-error) per quello che nomina.

4943 

4944Prima della v2.1.236, Claude Code non stampava alcun avviso e continuava ad avviare sessioni nel rendering fullscreen dopo un avvio fallito.

4945 

4946<h3 id="exited-after-an-unrecoverable-interface-error">5025<h3 id="exited-after-an-unrecoverable-interface-error">

4947 Claude Code è uscito dopo un errore di interfaccia irrecuperabile5026 Claude Code è uscito dopo un errore di interfaccia irrecuperabile

4948</h3>5027</h3>


5094* Se amministrate le impostazioni, aggiungere un modello che i vostri utenti possono eseguire a `availableModels`, o restringere le voci `deniedModels` che bloccano ogni fallback. [Block specific models or versions](/docs/it/model-config#block-specific-models-or-versions) descrive come l'opzione Predefinito scende5173* Se amministrate le impostazioni, aggiungere un modello che i vostri utenti possono eseguire a `availableModels`, o restringere le voci `deniedModels` che bloccano ogni fallback. [Block specific models or versions](/docs/it/model-config#block-specific-models-or-versions) descrive come l'opzione Predefinito scende

5095* Se non le amministrate, inviare il messaggio al vostro amministratore. I vostri file di impostazioni non possono ampliare un elenco `availableModels` o `deniedModels` gestito5174* Se non le amministrate, inviare il messaggio al vostro amministratore. I vostri file di impostazioni non possono ampliare un elenco `availableModels` o `deniedModels` gestito

5096 5175 

5176<h3 id="managed-settings-dont-allow-this-api-provider">

5177 Le impostazioni gestite non consentono questo provider API

5178</h3>

5179 

5180La vostra organizzazione [impostazioni gestite](/docs/it/managed-settings) impostano un elenco [`allowedProviders`](/docs/it/settings-reference#allowedproviders), e il provider API della sessione non è su di esso o la sessione usa un endpoint che non è fissato nel modo che quella voce richiede. Claude Code rifiuta all'avvio, prima di un accesso, o quando la sessione contatta successivamente l'API. Il messaggio inizia con i provider consentiti:

5181 

5182```text theme={null}

5183Your organization's managed settings allow Claude Code to use: Anthropic API, Amazon Bedrock.

5184```

5185 

5186Quando l'elenco è vuoto, il messaggio legge invece:

5187 

5188```text theme={null}

5189Your organization's managed settings allow Claude Code to use no API provider at all (allowedProviders is an empty list), so it cannot start on this machine.

5190```

5191 

5192Quando ogni voce non è riconosciuta, la parentetica legge invece `(allowedProviders lists only unrecognized entries)`.

5193 

5194**Cosa fare:**

5195 

5196* Seguire i passaggi `To continue:` del messaggio

5197* Se amministrate le impostazioni, le righe del messaggio che iniziano con `Admins:` nominano la voce da aggiungere o il valore da fissare, e la voce [`allowedProviders`](/docs/it/settings-reference#allowedproviders) dice quale blocco `env` della fonte può fissarlo

5198 

5097<h3 id="mcp-server-is-blocked-by-enterprise-managed-policy">5199<h3 id="mcp-server-is-blocked-by-enterprise-managed-policy">

5098 Il server MCP è bloccato dalla politica gestita aziendale5200 MCP server è bloccato dalla politica gestita aziendale

5099</h3>5201</h3>

5100 5202 

5101Avete selezionato **Reconnect** su un server in `/mcp`, o riattivato un server disabilitato lì, e un'impostazione che [limita i server MCP](/docs/it/managed-mcp) blocca quel server. Claude Code rifiuta di connetterlo e mostra:5203Avete selezionato **Reconnect** su un server in `/mcp`, o riattivato un server disabilitato lì, e un'impostazione che [limita i server MCP](/docs/it/managed-mcp) blocca quel server. Claude Code rifiuta di connetterlo e mostra:


5147* Se amministrate la macchina, correggere il documento nominato in modo che si analizzi come un oggetto JSON, o rimuovere il file, il profilo o il valore del registro. Un `managed-settings.json` vuoto conta come `{}` e non blocca l'avvio.5249* Se amministrate la macchina, correggere il documento nominato in modo che si analizzi come un oggetto JSON, o rimuovere il file, il profilo o il valore del registro. Un `managed-settings.json` vuoto conta come `{}` e non blocca l'avvio.

5148* Se non lo fate, chiedete al vostro amministratore di correggere il documento distribuito. Nulla nei vostri file di impostazioni causa o cancella questo errore.5250* Se non lo fate, chiedete al vostro amministratore di correggere il documento distribuito. Nulla nei vostri file di impostazioni causa o cancella questo errore.

5149 5251 

5252<h3 id="unable-to-read-managed-policy-settings">

5253 Impossibile leggere le impostazioni della politica gestita

5254</h3>

5255 

5256La vostra organizzazione distribuisce [impostazioni gestite](/docs/it/managed-settings), e una delle fonti distribuite esiste ma non ha potuto essere letta, per un motivo come un errore di I/O piuttosto che il sistema operativo che nega la lettura. Senza un'altra fonte amministrativa che fornisce una politica, Claude Code esce all'avvio piuttosto che eseguire senza la politica che la fonte potrebbe contenere:

5257 

5258```text theme={null}

5259Unable to read managed policy settings.

5260This machine may require organization login enforcement, but the policy file failed to load.

5261Contact your administrator.

5262 

5263Detail: <source>: <reason>

5264```

5265 

5266Nello stesso stato, i flussi di accesso, le richieste API da una sessione che è già in esecuzione, e il server [`claude gateway`](/docs/it/claude-apps-gateway) sono rifiutati con una variante della prima riga che nomina [`allowedProviders`](/docs/it/settings-reference#allowedproviders).

5267 

5268Una lettura che il sistema operativo ha negato, come su un file solo root, non produce questa uscita: [la sessione si avvia senza le politiche di quella fonte](/docs/it/managed-settings#find-entries-claude-code-dropped). Per una fonte che non può essere analizzata, Claude Code esce con [un messaggio diverso che nomina la fonte](#managed-settings-document-could-not-be-parsed).

5269 

5270**Cosa fare:**

5271 

5272* Se amministrate la macchina, correggere il problema che la riga `Detail:` nomina in modo che la fonte distribuita possa essere letta, o rimuovere la fonte

5273* Se non lo fate, inviare il messaggio al vostro amministratore. Nulla nei vostri file di impostazioni causa o cancella questo errore

5274 

5275Prima della v2.1.285, solo le sessioni accedute con credenziali claude.ai o Claude Console uscivano con questo messaggio, e una lettura che il sistema operativo ha negato lo produceva anche.

5276 

5150<h3 id="otelheadershelper-failed">5277<h3 id="otelheadershelper-failed">

5151 otelHeadersHelper non riuscito5278 otelHeadersHelper non riuscito

5152</h3>5279</h3>


5245* Correggere la regola alla fonte che l'avviso nomina tra parentesi: un percorso di file di impostazioni, o il flag `--allowed-tools` stesso. Un percorso `claude-settings-<hash>.json` che non esiste su disco rappresenta un valore `--settings` inline. Correggere il JSON che passate a quel flag.5372* Correggere la regola alla fonte che l'avviso nomina tra parentesi: un percorso di file di impostazioni, o il flag `--allowed-tools` stesso. Un percorso `claude-settings-<hash>.json` che non esiste su disco rappresenta un valore `--settings` inline. Correggere il JSON che passate a quel flag.

5246* Se la fonte legge `managed policy settings`, inoltrare l'avviso a chi mantiene le vostre impostazioni gestite, poiché non potete cancellarlo voi stessi.5373* Se la fonte legge `managed policy settings`, inoltrare l'avviso a chi mantiene le vostre impostazioni gestite, poiché non potete cancellarlo voi stessi.

5247 5374 

5248Claude Code non avvisa su regole deny e ask con la stessa forma: rifiuta o chiede i comandi extra che corrispondono piuttosto che approvarli. Non avvisa nemmeno su regole il cui sottocomando viene prima del primo `*`, come `Bash(git commit *)`, o regole in cui nessuna parola diversa da un'opzione segue il `*`, come `Bash(git *)`, o su regole di prefisso `:*` come `Bash(git:*)`.

5249 

5250In una [sessione in background](/docs/it/agent-view) o con `--output-format json` o `stream-json`, Claude Code scrive l'avviso al log di debug invece di stderr, quindi l'output letto dalla macchina rimane pulito. Eseguire con `--debug` per catturarlo in `~/.claude/debug/<session-id>.txt`. Prima della v2.1.246, Claude Code accettava queste regole senza un avviso.5375In una [sessione in background](/docs/it/agent-view) o con `--output-format json` o `stream-json`, Claude Code scrive l'avviso al log di debug invece di stderr, quindi l'output letto dalla macchina rimane pulito. Eseguire con `--debug` per catturarlo in `~/.claude/debug/<session-id>.txt`. Prima della v2.1.246, Claude Code accettava queste regole senza un avviso.

5251 5376 

5252<h3 id="crosssessioninbound-must-be-one-of-accept-hold-refuse">5377<h3 id="crosssessioninbound-must-be-one-of-accept-hold-refuse">


5359 Le risposte sembrano di qualità inferiore al solito5484 Le risposte sembrano di qualità inferiore al solito

5360</h2>5485</h2>

5361 5486 

5362Se le risposte di Claude sembrano meno capaci di quanto ti aspetti ma non viene mostrato alcun errore, la causa è solitamente lo stato della conversazione piuttosto che il modello stesso. Claude Code non cambia silenziosamente le versioni del modello. Può passare a un modello di fallback in tre casi specifici:5487Se le risposte di Claude sembrano meno capaci di quanto ti aspetti ma non viene mostrato alcun errore, la causa è solitamente lo stato della conversazione piuttosto che il modello stesso. Claude Code non cambia silenziosamente le versioni del modello. Può passare a un modello di fallback in questi casi:

5363 5488 

5364* Un [`--fallback-model`](/docs/it/cli-reference#cli-flags) configurato subentra dopo un errore di disponibilità, solo per quel turno, con un avviso nella trascrizione5489* Un [`--fallback-model`](/docs/it/cli-reference#cli-flags) configurato subentra dopo un errore di disponibilità, solo per quel turno, con un avviso nella trascrizione

5365* Un controllo di avvio di Amazon Bedrock o della piattaforma Agent di Google Cloud trova il tuo modello predefinito non disponibile5490* Un controllo di avvio di Amazon Bedrock o della piattaforma Agent di Google Cloud trova il tuo modello predefinito non disponibile, oppure il tuo account [perde l'accesso ad esso durante la sessione](/docs/it/amazon-bedrock#when-a-model-is-disabled-mid-session)

5366* Il [fallback automatico del modello](/docs/it/model-config#automatic-model-fallback) su Fable 5.1, Fable 5, Opus 5.5, Sonnet 5.5 e Opus 5 sposta la sessione al modello di fallback della categoria contrassegnata, quando quella categoria ne ha uno, e mostra un avviso nella trascrizione5491* Il [fallback automatico del modello](/docs/it/model-config#automatic-model-fallback) su Fable 5.1, Fable 5, Opus 5.5, Sonnet 5.5 e Opus 5 sposta la sessione al modello di fallback della categoria contrassegnata, quando quella categoria ne ha uno, e mostra un avviso nella trascrizione

5367 5492 

5368Il controllo della selezione del modello di seguito cattura il secondo e il terzo caso; il primo appare come un avviso nella trascrizione piuttosto che come un cambio `/model`. La [configurazione del modello](/docs/it/model-config) spiega quando si applica ogni fallback.5493Il controllo della selezione del modello di seguito cattura il secondo e il terzo caso; il primo appare come un avviso nella trascrizione piuttosto che come un cambio `/model`. La [configurazione del modello](/docs/it/model-config) spiega quando si applica ogni fallback.

Details

293 293 

294Gli alias dei modelli come `opus` non agiscono come fissaggi, e nemmeno un ID modello che Claude Code non riconosce.294Gli alias dei modelli come `opus` non agiscono come fissaggi, e nemmeno un ID modello che Claude Code non riconosce.

295 295 

296Quando questi controlli trovano un modello che il tuo progetto non può invocare, Claude Code ricorda il rifiuto su questa macchina per un massimo di un giorno, e durante quel tempo i lanci saltano il modello ricordato senza chiedere di nuovo ad Agent Platform. Claude Code controlla un rifiuto ricordato di un modello predefinito corrente di nuovo al lancio una volta che sono passati dieci minuti dall'ultimo controllo, quindi un valore predefinito che il tuo amministratore riabilita ritorna. Per disattivare la memoria, imposta [`CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY=1`](/docs/it/env-vars).

297 

298<h3 id="when-a-model-is-disabled-mid-session">

299 Quando un modello è disabilitato durante la sessione

300</h3>

301 

302Se il tuo progetto perde l'accesso al modello su cui è in esecuzione la tua sessione, ad esempio perché un amministratore lo disabilita in [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden), Claude Code passa la sessione a un altro modello invece di fallire in ogni richiesta, e mostra `Switched to <fallback> because <model> is not available`. Prova gli stessi modelli del fallback all'avvio: versioni precedenti dello stesso livello per primo e, per una sessione Opus senza versione Opus disponibile, il modello Sonnet predefinito.

303 

304Lo switch si applica solo a un livello che non hai fissato, la stessa condizione del fallback all'avvio. Una sessione su una versione specifica che hai scelto mantiene il suo modello e, senza una catena di modelli di fallback, la richiesta fallisce invece. In [modalità auto](/docs/it/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry), Claude Code passa solo a un modello che la modalità auto supporta su Agent Platform. Se nessuno di questi modelli è disponibile, la richiesta fallisce.

305 

306Una [catena di modelli di fallback](/docs/it/model-config#fallback-model-chains) che configuri sostituisce lo switch di livello: su questi rifiuti Claude Code passa al tuo fallback configurato invece. Per fare in modo che le richieste rifiutate falliscano piuttosto che passare, imposta [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](/docs/it/env-vars). Una catena di fallback che hai configurato continua comunque a passare su questi rifiuti; rimuovi anche la catena se vuoi che ogni richiesta rifiutata fallisca.

307 

296<h2 id="iam-configuration">308<h2 id="iam-configuration">

297 Configurazione IAM309 Configurazione IAM

298</h2>310</h2>

headless.md +2 −2

Details

296 Approvare automaticamente gli strumenti296 Approvare automaticamente gli strumenti

297</h3>297</h3>

298 298 

299Utilizza `--allowedTools` per consentire a Claude di utilizzare determinati strumenti senza chiedere. Questo esempio esegue una suite di test e corregge i guasti, consentendo a Claude di eseguire comandi Bash e leggere/modificare file senza chiedere il permesso:299Utilizza `--allowedTools` per consentire a Claude di utilizzare determinati strumenti senza chiedere. Elencare `Read` e `Edit` consente a Claude di leggere e modificare file senza chiedere il permesso. Elencare `Bash` fa lo stesso per i comandi shell, tranne in un'esecuzione che inizia in [modalità auto](/docs/it/permission-modes#how-auto-mode-evaluates-actions), dove Claude Code elimina una voce `Bash` nuda come regola di autorizzazione ampia e la modalità auto valuta invece ogni comando. Questo esempio esegue una suite di test e corregge i guasti con questi tre strumenti elencati:

300 300 

301```bash theme={null}301```bash theme={null}

302claude -p "Run the test suite and fix any failures" \302claude -p "Run the test suite and fix any failures" \

303 --allowedTools "Bash,Read,Edit"303 --allowedTools "Bash,Read,Edit"

304```304```

305 305 

306Per impostare una linea di base per l'intera sessione invece di elencare i singoli strumenti, passa una [modalità di autorizzazione](/docs/it/permission-modes). Per `-p`, la [modalità di autorizzazione iniziale incorporata](/docs/it/permission-modes#which-mode-a-session-starts-in) è Manual su ogni piano, quindi passa la modalità di autorizzazione che desideri:306Per impostare una linea di base per l'intera sessione invece di elencare i singoli strumenti, passa una [modalità di autorizzazione](/docs/it/permission-modes). Un'esecuzione dove nulla imposta una modalità di autorizzazione prende la [modalità di autorizzazione iniziale incorporata](/docs/it/permission-modes#which-mode-a-session-starts-in), che può essere `auto`, quindi passa quella che desideri:

307 307 

308* **`auto`**: passa `--permission-mode auto` per avere un classificatore che esamini la maggior parte delle azioni invece di te308* **`auto`**: passa `--permission-mode auto` per avere un classificatore che esamini la maggior parte delle azioni invece di te

309* **`dontAsk`**: Claude Code nega qualsiasi cosa che comporterebbe altrimenti un prompt, il che è utile per esecuzioni CI bloccate. Le azioni che non necessitano di approvazione in modalità Manual vengono comunque eseguite, come le letture di file nelle tue directory di lavoro e il [set di comandi di sola lettura](/docs/it/permissions#read-only-commands), così come le azioni coperte dalle tue voci `--allowedTools` o dalle regole `permissions.allow`. `AskUserQuestion`, strumenti connettore [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), e strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) vengono negati anche quando una regola di autorizzazione corrisponde309* **`dontAsk`**: Claude Code nega qualsiasi cosa che comporterebbe altrimenti un prompt, il che è utile per esecuzioni CI bloccate. Le azioni che non necessitano di approvazione in modalità Manual vengono comunque eseguite, come le letture di file nelle tue directory di lavoro e il [set di comandi di sola lettura](/docs/it/permissions#read-only-commands), così come le azioni coperte dalle tue voci `--allowedTools` o dalle regole `permissions.allow`. `AskUserQuestion`, strumenti connettore [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), e strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) vengono negati anche quando una regola di autorizzazione corrisponde

hooks.md +2 −2

Details

12 12 

13Gli hook sono comandi shell definiti dall'utente, endpoint HTTP, chiamate agli strumenti MCP, prompt LLM o subagent che si eseguono automaticamente in punti specifici del ciclo di vita di Claude Code. Claude Code attiva gli stessi eventi di hook ovunque venga eseguito: sessioni nel terminale, estensioni IDE, l'[app Desktop](/docs/it/desktop-quickstart) e [Claude Code sul web](/docs/it/claude-code-on-the-web). Utilizzare questo riferimento per cercare schemi di eventi, opzioni di configurazione, formati JSON di input/output e funzionalità avanzate come hook asincroni, hook HTTP e hook degli strumenti MCP.13Gli hook sono comandi shell definiti dall'utente, endpoint HTTP, chiamate agli strumenti MCP, prompt LLM o subagent che si eseguono automaticamente in punti specifici del ciclo di vita di Claude Code. Claude Code attiva gli stessi eventi di hook ovunque venga eseguito: sessioni nel terminale, estensioni IDE, l'[app Desktop](/docs/it/desktop-quickstart) e [Claude Code sul web](/docs/it/claude-code-on-the-web). Utilizzare questo riferimento per cercare schemi di eventi, opzioni di configurazione, formati JSON di input/output e funzionalità avanzate come hook asincroni, hook HTTP e hook degli strumenti MCP.

14 14 

15Un plugin può anche registrare hook come funzioni JavaScript che Claude Code chiama nel proprio processo, che possono disegnare nell'interfaccia e agire anche su eventi. Un plugin che lo fa è un [mod](/docs/it/plugins/mods/overview) e questi hook di funzione sono trattati in [Reagire agli eventi](/docs/it/plugins/mods/events) piuttosto che qui. Gli hook su questa pagina continuano a funzionare insieme ai mod.

16 

15<h2 id="hook-lifecycle">17<h2 id="hook-lifecycle">

16 Ciclo di vita dei hook18 Ciclo di vita dei hook

17</h2>19</h2>


453| `Bash(git *)` | `npm test && git push` | sì | ogni sottocomando viene controllato; `git push` corrisponde |455| `Bash(git *)` | `npm test && git push` | sì | ogni sottocomando viene controllato; `git push` corrisponde |

454| `Bash(rm *)` | `echo $(rm -rf /)` | sì | i comandi dentro `$()` e backtick vengono controllati; `rm -rf /` corrisponde |456| `Bash(rm *)` | `echo $(rm -rf /)` | sì | i comandi dentro `$()` e backtick vengono controllati; `rm -rf /` corrisponde |

455| `Bash(rm *)` | `echo $(date)` | no | nessun sottocomando corrisponde a `rm *` |457| `Bash(rm *)` | `echo $(date)` | no | nessun sottocomando corrisponde a `rm *` |

456| `Bash(cat *)` | `echo before $(date) after` | no | una sostituzione può stare in qualsiasi posizione di argomento, quindi il comando completo e `date` vengono entrambi controllati; nessuno corrisponde a `cat *` |

457| `Bash(git *)` | `$TOOL git push` | sì | Claude Code non può dire a cosa si espande il nome del comando, quindi esegue l'hook |

458| `Bash(git push *)` | `echo $(date)` | sì | i pattern che specificano più del nome del comando eseguono comunque l'hook su `$()`, backtick, o `$VAR` |458| `Bash(git push *)` | `echo $(date)` | sì | i pattern che specificano più del nome del comando eseguono comunque l'hook su `$()`, backtick, o `$VAR` |

459 459 

460Quando Claude Code non può determinare quali comandi esegue l'input Bash, esegue il tuo hook indipendentemente dal pattern. Poiché il filtro `if` è best-effort, utilizza il [sistema di permessi](/docs/it/permissions) piuttosto che un hook per applicare un allow o deny rigido.460Quando Claude Code non può determinare quali comandi esegue l'input Bash, esegue il tuo hook indipendentemente dal pattern. Poiché il filtro `if` è best-effort, utilizza il [sistema di permessi](/docs/it/permissions) piuttosto che un hook per applicare un allow o deny rigido.

hooks-guide.md +3 −1

Details

1014 1014 

1015Gli hook `PreToolUse` si attivano prima di qualsiasi controllo della modalità di autorizzazione, in ogni [modalità di autorizzazione](/docs/it/permission-modes), inclusa `dontAsk`. Un hook che restituisce `permissionDecision: "deny"` blocca lo strumento anche in modalità `bypassPermissions` o con `--dangerously-skip-permissions`. Questo vi permette di applicare una policy che gli utenti non possono aggirare cambiando la loro modalità di autorizzazione.1015Gli hook `PreToolUse` si attivano prima di qualsiasi controllo della modalità di autorizzazione, in ogni [modalità di autorizzazione](/docs/it/permission-modes), inclusa `dontAsk`. Un hook che restituisce `permissionDecision: "deny"` blocca lo strumento anche in modalità `bypassPermissions` o con `--dangerously-skip-permissions`. Questo vi permette di applicare una policy che gli utenti non possono aggirare cambiando la loro modalità di autorizzazione.

1016 1016 

1017Il contrario non è vero: un hook che restituisce `"allow"` non aggira le regole di negazione dalle impostazioni, e non può sopprimere il prompt per gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) o per gli strumenti connettore [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quella impostazione raggiunge Claude Code. Gli hook possono stringere le restrizioni ma non allentarle oltre quello che le regole di autorizzazione consentono.1017Il contrario non è vero: un hook che restituisce `"allow"` non aggira le regole di negazione dalle impostazioni, e non può sopprimere il prompt per gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) o per gli strumenti connettore [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quella impostazione raggiunge Claude Code. Gli hook nei file di impostazioni e nel `hooks/hooks.json` di un plugin possono stringere le restrizioni ma non allentarle oltre quello che le regole di autorizzazione consentono.

1018 

1019Un [mod](/docs/it/plugins/mods/overview) che installate e che aggancia `tool.check` può approvare una chiamata che il vostro hook `PreToolUse` ha bloccato, a meno che l'hook non sia nelle impostazioni gestite. [Estendere le autorizzazioni con gli hook](/docs/it/permissions#extend-permissions-with-hooks) elenca quali regole hanno la precedenza su un mod.

1018 1020 

1019<h3 id="hook-not-firing">1021<h3 id="hook-not-firing">

1020 Hook non si attiva1022 Hook non si attiva

Details

346* Chiedere a Claude Code di eseguire un comando in background346* Chiedere a Claude Code di eseguire un comando in background

347* Premere `Ctrl+B` per spostare una normale invocazione dello strumento Bash in background. Gli utenti di Tmux devono premere `Ctrl+B` due volte a causa della chiave di prefisso di tmux.347* Premere `Ctrl+B` per spostare una normale invocazione dello strumento Bash in background. Gli utenti di Tmux devono premere `Ctrl+B` due volte a causa della chiave di prefisso di tmux.

348 348 

349Quando un comando raggiunge il timeout prima di terminare, Claude Code lo sposta automaticamente [in background](/docs/it/tools-reference#background-commands) invece di fermarlo, a meno che il comando non inizi con `sleep`. Per modificare il tempo di esecuzione dei comandi prima che ciò accada, impostare le [variabili di ambiente del timeout di Bash](/docs/it/tools-reference#timeout-and-output-limits).349Quando un comando raggiunge il timeout prima di terminare, Claude Code lo sposta automaticamente [in background](/docs/it/tools-reference#foreground-commands-that-move-to-the-background) invece di fermarlo, a meno che il comando non inizi con `sleep`. Se avete disattivato le attività in background con [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/it/env-vars#variables) o avviando in [modalità bare](/docs/it/headless#start-faster-with-bare-mode), il comando si ferma al timeout. Per modificare il timeout, impostare le [variabili di ambiente del timeout di Bash](/docs/it/tools-reference#timeout-and-output-limits).

350 350 

351**Caratteristiche principali:**351**Caratteristiche principali:**

352 352 


358* Su macOS e Linux, Claude Code termina le attività in background in esecuzione quando il sistema operativo segnala pressione della memoria critica, a condizione che la sessione sia stata inattiva per almeno 30 minuti e nessun turno o subagent sia in esecuzione. Richiede Claude Code v2.1.193 o successivo358* Su macOS e Linux, Claude Code termina le attività in background in esecuzione quando il sistema operativo segnala pressione della memoria critica, a condizione che la sessione sia stata inattiva per almeno 30 minuti e nessun turno o subagent sia in esecuzione. Richiede Claude Code v2.1.193 o successivo

359 * Il [log di debug](/docs/it/debug-your-config) spiega perché le attività sono state interrotte, o perché un evento di pressione le ha lasciate in esecuzione359 * Il [log di debug](/docs/it/debug-your-config) spiega perché le attività sono state interrotte, o perché un evento di pressione le ha lasciate in esecuzione

360 * Impostare [`CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP`](/docs/it/env-vars) a `1` per disattivare gli arresti dovuti alla pressione della memoria360 * Impostare [`CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP`](/docs/it/env-vars) a `1` per disattivare gli arresti dovuti alla pressione della memoria

361* I comandi Bash e PowerShell in background hanno un limite di tempo, contato dal momento in cui il comando entra in background: 30 minuti, o il `timeout` che Claude richiede quando avvia un comando in background, fino a un massimo di 2 ore. Un comando che si sposta in background mentre viene eseguito, ad esempio con `Ctrl+B`, ottiene 30 minuti dal trasferimento. Quando un comando raggiunge il suo limite, Claude Code lo interrompe e dice a Claude il motivo, e Claude può riavviarlo con un `timeout` più lungo se il lavoro ne ha ancora bisogno. Due variabili di ambiente aumentano i limiti, in millisecondi, e nessuna di esse può accorciarli:361* I comandi Bash e PowerShell in background hanno un limite di tempo, contato dal momento in cui il comando entra in background: 30 minuti, o il `timeout` che Claude richiede quando avvia un comando in background, fino a un massimo di 2 ore. Un comando che si sposta in background mentre viene eseguito, ad esempio con `Ctrl+B`, ottiene 30 minuti dal trasferimento. Quando un comando raggiunge il suo limite, Claude Code lo interrompe e dice a Claude il motivo, e Claude può riavviarlo con un `timeout` più lungo se il lavoro ne ha ancora bisogno. Per allungare i limiti, vedere [Aumentare il limite di tempo per i comandi in background](/docs/it/tools-reference#raise-the-time-limit-for-background-commands) nel riferimento degli strumenti

362 * Impostare [`BASH_DEFAULT_TIMEOUT_MS`](/docs/it/env-vars) sopra `1800000` per sostituire il default di 30 minuti con quel valore, anche per i comandi spostati362* Un comando in background che un [subagent](/docs/it/sub-agents#run-subagents-in-foreground-or-background) in foreground ha avviato termina quando la corsa di quel subagent termina, sia che sia finita, fallita o sia stata interrotta; vedere [Quando un comando in background si ferma](/docs/it/tools-reference#when-a-background-command-stops) nel riferimento degli strumenti

363 * Impostare [`BASH_MAX_TIMEOUT_MS`](/docs/it/env-vars) sopra `7200000` per aumentare il massimo di 2 ore. Impostare `BASH_DEFAULT_TIMEOUT_MS` sopra `7200000` lo aumenta allo stesso modo

364* Un comando in background che un [subagent](/docs/it/sub-agents#run-subagents-in-foreground-or-background) in foreground ha avviato termina quando la corsa di quel subagent termina, sia che sia finita, fallita o sia stata interrotta; vedere [Comandi in background](/docs/it/tools-reference#background-commands) nel riferimento degli strumenti

365 363 

366Per disabilitare tutta la funzionalità di attività in background, impostare la variabile di ambiente `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` a `1`. Vedere [Variabili di ambiente](/docs/it/env-vars) per i dettagli.364Per disabilitare tutta la funzionalità di attività in background, impostare la variabile di ambiente [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/it/env-vars#variables) a `1`. Avviare in [modalità bare](/docs/it/headless#start-faster-with-bare-mode) la disattiva anche.

367 365 

368**Comandi comuni messi in background:**366**Comandi comuni messi in background:**

369 367 

keybindings.md +1 −3

Details

545* Sotto un layout non latino come il cirillico, Claude Code associa i scorciatoie Ctrl in base alla posizione del tasto nel layout US quando il terminale utilizza il protocollo della tastiera Kitty e segnala quella posizione. In tale terminale, con un layout russo attivo, premendo Ctrl e il tasto fisico W si attiva `ctrl+w`. In un terminale che non segnala la posizione, Claude Code associa quello che il terminale invia per la pressione del tasto: un codice di controllo ASCII attiva il scorciatoio latino, e una pressione del tasto che arriva come carattere cirillico non corrisponde a nessun binding545* Sotto un layout non latino come il cirillico, Claude Code associa i scorciatoie Ctrl in base alla posizione del tasto nel layout US quando il terminale utilizza il protocollo della tastiera Kitty e segnala quella posizione. In tale terminale, con un layout russo attivo, premendo Ctrl e il tasto fisico W si attiva `ctrl+w`. In un terminale che non segnala la posizione, Claude Code associa quello che il terminale invia per la pressione del tasto: un codice di controllo ASCII attiva il scorciatoio latino, e una pressione del tasto che arriva come carattere cirillico non corrisponde a nessun binding

546* Sotto layout che riorganizzano le lettere latine, come AZERTY, Claude Code associa la lettera che il tasto digita, quindi premendo Ctrl e il tasto etichettato A si attiva `ctrl+a`546* Sotto layout che riorganizzano le lettere latine, come AZERTY, Claude Code associa la lettera che il tasto digita, quindi premendo Ctrl e il tasto etichettato A si attiva `ctrl+a`

547 547 

548Prima della v2.1.247, premere un scorciatoio Ctrl sotto un layout non latino non attivava il suo binding nei terminali che utilizzano il protocollo della tastiera Kitty, come Ghostty, Kitty, WezTerm e iTerm2.

549 

550<h3 id="chords">548<h3 id="chords">

551 Accordi549 Accordi

552</h3>550</h3>


697* Modificatori scritti male, come `ctl+k`. Claude Code elimina la parte che non riconosce e applica il binding al tasto rimanente, `k` in questo esempio.695* Modificatori scritti male, come `ctl+k`. Claude Code elimina la parte che non riconosce e applica il binding al tasto rimanente, `k` in questo esempio.

698* Nomi di contesto non validi696* Nomi di contesto non validi

699* Valori di azione non validi, come un'azione che non è una stringa o `null`697* Valori di azione non validi, come un'azione che non è una stringa o `null`

700* Nomi di azione sconosciuti, come un errore di battitura di un'azione registrata. Claude Code salta il binding e mantiene in vigore qualsiasi binding predefinito per quel tasto. Prima della v2.1.246, un binding con un nome di azione sconosciuto disabilitava silenziosamente quel tasto698* Nomi di azione sconosciuti, come un errore di battitura di un'azione registrata. Claude Code salta il binding e mantiene in vigore qualsiasi binding predefinito per quel tasto.

701* Conflitti di scorciatoie riservate699* Conflitti di scorciatoie riservate

702* Binding duplicati nello stesso contesto700* Binding duplicati nello stesso contesto

703 701 

llm-gateway.md +2 −0

Details

45 45 

46[Esegui il rollout di un gateway LLM per la tua organizzazione](/docs/it/llm-gateway-rollout) esamina ogni passaggio e mostra i file di configurazione da distribuire a ogni passaggio. Il gateway è una parte della configurazione dell'organizzazione; per l'applicazione delle politiche, la visibilità dell'utilizzo e le decisioni sulla gestione dei dati, vedi [Configura Claude Code per la tua organizzazione](/docs/it/admin-setup).46[Esegui il rollout di un gateway LLM per la tua organizzazione](/docs/it/llm-gateway-rollout) esamina ogni passaggio e mostra i file di configurazione da distribuire a ogni passaggio. Il gateway è una parte della configurazione dell'organizzazione; per l'applicazione delle politiche, la visibilità dell'utilizzo e le decisioni sulla gestione dei dati, vedi [Configura Claude Code per la tua organizzazione](/docs/it/admin-setup).

47 47 

48Per fare in modo che un gateway raggiunto attraverso `ANTHROPIC_BASE_URL` sia l'unica destinazione che una macchina gestita può utilizzare, imposta [`allowedProviders`](/docs/it/settings-reference#allowedproviders) a `["customEndpoint"]` nello stesso file di impostazioni gestite e inserisci l'`ANTHROPIC_BASE_URL` del gateway nel blocco `env` di quel file. Claude Code quindi rifiuta una sessione indirizzata altrove, incluso direttamente ad Anthropic o al proxy personale di uno sviluppatore, e accetta `ANTHROPIC_BASE_URL` solo con il valore che hai impostato lì. Per un gateway raggiunto attraverso una variabile di endpoint specifica del provider come `ANTHROPIC_BEDROCK_BASE_URL`, la voce `allowedProviders` dice quale variabile fissare. Richiede Claude Code v2.1.285 o successivo.

49 

48<h2 id="subscriptions-and-gateways">50<h2 id="subscriptions-and-gateways">

49 Abbonamenti e gateway51 Abbonamenti e gateway

50</h2>52</h2>

Details

310 310 

311Claude Code invia la richiesta di scoperta con entrambe le intestazioni di credenziale sottostanti e omette un'intestazione il cui valore non si risolve. L'invio di entrambe le intestazioni richiede Claude Code v2.1.248 o successivo. Le versioni precedenti inviano solo `Authorization` quando `ANTHROPIC_AUTH_TOKEN` è impostato e solo `x-api-key` altrimenti.311Claude Code invia la richiesta di scoperta con entrambe le intestazioni di credenziale sottostanti e omette un'intestazione il cui valore non si risolve. L'invio di entrambe le intestazioni richiede Claude Code v2.1.248 o successivo. Le versioni precedenti inviano solo `Authorization` quando `ANTHROPIC_AUTH_TOKEN` è impostato e solo `x-api-key` altrimenti.

312 312 

313* `Authorization`: `ANTHROPIC_AUTH_TOKEN` come token bearer, altrimenti il valore [`apiKeyHelper`](/docs/it/llm-gateway-connect#rotate-credentials-with-apikeyhelper) come token bearer. In questo caso Claude Code attende che l'helper restituisca prima di inviare la richiesta.313* `Authorization`: `ANTHROPIC_AUTH_TOKEN` come token bearer, altrimenti il valore [`apiKeyHelper`](/docs/it/llm-gateway-connect#rotate-credentials-with-apikeyhelper) come token bearer.

314* `x-api-key`: la chiave API che Claude Code ha risolto, come `ANTHROPIC_API_KEY`. Quando un valore helper è l'unica credenziale, questa intestazione lo trasporta anche, in modo che il valore arrivi in entrambe le intestazioni.314* `x-api-key`: la chiave API che Claude Code ha risolto, come `ANTHROPIC_API_KEY`. Quando un valore helper è l'unica credenziale, questa intestazione lo trasporta anche, in modo che il valore arrivi in entrambe le intestazioni.

315 315 

316Claude Code invia anche qualsiasi intestazione da `ANTHROPIC_CUSTOM_HEADERS`. Quando un'intestazione personalizzata ha un valore non vuoto, Claude Code la invia al posto di un'intestazione integrata con lo stesso nome, abbinando i nomi senza distinzione tra maiuscole e minuscole.316Claude Code invia anche qualsiasi intestazione da `ANTHROPIC_CUSTOM_HEADERS`. Quando un'intestazione personalizzata ha un valore non vuoto, Claude Code la invia al posto di un'intestazione integrata con lo stesso nome, abbinando i nomi senza distinzione tra maiuscole e minuscole.

Details

199 199 

200Le [chiavi di accesso al gateway](#choose-a-delivery-mechanism) seguono una regola separata. Claude Code non le legge mai dalle impostazioni gestite dal server, quindi mentre le impostazioni gestite dal server sono la fonte selezionata, la fonte admin con ranking più alto sulla macchina che porta una chiave di policy le fornisce comunque. Un valore in una fonte admin classificata al di sotto di quella, o nel registro HKCU, viene ignorato.200Le [chiavi di accesso al gateway](#choose-a-delivery-mechanism) seguono una regola separata. Claude Code non le legge mai dalle impostazioni gestite dal server, quindi mentre le impostazioni gestite dal server sono la fonte selezionata, la fonte admin con ranking più alto sulla macchina che porta una chiave di policy le fornisce comunque. Un valore in una fonte admin classificata al di sotto di quella, o nel registro HKCU, viene ignorato.

201 201 

202[`allowedProviders`](/docs/it/settings-reference#allowedproviders) ha la sua propria regola: la nota Scope della sua voce dice come un elenco impostato sulla macchina si combina con uno gestito dal server. Richiede Claude Code v2.1.285 o successivo.

203 

202Quando una fonte admin imposta `allowManagedMcpServersOnly` o un elenco `allowedMcpServers` e quel valore non è quello in vigore, `/status` e `claude doctor` nominano quella fonte e chiave.204Quando una fonte admin imposta `allowManagedMcpServersOnly` o un elenco `allowedMcpServers` e quel valore non è quello in vigore, `/status` e `claude doctor` nominano quella fonte e chiave.

203 205 

204<h3 id="compose-every-managed-source">206<h3 id="compose-every-managed-source">


353* Un file di impostazioni gestite vuoto conta come `{}`.355* Un file di impostazioni gestite vuoto conta come `{}`.

354* Un valore malformato nella chiave di registro HKCU scrivibile dall'utente non blocca mai l'avvio. Claude Code lo segnala come un avviso in `/status` e `claude doctor` invece.356* Un valore malformato nella chiave di registro HKCU scrivibile dall'utente non blocca mai l'avvio. Claude Code lo segnala come un avviso in `/status` e `claude doctor` invece.

355 357 

356Se un file di impostazioni gestite, un file drop-in, o una directory `managed-settings.d/` non può essere letto e nessuna fonte admin fornisce una policy, le sessioni firmate con credenziali claude.ai o Claude Console escono all'avvio con un messaggio per contattare un amministratore.358Quando un file di impostazioni gestite, un file drop-in, una directory `managed-settings.d/`, un profilo MDM, o un valore di registro HKLM esiste ma non può essere letto, e nessuna fonte admin fornisce una policy, quello che accade dipende dal motivo per cui la lettura non è riuscita:

359 

360* Se il sistema operativo ha negato la lettura, ad esempio su un file solo root, ogni sessione si avvia senza le policy di quella fonte. `/status` e `claude doctor` registrano l'errore, e un'esecuzione con `-p` lo stampa anche su stderr.

361* Per qualsiasi altro errore di lettura, come un errore di I/O, ogni sessione esce all'avvio con [un messaggio per contattare un amministratore](/docs/it/errors#unable-to-read-managed-policy-settings).

357 362 

358Per trovare una voce eliminata, guarda in uno di tre posti:363Per trovare una voce eliminata, guarda in uno di tre posti:

359 364 


387| Campo | Comportamento quando presente ma non valido |392| Campo | Comportamento quando presente ma non valido |

388| :- | :- |393| :- | :- |

389| `allowedMcpServers` | Applicato come un allowlist vuoto fino a quando il valore non viene corretto, quindi nessun server MCP che gli utenti aggiungono viene ammesso. I server che la tua organizzazione distribuisce tramite [`managedMcpServers`](/docs/it/settings-reference#managedmcpservers) si caricano ancora, e i server `managed-mcp.json` si caricano per [How a server is evaluated](/docs/it/managed-mcp#how-a-server-is-evaluated). Una voce non valida individuale viene rimossa e il sottoinsieme valido viene applicato. |394| `allowedMcpServers` | Applicato come un allowlist vuoto fino a quando il valore non viene corretto, quindi nessun server MCP che gli utenti aggiungono viene ammesso. I server che la tua organizzazione distribuisce tramite [`managedMcpServers`](/docs/it/settings-reference#managedmcpservers) si caricano ancora, e i server `managed-mcp.json` si caricano per [How a server is evaluated](/docs/it/managed-mcp#how-a-server-is-evaluated). Una voce non valida individuale viene rimossa e il sottoinsieme valido viene applicato. |

395| [`allowedProviders`](/docs/it/settings-reference#allowedproviders) | Applicato come un allowlist vuoto fino a quando il valore non viene corretto, quindi ogni provider API viene rifiutato e Claude Code non si avvia sulla macchina. Se solo una voce individuale non è un nome di provider noto, Claude Code elimina e segnala quella voce e applica il resto. |

390| `allowedHttpHookUrls` | Claude Code applica un [allowlist](/docs/it/settings-reference#allowedhttphookurls) gestito vuoto fino a quando non correggi il valore, quindi un hook HTTP viene eseguito solo se un altro file di impostazioni elenca il suo URL. Se solo una voce individuale non è valida, Claude Code rimuove quella voce e applica il resto. |396| `allowedHttpHookUrls` | Claude Code applica un [allowlist](/docs/it/settings-reference#allowedhttphookurls) gestito vuoto fino a quando non correggi il valore, quindi un hook HTTP viene eseguito solo se un altro file di impostazioni elenca il suo URL. Se solo una voce individuale non è valida, Claude Code rimuove quella voce e applica il resto. |

391| `httpHookAllowedEnvVars` | Claude Code applica un [allowlist](/docs/it/settings-reference#httphookallowedenvvars) gestito vuoto fino a quando non correggi il valore, quindi una variabile di intestazione viene interpolata solo se un altro file di impostazioni la nomina. Se solo una voce individuale non è valida, Claude Code rimuove quella voce e applica il resto. |397| `httpHookAllowedEnvVars` | Claude Code applica un [allowlist](/docs/it/settings-reference#httphookallowedenvvars) gestito vuoto fino a quando non correggi il valore, quindi una variabile di intestazione viene interpolata solo se un altro file di impostazioni la nomina. Se solo una voce individuale non è valida, Claude Code rimuove quella voce e applica il resto. |

392| `allowedChannelPlugins` | Claude Code applica un allowlist vuoto fino a quando non correggi il valore, quindi nessun plugin di canale passato a `--channels` viene ammesso. Se solo una voce individuale non è valida, rimuove quella voce e applica il resto. |398| `allowedChannelPlugins` | Claude Code applica un allowlist vuoto fino a quando non correggi il valore, quindi nessun plugin di canale passato a `--channels` viene ammesso. Se solo una voce individuale non è valida, rimuove quella voce e applica il resto. |


437 443 

438La maggior parte di loro sono lock: il valore che un lock governa, come regole di autorizzazione o `sandbox.network.allowedDomains`, è una chiave ordinaria che qualsiasi livello può impostare, e il lock dice a Claude Code di onorare solo il valore gestito.444La maggior parte di loro sono lock: il valore che un lock governa, come regole di autorizzazione o `sandbox.network.allowedDomains`, è una chiave ordinaria che qualsiasi livello può impostare, e il lock dice a Claude Code di onorare solo il valore gestito.

439 445 

440La tabella copre i controlli di autorizzazione, plugin e consegna. Per qualsiasi chiave non elencata qui, la colonna Scope del [settings reference](/docs/it/settings-reference#all-settings) index dice se è managed-only; le chiavi managed-only rimanenti lì includono l'URL di accesso al gateway, versione, browser, mobile-simulator, host SSH, Desktop local-session, percorso binario sandbox, prezzo del modello, restrizione del modello, e controlli CLAUDE.md.446La tabella copre i controlli di autorizzazione, plugin e consegna. Per qualsiasi chiave non elencata qui, la colonna Scope del [settings reference](/docs/it/settings-reference#all-settings) index dice se è managed-only.

441 447 

442| Impostazione | Descrizione |448| Impostazione | Descrizione |

443| :- | :- |449| :- | :- |

mcp.md +6 −6

Details

273 273 

274* ``⏸ Pending approval (run `claude` to approve)``: un server con ambito di progetto da `.mcp.json` che non avete ancora approvato. Claude Code lo mostra sia in `claude mcp list` che in `claude mcp get <name>`. Eseguite `claude` in modo interattivo per rivederlo e approvarlo.274* ``⏸ Pending approval (run `claude` to approve)``: un server con ambito di progetto da `.mcp.json` che non avete ancora approvato. Claude Code lo mostra sia in `claude mcp list` che in `claude mcp get <name>`. Eseguite `claude` in modo interattivo per rivederlo e approvarlo.

275* `✘ Rejected (see disabledMcpjsonServers in settings)`: un server `.mcp.json` che una voce [`disabledMcpjsonServers`](/docs/it/settings-reference#disabledmcpjsonservers) rifiuta. Claude Code lo mostra solo in `claude mcp get <name>`.275* `✘ Rejected (see disabledMcpjsonServers in settings)`: un server `.mcp.json` che una voce [`disabledMcpjsonServers`](/docs/it/settings-reference#disabledmcpjsonservers) rifiuta. Claude Code lo mostra solo in `claude mcp get <name>`.

276* `⊘ Disabled for this project (re-enable via /mcp)`: un server che l'elenco [`disabledMcpServers`](#disable-a-server-without-removing-it) del progetto nomina. Claude Code lo mostra sia in `claude mcp list` che in `claude mcp get <name>`. Riattivate il server dal pannello `/mcp`. Prima della v2.1.238, entrambi i comandi si connettevano a un server disabilitato per verificarne lo stato di salute e segnalano il risultato della connessione.276* `⊘ Disabled for this project (re-enable via /mcp)`: un server che l'elenco [`disabledMcpServers`](#disable-a-server-without-removing-it) del progetto nomina. Claude Code lo mostra sia in `claude mcp list` che in `claude mcp get <name>`. Riattivate il server dal pannello `/mcp`.

277 277 

278I server WebSocket non appaiono nell'output di `claude mcp list`. Utilizzate `claude mcp get <name>` o il pannello `/mcp` per controllarli.278I server WebSocket non appaiono nell'output di `claude mcp list`. Utilizzate `claude mcp get <name>` o il pannello `/mcp` per controllarli.

279 279 


321 321 

322* **Spazi bianchi nascosti**: Claude Code avverte quando un valore di configurazione MCP contiene spazi bianchi nascosti iniziali o finali, che spesso provengono dall'incollamento di un token con una nuova riga finale. Claude Code controlla `command`, `url`, ogni voce `args`, e i valori e i nomi delle chiavi sotto `env` e `headers`. Claude Code mostra l'avviso nell'output di `claude mcp list` e in `/mcp`, nominando i campi interessati senza echeggiare i loro valori, ad esempio `Leading or trailing whitespace in: headers.Authorization`. Claude Code non taglia gli spazi bianchi e utilizza i valori esattamente come scritti, quindi modificate la configurazione per rimuoverli.322* **Spazi bianchi nascosti**: Claude Code avverte quando un valore di configurazione MCP contiene spazi bianchi nascosti iniziali o finali, che spesso provengono dall'incollamento di un token con una nuova riga finale. Claude Code controlla `command`, `url`, ogni voce `args`, e i valori e i nomi delle chiavi sotto `env` e `headers`. Claude Code mostra l'avviso nell'output di `claude mcp list` e in `/mcp`, nominando i campi interessati senza echeggiare i loro valori, ad esempio `Leading or trailing whitespace in: headers.Authorization`. Claude Code non taglia gli spazi bianchi e utilizza i valori esattamente come scritti, quindi modificate la configurazione per rimuoverli.

323* **Stesso nome in più di un ambito**: se definite lo stesso nome di server in più di un [scope](#mcp-installation-scopes) con endpoint diversi, Claude Code avverte del conflitto nell'output di `claude mcp list` e in `/mcp`. Claude Code memorizza gli accessi OAuth per endpoint, quindi quando autenticate la definizione che si carica in un progetto, dovete comunque accedere separatamente in un progetto dove si carica una definizione diversa. Mantenete l'endpoint che desiderate e rimuovete gli altri con `claude mcp remove <name> --scope <scope>`. Nell'avviso, Claude Code cita l'endpoint di ogni ambito come scritto nella vostra configurazione, con i riferimenti [`${VAR}`](#environment-variable-expansion-in-mcp-json) non espansi, quindi non mostra mai un valore risolto come una chiave API.323* **Stesso nome in più di un ambito**: se definite lo stesso nome di server in più di un [scope](#mcp-installation-scopes) con endpoint diversi, Claude Code avverte del conflitto nell'output di `claude mcp list` e in `/mcp`. Claude Code memorizza gli accessi OAuth per endpoint, quindi quando autenticate la definizione che si carica in un progetto, dovete comunque accedere separatamente in un progetto dove si carica una definizione diversa. Mantenete l'endpoint che desiderate e rimuovete gli altri con `claude mcp remove <name> --scope <scope>`. Nell'avviso, Claude Code cita l'endpoint di ogni ambito come scritto nella vostra configurazione, con i riferimenti [`${VAR}`](#environment-variable-expansion-in-mcp-json) non espansi, quindi non mostra mai un valore risolto come una chiave API.

324* **Nomi riservati**: Claude Code riserva i nomi dei suoi server integrati, inclusi `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview`, e `Claude Browser`. Se la vostra configurazione definisce un server con un nome riservato, Claude Code lo salta al momento del caricamento e mostra un avviso chiedendovi di rinominarlo. `claude mcp add` rifiuta un nome riservato con un errore. `Claude Preview` e `Claude Browser` entrambi nominano il server integrato che il [pannello di anteprima dell'app desktop Claude Code](/docs/it/desktop#preview-your-app) utilizza. Prima della v2.1.205, `Claude Browser` non era riservato, quindi un server configurato dall'utente poteva registrarsi con quel nome.324* **Nomi riservati**: Claude Code riserva i nomi dei suoi server integrati, inclusi `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview`, e `Claude Browser`. Se la vostra configurazione definisce un server con un nome riservato, Claude Code lo salta al momento del caricamento e mostra un avviso chiedendovi di rinominarlo. `claude mcp add` rifiuta un nome riservato con un errore. `Claude Preview` e `Claude Browser` entrambi nominano il server integrato che il [pannello di anteprima dell'app desktop Claude Code](/docs/it/desktop#preview-your-app) utilizza.

325* **Variabile di ambiente mancante**: se un riferimento [`${VAR}`](#environment-variable-expansion-in-mcp-json) nella configurazione di un server nomina una variabile che non è impostata e non ha `:-default`, Claude Code avverte nell'output di `claude mcp list` e in `/mcp`, nominando la variabile, e carica comunque il server con il testo `${VAR}` non espanso. Impostate la variabile o aggiungete un fallback `${VAR:-default}`. In un `url` e `headers` di un server remoto, alcune variabili di credenziali [leggono come vuote](#credential-variables-that-read-as-empty) invece, senza avviso.325* **Variabile di ambiente mancante**: se un riferimento [`${VAR}`](#environment-variable-expansion-in-mcp-json) nella configurazione di un server nomina una variabile che non è impostata e non ha `:-default`, Claude Code avverte nell'output di `claude mcp list` e in `/mcp`, nominando la variabile, e carica comunque il server con il testo `${VAR}` non espanso. Impostate la variabile o aggiungete un fallback `${VAR:-default}`. In un `url` e `headers` di un server remoto, alcune variabili di credenziali [leggono come vuote](#credential-variables-that-read-as-empty) invece, senza avviso.

326 326 

327<h4 id="tool-availability">327<h4 id="tool-availability">


417 Connessioni iniziali fallite417 Connessioni iniziali fallite

418</h4>418</h4>

419 419 

420Quando la prima connessione di un server HTTP o SSE fallisce con un errore transitorio, come una risposta 5xx, una connessione rifiutata, o un timeout, Claude Code ritenta fino a tre volte. Se la connessione fallisce ancora, Claude Code contrassegna il server come fallito. Claude Code ritenta in questo modo all'avvio e quando un server viene aggiunto a metà sessione. Questo include un server che Claude Code aggiunge a una [sessione cloud](/docs/it/claude-code-on-the-web) dalla sua configurazione e un server che aggiungete con il metodo [`setMcpServers()`](/docs/it/agent-sdk/typescript) dell'Agent SDK.420Quando la prima connessione di un server HTTP o SSE fallisce con un errore transitorio, come una risposta 5xx, una connessione rifiutata, o un timeout, Claude Code ritenta fino a tre volte. Se la connessione fallisce ancora, Claude Code contrassegna il server come fallito.

421 421 

422Claude Code non ritenta in questi casi:422Claude Code non ritenta in questi casi:

423 423 


466 466 

467Un `timeout` per server di almeno 1000 agisce anche come limite inferiore sul timeout di inattività descritto di seguito: Claude Code non interrompe mai le chiamate di strumento di quel server per inattività prima del `timeout` per server. Richiede Claude Code v2.1.203 o successivo.467Un `timeout` per server di almeno 1000 agisce anche come limite inferiore sul timeout di inattività descritto di seguito: Claude Code non interrompe mai le chiamate di strumento di quel server per inattività prima del `timeout` per server. Richiede Claude Code v2.1.203 o successivo.

468 468 

469Una chiamata di strumento a un server MCP che non invia risposta e nessuna notifica di progresso per la finestra di inattività interrompe con un errore invece di attendere il limite di wall-clock. Si applica a ogni tipo di server tranne i server IDE e i server in-process SDK. La finestra di inattività è predefinita a cinque minuti per server HTTP, SSE, WebSocket, e [connettore claude.ai](#use-mcp-servers-from-claude-ai), e a 30 minuti per server stdio. Prima della v2.1.203, i server stdio erano esenti dal timeout di inattività.469Una chiamata di strumento a un server MCP che non invia risposta e nessuna notifica di progresso per la finestra di inattività interrompe con un errore invece di attendere il limite di wall-clock. La finestra di inattività si applica a ogni tipo di server tranne i server IDE e i server in-process SDK. La finestra di inattività è predefinita a cinque minuti per server HTTP, SSE, WebSocket, e [connettore claude.ai](#use-mcp-servers-from-claude-ai), e a 30 minuti per server stdio. Prima della v2.1.203, i server stdio erano esenti dal timeout di inattività.

470 470 

471Impostate la variabile di ambiente [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/it/env-vars) in millisecondi per cambiare la finestra di inattività, o impostatela su `0` per disabilitare il controllo.471Impostate la variabile di ambiente [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/it/env-vars) in millisecondi per cambiare la finestra di inattività, o impostatela su `0` per disabilitare il controllo.

472 472 


553 553 

554I server del plugin appaiono in `/mcp` con indicatori che mostrano che provengono dai plugin.554I server del plugin appaiono in `/mcp` con indicatori che mostrano che provengono dai plugin.

555 555 

556Per un server stdio di un plugin, `claude mcp get` stampa `Command: stdio`, una riga `Args:` vuota, e ogni variabile di ambiente come `NAME=[REDACTED]`. I valori sono nascosti perché possono contenere credenziali.

557 

556**Nomi degli strumenti MCP del plugin**:558**Nomi degli strumenti MCP del plugin**:

557 559 

558Gli strumenti da un server MCP raggruppato nel plugin includono sia il nome del plugin che la chiave del server nel loro nome richiamabile. La forma completa è `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, dove qualsiasi carattere al di fuori di `A-Z`, `a-z`, `0-9`, `_`, e `-` viene sostituito con `_`. Per il server `database-tools` raggruppato in un plugin denominato `my-plugin`, uno strumento `query` è richiamabile come:560Gli strumenti da un server MCP raggruppato nel plugin includono sia il nome del plugin che la chiave del server nel loro nome richiamabile. La forma completa è `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, dove qualsiasi carattere al di fuori di `A-Z`, `a-z`, `0-9`, `_`, e `-` viene sostituito con `_`. Per il server `database-tools` raggruppato in un plugin denominato `my-plugin`, uno strumento `query` è richiamabile come:


1458* I nomi delle proprietà di primo livello devono essere lunghi da 1 a 64 caratteri e utilizzare solo lettere ASCII e cifre, `_`, `.` e `-`1460* I nomi delle proprietà di primo livello devono essere lunghi da 1 a 64 caratteri e utilizzare solo lettere ASCII e cifre, `_`, `.` e `-`

1459* Lo schema deve essere valido rispetto al meta-schema JSON Schema draft 2020-12. Claude Code applica questo controllo agli schemi che non dichiarano alcun `$schema` e agli schemi che dichiarano draft 2020-12. Uno schema che dichiara qualsiasi altro dialetto salta questo controllo, anche se il controllo del nome della proprietà sopra indicato si applica comunque1461* Lo schema deve essere valido rispetto al meta-schema JSON Schema draft 2020-12. Claude Code applica questo controllo agli schemi che non dichiarano alcun `$schema` e agli schemi che dichiarano draft 2020-12. Uno schema che dichiara qualsiasi altro dialetto salta questo controllo, anche se il controllo del nome della proprietà sopra indicato si applica comunque

1460 1462 

1461Claude Code esegue i controlli dopo la [riscrittura del combinatore a livello di root](#tool-input-schemas-with-a-root-level-combinator), sullo schema che invierebbe effettivamente.

1462 

1463Quando Claude Code esclude uno strumento, registra il motivo nel log del server e comunica a Claude quali strumenti ha escluso e perché, in modo che tu possa chiedere a Claude perché uno strumento manca. Se correggi lo schema sul server, lo strumento riappare la prossima volta che Claude Code carica gli strumenti del server.1463Quando Claude Code esclude uno strumento, registra il motivo nel log del server e comunica a Claude quali strumenti ha escluso e perché, in modo che tu possa chiedere a Claude perché uno strumento manca. Se correggi lo schema sul server, lo strumento riappare la prossima volta che Claude Code carica gli strumenti del server.

1464 1464 

1465Claude Code attiva l'esclusione tramite un feature flag che recupera da Anthropic. Su una [distribuzione in cui il recupero dei flag è disattivato](/docs/it/env-vars#features-that-need-feature-flag-fetching), o su una macchina i cui flag non sono mai arrivati, come una macchina air-gapped, Claude Code esegue comunque i controlli e registra nel log del server quale strumento verrebbe rifiutato, ma invia comunque lo schema dello strumento all'API. L'API rifiuta una richiesta che include quello schema con [un errore 400 che nomina lo strumento in base alla sua posizione](/docs/it/errors#tool-input-schema-is-invalid). Prima della v2.1.216, nessuna distribuzione eseguiva questi controlli.1465Claude Code attiva l'esclusione tramite un feature flag che recupera da Anthropic. Su una [distribuzione in cui il recupero dei flag è disattivato](/docs/it/env-vars#features-that-need-feature-flag-fetching), o su una macchina i cui flag non sono mai arrivati, come una macchina air-gapped, Claude Code esegue comunque i controlli e registra nel log del server quale strumento verrebbe rifiutato, ma invia comunque lo schema dello strumento all'API. L'API rifiuta una richiesta che include quello schema con [un errore 400 che nomina lo strumento in base alla sua posizione](/docs/it/errors#tool-input-schema-is-invalid). Prima della v2.1.216, nessuna distribuzione eseguiva questi controlli.

Details

360 360 

361 Quello che succede dopo vi dice dove è il problema:361 Quello che succede dopo vi dice dove è il problema:

362 362 

363 * Il comando si avvia e attende l'input: il server stesso funziona. Eseguire `claude mcp get <name>` e confermare che il comando mostrato lì corrisponda a quello che avete appena eseguito. Se il comando mostrato differisce da quello che avete digitato, probabilmente avete omesso il separatore `--` prima del comando del server. Rimuovere il server e riaggiungerlo con `--` al suo posto. Se avete scritto `.mcp.json` a mano, controllare la sua sintassi e posizione.363 * Il comando si avvia e attende l'input: il server stesso funziona.

364 

365 Eseguire `claude mcp get <name>` e confermare che il comando mostrato lì corrisponda a quello che avete appena eseguito. Se il comando mostrato differisce da quello che avete digitato, probabilmente avete omesso il separatore `--` prima del comando del server. Rimuovere il server e riaggiungerlo con `--` al suo posto. Se avete scritto `.mcp.json` a mano, controllare la sua sintassi e posizione. Prima della v2.1.285, `claude mcp get` non stampava alcuna riga `Command` per una voce stdio salvata senza un campo `type`, come una voce `.mcp.json` scritta a mano. Su quelle versioni, eseguire `claude mcp list` invece, che stampa la riga di comando in entrambi i casi.

364 * Il comando genera un errore: il messaggio nomina cosa manca, come Node.js o un browser.366 * Il comando genera un errore: il messaggio nomina cosa manca, come Node.js o un browser.

365 </Accordion>367 </Accordion>

366 368 

model-config.md +10 −5

Details

39| **`sonnet`** | Utilizza il modello Sonnet più recente per i compiti di codifica quotidiani |39| **`sonnet`** | Utilizza il modello Sonnet più recente per i compiti di codifica quotidiani |

40| **`opus`** | Utilizza il modello Opus più recente per i compiti di ragionamento complesso |40| **`opus`** | Utilizza il modello Opus più recente per i compiti di ragionamento complesso |

41| **`haiku`** | Utilizza il modello Haiku veloce ed efficiente per i compiti semplici |41| **`haiku`** | Utilizza il modello Haiku veloce ed efficiente per i compiti semplici |

42| **`sonnet[1m]`** | Utilizza Sonnet con una [finestra di contesto di 1 milione di token](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) per sessioni lunghe. Nessun effetto quando `sonnet` si risolve già in Sonnet 5.5 o Sonnet 5 con la sua finestra nativa di 1M; dietro un [gateway LLM](/docs/it/llm-gateway), seleziona la finestra di 1M per quel modello |42| **`sonnet[1m]`** | Utilizza Sonnet con una [finestra di contesto di 1 milione di token](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) per sessioni lunghe. Nessun effetto quando `sonnet` si risolve già in Sonnet 5.5 o Sonnet 5 con la sua finestra nativa di 1M |

43| **`opus[1m]`** | Utilizza Opus con una [finestra di contesto di 1 milione di token](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) per sessioni lunghe |43| **`opus[1m]`** | Utilizza Opus con una [finestra di contesto di 1 milione di token](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) per sessioni lunghe |

44| **`opusplan`** | Modalità speciale che utilizza `opus` durante la modalità piano, quindi passa a `sonnet` per l'esecuzione |44| **`opusplan`** | Modalità speciale che utilizza `opus` durante la modalità piano, quindi passa a `sonnet` per l'esecuzione |

45 45 


521 Catene di modelli di fallback521 Catene di modelli di fallback

522</h3>522</h3>

523 523 

524Quando il modello primario è sovraccarico, non disponibile o restituisce un altro errore del server non ripetibile, Claude Code può passare a un modello di fallback invece di non riuscire nella richiesta. Gli errori di autenticazione, fatturazione, limite di velocità, dimensione della richiesta e trasporto, e un [rifiuto dalla verifica della politica della tua organizzazione](/docs/it/errors#automatic-retries), non attivano mai un passaggio; questi seguono il loro normale retry e gestione degli errori.524Quando il modello primario è sovraccarico, non disponibile o restituisce un altro errore del server non ripetibile, Claude Code può passare a un modello di fallback invece di non riuscire nella richiesta. Gli errori di autenticazione, fatturazione, limite di velocità, dimensione della richiesta e trasporto, e un [rifiuto dalla verifica della politica della tua organizzazione](/docs/it/errors#automatic-retries), non attivano mai un passaggio; questi seguono il loro normale retry e gestione degli errori. Passa quando [Amazon Bedrock](/docs/it/amazon-bedrock#when-a-model-is-disabled-mid-session) o [Google Cloud's Agent Platform](/docs/it/google-vertex-ai#when-a-model-is-disabled-mid-session) rifiuta un modello che il tuo account non può invocare, che Claude Code tratta come il modello non disponibile piuttosto che come un errore di autenticazione.

525 525 

526Configura uno o più modelli di fallback e Claude Code li prova in ordine, mostrando un avviso quando passa. Il passaggio dura solo per il turno corrente, quindi il tuo prossimo messaggio prova prima il modello primario di nuovo. Claude Code limita le catene a tre modelli dopo la rimozione dei duplicati e ignora le voci extra.526Configura uno o più modelli di fallback e Claude Code li prova in ordine, mostrando un avviso quando passa. Il passaggio dura solo per il turno corrente, quindi il tuo prossimo messaggio prova prima il modello primario di nuovo. Claude Code limita le catene a tre modelli dopo la rimozione dei duplicati e ignora le voci extra.

527 527 


775 775 

776Claude Code controlla questi requisiti del piano solo quando si connette direttamente a Anthropic API. Se punti `ANTHROPIC_BASE_URL` a un [gateway LLM](/docs/it/llm-gateway#subscriptions-and-gateways) e il tuo accesso salvato a claude.ai rimane la credenziale attiva, Claude Code non controlla i crediti di utilizzo del tuo piano. Le opzioni `[1m]` rimangono disponibili in `/model`, e il gateway decide se la richiesta ha successo. Prima della v2.1.229, Claude Code rifiutava `/model sonnet[1m]` in quella configurazione quando non poteva confermare i crediti di utilizzo sull'account.776Claude Code controlla questi requisiti del piano solo quando si connette direttamente a Anthropic API. Se punti `ANTHROPIC_BASE_URL` a un [gateway LLM](/docs/it/llm-gateway#subscriptions-and-gateways) e il tuo accesso salvato a claude.ai rimane la credenziale attiva, Claude Code non controlla i crediti di utilizzo del tuo piano. Le opzioni `[1m]` rimangono disponibili in `/model`, e il gateway decide se la richiesta ha successo. Prima della v2.1.229, Claude Code rifiutava `/model sonnet[1m]` in quella configurazione quando non poteva confermare i crediti di utilizzo sull'account.

777 777 

778<span id="context-window-behind-a-gateway" />

779 

780Se imposti `ANTHROPIC_BASE_URL` a un [gateway LLM](/docs/it/llm-gateway) o un altro proxy, Claude Code assegna a ogni modello che riconosce la stessa finestra di contesto che il modello ha su Anthropic API. Fable 5.1, Fable 5, Sonnet 5 e successivi, e Opus 4.7 e successivi ottengono la finestra 1M senza variante `[1m]` da selezionare, e un modello che raggiunge 1M solo attraverso la sua variante `[1m]`, come Opus 4.6, viene eseguito a 200K senza di essa. Claude Code non può rilevare un limite inferiore che il gateway o il server dietro di esso applica. Se il tuo gateway rifiuta le richieste sopra 200K token, esegui [`/autocompact 200k`](#set-the-auto-compact-window) in modo che le sessioni si compattino a quel confine.

781 

778Per disattivare il contesto 1M, imposta `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Claude Code rimuove le varianti di modello 1M dal selettore di modelli. Su modelli con una finestra 1M nativa, come Sonnet 5 e i modelli Fable, tratta anche il modello come avente una finestra di contesto di 200K:782Per disattivare il contesto 1M, imposta `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Claude Code rimuove le varianti di modello 1M dal selettore di modelli. Su modelli con una finestra 1M nativa, come Sonnet 5 e i modelli Fable, tratta anche il modello come avente una finestra di contesto di 200K:

779 783 

780* Con la compattazione automatica attivata, le sessioni si compattano al confine 200K attraverso la [compattazione automatica](#set-the-auto-compact-window). Impostare la finestra di compattazione automatica sopra 200K non solleva il mantenimento, perché Claude Code limita quella finestra alla finestra di contesto del modello.784* Con la compattazione automatica attivata, le sessioni si compattano al confine 200K attraverso la [compattazione automatica](#set-the-auto-compact-window). Impostare la finestra di compattazione automatica sopra 200K non solleva il mantenimento, perché Claude Code limita quella finestra alla finestra di contesto del modello.


803 807 

804Su Anthropic API, Sonnet 5.5 e Sonnet 5 vengono sempre eseguiti con la finestra di contesto 1M. Non c'è variante 200K, nessun suffisso `[1m]` da selezionare e nessun credito di utilizzo richiesto su nessun piano. Le sessioni si compattano automaticamente prima che la finestra si riempia, a circa 967K token per impostazione predefinita; imposta [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/it/env-vars) per scegliere una soglia diversa.808Su Anthropic API, Sonnet 5.5 e Sonnet 5 vengono sempre eseguiti con la finestra di contesto 1M. Non c'è variante 200K, nessun suffisso `[1m]` da selezionare e nessun credito di utilizzo richiesto su nessun piano. Le sessioni si compattano automaticamente prima che la finestra si riempia, a circa 967K token per impostazione predefinita; imposta [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/it/env-vars) per scegliere una soglia diversa.

805 809 

806Due configurazioni limitano la finestra a 200K:810Claude Code assegna a Sonnet 5.5 e Sonnet 5 la stessa finestra 1M dietro un [gateway LLM](/docs/it/llm-gateway) o un altro `ANTHROPIC_BASE_URL` personalizzato. Se il tuo gateway applica un limite inferiore, vedere [la finestra di contesto dietro un gateway](#context-window-behind-a-gateway).

811 

812Questa impostazione limita la finestra a 200K:

807 813 

808* **Gateway LLM**: quando `ANTHROPIC_BASE_URL` punta a un [gateway](/docs/it/llm-gateway), Claude Code non può verificare il supporto 1M. Per usare la finestra completa, seleziona Sonnet 5.5 (1M context) nel selettore di modelli, che mappa a `sonnet[1m]`, o esegui `/model claude-sonnet-5[1m]` per Sonnet 5.

809* **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`**: mantiene le sessioni su ogni modello con una finestra 1M nativa a una finestra 200K; vedere [Extended context](#extended-context) per come il mantenimento viene applicato. Utile per i deployment che devono limitare il contesto.814* **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`**: mantiene le sessioni su ogni modello con una finestra 1M nativa a una finestra 200K; vedere [Extended context](#extended-context) per come il mantenimento viene applicato. Utile per i deployment che devono limitare il contesto.

810 815 

811<h2 id="context-window-and-auto-compaction">816<h2 id="context-window-and-auto-compaction">


841* Le [sessioni cloud](/docs/it/claude-code-on-the-web) si compattano mentre la conversazione si avvicina al limite del modello846* Le [sessioni cloud](/docs/it/claude-code-on-the-web) si compattano mentre la conversazione si avvicina al limite del modello

842* Sonnet 4.6 e Opus 4.6 senza [contesto esteso](#extended-context) si compattano al limite di 200K, così come Opus 4.8 e versioni successive quando vengono eseguiti con una finestra di contesto di 200K, come su Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry847* Sonnet 4.6 e Opus 4.6 senza [contesto esteso](#extended-context) si compattano al limite di 200K, così come Opus 4.8 e versioni successive quando vengono eseguiti con una finestra di contesto di 200K, come su Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry

843* Quando si imposta [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/it/env-vars), i modelli con una finestra nativa di 1M, come Sonnet 5 e i modelli Fable, si compattano al limite di 200K848* Quando si imposta [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/it/env-vars), i modelli con una finestra nativa di 1M, come Sonnet 5 e i modelli Fable, si compattano al limite di 200K

844* I modelli in esecuzione con una finestra nativa di 1M, come Sonnet 5, i modelli Fable e Opus 4.7 e versioni successive su Anthropic API, si compattano prima che la finestra si riempia, a circa 967K token per impostazione predefinita. Su Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry, [Pin models for third-party deployments](#pin-models-for-third-party-deployments) indica quali modelli vengono eseguiti con quella finestra; per le configurazioni che assegnano a Sonnet 5.5 e Sonnet 5 200K, vedere [Sonnet 5.5 and Sonnet 5 context window](#sonnet-5-5-and-sonnet-5-context-window)849* I modelli in esecuzione con una finestra nativa di 1M si compattano prima che la finestra si riempia, a circa 967K token per impostazione predefinita. Su Anthropic API, questi includono Sonnet 5, i modelli Fable e Opus 4.7 e versioni successive. Su Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry, vedere [Pin models for third-party deployments](#pin-models-for-third-party-deployments) per sapere quali modelli vengono eseguiti con quella finestra. Dietro un `ANTHROPIC_BASE_URL` personalizzato, vedere [the context window behind a gateway](#context-window-behind-a-gateway)

845* Le sessioni su un ID modello che Claude Code non riconosce, come un alias [LLM gateway](/docs/it/llm-gateway), si compattano alla finestra di contesto che Claude Code assume per l'ID; vedere [Correct the window for a gateway or custom model ID](#correct-the-window-for-a-gateway-or-custom-model-id)850* Le sessioni su un ID modello che Claude Code non riconosce, come un alias [LLM gateway](/docs/it/llm-gateway), si compattano alla finestra di contesto che Claude Code assume per l'ID; vedere [Correct the window for a gateway or custom model ID](#correct-the-window-for-a-gateway-or-custom-model-id)

846 851 

847<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">852<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">

Details

1430* `error.type`: perché Claude Code ha fermato la sessione. Presente solo su eventi `refused`:1430* `error.type`: perché Claude Code ha fermato la sessione. Presente solo su eventi `refused`:

1431 * `"helper_failed"`: un'[esecuzione dell'helper di politica ha fallito](/docs/it/settings-reference#helper-failures)1431 * `"helper_failed"`: un'[esecuzione dell'helper di politica ha fallito](/docs/it/settings-reference#helper-failures)

1432 * `"policy_invalid"`: le impostazioni gestite contengono un errore che ferma Claude Code dall'avviarsi, o una fonte admin non ha potuto caricarsi, quindi Claude Code non può controllare l'applicazione dell'accesso dell'organizzazione1432 * `"policy_invalid"`: le impostazioni gestite contengono un errore che ferma Claude Code dall'avviarsi, o una fonte admin non ha potuto caricarsi, quindi Claude Code non può controllare l'applicazione dell'accesso dell'organizzazione

1433 * `"provider_not_allowed"`: la sessione utilizzerebbe un provider API, o invierebbe il traffico di un provider a un host, che l'elenco [`allowedProviders`](/docs/it/settings-reference#allowedproviders) gestito non consente. Richiede Claude Code v2.1.285 o successivo

1433 * `"consent_rejected"`: l'utente ha rifiutato la [finestra di dialogo di approvazione della sicurezza](/docs/it/server-managed-settings#security-approval-dialogs) per le impostazioni gestite dal server1434 * `"consent_rejected"`: l'utente ha rifiutato la [finestra di dialogo di approvazione della sicurezza](/docs/it/server-managed-settings#security-approval-dialogs) per le impostazioni gestite dal server

1434 * `"force_refresh_failed"`: il fetch delle impostazioni che [`forceRemoteSettingsRefresh`](/docs/it/settings-reference#forceremotesettingsrefresh) richiede ha fallito1435 * `"force_refresh_failed"`: il fetch delle impostazioni che [`forceRemoteSettingsRefresh`](/docs/it/settings-reference#forceremotesettingsrefresh) richiede ha fallito

1435 * `"gateway_rejected"`: un [gateway di app Claude](/docs/it/claude-apps-gateway) ha risposto al carico delle impostazioni gestite con HTTP 4031436 * `"gateway_rejected"`: un [gateway di app Claude](/docs/it/claude-apps-gateway) ha risposto al carico delle impostazioni gestite con HTTP 403

Details

246| `storage.googleapis.com` | Programma di installazione nativo e aggiornamento automatico nativo nelle versioni precedenti a 2.1.116 |246| `storage.googleapis.com` | Programma di installazione nativo e aggiornamento automatico nativo nelle versioni precedenti a 2.1.116 |

247| `registry.npmjs.org` | Installazioni di plugin (recupero di pacchetti plugin da fonte npm e installazione delle dipendenze dei pacchetti Node.js dei plugin), server MCP lanciati con `npx` e il registro dei pacchetti per le installazioni npm e bun di Claude Code stesso |247| `registry.npmjs.org` | Installazioni di plugin (recupero di pacchetti plugin da fonte npm e installazione delle dipendenze dei pacchetti Node.js dei plugin), server MCP lanciati con `npx` e il registro dei pacchetti per le installazioni npm e bun di Claude Code stesso |

248| `bridge.claudeusercontent.com` | Bridge WebSocket dell'estensione [Claude in Chrome](/docs/it/chrome) |248| `bridge.claudeusercontent.com` | Bridge WebSocket dell'estensione [Claude in Chrome](/docs/it/chrome) |

249| `*.frame.claudeusercontent.com` | Letture di contenuto [Artifact](/docs/it/artifacts). La CLI recupera i file di un artifact da questo host quando Claude ne apre uno, e solo quando lo strumento Artifact è [disponibile](/docs/it/artifacts#availability) per il vostro account. Per disattivare lo strumento e eliminare questo requisito, impostate [`"enableArtifact": false`](/docs/it/settings-reference#enableartifact) o [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/it/env-vars); Claude Code rispetta anche l'impostazione deprecata [`disableArtifact`](/docs/it/settings-reference#disableartifact). Consultate [Disabilitare gli artifact](/docs/it/artifacts#disable-artifacts) per come queste impostazioni interagiscono |249| `*.frame.claudeusercontent.com` | Letture di contenuto [Artifact](/docs/it/artifacts). La CLI recupera i file di un artifact da questo host quando Claude ne apre uno, e solo quando lo strumento Artifact è [disponibile](/docs/it/artifacts#availability) per il vostro account. Per disattivare lo strumento e eliminare questo requisito, impostate [`"enableArtifact": false`](/docs/it/settings-reference#enableartifact) o [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/it/env-vars) |

250| `github.com` | Clonazione di [marketplace di plugin](/docs/it/plugins/overview) e plugin ospitati su GitHub, incluso il marketplace ufficiale Anthropic, su HTTPS o SSH. Per clonare sorgenti GitHub `owner/repo` solo su HTTPS, impostate [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/it/env-vars) |250| `github.com` | Clonazione di [marketplace di plugin](/docs/it/plugins/overview) e plugin ospitati su GitHub, incluso il marketplace ufficiale Anthropic, su HTTPS o SSH. Per clonare sorgenti GitHub `owner/repo` solo su HTTPS, impostate [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/it/env-vars) |

251| `raw.githubusercontent.com` | Feed del changelog per [`/release-notes`](/docs/it/commands). Nelle sessioni interattive, Claude Code lo recupera anche in background all'avvio quando il changelog memorizzato nella cache non copre ancora la versione in esecuzione, ad esempio al primo avvio dopo un aggiornamento; le sessioni non interattive e cloud non lo recuperano mai |251| `raw.githubusercontent.com` | Feed del changelog per [`/release-notes`](/docs/it/commands). Nelle sessioni interattive, Claude Code lo recupera anche in background all'avvio quando il changelog memorizzato nella cache non copre ancora la versione in esecuzione, ad esempio al primo avvio dopo un aggiornamento; le sessioni non interattive e cloud non lo recuperano mai |

252| `*-review.googlesource.com` | Ricerca di modifiche Gerrit su checkout `googlesource.com`. Quando una sessione di una scheda Claude Desktop Code si avvia o riprende su un checkout [attendibile](/docs/it/permissions#project-allow-rules-and-workspace-trust) il cui `origin` è un host `googlesource.com`, Claude Code chiede anonimamente al server `-review` di quell'host la modifica aperta corrispondente al `Change-Id` di HEAD, una volta per avvio o ripresa. Altri tipi di sessione saltano la ricerca e nessun altro host Gerrit viene contattato. Facoltativo: disabilitare con [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/it/env-vars) |252| `*-review.googlesource.com` | Ricerca di modifiche Gerrit su checkout `googlesource.com`. Quando una sessione di una scheda Claude Desktop Code si avvia o riprende su un checkout [attendibile](/docs/it/permissions#project-allow-rules-and-workspace-trust) il cui `origin` è un host `googlesource.com`, Claude Code chiede anonimamente al server `-review` di quell'host la modifica aperta corrispondente al `Change-Id` di HEAD, una volta per avvio o ripresa. Altri tipi di sessione saltano la ricerca e nessun altro host Gerrit viene contattato. Facoltativo: disabilitare con [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/it/env-vars) |

permission-modes.md +114 −111

Details

86| Come esegui Claude Code | Modalità di autorizzazione iniziale integrata |86| Come esegui Claude Code | Modalità di autorizzazione iniziale integrata |

87| :- | :- |87| :- | :- |

88| Un file di impostazioni imposta `disableAutoMode` su `"disable"` | `default` |88| Un file di impostazioni imposta `disableAutoMode` su `"disable"` | `default` |

89| `claude -p` o l'[Agent SDK](/docs/it/agent-sdk/permissions) | `default` |89| `claude -p` o l'[Agent SDK](/docs/it/agent-sdk/permissions#permission-modes) | `default` in sessioni che [recuperano flag di funzionalità](/docs/it/env-vars#features-that-need-feature-flag-fetching). In sessioni che non lo fanno, come su un provider di terze parti o con telemetria disattivata, `auto` con Claude Code v2.1.285 o successivo e `default` su versioni precedenti. Una sessione in un'organizzazione la cui politica nega l'impostazione predefinita `auto` inizia in `default` invece |

90| In un terminale o tramite l'[estensione VS Code](/docs/it/vs-code) | `auto` con Claude Code v2.1.283 o successivo; su versioni precedenti, `auto` su piani Pro, Max, o Team in sessioni che [recuperano flag di funzionalità](/docs/it/env-vars#features-that-need-feature-flag-fetching), e `default` altrimenti |90| In un terminale o tramite l'[estensione VS Code](/docs/it/vs-code) | `auto` con Claude Code v2.1.283 o successivo; su versioni precedenti, `auto` su piani Pro, Max, o Team in sessioni che [recuperano flag di funzionalità](/docs/it/env-vars#features-that-need-feature-flag-fetching), e `default` altrimenti |

91 91 

92Nella tua [prima sessione dopo un'installazione o aggiornamento](/docs/it/env-vars#first-session-after-an-install-or-upgrade), Claude Code può scegliere la modalità di autorizzazione iniziale prima che arrivino i suoi flag di funzionalità. Quella sessione può iniziare in una modalità di autorizzazione diversa da quella che la tabella fornisce, e la tua sessione successiva corrisponde alla tabella.92Nella tua [prima sessione dopo un'installazione o aggiornamento](/docs/it/env-vars#first-session-after-an-install-or-upgrade), Claude Code può scegliere la modalità di autorizzazione iniziale prima che arrivino i suoi flag di funzionalità. Quella sessione può iniziare in una modalità di autorizzazione diversa da quella che la tabella fornisce, e la tua sessione successiva corrisponde alla tabella.


98* In un terminale, una volta, in cima alla sessione98* In un terminale, una volta, in cima alla sessione

99* Nell'estensione VS Code, come una scheda nella schermata di nuova conversazione che rimane finché non la chiudi99* Nell'estensione VS Code, come una scheda nella schermata di nuova conversazione che rimane finché non la chiudi

100 100 

101Su piani Pro, Max e Team, se il tuo `~/.claude/settings.json` imposta un `defaultMode` diverso da `auto` e nessun altro file di impostazioni ne imposta uno, le tue sessioni continuano a iniziare in quella modalità. Claude Code chiede una volta, nel terminale o nell'estensione VS Code, se cambiare l'impostazione in modalità auto. Se rifiuti, la tua impostazione rimane come è.101Se il tuo `~/.claude/settings.json` imposta un `defaultMode` diverso da `auto` e nessun altro file di impostazioni ne imposta uno, le tue sessioni continuano a iniziare in quella modalità. Su piani Pro, Max e Team, e in sessioni che [non recuperano flag di funzionalità](/docs/it/env-vars#features-that-need-feature-flag-fetching), Claude Code chiede una volta, nel terminale o nell'estensione VS Code, se cambiare l'impostazione in modalità auto. Se rifiuti, la tua impostazione rimane come è.

102 102 

103<h3 id="start-in-a-different-mode">103<h3 id="start-in-a-different-mode">

104 Inizia in una modalità di autorizzazione diversa104 Inizia in una modalità di autorizzazione diversa


291 Elimina i prompt di autorizzazione con la modalità auto291 Elimina i prompt di autorizzazione con la modalità auto

292</h2>292</h2>

293 293 

294La modalità auto consente a Claude di eseguire senza prompt di autorizzazione di routine. Un modello classificatore separato esamina le azioni prima che vengano eseguite, bloccando qualsiasi cosa che vada oltre la vostra richiesta, che prenda di mira un'infrastruttura non riconosciuta, o che sembri guidata da contenuti ostili che Claude ha letto. Le [regole di richiesta](/docs/it/permissions#manage-permissions) esplicite forzano comunque un prompt.294La modalità auto consente a Claude di eseguire senza prompt di autorizzazione di routine. Un modello classificatore separato esamina le azioni prima che vengono eseguite, bloccando qualsiasi cosa che vada oltre la tua richiesta, che prenda di mira un'infrastruttura non riconosciuta, o che sembri guidata da contenuti ostili che Claude ha letto. Le [regole ask](/docs/it/permissions#manage-permissions) esplicite forzano comunque un prompt.

295 295 

296Con Claude Code v2.1.283 o successivo, la modalità auto è la [modalità di autorizzazione predefinita della sessione](#which-mode-a-session-starts-in) per le sessioni di terminale interattivo e VS Code su ogni piano e provider. Nelle versioni precedenti, è la modalità di autorizzazione predefinita della sessione solo sui piani Pro, Max e Team.296Con Claude Code v2.1.283 o successivo, la modalità auto è la [modalità di autorizzazione iniziale integrata](#which-mode-a-session-starts-in) per le sessioni di terminale interattivo e VS Code su ogni piano e provider. Nelle versioni precedenti, è la modalità di autorizzazione iniziale integrata solo sui piani Pro, Max e Team.

297 297 

298Il classificatore esamina anche ogni messaggio che Claude invia a un altro agente con [`SendMessage`](/docs/it/tools-reference), sia testo semplice che un messaggio strutturato di [team di agenti](/docs/it/agent-teams), prima che Claude Code lo consegni, sia in modalità auto che in [modalità piano mentre il classificatore esamina i comandi](#analyze-before-you-edit-with-plan-mode); la revisione dell'invio richiede Claude Code v2.1.222 o successivo.298Il classificatore esamina anche ogni messaggio che Claude invia a un altro agente con [`SendMessage`](/docs/it/tools-reference), sia testo semplice che un messaggio strutturato di [team di agenti](/docs/it/agent-teams), prima che Claude Code lo consegni, sia in modalità auto che in [modalità plan mentre il classificatore esamina i comandi](#analyze-before-you-edit-with-plan-mode); la revisione dell'invio richiede Claude Code v2.1.222 o successivo.

299 299 

300Per impostazione predefinita, il classificatore non esamina le rimozioni `rm` e `rmdir` che prendono di mira un percorso critico, come `rm -rf /` o `rm -rf ~`. [Percorsi critici](#critical-paths) copre cosa accade loro in ogni modalità di autorizzazione.300Per impostazione predefinita, il classificatore non esamina le rimozioni `rm` e `rmdir` che prendono di mira un percorso critico, come `rm -rf /` o `rm -rf ~`. [Percorsi critici](#critical-paths) copre cosa succede loro in ogni modalità di autorizzazione.

301 301 

302La modalità auto incoraggia anche Claude a continuare a lavorare senza fermarsi per domande di chiarimento, anche se Claude chiede comunque quando la vostra richiesta o un'abilità si basa esplicitamente su di essa. Per un comportamento più autonomo in una modalità che vi chiede comunque, impostate invece lo [stile di output proattivo](/docs/it/output-styles).302La modalità auto incoraggia anche Claude a continuare a lavorare senza fermarsi per domande di chiarimento, anche se Claude chiede comunque quando la tua richiesta o un'abilità si basa esplicitamente su di essa. Per un comportamento più autonomo in una modalità che ti chiede comunque, imposta lo [stile di output proattivo](/docs/it/output-styles) invece.

303 303 

304<Warning>304<Warning>

305 La modalità auto riduce i prompt di autorizzazione ma non garantisce la sicurezza. Utilizzatela per attività in cui fidate della direzione generale, non come sostituto della revisione su operazioni sensibili.305 La modalità auto riduce i prompt di autorizzazione ma non garantisce la sicurezza. Usala per attività in cui ti fidi della direzione generale, non come sostituto della revisione su operazioni sensibili.

306</Warning>306</Warning>

307 307 

308La modalità auto è disponibile solo quando il vostro account soddisfa tutti questi requisiti:308La modalità auto è disponibile solo quando il tuo account soddisfa tutti questi requisiti:

309 309 

310* **Piano**: Tutti i piani.310* **Piano**: Tutti i piani.

311* **Organizzazione**: su Team ed Enterprise, la modalità auto è disponibile per impostazione predefinita. Gli amministratori possono disattivarla per l'organizzazione impostando `permissions.disableAutoMode` su `"disable"` nelle [impostazioni gestite](/docs/it/managed-settings).311* **Organizzazione**: su Team ed Enterprise, la modalità auto è disponibile per impostazione predefinita. Gli amministratori possono disattivarla per l'organizzazione impostando `permissions.disableAutoMode` su `"disable"` nelle [impostazioni gestite](/docs/it/managed-settings).

312* **Modello**: sull'API Anthropic e su [Claude Platform su AWS](/docs/it/claude-platform-on-aws), Claude Opus 4.6 o successivo, Sonnet 4.6 o successivo, o un [modello Fable](/docs/it/model-config#work-with-fable). Su Amazon Bedrock, Agent Platform di Google Cloud, Microsoft Foundry e sessioni [gateway di app Claude](/docs/it/claude-apps-gateway) con accesso, solo Claude Sonnet 5 o successivo, Opus 4.7 o successivo e i modelli Fable. I modelli più vecchi, inclusi Sonnet 4.5, Opus 4.5, Haiku e modelli claude-3, non sono supportati su nessun provider.312* **Modello**: sull'API Anthropic e [Claude Platform su AWS](/docs/it/claude-platform-on-aws), Claude Opus 4.6 o successivo, Sonnet 4.6 o successivo, o un [modello Fable](/docs/it/model-config#work-with-fable). Su Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry e sessioni [gateway di app Claude](/docs/it/claude-apps-gateway) con accesso, solo Claude Sonnet 5 o successivo, Opus 4.7 o successivo, e i modelli Fable. I modelli più vecchi, inclusi Sonnet 4.5, Opus 4.5, Haiku e i modelli claude-3, non sono supportati su nessun provider.

313* **Provider**: disponibile per impostazione predefinita sull'API Anthropic, Claude Platform su AWS, Amazon Bedrock, Agent Platform di Google Cloud, Microsoft Foundry e sessioni gateway di app Claude con accesso.313* **Provider**: disponibile per impostazione predefinita sull'API Anthropic, Claude Platform su AWS, Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry e sessioni gateway di app Claude con accesso.

314 314 

315Se Claude Code segnala che la modalità auto non è disponibile, controllate prima questi requisiti e se un file di impostazioni imposta [`disableAutoMode`](/docs/it/settings-reference#disableautomode). Anthropic potrebbe anche aver disattivato la modalità auto lato server, oppure il server potrebbe aver rifiutato la modalità auto per il vostro account. Una sessione che ha ricevuto una di queste risposte mantiene la modalità auto disattivata fino al termine della sessione, quindi avviate una nuova sessione in seguito.315Se Claude Code segnala che la modalità auto non è disponibile, controlla prima questi requisiti e se un file di impostazioni imposta [`disableAutoMode`](/docs/it/settings-reference#disableautomode). Anthropic potrebbe anche aver disattivato la modalità auto lato server, oppure il server potrebbe aver rifiutato la modalità auto per il tuo account. Una sessione che ha ricevuto una di queste risposte mantiene la modalità auto disattivata fino al termine della sessione, quindi avvia una nuova sessione in seguito.

316 316 

317Un messaggio separato che nomina un modello e dice che la modalità auto "non può determinare la sicurezza" di un'azione significa che una richiesta del classificatore non è riuscita. Questo errore è solitamente transitorio, ma su Amazon Bedrock può ripetersi fino a quando il vostro account non può invocare il modello denominato. Consultate il [riferimento degli errori](/docs/it/errors#auto-mode-cannot-determine-the-safety-of-an-action) per le cause e cosa fare.317Un messaggio separato che nomina un modello e dice che la modalità auto "non può determinare la sicurezza" di un'azione significa che una richiesta del classificatore non è riuscita. Questo errore è solitamente transitorio, ma su Amazon Bedrock può ripetersi fino a quando il tuo account non può invocare il modello denominato. Vedi il [riferimento degli errori](/docs/it/errors#auto-mode-cannot-determine-the-safety-of-an-action) per le cause e cosa fare.

318 318 

319Se impostate `defaultMode: "auto"` nelle [impostazioni](/docs/it/settings-reference#all-settings) e una sessione di terminale inizia in modalità Manuale senza errore, l'impostazione è probabilmente in `.claude/settings.json` o `.claude/settings.local.json`. `auto` non ha effetto da questi file. Spostatela in `~/.claude/settings.json`. Per una conversazione avviata dall'estensione VS Code, controllate invece l'elenco proprio dell'estensione in [Cambia modalità di autorizzazione](#switch-permission-modes).319Se imposti `defaultMode: "auto"` nelle [impostazioni](/docs/it/settings-reference#all-settings) e una sessione di terminale inizia in modalità Manual senza errore, l'impostazione è probabilmente in `.claude/settings.json` o `.claude/settings.local.json`. `auto` non ha effetto da questi file. Spostalo in `~/.claude/settings.json`. Per una conversazione che l'estensione VS Code ha avviato, controlla invece l'elenco proprio dell'estensione in [Cambia modalità di autorizzazione](#switch-permission-modes).

320 320 

321<h3 id="enable-auto-mode-on-bedrock-agent-platform-or-foundry">321<h3 id="enable-auto-mode-on-bedrock-agent-platform-or-foundry">

322 Modalità auto su Bedrock, Agent Platform o Foundry322 Modalità auto su Bedrock, Agent Platform o Foundry

323</h3>323</h3>

324 324 

325Su [Amazon Bedrock](/docs/it/amazon-bedrock), [Agent Platform di Google Cloud](/docs/it/google-vertex-ai), [Microsoft Foundry](/docs/it/microsoft-foundry) e sessioni [gateway di app Claude](/docs/it/claude-apps-gateway) con accesso, la modalità auto è disponibile per impostazione predefinita. Con Claude Code v2.1.283 o successivo, è anche la [modalità di autorizzazione predefinita della sessione](#which-mode-a-session-starts-in) per le sessioni di terminale interattivo e [VS Code](/docs/it/vs-code). Per scegliere voi stessi la modalità di autorizzazione iniziale, impostate `permissions.defaultMode` come [Inizia in una modalità di autorizzazione diversa](#start-in-a-different-mode) descrive, o scegliete una modalità di autorizzazione dall'indicatore di modalità dell'estensione VS Code.325Su [Amazon Bedrock](/docs/it/amazon-bedrock), [Google Cloud's Agent Platform](/docs/it/google-vertex-ai), [Microsoft Foundry](/docs/it/microsoft-foundry) e sessioni [gateway di app Claude](/docs/it/claude-apps-gateway) con accesso, la modalità auto è disponibile per impostazione predefinita. Quando nient'altro imposta una modalità di autorizzazione, è anche la [modalità di autorizzazione iniziale integrata](#which-mode-a-session-starts-in), sulle versioni che la tabella di quella sezione elenca. Per scegliere tu stesso la modalità di autorizzazione iniziale, imposta `permissions.defaultMode` come [Inizia in una modalità di autorizzazione diversa](#start-in-a-different-mode) descrive, o scegli una modalità di autorizzazione dall'indicatore di modalità dell'estensione VS Code.

326 326 

327Solo Claude Sonnet 5 o successivo, Opus 4.7 o successivo e i modelli Fable sono supportati su questi provider. Su qualsiasi altro modello, la sessione inizia in Manuale.327Solo Claude Sonnet 5 o successivo, Opus 4.7 o successivo, e i modelli Fable sono supportati su questi provider. Su qualsiasi altro modello, la sessione inizia in Manual invece.

328 328 

329Per impedire agli sviluppatori di utilizzare la modalità auto, impostate `disableAutoMode` su `"disable"` nelle [impostazioni gestite](/docs/it/managed-settings). Questo rimuove `auto` dal ciclo `Shift+Tab` e una sessione avviata con `--permission-mode auto` inizia in Manuale. Una sessione già in esecuzione in modalità auto la abbandona quando l'impostazione la raggiunge da un'[origine distribuita da amministratore](/docs/it/managed-settings#which-managed-source-claude-code-uses) e mostra `auto mode disabled by settings`. Prima della v2.1.251, una sessione in esecuzione manteneva la modalità auto fino al termine.329Per impedire agli sviluppatori di utilizzare la modalità auto, imposta `disableAutoMode` su `"disable"` nelle [impostazioni gestite](/docs/it/managed-settings). Questo rimuove `auto` dal ciclo `Shift+Tab`, e una sessione avviata con `--permission-mode auto` inizia in Manual invece. Una sessione già in esecuzione in modalità auto la lascia quando l'impostazione raggiunge quella sessione da una [fonte distribuita dall'amministratore](/docs/it/managed-settings#which-managed-source-claude-code-uses), e mostra `auto mode disabled by settings`. Prima della v2.1.251, una sessione in esecuzione manteneva la modalità auto fino al termine.

330 330 

331Nella v2.1.158 fino alla v2.1.206, la modalità auto era disattivata su questi provider fino a quando non impostavate `CLAUDE_CODE_ENABLE_AUTO_MODE=1` e Claude Code ignorava `defaultMode: "auto"` su questi provider a meno che la variabile non fosse anche impostata. La variabile è ancora accettata per compatibilità e non ha effetto dalla v2.1.207 in poi.331Nella v2.1.158 fino alla v2.1.206, la modalità auto era disattivata su questi provider fino a quando non impostavi `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, e Claude Code ignorava `defaultMode: "auto"` su questi provider a meno che la variabile non fosse anche impostata. La variabile è ancora accettata per compatibilità e non ha effetto dalla v2.1.207 in poi.

332 332 

333<h3 id="server-side-classifier-review">333<h3 id="server-side-classifier-review">

334 Revisione del classificatore lato server334 Revisione del classificatore lato server

335</h3>335</h3>

336 336 

337In modalità auto, Claude Code può chiedere al server di controllare le azioni che l'[ordine decisionale](#how-the-classifier-evaluates-actions) invia per la revisione, come parte delle richieste del modello della sessione, al posto di inviare le proprie richieste del classificatore. Queste sessioni chiedono:337In modalità auto, Claude Code può chiedere al server di controllare le azioni che [l'ordine decisionale](#how-the-classifier-evaluates-actions) invia per la revisione, come parte delle richieste del modello della sessione, al posto di inviare le proprie richieste del classificatore. Queste sessioni chiedono:

338 338 

339* **Una connessione diretta all'API Anthropic**: in una sessione di terminale interattiva, su ogni piano claude.ai e su account che utilizzano l'API Claude, mentre Anthropic lo implementa. Richiede Claude Code v2.1.271 o successivo su piani Pro, Max e Team, e v2.1.278 o successivo su piani Enterprise e account API Claude. Dalla v2.1.282, una sessione che [non recupera i flag di funzionalità](/docs/it/env-vars#features-that-need-feature-flag-fetching), ad esempio perché avete disattivato la telemetria, chiede il server per impostazione predefinita in qualsiasi tipo di sessione.339* **Una connessione diretta all'API Anthropic**: in una sessione di terminale interattivo, su ogni piano claude.ai e su account che utilizzano l'API Claude, mentre Anthropic lo implementa. Richiede Claude Code v2.1.271 o successivo su piani Pro, Max e Team, e v2.1.278 o successivo su piani Enterprise e account Claude API. Dalla v2.1.282, una sessione che [non recupera i flag delle funzionalità](/docs/it/env-vars#features-that-need-feature-flag-fetching), ad esempio perché hai disattivato la telemetria, chiede il server per impostazione predefinita in qualsiasi tipo di sessione.

340* **Un provider cloud, un gateway LLM o un proxy**: su [Claude Platform su AWS](/docs/it/claude-platform-on-aws), Amazon Bedrock, Agent Platform di Google Cloud e Microsoft Foundry, e ogni volta che puntate `ANTHROPIC_BASE_URL` a un [gateway LLM o proxy](/docs/it/llm-gateway), indipendentemente dal vostro piano. Chiedere per impostazione predefinita richiede Claude Code v2.1.278 o successivo.340* **Un provider cloud, o un gateway LLM o proxy**: su [Claude Platform su AWS](/docs/it/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry, e ogni volta che punti `ANTHROPIC_BASE_URL` a un [gateway LLM o proxy](/docs/it/llm-gateway), indipendentemente dal tuo piano. Chiedere per impostazione predefinita richiede Claude Code v2.1.278 o successivo.

341* **Una sessione [gateway di app Claude](/docs/it/claude-apps-gateway) con accesso**: richiede Claude Code v2.1.280 o successivo341* **Una sessione [gateway di app Claude](/docs/it/claude-apps-gateway) con accesso**: richiede Claude Code v2.1.280 o successivo

342 342 

343Dove il server esamina le azioni, i suoi verdetti le decidono. Due altri risultati sono possibili:343Dove il server esamina le azioni, i suoi verdetti le decidono. Due altri risultati sono possibili:

344 344 

345* **Il server non esamina la sessione**: una risposta si completa senza risultati di revisione, oppure il server risponde che non esamina questa sessione. Le cause più comuni sono un gateway LLM o un proxy che scarta la richiesta di revisione o i risultati, e una piattaforma, una regione o una credenziale che non ha ancora controlli lato server. Claude Code ricade alle proprie richieste del classificatore. Una volta che questo fallback vale per il resto della sessione, mostra un [avviso sugli addebiti delle richieste del classificatore](/docs/it/auto-mode-classifier-billing) su account in cui queste richieste vengono fatturate.345* **Il server non esamina la sessione**: una risposta si completa senza risultati di revisione, o il server risponde che non esamina questa sessione. Le cause più comuni sono un gateway LLM o proxy che elimina la richiesta di revisione o i risultati, e una piattaforma, regione o credenziale che non ha ancora controlli lato server. Claude Code ricade alle proprie richieste del classificatore. Una volta che questo fallback vale per il resto della sessione, mostra un [avviso sugli addebiti delle richieste del classificatore](/docs/it/auto-mode-classifier-billing) su account in cui queste richieste vengono fatturate.

346* **Il server non fornisce un verdetto per un'azione**: Claude Code nega l'azione piuttosto che eseguirla senza revisione. Su qualsiasi connessione, questo accade quando la risposta termina prima che i risultati della revisione arrivino o i risultati arrivano in una forma che Claude Code non può leggere. Un gateway LLM o un proxy che taglia le risposte corte o riscrive i risultati può causare entrambi. Su una connessione diretta all'API Anthropic, accade anche quando il controllo del server non riesce per l'azione, ad esempio per timeout. [Il server non ha restituito un verdetto di sicurezza](/docs/it/errors#the-server-returned-no-safety-verdict) copre il messaggio di negazione, cosa accade quando le negazioni si ripetono e cosa fare.346* **Il server non dà un verdetto per un'azione**: Claude Code nega l'azione piuttosto che eseguirla senza revisione. Su qualsiasi connessione, questo accade quando la risposta termina prima che i risultati della revisione arrivino o i risultati arrivano in una forma che Claude Code non può leggere. Un gateway LLM o proxy che taglia le risposte corte o riscrive i risultati può causare entrambi. Su una connessione diretta all'API Anthropic, accade anche quando il controllo del server non riesce per l'azione, ad esempio per timeout. [Il server non ha restituito un verdetto di sicurezza](/docs/it/errors#the-server-returned-no-safety-verdict) copre il messaggio di negazione, cosa succede quando le negazioni si ripetono, e cosa fare.

347 347 

348Per saltare la richiesta al server e utilizzare sempre le proprie richieste del classificatore di Claude Code, impostate [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/it/env-vars). Su una connessione diretta all'API Anthropic, la variabile richiede Claude Code v2.1.281 o successivo. Impostarla su `1` lì attiva la revisione del server in una sessione che non ce l'ha ancora, come una sessione `-p` o Agent SDK, a meno che non abbiate anche impostato `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Se impostate `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` e lasciate `CLAUDE_CODE_AUTO_MODE_SERVER` non impostato, Claude Code smette anche di chiedere al server, eccetto come [Disabilita le capacità di pre-rilascio](/docs/it/llm-gateway-protocol#disable-pre-release-capabilities) descrive.348Per saltare la richiesta al server e usare sempre le proprie richieste del classificatore di Claude Code, imposta [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/it/env-vars). Su una connessione diretta all'API Anthropic, la variabile richiede Claude Code v2.1.281 o successivo. Impostarla su `1` lì attiva la revisione del server in una sessione che non ce l'ha ancora, come una sessione `-p` o Agent SDK, a meno che tu non abbia anche impostato `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Se imposti `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` e lasci `CLAUDE_CODE_AUTO_MODE_SERVER` non impostato, Claude Code smette anche di chiedere al server, tranne come [Disabilita le capacità di pre-rilascio](/docs/it/llm-gateway-protocol#disable-pre-release-capabilities) descrive.

349 349 

350<h3 id="what-the-classifier-blocks-by-default">350<h3 id="what-the-classifier-blocks-by-default">

351 Cosa blocca il classificatore per impostazione predefinita351 Cosa blocca il classificatore per impostazione predefinita

352</h3>352</h3>

353 353 

354Il classificatore si fida della vostra directory di lavoro e dei remoti che erano configurati per essa quando la sessione è iniziata. Un remote aggiunto o reindirizzato durante la sessione con `git remote add` o `git remote set-url` non è attendibile e tutto il resto è trattato come esterno fino a quando non [configurate l'infrastruttura attendibile](/docs/it/auto-mode-config). Prima della v2.1.200, i remoti aggiunti a metà sessione erano anche attendibili.354Il classificatore si fida della tua directory di lavoro e dei remoti che erano configurati per essa quando la sessione è iniziata. Un remote aggiunto o reindirizzato durante la sessione con `git remote add` o `git remote set-url` non è attendibile, e tutto il resto è trattato come esterno fino a quando non [configuri l'infrastruttura attendibile](/docs/it/auto-mode-config). Prima della v2.1.200, i remoti aggiunti a metà sessione erano anche attendibili.

355 355 

356**Bloccato per impostazione predefinita**:356**Bloccato per impostazione predefinita**:

357 357 


363* Modifica dell'infrastruttura condivisa363* Modifica dell'infrastruttura condivisa

364* Distruzione irreversibile di file che esistevano prima della sessione364* Distruzione irreversibile di file che esistevano prima della sessione

365* Force push365* Force push

366* Commit o push di una modifica che invierebbe segreti o dati sensibili al di fuori del repository quando viene eseguito, o amplierebbe ciò che un deploy espone. Questo copre un flusso di lavoro CI o una configurazione di deploy che passa un segreto a una destinazione che non lo riceve già, uno script o un passaggio di configurazione che legge un archivio di segreti e invia i dati fuori, e una modifica di configurazione che amplia ciò che un deploy pubblica, come un'impostazione di registro, visibilità, artefatto o sourcemap. Il controllo si applica su qualsiasi ramo, si applica anche quando il repository è pubblico e si attiva quando la modifica viene sottoposta a commit o push, indipendentemente dal fatto che quel commit o push attivi la pipeline; cancellarlo richiede di nominare l'effetto di esecuzione, non solo il commit o push. Prima della v2.1.211, questo controllo era limitato al ramo predefinito: un push lì veniva bloccato quando conteneva contenuto sensibile, modifiche nascoste o descritte in modo errato rispetto a quello che avete chiesto, contenuto portato da fuori il repository o instradato intorno a una revisione che avete chiesto366* Commit o push di una modifica che invierebbe segreti o dati sensibili al di fuori del repository quando viene eseguito, o amplierebbe ciò che un deploy espone. Questo copre un flusso di lavoro CI o una configurazione di deploy che passa un segreto a una destinazione che non lo riceve già, uno script o un passaggio di configurazione che legge un archivio di segreti e invia i dati fuori, e una modifica di configurazione che amplia ciò che un deploy pubblica, come un'impostazione di registro, visibilità, artefatto o sourcemap. Il controllo si applica su qualsiasi ramo, si applica anche quando il repository è pubblico, e si attiva quando la modifica viene sottoposta a commit o push, indipendentemente dal fatto che quel commit o push attivi la pipeline; cancellarlo richiede di nominare l'effetto di esecuzione, non solo il commit o push. Prima della v2.1.211, questo controllo era limitato al ramo predefinito: un push lì era bloccato quando portava contenuto sensibile, modifiche nascoste o misdescribed rispetto a quello che hai chiesto, contenuto portato da fuori il repository, o instradato intorno a una revisione che hai chiesto

367* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop` o `git stash clear`, che il classificatore presume scarterebbero le modifiche non sottoposte a commit367* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop`, o `git stash clear`, che il classificatore presume scarterebbero le modifiche non sottoposte a commit

368* `git commit --amend` quando il commit in HEAD non è stato creato in questa sessione368* `git commit --amend` quando il commit in HEAD non è stato creato in questa sessione

369* Dalla v2.1.198, `git commit --amend` quando il commit in HEAD è già stato sottoposto a push. Un reword solo messaggio non è bloccato: `--amend -m` senza nulla di nuovo in staging, su un commit che Claude ha creato durante questa sessione369* Dalla v2.1.198, `git commit --amend` quando il commit in HEAD è già stato sottoposto a push. Una riscrittura solo del messaggio non è bloccata: `--amend -m` senza nulla di nuovo in staging, su un commit che Claude ha creato durante questa sessione

370* `terraform destroy`, `pulumi destroy`, `cdk destroy` o `terragrunt destroy`, e applicazione di un piano che distrugge risorse370* `terraform destroy`, `pulumi destroy`, `cdk destroy`, o `terragrunt destroy`, e applicazione di un piano che distrugge risorse

371* Scrittura in un gestore di segreti, o modifica di record DNS o certificati TLS371* Scrittura in un gestore di segreti, o modifica di record DNS o certificati TLS

372* Unione di una pull request che nessun umano ha approvato, approvazione della propria pull request di Claude o disabilitazione dei controlli CI372* Merge di una pull request che nessun umano ha approvato, approvazione della propria pull request di Claude, o disabilitazione dei controlli CI

373* Posting di un commento che è esso stesso un comando per l'automazione, come `atlantis apply` o il `/deploy` o `/merge` di un bot373* Posting di un commento che è esso stesso un comando per l'automazione, come `atlantis apply` o il `/deploy` o `/merge` di un bot

374* Attivazione, ramping o eliminazione di un flag di funzionalità di produzione374* Attivazione, ramping o eliminazione di un feature flag di produzione

375* Applicazione di modifiche all'infrastruttura a un ambito IaC protetto, o drenaggio e rimozione di nodi del cluster375* Applicazione di modifiche all'infrastruttura a un ambito IaC protetto, o drenaggio e rimozione di nodi del cluster

376* Scritture in un cluster di calcolo condiviso che vanno oltre la risorsa che avete nominato, come un selettore di etichetta o `--all` che cattura i lavori di altri utenti376* Scritture in un cluster di calcolo condiviso che vanno oltre la risorsa che hai nominato, come un selettore di etichette o `--all` che cattura i lavori di altri utenti

377* Creazione di risorse Kubernetes che vengono eseguite su ogni nodo o intercettano il traffico del cluster, come DaemonSets e webhook di ammissione377* Creazione di risorse Kubernetes che vengono eseguite su ogni nodo o intercettano il traffico del cluster, come DaemonSets e webhook di ammissione

378* Shell interattive o port-forward in un target remoto sensibile378* Shell interattive o port-forward in un target remoto sensibile

379* Apertura di un tunnel o shell inversa che rende un servizio locale raggiungibile da Internet pubblico379* Apertura di un tunnel o shell inversa che rende un servizio locale raggiungibile da Internet pubblico

380* Stampa di una credenziale o token live nella trascrizione o in un file380* Stampa di una credenziale o token live nella trascrizione o in un file

381* Accesso a una posizione elencata come posizione di dati sensibili nel vostro [ambiente](/docs/it/auto-mode-config#define-trusted-infrastructure), o copia di dati da una. A partire dalla v2.1.198 questo blocca anche l'invio di dati da uno a un pubblico che la voce esclude381* Accesso a una posizione elencata come posizione di dati sensibili nel tuo [ambiente](/docs/it/auto-mode-config#define-trusted-infrastructure), o copia di dati da una. A partire dalla v2.1.198 questo blocca anche l'invio di dati da uno a un pubblico che la voce esclude

382* Instradamento di un'installazione di pacchetto intorno al vostro registro di pacchetti interno a un registro pubblico. A partire dalla v2.1.198, questo si applica anche quando avete detto a Claude che un registro interno o uno specchio esiste nella conversazione, non solo quando uno è elencato nel vostro ambiente382* Instradamento di un'installazione di pacchetto intorno al tuo registro di pacchetti interno a un registro pubblico. A partire dalla v2.1.198, questo si applica anche quando hai detto a Claude che un registro interno o uno specchio esiste nella conversazione, non solo quando uno è elencato nel tuo ambiente

383* Esecuzione di un comando con un flag che disarma una guardia di sicurezza, come `--insecure`383* Esecuzione di un comando con un flag che disarma una guardia di sicurezza, come `--insecure`

384* Avvio di un ciclo di agente autonomo che viene eseguito senza approvazione umana o sandbox, come uno avviato con `--dangerously-skip-permissions` o `--no-sandbox`. A partire dalla v2.1.198 questo copre anche l'esecuzione di un agente di terze parti o di un harness di valutazione con isolamento e approvazione per azione disabilitati, come un runner avviato con `--yes-always`384* Lancio di un ciclo di agente autonomo che viene eseguito senza approvazione umana o sandbox, come uno avviato con `--dangerously-skip-permissions` o `--no-sandbox`. A partire dalla v2.1.198 questo copre anche l'esecuzione di un agente di terze parti o di un harness eval con isolamento e approvazione per azione disabilitati, come un runner avviato con `--yes-always`

385* Azioni del browser [Claude in Chrome](/docs/it/chrome) che potrebbero inviare contenuto della pagina, cookie o credenziali off-origin385* Azioni del browser [Claude in Chrome](/docs/it/chrome) che potrebbero inviare contenuto della pagina, cookie o credenziali off-origin

386 386 

387Diverse di queste categorie dipendono da voci di [ambiente](/docs/it/auto-mode-config#define-trusted-infrastructure), come target remoti sensibili e ambiti IaC protetti, che potete restringere a nomi concreti.387Diverse di queste categorie dipendono da voci di [ambiente](/docs/it/auto-mode-config#define-trusted-infrastructure), come target remoti sensibili e ambiti IaC protetti, che puoi restringere a nomi concreti.

388 388 

389Claude Code v2.1.198 e successivo bloccano anche questi per impostazione predefinita:389Claude Code v2.1.198 e successivo bloccano anche questi per impostazione predefinita:

390 390 

391* Eliminazione di file in `/tmp`, `$TMPDIR` o un'altra directory di scratch o cache condivisa per wildcard, glob o filtro di età piuttosto che per un percorso nominato specifico391* Eliminazione di file in `/tmp`, `$TMPDIR`, o un'altra directory di scratch o cache condivisa per wildcard, glob o filtro di età piuttosto che per un percorso specifico denominato

392* Inclusione di dettagli sensibili nel contenuto inviato, caricato, pubblicato o scritto ad altre persone o sistemi condivisi, quando il vostro messaggio non ha autorizzato quei dettagli per quel destinatario. I corpi di PR e issue, i messaggi di commit e i commenti contano come questo tipo di contenuto in uscita quando il repository è al di fuori del confine di fiducia o pubblico, inclusi i vostri repository pubblici dell'organizzazione; i percorsi di file interni, i nomi in codice, i dati di risposta API live come email o identificatori di account e gli identificatori di infrastruttura contano come dettagli sensibili. Lo scoping di PR, issue e messaggio di commit richiede Claude Code v2.1.200 o successivo. I dati personali live da una risposta API in un corpo di PR o issue, come un indirizzo email, un identificatore di account o organizzazione o una metrica di utilizzo, richiedono che nominiate quei dettagli e il destinatario indipendentemente dalla visibilità del repository o dal confine di fiducia. Quel controllo richiede Claude Code v2.1.203 o successivo392* Inclusione di dettagli sensibili nel contenuto inviato, caricato, pubblicato o scritto ad altre persone o sistemi condivisi, quando il tuo messaggio non ha autorizzato quei dettagli per quel destinatario. I corpi di PR e issue, i messaggi di commit e i commenti contano come questo tipo di contenuto in uscita quando il repository è al di fuori del confine di fiducia o pubblico, inclusi i tuoi repository pubblici dell'organizzazione; i percorsi di file interni, i nomi in codice, i dati di risposta API live come email o identificatori di account, e gli identificatori di infrastruttura contano come dettagli sensibili. Lo scoping di PR, issue e messaggio di commit richiede Claude Code v2.1.200 o successivo. I dati personali live da una risposta API in un corpo di PR o issue, come un indirizzo email, un identificatore di account o organizzazione, o una metrica di utilizzo, richiedono che tu nomini quei dettagli e il destinatario indipendentemente dalla visibilità del repository o dal confine di fiducia. Quel controllo richiede Claude Code v2.1.203 o successivo

393* Invio di pressioni di tasti al proprio riquadro tmux di Claude Code per guidare la propria interfaccia, che il classificatore tratta come Claude che cambia le proprie autorizzazioni o supervisione393* Invio di pressioni di tasti a Claude Code's own tmux pane per guidare la sua stessa interfaccia, che il classificatore tratta come Claude che cambia le sue stesse autorizzazioni o supervisione

394 394 

395Claude Code v2.1.200 e successivo bloccano anche questi per impostazione predefinita:395Claude Code v2.1.200 e successivo bloccano anche questi per impostazione predefinita:

396 396 

397* Commento, eliminazione o superamento forzato di un test o asserzione che protegge il comportamento di sicurezza, come autenticazione, controllo di accesso, convalida dell'input o sandboxing397* Commento, eliminazione o force-passing di un test o asserzione che protegge il comportamento di sicurezza, come autenticazione, controllo di accesso, convalida dell'input o sandboxing

398* Eliminazione o smantellamento di una risorsa stateful che Claude non ha creato nella sessione, quando nessuna regola di eliminazione più specifica si applica e non avete nominato quella risorsa398* Eliminazione o smantellamento di una risorsa stateful che Claude non ha creato nella sessione, quando nessuna regola di eliminazione più specifica si applica e non hai nominato quella risorsa

399* Reindirizzamento di un URL di base API, endpoint proxy, ricevitore webhook o specchio di registro a un host di terze parti che non si adatta al compito, incluso nei file di esempio come `.env.example`399* Reindirizzamento di un URL di base API, endpoint proxy, ricevitore webhook o specchio di registro a un host di terze parti che non si adatta al compito, incluso nei file di esempio come `.env.example`

400* Modifica di dove vanno i push con `git remote set-url` o `git remote add`, a meno che non abbiate nominato il nuovo remote400* Modifica di dove vanno i push con `git remote set-url` o `git remote add`, a meno che tu non abbia nominato il nuovo remote

401* Push di segreti o dati personali o affidati a un repository noto per essere pubblico, o push di materiale confidenziale lì che non fa parte del lavoro proprio di quel repository. Il soggetto proprio di un repository di dotfiles è l'unica eccezione per dati personali o affidati, e il contenuto da un repository privato che raggiunge qualsiasi superficie pubblica è bloccato nello stesso modo; entrambi i perfezionamenti richiedono Claude Code v2.1.203 o successivo. Prima della v2.1.203, i dati personali erano raggruppati con materiale confidenziale e bloccati solo quando non facevano parte del lavoro proprio di quel repository. Quando la visibilità di un repository non è stabilita, il classificatore non blocca solo su quello; giudica il contenuto rispetto alle altre regole401* Push di segreti o dati personali o affidati a un repository noto per essere pubblico, o push di materiale confidenziale lì che non fa parte del lavoro proprio di quel repository. Il soggetto proprio di un repository dotfiles è l'unica eccezione per dati personali o affidati, e il contenuto da un repository privato che raggiunge qualsiasi superficie pubblica è bloccato allo stesso modo; entrambi i perfezionamenti richiedono Claude Code v2.1.203 o successivo. Prima della v2.1.203, i dati personali erano raggruppati con materiale confidenziale e bloccati solo quando non facevano parte del lavoro proprio di quel repository. Quando la visibilità di un repository non è stabilita, il classificatore non blocca solo su quello; giudica il contenuto rispetto alle altre regole invece

402* Apertura di una pull request contro un repository o organizzazione diversa, fork con `gh repo fork` o push a un repository di terze parti, a meno che non abbiate nominato quel target esterno402* Apertura di una pull request contro un repository o organizzazione diversa, fork con `gh repo fork`, o push a un repository di terze parti, a meno che tu non abbia nominato quel target esterno

403 403 

404Claude Code v2.1.203 e successivo bloccano anche questi per impostazione predefinita:404Claude Code v2.1.203 e successivo bloccano anche questi per impostazione predefinita:

405 405 

406* Contenuto da un archivio locale sensibile, o da un file il cui nome, percorso o tipo lo contrassegna come sensibile, che entra in un commit, un push, testo di PR o issue, un gist o paste, o una pubblicazione di pacchetto, a meno che non abbiate nominato sia la fonte che la destinazione. Le trascrizioni di sessione e i log di conversazione, le cartelle di punti di configurazione e credenziali come chiavi SSH, credenziali cloud, profili del browser e cronologia della shell, e gli export di dati utente contano tutti, e il fatto che il repository sia privato non lo cancella406* Contenuto da un archivio locale sensibile, o da un file il cui nome, percorso o tipo lo marca come sensibile, che entra in un commit, un push, testo di PR o issue, un gist o paste, o un package publish, a meno che tu non abbia nominato sia la fonte che la destinazione. Le trascrizioni di sessione e i log di conversazione, le cartelle di configurazione e credenziali come chiavi SSH, credenziali cloud, profili del browser e cronologia della shell, e gli export di dati utente contano tutti, e il fatto che il repository sia privato non lo cancella

407 407 

408Claude Code v2.1.205 e successivo bloccano anche questi per impostazione predefinita:408Claude Code v2.1.205 e successivo bloccano anche questi per impostazione predefinita:

409 409 

410* Scrittura nelle trascrizioni di sessione di Claude Code, i file di cronologia `.jsonl` sotto `~/.claude/projects/` o la vostra directory di configurazione configurata, direttamente o tramite un comando di shell. La regola copre anche le righe di metadati che Claude Code aggiunge a ogni voce di trascrizione per i propri controlli. La lettura di una trascrizione non è bloccata410* Scrittura nelle trascrizioni di sessione di Claude Code, i file di cronologia `.jsonl` sotto `~/.claude/projects/` o la tua directory di configurazione configurata, direttamente o attraverso un comando shell. La regola copre anche le righe di metadati che Claude Code aggiunge a ogni voce di trascrizione per i suoi stessi controlli. La lettura di una trascrizione non è bloccata

411* Un'eliminazione forzata ricorsiva come `rm -rf "$VAR"` o `Remove-Item -Recurse -Force $dir` il cui target è una variabile di shell che non è assegnata da nessuna parte nella conversazione che il classificatore vede, o un glob radicato in una. Il valore proveniva solo dall'output di comando precedente, che il classificatore non riceve mai, quindi il classificatore non può verificare il target di eliminazione rispetto alle altre regole di eliminazione. Il blocco si cancella quando nominate il percorso esatto che viene eliminato, o quando Claude riesegue l'eliminazione con il percorso letterale risolto scritto nel comando. Le eliminazioni il cui target il classificatore può risolvere non sono interessate.411* Un'eliminazione forzata ricorsiva come `rm -rf "$VAR"` o `Remove-Item -Recurse -Force $dir` il cui target è una variabile shell che non è assegnata da nessuna parte nella conversazione che il classificatore vede, o un glob radicato in tale variabile. Il valore proveniva solo dall'output del comando precedente, che il classificatore non riceve mai, quindi il classificatore non può verificare il target di eliminazione rispetto alle altre regole di eliminazione. Il blocco si cancella quando nomini il percorso esatto che viene eliminato, o quando Claude riesegue l'eliminazione con il percorso letterale risolto scritto nel comando. Le eliminazioni il cui target il classificatore può risolvere non sono interessate.

412 412 

413 Un glob direttamente sotto la variabile, come in `rm -rf "$VAR"/*`, è un [percorso critico](#critical-paths) invece. I target `Remove-Item` che sono un `*` nudo o terminano in `/*` o `\*` non raggiungono mai il classificatore: Claude Code [li nega direttamente](#remove-item-in-powershell).413 Un glob direttamente sotto la variabile, come in `rm -rf "$VAR"/*`, è un [percorso critico](#critical-paths) invece. I target `Remove-Item` che sono un `*` nudo o terminano in `/*` o `\*` non raggiungono mai il classificatore: Claude Code li [nega direttamente](#remove-item-in-powershell).

414 414 

415Claude Code v2.1.257 e successivo bloccano anche questi per impostazione predefinita:415Claude Code v2.1.257 e successivo bloccano anche questi per impostazione predefinita:

416 416 

417* Richiesta di credenziali dall'endpoint dei metadati dell'istanza cloud, come `169.254.169.254`, o autenticazione esplicita di una chiamata cloud, cluster o registro con l'identità dell'account di servizio o del nodo della macchina417* Richiesta di credenziali dall'endpoint dei metadati dell'istanza cloud, come `169.254.169.254`, o autenticazione esplicita di una chiamata cloud, cluster o registry con l'identità dell'account di servizio o del nodo della macchina

418* Raggiungimento di un host pubblico per una rotta diversa da una richiesta diretta, come un tunnel, una shell inversa, o una configurazione di resolver o proxy riscritta per puntare al di fuori418* Raggiungimento di un host pubblico per una rotta diversa da una richiesta diretta, come un tunnel, una shell inversa, o una configurazione di resolver o proxy riscritta per puntare al di fuori

419* Lettura di credenziali che appartengono all'host piuttosto che al vostro compito, come certificati di nodo o l'auth del registro di container del nodo419* Lettura di credenziali che appartengono all'host piuttosto che al tuo compito, come certificati di nodo o l'auth del registro di container del nodo

420* Connessione a o scansione di container, pod o VM fratelli che Claude non ha avviato, o il nodo sotto il container420* Connessione a o scansione di container, pod o VM fratelli che Claude non ha avviato, o il nodo sotto il container

421 421 

422Se Claude Code viene eseguito da qualche parte che intende consentire uno di questi, descrivete quella configurazione in una voce [Host containment](/docs/it/auto-mode-config#define-trusted-infrastructure) in `autoMode.environment`.422Se Claude Code viene eseguito da qualche parte che intende consentire uno di questi, descrivi quella configurazione in una voce [Host containment](/docs/it/auto-mode-config#define-trusted-infrastructure) in `autoMode.environment`.

423 423 

424Claude Code v2.1.261 e successivo bloccano anche questi per impostazione predefinita:424Claude Code v2.1.261 e successivo bloccano anche questi per impostazione predefinita:

425 425 

426* Posting o scrittura di un link a un servizio pubblico di paste, diagramma o condivisione dati in un messaggio, testo di PR o issue, un documento, o ovunque il link verrà aperto o recuperato, quando l'URL stesso contiene il contenuto condiviso, a meno che non abbiate nominato quel servizio426* Posting o scrittura di un link a un servizio pubblico di paste, diagramma o condivisione dati in un messaggio, testo di PR o issue, un documento, o ovunque il link verrà aperto o recuperato, quando l'URL stesso porta il contenuto condiviso, a meno che tu non abbia nominato quel servizio

427 427 

428**Consentito per impostazione predefinita**:428**Consentito per impostazione predefinita**:

429 429 

430* Operazioni su file locali nella vostra directory di lavoro430* Operazioni di file locali nella tua directory di lavoro

431* Installazione di dipendenze dichiarate nei vostri file di lock o manifest431* Installazione di dipendenze dichiarate nei tuoi file di lock o manifest

432* Lettura di `.env` e invio di credenziali al loro API corrispondente432* Lettura di `.env` e invio di credenziali al loro API corrispondente

433* Richieste HTTP di sola lettura433* Richieste HTTP di sola lettura

434* Push a qualsiasi ramo del repository in cui state lavorando, incluso il ramo predefinito. Un ramo non predefinito il cui nome lo contrassegna come target di deploy o pubblicazione, come `production` o `gh-pages`, non è coperto: il classificatore giudica un push lì secondo i suoi termini. Il contenuto del push è ancora controllato rispetto alle altre regole, le regole [`permissions.deny`](/docs/it/permissions#manage-permissions) possono ancora bloccare i comandi push [come scritti](/docs/it/permissions#bash-rule-limits) in ogni modalità, e la protezione del ramo del remote si applica ancora. Prima della v2.1.211, solo i push al ramo su cui avete iniziato, i rami che Claude ha creato e i push di routine al ramo predefinito erano consentiti per impostazione predefinita, e prima della v2.1.203 qualsiasi push diretto al ramo predefinito era bloccato434* Push a qualsiasi ramo del repository in cui stai lavorando, incluso il ramo predefinito. Un ramo non predefinito il cui nome lo marca come target di deploy o pubblicazione, come `production` o `gh-pages`, non è coperto: il classificatore giudica un push lì nei suoi stessi termini. Il contenuto del push è ancora controllato rispetto alle altre regole, le regole [`permissions.deny`](/docs/it/permissions#manage-permissions) possono ancora bloccare i comandi push [come scritti](/docs/it/permissions#bash-rule-limits) in ogni modalità, e la protezione del ramo del remote si applica ancora. Prima della v2.1.211, solo i push al ramo su cui hai iniziato, i rami che Claude ha creato, e i push di routine al ramo predefinito erano consentiti per impostazione predefinita, e prima della v2.1.203 qualsiasi push diretto al ramo predefinito era bloccato

435* Eliminazione dei lavori esatti che Claude ha creato in precedenza nella stessa sessione435* Eliminazione dei lavori esatti che Claude ha creato in precedenza nella stessa sessione

436* Lettura, revisione o scrittura di codice, configurazioni e modelli di minaccia relativi alla sicurezza come parte del vostro compito436* Lettura, revisione o scrittura di codice, configurazioni e modelli di minaccia relativi alla sicurezza come parte del tuo compito

437* Messaggi tra agenti che lavorano insieme nella stessa sessione multi-agente437* Messaggi tra agenti che lavorano insieme nella stessa sessione multi-agente

438* Invio di dati ai domini attendibili, bucket e servizi che elencate in [`environment`](/docs/it/auto-mode-config#define-trusted-infrastructure). Questo copre il flusso di dati solo, non operazioni distruttive o di credenziale sulla stessa infrastruttura438* Invio di dati ai domini, bucket e servizi attendibili che elenchi in [`environment`](/docs/it/auto-mode-config#define-trusted-infrastructure). Questo copre solo il flusso di dati, non le operazioni distruttive o di credenziale sulla stessa infrastruttura

439* [Claude in Chrome](/docs/it/chrome) navigazione a un dominio interno attendibile, localhost o un URL che avete nominato439* [Claude in Chrome](/docs/it/chrome) navigazione a un dominio interno attendibile, localhost, o un URL che hai nominato

440 440 

441I comandi in sandbox non ottengono accesso di rete per impostazione predefinita. Claude nomina gli host che un comando necessita sul comando stesso, il classificatore li esamina con il comando, e un elenco approvato apre quegli host per quel solo comando. [Domini consentiti per comando](/docs/it/sandboxing#per-command-allowed-domains-in-auto-mode) copre cosa un elenco può e non può aprire e cosa accade quando un comando raggiunge per un host non elencato.441I comandi in sandbox non ottengono accesso alla rete per impostazione predefinita. Claude nomina gli host di cui un comando ha bisogno sul comando stesso, il classificatore li esamina con il comando, e un elenco approvato apre quegli host per quel solo comando. [Domini consentiti per comando](/docs/it/sandboxing#per-command-allowed-domains-in-auto-mode) copre cosa un elenco può e non può aprire e cosa succede quando un comando raggiunge per un host non elencato.

442 442 

443Eseguite `claude auto-mode defaults` per stampare gli elenchi di regole completi come JSON. Se le azioni di routine vengono bloccate, un amministratore può aggiungere repo, bucket e servizi attendibili tramite l'impostazione `autoMode.environment`: consultate [Configura modalità auto](/docs/it/auto-mode-config).443Esegui `claude auto-mode defaults` per stampare gli elenchi di regole completi come JSON. Se le azioni di routine vengono bloccate, un amministratore può aggiungere repo, bucket e servizi attendibili tramite l'impostazione `autoMode.environment`: vedi [Configura la modalità auto](/docs/it/auto-mode-config).

444 444 

445Il push a qualsiasi ramo del repository in cui state lavorando e la creazione di una pull request che corrisponde alla vostra richiesta vengono eseguiti senza un prompt, a meno che il push o la pull request non rientri nell'[elenco bloccato](#what-the-classifier-blocks-by-default), come segreti o dati sensibili che lasciano il repository, o una pull request che prende di mira un repository o organizzazione diversa. Per richiedere un checkpoint umano prima di questi comandi mentre rimanete in modalità auto, aggiungete regole `permissions.ask`, che corrispondono al comando [come scritto](/docs/it/permissions#bash-rule-limits): consultate [Confini comuni](/docs/it/auto-mode-config#common-boundaries).445Il push a qualsiasi ramo del repository in cui stai lavorando e la creazione di una pull request che corrisponde alla tua richiesta vengono eseguiti senza un prompt, a meno che il push o la pull request non rientri nell'[elenco bloccato](#what-the-classifier-blocks-by-default), come segreti o dati sensibili che lasciano il repository, o una pull request che prende di mira un repository o organizzazione diversa. Per richiedere un checkpoint umano prima di questi comandi mentre rimani in modalità auto, aggiungi regole `permissions.ask`, che corrispondono al comando [come scritto](/docs/it/permissions#bash-rule-limits): vedi [Confini comuni](/docs/it/auto-mode-config#common-boundaries).

446 446 

447<h3 id="first-read-outside-the-working-directories">447<h3 id="first-read-outside-the-working-directories">

448 La prima lettura al di fuori delle directory di lavoro448 La prima lettura al di fuori delle directory di lavoro

449</h3>449</h3>

450 450 

451Mentre [`permissions.blockReadsOutsideWorkingDirectories`](/docs/it/settings-reference#permissions-blockreadsoutsideworkingdirectories) è disattivato, le letture di file vengono eseguite senza un prompt in modalità auto, incluse le letture al di fuori delle [directory di lavoro](/docs/it/permissions#working-directories). La prima volta che Claude utilizza lo strumento Read, Grep o Glob su un percorso al di fuori di esse, Claude Code vi chiede se continuare a consentire quelle letture.451Mentre [`permissions.blockReadsOutsideWorkingDirectories`](/docs/it/settings-reference#permissions-blockreadsoutsideworkingdirectories) è disattivato, le letture di file vengono eseguite senza un prompt in modalità auto, incluse le letture al di fuori delle [directory di lavoro](/docs/it/permissions#working-directories). La prima volta che Claude utilizza lo strumento Read, Grep o Glob su un percorso al di fuori di esse, Claude Code chiede se consentire quella lettura.

452 452 

453Il prompt non appare nelle esecuzioni `-p` non interattive o nelle sessioni in background; le letture lì vengono eseguite come prima.453Il prompt non appare nelle esecuzioni `-p` non interattive o nelle sessioni in background; le letture lì vengono eseguite come prima.

454 454 

455Qualunque sia la vostra risposta, Claude continua a lavorare:455Qualunque sia la tua risposta, Claude continua a lavorare:

456 456 

457* **Sì, e continua a consentire qualsiasi lettura al di fuori delle directory di lavoro**: la lettura viene eseguita, le letture successive al di fuori delle directory di lavoro vengono eseguite come prima, e Claude Code registra la vostra risposta in modo che il prompt non appaia di nuovo457* **Sì, e continua a consentire qualsiasi lettura al di fuori delle directory di lavoro**: la lettura viene eseguita, le letture successive al di fuori delle directory di lavoro vengono eseguite come prima, e Claude Code registra la tua risposta in modo che il prompt non appaia di nuovo

458* **No, e blocca le letture al di fuori delle directory di lavoro da ora in poi**: la lettura viene rifiutata, e Claude Code imposta [`permissions.blockReadsOutsideWorkingDirectories`](/docs/it/settings-reference#permissions-blockreadsoutsideworkingdirectories) su `true` nelle vostre impostazioni utente, il che fa sì che gli strumenti di file rifiutino tali letture in ogni sessione successiva e in ogni modalità di autorizzazione. Per consentire a Claude di leggere tale percorso in seguito, aggiungete la sua directory con `/add-dir` o rimuovete l'impostazione.458* **No, e blocca le letture al di fuori delle directory di lavoro da ora in poi**: la lettura viene rifiutata, e Claude Code imposta [`permissions.blockReadsOutsideWorkingDirectories`](/docs/it/settings-reference#permissions-blockreadsoutsideworkingdirectories) su `true` nelle tue impostazioni utente, il che fa sì che gli strumenti di file rifiutino tali letture in ogni sessione successiva e in ogni modalità di autorizzazione. Per consentire a Claude di leggere tale percorso in seguito, aggiungi la sua directory con `/add-dir` o rimuovi l'impostazione.

459* **No, e chiedi di nuovo la prossima volta**: la lettura viene rifiutata, e la prossima lettura al di fuori delle directory di lavoro chiede di nuovo459* **No, e chiedi di nuovo la prossima volta**: la lettura viene rifiutata, e la prossima lettura al di fuori delle directory di lavoro chiede di nuovo

460* **Sì, ma chiedi di nuovo la prossima volta**: la lettura viene eseguita, nulla viene salvato, e la prossima lettura al di fuori delle directory di lavoro chiede di nuovo460* **Sì, ma chiedi di nuovo la prossima volta**: la lettura viene eseguita, nulla viene salvato, e la prossima lettura al di fuori delle directory di lavoro chiede di nuovo

461 461 

462<h3 id="boundaries-you-state-in-conversation">462<h3 id="boundaries-you-state-in-conversation">

463 Confini che dichiarate nella conversazione463 Confini che dichiari nella conversazione

464</h3>464</h3>

465 465 

466Il classificatore tratta i confini che dichiarate nella conversazione come un segnale di blocco. Se dite a Claude "non fare push" o "aspetta finché non rivedo prima di fare il deploy", il classificatore blocca le azioni corrispondenti anche quando le regole predefinite le consentirebbero. Un confine rimane in vigore fino a quando non lo sollevate in un messaggio successivo. Il giudizio proprio di Claude che una condizione è stata soddisfatta non lo solleva.466Il classificatore tratta i confini che dichiari nella conversazione come un segnale di blocco. Se dici a Claude "non fare push" o "aspetta fino a quando non rivedo prima di distribuire", il classificatore blocca le azioni corrispondenti anche quando le regole predefinite le consentirebbero. Un confine rimane in vigore fino a quando non lo sollevi in un messaggio successivo. Il giudizio di Claude che una condizione è stata soddisfatta non lo solleva.

467 467 

468I confini non vengono archiviati come regole. Il classificatore li rilegge dalla trascrizione su ogni controllo, quindi un confine può andare perso se la [compattazione del contesto](/docs/it/costs#reduce-token-usage) rimuove il messaggio che lo ha dichiarato. Per una garanzia dura, aggiungete invece una [regola di negazione](/docs/it/permissions#permission-rule-syntax).468I confini non vengono archiviati come regole. Il classificatore li rilegge dalla trascrizione ad ogni controllo, quindi un confine può andare perso se la [compattazione del contesto](/docs/it/costs#reduce-token-usage) rimuove il messaggio che lo ha dichiarato. Per una garanzia dura, aggiungi una [regola deny](/docs/it/permissions#permission-rule-syntax) invece.

469 469 

470<h3 id="approvals-you-state-in-conversation">470<h3 id="approvals-you-state-in-conversation">

471 Approvazioni che dichiarate nella conversazione471 Approvazioni che dichiari nella conversazione

472</h3>472</h3>

473 473 

474Se dite a Claude che un'azione bloccata è consentita, il classificatore legge questo come la vostra approvazione e può cancellare il blocco. Il modo in cui l'avete formulato decide se l'azione viene eseguita e quanto lontano arriva l'approvazione:474Se dici a Claude che un'azione bloccata è consentita, il classificatore legge questo come la tua approvazione e può cancellare il blocco. Come l'hai formulato decide se l'azione viene eseguita e quanto lontano l'approvazione raggiunge:

475 475 

476* **Nominate l'azione e i suoi dettagli**: il vostro messaggio deve nominare l'azione e la cosa specifica che la rende pericolosa, come il ramo di un force push. Nominare solo il verbo non cancella nulla, quindi "potete fare force-push" lascia il blocco in vigore.476* **Nomina l'azione e le sue specifiche**: il tuo messaggio deve nominare l'azione e la cosa specifica che la rende pericolosa, come il ramo di un force push. Nominare solo il verbo non cancella nulla, quindi "puoi fare force-push" lascia il blocco in vigore.

477* **Aspettatevi che copra un'azione**: un'approvazione copre l'azione distruttiva che avete nominato, quindi un'azione successiva viene bloccata di nuovo a meno che non abbiate concesso l'approvazione come permanente. Per smettere di approvare un modello di routine un'azione alla volta, aggiungetelo a [`autoMode.allow`](/docs/it/auto-mode-config#override-the-block-and-allow-rules).477* **Aspettati che copra un'azione**: un'approvazione copre l'azione distruttiva che hai nominato, quindi un'azione successiva viene bloccata di nuovo a meno che tu non abbia concesso l'approvazione come permanente. Per smettere di approvare un modello di routine un'azione alla volta, aggiungilo a [`autoMode.allow`](/docs/it/auto-mode-config#override-the-block-and-allow-rules).

478* **Alcuni blocchi rimangono in vigore**: l'[ordine di precedenza del classificatore](/docs/it/auto-mode-config#override-the-block-and-allow-rules) stabilisce quali blocchi la vostra approvazione può raggiungere. Per eseguire un passaggio che non cancellerà, [lasciate la modalità auto](#switch-permission-modes) e rispondete al prompt di autorizzazione.478* **Alcuni blocchi rimangono in vigore**: [l'ordine di precedenza del classificatore](/docs/it/auto-mode-config#override-the-block-and-allow-rules) stabilisce quali blocchi la tua approvazione può raggiungere. Per eseguire un passaggio che non cancellerà, [lascia la modalità auto](#switch-permission-modes) e rispondi al prompt di autorizzazione.

479 479 

480<h3 id="when-auto-mode-falls-back">480<h3 id="when-auto-mode-falls-back">

481 Quando la modalità auto ricade481 Quando la modalità auto ricade

482</h3>482</h3>

483 483 

484Quando la modalità auto non può approvare le azioni della vostra sessione, cosa accade dipende dal caso:484Quando la modalità auto non può approvare le azioni della tua sessione, cosa succede dipende dal caso:

485 485 

486* **Un'azione bloccata**: Claude Code mostra una notifica ed elenca l'azione in `/permissions` nella scheda **Recently denied**, dove potete premere `r` per ritentarla con un'approvazione manuale.486* **Un'azione bloccata**: Claude Code mostra una notifica ed elenca l'azione in `/permissions` sotto la scheda **Recently denied**, dove puoi premere `r` per ritentarla con un'approvazione manuale.

487* **Blocchi ripetuti**: se il classificatore blocca un'azione 3 volte di seguito o 20 volte in totale, la modalità auto si mette in pausa e Claude Code riprende a chiedere. Approvare l'azione richiesta riprende la modalità auto. Consultate [Soglie di blocco ripetuto](#repeated-block-thresholds) per come i blocchi vengono contati.487* **Blocchi ripetuti**: se il classificatore blocca un'azione 3 volte di seguito o 20 volte in totale, la modalità auto si mette in pausa e Claude Code riprende a chiedere. Approvare l'azione richiesta riprende la modalità auto. Vedi [Soglie di blocco ripetuto](#repeated-block-thresholds) per come i blocchi vengono contati.

488* **Nessun verdetto dal classificatore**: quando un controllo di sicurezza separato dalla modalità auto rifiuta la richiesta propria del classificatore, o la risposta del classificatore non viene analizzata, Claude Code nega l'azione senza la notifica o la voce **Recently denied**. Consultate [Auto mode cannot determine the safety of an action](/docs/it/errors#auto-mode-cannot-determine-the-safety-of-an-action) per il messaggio che ogni caso mostra e cosa fare.488* **Nessun verdetto dal classificatore**: quando un controllo di sicurezza separato dalla modalità auto rifiuta la richiesta del classificatore stesso, o la risposta del classificatore non viene analizzata, Claude Code nega l'azione senza la notifica o la voce **Recently denied**. Vedi [Auto mode cannot determine the safety of an action](/docs/it/errors#auto-mode-cannot-determine-the-safety-of-an-action) per il messaggio che ogni caso mostra e cosa fare.

489* **Nessun verdetto dal server**: sotto [revisione del classificatore lato server](#server-side-classifier-review), Claude Code nega un'azione per la quale il server non fornisce un verdetto e ferma il turno dopo dieci risposte di seguito senza verdetto. Consultate [Il server non ha restituito un verdetto di sicurezza](/docs/it/errors#the-server-returned-no-safety-verdict).489* **Nessun verdetto dal server**: sotto [revisione del classificatore lato server](#server-side-classifier-review), Claude Code nega un'azione per cui il server non dà un verdetto, e ferma il turno dopo dieci risposte di seguito senza verdetto. Vedi [Il server non ha restituito un verdetto di sicurezza](/docs/it/errors#the-server-returned-no-safety-verdict).

490* **Un cambio di modalità durante un controllo**: se cambiate modalità di autorizzazione mentre un controllo del classificatore è in sospeso, Claude Code scarta un verdetto che la nuova modalità non avrebbe richiesto. Vi viene chiesto l'approvazione, o l'azione viene negata automaticamente in [modalità `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).490* **Un cambio di modalità durante un controllo**: se cambi modalità di autorizzazione mentre un controllo del classificatore è in sospeso, Claude Code scarta un verdetto che la nuova modalità non avrebbe richiesto. Ti viene chiesto un'approvazione invece, o l'azione viene auto-negata in modalità [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).

491 491 

492<h4 id="repeated-block-thresholds">492<h4 id="repeated-block-thresholds">

493 Soglie di blocco ripetuto493 Soglie di blocco ripetuto

494</h4>494</h4>

495 495 

496Le soglie di 3 blocchi di seguito e 20 blocchi totali non sono configurabili. Il contatore totale persiste per la sessione e si ripristina solo quando il suo limite attiva un fallback. Claude Code non conta una negazione verso nessuna soglia quando un controllo di sicurezza separato dalla modalità auto rifiuta la richiesta del classificatore.496Le soglie di 3 blocchi di seguito e 20 blocchi totali non sono configurabili. Il contatore totale persiste per la sessione e si ripristina solo quando il suo limite attiva un fallback. Claude Code non conta una negazione verso nessuna delle due soglie quando un controllo di sicurezza separato dalla modalità auto rifiuta la richiesta del classificatore stesso.

497 497 

498Un'esecuzione `-p` [non interattiva](/docs/it/headless) senza un [`--permission-prompt-tool`](/docs/it/cli-reference#cli-flags) non ha un prompt a cui ricadere. Quando i blocchi ripetuti raggiungono una soglia, l'azione non viene eseguita e Claude continua a lavorare. Claude Code non ferma l'esecuzione.498Un'esecuzione `-p` [non interattiva](/docs/it/headless) senza un [`--permission-prompt-tool`](/docs/it/cli-reference#cli-flags) non ha un prompt su cui ricadere. Quando i blocchi ripetuti raggiungono una soglia, l'azione non viene eseguita e Claude continua a lavorare. Claude Code non ferma l'esecuzione.

499 499 

500I blocchi ripetuti di solito significano che il classificatore manca di contesto sulla vostra infrastruttura. Utilizzate `/feedback` per segnalare falsi positivi, o fate in modo che un amministratore [configuri l'infrastruttura attendibile](/docs/it/auto-mode-config).500I blocchi ripetuti di solito significano che il classificatore manca il contesto sulla tua infrastruttura. Usa `/feedback` per segnalare falsi positivi, o fai in modo che un amministratore [configuri l'infrastruttura attendibile](/docs/it/auto-mode-config).

501 501 

502<h3 id="how-auto-mode-evaluates-actions">502<h3 id="how-auto-mode-evaluates-actions">

503 Come il classificatore valuta le azioni503 Come la modalità auto valuta le azioni

504</h3>504</h3>

505 505 

506Le sezioni seguenti coprono l'ordine in cui Claude Code valuta un'azione, come il classificatore esamina il lavoro dei subagenti e cosa le chiamate del classificatore aggiungono in costo e latenza.506Le sezioni seguenti coprono l'ordine in cui Claude Code valuta un'azione, come il classificatore esamina il lavoro dei subagenti, e cosa le chiamate del classificatore aggiungono in costo e latenza.

507 507 

508<span id="how-the-classifier-evaluates-actions" />508<span id="how-the-classifier-evaluates-actions" />

509 509 


511 <Accordion title="Come il classificatore valuta le azioni">511 <Accordion title="Come il classificatore valuta le azioni">

512 Ogni azione passa attraverso un ordine decisionale fisso. Il primo passaggio corrispondente vince:512 Ogni azione passa attraverso un ordine decisionale fisso. Il primo passaggio corrispondente vince:

513 513 

514 1. Le azioni che corrispondono alle vostre [regole di consentimento, richiesta o negazione](/docs/it/permissions#manage-permissions) si risolvono immediatamente, con queste eccezioni:514 1. Le azioni che corrispondono alle tue [regole allow, ask o deny](/docs/it/permissions#manage-permissions) si risolvono immediatamente, con queste eccezioni:

515 * Le scritture su [percorsi protetti](#protected-paths) vengono instradate al classificatore anche quando una regola di consentimento corrisponde515 * Le scritture su [percorsi protetti](#protected-paths) vengono instradate al classificatore anche quando una regola allow corrisponde

516 * Nessuna regola di consentimento approva le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](#critical-paths)516 * Nessuna regola allow approva le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](#critical-paths)

517 * Gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) vi chiedono direttamente anche quando una regola di consentimento corrisponde, e così anche gli strumenti connettore [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quella impostazione raggiunge Claude Code517 * Gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) ti chiedono direttamente anche quando una regola allow corrisponde, e così fanno gli strumenti connector [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui quella impostazione raggiunge Claude Code

518 * Un comando di shell che contiene [domini consentiti per comando](/docs/it/sandboxing#per-command-allowed-domains-in-auto-mode) viene anche instradato al classificatore anche quando una regola di consentimento corrisponde, perché una regola approva il comando, non i suoi host518 * Un comando shell che porta [domini consentiti per comando](/docs/it/sandboxing#per-command-allowed-domains-in-auto-mode) viene anche instradato al classificatore anche quando una regola allow corrisponde, perché una regola approva il comando, non i suoi host

519 * Le regole di richiesta che corrispondono al contenuto di un comando, come `Bash(git push *)`, ricadono a un prompt di autorizzazione519 * Le regole ask che corrispondono al contenuto di un comando, come `Bash(git push *)`, ricadono a un prompt di autorizzazione

520 * Una scrittura che il [controllo symlink](/docs/it/permissions#symlinks) risolve a un percorso protetto vi chiede quando il percorso che Claude ha richiesto non è esso stesso protetto520 * Una scrittura che il [controllo symlink](/docs/it/permissions#symlinks) risolve a un percorso protetto ti chiede quando il percorso che Claude ha richiesto non è esso stesso protetto

521 2. Le azioni di sola lettura e le modifiche di file nella vostra directory di lavoro vengono approvate automaticamente, eccetto le scritture su [percorsi protetti](#protected-paths) e [la prima lettura al di fuori delle directory di lavoro](#first-read-outside-the-working-directories), che vi chiede521 2. Le azioni di sola lettura e le modifiche di file nella tua directory di lavoro vengono auto-approvate, tranne le scritture su [percorsi protetti](#protected-paths) e [la prima lettura al di fuori delle directory di lavoro](#first-read-outside-the-working-directories), che ti chiede

522 * In una sessione con [revisione del classificatore lato server](#server-side-classifier-review), le azioni di sola lettura e i comandi di shell [in sandbox](/docs/it/sandboxing#sandbox-modes) attendono quella revisione e vengono bloccati se la contrassegna522 * In una sessione con [revisione del classificatore lato server](#server-side-classifier-review), le azioni di sola lettura e i comandi shell [in sandbox](/docs/it/sandboxing#sandbox-modes) aspettano quella revisione e vengono bloccati se la contrassegna

523 * Una scrittura dentro la vostra directory di lavoro che il [controllo symlink](/docs/it/permissions#symlinks) risolve a una posizione al di fuori di essa vi chiede523 * Una scrittura dentro la tua directory di lavoro che il [controllo symlink](/docs/it/permissions#symlinks) risolve a una posizione al di fuori di essa ti chiede

524 3. Tutto il resto va al classificatore, a parte le [rimozioni di percorsi critici](#critical-paths) sotto il loro trattamento predefinito. Gli strumenti connettore e gli strumenti MCP `requiresUserInteraction` che vi chiedono direttamente nel passaggio 1 non raggiungono mai il classificatore, quindi né un'approvazione richiesta dall'organizzazione né un passaggio di consenso viene approvato automaticamente524 3. Tutto il resto va al classificatore, a parte le [rimozioni di percorsi critici](#critical-paths) sotto il loro trattamento predefinito. Gli strumenti connector e gli strumenti MCP `requiresUserInteraction` che ti chiedono direttamente nel passaggio 1 non raggiungono mai il classificatore neanche, quindi né un'approvazione richiesta dall'organizzazione né un passaggio di consenso viene auto-approvato

525 4. Se il classificatore blocca, Claude riceve il motivo. Nella maggior parte delle sessioni il motivo nomina la regola che il classificatore ha abbinato, come `[Data Exfiltration]`, piuttosto che dare una spiegazione scritta; consultate [Rivedi negazioni](/docs/it/auto-mode-config#review-denials)525 4. Se il classificatore blocca, Claude riceve il motivo. Nella maggior parte delle sessioni il motivo nomina la regola che il classificatore ha abbinato, come `[Data Exfiltration]`, piuttosto che dare una spiegazione scritta; vedi [Rivedi le negazioni](/docs/it/auto-mode-config#review-denials)

526 526 

527 Entrando in modalità auto, le regole di consentimento ampie che concedono l'esecuzione arbitraria di codice vengono eliminate:527 Un [mod](/docs/it/plugins/mods/overview) che installi e che aggancia `tool.check` può approvare un'azione prima del passaggio 3, e il classificatore non controlla un'azione che il mod approva. Vedi [Estendi le autorizzazioni con hook](/docs/it/permissions#extend-permissions-with-hooks).

528 528 

529 * Blanket `Bash(*)` o `PowerShell(*)`529 Entrando in modalità auto, le regole allow ampie che concedono l'esecuzione arbitraria di codice vengono eliminate:

530 

531 * `Bash(*)` o `PowerShell(*)` generici

530 * Interpreti con wildcard come `Bash(python*)`532 * Interpreti con wildcard come `Bash(python*)`

531 * Comandi di esecuzione del gestore di pacchetti533 * Comandi di esecuzione del gestore di pacchetti

532 * Regole di consentimento `Agent`534 * Regole `Agent` allow

533 * Regole di consentimento [`Monitor`](/docs/it/tools-reference#monitor-tool), perché Claude Code esegue i comandi Monitor attraverso la shell535 * Regole allow [`Monitor`](/docs/it/tools-reference#monitor-tool), perché Claude Code esegue i comandi Monitor attraverso la shell

534 536 

535 Le regole strette come `Bash(npm test)` rimangono in vigore. Claude Code ripristina le regole eliminate quando lasciate la modalità auto. Prima della v2.1.236, Claude Code lasciava le regole di consentimento `Monitor` in vigore in modalità auto, quindi una regola che corrispondeva all'intero strumento approvava i comandi Monitor senza revisione del classificatore.537 Le regole strette come `Bash(npm test)` rimangono in vigore. Claude Code ripristina le regole eliminate quando esci dalla modalità auto. Prima della v2.1.236, Claude Code lasciava le regole allow `Monitor` in vigore in modalità auto, quindi una regola che corrispondeva all'intero strumento approvava i comandi Monitor senza revisione del classificatore.

536 538 

537 Claude Code esegue anche `git status` stesso prima di un comando che scarterebbero il lavoro non sottoposto a commit, come `git reset --hard` o `rm -rf`, e mostra al classificatore se il lavoro in staging, modificato o non tracciato è presente. Claude Code segnala i file non tracciati in quel controllo anche quando la configurazione git del repository imposta `status.showUntrackedFiles=no`.539 Claude Code esegue anche `git status` stesso prima di un comando che scarterebbero il lavoro non sottoposto a commit, come `git reset --hard` o `rm -rf`, e mostra al classificatore se il lavoro in staging, modificato o non tracciato è presente. Claude Code segnala i file non tracciati in quel controllo anche quando la configurazione git del repository imposta `status.showUntrackedFiles=no`.

538 540 

539 Nelle richieste del classificatore inviate da Claude Code stesso, il classificatore vede i messaggi utente, le chiamate di strumento diverse dalle ricerche di sola lettura come letture di file e ricerche, e il vostro contenuto CLAUDE.md. I risultati degli strumenti vengono rimossi da quelle richieste, quindi il contenuto ostile in un file o pagina web non può manipolare il classificatore direttamente.541 Nelle richieste del classificatore inviate da Claude Code stesso, il classificatore vede i messaggi dell'utente, le chiamate di strumenti diverse dalle ricerche di sola lettura come letture di file e ricerche, e il tuo contenuto CLAUDE.md. I risultati degli strumenti vengono rimossi da quelle richieste, quindi il contenuto ostile in un file o pagina web non può manipolare il classificatore direttamente.

540 542 

541 Potete annotare il risultato di una chiamata con il campo `classifierContext` di un hook [PostToolUse](/docs/it/hooks#annotate-a-result-for-the-auto-mode-classifier), che il classificatore legge come contesto fornito dall'applicazione. Il campo richiede Claude Code v2.1.236 o successivo.543 Puoi annotare il risultato di una chiamata con il campo [`classifierContext`](/docs/it/hooks#annotate-a-result-for-the-auto-mode-classifier) di un hook PostToolUse, che il classificatore legge come contesto fornito dall'applicazione. Il campo richiede Claude Code v2.1.236 o successivo.

542 544 

543 Una sonda lato server separata scansiona i risultati degli strumenti in arrivo e contrassegna il contenuto sospetto prima che Claude lo legga. Per ulteriori informazioni su come questi livelli lavorano insieme, consultate l'[annuncio della modalità auto](https://claude.com/blog/auto-mode) e l'[approfondimento tecnico](https://www.anthropic.com/engineering/claude-code-auto-mode).545 Una sonda lato server separata scansiona i risultati degli strumenti in arrivo e contrassegna il contenuto sospetto prima che Claude lo legga. Per ulteriori informazioni su come questi livelli funzionano insieme, vedi l'[annuncio della modalità auto](https://claude.com/blog/auto-mode) e il [deep dive di ingegneria](https://www.anthropic.com/engineering/claude-code-auto-mode).

544 </Accordion>546 </Accordion>

545 547 

546 <Accordion title="Come la modalità auto gestisce i subagenti">548 <Accordion title="Come la modalità auto gestisce i subagenti">

547 Il classificatore controlla il lavoro dei [subagenti](/docs/it/sub-agents) in tre punti:549 Il classificatore controlla il lavoro dei [subagenti](/docs/it/sub-agents) in tre punti:

548 550 

549 1. Prima che un subagente inizi, la descrizione del compito delegato viene valutata, quindi un compito che sembra pericoloso viene bloccato al momento dello spawn.551 1. Prima che un subagente inizi, la descrizione del compito delegato viene valutata, quindi un compito che sembra pericoloso viene bloccato al momento dello spawn.

550 2. Mentre il subagente viene eseguito, ognuna delle sue azioni passa attraverso lo stesso [ordine decisionale](#how-the-classifier-evaluates-actions) come nella sessione padre, con le stesse regole di blocco e consentimento. Qualsiasi `permissionMode` nel frontmatter del subagente viene ignorato.552 2. Mentre il subagente viene eseguito, ognuna delle sue azioni passa attraverso lo stesso [ordine decisionale](#how-the-classifier-evaluates-actions) come nella sessione padre, con le stesse regole di blocco e allow. Qualsiasi `permissionMode` nel frontmatter del subagente viene ignorato.

551 3. Quando il subagente finisce, il classificatore esamina il suo lavoro e il suo rapporto finale prima che il padre legga il rapporto. Quando il classificatore contrassegna il lavoro o il rapporto del subagente, o un controllo di sicurezza API separato rifiuta la revisione, il rapporto viene comunque consegnato, preceduto da un avviso di sicurezza. Quando il classificatore non è disponibile per la revisione, il rapporto arriva con una nota per verificare il lavoro del subagente prima di agire su di esso.553 3. Quando il subagente finisce, il classificatore esamina il suo lavoro e il suo rapporto finale prima che il padre legga il rapporto. Quando il classificatore contrassegna il lavoro o il rapporto del subagente, o un controllo di sicurezza API separato rifiuta la revisione, il rapporto viene comunque consegnato, preceduto da un avviso di sicurezza. Quando il classificatore non è disponibile per la revisione, il rapporto arriva con una nota per verificare il lavoro del subagente prima di agire su di esso.

552 </Accordion>554 </Accordion>

553 555 

554 <Accordion title="Costo e latenza">556 <Accordion title="Costo e latenza">

555 Il classificatore viene eseguito su Claude Sonnet 5 per impostazione predefinita piuttosto che sulla vostra selezione `/model`. Un modello classificatore che Anthropic configura lato server ha la precedenza su quel default. Quando il modello della vostra sessione è Claude Sonnet 4.6, o quando [`availableModels`](/docs/it/model-config#restrict-model-selection) esclude Sonnet 5, il classificatore viene eseguito sul modello della sessione, o su un modello Opus quando la sessione viene eseguita su un [modello Fable](/docs/it/model-config#work-with-fable); su provider diversi dall'API Anthropic, quel fallback Opus è il modello Opus predefinito del provider.557 Il classificatore viene eseguito su Claude Sonnet 5 per impostazione predefinita piuttosto che sulla tua selezione `/model`. Un modello classificatore che Anthropic configura lato server ha la precedenza su quel default. Quando il modello della tua sessione è Claude Sonnet 4.6, o quando [`availableModels`](/docs/it/model-config#restrict-model-selection) esclude Sonnet 5, il classificatore viene eseguito sul modello della sessione invece, o su un modello Opus quando la sessione viene eseguita su un [modello Fable](/docs/it/model-config#work-with-fable); su provider diversi dall'API Anthropic, quel fallback Opus è il modello Opus predefinito del provider.

556 558 

557 La prima richiesta in modalità auto della sessione convalida il default Sonnet 5: se la richiesta ha successo, Sonnet 5 rimane il modello classificatore della sessione, e se fallisce perché il modello non è disponibile, la sessione utilizza il fallback. Dopo che quella convalida si stabilizza, il modello del classificatore non cambia per la sessione.559 La prima richiesta in modalità auto della sessione convalida il default Sonnet 5: se la richiesta ha successo, Sonnet 5 rimane il modello classificatore della sessione, e se fallisce perché il modello non è disponibile, la sessione usa il fallback invece.

558 560 

559 Su piani Enterprise e su account che utilizzano l'API Claude, [Claude Platform su AWS](/docs/it/claude-platform-on-aws), Amazon Bedrock, Agent Platform di Google Cloud o Microsoft Foundry, le chiamate del classificatore contano verso il vostro utilizzo di token. Ogni controllo invia una porzione della trascrizione più l'azione in sospeso, aggiungendo un round-trip prima dell'esecuzione. Le letture e le modifiche della directory di lavoro al di fuori dei percorsi protetti saltano il classificatore, quindi l'overhead proviene principalmente dai comandi di shell e dalle operazioni di rete. Dove il server esamina le azioni come parte delle richieste del modello della sessione, non ci sono richieste del classificatore separate da contare; consultate [Revisione del classificatore lato server](#server-side-classifier-review).561 Su piani Enterprise e su account che utilizzano l'API Claude, [Claude Platform su AWS](/docs/it/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry, le chiamate del classificatore contano verso il tuo utilizzo di token. Ogni controllo invia una porzione della trascrizione più l'azione in sospeso, aggiungendo un round-trip prima dell'esecuzione. Le letture e le modifiche della directory di lavoro al di fuori dei percorsi protetti saltano il classificatore, quindi l'overhead proviene principalmente dai comandi shell e dalle operazioni di rete. Dove il server esamina le azioni come parte delle richieste del modello della sessione, non ci sono richieste del classificatore separate da contare; vedi [Revisione del classificatore lato server](#server-side-classifier-review).

560 562 

561 L'accesso di rete in sandbox non aggiunge richieste del classificatore per connessione. Il classificatore giudica [gli host che un comando nomina](/docs/it/sandboxing#per-command-allowed-domains-in-auto-mode) insieme al comando in una revisione, e Claude Code controlla ogni connessione rispetto all'elenco approvato senza chiamare il classificatore di nuovo.563 L'accesso alla rete in sandbox non aggiunge richieste del classificatore per connessione. Il classificatore giudica [gli host che un comando nomina](/docs/it/sandboxing#per-command-allowed-domains-in-auto-mode) insieme al comando in una revisione, e Claude Code controlla ogni connessione rispetto all'elenco approvato senza chiamare il classificatore di nuovo.

562 </Accordion>564 </Accordion>

563</AccordionGroup>565</AccordionGroup>

564 566 


667* `.yarn`669* `.yarn`

668* `.mvn`670* `.mvn`

669* `.claude`, ad eccezione di `.claude/worktrees` dove Claude memorizza i propri git worktrees671* `.claude`, ad eccezione di `.claude/worktrees` dove Claude memorizza i propri git worktrees

672* Una directory caricata con [`--plugin-dir`](/docs/it/plugins/mods/create#change-a-mod-with-claude), perché Claude Code ricarica ed esegue il codice di un mod da essa quando un file cambia

670 673 

671File protetti:674File protetti:

672 675 

permissions.md +14 −3

Details

600 600 

601Gli [hook di Claude Code](/docs/it/hooks-guide) consentono di registrare comandi shell personalizzati che valutano le autorizzazioni in fase di esecuzione. Quando Claude Code effettua una chiamata di strumento, gli hook PreToolUse vengono eseguiti prima del prompt di autorizzazione, per ogni strumento tranne [`EndConversation`](/docs/it/tools-reference#endconversation-tool-behavior). L'output dell'hook può negare la chiamata dello strumento, forzare un prompt o saltare il prompt per consentire alla chiamata di procedere.601Gli [hook di Claude Code](/docs/it/hooks-guide) consentono di registrare comandi shell personalizzati che valutano le autorizzazioni in fase di esecuzione. Quando Claude Code effettua una chiamata di strumento, gli hook PreToolUse vengono eseguiti prima del prompt di autorizzazione, per ogni strumento tranne [`EndConversation`](/docs/it/tools-reference#endconversation-tool-behavior). L'output dell'hook può negare la chiamata dello strumento, forzare un prompt o saltare il prompt per consentire alla chiamata di procedere.

602 602 

603Le decisioni dell'hook non bypassano le regole di autorizzazione. Claude Code valuta le regole deny e ask indipendentemente da ciò che un hook PreToolUse restituisce: una regola deny corrispondente blocca la chiamata e una regola ask corrispondente richiede comunque un prompt anche quando l'hook ha restituito `"allow"` o `"ask"`. Questo preserva la precedenza deny-first descritta in [Gestire le autorizzazioni](#manage-permissions), incluse le regole deny impostate nelle impostazioni gestite.603Le decisioni dell'hook PreToolUse non bypassano le regole di autorizzazione. Claude Code valuta le regole deny e ask indipendentemente da ciò che un hook PreToolUse restituisce: una regola deny corrispondente blocca la chiamata e una regola ask corrispondente richiede comunque un prompt anche quando l'hook ha restituito `"allow"` o `"ask"`. Questo preserva la precedenza deny-first descritta in [Gestire le autorizzazioni](#manage-permissions), incluse le regole deny impostate nelle impostazioni gestite.

604 

605Questa precedenza copre gli hook nei file di impostazioni e nel file `hooks/hooks.json` di un plugin. Un [mod](/docs/it/plugins/mods/overview) che installate e che aggancia `tool.check` risponde dopo che le regole e gli hook PreToolUse hanno deciso, e la sua risposta può sostituire la loro:

606 

607* **Regole Ask**: il mod può approvare una chiamata per cui una regola ask richiederebbe un prompt

608* **Un blocco da un hook `PreToolUse`**: il mod può approvare la chiamata, a meno che l'hook non sia nelle impostazioni gestite

609* **Il classificatore della modalità automatica**: in [modalità automatica](/docs/it/permission-modes#eliminate-prompts-with-auto-mode), una chiamata che il mod approva viene eseguita senza un controllo del classificatore

610* **Regole Deny**: su una macchina con impostazioni gestite, o quando siete connessi con un piano Team o Enterprise, le regole deny hanno la precedenza sul mod per impostazione predefinita, e la vostra organizzazione può modificare questo comportamento. Ovunque altro, il mod può approvare una chiamata che una regola deny rifiuta.

611 

612Vedi [Decidere se fidarsi di un mod](/docs/it/plugins/mods/overview#decide-whether-to-trust-a-mod), o [Gestire i mod per la vostra organizzazione](/docs/it/plugins/mods/admin#know-what-happens-by-default) se distribuite impostazioni gestite.

604 613 

605Gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) richiedono comunque un prompt quando un hook restituisce `"allow"`, così come gli strumenti connector [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui questa impostazione raggiunge Claude Code.614Gli strumenti MCP contrassegnati [`requiresUserInteraction`](/docs/it/mcp#require-approval-for-a-specific-tool) richiedono comunque un prompt quando un hook restituisce `"allow"`, così come gli strumenti connector [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) nelle sessioni in cui questa impostazione raggiunge Claude Code.

606 615 


718 727 

719Lo stesso vale tra gli ambiti delle impostazioni: se le impostazioni utente consentono un'autorizzazione e le impostazioni di progetto la negano, la regola di negazione la blocca. Il contrario è vero anche: un deny a livello utente blocca un allow a livello di progetto, perché le regole di negazione da qualsiasi ambito vengono valutate prima delle regole di consentimento.728Lo stesso vale tra gli ambiti delle impostazioni: se le impostazioni utente consentono un'autorizzazione e le impostazioni di progetto la negano, la regola di negazione la blocca. Il contrario è vero anche: un deny a livello utente blocca un allow a livello di progetto, perché le regole di negazione da qualsiasi ambito vengono valutate prima delle regole di consentimento.

720 729 

730Questa precedenza è tra i file di impostazioni e gli argomenti della riga di comando. Per quanto riguarda se una regola di negazione vale su un [mod](/docs/it/plugins/mods/overview) che installi, vedi [Estendi le autorizzazioni con hooks](#extend-permissions-with-hooks).

731 

721Gli host di embedding possono fornire ulteriori criteri gestiti tramite l'opzione SDK `managedSettings`, incluse le regole di consentimento delle autorizzazioni a meno che l'amministratore non imposti i blocchi `allowManaged*Only`; [Deliver policy to Claude Desktop sessions](/docs/it/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) illustra quando la politica dell'embedder si applica.732Gli host di embedding possono fornire ulteriori criteri gestiti tramite l'opzione SDK `managedSettings`, incluse le regole di consentimento delle autorizzazioni a meno che l'amministratore non imposti i blocchi `allowManaged*Only`; [Deliver policy to Claude Desktop sessions](/docs/it/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) illustra quando la politica dell'embedder si applica.

722 733 

723<h2 id="project-allow-rules-and-workspace-trust">734<h2 id="project-allow-rules-and-workspace-trust">


764| [Hooks](/docs/it/hooks) nei file di impostazioni, il blocco [`env`](/docs/it/settings-reference#env) e comandi helper come [`apiKeyHelper`](/docs/it/settings-reference#apikeyhelper), e gli [hooks](/docs/it/hooks#hooks-in-skills-and-agents) di una skill del progetto e [`allowed-tools`](/docs/it/skills#pre-approve-tools-for-a-skill) | Utilizzati | Utilizzati. Il trust dell'area di lavoro non blocca mai `allowed-tools` di una skill in nessuna sessione |775| [Hooks](/docs/it/hooks) nei file di impostazioni, il blocco [`env`](/docs/it/settings-reference#env) e comandi helper come [`apiKeyHelper`](/docs/it/settings-reference#apikeyhelper), e gli [hooks](/docs/it/hooks#hooks-in-skills-and-agents) di una skill del progetto e [`allowed-tools`](/docs/it/skills#pre-approve-tools-for-a-skill) | Utilizzati | Utilizzati. Il trust dell'area di lavoro non blocca mai `allowed-tools` di una skill in nessuna sessione |

765| Regole `permissions.allow` e `additionalDirectories` in `.claude/settings.json` | Non utilizzate fino a quando non accettate la finestra di dialogo di trust, che appare di nuovo elencandole | Non utilizzate. Claude Code stampa un avviso [`this workspace has not been trusted`](/docs/it/errors#workspace-has-not-been-trusted) su stderr |776| Regole `permissions.allow` e `additionalDirectories` in `.claude/settings.json` | Non utilizzate fino a quando non accettate la finestra di dialogo di trust, che appare di nuovo elencandole | Non utilizzate. Claude Code stampa un avviso [`this workspace has not been trusted`](/docs/it/errors#workspace-has-not-been-trusted) su stderr |

766| Hook nel frontmatter di un [subagent](/docs/it/sub-agents#hooks-in-subagent-frontmatter) del progetto, un plugin [`@skills-dir`](/docs/it/plugins/loading#plugins-shared-through-a-repository) del progetto, e voci [`extraKnownMarketplaces`](/docs/it/settings-reference#extraknownmarketplaces) dal repository o da una directory `--add-dir` | Non utilizzate, e nessuna finestra di dialogo è offerta | Non utilizzate |777| Hook nel frontmatter di un [subagent](/docs/it/sub-agents#hooks-in-subagent-frontmatter) del progetto, un plugin [`@skills-dir`](/docs/it/plugins/loading#plugins-shared-through-a-repository) del progetto, e voci [`extraKnownMarketplaces`](/docs/it/settings-reference#extraknownmarketplaces) dal repository o da una directory `--add-dir` | Non utilizzate, e nessuna finestra di dialogo è offerta | Non utilizzate |

767| [`mcpServers`](/docs/it/sub-agents#scope-mcp-servers-to-a-subagent) inline nel frontmatter di un subagent dal repository o da una directory `--add-dir`. Prima della v2.1.238, Claude Code caricava questi server in entrambe le situazioni | Non utilizzate, e nessuna finestra di dialogo è offerta | Non utilizzate |778| Inline [`mcpServers`](/docs/it/sub-agents#scope-mcp-servers-to-a-subagent) nel frontmatter di un subagent dal repository o da una directory `--add-dir` | Non utilizzate, e nessuna finestra di dialogo è offerta | Non utilizzate |

768| Server in `.mcp.json`, inclusi quelli che il repository [approva nelle sue stesse impostazioni](/docs/it/mcp#project-server-approvals-and-workspace-trust) | Claude Code vi chiede prima di connettersi ad essi. Le approvazioni del repository stesso non contano | Connessi senza chiedere, approvati o no. L'SDK li carica solo quando `settingSources` include impostazioni del progetto. `claude mcp list` nella stessa cartella riporta comunque tale server come in sospeso |779| Server in `.mcp.json`, inclusi quelli che il repository [approva nelle sue stesse impostazioni](/docs/it/mcp#project-server-approvals-and-workspace-trust) | Claude Code vi chiede prima di connettersi ad essi. Le approvazioni del repository stesso non contano | Connessi senza chiedere, approvati o no. L'SDK li carica solo quando `settingSources` include impostazioni del progetto. `claude mcp list` nella stessa cartella riporta comunque tale server come in sospeso |

769| Un [`headersHelper`](/docs/it/mcp#trust-a-folder-before-its-headershelper-runs) su un server in `.mcp.json`. Prima della v2.1.238, Claude Code eseguiva l'helper in entrambe le situazioni | Non eseguito fino a quando non accettate la finestra di dialogo di trust, che appare di nuovo nominando dove l'helper è dichiarato. Claude Code connette il server con i suoi soli `headers` statici fino ad allora | Non eseguito. Claude Code connette il server con i suoi soli `headers` statici e stampa una riga [`headersHelper not run`](/docs/it/errors#headershelper-not-run) per server su stderr |780| Un [`headersHelper`](/docs/it/mcp#trust-a-folder-before-its-headershelper-runs) su un server in `.mcp.json` | Non eseguito fino a quando non accettate la finestra di dialogo di trust, che appare di nuovo nominando dove l'helper è dichiarato. Claude Code connette il server con i suoi soli `headers` statici fino ad allora | Non eseguito. Claude Code connette il server con i suoi soli `headers` statici e stampa una riga [`headersHelper not run`](/docs/it/errors#headershelper-not-run) per server su stderr |

770 781 

771Per le righe che hanno bisogno di questa cartella esatta fidata, fidate la cartella manualmente: impostate `projects["<path>"].hasTrustDialogAccepted` a `true` in `~/.claude.json`, dove `<path>` è la radice del repository, o la cartella stessa al di fuori di un repository. Claude Code stampa la chiave esatta nella riga del log di debug per un hook subagent saltato o un server MCP inline, nell'avviso su stderr per regole di autorizzazione saltate, e nella riga `headersHelper not run` per un helper saltato.782Per le righe che hanno bisogno di questa cartella esatta fidata, fidate la cartella manualmente: impostate `projects["<path>"].hasTrustDialogAccepted` a `true` in `~/.claude.json`, dove `<path>` è la radice del repository, o la cartella stessa al di fuori di un repository. Claude Code stampa la chiave esatta nella riga del log di debug per un hook subagent saltato o un server MCP inline, nell'avviso su stderr per regole di autorizzazione saltate, e nella riga `headersHelper not run` per un helper saltato.

772 783 

Details

29Ogni sottocomando condivide questi codici di uscita, argomenti plugin e valori di ambito:29Ogni sottocomando condivide questi codici di uscita, argomenti plugin e valori di ambito:

30 30 

31* **Codici di uscita**: `0` in caso di successo e `1` in caso di errore. `validate` aggiunge l'uscita `2` per un errore inaspettato, e `eval` aggiunge i codici elencati nella [sua sezione](#plugin-eval).31* **Codici di uscita**: `0` in caso di successo e `1` in caso di errore. `validate` aggiunge l'uscita `2` per un errore inaspettato, e `eval` aggiunge i codici elencati nella [sua sezione](#plugin-eval).

32* **Argomenti plugin**: un argomento `<plugin>` è un plugin `name` o `name@marketplace`. Quando due marketplace offrono lo stesso nome, usa la forma qualificata.32* **Argomenti plugin**: un argomento `<plugin>` è un plugin `name` o `name@marketplace`. Quando due marketplace offrono lo stesso nome, usa la forma qualificata. `configure` accetta solo la forma qualificata.

33* **Ambiti**: `--scope` accetta `user`, `project` o `local`, e nomina il file di impostazioni in cui il comando scrive. `update` accetta anche `managed`.33* **Ambiti**: `--scope` accetta `user`, `project` o `local`, e nomina il file di impostazioni in cui il comando scrive. `update` accetta anche `managed`.

34 34 

35<h3 id="plugin-init">35<h3 id="plugin-init">


87| Flag | Descrizione |87| Flag | Descrizione |

88| :- | :- |88| :- | :- |

89| `-s, --scope <scope>` | Ambito di installazione: `user`, `project` o `local`. Predefinito a `user` |89| `-s, --scope <scope>` | Ambito di installazione: `user`, `project` o `local`. Predefinito a `user` |

90| `--config <key=value>` | Imposta un'opzione [`userConfig`](/docs/it/plugins/manifest-reference) che il manifest del plugin dichiara. Ripeti il flag per ogni opzione. Richiede Claude Code v2.1.147 o successivo |90| `--config <key=value>` | Imposta un'opzione [`userConfig`](/docs/it/plugins/manifest-reference) che il manifest del plugin dichiara. Ripeti il flag per ogni opzione. Richiede Claude Code v2.1.147 o successivo. Una chiave scritta `<server>.<key>` imposta un'impostazione che un [server MCP in bundle](/docs/it/plugins/components#include-a-packaged-mcpb-server) dichiara nel suo stesso `user_config`, per un file bundle spedito all'interno del plugin. La forma `<server>.<key>` richiede Claude Code v2.1.285 o successivo |

91| `-y, --yes` | Accetta il comando di installazione visualizzato senza il prompt `Run this command now?`. Ignorato quando il comando viene eseguito all'interno di una sessione Claude Code, ad esempio dallo strumento Bash o da un hook. Richiede Claude Code v2.1.229 o successivo |91| `-y, --yes` | Accetta il comando di installazione visualizzato senza il prompt `Run this command now?`. Ignorato quando il comando viene eseguito all'interno di una sessione Claude Code, ad esempio dallo strumento Bash o da un hook. Richiede Claude Code v2.1.229 o successivo |

92| `--accept-command <sha256>` | Accetta il comando di installazione visualizzato il cui `sha256` un'esecuzione precedente [`--json`](#plugin-json-result) ha riportato in `shownCommand`, al posto di `-y`. Non può essere combinato con `-y`. Vedi [Accetta un comando di installazione visualizzato](#accept-a-displayed-install-command). Richiede Claude Code v2.1.271 o successivo |92| `--accept-command <sha256>` | Accetta il comando di installazione visualizzato il cui `sha256` un'esecuzione precedente [`--json`](#plugin-json-result) ha riportato in `shownCommand`, al posto di `-y`. Non può essere combinato con `-y`. Vedi [Accetta un comando di installazione visualizzato](#accept-a-displayed-install-command). Richiede Claude Code v2.1.271 o successivo |

93| `--json` | Stampa il risultato come un oggetto JSON sull'ultima riga di stdout invece del messaggio leggibile, per l'uso negli script. Vedi [Formato risultato JSON](#plugin-json-result). Richiede Claude Code v2.1.268 o successivo |93| `--json` | Stampa il risultato come un oggetto JSON sull'ultima riga di stdout invece del messaggio leggibile, per l'uso negli script. Vedi [Formato risultato JSON](#plugin-json-result). Richiede Claude Code v2.1.268 o successivo |


297| :- | :- |297| :- | :- |

298| `--json` | Stampa l'elenco come JSON |298| `--json` | Stampa l'elenco come JSON |

299| `--available` | Elenca anche i plugin che i tuoi marketplace offrono che non hai installato. Non ha effetto senza `--json` |299| `--available` | Elenca anche i plugin che i tuoi marketplace offrono che non hai installato. Non ha effetto senza `--json` |

300| `--data-size [plugin]` | Misura la [directory di dati salvati](#what-an-uninstall-deletes-and-keeps) di ogni plugin installato, o solo quella del plugin denominato, dato come `name@marketplace`. Non ha effetto senza `--json`. Se il nome non ha un record di installazione, il comando stampa `--data-size names a plugin that is not installed` ed esce con `1` invece di stampare l'elenco. Richiede Claude Code v2.1.285 o successivo |

300 301 

301Claude Code raggruppa l'output leggibile per come ogni plugin si carica:302Claude Code raggruppa l'output leggibile per come ogni plugin si carica:

302 303 


328| `notes` | array of strings | Avvertimenti di authoring per un plugin che si è caricato e funziona |329| `notes` | array of strings | Avvertimenti di authoring per un plugin che si è caricato e funziona |

329| `errorDetails` | array of objects | Un oggetto per voce `errors`, fornendo il suo `type` diagnostico e i nomi a cui si riferisce, come il plugin, marketplace, server o file. Richiede Claude Code v2.1.268 o successivo |330| `errorDetails` | array of objects | Un oggetto per voce `errors`, fornendo il suo `type` diagnostico e i nomi a cui si riferisce, come il plugin, marketplace, server o file. Richiede Claude Code v2.1.268 o successivo |

330| `noteDetails` | array of objects | Gli stessi oggetti di dettaglio per ogni voce `notes`. Richiede Claude Code v2.1.268 o successivo |331| `noteDetails` | array of objects | Gli stessi oggetti di dettaglio per ogni voce `notes`. Richiede Claude Code v2.1.268 o successivo |

332| `hasUserConfig` | boolean | Presente e `true` quando il plugin si è caricato e il suo manifest dichiara opzioni [`userConfig`](/docs/it/plugins/manifest-reference#user-configuration). Assente per un plugin che non è riuscito a caricarsi, qualunque cosa il suo manifest dichiari. I valori salvati non sono mai inclusi. Richiede Claude Code v2.1.285 o successivo |

333| `projectEnabled` | boolean | Se il `.claude/settings.json` condiviso del progetto attiva il plugin. Solo installazioni marketplace. Richiede Claude Code v2.1.285 o successivo |

334| `dataDirSize` | object | Con `--data-size`, la dimensione della [directory di dati salvati](#what-an-uninstall-deletes-and-keeps) del plugin come `bytes` e `human`; assente quando la directory è mancante o vuota. Solo installazioni marketplace. Richiede Claude Code v2.1.285 o successivo |

335| `dataDirUnreadable` | boolean | Con `--data-size`, `true` quando la directory di dati salvati esiste ma non ha potuto essere misurata. Solo installazioni marketplace. Richiede Claude Code v2.1.285 o successivo |

331 336 

332Con `--json --available`, Claude Code stampa un oggetto invece di un array. Il suo campo `installed` contiene l'array di oggetti plugin installati, e il suo campo `available` contiene un oggetto per plugin marketplace non installato con i campi sottostanti.337Con `--json --available`, Claude Code stampa un oggetto invece di un array. Il suo campo `installed` contiene l'array di oggetti plugin installati, e il suo campo `available` contiene un oggetto per plugin marketplace non installato con i campi sottostanti.

333 338 


371 376 

372Per un plugin che non è caricato, Claude Code stampa ``Plugin "formatter" not found. Run `claude plugin list` to see installed plugins, or pass --plugin-dir <path> to load one from disk.`` ed esce con `1`.377Per un plugin che non è caricato, Claude Code stampa ``Plugin "formatter" not found. Run `claude plugin list` to see installed plugins, or pass --plugin-dir <path> to load one from disk.`` ed esce con `1`.

373 378 

379<h3 id="plugin-configure">

380 plugin configure

381</h3>

382 

383Mostra le opzioni [`userConfig`](/docs/it/plugins/manifest-reference#user-configuration) di un plugin installato e quali sono impostate, o salva i valori inviati su stdin. Richiede Claude Code v2.1.285 o successivo.

384 

385```bash theme={null}

386claude plugin configure <plugin>

387```

388 

389| Flag | Descrizione |

390| :- | :- |

391| `--values-stdin` | Leggi i valori delle opzioni da stdin come un oggetto JSON di stringhe a riga singola e salvali. Le opzioni che ometti mantengono i loro valori salvati |

392| `--json` | Stampa il risultato come un oggetto JSON su stdout. Senza `--values-stdin`, l'oggetto porta lo `schema` e le `choices` delle opzioni, i loro `inputs` iniziali, e i nomi delle opzioni `configured` e `unconfigured`. Con `--values-stdin`, porta i nomi delle opzioni `saved` e, quando possono essere letti di nuovo, quelli `unconfigured` |

393 

394Senza flag, il comando elenca ogni opzione con fino a tre etichette: `required` o `optional`, poi `sensitive` per un'opzione che il manifest dichiara sensibile, poi `set` o `not set`. Non stampa valori salvati. Con `--json`, l'output include i valori salvati delle opzioni che non sono sensibili, e mai il testo di una sensibile.

395 

396Per salvare i valori, scrivili in un file come un oggetto JSON che mappa le chiavi delle opzioni ai valori stringa, poi passa il file su stdin. Sostituisci `formatter@my-marketplace` con l'id del tuo plugin come `claude plugin list` lo mostra. Questo esempio imposta un'opzione denominata `api_url` da un file `values.json` che contiene `{"api_url": "https://example.com"}`:

397 

398```bash theme={null}

399claude plugin configure formatter@my-marketplace --values-stdin < values.json

400```

401 

402Claude Code convalida ogni valore rispetto al tipo dichiarato dell'opzione e stampa `Configuration saved. Restart Claude Code to apply it.` Se passi una chiave che il manifest non dichiara, o un valore che fallisce la convalida, il comando non salva nulla, stampa `Failed to save configuration:` con il motivo, ed esce con `1`. Con `--json`, un valore rifiutato stampa anche un oggetto su stdout il cui campo `refused` porta il `message` e, quando un'opzione è responsabile, la sua chiave `option`.

403 

404Passa l'id completo `name@marketplace` del plugin, come `claude plugin list` lo mostra. `configure` non accetta un `name` semplice. Quando nessun plugin caricato ha quell'id, il comando stampa `No installed plugin has the id "<plugin>".` ed esce con `1`.

405 

406Per le impostazioni di un server MCP in bundle, vedi [`plugin install --config`](#plugin-install) o l'elemento **Configure** in `/plugin`.

407 

374<h3 id="plugin-prune">408<h3 id="plugin-prune">

375 plugin prune409 plugin prune

376</h3>410</h3>

Details

791 791 

792Gli hook in `hooks/hooks.json` e nella chiave manifest `hooks` caricano entrambi. Per ogni evento e il suo payload, vedere [Hook events](/docs/it/hooks#hook-events).792Gli hook in `hooks/hooks.json` e nella chiave manifest `hooks` caricano entrambi. Per ogni evento e il suo payload, vedere [Hook events](/docs/it/hooks#hook-events).

793 793 

794Per scrivere hook come funzioni JavaScript che vengono eseguite all'interno di Claude Code e possono disegnare nella sua interfaccia, elenca un file modulo sotto una chiave `modules` nello stesso `hooks/hooks.json`. Un plugin con uno è un mod. Vedere [Crea un mod](/docs/it/plugins/mods/create).

795 

794<h4 id="when-plugin-hooks-fire">796<h4 id="when-plugin-hooks-fire">

795 Quando gli hook del plugin si attivano797 Quando gli hook del plugin si attivano

796</h4>798</h4>


868 870 

869Il server prende il suo nome da `name` nel manifest del bundle.871Il server prende il suo nome da `name` nel manifest del bundle.

870 872 

873Un manifest proprio del bundle può dichiarare impostazioni che il server ha bisogno dall'utente in un blocco `user_config`. Un server in bundle con un'impostazione richiesta che non ha un valore salvato non si avvia. La scheda **Errors** di `/plugin` mostra `Bundled MCP server "<name>" was not started: it needs configuration`.

874 

875Gli utenti forniscono i valori in uno di due modi:

876 

877* **In `/plugin`**: seleziona il plugin nella scheda **Installed** e scegli **Configure**

878* **All'installazione, dalla shell**: passa [`--config <server>.<key>=<value>`](/docs/it/plugins/cli-reference#plugin-install) a `claude plugin install`. Richiede Claude Code v2.1.285 o successivo, e funziona solo per un bundle confezionato all'interno del plugin.

879 

871Per trasporti e autenticazione, vedere [MCP](/docs/it/mcp#plugin-provided-mcp-servers).880Per trasporti e autenticazione, vedere [MCP](/docs/it/mcp#plugin-provided-mcp-servers).

872 881 

873<h3 id="lsp-servers">882<h3 id="lsp-servers">


1071 Quando appare la finestra di dialogo di configurazione1080 Quando appare la finestra di dialogo di configurazione

1072</h3>1081</h3>

1073 1082 

1074La finestra di dialogo appare solo nell'interfaccia interattiva `/plugin`. Si apre per qualsiasi opzione che non è ancora impostata quando l'utente fa uno dei seguenti:1083La finestra di dialogo è parte dell'interfaccia interattiva `/plugin`. Si apre per qualsiasi opzione che non è ancora impostata quando l'utente fa uno dei seguenti:

1075 1084 

1076* Installa il plugin in `/plugin`1085* Installa il plugin in `/plugin`

1077* Esegui `/plugin install <plugin>@<marketplace>` all'interno di una sessione1086* Esegui `/plugin install <plugin>@<marketplace>` all'interno di una sessione


1079 1088 

1080Per aprire la stessa finestra di dialogo in qualsiasi momento, l'utente esegue `/plugin configure <plugin>@<marketplace>`.1089Per aprire la stessa finestra di dialogo in qualsiasi momento, l'utente esegue `/plugin configure <plugin>@<marketplace>`.

1081 1090 

1082Il comando shell `claude plugin install` non richiede mai i valori `userConfig`. Per impostare i valori dalla shell, passa ognuno come `--config KEY=VALUE`. Quando le opzioni rimangono non impostate, il comando stampa una riga `userConfig options not yet set` che nomina entrambi i modi per impostarli. [La finestra di dialogo `userConfig` non appare mai](/docs/it/plugins/troubleshooting#the-userconfig-dialog-never-appears) cita la riga.1091Il dialogo Manage plugins dell'estensione VS Code [Manage plugins dialog](/docs/it/vs-code#install-plugins) chiede le opzioni non impostate come un modulo dopo un'installazione, e un'icona a forma di ingranaggio sulla riga del plugin apre il modulo di nuovo con ogni opzione.

1092 

1093Il comando shell `claude plugin install` non richiede mai i valori `userConfig`. Per impostare i valori dalla shell, passa ognuno come `--config KEY=VALUE` quando installi, oppure invia un oggetto JSON a [`claude plugin configure --values-stdin`](/docs/it/plugins/cli-reference#plugin-configure) successivamente.

1094 

1095Quando le opzioni rimangono non impostate, `claude plugin install` stampa una riga `userConfig options not yet set`. Per il testo esatto della riga, vedi [La finestra di dialogo `userConfig` non appare mai](/docs/it/plugins/troubleshooting#the-userconfig-dialog-never-appears).

1083 1096 

1084Per i campi dell'opzione, dove ogni valore viene archiviato, come un componente fa riferimento a un valore salvato, e quali campi rifiutano `${user_config.*}`, vedere [Configurazione utente](/docs/it/plugins/manifest-reference#user-configuration).1097Per i campi dell'opzione, dove ogni valore viene archiviato, come un componente fa riferimento a un valore salvato, e quali campi rifiutano `${user_config.*}`, vedere [Configurazione utente](/docs/it/plugins/manifest-reference#user-configuration).

1085 1098 

Details

72 L'ultima frase del riepilogo ti dice se il plugin è utilizzabile in questa sessione:72 L'ultima frase del riepilogo ti dice se il plugin è utilizzabile in questa sessione:

73 73 

74 * **Active now**: `Plugin is now active.` Non è necessario ricaricare.74 * **Active now**: `Plugin is now active.` Non è necessario ricaricare.

75 * **Active, but a server needs setup**: `Plugin is now active.` è seguito da `Its bundled MCP server needs configuration before it can start`. Il [server MCP in bundle](/docs/it/plugins/components#include-a-packaged-mcpb-server) del plugin non può avviarsi finché non imposti le sue opzioni. Seleziona il plugin sulla scheda **Installed** in `/plugin` e scegli **Configure** per impostare le opzioni del server.

75 * **Reload needed**: `Run /reload-plugins to activate.` Il pannello si chiude e Claude Code esegue quel ricaricamento per te. Se il ricaricamento [invaliderebbe la prompt cache](/docs/it/prompt-caching#enabling-or-disabling-a-plugin), avverte e lascia il plugin in sospeso invece. Esegui `/reload-plugins --force` per attivarlo comunque, il che costa una richiesta non memorizzata nella cache.76 * **Reload needed**: `Run /reload-plugins to activate.` Il pannello si chiude e Claude Code esegue quel ricaricamento per te. Se il ricaricamento [invaliderebbe la prompt cache](/docs/it/prompt-caching#enabling-or-disabling-a-plugin), avverte e lascia il plugin in sospeso invece. Esegui `/reload-plugins --force` per attivarlo comunque, il che costa una richiesta non memorizzata nella cache.

76 * **Load failed**: `The plugin couldn't be loaded`. Apri la scheda **Errors** in `/plugin` per il motivo, quindi vedi [After install: plugin not working](/docs/it/plugins/troubleshooting#plugin-installed-but-not-working).77 * **Load failed**: `The plugin couldn't be loaded`. Apri la scheda **Errors** in `/plugin` per il motivo, quindi vedi [After install: plugin not working](/docs/it/plugins/troubleshooting#plugin-installed-but-not-working).

77 </Step>78 </Step>


248Un marketplace privato è uno in un repository a cui hai bisogno di credenziali per clonare, su GitHub o su qualsiasi altro host git. Lo aggiungi con lo stesso comando `/plugin marketplace add` o `claude plugin marketplace add` di uno pubblico. Claude Code lo clona con le credenziali git già sulla tua macchina e non chiede mai, quindi ogni modo di connettersi ha un requisito:249Un marketplace privato è uno in un repository a cui hai bisogno di credenziali per clonare, su GitHub o su qualsiasi altro host git. Lo aggiungi con lo stesso comando `/plugin marketplace add` o `claude plugin marketplace add` di uno pubblico. Claude Code lo clona con le credenziali git già sulla tua macchina e non chiede mai, quindi ogni modo di connettersi ha un requisito:

249 250 

250* **HTTPS**: i tuoi helper di credenziali git si applicano, quindi l'accesso che hai configurato con `gh auth login`, il Portachiavi macOS o `git-credential-store` funziona. I prompt interattivi sono soppressi, quindi un host a cui non ti sei mai autenticato fallisce invece di chiedere una password.251* **HTTPS**: i tuoi helper di credenziali git si applicano, quindi l'accesso che hai configurato con `gh auth login`, il Portachiavi macOS o `git-credential-store` funziona. I prompt interattivi sono soppressi, quindi un host a cui non ti sei mai autenticato fallisce invece di chiedere una password.

251* **SSH**: l'host deve già essere nel tuo file `known_hosts` e la chiave deve funzionare senza un prompt di passphrase, perché i prompt di impronta digitale dell'host e di passphrase sono soppressi anche loro.252* **SSH**: l'host deve già essere nel tuo file `known_hosts` e la chiave deve funzionare senza un prompt di passphrase. Se la tua configurazione git nomina un programma SSH in `GIT_SSH_COMMAND`, `GIT_SSH`, o il `core.sshCommand` della tua configurazione git, Claude Code esegue quel programma.

252* **Scorciatoia GitHub `owner/repo`**: Claude Code controlla se la tua chiave SSH si autentica a `github.com`, quindi clona su SSH se lo fa e su HTTPS se non lo fa. Imposta [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/it/env-vars#variables) per saltare quel controllo e clonare sempre su HTTPS.253* **Scorciatoia GitHub `owner/repo`**: Claude Code controlla se la tua chiave SSH si autentica a `github.com`, quindi clona su SSH se lo fa e su HTTPS se non lo fa. Imposta [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/it/env-vars#variables) per saltare quel controllo e clonare sempre su HTTPS.

253 254 

254Le stesse credenziali si applicano quando esegui `/plugin install`, `/plugin marketplace update` e `claude plugin update`.255Le stesse credenziali si applicano quando esegui `/plugin install`, `/plugin marketplace update` e `claude plugin update`.


288 289 

289* Digita per filtrare per nome o descrizione.290* Digita per filtrare per nome o descrizione.

290* Premi **Space** per abilitare o disabilitare il plugin selezionato, e **f** per contrassegnarlo come preferito.291* Premi **Space** per abilitare o disabilitare il plugin selezionato, e **f** per contrassegnarlo come preferito.

291* Premi **Enter** per aprire i dettagli di un plugin. Il menu lì offre **Disable plugin** o **Enable plugin**, **Update now** e **Uninstall**. I plugin che accettano impostazioni offrono anche **Configure options**.292* Premi **Enter** per aprire i dettagli di un plugin.

293 

294Un menu dei dettagli di un plugin offre **Disable plugin** o **Enable plugin**, **Update now** e **Uninstall**. Appaiono altri due elementi per i plugin che accettano impostazioni, e un plugin può mostrare entrambi:

295 

296* **Configure options**: mostrato quando il manifest del plugin dichiara opzioni [`userConfig`](/docs/it/plugins/manifest-reference#user-configuration). Apre la finestra di dialogo per quelle opzioni

297* **Configure**: mostrato quando il plugin include un [server MCP in bundle](/docs/it/plugins/components#include-a-packaged-mcpb-server). Imposta le impostazioni `user_config` di quel server

292 298 

293La scheda può anche mostrare plugin a livello **Managed**. La tua organizzazione li ha installati attraverso [impostazioni gestite](/docs/it/settings#settings-files), e non puoi abilitarli, disabilitarli o disinstallarli qui.299La scheda può anche mostrare plugin a livello **Managed**. La tua organizzazione li ha installati attraverso [impostazioni gestite](/docs/it/settings#settings-files), e non puoi abilitarli, disabilitarli o disinstallarli qui.

294 300 

Details

146| [`dependencies`](#dependencies) | Array of strings or objects | Plugin che devono essere abilitati affinché questo funzioni |146| [`dependencies`](#dependencies) | Array of strings or objects | Plugin che devono essere abilitati affinché questo funzioni |

147| [`settings`](#settings) | Object | Impostazioni che Claude Code applica mentre il plugin è abilitato. Solo `agent` e `subagentStatusLine` hanno effetto |147| [`settings`](#settings) | Object | Impostazioni che Claude Code applica mentre il plugin è abilitato. Solo `agent` e `subagentStatusLine` hanno effetto |

148| [`userConfig`](#user-configuration) | Object | Valori che Claude Code richiede all'utente quando il plugin è abilitato |148| [`userConfig`](#user-configuration) | Object | Valori che Claude Code richiede all'utente quando il plugin è abilitato |

149| `types` | Path | Un file `.d.ts` che dichiara i valori `$.state` e i sostantivi `$` di un [mod](/docs/it/plugins/mods/reference#files) |

149| [`channels`](#channels) | Array of objects | Canali di messaggi che il plugin fornisce, ciascuno associato a uno dei suoi server MCP |150| [`channels`](#channels) | Array of objects | Canali di messaggi che il plugin fornisce, ciascuno associato a uno dei suoi server MCP |

150| `skills` | Path, or array of paths | Directory da scansionare per skills, ciascuna una directory di cartelle `<name>/SKILL.md` o una cartella che contiene `SKILL.md` direttamente. `"."` nomina la radice del plugin. Aggiunge alla scansione predefinita `skills/` |151| `skills` | Path, or array of paths | Directory da scansionare per skills, ciascuna una directory di cartelle `<name>/SKILL.md` o una cartella che contiene `SKILL.md` direttamente. `"."` nomina la radice del plugin. Aggiunge alla scansione predefinita `skills/` |

151| [`commands`](#commands) | Path, array of paths, or object | File di comando `.md` piatti, directory di essi, o una mappa di oggetti del nome del comando a `source` o `content`. Sostituisce la scansione predefinita `commands/` |152| [`commands`](#commands) | Path, array of paths, or object | File di comando `.md` piatti, directory di essi, o una mappa di oggetti del nome del comando a `source` o `content`. Sostituisce la scansione predefinita `commands/` |


170 171 

171Claude Code namespaccia ogni componente sotto di esso, quindi un agente `reviewer` nel plugin `deploy-tools` appare come `deploy-tools:reviewer`.172Claude Code namespaccia ogni componente sotto di esso, quindi un agente `reviewer` nel plugin `deploy-tools` appare come `deploy-tools:reviewer`.

172 173 

174`claude plugin validate` controlla anche che il nome non passi come uno dei plugin propri di Anthropic. Il controllo ignora maiuscole/minuscole e tratta qualsiasi sequenza di separatori come uno:

175 

176| Name | Result |

177| :- | :- |

178| Inizia con `claude-`, `anthropic-`, `anthropics-`, o `cc-plugin-` | Error |

179| È `claude`, `anthropic`, `anthropics`, `claude-code`, o `claude-mods` | Error |

180| Mette `official` accanto a `claude` o `anthropic`, come `official-claude-tools` | Error |

181| Ha `claude`, `anthropic`, o `anthropics` come parola intera da qualche parte, come `mcp-for-claude` | Warning |

182 

183L'errore recita `Plugin name "<name>" is reserved: it passes as one of Anthropic's own`, e l'avviso recita `Plugin name "<name>" reads as one of Anthropic's own`. `claude plugin init` e `claude plugin tag` rifiutano un nome che genera l'errore. Solo questi comandi controllano il nome. Claude Code installa e carica comunque un plugin il cui nome rifiutano.

184 

173<h3 id="displayname">185<h3 id="displayname">

174 `displayName`186 `displayName`

175</h3>187</h3>

Details

484| `Author name cannot be empty` | Error | `owner.name` |484| `Author name cannot be empty` | Error | `owner.name` |

485| `Plugin name cannot contain spaces. Use kebab-case (e.g., "my-plugin")` | Error | `plugins[i].name` |485| `Plugin name cannot contain spaces. Use kebab-case (e.g., "my-plugin")` | Error | `plugins[i].name` |

486| `Plugin name cannot contain control or bidirectional-formatting characters` | Error | `plugins[i].name` |486| `Plugin name cannot contain control or bidirectional-formatting characters` | Error | `plugins[i].name` |

487| `Plugin name "x" is reserved: it passes as one of Anthropic's own` | Error | `plugins[i].name`. Vedere il [`name`](/docs/it/plugins/manifest-reference#name) del manifest per i nomi riservati |

488| `Plugin name "x" reads as one of Anthropic's own` | Warning | `plugins[i].name` |

487| `Claude Code cannot install plugins from marketplace "x". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change the marketplace's "name".` | Error | `name` |489| `Claude Code cannot install plugins from marketplace "x". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change the marketplace's "name".` | Error | `name` |

488| `Claude Code cannot install plugin "x". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change this entry's "name".` | Error | `plugins[i].name` |490| `Claude Code cannot install plugin "x". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change this entry's "name".` | Error | `plugins[i].name` |

489| `Duplicate plugin name "x" found in marketplace` | Error | Due voci condividono un `name` |491| `Duplicate plugin name "x" found in marketplace` | Error | Due voci condividono un `name` |

plugins/mods/admin.md +375 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Gestire i mod per la vostra organizzazione

6 

7> Controllare i mod di Claude Code con impostazioni gestite: bloccare i mod installati dagli utenti, consentire solo i vostri, esaminare cosa può fare un mod e applicare la politica con il vostro mod.

8 

9Un [mod](/docs/it/plugins/mods/overview) è un plugin che esegue codice all'interno di Claude Code con i permessi dell'utente che lo ha installato. I mod non sono sandboxed. Attraverso le [impostazioni gestite](/docs/it/managed-settings), voi decidete se i mod vengono eseguiti sulle macchine dei vostri utenti, quali e in quale ordine. Potete anche installare un mod vostro che osserva o rifiuta quello che fanno gli altri mod.

10 

11Questa pagina è per la persona che distribuisce le impostazioni gestite per Claude Code, sia come file, tramite MDM, che dalla console di amministrazione di claude.ai. I mod sono attivati per impostazione predefinita in Claude Code v2.1.287 e versioni successive. Iniziate con la sezione che corrisponde a quello che siete venuti a fare:

12 

13* **Tenere fuori i mod propri degli utenti, con o senza mod vostri**: [Impedire il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading)

14* **Vedere cosa ottengono i vostri utenti quando non cambiate nulla**: [Sapere cosa accade per impostazione predefinita](#know-what-happens-by-default)

15* **Lasciare i mod attivi con altri limiti**: [Scegliere quanto consentire](#choose-how-much-to-allow)

16 

17<Note>

18 Questi casi sono trattati in altre pagine:

19 

20 * **Non avete mai distribuito impostazioni gestite prima**: iniziate con [Distribuire impostazioni gestite](/docs/it/managed-settings)

21 * **Volete controllare quali plugin gli utenti possono installare**: vedere [Gestire i plugin per la vostra organizzazione](/docs/it/plugins/org)

22</Note>

23 

24<h2 id="stop-user-installed-mods-from-loading">

25 Impedire il caricamento dei mod installati dagli utenti

26</h2>

27 

28Per impedire il caricamento di ogni mod che i vostri utenti portano, impostate l'opzione `allowManagedModsOnly` sulla [guardia incorporata](#know-what-happens-by-default), un mod di politica che Claude Code carica prima di ogni mod che un utente installa. L'opzione va nelle impostazioni gestite sotto `pluginConfigs`, con chiave `cc-plugin-sec-default@builtin`:

29 

30```json managed-settings.json theme={null}

31{

32 "pluginConfigs": {

33 "cc-plugin-sec-default@builtin": {

34 "options": {

35 "allowManagedModsOnly": true

36 }

37 }

38 }

39}

40```

41 

42Con l'opzione impostata nelle impostazioni gestite:

43 

44* **Nessun mod che un utente porta viene caricato**: questo copre un mod in un plugin che l'utente ha installato, un mod caricato con `--plugin-dir`, e un mod [che Claude ha scritto durante una sessione](/docs/it/plugins/mods/create#ask-claude-for-a-mod)

45* **I mod della vostra organizzazione continuano a caricarsi**: un mod che [conta come della vostra organizzazione](#install-your-organizations-mods) non viene controllato. Ogni altro mod conta come di un utente e non viene caricato. Questo include un mod in un plugin che abilitate da un marketplace GitHub o altro remoto, e uno che la vostra organizzazione attiva per i suoi membri su claude.ai. Se nessuno conta come vostro, nessun mod installato viene caricato.

46* **Gli utenti non possono annullarlo**: la guardia legge l'opzione solo dalle impostazioni gestite, quindi la stessa voce in un file di impostazioni utente, progetto o locale, o in un file passato con `--settings`, non cambia nulla

47* **Un file o una politica MDM copre ogni provider**: quando consegnate l'opzione come file o tramite MDM, funziona allo stesso modo su Amazon Bedrock, Agent Platform di Google Cloud e Microsoft Foundry. Per la consegna dalla console di amministrazione di claude.ai, vedere [Disponibilità della piattaforma](/docs/it/server-managed-settings#platform-availability)

48* **Le altre personalizzazioni degli utenti continuano a funzionare**: i loro [hook nei file di impostazioni](/docs/it/hooks), le righe di stato e `/goal` non sono interessati

49* **I mod incorporati continuano a funzionare**: i mod incorporati in Claude Code, come il supporto `AGENTS.md`, hanno ciascuno [il loro interruttore](/docs/it/plugins/mods/overview#mods-built-into-claude-code)

50 

51Per confermare l'opzione sulla macchina di un utente, avviate Claude Code lì con `--plugin-dir` e il percorso di una directory che contiene un mod, come `claude --plugin-dir ./first-mod`. Gli hook del mod non vengono eseguiti, e la trascrizione e il log di debug hanno il [messaggio della guardia](/docs/it/plugins/mods/troubleshoot#messages-from-the-built-in-guard), che nomina il mod e `allowManagedModsOnly`. Se il mod viene caricato, vedere [Verificare che una politica sia in vigore](/docs/it/managed-settings#check-that-a-policy-is-in-force) e le [regole che decidono se un'opzione ha effetto](#set-options-on-the-built-in-guard).

52 

53Se avete impostato `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` a `0` durante l'accesso anticipato, sostituirlo con questa opzione. Claude Code v2.1.287 e versioni successive ignora la variabile a qualsiasi valore, quindi uno `0` lì lascia i mod attivi.

54 

55<h2 id="know-what-happens-by-default">

56 Sapere cosa accade per impostazione predefinita

57</h2>

58 

59Senza impostazioni mod proprie, questo è quello che i vostri utenti ottengono:

60 

61* **I mod sono attivi.** Un utente può installare un plugin che contiene un mod da qualsiasi marketplace che le vostre impostazioni di plugin consentono, o caricarne uno da una directory con `--plugin-dir`.

62* **Una guardia incorporata viene eseguita per prima.** Claude Code carica un mod incorporato denominato `sec-default@builtin` prima di ogni mod che un utente installa. Gli utenti non possono disattivarla. `/plugin` e il log di debug la elencano come `cc-plugin-sec-default`. La guardia viene caricata quando una di queste è vera:

63 

64 * La macchina ha impostazioni gestite

65 * L'utente è connesso a Claude Code con un piano Team o Enterprise

66 

67 Un utente che si autentica con una chiave API, o tramite Amazon Bedrock, Agent Platform di Google Cloud, o Microsoft Foundry, ottiene la guardia solo su una macchina che ha impostazioni gestite.

68* **La guardia protegge quello che gestite.** Un mod di un utente non può cambiare quello che i vostri hook gestiti ricevono o decidono, il prompt di sistema, il vostro `CLAUDE.md` gestito e altre istruzioni gestite, quello che qualsiasi mod legge come impostazioni, o gli strumenti e le descrizioni dei vostri server MCP gestiti.

69* **Tutto il resto è consentito.** La guardia non aggiunge altre restrizioni. Un mod di un utente può comunque leggere e scrivere file, avviare processi, fare richieste di rete, riscrivere chiamate di strumenti e prompt, negare una chiamata di strumento, approvare una che altrimenti richiederebbe un prompt, e disegnare nell'interfaccia, tutto con i permessi di quell'utente.

70* **Le regole di negazione e i vostri hook gestiti hanno la precedenza.** Dove la guardia viene caricata, un mod di un utente non può approvare una chiamata che una regola `deny` rifiuta, indipendentemente da quale file di impostazioni contiene la regola. Un blocco da un hook `PreToolUse` nelle impostazioni gestite è definitivo anche. Entrambi si applicano alle chiamate di strumenti di Claude. Nessuno si applica alle chiamate proprie di un mod [`$.fs` e `$.process`](/docs/it/plugins/mods/api#reach-files-processes-and-the-network): con `Read(.env)` negato, un mod può comunque leggere quel file con `$.fs.read` o avviare un programma che lo fa. Per limitare quelle chiamate, impedire al mod di caricarsi o agganciare la chiamata in un [mod di politica](#enforce-a-policy-with-a-mod-of-your-own).

71* **Altri controlli di permesso possono essere ignorati.** Un mod di un utente che approva le chiamate di strumenti può approvare una chiamata che una regola `ask` richiederebbe un prompt, o che un hook `PreToolUse` al di fuori delle impostazioni gestite ha bloccato. In modalità automatica, una chiamata che il mod approva viene eseguita senza un controllo del classificatore.

72 

73La fonte della guardia è pubblica nella [directory `mods/sec-default` del repository di Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).

74 

75<h3 id="know-which-controls-still-apply">

76 Sapere quali controlli si applicano ancora

77</h3>

78 

79I mod non sostituiscono i controlli che avete già:

80 

81* **Gli hook di impostazioni continuano a funzionare.** Gli hook di comando, HTTP, prompt e agente nei file di impostazioni e nel `hooks/hooks.json` dei plugin vengono eseguiti come prima, insieme ai mod. Nulla di loro è deprecato.

82* **Le regole di negazione hanno la precedenza dove la guardia viene caricata.** Un mod di un utente non può approvare una chiamata che una regola `deny` rifiuta, a meno che non impostiate [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).

83* **Gli hook gestiti vengono eseguiti per primi.** Un hook `PreToolUse` nelle impostazioni gestite viene eseguito prima che qualsiasi mod veda la chiamata di strumento, e il suo blocco è definitivo. Se un mod poi riscrive la chiamata, i vostri hook gestiti vengono eseguiti di nuovo sulla chiamata riscritta, quindi un blocco si applica comunque. Gli hook `PreToolUse` da altri file di impostazioni e dai plugin vengono eseguiti dopo l'ultimo mod, quindi un mod che restituisce il suo proprio risultato al posto di eseguire lo strumento impedisce a quelli di funzionare. Vedere [L'ordine in cui i mod vengono eseguiti](/docs/it/plugins/mods/events#the-order-mods-run-in).

84* **La politica di rete copre `$.http.fetch`.** Se la vostra organizzazione disattiva il recupero web, o il traffico di rete non essenziale è disattivato per la sessione, Claude Code rifiuta una richiesta di rete che un mod fa con `$.http.fetch`. La politica non copre un programma che il mod avvia con `$.process.run`. Quel programma raggiunge la rete con l'accesso proprio dell'utente.

85* **I controlli dei plugin coprono i mod.** Un mod è un plugin, quindi le [impostazioni che limitano quello che gli utenti possono installare](/docs/it/plugins/org#restrict-what-users-can-install), come `strictKnownMarketplaces`, decidono se può essere installato affatto.

86* **I mod non possono cambiare il prompt di permesso.** Un mod può ridisegnare gran parte dell'interfaccia di Claude Code, ma non il prompt di permesso, quindi non può cambiare quello che un prompt mostra. Un mod può comunque approvare o negare una chiamata di strumento prima che il prompt appaia, come [Sapere cosa accade per impostazione predefinita](#know-what-happens-by-default) descrive.

87* **I prompt di fiducia vengono per primi.** In una sessione interattiva in una directory che l'utente non ha ancora fiducia, nessun mod viene caricato finché non rispondono al prompt di fiducia.

88* **`--safe-mode` disattiva i mod installati, inclusi i vostri.** Avviate una sessione con `claude --safe-mode` per verificare se un mod ha causato un problema.

89 

90Nessuno di questi controlli sandboxes un mod. Un mod che consentite viene eseguito come l'utente, con l'accesso dell'utente a file, processi e la rete.

91 

92<h2 id="decide-whether-to-leave-mods-on">

93 Decidere se lasciare i mod attivi

94</h2>

95 

96Un mod può fare più di altre parti di un plugin perché viene eseguito all'interno di Claude Code. Vede ogni prompt e chiamata di strumento, può cambiarli, e può consentire o negare una chiamata di strumento prima che un prompt di permesso appaia.

97 

98Quello che un utente può caricare come mod dipende dai controlli dei plugin che avete già:

99 

100| I vostri controlli di plugin oggi | Quello che un utente può caricare come mod |

101| :- | :- |

102| Nessuno | Un mod da qualsiasi marketplace, da qualsiasi directory con `--plugin-dir`, o che Claude scrive durante una sessione |

103| Una lista di consentiti del marketplace | Un mod dai marketplace che consentite, o da qualsiasi directory con `--plugin-dir`. Un mod che Claude scrive durante una sessione viene caricato solo quando la lista di consentiti [include `skills-dir`](/docs/it/plugins/org#keep-skills-directory-plugins-loading). |

104| Una lista di consentiti del marketplace e `disableSideloadFlags` | Un mod dai marketplace che consentite |

105 

106[Gestire i plugin per la vostra organizzazione](/docs/it/plugins/org) elenca ogni modo in cui un plugin viene caricato e l'impostazione che controlla ciascuno.

107 

108Per controllare i mod in un marketplace prima che i vostri utenti li installino, vedere [Esaminare cosa può fare un mod](#review-what-a-mod-can-do). Per tenere fuori i mod degli utenti finché non lo avete fatto, vedere [Impedire il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading).

109 

110<h3 id="review-what-a-mod-can-do">

111 Esaminare cosa può fare un mod

112</h3>

113 

114Potete vedere cosa un mod è in grado di fare senza eseguirlo. Nel vostro shell, eseguite `claude plugin validate` sulla directory del plugin:

115 

116```bash theme={null}

117claude plugin validate ./some-mod

118```

119 

120Due righe nell'output descrivono il codice del mod:

121 

122```text theme={null}

123 ❯ ./register.js hooks: session.start, tool.call, ui.render{component=Pane}

124 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open

125```

126 

127La riga `hooks:` elenca gli eventi che il mod riceve. La riga `calls:` elenca i metodi dell'API dei mod che il suo codice chiama. L'[API dei mod](/docs/it/plugins/mods/api), scritta `$` nel codice di un mod, è come un mod raggiunge file, processi e la rete. Claude Code rifiuta di caricare un mod che usa l'API dei mod in un modo che questo comando non può leggere.

128 

129Guardate la riga `calls:` per questi:

130 

131| Chiamata | Cosa significa |

132| :- | :- |

133| `$.fs.read`, `$.fs.write` | Legge o scrive file ovunque l'utente possa |

134| `$.process.run`, `$.process.spawn` | Avvia programmi come l'utente |

135| `$.http.fetch` | Fa richieste di rete |

136| `$.env.get`, `$.settings.read` | Legge variabili di ambiente e impostazioni, che possono contenere chiavi API. Una riga `env reads:` nell'output nomina ogni variabile. |

137| `$.env.set` | Imposta una variabile di ambiente per Claude Code e per ogni comando e server MCP che avvia dopo, che può cambiare quello che quei programmi eseguono. Una riga `env writes:` nomina ogni variabile. |

138| `$.mcp.call` | Chiama uno strumento su un server MCP connesso, secondo le regole di permesso della sessione |

139| `$.model.complete` | Usa il piano o la chiave API dell'utente per le chiamate di modello |

140| `$.prompt.submit` | Invia un prompt, e può inviarlo come le proprie parole dell'utente |

141| `$.session.send` | Invia un messaggio che un'altra sessione o subagent di Claude legge |

142 

143Nella riga `hooks:`, [`tool.call`](/docs/it/plugins/mods/reference#tools) e [`prompt.submit`](/docs/it/plugins/mods/reference#prompts-and-what-claude-reads) significano che il mod vede ogni chiamata di strumento e ogni prompt, e può cambiarli. [`session.append`](/docs/it/plugins/mods/reference#session) significa che il mod può riscrivere ogni riga della conversazione prima che sia archiviata. [`ui.render{component=AskUserQuestion}`](/docs/it/plugins/mods/interface#change-what-claude-code-already-draws) significa che il mod può ridisegnare il dialogo che Claude usa per chiedere all'utente una domanda. `tool.check` significa che il mod può approvare o negare una chiamata di strumento prima che un prompt di permesso appaia. [Sapere cosa accade per impostazione predefinita](#know-what-happens-by-default) elenca quale dei vostri regole e hook ha la precedenza sulla sua risposta.

144 

145<h2 id="choose-how-much-to-allow">

146 Scegliere quanto consentire

147</h2>

148 

149Le politiche dei mod vanno da nessun mod installato affatto a qualsiasi mod che un utente sceglie, con il vostro mod che controlla gli altri, e ognuna è poche impostazioni gestite. Trovate la politica che volete nella prima colonna e impostate quello che la seconda colonna nomina. [Distribuire impostazioni gestite](/docs/it/managed-settings) copre dove vivono le impostazioni gestite.

150 

151| Quello che volete | Impostazioni |

152| :- | :- |

153| Nessun mod installato, con hook intatti | Impostate [`allowManagedModsOnly`](#set-options-on-the-built-in-guard) e non distribuite mod vostri |

154| Nessun mod installato e nessun hook affatto, inclusi i vostri hook gestiti | Impostate `disableAllHooks` a `true` |

155| Solo i mod della vostra organizzazione | Impostate l'opzione [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading) della guardia, e [installate i vostri mod](#install-your-organizations-mods) in modo che contino come vostri |

156| Qualsiasi mod dai marketplace che approvate | Mantenete le vostre [restrizioni del marketplace](/docs/it/plugins/org#restrict-what-users-can-install), e impostate `disableSideloadFlags` a `true` |

157| Qualsiasi mod, con il vostro mod che controlla gli altri | [Installate il vostro mod](#install-your-organizations-mods), e elencatelo con `sec-default@builtin` in `prependPlugins` |

158 

159Quello che ogni impostazione fa:

160 

161* **`allowManagedModsOnly`**: un'opzione sulla guardia incorporata. I mod propri degli utenti non vengono caricati, e i loro hook di impostazioni, righe di stato e `/goal` continuano a funzionare. [Impedire il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading) elenca quello che copre.

162* **`allowManagedHooksOnly`**: un'impostazione più ampia. Solo i [mod della vostra organizzazione](#install-your-organizations-mods) e i mod incorporati in Claude Code vengono caricati. Un mod che un utente ha installato da solo non lo fa. L'impostazione blocca anche gli hook nei file di impostazioni propri degli utenti. Leggete [Quello che viene eseguito sotto `allowManagedHooksOnly`](/docs/it/settings-reference#what-runs-under-allowmanagedhooksonly) prima di impostarla.

163* **`disableAllHooks`**: l'impostazione più ampia. Nelle impostazioni gestite, ferma i mod in ogni plugin installato, incluso il vostro, e disattiva ogni hook nei file di impostazioni, quindi un hook `PreToolUse` nelle vostre impostazioni gestite non blocca più nulla. Le righe di stato personalizzate e `/goal` smettono di funzionare anche. Leggete [`disableAllHooks`](/docs/it/settings-reference#disableallhooks) prima di impostarla.

164* **`disableSideloadFlags`**: rifiuta `--plugin-dir` e `--plugin-url` all'avvio, quindi nessuno carica un mod da una directory, e impedisce ai mod che Claude scrive durante una sessione di caricarsi. L'impostazione rifiuta anche `--agents` e `--mcp-config`. Leggete [`disableSideloadFlags`](/docs/it/settings-reference#disablesideloadflags) prima di impostarla.

165 

166I mod incorporati in Claude Code, come il supporto `AGENTS.md`, non sono interessati da queste impostazioni. Ognuno ha [il suo interruttore](/docs/it/plugins/mods/overview#mods-built-into-claude-code).

167 

168Un utente il cui mod non è stato caricato trova il motivo nel suo log di debug. [Messaggi di rifiuto](/docs/it/plugins/mods/troubleshoot#refusal-messages) elenca le righe per `allowManagedHooksOnly` e `disableAllHooks`, e [Messaggi dalla guardia incorporata](/docs/it/plugins/mods/troubleshoot#messages-from-the-built-in-guard) ha la riga per `allowManagedModsOnly`.

169 

170<h3 id="set-options-on-the-built-in-guard">

171 Impostare le opzioni sulla guardia incorporata

172</h3>

173 

174La guardia incorporata accetta due opzioni. Impostatele nelle impostazioni gestite sotto `pluginConfigs`, con chiave `cc-plugin-sec-default@builtin`, come l'esempio in [Impedire il caricamento dei mod installati dagli utenti](#stop-user-installed-mods-from-loading) fa.

175 

176La tabella dà quello che i vostri utenti ottengono con ogni opzione non impostata e con essa impostata a `true`:

177 

178| Opzione | Non impostata | `true` |

179| :- | :- | :- |

180| `allowManagedModsOnly` | I mod propri degli utenti vengono caricati | Solo i [mod della vostra organizzazione](#install-your-organizations-mods), e i mod incorporati in Claude Code, vengono caricati. Claude Code rifiuta ogni altro mod, incluso uno che un utente ha installato o nominato con `--plugin-dir`. |

181| `allowModsToOverrideDenyRules` | Le regole di negazione hanno la precedenza sui mod degli utenti | Un mod di un utente che approva le chiamate di strumenti può approvare una chiamata che una regola `deny` rifiuta |

182 

183Queste regole decidono se un'opzione ha effetto:

184 

185* **L'id ha una sola ortografia qui**: Claude Code legge le opzioni solo sotto `cc-plugin-sec-default@builtin`. `prependPlugins` accetta anche `sec-default@builtin`, e `pluginConfigs` no.

186* **Solo le impostazioni gestite contano**: la stessa voce in un file di impostazioni utente, progetto o locale, o in un file passato con `--settings`, né imposta un'opzione né ne allenta una

187* **La guardia deve caricarsi**: se impostate `prependPlugins`, [nominate la guardia nella lista](#install-your-organizations-mods). Dove la guardia non viene caricata, nessuna opzione si applica.

188* **La guardia fallisce chiusa**: se la guardia non può leggere le impostazioni gestite, rifiuta ogni mod di un utente al caricamento. Se non può controllare le regole di negazione per una chiamata che un mod di un utente ha approvato, rifiuta la chiamata.

189 

190I [messaggi dalla guardia incorporata](/docs/it/plugins/mods/troubleshoot#messages-from-the-built-in-guard) sono quello che i vostri utenti vedono quando una delle due opzioni si applica.

191 

192<h2 id="run-your-organization’s-own-mods">

193 Eseguire i mod propri della vostra organizzazione

194</h2>

195 

196Potete distribuire mod vostri a ogni utente, scegliere dove vengono eseguiti rispetto ai mod degli utenti, e usarne uno per applicare una politica.

197 

198<h3 id="install-your-organizations-mods">

199 Installare i mod della vostra organizzazione e impostare l'ordine

200</h3>

201 

202I mod della vostra organizzazione vengono caricati dove i mod degli utenti non lo fanno e possono essere eseguiti prima di loro, quindi Claude Code deve essere in grado di dire che un mod viene da voi. Lo tratta come della vostra organizzazione solo quando tutti questi sono veri:

203 

204* Le impostazioni gestite `enabledPlugins` impostano il plugin del mod a `true`

205* Le impostazioni gestite nominano il [marketplace](/docs/it/plugins/create-marketplace) del plugin come una directory sulla macchina dell'utente, per percorso assoluto. Una voce `extraKnownMarketplaces` fa questo e registra il marketplace per l'utente anche.

206* Il marketplace elenca il plugin per un percorso relativo, quindi Claude Code lo [carica in place](/docs/it/plugins/loading#in-place-and-copied-plugins) da quella directory

207 

208Per soddisfarli, fate in modo che la vostra gestione dei dispositivi copi la directory del marketplace allo stesso percorso su ogni macchina. Rendete la directory e ogni directory sopra di essa scrivibile solo da un amministratore, come il file di impostazioni gestite. Chiunque possa scrivere lì può riscrivere il vostro mod. Le impostazioni gestite che consegnate dalla console di amministrazione di claude.ai possono portare le chiavi, ma non possono mettere la directory su una macchina.

209 

210La directory contiene il manifesto del marketplace e il plugin:

211 

212```text theme={null}

213/opt/acme/claude-plugins/

214├── .claude-plugin/

215│ └── marketplace.json

216└── plugins/

217 └── acme-guard/

218 ├── .claude-plugin/

219 │ └── plugin.json

220 └── hooks/

221 ├── hooks.json

222 └── register.js

223```

224 

225Il manifesto elenca il plugin per il suo percorso relativo a quella directory:

226 

227```json /opt/acme/claude-plugins/.claude-plugin/marketplace.json theme={null}

228{

229 "name": "acme-tools",

230 "owner": { "name": "Acme" },

231 "plugins": [

232 { "name": "acme-guard", "source": "./plugins/acme-guard", "description": "Acme policy mod" }

233 ]

234}

235```

236 

237Un plugin che Claude Code copia nella sua cache conta come di un utente, anche quando le impostazioni gestite `enabledPlugins` lo abilitano. Questo copre ogni plugin da una fonte GitHub, git, URL o npm. Il suo mod viene eseguito tra i mod degli utenti, `prependPlugins` e `appendPlugins` lo saltano, e non viene caricato sotto `allowManagedModsOnly` o `allowManagedHooksOnly`. Il log di debug dell'utente ha una riga che inizia con l'id del plugin e `is enabled by managed settings, but`.

238 

239Claude Code genera un evento ogni volta che sta per agire, come eseguire uno strumento, e lo passa a ogni mod a turno. Un mod che conta come vostro [viene eseguito prima dei mod degli utenti](/docs/it/plugins/mods/events#the-order-mods-run-in) anche quando non lo elencate da nessuna parte. Per impostare il suo posto, elencate il suo id in una di due impostazioni. L'id è il nome del plugin, `@`, e il nome del marketplace, come `acme-guard@acme-tools`.

240 

241* **`prependPlugins`**: il vostro mod vede ogni evento prima di qualsiasi mod di un utente e ogni risultato dopo. Può cambiare l'evento, rifiutarlo, o saltare i mod degli utenti.

242* **`appendPlugins`**: il vostro mod viene eseguito dopo ogni mod di un utente, quindi vede solo gli eventi che quei mod passano, nella forma che li passano

243 

244Questo esempio dichiara il marketplace `acme-tools` a `/opt/acme/claude-plugins`, abilita `acme-guard` da esso, e esegue quel mod per primo, con la guardia incorporata dopo:

245 

246```json managed-settings.json theme={null}

247{

248 "extraKnownMarketplaces": {

249 "acme-tools": {

250 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }

251 }

252 },

253 "enabledPlugins": { "acme-guard@acme-tools": true },

254 "prependPlugins": ["acme-guard@acme-tools", "sec-default@builtin"]

255}

256```

257 

258Ogni chiave fa un lavoro:

259 

260* **`extraKnownMarketplaces`**: nomina la directory che contiene il marketplace `acme-tools`. `path` è il percorso assoluto della directory che contiene `.claude-plugin/marketplace.json`.

261* **`enabledPlugins`**: attiva `acme-guard` per ogni utente che riceve queste impostazioni gestite

262* **`prependPlugins`**: mette `acme-guard` per primo e la guardia incorporata per secondo, entrambi prima di qualsiasi mod che un utente installa. Claude Code segue l'ordine che elencate.

263 

264Per confermare che la macchina di un utente ha ricevuto le impostazioni, vedere [Verificare che una politica sia in vigore](/docs/it/managed-settings#check-that-a-policy-is-in-force).

265 

266Per confermare dove il mod viene eseguito, avviate una sessione su quella macchina con `claude --debug` e cercate nel [log di debug](/docs/it/plugins/mods/troubleshoot#read-the-debug-log) l'id del mod:

267 

268* **`hooks module acme-guard@acme-tools loaded`, con `tier prepend`**: il mod conta come della vostra organizzazione e viene eseguito per primo

269* **La stessa riga con `tier user`**: Claude Code lo tratta come un mod di un utente. Una seconda riga, `prependPlugins names acme-guard@acme-tools, which is not an enabled managed plugin with a hooks module; skipped`, dice che la lista lo ha saltato.

270 

271Queste regole decidono quali id nelle due liste hanno effetto:

272 

273* **La lista sostituisce il valore predefinito**: quando impostate `prependPlugins` nelle impostazioni gestite, nominate `sec-default@builtin` in essa per mantenere la guardia incorporata. La guardia è incorporata e non ha bisogno di una voce `enabledPlugins`.

274* **I vostri id devono contare come vostri**: nelle impostazioni gestite, Claude Code salta un id il cui plugin non soddisfa le tre condizioni per un mod di un'organizzazione

275* **I repository non possono impostarli**: Claude Code legge entrambe le impostazioni dalle impostazioni gestite e mai da un file di impostazioni di un repository. Un utente può impostarli in `~/.claude/settings.json` per ordinare i loro mod propri solo su una macchina senza impostazioni gestite, e solo quando non sono connessi con un piano Team o Enterprise. Ovunque altro, Claude Code ignora entrambe le chiavi nelle impostazioni dell'utente. Una lista lì né aggiunge né rimuove la guardia incorporata.

276 

277<h3 id="enforce-a-policy-with-a-mod-of-your-own">

278 Applicare una politica con un mod vostro

279</h3>

280 

281Per tenere fuori ogni mod di un utente, non avete bisogno di un mod vostro. Impostate [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading). Scrivete un mod di politica quando volete ammettere alcuni mod degli utenti e rifiutarne altri, o per registrare quello che i mod fanno.

282 

283Ogni volta che un altro mod sta per caricarsi, il vostro mod riceve la lista che `claude plugin validate` stampa, in un evento denominato [`plugin.register`](/docs/it/plugins/mods/reference#other-mods). Un mod in `prependPlugins` può leggere quella lista e rifiutare il mod. Può anche [agganciare qualsiasi chiamata dell'API dei mod per nome](/docs/it/plugins/mods/api#reach-files-processes-and-the-network) per registrare o rifiutare quella chiamata per ogni altro mod. Il nome è il metodo senza il `$.`, quindi un aggancio su `fs.write` vede ogni chiamata `$.fs.write`.

284 

285Questo mod di politica rifiuta qualsiasi mod di un utente il cui codice proprio chiama `$.process.run` o `$.process.spawn`. Mantiene anche un log di audit, scrivendo ogni chiamata di strumento e ogni file che un mod scrive nel log di debug. Poiché viene eseguito per primo, il log registra quello che è stato richiesto, prima che qualsiasi mod di un utente lo cambi. Salvate come `acme-guard/hooks/register.js`:

286 

287```javascript acme-guard/hooks/register.js theme={null}

288// I metodi che nessun mod di un utente può chiamare, ognuno scritto namespace.method

289const BLOCKED_CALLS = ['process.run', 'process.spawn']

290 

291export function register(on) {

292 // Viene eseguito ogni volta che un altro mod sta per caricarsi

293 on('plugin.register', async ($, e, next) => {

294 // Mantieni le chiamate in quel mod il cui codice è sulla lista bloccata

295 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))

296 if (e.tier === 'user' && blocked.length > 0) {

297 // Restituire refuse impedisce al mod di caricarsi, e il testo è il motivo

298 return { refuse: 'Acme policy: mods may not call ' + blocked.join(', ') }

299 }

300 // Lascia caricare ogni altro mod

301 return next(e)

302 })

303 

304 // Registra ogni chiamata di strumento, poi lasciala andare avanti invariata

305 on('tool.call', async ($, e, next) => {

306 $.ui.log('audit tool.call ' + e.tool, { to: 'debug' })

307 return next(e)

308 })

309 

310 // Registra quale mod ha scritto un file, poi il percorso, tra virgolette perché il mod lo ha scelto

311 on('fs.write', async ($, e, next) => {

312 $.ui.log('audit fs.write by ' + next.origin.plugin + ' ' + JSON.stringify(e.path), { to: 'debug' })

313 return next(e)

314 })

315}

316```

317 

318Il file registra tre hook:

319 

320* **`plugin.register`**: decide se un altro mod viene caricato. Rifiuta un mod di un utente che chiama un metodo bloccato e passa ogni altro mod.

321* **`tool.call`**: scrive una riga come `audit tool.call Bash` nel log di debug per ogni chiamata di strumento, e non cambia nulla

322* **`fs.write`**: scrive una riga come `audit fs.write by reader "/tmp/notes.md"` per ogni chiamata `$.fs.write` che un altro mod fa, e non cambia nulla. Il nome del mod viene per primo e il percorso è tra virgolette, quindi un percorso che un mod sceglie non può passare per un altro campo della riga.

323 

324L'hook `plugin.register` legge due campi dell'evento:

325 

326* **`e.tier`**: dove il mod verrebbe eseguito, uno di `prepend`, `user`, `append`, o `builtin`. Ogni mod che una persona installa è `user`.

327* **`e.uses.calls`**: i metodi dell'API dei mod che il mod chiama, ognuno scritto `namespace.method` come `process.run`, senza il `$.` che `claude plugin validate` stampa

328 

329Quando un utente installa un mod che chiama `$.process.run`, il mod non viene caricato, e il suo log di debug ha una riga che termina con `refused by acme-guard:` e il vostro motivo. Il rifiuto raggiunge anche la trascrizione in una [sessione che ricarica a caldo una directory di plugin](/docs/it/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing). Per bloccare una chiamata senza rifiutare l'intero mod, restituite `{ deny: 'your reason' }` da un aggancio sul nome di quella chiamata.

330 

331Per inviare le righe di audit da qualche parte diversa dal log di debug, chiamate `$.http.fetch` dagli stessi hook.

332 

333Una sessione può funzionare senza il vostro mod. Se il thread di lavoro che esegue i mod installati [si arresta tre volte](/docs/it/plugins/mods/troubleshoot#mods-that-run-in-the-hooks-worker-are-off-for-this-session), Claude Code scarica ogni mod che non è incorporato, incluso il vostro, finché l'utente non esegue `/reload-plugins` o non avvia una nuova sessione. E un utente che avvia Claude Code con `--safe-mode` viene eseguito senza mod installati, incluso il vostro.

334 

335[Creare un mod](/docs/it/plugins/mods/create) copre i file che un mod ha bisogno. [Testare un mod che giudica altri mod](/docs/it/plugins/mods/test#test-a-mod-that-judges-other-mods) ha un file di test per questo mod di politica.

336 

337<h4 id="refuse-mods-when-your-check-fails">

338 Rifiutare i mod quando il vostro controllo fallisce

339</h4>

340 

341Se il vostro hook `plugin.register` genera un'eccezione o supera il suo limite di tempo, Claude Code salta l'hook, quindi il controllo fallisce aperto e il mod che stava controllando viene caricato. Per fallire chiuso e rifiutare i mod degli utenti, spostate il controllo in una funzione denominata e aggiungete un gestore `.catch` che restituisce il rifiuto. Questa versione del file mostra solo l'hook `plugin.register`, quindi mantenete i due hook di audit dalla prima versione in `register`:

342 

343```javascript acme-guard/hooks/register.js theme={null}

344const BLOCKED_CALLS = ['process.run', 'process.spawn']

345 

346// Lo stesso controllo di prima, spostato in una funzione propria

347async function checkMod($, e, next) {

348 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))

349 if (e.tier === 'user' && blocked.length > 0) {

350 return { refuse: 'Acme policy: mods may not call ' + blocked.join(', ') }

351 }

352 return next(e)

353}

354 

355export function register(on) {

356 // Il gestore viene eseguito solo quando checkMod genera un'eccezione o supera il suo limite di tempo

357 on('plugin.register', checkMod).catch(async ($, e, next) => {

358 // Lascia caricare i mod della vostra organizzazione e i mod incorporati

359 if (e.tier !== 'user') return next(e)

360 // Rifiuta il mod dell'utente che non poteva essere controllato

361 return { refuse: 'Acme policy check failed, so this mod was not loaded' }

362 })

363}

364```

365 

366Con il gestore in place, un mod che stava per essere controllato quando il controllo ha generato un'eccezione o ha superato il tempo limite non viene caricato, e la riga di rifiuto porta il secondo motivo, come in `refused by acme-guard: Acme policy check failed, so this mod was not loaded`. Il gestore passa ogni mod al di fuori del tier `user` a `next(e)`, quindi un controllo fallito non ferma i mod che la vostra organizzazione elenca. [Gestire un hook che fallisce](/docs/it/plugins/mods/events#handle-a-hook-that-fails) copre `.catch` per altri eventi.

367 

368<h2 id="next-steps">

369 Prossimi passi

370</h2>

371 

372* [Sicurezza dei plugin](/docs/it/plugins/security): quello che qualsiasi plugin può fare sulla macchina di un utente, e come esaminarne uno prima che sia installato

373* [Panoramica dei mod](/docs/it/plugins/mods/overview): cosa è un mod e come si confronta con hook, skills e server MCP

374* [L'ordine in cui i mod vengono eseguiti](/docs/it/plugins/mods/events#the-order-mods-run-in): come `prependPlugins` e `appendPlugins` si adattano ai mod degli utenti

375* [Impostazioni e variabili di ambiente](/docs/it/plugins/mods/reference#settings-and-environment-variables): ogni impostazione nominata su questa pagina in una tabella

plugins/mods/api.md +218 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Usa l'API mods

6 

7> Chiama l'API mods da un mod Claude Code per aggiungere comandi e strumenti, chiamare un modello, eseguire lavoro su un timer, inviare messaggi ad altre sessioni e accedere a file e rete.

8 

9L'API mods è l'insieme di metodi che un mod chiama per agire: aggiungere comandi e strumenti, chiamare un modello, eseguire lavoro tra gli eventi e accedere al file system, ai processi e alla rete. Ogni hook la riceve come primo argomento, `$`, con i metodi raggruppati in namespace come `$.ui` e `$.fs`. [Events](/docs/it/plugins/mods/events) decidono quando un hook viene eseguito, e l'API mods è ciò che l'hook chiama una volta che lo fa.

10 

11Costruisci il tuo [primo mod](/docs/it/plugins/mods/create) prima di iniziare qui. Per ogni metodo, vedi [mods API methods](/docs/it/plugins/mods/reference#mods-api-methods) o leggi [i tipi per la tua build](/docs/it/plugins/mods/create#get-the-types-for-your-build).

12 

13<h2 id="add-a-command-or-a-tool">

14 Aggiungi un comando o uno strumento

15</h2>

16 

17Un mod può aggiungere un comando per l'utente da eseguire e uno strumento per Claude da chiamare. Registra entrambi in un hook [`session.start`](/docs/it/plugins/mods/reference#session). Claude Code attende quell'hook prima del primo prompt, quindi ciò che registri è disponibile dal primo turno.

18 

19<h3 id="add-a-command">

20 Aggiungi un comando

21</h3>

22 

23Un comando è per l'utente. Registralo, quindi gestisci [`command.run`](/docs/it/plugins/mods/reference#commands-and-configuration) per il suo nome. Questo esempio aggiunge un comando `/standup` che accetta un numero facoltativo di giorni:

24 

25```javascript theme={null}

26on('session.start', async ($, e, next) => {

27 // Add /standup to the command list, with the description the user sees there

28 await $.command.register({ name: 'standup', description: 'Summarize what changed today', argumentHint: '[days]' })

29 return next(e)

30})

31 

32// The matcher limits the hook to /standup, so other commands don't reach it

33on('command.run', { command: 'standup' }, async ($, e) => {

34 // e.args is the text typed after the command name, or an empty string

35 return { text: 'Summary for the last ' + (e.args || '1') + ' day(s): ...' }

36})

37```

38 

39Dopo l'avvio della sessione, `/standup` appare con la sua descrizione nell'elenco che vedi quando digiti `/`. L'`argumentHint` viene visualizzato nel prompt dopo che digiti il comando e uno spazio, come in `/standup [days]`. Quando esegui `/standup 3`, il secondo hook restituisce `Summary for the last 3 day(s): ...`, e la trascrizione mostra quel testo dopo il nome del plugin. L'hook non chiama mai `next`, perché il comando non ha comportamento diverso dal tuo.

40 

41Il `text` che restituisci viene stampato nella trascrizione e Claude lo legge. Per non stampare nulla, come un comando che apre solo un [pane](/docs/it/plugins/mods/interface#pick-where-to-draw), restituisci `{}`. Per consentire al comando di essere eseguito mentre Claude sta lavorando, aggiungi `immediate: true` alla registrazione.

42 

43Scegli un nome che nessun comando integrato utilizza. Digita `/` in una sessione per vederli. `$.command.register` genera un'eccezione per un nome occupato, con un messaggio come `"/focus" refused: it is the built-in /focus"`. Un hook che genera un'eccezione viene saltato, quindi il resto del tuo hook `session.start` non viene eseguito nemmeno. Registra i comandi per ultimi in quell'hook, oppure avvolgi la chiamata in `try` e `catch`.

44 

45<h3 id="add-a-tool">

46 Aggiungi uno strumento

47</h3>

48 

49Uno strumento è per Claude. Registralo con un nome, una descrizione che Claude legge e uno JSON Schema per il suo input. Claude lo vede con un nome più lungo composto da `mcp__`, il nome del tuo plugin, due underscore e il nome che hai registrato. Gestisci le sue chiamate in un hook [`tool.call`](/docs/it/plugins/mods/events#guard-or-change-a-tool-call) filtrato a quel nome completo. Questo esempio, da un plugin denominato `my-mod`, registra `ticket`, quindi il nome completo è `mcp__my-mod__ticket`. Fornisce a Claude uno strumento che cerca un ticket in un issue tracker:

50 

51```javascript theme={null}

52on('session.start', async ($, e, next) => {

53 await $.tool.register({

54 name: 'ticket',

55 // Claude decides when to call the tool from this description

56 description: 'Look up a ticket by its id and return its title and status',

57 // The arguments Claude has to send: one required string named id

58 inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] },

59 })

60 return next(e)

61})

62 

63// The full tool name is mcp__, the plugin's name, and the registered name

64on('tool.call', { tool: 'mcp__my-mod__ticket' }, async ($, e) => {

65 // The tool's arguments are fields of e, so the id is e.id

66 const response = await $.http.fetch('https://tickets.example.com/api/' + encodeURIComponent(e.id))

67 // Return a result either way, so Claude learns when the lookup failed

68 return { result: response.ok ? response.text : 'Lookup failed with status ' + response.status }

69})

70```

71 

72Quando chiedi informazioni su un ticket, Claude può chiamare `mcp__my-mod__ticket` con il suo id. Il secondo hook recupera il ticket e restituisce il corpo della risposta, che Claude legge come risultato dello strumento. Quando il server risponde con uno stato di errore, Claude legge `Lookup failed with status` e il numero.

73 

74<h2 id="call-a-model">

75 Chiama un modello

76</h2>

77 

78Un mod può fare una domanda a un modello di sua iniziativa, al di fuori della conversazione, per un piccolo lavoro come ordinare o riassumere un pezzo di testo. `$.model.complete` invia un prompt a un modello con le credenziali della tua sessione e si risolve nella risposta. Non ha cronologia della conversazione.

79 

80Questo hook risponde a un comando `/triage`, [registrato come comando](#add-a-command), chiedendo a un piccolo modello di etichettare il testo digitato dopo di esso:

81 

82```javascript theme={null}

83on('command.run', { command: 'triage' }, async ($, e) => {

84 const r = await $.model.complete({

85 model: 'haiku',

86 // The system prompt sets the job, and the prompt carries the text to label

87 system: 'Reply with one word: bug, feature, or question.',

88 prompt: e.args,

89 // One word needs few tokens, and the call gives up after 15 seconds

90 maxTokens: 20,

91 timeoutMs: 15000,

92 })

93 // r.text exists only when the model answered, so check r.isAnswered first

94 const label = r.isAnswered ? r.text.trim() : 'unknown'

95 return { text: 'Label: ' + label }

96})

97```

98 

99Quando esegui `/triage the export button does nothing`, il mod invia quel testo al modello e stampa la sua risposta, come `Label: bug`. La conversazione di Claude non fa parte della richiesta. Quando il modello non risponde, l'etichetta è `unknown`.

100 

101Un errore dell'API Claude non rifiuta la chiamata, quindi controlla `r.isAnswered` e leggi `r.reason` quando è `false`. La chiamata rifiuta solo per una richiesta che Claude Code non invierà, come un modello che la tua organizzazione blocca. [I tipi per la tua build](/docs/it/plugins/mods/create#get-the-types-for-your-build) elencano le altre opzioni, come `effort`, e i [limiti](/docs/it/plugins/mods/reference#limits) forniscono il valore predefinito di `maxTokens`.

102 

103`$.model.fork({ prompt })` pone una domanda sulla conversazione corrente, con lo stesso modello e prompt di sistema, quindi l'API Claude serve la maggior parte da prompt caching.

104 

105Queste chiamate utilizzano il piano o la chiave API dell'utente.

106 

107<h2 id="run-work-in-the-background">

108 Esegui lavoro in background

109</h2>

110 

111Il lavoro che sopravvive a un evento, come controllare qualcosa una volta al minuto, viene eseguito su un timer che avvii da `session.start`. Un hook stesso viene eseguito per un evento e ha un limite di tempo di 10 secondi del suo tempo di esecuzione. Il tempo trascorso in attesa di `next` o di una chiamata all'API mods non conta, tranne un `$.clock.sleep`. `$.clock.every` e `$.clock.after` prendono il posto di `setInterval` e `setTimeout`, con il ritardo in millisecondi per primo: `$.clock.after(5000, fn)` chiama `fn` una volta, cinque secondi da ora. Ognuno restituisce un timer con un metodo `cancel()`, e `await $.clock.now()` fornisce l'ora in millisecondi.

112 

113Questo hook cerca i controlli di una pull request una volta al minuto e mostra il risultato sotto il prompt. `summarize` è una funzione tua che trasforma l'output JSON del comando in poche parole:

114 

115```javascript theme={null}

116on('session.start', async ($, e, next) => {

117 // Call the function every 60,000 milliseconds, starting one minute from now

118 $.clock.every(60_000, async () => {

119 const status = await $.process.run(['gh', 'pr', 'checks', '--json', 'state'])

120 // Replace the line under the prompt with the latest summary

121 $.ui.status('checks: ' + summarize(status.stdout))

122 })

123 // Return without waiting for the timer, so the session starts right away

124 return next(e)

125})

126```

127 

128La sessione inizia come al solito. Un minuto dopo, una riga appare sotto il prompt con un `⚠`, il nome del mod e poi `checks:` e il tuo riassunto. Viene sostituito una volta al minuto dopo. Il callback del timer viene eseguito al di fuori di qualsiasi evento, quindi continua a funzionare tra i turni e non ne avvia uno. Se il callback genera un'eccezione, l'errore va al [debug log](/docs/it/plugins/mods/troubleshoot#read-the-debug-log) e il timer viene eseguito di nuovo all'intervallo successivo.

129 

130<h3 id="show-something-without-starting-a-turn">

131 Mostra qualcosa senza avviare un turno

132</h3>

133 

134Un lavoro in background può mostrare all'utente qualcosa senza avviare un turno. Ognuna di queste chiamate mette il testo in un posto diverso:

135 

136| Chiamata | Cosa vede l'utente |

137| :- | :- |

138| `$.ui.status(text)` | Una riga sotto il prompt che rimane fino a quando non la cambi. Inizia con `⚠` e il nome del mod, come in `⚠ my-mod: checks: 3 passing`. |

139| `$.ui.toast(text)` | Una piccola casella in alto a destra, con il nome del mod sopra il testo, che scompare dopo pochi secondi |

140| `$.ui.log(text)` | Una riga attenuata nella trascrizione che Claude non legge. Inizia con `●` e il nome del mod, come in `● my-mod: build finished`. |

141 

142<h3 id="start-a-turn-from-a-background-job">

143 Avvia un turno da un lavoro in background

144</h3>

145 

146Quando un lavoro in background trova qualcosa che ha bisogno dell'attenzione di Claude, può avviare un turno inviando un prompt con `$.prompt.submit({ text })`. Claude legge il testo dopo una frase che nomina il tuo mod come mittente. Per inviarlo come parole proprie dell'utente, senza quella frase, aggiungi `asUser: true`. La chiamata attende fino a quando la sessione è inattiva e quindi avvia un nuovo turno. Si risolve quando quel turno inizia, quindi non `await` in un handler che viene eseguito mentre Claude sta lavorando.

147 

148<h3 id="stop-background-work">

149 Interrompi il lavoro in background

150</h3>

151 

152Il lavoro in background si interrompe in due modi. I timer si interrompono quando il modulo viene ricaricato. Per il lavoro di lunga durata all'interno di un hook, [`next.signal`](/docs/it/plugins/mods/reference#the-hook-function) è un `AbortSignal` che si interrompe quando l'evento che il tuo hook sta gestendo viene abbandonato, ad esempio quando l'utente interrompe, quindi passalo a qualsiasi cosa di lunga durata.

153 

154<h2 id="send-and-receive-messages-between-sessions">

155 Invia e ricevi messaggi tra sessioni

156</h2>

157 

158Un mod può inviare un messaggio in testo semplice a un'altra delle tue sessioni o a uno dei subagent di questa sessione e osservare i messaggi che arrivano e partono. `$.session.send({ to, text })` ne invia uno, la stessa consegna che lo strumento SendMessage effettua. `to` è `{ sessionId }` per una sessione, `{ agentId }` per un subagent da `$.agent.list()`, o l'indirizzo stringa da cui proviene un messaggio ricevuto. La chiamata si risolve una volta che il messaggio è in coda, con `{ isDelivered: true }`. Quando nulla è stato consegnato si risolve con `{ isDelivered: false, reason }`, e `reason` spiega perché.

159 

160Questo hook risponde a un comando `/ping`, [registrato come comando](#add-a-command), chiedendo alla sessione il cui id digiti dopo di esso uno stato:

161 

162```javascript theme={null}

163on('command.run', { command: 'ping' }, async ($, e) => {

164 // e.args is the session id typed after /ping

165 const sent = await $.session.send({ to: { sessionId: e.args }, text: 'Status? One line.' })

166 // The call resolves either way, so check isDelivered to learn what happened

167 if (!sent.isDelivered) $.ui.toast('Not delivered: ' + sent.reason)

168 // An empty result prints nothing in this session's transcript

169 return {}

170})

171```

172 

173Quando il messaggio è in coda, nulla appare nella tua sessione e Claude dell'altra sessione legge `Status? One line.` Quando nulla è stato consegnato, una piccola casella in alto a destra fornisce il motivo e scompare dopo pochi secondi.

174 

175Due eventi consentono a un mod di osservare i messaggi. Restituisci `next(e)` da entrambi per passare ogni messaggio invariato:

176 

177| Evento | Si attiva quando | Campi utili |

178| :- | :- | :- |

179| `session.receive` | Un messaggio arriva per questa sessione, prima che Claude lo legga | `e.text` e `e.origin.kind`, come `peer` o `peer-send-message` per un'altra sessione o agente, `task-notification` o `scheduled-trigger`. Restituisci `{ consumed: reason }` per impedirlo a Claude. |

180| `session.send` | Un messaggio sta per partire, dallo strumento SendMessage o da un mod | `e.to`, `e.text` e `e.origin.kind`, che è `model` o `plugin` |

181 

182Una sessione impostata per [rifiutare messaggi in entrata](/docs/it/cross-session-messaging#control-inbound-messages) rifiuta un messaggio prima che `session.receive` si attivi, quindi un hook non lo vede mai. Un messaggio che è in sospeso per la tua approvazione raggiunge prima l'hook, quindi un mod può leggere un messaggio che non hai ancora approvato. Il `next(e)` dell'hook rifiuta quando il messaggio non viene consegnato.

183 

184Il nome del mittente su un messaggio ricevuto è quello che il mittente ha scritto, quindi non basare una decisione su di esso.

185 

186<h2 id="reach-files-processes-and-the-network">

187 Accedi a file, processi e rete

188</h2>

189 

190Un mod accede al file system, ai processi e alla rete attraverso l'API mods, con le stesse autorizzazioni dell'utente che esegue Claude Code. Il modulo hooks stesso non ha API Node.js, nessun timer globale come `setTimeout` e nessun accesso di rete o file proprio. Le API JavaScript standard e web come `URL`, `TextEncoder`, `AbortController` e `crypto.subtle` sono disponibili. Ogni namespace di seguito copre un tipo di accesso:

191 

192| Namespace | Cosa fa |

193| :- | :- |

194| `$.fs` | `read(path)`, `write(path, text)`, `exists(path)`, `stat(path)` e `list(path)` funzionano su file e directory |

195| `$.process` | `run(['git', 'status'])` avvia un comando e si risolve quando esce. `spawn` trasmette l'output di un comando di lunga durata. |

196| `$.http` | `fetch(url, init)` su `http` o `https`. Si risolve in `{ status, ok, headers, text }` una volta che il corpo è stato letto. |

197| `$.store` | Un archivio chiave-valore JSON del tuo plugin, mantenuto tra le sessioni |

198| `$.env` | `get` e `set` variabili di ambiente. Scrivi il nome come una stringa letterale. |

199| `$.settings` | `read` cosa contengono i file di impostazioni e la politica gestita |

200| `$.session` | `messages()` restituisce la trascrizione come un elenco di `{ role, text, toolUses }`. Anche la directory di lavoro, il modello e altro. [`usage()`](/docs/it/plugins/mods/reference#mods-api-methods) restituisce l'uso della finestra di contesto e i limiti del piano. |

201| `$.mcp` | `call` uno strumento su un server MCP connesso |

202 

203File e processi hanno poche regole proprie:

204 

205* **Percorsi**: un percorso relativo è sotto la directory di lavoro della sessione

206* **`$.fs.list`**: restituisce le voci di una directory come `{ name, kind, size, isLink }` e non scende nelle sottodirectory

207* **`$.process.run`**: accetta un elenco di argomenti e non utilizza shell. Si risolve in `{ exitCode, stdout, stderr }` indipendentemente dal codice di uscita. Rifiuta se il programma non può avviarsi o è ancora in esecuzione al timeout, che è 30 secondi per impostazione predefinita, quindi avvolgilo in `try` e `catch`.

208 

209Ognuna di queste chiamate è essa stessa un evento, denominato per il suo namespace e metodo senza il `$.`, come `fs.read` per `$.fs.read`. Un mod [precedente nella catena](/docs/it/plugins/mods/events#the-order-mods-run-in) può osservare, riscrivere o rifiutare la tua chiamata, che è come un'organizzazione limita ciò che i mod raggiungono.

210 

211<h2 id="next-steps">

212 Passaggi successivi

213</h2>

214 

215* [Reagisci agli eventi](/docs/it/plugins/mods/events): hook tool calls, prompts e turns

216* [Disegna nell'interfaccia](/docs/it/plugins/mods/interface): mostra ciò che il tuo mod raccoglie in un pane o sopra il prompt

217* [Testa un mod](/docs/it/plugins/mods/test): stub qualsiasi di queste chiamate in un test

218* [Mods reference](/docs/it/plugins/mods/reference): ogni evento, ogni metodo dell'API mods e i limiti

plugins/mods/create.md +395 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Creare un mod

6 

7> Fai scrivere a Claude un mod di Claude Code da una descrizione, oppure scrivi tu stesso uno che conta le chiamate ai tool e aggiunge un comando. Impara il ciclo di ricaricamento e convalida.

8 

9Un mod è un [plugin](/docs/it/plugins/overview) di Claude Code con un file di ingresso, chiamato modulo hooks: un file JavaScript o TypeScript le cui funzioni Claude Code chiama quando accadono eventi. Ci sono due modi per crearne uno:

10 

11* **Chiedi a Claude di scriverlo**: [descrivi quello che vuoi](#ask-claude-for-a-mod) in una sessione di Claude Code

12* **Scrivilo tu stesso**: [segui il tutorial](#write-a-mod-yourself) per imparare come funziona il codice di un mod. Non hai bisogno di Node.js, di un bundler o di un passo di build, perché Claude Code carica i file `.js` e `.ts` direttamente.

13 

14Se non hai ancora deciso se un mod è lo strumento giusto, leggi prima il [confronto nella panoramica](/docs/it/plugins/mods/overview#compare-mods-settings-hooks-skills-and-mcp-servers).

15 

16<Note>

17 I mod richiedono Claude Code v2.1.287 o successivo. Nel tuo shell, esegui `claude --version` per verificare. Per vedere se i mod possono caricarsi per te, vedi [Verificare se i mod possono caricarsi](/docs/it/plugins/mods/troubleshoot#check-whether-mods-can-load).

18</Note>

19 

20<h2 id="ask-claude-for-a-mod">

21 Chiedi a Claude un mod

22</h2>

23 

24Descrivi il mod che vuoi in una sessione interattiva di Claude Code, e Claude lo scrive. Claude lavora da una [skill](/docs/it/skills) integrata denominata `plugin-authoring`, che gli dice dove scrivere il mod, quali eventi e metodi ha la tua versione e come il mod viene caricato. Claude può caricare la skill quando chiedi un mod, oppure puoi caricarla tu stesso eseguendo `/plugin-authoring` al prompt di Claude Code.

25 

26Il mod viene eseguito una volta che lo approvi, tranne nelle [sessioni in cui un mod scritto da Claude non può caricarsi](#sessions-that-skip-the-approval).

27 

28<Steps>

29 <Step title="Descrivi il mod">

30 Chiedi il mod con le tue parole, ad esempio `make a mod that shows the current git branch above the prompt`. Claude scrive il mod in una directory propria nella cartella dei mod della sessione, che è `~/.claude/dev-mods/` seguita dall'ID della sessione. Il percorso completo di un mod è simile a `~/.claude/dev-mods/3f2a9c1e-5b7d-4e8a-9c21-6d0f4b8a7e13/git-branch/`.

31 

32 <Note>

33 Nelle [modalità di autorizzazione](/docs/it/permission-modes#protected-paths) `default` e `acceptEdits`, Claude Code chiede prima che Claude crei ciascuno dei file del mod, perché `~/.claude` è un percorso protetto. Approva ogni file quando appare.

34 </Note>

35 </Step>

36 

37 <Step title="Approva il mod">

38 Quando Claude salva il primo file, Claude Code chiede se abilitare il ricaricamento a caldo per la sessione. Il ricaricamento a caldo esegue i mod scritti da Claude in questa sessione e raccoglie ogni modifica successiva.

39 

40 Scegli una di queste risposte:

41 

42 * **Abilita per questa sessione**: i mod nella cartella dei mod della sessione si caricano quando il turno termina e si ricaricano alla fine di ogni turno che li modifica. La tua risposta dura per la sessione, anche dopo averla ripresa.

43 * **Non ora**: nulla si carica per ora. I file rimangono dove Claude li ha scritti e i mod si caricano la prossima volta che quella sessione inizia. Per impedire che un mod si carichi mai, elimina la sua directory.

44 </Step>

45 

46 <Step title="Verifica che il mod sia stato caricato">

47 Esegui `/plugin` al prompt di Claude Code e premi Tab finché la scheda **Installed** non è selezionata. Elenca il mod e puoi disattivarlo lì.

48 </Step>

49 

50 <Step title="Prova il mod">

51 Usa quello che hai chiesto. Per il prompt di esempio, il nome del ramo corrente appare sopra la casella del prompt. Se il mod non fa quello che volevi, dì a Claude cosa cambiare. Il mod si ricarica alla fine di ogni turno che modifica i suoi file, quindi puoi provare la modifica non appena Claude finisce.

52 </Step>

53</Steps>

54 

55<h3 id="use-the-mod-in-other-sessions">

56 Usa il mod in altre sessioni

57</h3>

58 

59Un mod scritto da Claude si carica solo nella sessione che lo ha creato, e Claude Code elimina la cartella dei mod di quella sessione una volta che è più vecchia di [`cleanupPeriodDays`](/docs/it/settings-reference#cleanupperioddays). Per mantenere il mod, copia la sua directory fuori dalla cartella dei mod in un posto tuo, come `~/mods/git-branch`. Quindi scegli come caricarlo:

60 

61* **In una sessione che avvii**: nel tuo shell, esegui `claude --plugin-dir ~/mods/git-branch`

62* **Per altre persone**: [aggiungilo a un marketplace](#share-your-mod) in modo che possano installarlo

63 

64<h3 id="sessions-that-skip-the-approval">

65 Sessioni in cui un mod scritto da Claude non può caricarsi

66</h3>

67 

68Un mod scritto da Claude si carica solo dopo che lo approvi, in uno spazio di lavoro affidabile dove i mod possono essere eseguiti. In queste sessioni non si carica:

69 

70* **Nessuno è lì per approvare**: la sessione non può mostrarti un prompt, come in un'esecuzione `claude -p` o in modalità [`dontAsk`](/docs/it/permission-modes)

71* **Lo spazio di lavoro non è affidabile**: non hai accettato il prompt di fiducia per la directory

72* **I mod sono fermati**: hai avviato con `--safe-mode` o `--bare`, hai impostato `disableAllHooks`, o le [impostazioni gestite](/docs/it/plugins/mods/admin#choose-how-much-to-allow) della tua organizzazione lo bloccano

73 

74<h2 id="write-a-mod-yourself">

75 Scrivi un mod tu stesso

76</h2>

77 

78In questo tutorial costruisci un mod denominato `first-mod` che conta le chiamate ai tool che Claude fa, mostra il conteggio accanto al spinner mentre Claude lavora e aggiunge un comando `/tally` che lo stampa. Quindi leggi le dichiarazioni di tipo che Claude Code scrive accanto al tuo mod ed esegui `claude plugin validate`. Insieme mostrano gli eventi e i metodi che la tua versione offre e cosa Claude Code legge dal tuo codice.

79 

80Questa registrazione mostra il mod finito. Lo spinner conta le chiamate ai tool, `/tally` stampa il conteggio e una modifica al codice ha effetto mentre la sessione è in esecuzione:

81 

82<Frame>

83 <video autoPlay muted loop playsInline controls className="w-full dark:hidden" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-first-mod-light.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=eb561134afa90375777408453ba51c77" aria-label="In a Claude Code session, the prompt 'list the files here and read the README' is typed and sent. The spinner reads 'Thinking · tool calls: 1' and the count rises as Claude works. The /tally command prints 'first-mod: Claude has made 3 tool calls since this mod loaded'. A line says first-mod reloaded and lists its four hooks. On the next prompt the spinner reads 'Thinking · tools used: 1'." data-path="images/mods-first-mod-light.mp4" />

84 

85 <video autoPlay muted loop playsInline controls className="w-full hidden dark:block" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-first-mod-dark.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=09779dadc7ef66c2b1e2da0c2e31ac72" aria-label="In a Claude Code session, the prompt 'list the files here and read the README' is typed and sent. The spinner reads 'Thinking · tool calls: 1' and the count rises as Claude works. The /tally command prints 'first-mod: Claude has made 3 tool calls since this mod loaded'. A line says first-mod reloaded and lists its four hooks. On the next prompt the spinner reads 'Thinking · tools used: 1'." data-path="images/mods-first-mod-dark.mp4" />

86</Frame>

87 

88Scrivi tre file:

89 

90```text theme={null}

91first-mod/

92├── .claude-plugin/

93│ └── plugin.json

94└── hooks/

95 ├── hooks.json

96 └── register.js

97```

98 

99* **`plugin.json`**: il [manifest](/docs/it/plugins/manifest-reference) del plugin

100* **`hooks.json`**: [punta al tuo file di codice](/docs/it/plugins/mods/reference#files)

101* **`register.js`**: il tuo codice, chiamato modulo hooks

102 

103<Steps>

104 <Step title="Crea la directory del plugin">

105 Crea le due directory che contengono i file:

106 

107 <Tabs>

108 <Tab title="Bash o Zsh">

109 ```bash theme={null}

110 mkdir -p first-mod/.claude-plugin first-mod/hooks

111 ```

112 </Tab>

113 

114 <Tab title="PowerShell">

115 ```powershell theme={null}

116 New-Item -ItemType Directory -Force first-mod\.claude-plugin, first-mod\hooks

117 ```

118 </Tab>

119 </Tabs>

120 </Step>

121 

122 <Step title="Scrivi il manifest">

123 Un mod è un plugin e un mod ha bisogno di un [manifest](/docs/it/plugins/manifest-reference). Il manifest di questo mod non ha campi speciali. Salva questo come `first-mod/.claude-plugin/plugin.json`:

124 

125 ```json first-mod/.claude-plugin/plugin.json theme={null}

126 {

127 "name": "first-mod",

128 "version": "0.1.0",

129 "description": "Counts Claude's tool calls, shows the count beside the spinner, and adds a /tally command",

130 "author": { "name": "Your Name" }

131 }

132 ```

133 </Step>

134 

135 <Step title="Dì a Claude Code dove si trova il tuo codice">

136 Quando Claude Code carica un plugin, legge il `hooks/hooks.json` del plugin. La chiave `modules` in quel file fornisce il percorso al tuo codice, e averlo è quello che rende il plugin un mod. Elenca un percorso, relativo a `hooks.json`. Qui punta a `register.js`, che scrivi nel passo successivo.

137 

138 Salva questo come `first-mod/hooks/hooks.json`:

139 

140 ```json first-mod/hooks/hooks.json theme={null}

141 {

142 "description": "The first-mod hooks module",

143 "modules": ["./register.js"]

144 }

145 ```

146 </Step>

147 

148 <Step title="Scrivi il codice">

149 Questo file è il codice del mod, chiamato modulo hooks. Quando il mod si carica, Claude Code chiama la funzione `register` che il file esporta e le passa una funzione denominata [`on`](/docs/it/plugins/mods/reference#the-hook-function). Ogni chiamata a `on` registra un gestore di eventi, chiamato hook, per l'evento che nomina.

150 

151 Salva questo come `first-mod/hooks/register.js`:

152 

153 ```javascript first-mod/hooks/register.js theme={null}

154 // The count, shared by the hooks below

155 let calls = 0

156 

157 // Claude Code calls this once when the mod loads

158 export function register(on) {

159 // Runs when the session starts, before your first prompt

160 on('session.start', async ($, e, next) => {

161 // Add the /tally command

162 await $.command.register({

163 name: 'tally',

164 description: 'Show how many tool calls Claude has made',

165 })

166 // Let the session start as usual

167 return next(e)

168 })

169 

170 // Runs each time Claude is about to use a tool

171 on('tool.call', async ($, e, next) => {

172 calls += 1

173 // Ask Claude Code to draw the interface again, so the new count shows

174 $.ui.invalidate('ui.render')

175 // Let the tool run as usual

176 return next(e)

177 })

178 

179 // Runs when you type /tally, and only then, because of the matcher

180 on('command.run', { command: 'tally' }, async () => {

181 // The text to print in the transcript

182 return { text: 'Claude has made ' + calls + ' tool calls since this mod loaded' }

183 })

184 

185 // Runs each time Claude Code draws the spinner

186 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

187 // Keep Claude Code's spinner, with the count added after its word

188 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })

189 })

190 }

191 ```

192 

193 Il file mantiene un conteggio in `calls` e registra quattro hook:

194 

195 * **[`session.start`](/docs/it/plugins/mods/reference#session)** viene eseguito quando la sessione inizia, prima del tuo primo prompt, e di nuovo ogni volta che il mod si ricarica. Aggiunge il comando `/tally` a Claude Code.

196 * **[`tool.call`](/docs/it/plugins/mods/reference#tools)** viene eseguito ogni volta che Claude sta per usare un tool. Aggiunge uno a `calls` e chiede a Claude Code di disegnare di nuovo l'interfaccia.

197 * **[`command.run`](/docs/it/plugins/mods/reference#commands-and-configuration)** viene eseguito quando digiti `/tally`. Restituisce il testo da stampare.

198 * **[`ui.render`](/docs/it/plugins/mods/reference#interface)** viene eseguito ogni volta che Claude Code disegna lo spinner. Aggiunge il conteggio dopo la parola dello spinner.

199 

200 [Come funziona il mod di esempio](#how-the-example-mod-works) spiega i tre argomenti che ogni hook accetta e cosa ciascuno restituisce.

201 </Step>

202 

203 <Step title="Carica il mod">

204 Avvia Claude Code con il flag `--plugin-dir`, che carica una directory di plugin per una sessione senza installarla:

205 

206 ```bash theme={null}

207 claude --plugin-dir ./first-mod

208 ```

209 </Step>

210 

211 <Step title="Prova il mod">

212 Chiedi a Claude di fare qualcosa che richieda alcuni tool call, come `list the files here and read the README`. Mentre Claude lavora, la parola dello spinner è seguita da un conteggio che aumenta, come in `Thinking · tool calls: 2…`. Quando Claude finisce, digita `/tally` e premi Invio. La trascrizione mostra `first-mod: Claude has made 2 tool calls since this mod loaded`, con il tuo conteggio. Claude Code mette il nome del plugin davanti al testo del comando.

213 

214 Per verificare il comando senza una sessione interattiva, eseguilo in modalità non interattiva:

215 

216 ```bash theme={null}

217 claude -p "/tally" --plugin-dir ./first-mod

218 ```

219 

220 ```text theme={null}

221 first-mod: Claude has made 0 tool calls since this mod loaded

222 ```

223 

224 Se `/tally` non è nell'elenco dei comandi, il modulo non è stato caricato. Vedi [Scopri perché un mod non fa nulla](/docs/it/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing).

225 </Step>

226 

227 <Step title="Cambia il codice mentre la sessione è in esecuzione">

228 Lascia la sessione aperta. In `register.js`, cambia `' · tool calls: '` in `' · tools used: '` nell'hook `ui.render` e salva. La riga evidenziata è quella che cambia:

229 

230 ```javascript first-mod/hooks/register.js {4} theme={null}

231 // Runs each time Claude Code draws the spinner

232 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

233 // Keep Claude Code's spinner, with the count added after its word

234 return next({ ...e, props: { ...e.props, suffix: ' · tools used: ' + calls + '…' } })

235 })

236 ```

237 

238 Una riga nella trascrizione dice che `first-mod` si è ricaricato ed elenca i suoi hook, e lo spinner successivo usa il nuovo testo, come in `Thinking · tools used: 1…`.

239 </Step>

240</Steps>

241 

242<h3 id="how-the-example-mod-works">

243 Come funziona il mod di esempio

244</h3>

245 

246Ogni funzione che passi a `on` è un hook, che è un gestore di eventi. Claude Code passa a ogni hook gli stessi tre argomenti:

247 

248* **L'API dei mod**, denominata `$`: ogni metodo che un mod può chiamare per raggiungere l'esterno, in [namespace](/docs/it/plugins/mods/reference#mods-api-methods) come `$.ui` e `$.command`

249* **L'evento**, denominato `e`: l'[input dell'evento](/docs/it/plugins/mods/reference#events) come dati semplici, come il nome e gli argomenti di una chiamata a un tool

250* **Il gestore successivo**, denominato [`next`](/docs/it/plugins/mods/events#how-a-hook-handles-an-event): una funzione che passa l'evento agli altri mod e poi al comportamento proprio di Claude Code, e restituisce il risultato

251 

252Gli hook in `first-mod` gestiscono i loro eventi nei tre modi in cui un hook può:

253 

254* **Osservare**: l'hook `session.start` registra il comando e l'hook `tool.call` conta la chiamata e chiede un ridisegno. Entrambi restituiscono `next(e)`, quindi la sessione inizia e il tool viene eseguito come al solito.

255* **Rispondere**: l'hook `command.run` restituisce il suo risultato e non chiama mai `next`. Il secondo argomento a `on`, `{ command: 'tally' }`, è un filtro, chiamato [matcher](/docs/it/plugins/mods/events#filter-which-events-a-hook-handles), quindi l'hook viene eseguito solo per `/tally`.

256* **Riscrivere**: l'hook `ui.render` chiama `next` con una copia di `e` il cui `suffix` contiene il conteggio, quindi Claude Code disegna il suo spinner usuale con il tuo testo dopo la parola

257 

258Claude Code osserva una directory caricata con `--plugin-dir` e ricarica a caldo il modulo hooks quando un file in essa cambia. Ogni ricaricamento esegue di nuovo `register`, quindi `calls` torna a `0` e `/tally` inizia a contare di nuovo. Per mantenere un valore tra i ricaricamenti, vedi [Mantieni lo stato](/docs/it/plugins/mods/interface#keep-state).

259 

260<h2 id="keep-working-on-a-mod">

261 Continua a lavorare su un mod

262</h2>

263 

264Una volta che un mod si carica, puoi far cambiare a Claude il mod, verificare il tuo codice rispetto alle definizioni di tipo per la tua versione, elencare gli eventi e le chiamate che Claude Code trova in esso e testarlo.

265 

266<h3 id="change-a-mod-with-claude">

267 Cambia un mod con Claude

268</h3>

269 

270Per cambiare un mod che hai già, avvia la sessione con `--plugin-dir` puntato alla directory del mod, in modo che quello che Claude scrive si carichi nella stessa sessione:

271 

272```bash theme={null}

273claude --plugin-dir ./first-mod

274```

275 

276Quindi chiedi il cambiamento, ad esempio `add a /tally-reset command to this mod that sets the tally back to zero`. Claude modifica il modulo hooks, esegue `claude plugin validate` e corregge quello che segnala. Una directory che carichi con `--plugin-dir` è un [percorso protetto](/docs/it/permission-modes#protected-paths), quindi nelle modalità `default` e `acceptEdits` ti viene chiesto di approvare ogni modifica di Claude al mod. La tabella dei percorsi protetti fornisce il risultato per le altre modalità di autorizzazione.

277 

278I file che Claude salva durante il suo turno si ricaricano quando il turno termina, quindi puoi provare `/tally-reset` non appena Claude finisce.

279 

280<h3 id="get-the-types-for-your-build">

281 Ottieni le definizioni di tipo per la tua versione

282</h3>

283 

284Ogni volta che Claude Code carica o ricarica un mod da una directory che passi a `--plugin-dir`, o un mod [scritto da Claude per te](#ask-claude-for-a-mod), scrive file di dichiarazione TypeScript, che terminano in `.d.ts`, in `.claude-plugin/types/` dentro la directory del mod. Descrivono gli eventi esatti, i metodi dell'API dei mod e gli elementi nelle superfici della versione di Claude Code che stai eseguendo, quindi il tuo editor può completare automaticamente e controllare il tipo dei tuoi hook. Per sfogliare le dichiarazioni online, leggi [`mods/types/claude-code.d.ts`](https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts) nel repository di Claude Code, la cui prima riga nomina la versione che l'ha scritto. La directory contiene questi file:

285 

286| Percorso | Cosa dichiara |

287| :- | :- |

288| `claude-code/index.d.ts` | Ogni evento e il suo input e risultato, ogni namespace e metodo dell'API dei mod, e gli elementi che ogni superficie può disegnare |

289| `claude-code-tools/index.d.ts` | Gli input e i risultati dei tool integrati, in modo che il controllo `e.tool === 'Bash'` restringa `e` |

290| `claude-code-mcp/index.d.ts` | Gli input dei tool MCP che erano connessi l'ultima volta che hai salvato un file nel mod |

291| `index.d.ts` in una directory denominata per un plugin | Quello che quel plugin aggiunge all'API dei mod. C'è una directory per ogni plugin che il tuo `plugin.json` elenca sotto `dependencies`. |

292| `tsconfig.json` | Opzioni del compilatore che si adattano a un modulo hooks |

293 

294Se il tuo mod non ha un suo `tsconfig.json`, Claude Code ne aggiunge uno alla radice del mod che estende quello generato, quindi il tuo editor e `tsc -p ./first-mod` controllano il tipo del mod senza ulteriore configurazione.

295 

296Gli eventi e i metodi possono cambiare tra le versioni, quindi affidati a questi file rispetto a qualsiasi pagina, inclusa questa, quando non sono d'accordo.

297 

298`claude-code/index.d.ts` è il riferimento più completo per la tua build, con un commento e un esempio per ogni metodo dell'API dei mod. Per cercare qualcosa, cerca il file per il suo nome, come `'tool.call'`.

299 

300<h3 id="check-what-claude-code-reads-from-your-mod">

301 Verifica cosa Claude Code legge dal tuo mod

302</h3>

303 

304Per vedere il tuo mod nel modo in cui Claude Code lo vede, senza eseguire il tuo codice o avviare una sessione, usa `claude plugin validate`. Controlla il manifest ed esegue la stessa analisi statica sul sorgente del modulo hooks che Claude Code esegue quando carica un mod. Nel tuo shell, eseguilo sulla directory del mod:

305 

306```bash theme={null}

307claude plugin validate ./first-mod

308```

309 

310Per `first-mod`, l'output include queste righe.

311 

312```text theme={null}

313 ❯ ./register.js hooks: session.start, tool.call, command.run{command=tally}, ui.render{component=Spinner}

314 ❯ ./register.js calls: $.command.register, $.ui.invalidate

315 

316✔ Validation passed

317```

318 

319La riga `hooks:` elenca gli eventi che il tuo modulo aggancia, ciascuno con il suo filtro tra parentesi graffe. La riga `calls:` elenca ogni metodo dell'API dei mod che chiama. Un modulo che legge o imposta variabili di ambiente ottiene anche righe `env reads:` e `env writes:`, e uno che usa [`$.state`](/docs/it/plugins/mods/interface#keep-state) ottiene `state reads:` e `state writes:`.

320 

321Se un evento che intendevi agganciare manca dalla prima riga, Claude Code non chiamerà nemmeno quell'hook. La causa usuale è un nome di evento scritto male, che il comando segnala come un errore come `"tool.calls" is not an event`.

322 

323Segui queste regole in modo che l'analisi statica possa trovare ogni hook e chiamata:

324 

325* Scrivi ogni chiamata all'API dei mod per intero: `$`, il namespace, quindi il metodo, come in `$.store.get('notes')`. Puoi passare `$` a una funzione dichiarata al livello superiore dello stesso file, e per una tua funzione denominata `loadNotes`, la riga `calls:` legge quindi `$.store.get (via loadNotes)`. Passare `$` a un metodo, una funzione definita dentro l'hook, o una funzione che importi da un altro dei tuoi file non supera la convalida. Le funzioni `read` e `update` che [`$.state`](/docs/it/plugins/mods/interface#keep-state) usa sono le importazioni che possono prenderlo. Non assegnare `$` o uno dei suoi namespace a una variabile, destrutturarlo o indicizzarlo con un nome calcolato. `const ui = $.ui` fallisce con `$.ui is used as a value`.

326* Scrivi il nome dell'evento in ogni chiamata `on` come un letterale di stringa, come in `'tool.call'`. Una variabile, o un ciclo su un elenco di nomi, fallisce con `the event name passed to on() is not a string literal`.

327* Dentro `register`, non dichiarare una seconda variabile o parametro denominato `on`. La convalida fallisce con `"on" is declared again (shadowed)`.

328* Importa solo da file dentro la directory del plugin, per percorso relativo. L'unica importazione nuda consentita è `claude-code`, per i tipi e alcuni helper.

329* Usa dichiarazioni `import` in cima al file, come in `import { name } from './file.js'`. Un `import()` dinamico fallisce con `a dynamic import(); a hooks module imports its own files with an import declaration`.

330* Scrivi ogni file come un modulo ES, con `import` e non `require`. Il [riferimento](/docs/it/plugins/mods/reference#files) elenca le estensioni di file che Claude Code carica.

331 

332<h3 id="test-the-mod">

333 Testa il mod

334</h3>

335 

336Puoi scrivere test automatizzati per un mod ed eseguirli dal tuo shell con `claude plugin test`, senza sessione, accesso o rete. Un test solleva gli eventi che i tuoi hook gestiscono e verifica cosa hanno fatto gli hook.

337 

338Questo test solleva due tool call, esegue `/tally` e verifica che la risposta conti entrambi. Salvalo come `first-mod/tests/first-mod.test.ts`:

339 

340```typescript first-mod/tests/first-mod.test.ts theme={null}

341import { expect, test } from 'claude-code/testing'

342 

343test('/tally reports the tool calls the mod has seen', async ($, on) => {

344 // Answer each tool call in Claude Code's place, so no tool runs

345 on('tool.call', () => ({ result: 'ok' }))

346 

347 // Raise two tool calls, which the mod's tool.call hook counts

348 await $.tool.call({ tool: 'Bash', command: 'ls' })

349 await $.tool.call({ tool: 'Read', file_path: 'README.md' })

350 

351 // Run /tally and check the text its hook returns

352 const answer = await $.command.run({ command: 'tally', args: '' })

353 expect(answer.text).toBe('Claude has made 2 tool calls since this mod loaded')

354})

355```

356 

357Nel tuo shell, esegui i test dalla directory `first-mod`:

358 

359```bash theme={null}

360claude plugin test

361```

362 

363L'output nomina ogni test e se è passato, con tempi che variano da esecuzione a esecuzione:

364 

365```text theme={null}

366tests/first-mod.test.ts:

367(pass) /tally reports the tool calls the mod has seen [22.87ms]

368 

369 1 pass

370 0 fail

371Ran 1 test across 1 file. [0.19s]

372```

373 

374[Testa un mod](/docs/it/plugins/mods/test) copre lo stub di una chiamata a un modello o dello store, e il test di timer e disegni.

375 

376<h2 id="share-your-mod">

377 Condividi il tuo mod

378</h2>

379 

380Un mod è un plugin, quindi lo versioni nel manifest e le persone lo installano e aggiornano con i comandi `/plugin`. Per darlo ad altre persone, [aggiungilo a un marketplace](/docs/it/plugins/publish).

381 

382Prima di farlo, controlla il `name` del plugin: `claude plugin validate` fallisce un nome che [sembra uno dei propri di Anthropic](/docs/it/plugins/manifest-reference#name), come uno che inizia con `claude-`. Gli eventi e i metodi possono cambiare tra le versioni, quindi il tuo README è il posto per dire quale versione di Claude Code hai testato.

383 

384Continua a sviluppare rispetto alla directory con `--plugin-dir`, non rispetto a una copia installata. Claude Code memorizza nella cache un plugin installato per versione, quindi le tue modifiche non raggiungono la copia installata finché non aumenti la versione e installi di nuovo.

385 

386<h2 id="next-steps">

387 Prossimi passi

388</h2>

389 

390* [Disegna nell'interfaccia](/docs/it/plugins/mods/interface): apri un riquadro, disegna sopra il prompt e aggiungi pulsanti e campi di testo

391* [Reagisci agli eventi](/docs/it/plugins/mods/events): aggancia le chiamate ai tool, i prompt e i turni

392* [Usa l'API dei mod](/docs/it/plugins/mods/api): aggiungi comandi e tool, chiama un modello ed esegui lavoro su un timer

393* [Testa un mod](/docs/it/plugins/mods/test): stub quello che Claude Code risponderebbe, e testa timer e disegni

394* [Risolvi i problemi di un mod](/docs/it/plugins/mods/troubleshoot): i motivi per cui un mod non fa nulla e il log di debug

395* [Leggi il sorgente dei mod integrati](/docs/it/plugins/mods/overview#read-the-source-of-built-in-mods): plugin completi, ciascuno con il suo modulo hooks e test

plugins/mods/events.md +336 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Reagire agli eventi con un mod

6 

7> Gestire gli eventi di Claude Code da un mod: osservare, riscrivere o rispondere alle chiamate di strumenti, ai prompt e ai turni, filtrare quali eventi un hook gestisce e pianificare per altri mod.

8 

9Un hook è un gestore di eventi: una funzione che Claude Code esegue quando si verifica un evento denominato. Claude Code genera un evento in ogni punto in cui sta per agire, ad esempio quando esegue uno strumento, invia un prompt, invia una richiesta al modello o avvia o termina una sessione. Il vostro hook viene eseguito prima che Claude Code agisca, quindi può osservare l'evento, riscriverlo o rispondere al suo posto. Registrate un hook con [`on(eventName, handler)`](/docs/it/plugins/mods/reference#the-hook-function).

10 

11Costruite il vostro [primo mod](/docs/it/plugins/mods/create) prima di iniziare qui. Per ogni evento e i suoi campi esatti, consultate il [riferimento](/docs/it/plugins/mods/reference#events) o leggete [i tipi per la vostra build](/docs/it/plugins/mods/create#get-the-types-for-your-build).

12 

13<h2 id="how-a-hook-handles-an-event">

14 Come un hook gestisce un evento

15</h2>

16 

17Un hook si trova tra un evento e ciò che Claude Code farebbe al riguardo, quindi può osservare l'evento, riscriverlo o rispondere da solo. Riceve tre argomenti: l'[API dei mods](/docs/it/plugins/mods/api) come `$`, l'evento come `e` e il gestore successivo come `next`. I gestori di un evento formano una catena middleware. `next(e)` chiama il gestore successivo, che è un hook di un altro mod o, alla fine della catena, il comportamento proprio di Claude Code, e si risolve nel risultato. Ciò che il vostro hook fa con `next` decide quale dei tre fa.

18 

19<h3 id="observe-an-event">

20 Osservare un evento

21</h3>

22 

23Per osservare un evento senza modificarlo, fate il vostro lavoro e restituite `next(e)`. Questo hook registra ogni strumento che Claude sta per utilizzare:

24 

25```javascript theme={null}

26on('tool.call', async ($, e, next) => {

27 // Viene eseguito prima che lo strumento venga eseguito

28 $.ui.log('Claude is about to use ' + e.tool)

29 // Passa l'evento invariato

30 return next(e)

31})

32```

33 

34Prima di ogni esecuzione dello strumento, una riga attenuata come `● my-mod: Claude is about to use Bash` appare nella trascrizione, dove `my-mod` è il nome del vostro plugin. Lo strumento viene eseguito come farebbe senza il mod.

35 

36Per agire dopo l'evento, `await next(e)`, fate il vostro lavoro e restituite il risultato. Questo hook registra ogni strumento dopo che è stato eseguito:

37 

38```javascript theme={null}

39on('tool.call', async ($, e, next) => {

40 // Lascia che lo strumento venga eseguito e attendi il suo risultato

41 const result = await next(e)

42 // Viene eseguito dopo che lo strumento è stato eseguito

43 $.ui.log(e.tool + ' finished')

44 // Restituisci il risultato invariato

45 return result

46})

47```

48 

49La riga ora appare dopo che ogni strumento termina. Claude legge lo stesso risultato in entrambi i casi, perché l'hook restituisce ciò a cui `next(e)` si è risolto.

50 

51<h3 id="rewrite-an-event">

52 Riscrivere un evento

53</h3>

54 

55Per modificare ciò su cui Claude Code agisce, ad esempio il testo di un prompt, chiamate `next` con una copia modificata dell'evento. L'evento stesso è immutabile: è congelato a ogni profondità e l'assegnazione a un campo genera un errore. Questo hook taglia ogni prompt prima che venga inviato:

56 

57```javascript theme={null}

58on('prompt.submit', async ($, e, next) => {

59 // Passa una copia dell'evento con il suo testo modificato

60 return next({ ...e, text: e.text.trim() })

61})

62```

63 

64I gestori successivi e Claude Code ricevono il prompt tagliato e non vedono mai l'originale. Potete anche modificare il risultato: `await next(e)`, quindi restituite una copia del risultato con un campo sostituito.

65 

66<h3 id="answer-an-event">

67 Rispondere a un evento

68</h3>

69 

70Per gestire un evento da soli, restituite un risultato senza chiamare `next`. Questo cortocircuita la catena, quindi i mod successivi e il comportamento proprio di Claude Code non vengono eseguiti. Questo hook rifiuta ogni comando Bash:

71 

72```javascript theme={null}

73on('tool.call', { tool: 'Bash' }, async () => {

74 // Nessuna chiamata a next, quindi il comando non viene mai eseguito

75 return { deny: 'Bash is turned off in this project. Use the file tools.' }

76})

77```

78 

79Quando Claude prova un comando Bash, il comando non viene eseguito e Claude legge il testo `deny` come risultato dello strumento. Ogni evento ha la sua forma di risultato, che il [riferimento degli eventi](/docs/it/plugins/mods/reference#events) elenca.

80 

81<h3 id="filter-which-events-a-hook-handles">

82 Filtrare quali eventi un hook gestisce

83</h3>

84 

85Per eseguire un hook solo per alcuni eventi, passate un filtro come secondo argomento a `on`. Claude Code chiama il filtro un matcher. È un oggetto i cui campi vengono confrontati con quelli dell'evento e l'hook viene eseguito solo quando ogni campo corrisponde. Un campo può essere un valore, un array di valori consentiti o un'espressione regolare.

86 

87Ogni riga in questo esempio registra la stessa funzione, `hook`, per un insieme più ristretto di chiamate di strumenti:

88 

89```javascript theme={null}

90// Una stringa corrisponde a un valore: solo chiamate Bash

91on('tool.call', { tool: 'Bash' }, hook)

92// Un array corrisponde a qualsiasi valore in esso: chiamate Edit e Write

93on('tool.call', { tool: ['Edit', 'Write'] }, hook)

94// Un'espressione regolare corrisponde per pattern: ogni strumento di un server MCP

95on('tool.call', { tool: /^mcp__github__/ }, hook)

96```

97 

98`hook` viene eseguito una volta per una chiamata Bash, Edit o Write e una volta per una chiamata a uno strumento il cui nome inizia con `mcp__github__`. Una chiamata a qualsiasi altro strumento, come Read, non corrisponde a nessuno dei tre, quindi `hook` non viene eseguito per essa.

99 

100Il nome dell'evento può essere un wildcard. `'classic.*'` corrisponde a ogni [evento hook delle impostazioni](#hook-the-settings-hook-events). `'*'` corrisponde a ogni evento tranne gli [eventi di telemetria](/docs/it/plugins/mods/reference#telemetry), che potete agganciare per nome o come `'telemetry.*'`.

101 

102Registrate ogni evento una volta per matcher. Se chiamate `on` due volte per `session.start` senza un matcher, il modulo non si carica con `on("session.start") is registered twice without a matcher`. Mettete tutto ciò che il vostro mod fa all'inizio della sessione in un hook.

103 

104<h2 id="hook-what-claude-is-doing">

105 Agganciare ciò che Claude sta facendo

106</h2>

107 

108Agganciate questi eventi per vedere o modificare una chiamata di strumento, un prompt o un turno mentre accade. Per ogni evento e ciò che un hook può restituire, consultate il [riferimento degli eventi](/docs/it/plugins/mods/reference#events).

109 

110<h3 id="guard-or-change-a-tool-call">

111 Proteggere o modificare una chiamata di strumento

112</h3>

113 

114Un hook `tool.call` vede ogni strumento che Claude sta per utilizzare, quindi può rifiutare la chiamata, modificare i suoi argomenti o lasciarla passare. `tool.call` si attiva quando Claude Code sta per eseguire uno strumento, incluse le chiamate che un subagent effettua e le chiamate agli strumenti MCP. `e.tool` è il nome dello strumento e gli argomenti dello strumento sono campi di `e`, come `e.command` per Bash. Quando chiamate `next(e)`, Claude Code esegue il controllo delle autorizzazioni e quindi lo strumento.

115 

116Questo hook rifiuta un comando Bash che fa un force-push e dice a Claude perché:

117 

118```javascript theme={null}

119// Il matcher limita l'hook alle chiamate Bash, quindi e.command è il comando della shell

120on('tool.call', { tool: 'Bash' }, async ($, e, next) => {

121 if (/git push .*--force/.test(e.command)) {

122 // Restituire senza chiamare next risponde all'evento, quindi il comando non viene mai eseguito

123 return { deny: 'Force pushes are not allowed in this repository. Push to a new branch instead.' }

124 }

125 // Ogni altro comando va al controllo delle autorizzazioni e poi a Bash

126 return next(e)

127})

128```

129 

130Quando Claude prova `git push --force`, il comando non viene eseguito e non appare alcun prompt di autorizzazione, perché l'hook non chiama mai `next`. Claude legge il testo `deny` come risultato dello strumento, quindi scrivilo come un'istruzione su cui Claude può agire. Ogni altro comando Bash viene eseguito come farebbe senza il mod.

131 

132Per agire dopo che uno strumento è stato eseguito, `await next(e)`, fate il vostro lavoro e restituite ciò che `next` vi ha dato. Questo hook registra ogni file `.mdx` che Claude modifica, con [`$.ui.log`](/docs/it/plugins/mods/api#show-something-without-starting-a-turn), che aggiunge una riga attenuata alla trascrizione che Claude non legge:

133 

134```javascript theme={null}

135on('tool.call', { tool: ['Edit', 'Write'] }, async ($, e, next) => {

136 // Attendi il controllo delle autorizzazioni e lo strumento, e mantieni ciò che hanno prodotto

137 const result = await next(e)

138 // Una chiamata rifiutata torna come { deny }, e una fallita ha isError impostato

139 const changed = !result.deny && !result.isError

140 if (changed && e.file_path.endsWith('.mdx')) $.ui.log('Claude changed ' + e.file_path)

141 // Restituisci il risultato come è arrivato, quindi Claude legge ciò che lo strumento ha restituito

142 return result

143})

144```

145 

146Dopo che Claude modifica o scrive un file `.mdx`, una riga attenuata nella trascrizione nomina il file. Nulla viene registrato per un altro tipo di file o per una chiamata che è stata rifiutata o non è riuscita. La vista di Claude della chiamata non cambia, perché l'hook restituisce il risultato che ha ricevuto.

147 

148Per modificare una chiamata, passate argomenti modificati a `next`. Per riprovare una chiamata, chiamate `next(e)` di nuovo: un hook che vede `isError` sul primo risultato può eseguire lo strumento una seconda volta e restituire quel risultato. Per rispondere a una chiamata da soli, restituite un oggetto con un campo `result`, come `{ result: 'Skipped by my-mod' }`, senza chiamare `next`. Quando lo fate, non appare alcun prompt di autorizzazione e lo strumento non viene eseguito, quindi il risultato che restituite è tutto ciò che Claude apprende su ciò che è accaduto.

149 

150Gli hook nelle [impostazioni gestite](/docs/it/server-managed-settings) della vostra organizzazione vengono eseguiti prima di qualsiasi hook `tool.call` di un mod, e un blocco da uno di essi è definitivo.

151 

152<h4 id="hold-a-tool-call-until-the-user-decides">

153 Tenere una chiamata di strumento in sospeso fino a quando l'utente decide

154</h4>

155 

156Un hook può mettere in pausa una chiamata di strumento e chiedere all'utente cosa fare prima che proceda. Un hook `tool.call` può `await` prima di chiamare `next` o restituire, e la chiamata dello strumento rimane in sospeso fino ad allora. Per porre la domanda all'utente, chiamate `$.ui.ask`. Mostra la vostra domanda sopra un elenco numerato delle vostre opzioni, nella finestra di dialogo che Claude usa per chiedervi qualcosa, e si risolve nell'etichetta che l'utente sceglie. Dopo le vostre opzioni, la finestra di dialogo aggiunge una riga per digitare una risposta diversa e una riga **Chat about this**.

157 

158Il pattern `RISKY` in questo esempio corrisponde a `rm -r`, `rm -rf`, `git reset --hard` e `git push` con `--force`, e manca altre ortografie come `git push -f`. Questo modulo chiede prima di eseguire un comando Bash che corrisponde al pattern:

159 

160```javascript theme={null}

161const RISKY = /\brm\s+-rf?\b|\bgit\s+reset\s+--hard\b|\bgit\s+push\b.*--force/

162 

163export function register(on) {

164 on('tool.call', { tool: 'Bash' }, async ($, e, next) => {

165 // Lascia passare ogni altro comando senza una domanda

166 if (!RISKY.test(e.command)) return next(e)

167 // Inizia dalla risposta sicura, quindi una domanda a cui nessuno risponde rifiuta il comando

168 let answer = 'Refuse'

169 try {

170 // La chiamata dello strumento attende qui fino a quando l'utente sceglie una delle due etichette

171 answer = await $.ui.ask('Run this command? ' + e.command, ['Run it', 'Refuse'])

172 } catch {

173 // L'utente ha chiuso la domanda, o questo è un'esecuzione claude -p senza nessuno a cui chiedere

174 }

175 if (answer !== 'Run it') {

176 // Rispondi senza chiamare next, quindi il comando non viene eseguito

177 return { deny: 'The user declined this command. Ask before trying a different approach.' }

178 }

179 return next(e)

180 })

181}

182```

183 

184Quando Claude prova un comando come `rm -rf build`, la domanda appare con il comando in essa, e il comando attende la risposta:

185 

186* **L'utente sceglie Run it**: l'hook chiama `next(e)` e il solito controllo delle autorizzazioni viene comunque eseguito dopo

187* **L'utente sceglie Refuse**: il comando non viene eseguito e Claude legge il testo `deny`

188* **L'utente digita una risposta**: `$.ui.ask` si risolve nel testo digitato. L'hook lo confronta con `Run it`, quindi qualsiasi altro testo rifiuta il comando.

189* **Nessuno risponde**: `$.ui.ask` rifiuta quando l'utente chiude la domanda o sceglie **Chat about this**, e in un'esecuzione `claude -p`, quindi il blocco `catch` lascia la risposta a `Refuse`

190 

191Mantenete l'attesa all'interno di una chiamata API dei mods come `$.ui.ask`, perché quel tempo non conta rispetto al [limite di tempo di 10 secondi](/docs/it/plugins/mods/reference#limits) dell'hook. Il tempo trascorso in attesa di una promessa propria conta. Claude Code salta un hook che scade, quindi il comando tenuto in sospeso verrebbe eseguito.

192 

193<h3 id="rewrite-or-add-to-a-prompt">

194 Riscrivere o aggiungere a un prompt

195</h3>

196 

197Un hook `prompt.submit` vede ogni prompt prima che il turno inizi, quindi può riscrivere il testo o aggiungervi. `e.text` è ciò che è stato digitato.

198 

199| Per fare questo | Restituite questo |

200| :- | :- |

201| Riscrivere il prompt. Il messaggio nella trascrizione mostra il nuovo testo. | `next({ ...e, text: newText })` |

202| Aggiungere testo che solo Claude legge, dopo il prompt | `next({ ...e, context: [...(e.context ?? []), extraText] })` |

203| Impedire che il prompt venga inviato | `{ drop: 'the reason' }` |

204 

205Questo hook aggiunge il nome del ramo corrente per Claude ogni volta che un prompt menziona una pull request:

206 

207```javascript theme={null}

208on('prompt.submit', async ($, e, next) => {

209 // Passa un prompt che non menziona una pull request così com'è

210 if (!/\bPR\b|pull request/i.test(e.text)) return next(e)

211 const git = await $.process.run(['git', 'branch', '--show-current'])

212 // Al di fuori di un repository git il comando fallisce, quindi non c'è ramo da aggiungere

213 if (git.exitCode !== 0) return next(e)

214 // Mantieni qualsiasi contesto che un hook precedente ha aggiunto e aggiungi un'altra riga per Claude

215 return next({ ...e, context: [...(e.context ?? []), 'Current branch: ' + git.stdout.trim()] })

216})

217```

218 

219Quando inviate un prompt come `open a PR for this change`, il vostro messaggio appare uguale nella trascrizione e Claude legge anche una riga come `Current branch: feature/auth` dopo di esso. Un prompt che non menziona una pull request passa invariato e `git` non viene eseguito.

220 

221[Altri eventi](/docs/it/plugins/mods/reference#prompts-and-what-claude-reads) coprono il resto di ciò che Claude legge: `prompt.section` per ogni sezione del prompt di sistema, `prompt.context` per il contesto inviato con il primo messaggio e `skill.prompt` per il testo di una skill. Il testo da questi hook che cambia tra le richieste [invalida la cache del prompt](/docs/it/prompt-caching).

222 

223<h3 id="follow-a-turn">

224 Seguire un turno

225</h3>

226 

227Un turno è tutto ciò che Claude fa in risposta a un prompt. Agganciate `turn.start`, `turn.step` e `turn.complete` per seguirne uno:

228 

229| Evento | Quando si attiva | Cosa può fare un hook |

230| :- | :- | :- |

231| `turn.start` | Un turno inizia | Osservare. `e.turnId` identifica il turno negli altri due eventi. |

232| `turn.step` | Claude Code sta per inviare una richiesta al modello. Un turno con chiamate di strumenti ne ha diverse. `e.agentId` è impostato per una richiesta di un subagent. | Leggere l'utilizzo dei token di ogni richiesta, inviarlo a un modello diverso con `next({ ...e, model })` o rispondere senza chiamare il modello |

233| `turn.complete` | Il turno è terminato, incluso un turno che l'utente ha interrotto, dove `e.isAborted` è `true`. `e.answer` è il testo finale di Claude, `e.durationMs` quanto tempo ha impiegato e `e.usage` i totali dei token del turno. Un turno di un subagent lo attiva con `e.agentId` impostato. | Osservare, o restituire un oggetto con un campo `text`, come `{ text: 'Done in 12 seconds' }`, per mostrare una riga sotto la risposta |

234 

235Scrivete un hook `turn.step` come generatore asincrono, perché l'evento trasmette. `yield* next(e)` inoltra la risposta mentre trasmette e si valuta nel risultato finito. Questo hook registra quanto di ogni richiesta il Claude API ha servito dalla [cache del prompt](/docs/it/prompt-caching):

236 

237```javascript theme={null}

238// function* rende l'hook un generatore, che può passare la risposta pezzo per pezzo

239on('turn.step', async function* ($, e, next) {

240 // Invia la richiesta, inoltra ogni pezzo mentre arriva e mantieni il risultato finito

241 const result = yield* next(e)

242 // Salta un risultato che non riporta conteggi di token

243 if (result.usage) {

244 $.ui.log('cache read ' + result.usage.cache_read_input_tokens + ' · wrote ' + result.usage.cache_creation_input_tokens)

245 }

246 // Restituisci il risultato invariato, quindi il turno continua come al solito

247 return result

248})

249```

250 

251La risposta di Claude trasmette allo schermo come farebbe senza il mod. Dopo che ogni richiesta termina, una riga attenuata nella trascrizione fornisce il numero di token letti dalla cache e il numero scritto in essa. Un turno con chiamate di strumenti ha diverse richieste, quindi aggiunge diverse righe.

252 

253`result.usage` contiene i quattro conteggi di token che il Claude API riporta per una richiesta, più il `model` che ha risposto: `input_tokens`, `output_tokens`, `cache_read_input_tokens` e `cache_creation_input_tokens`. L'hook viene eseguito anche per le richieste dei subagent, quindi controllate `e.agentId` quando volete solo la conversazione principale.

254 

255<h3 id="hook-the-settings-hook-events">

256 Agganciare gli eventi hook delle impostazioni

257</h3>

258 

259Gli hook delle impostazioni sono gli hook di comando, HTTP, prompt e agente che configurate nei file delle impostazioni. Ogni [evento hook delle impostazioni](/docs/it/hooks#hook-events), come `Stop`, `SessionEnd` o `PostToolUse`, è anche un evento denominato `classic.` seguito dal nome dell'evento hook delle impostazioni, come `classic.Stop`. `e` è il JSON che un hook delle impostazioni riceve su stdin, incluso `transcript_path`.

260 

261Questo hook usa `Stop`, che si attiva quando Claude finisce di rispondere, per registrare dove viene salvata la trascrizione della sessione:

262 

263```javascript theme={null}

264on('classic.Stop', async ($, e, next) => {

265 // e ha gli stessi campi che un hook Stop in un file di impostazioni legge da stdin

266 $.ui.log('Transcript saved at ' + e.transcript_path)

267 // Passa l'evento, quindi gli hook Stop nei vostri file di impostazioni vengono comunque eseguiti

268 return next(e)

269})

270```

271 

272Ogni volta che Claude finisce di rispondere, una riga attenuata nella trascrizione fornisce il percorso del file di trascrizione. L'hook restituisce `next(e)`, quindi osserva l'evento e non cambia nulla su come il turno termina.

273 

274<h2 id="run-alongside-other-mods">

275 Eseguire insieme ad altri mod

276</h2>

277 

278Diversi mod possono agganciare lo stesso evento e uno qualsiasi di essi può fallire. Se il vostro mod blocca le chiamate di strumenti, controllate la sua posizione nella catena e cosa accade quando il suo hook fallisce.

279 

280<h3 id="the-order-mods-run-in">

281 L'ordine in cui i mod vengono eseguiti

282</h3>

283 

284Gli hook sullo stesso evento formano una catena middleware. Ogni `next` di un mod chiama l'hook del mod seguente e l'ultimo `next` raggiunge il comportamento proprio di Claude Code. Il primo mod è il più esterno: vede l'evento prima degli altri e il risultato dopo di loro, e decide se gli altri vengono eseguiti. Un mod successivo non può impedire a uno precedente di vedere un evento.

285 

286Claude Code ordina la catena in base a dove proviene ogni mod:

287 

2881. La guardia incorporata `sec-default@builtin`, un mod incorporato in Claude Code che `/plugin` elenca come `cc-plugin-sec-default`, dove [si carica](/docs/it/plugins/mods/admin#know-what-happens-by-default), i mod che la vostra organizzazione elenca in [`prependPlugins`](/docs/it/plugins/mods/admin#install-your-organizations-mods) e quindi qualsiasi altro mod che conta come della vostra organizzazione e non è in `appendPlugins`

2892. I mod che installate

2903. I mod che la vostra organizzazione elenca in `appendPlugins`

2914. Altri mod incorporati in Claude Code

292 

293Tra i mod che installate, un mod viene eseguito prima dei mod che elenca sotto `dependencies` nel suo manifesto. All'interno di un modulo, gli hook vengono eseguiti nell'ordine in cui `register` ha chiamato `on`.

294 

295<h4 id="where-settings-hooks-run-in-the-order">

296 Dove gli hook delle impostazioni vengono eseguiti nell'ordine

297</h4>

298 

299Gli hook `PreToolUse` configurati nei file delle impostazioni vengono anche eseguiti durante una chiamata di strumento, in punti fissi nella catena dei mod:

300 

301* **Hook `PreToolUse` dalle impostazioni gestite**: vengono eseguiti prima dell'hook `tool.call` del primo mod, e un blocco da uno di essi è definitivo, quindi nessun mod vede la chiamata.

302* **Hook `PreToolUse` da ogni altro file di impostazioni e da `hooks/hooks.json` dei plugin**: vengono eseguiti dopo che l'ultimo mod chiama `next`, come parte del comportamento proprio di Claude Code. Un mod che risponde a `tool.call` senza chiamare `next` li impedisce di eseguire e un mod che chiama `next` vede la loro decisione nel risultato che restituisce.

303 

304[`tool.check`](/docs/it/plugins/mods/reference#tools) è l'evento in cui Claude Code decide se una chiamata di strumento può essere eseguita. Si attiva dopo quegli hook e le regole di autorizzazione hanno deciso e `next(e)` si risolve nella loro decisione. Un hook su `tool.check` può restituire una decisione diversa, come `{ decision: 'allow' }`, quindi può approvare una chiamata che un hook nel secondo gruppo ha bloccato. [Estendere le autorizzazioni con gli hook](/docs/it/permissions#extend-permissions-with-hooks) elenca quali decisioni prevalgono su un mod.

305 

306<h3 id="handle-a-hook-that-fails">

307 Gestire un hook che fallisce

308</h3>

309 

310Un hook che fallisce non interrompe la sessione e potete decidere cosa accade invece. Quando un hook senza un gestore `.catch` genera un errore, scade o restituisce un risultato di forma sbagliata, ciò che accade dopo dipende dal fatto che abbia chiamato `next`:

311 

312* **Ha fallito prima di chiamare `next`**: Claude Code lo salta e il gestore successivo viene eseguito al suo posto

313* **Ha fallito dopo che `next` si è risolto**: quel risultato rimane e nulla viene eseguito una seconda volta

314 

315Una riga nomina il mod, l'evento e il motivo, come `my-mod: tool.call hook skipped: threw Error: boom`. Dove lo leggete dipende dalla sessione, come [Scoprire perché un mod non fa nulla](/docs/it/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing) elenca. Un hook `ui.render` il cui disegno non convalida viene segnalato diversamente, come [Costruire un albero da elementi](/docs/it/plugins/mods/interface#build-a-tree-from-elements) descrive.

316 

317Per fare in modo che un hook che blocca le chiamate fallisca in modo sicuro, aggiungete un gestore di errore `.catch` che risponda al suo posto. Qui, `guard` è la vostra funzione hook:

318 

319```javascript theme={null}

320// on restituisce una registrazione e .catch allega un gestore a quel singolo hook

321on('tool.call', { tool: 'Bash' }, guard).catch(async ($, e, next) => {

322 // next.error.kind è 'throw' o 'timeout', che dice come guard ha fallito

323 return { deny: 'The command guard failed, so this command was not run: ' + next.error.kind }

324})

325```

326 

327Mentre `guard` funziona, il gestore non viene mai eseguito. Quando `guard` genera un errore o scade su una chiamata Bash, Claude Code chiama il gestore con lo stesso evento. Il gestore restituisce `{ deny }`, quindi il comando non viene eseguito e Claude legge il testo con `throw` o `timeout` alla fine. Senza il gestore, Claude Code salterebbe `guard` ed eseguirebbe il comando. Il gestore ha [un secondo](/docs/it/plugins/mods/reference#limits) per rispondere.

328 

329<h2 id="next-steps">

330 Passaggi successivi

331</h2>

332 

333* [Usare l'API dei mods](/docs/it/plugins/mods/api): aggiungere comandi e strumenti, chiamare un modello ed eseguire lavoro su un timer

334* [Disegnare nell'interfaccia](/docs/it/plugins/mods/interface): mostrare ciò che i vostri hook raccolgono in un riquadro o sopra il prompt

335* [Testare un mod](/docs/it/plugins/mods/test): generare uno qualsiasi di questi eventi da un test

336* [Riferimento dei mods](/docs/it/plugins/mods/reference): ogni evento, ogni metodo dell'API dei mods e i limiti

plugins/mods/interface.md +867 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Disegnare nell'interfaccia con un mod

6 

7> Disegnare riquadri, una banda sopra il prompt, pulsanti e campi di testo da un mod di Claude Code, gestire pressioni e input, e mantenere lo stato tra i ridisegni e le sessioni.

8 

9Un mod può disegnare la propria interfaccia in Claude Code e modificare parti dell'interfaccia che Claude Code disegna già. Ogni luogo in cui un mod può disegnare è chiamato [sito di rendering](/docs/it/plugins/mods/reference#render-sites), come un riquadro, la banda sopra il prompt, o lo spinner. Claude Code genera l'evento [`ui.render`](/docs/it/plugins/mods/reference#interface) ogni volta che sta per disegnare un sito di rendering, e il tuo hook per quell'evento restituisce cosa disegnare lì.

10 

11Questa mappa mostra dove un mod può disegnare in una sessione terminale:

12 

13<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5fda26b6609c62b68c6f9e528c1590ea" className="dark:hidden" alt="Mappa di una sessione terminale di Claude Code. Un mod può aggiungere un riquadro come barra laterale sulla destra, un toast in alto a destra della trascrizione, una riga di log nella trascrizione, una banda sopra il prompt, e una riga di stato sotto il prompt. Un mod può ridisegnare messaggi, righe di chiamate di strumenti, e lo spinner. Il prompt è proprio di Claude Code." width="600" height="336" data-path="images/mods-screen-map.svg" />

14 

15<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map-dark.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5b4161581a1bd2c0450b0c8b57bc1225" className="hidden dark:block" alt="Mappa di una sessione terminale di Claude Code. Un mod può aggiungere un riquadro come barra laterale sulla destra, un toast in alto a destra della trascrizione, una riga di log nella trascrizione, una banda sopra il prompt, e una riga di stato sotto il prompt. Un mod può ridisegnare messaggi, righe di chiamate di strumenti, e lo spinner. Il prompt è proprio di Claude Code." width="600" height="336" data-path="images/mods-screen-map-dark.svg" />

16 

17In un terminale più stretto, il riquadro si trova sopra il prompt invece che accanto alla trascrizione.

18 

19Costruisci il tuo [primo mod](/docs/it/plugins/mods/create) prima di iniziare qui. Inizia con l'esempio pratico, che costruisce un riquadro con due schede e un contatore, quindi leggi la sezione per ogni parte che desideri modificare.

20 

21<Note>

22 Per cercare una proprietà o un limite, consulta il [riferimento](/docs/it/plugins/mods/reference#render-sites).

23</Note>

24 

25<h2 id="build-a-pane-with-tabs">

26 Costruire un riquadro con schede

27</h2>

28 

29In questa sezione costruisci un mod che aggiunge un comando `/hello-tabs` e il comando apre un riquadro. Un riquadro è una barra laterale accanto alla trascrizione in un terminale fullscreen ampio, o una regione incorniciata sopra il prompt altrimenti. Questo riquadro mostra due schede, e la seconda scheda ha un pulsante che aggiunge uno a un contatore. Il conteggio è ancora lì dopo aver riavviato Claude Code.

30 

31Il mod finito assomiglia a questo. La registrazione apre il riquadro, passa alla seconda scheda, preme il pulsante alcune volte e ritorna alla prima scheda:

32 

33<Frame>

34 <video autoPlay muted loop playsInline controls className="w-full dark:hidden" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-hello-tabs-light.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=49d520094d87b5b44bfe50fa49677f06" aria-label="Il comando /hello-tabs viene digitato al prompt di Claude Code e un riquadro incorniciato si apre sopra di esso, con '1: One' e '2: Two' nella parte superiore e il testo 'This is the first tab.' La seconda scheda mostra un pulsante 'Add one' accanto a 'Count: 1', e il conteggio sale a 3. Il riquadro ritorna quindi alla prima scheda." data-path="images/mods-hello-tabs-light.mp4" />

35 

36 <video autoPlay muted loop playsInline controls className="w-full hidden dark:block" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-hello-tabs-dark.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=ff7a14d713d6e5d3b0000efa8522ea4b" aria-label="Il comando /hello-tabs viene digitato al prompt di Claude Code e un riquadro incorniciato si apre sopra di esso, con '1: One' e '2: Two' nella parte superiore e il testo 'This is the first tab.' La seconda scheda mostra un pulsante 'Add one' accanto a 'Count: 1', e il conteggio sale a 3. Il riquadro ritorna quindi alla prima scheda." data-path="images/mods-hello-tabs-dark.mp4" />

37</Frame>

38 

39Claude Code non ha un elemento schede integrato, quindi le schede sono due pulsanti in una riga. Il mod tiene traccia di quale è attivo e disegna il contenuto di quella scheda sotto la riga.

40 

41<Steps>

42 <Step title="Creare il plugin">

43 Un mod è un plugin con un manifesto, un `hooks.json` che punta al tuo codice, e il file di codice. [Creare un mod](/docs/it/plugins/mods/create#write-a-mod-yourself) spiega ognuno. Crea una directory denominata `hello-tabs` con directory `.claude-plugin` e `hooks` al suo interno, quindi salva i primi due file.

44 

45 Salva il manifesto come `hello-tabs/.claude-plugin/plugin.json`:

46 

47 ```json hello-tabs/.claude-plugin/plugin.json theme={null}

48 {

49 "name": "hello-tabs",

50 "version": "0.1.0",

51 "description": "Opens a pane with two tabs and a counter",

52 "author": { "name": "Your Name" }

53 }

54 ```

55 

56 Nomina il tuo punto di ingresso in `hello-tabs/hooks/hooks.json`:

57 

58 ```json hello-tabs/hooks/hooks.json theme={null}

59 {

60 "modules": ["./register.js"]

61 }

62 ```

63 </Step>

64 

65 <Step title="Scrivere il codice">

66 Il codice fa tre lavori, uno in ogni hook:

67 

68 * Aggiunge il comando `/hello-tabs`

69 * Apre il riquadro quando esegui quel comando

70 * Disegna il contenuto del riquadro: la riga di schede e il corpo della scheda aperta

71 

72 Due variabili a livello di modulo, `tab` e `count`, mantengono lo stato del riquadro.

73 

74 Salva questo come `hello-tabs/hooks/register.js`:

75 

76 ```javascript hello-tabs/hooks/register.js theme={null}

77 // L'id del riquadro, utilizzato per aprire il riquadro e per riconoscerlo durante il disegno

78 const PANE = 'hello-tabs'

79 

80 // Cosa mostra il riquadro: quale scheda è aperta e il valore del contatore

81 let tab = 'one'

82 let count = 0

83 

84 export function register(on) {

85 // Viene eseguito prima del tuo primo prompt, e di nuovo dopo un ricaricamento

86 on('session.start', async ($, e, next) => {

87 await $.command.register({ name: 'hello-tabs', description: 'Open the hello-tabs pane' })

88 // Carica il conteggio che una sessione precedente ha salvato, se ce n'è uno

89 const saved = await $.store.get('count')

90 if (typeof saved === 'number') count = saved

91 return next(e)

92 })

93 

94 // Viene eseguito quando digiti /hello-tabs

95 on('command.run', { command: 'hello-tabs' }, async ($) => {

96 // Apri il riquadro, dagli la tastiera, e lascia che Esc lo chiuda

97 await $.ui.open({ id: PANE, title: 'Hello tabs', focus: true, closeOnEscape: true })

98 // Non stampare nulla nella trascrizione

99 return {}

100 })

101 

102 // Viene eseguito ogni volta che Claude Code disegna un riquadro

103 on('ui.render', { component: 'Pane' }, async ($, e, next) => {

104 // Lascia in pace i riquadri degli altri mod

105 if (e.requestId !== PANE) return next(e)

106 // Ottieni gli elementi che questa app può disegnare

107 const { Box, Text, Button } = $.ui.resolve(e)

108 // Chiedi a Claude Code di eseguire di nuovo questo hook

109 const redraw = () => $.ui.invalidate('ui.render')

110 

111 // Una scheda: un pulsante che passa a quella scheda quando viene premuto

112 const tabButton = (name, label, hotkey) =>

113 Button({

114 key: 'tab-' + name,

115 label,

116 hotkey,

117 plain: true,

118 // Attenua la scheda che non è aperta

119 dimColor: tab !== name,

120 onPress: () => {

121 tab = name

122 redraw()

123 },

124 })

125 

126 // Cosa va sotto le schede, a seconda di quale è aperta

127 const body =

128 tab === 'one'

129 ? [Text({ children: ['This is the first tab.'] })]

130 : [

131 Box({

132 flexDirection: 'row',

133 columnGap: 2,

134 children: [

135 Button({

136 key: 'more',

137 label: 'Add one',

138 hotkey: 'a',

139 onPress: async () => {

140 count += 1

141 redraw()

142 // Salva il conteggio in modo che sia lì dopo un riavvio

143 await $.store.set('count', count)

144 },

145 }),

146 Text({ children: ['Count: ' + count] }),

147 ],

148 }),

149 ]

150 

151 // L'intero riquadro: la riga di schede, una riga vuota, quindi il corpo

152 return Box({

153 flexDirection: 'column',

154 children: [

155 Box({

156 flexDirection: 'row',

157 columnGap: 3,

158 children: [tabButton('one', 'One', '1'), tabButton('two', 'Two', '2')],

159 }),

160 Text({ children: [' '] }),

161 ...body,

162 ],

163 })

164 })

165 }

166 ```

167 

168 Ogni hook fa anche qualcosa che il codice non rende evidente:

169 

170 * **[`session.start`](/docs/it/plugins/mods/reference#session)** legge anche il conteggio salvato da [`$.store`](#keep-state), un archivio chiave-valore che persiste tra le sessioni.

171 * **[`command.run`](/docs/it/plugins/mods/api#add-a-command)** dice solo a Claude Code che il riquadro esiste. Aprire un riquadro non disegna nulla di per sé: Claude Code quindi genera `ui.render` per chiedere cosa metterci.

172 * **`ui.render`** restituisce l'albero degli elementi, un `Box` che contiene altri box, testo e pulsanti, e lo costruisce di nuovo da `tab` e `count` ogni volta che viene eseguito.

173 

174 Premere un pulsante esegue il suo callback `onPress`, che cambia una variabile e chiama `redraw`. Claude Code quindi esegue di nuovo l'hook `ui.render`, e l'hook costruisce un nuovo albero dai nuovi valori. Ogni disegno interattivo utilizza quel ciclo di rendering: un callback cambia lo stato, e l'hook esegue il rendering di nuovo dal nuovo stato.

175 </Step>

176 

177 <Step title="Aprire il riquadro">

178 Nella tua shell, avvia Claude Code con `claude --plugin-dir ./hello-tabs`. Al prompt di Claude Code, esegui `/hello-tabs`. Un riquadro si apre con `1: One` e `2: Two` nella parte superiore. Premi `2`, quindi premi `a`, la scorciatoia da tastiera per **Add one**, alcune volte. Il conteggio aumenta.

179 </Step>

180 

181 <Step title="Verificare che il conteggio sia stato salvato">

182 Premi Esc per chiudere il riquadro, quindi esci dalla sessione. Nella tua shell, avvia di nuovo Claude Code con lo stesso comando `claude --plugin-dir ./hello-tabs`, e al prompt di Claude Code esegui `/hello-tabs`. Il conteggio è dove l'hai lasciato.

183 

184 Per cancellare il conteggio, fai in modo che il mod chiami `$.store.delete('count')`. [Mantenere lo stato](#keep-state) spiega quanto tempo dura ogni tipo di valore.

185 </Step>

186</Steps>

187 

188<h2 id="pick-where-to-draw">

189 Scegliere dove disegnare

190</h2>

191 

192Un hook `ui.render` viene eseguito per ogni sito di rendering a meno che non lo restringi a quello che desideri disegnare. Per scegliere il sito di rendering, passa un filtro, chiamato [matcher](/docs/it/plugins/mods/events#filter-which-events-a-hook-handles), come secondo argomento a `on`. `{ component: 'Pane' }` esegue l'hook solo per i riquadri. Nell'hook, `e.component` nomina il sito, `e.surface` dice quale app sta disegnando, e `e.props` contiene i dati propri del sito. Per un riquadro, `e.requestId` è l'`id` con cui l'hai aperto.

193 

194Due siti sono vuoti finché un mod non li riempie, il riquadro e la banda. Seleziona una scheda per vedere cosa è ognuno e come disegnare in esso:

195 

196<Tabs>

197 <Tab title="Pane">

198 Un riquadro è una barra laterale accanto alla trascrizione in un terminale fullscreen ampio, o una regione incorniciata sopra il prompt altrimenti. Con più riquadri aperti, ognuno ottiene una scheda che mostra il suo titolo.

199 

200 Un riquadro appare quando il tuo mod chiama `$.ui.open` con un `id` che scegli, come in `$.ui.open({ id: 'hello-tabs' })`. [Aprire un riquadro al momento giusto](#open-a-pane-at-the-right-time) copre gli altri campi e quando un riquadro aspetta un terminale più ampio.

201 

202 Per disegnare nel tuo riquadro, filtra su `{ component: 'Pane' }` e verifica che `e.requestId` sia il tuo `id`.

203 </Tab>

204 

205 <Tab title="Band above the prompt">

206 La banda è una striscia direttamente sopra l'input del prompt. È sempre lì, e ogni mod la condivide.

207 

208 Il tuo hook restituisce un albero per mostrare qualcosa nella banda, o `next(e)` per non mostrare nulla. Un albero sostituisce quello che i mod [dopo il tuo](/docs/it/plugins/mods/events#the-order-mods-run-in) disegnano lì. Per mantenere il loro, metti il risultato di `await next(e)` tra i figli di un [`Box`](#build-a-tree-from-elements) nel tuo albero.

209 

210 Per disegnare nella banda, filtra su `{ component: 'AbovePrompt' }`.

211 </Tab>

212</Tabs>

213 

214<h3 id="change-what-claude-code-already-draws">

215 Modificare quello che Claude Code disegna già

216</h3>

217 

218Claude Code disegna la maggior parte della sua interfaccia da solo: messaggi, righe di chiamate di strumenti, lo spinner, e altro. Ognuna di quelle parti è un sito di rendering anche, quindi un mod può ridisegnarlo o sostituirlo. Per modificarne uno, filtra il tuo hook `ui.render` sul suo nome da questa tabella:

219 

220| Sito | Cosa è |

221| :- | :- |

222| `UserMessage`, `AssistantMessage` | Un messaggio nella trascrizione |

223| `ToolUse`, `ToolResult`, `ToolGroup` | La riga di una chiamata di strumento, il suo risultato, e un'esecuzione piegata di chiamate |

224| `CommandOutput` | La riga che un comando ha stampato |

225| `AskUserQuestion` | La finestra di dialogo che Claude apre per farti una domanda |

226| `Spinner`, `ToolProgress`, `TurnDuration` | Righe di stato per un turno: la riga che si anima mentre Claude lavora, la riga di progresso dal vivo di uno strumento in esecuzione, e la riga che chiude un turno |

227| `InfoNotice`, `SessionMode`, `PromptHint` | Righe di stato sotto il logo, le etichette della modalità nel piè di pagina, e la riga di suggerimento sotto il prompt |

228 

229In un sito che Claude Code disegna già, il tuo hook ha tre scelte: modificare un dettaglio, sostituire il disegno, o lasciarlo in pace. Seleziona una scheda per vedere ognuno applicato allo spinner. Gli esempi leggono una variabile `calls` che un altro hook conta, come nel [mod del tutorial](/docs/it/plugins/mods/create#write-a-mod-yourself).

230 

231<Tabs>

232 <Tab title="Change a detail">

233 Per mantenere il disegno di Claude Code e modificare una parte di esso, passa a `next` una copia dell'evento con `props` modificati. Questo hook cambia il testo dopo la parola dello spinner:

234 

235 ```javascript theme={null}

236 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

237 // Mantieni lo spinner di Claude Code, e cambia il testo dopo la sua parola

238 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })

239 })

240 ```

241 

242 Lo spinner mantiene la sua animazione e la sua parola, e il tuo testo segue la parola:

243 

244 ```text theme={null}

245 Thinking · tool calls: 2…

246 ```

247 </Tab>

248 

249 <Tab title="Replace the drawing">

250 Per disegnare qualcosa di tuo al posto del sito, restituisci un albero e non chiamare `next`. Questo hook disegna una riga di testo dove sarebbe lo spinner:

251 

252 ```javascript theme={null}

253 on('ui.render', { component: 'Spinner' }, async ($, e) => {

254 const { Text } = $.ui.resolve(e)

255 // Nessuna chiamata a next, quindi questa riga viene disegnata al posto dello spinner

256 return Text({ children: ['Claude has made ' + calls + ' tool calls'] })

257 })

258 ```

259 

260 Mentre Claude lavora, la tua riga si mostra e lo spinner di Claude Code non lo fa:

261 

262 ```text theme={null}

263 Claude has made 2 tool calls

264 ```

265 </Tab>

266 

267 <Tab title="Leave it alone">

268 Per lasciare il sito come Claude Code lo disegna, restituisci `next(e)`. Un hook spesso lo fa per alcuni eventi e non per altri. Questo hook lascia lo spinner in pace finché non c'è una chiamata da contare:

269 

270 ```javascript theme={null}

271 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

272 // Niente da mostrare ancora, quindi passa l'evento invariato

273 if (calls === 0) return next(e)

274 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })

275 })

276 ```

277 

278 Prima della prima chiamata di strumento, lo spinner appare come farebbe senza il mod:

279 

280 ```text theme={null}

281 Thinking…

282 ```

283 </Tab>

284</Tabs>

285 

286Il prompt di autorizzazione non è un sito di rendering, quindi un mod non può modificare quello che mostra. La finestra di dialogo della domanda, `AskUserQuestion`, è uno, quindi un mod può modificare quello.

287 

288Il terminale e l'app Desktop non generano tutti gli stessi siti. `Pane`, `AbovePrompt`, `Spinner`, e i siti della trascrizione funzionano in entrambi. Poche altre righe di stato vengono generate solo nel terminale. La [tabella dei siti di rendering](/docs/it/plugins/mods/reference#render-sites) elenca dove viene generato ognuno.

289 

290<h3 id="open-a-pane-at-the-right-time">

291 Aprire un riquadro al momento giusto

292</h3>

293 

294Un riquadro appare solo quando il tuo mod lo apre. Come e quando lo apri decide se prende il focus della tastiera, quanto spazio chiede, e se appare affatto in un terminale stretto.

295 

296Per aprire un riquadro, chiama [`$.ui.open`](/docs/it/plugins/mods/reference#mods-api-methods) con un `id` che scegli. L'`id` è il nome del riquadro: il tuo hook `ui.render` lo controlla, e lo passi di nuovo per chiudere il riquadro.

297 

298```javascript theme={null}

299await $.ui.open({ id: 'hello-tabs', title: 'Hello tabs', focus: true })

300```

301 

302Per chiudere il riquadro, chiama `$.ui.close` con l'`id` con cui l'hai aperto:

303 

304```javascript theme={null}

305await $.ui.close({ id: 'hello-tabs' })

306```

307 

308Oltre a `id`, `$.ui.open` accetta questi campi opzionali:

309 

310| Campo | Cosa fa |

311| :- | :- |

312| `title` | L'etichetta della scheda del riquadro quando più di un riquadro è aperto |

313| `focus` | Richiede il [focus della tastiera](#know-which-keys-your-mod-can-receive) |

314| `closeOnEscape` | Fa chiudere il riquadro da Esc. Passa `true` o lascia il campo fuori, perché Claude Code rifiuta `false`. |

315| `holdToasts` | Tiene i toast, i piccoli avvisi da [`$.ui.toast`](/docs/it/plugins/mods/api#show-something-without-starting-a-turn), finché il riquadro non si chiude |

316| `rows` | L'altezza da chiedere quando il riquadro si trova sopra il prompt. L'impostazione predefinita è un terzo dello spazio. |

317| `columns` | La larghezza da chiedere quando il riquadro si trova accanto alla trascrizione |

318 

319Per lasciare che un comando apra il riquadro mentre Claude sta lavorando, aggiungi `immediate: true` quando [registri il comando](/docs/it/plugins/mods/api#add-a-command). Senza di esso, un comando digitato durante un turno aspetta che il turno finisca.

320 

321<h4 id="when-a-pane-waits-for-a-wider-terminal">

322 Quando un riquadro aspetta un terminale più ampio

323</h4>

324 

325Un riquadro che il tuo mod apre senza essere chiesto non appare in un terminale stretto, quindi non può prendere il controllo di uno schermo piccolo. Se appare dipende da cosa l'ha aperto:

326 

327* **Aperto da qualcosa che l'utente ha fatto**, come un comando che ha eseguito o un pulsante che ha premuto, il riquadro appare a qualsiasi larghezza

328* **Aperto dal tuo mod che agisce da solo**, come da un timer o un hook [`turn.start`](/docs/it/plugins/mods/events#follow-a-turn), il riquadro appare solo in un terminale di almeno 144 colonne di larghezza. Dopo che l'utente ha aperto quel riquadro una volta da solo, 110 colonne sono sufficienti.

329 

330Quando il riquadro appare, `$.ui.open` si risolve in `{ isPlaced: true }`. Quando il riquadro è in attesa, `isPlaced` è `false` e `reason` è una stringa che dice perché. Un riquadro in attesa appare quando l'utente lo apre o allarga il terminale. Per dire che qualcosa è disponibile senza aprire un riquadro, chiama `$.ui.toast('Your message')`, che mostra un piccolo avviso che scompare dopo pochi secondi.

331 

332<h2 id="build-a-tree-from-elements">

333 Costruire un albero da elementi

334</h2>

335 

336Quello che un hook `ui.render` restituisce è un albero di elementi: una descrizione di cosa disegnare, fatta di box, testo e controlli annidati l'uno dentro l'altro. Descrivi il disegno, e Claude Code lo renderizza nel terminale o nell'app Desktop.

337 

338Per ottenere gli elementi, chiama `$.ui.resolve(e)` nel tuo hook, come in `const { Box, Text, Button } = $.ui.resolve(e)`. Ogni elemento è una funzione. Passi le proprietà, e metti gli elementi e le stringhe che vanno dentro di esso in `children`.

339 

340La maggior parte dei disegni usa quattro elementi. Seleziona una scheda per vedere ognuno e come il terminale lo disegna:

341 

342<Tabs>

343 <Tab title="Text">

344 `Text` disegna una stringa, con stile opzionale come `bold` e `color`:

345 

346 ```javascript theme={null}

347 Text({ children: ['This is the first tab.'] })

348 ```

349 

350 ```text theme={null}

351 This is the first tab.

352 ```

353 </Tab>

354 

355 <Tab title="Box">

356 `Box` arrangia quello che è dentro di esso, in una riga o una colonna. Questo mette un pulsante e una riga di testo uno accanto all'altro, due colonne a parte:

357 

358 ```javascript theme={null}

359 Box({

360 flexDirection: 'row',

361 columnGap: 2,

362 children: [

363 Button({ key: 'more', label: 'Add one', onPress: addOne }),

364 Text({ children: ['Count: 0'] }),

365 ],

366 })

367 ```

368 

369 ```text theme={null}

370 [ Add one ] Count: 0

371 ```

372 </Tab>

373 

374 <Tab title="Button">

375 `Button` è un controllo che l'utente può premere. Esegue il tuo callback `onPress`. Con `plain: true` non ha parentesi e mostra la sua scorciatoia da tastiera:

376 

377 ```javascript theme={null}

378 Button({ key: 'more', label: 'Add one', onPress: addOne })

379 Button({ key: 'tab-one', label: 'One', hotkey: '1', plain: true, onPress: showTabOne })

380 ```

381 

382 ```text theme={null}

383 [ Add one ]

384 1: One

385 ```

386 </Tab>

387 

388 <Tab title="Input">

389 `Input` è un campo di testo. Esegue il tuo callback `onSubmit` con il testo quando l'utente preme Invio:

390 

391 ```javascript theme={null}

392 Input({

393 key: 'new-note',

394 label: 'Note',

395 placeholder: 'Type a note and press Enter',

396 value: '',

397 submitLabel: 'add',

398 onSubmit: addNote,

399 })

400 ```

401 

402 ```text theme={null}

403 Note: Type a note and press Enter ⏎ add

404 ```

405 </Tab>

406</Tabs>

407 

408Questa tabella elenca ogni elemento:

409 

410| Elemento | Cosa disegna | Dove |

411| :- | :- | :- |

412| `Box` | Un contenitore flex. Accetta proprietà di layout come `flexDirection`, `columnGap`, `padding`, `borderStyle`, e `width`. | Ovunque |

413| `Text` | Testo stilizzato. Accetta `color`, `bold`, `dimColor`, `italic`, e `wrap`. Un `color` è una chiave di tema o un colore come `'red'`. Un `wrap` è `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'`, o `'truncate-end'`. | Ovunque |

414| `Button` | Un controllo che chiama `onPress` | Ovunque |

415| `Link`, `Code`, `Markdown` | Un link con `href` e un `label` opzionale, un blocco di codice, e testo formattato come le risposte di Claude. `Markdown` accetta il suo contenuto in una proprietà `text`, non in `children`, e ha bisogno di una `key` quando passi `onLinkPress`. | Ovunque |

416| `Input`, `Select` | Un campo di testo e un selettore | Terminale, Desktop |

417| `Svg` | Un documento SVG | Desktop |

418| `Client` | Una regione disegnata da un secondo file tuo, per animazione e input del puntatore. Quel file non ottiene l'API dei mod. Raggiunge i tuoi hook solo postando dati, che arrivano come evento `ui.message`. | Terminale, Desktop |

419| `Raster`, `Image` | Una [griglia di celle colorate](#draw-a-grid-of-colored-cells), e un'immagine | Terminale |

420 

421Se il tuo modulo è un file `.tsx` o `.jsx`, puoi scrivere l'albero come JSX. Destruttura gli elementi da `$.ui.resolve(e)` per primo, perché un modulo di hook non ha globali di elementi.

422 

423Se un albero usa un elemento che l'app non ha, una proprietà che un elemento non accetta, o un figlio dove nessuno va, Claude Code disegna la sua versione del sito.

424 

425In una sessione avviata con `--plugin-dir`, una riga di trascrizione lo dice, come `ui.render (Pane) refused: Text prop "bogusProp" is not allowed; the engine drew its own`. Il [log di debug](/docs/it/plugins/mods/troubleshoot#read-the-debug-log) lo registra come `ui.render (Pane): a hook returned a tree that does not validate` con la stessa ragione. Nient'altro appare nella sessione, quindi quando un disegno non si mostra, controlla quella riga o il log.

426 

427<h3 id="draw-a-grid-of-colored-cells">

428 Disegnare una griglia di celle colorate

429</h3>

430 

431Per una mappa di calore, una sparkline, o una tavola di gioco nel terminale, disegna un `Raster` e non un `Box` per ogni cella. Un `Raster` accetta una `key`, la sua dimensione in `columns` e `rows`, e `cells`, che compatta ogni cella in una stringa. Ogni cella è tre numeri: il punto di codice del carattere, il suo colore, e il colore di sfondo. Un colore è un numero esadecimale con due cifre ciascuno per rosso, verde e blu, come `0xc62828` per un rosso, o `0x01000000` per il default del terminale.

432 

433L'app Desktop non ha `Raster`, quindi controlla `e.surface` e disegna testo lì. Questo corpo del riquadro disegna una mappa di calore tre per due:

434 

435```javascript theme={null}

436// Il valore che significa "usa il colore predefinito del terminale"

437const DEFAULT_COLOR = 0x01000000

438 

439// Compatta righe di coppie [carattere, colore] nella stringa che un Raster accetta

440// Una cella è tre numeri: il punto di codice del carattere, il suo colore, e lo sfondo

441function cellsOf(rows) {

442 const numbers = rows.flat().flatMap(([char, color]) => [char.codePointAt(0), color, DEFAULT_COLOR])

443 return new Uint8Array(Uint32Array.from(numbers).buffer).toBase64()

444}

445 

446on('ui.render', { component: 'Pane' }, async ($, e, next) => {

447 // Disegna solo nel riquadro aperto con l'id 'heat'

448 if (e.requestId !== 'heat') return next(e)

449 const { Box, Text, Raster } = $.ui.resolve(e)

450 // Due righe di tre celle, ognuna un carattere di blocco e il suo colore

451 const rows = [

452 [['█', 0x2e7d32], ['█', 0xf9a825], ['█', 0xc62828]],

453 [['█', 0x2e7d32], ['█', 0x2e7d32], ['█', 0xf9a825]],

454 ]

455 if (e.surface !== 'terminal') {

456 return Text({ children: ['The heat map needs the terminal.'] })

457 }

458 return Box({

459 flexDirection: 'column',

460 children: [Raster({ key: 'grid', columns: 3, rows: 2, cells: cellsOf(rows) })],

461 })

462})

463```

464 

465Nel terminale, il riquadro mostra la griglia:

466 

467<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-heat-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=b91bcce3bad74bc851149133d4acc5d5" alt="Un riquadro nel terminale che contiene una piccola griglia di blocchi colorati, due righe di tre. La riga superiore è verde, ambra e rossa. La riga inferiore è verde, verde e ambra." width="360" height="132" data-path="images/mods-heat-map.svg" />

468 

469L'array `rows` è la parte che cambieresti, e `cellsOf` lo trasforma nella stringa compatta. L'hook disegna solo in un riquadro il cui `id` è `heat`, quindi aprine uno con `$.ui.open({ id: 'heat' })` da un comando, come l'esempio [`hello-tabs`](#build-a-pane-with-tabs) apre il suo riquadro.

470 

471Ogni carattere deve essere largo una cella. Per animare un `Raster` che è già sullo schermo, chiama `$.ui.blit` con l'`id` del riquadro come `requestId`, la `key` del `Raster`, la stessa dimensione, e celle nuove. Per questo esempio, è `$.ui.blit({ requestId: 'heat', key: 'grid', columns: 3, rows: 2, cells: cellsOf(newRows) })`. Ridipinge solo quell'elemento senza eseguire di nuovo il tuo hook `ui.render`.

472 

473<h2 id="respond-to-presses-and-typing">

474 Rispondere a pressioni e digitazione

475</h2>

476 

477Quando l'utente preme un pulsante, digita in un campo, o sceglie da un elenco che il tuo mod ha disegnato, Claude Code chiama la funzione che hai dato a quel controllo, e viene eseguita nel tuo modulo. Ogni controllo accetta i suoi callback:

478 

479* **`Button`**: accetta `onPress(e)`, dove `e.surface` è l'app da cui viene la pressione

480* **`Input`**: accetta `onSubmit(value)` e `onInput(value)`

481* **`Select`**: accetta `onSelect(value)` con le sue scelte in `options`, un elenco di almeno una scelta con valori unici, come `[{ value: 'sm', label: 'Small' }, { value: 'lg', label: 'Large' }]`

482 

483Un test preme o digita in un controllo per la sua `key`, quindi dagli uno. Ogni uso di un controllo genera anche [`ui.press`, `ui.input`, o `ui.select`](/docs/it/plugins/mods/reference#interface) con la `key` in `e.element`, e un altro mod può agganciare quegli eventi. Il suo hook viene eseguito prima del tuo callback, quindi vede quello che l'utente digita nel tuo `Input` e può cambiarlo o rispondere al posto del tuo callback. L'API dei mod non ha un metodo che preme il pulsante di un altro mod.

484 

485<h3 id="know-which-keys-your-mod-can-receive">

486 Focus della tastiera e scorciatoie da tastiera

487</h3>

488 

489Il tuo mod non legge mai la tastiera da solo. L'utente preme un tasto, Claude Code decide quale dei tuoi controlli è per esso, e il callback di quel controllo viene eseguito. A parte una [scorciatoia da tastiera con cifra sulla banda](/docs/it/plugins/mods/reference#elements), questo accade solo mentre il tuo riquadro o banda ha il focus della tastiera. Il resto del tempo, i tasti vanno al prompt.

490 

491<h4 id="how-a-pane-gets-keyboard-focus">

492 Come un riquadro ottiene il focus della tastiera

493</h4>

494 

495Un riquadro ottiene il focus della tastiera in uno di tre modi:

496 

497* Il tuo mod lo apre con `focus: true` da un comando o una pressione

498* L'utente preme Ctrl+X poi Tab

499* L'utente lo fa clic

500 

501Claude Code concede `focus: true` solo mentre il prompt è vuoto e nient'altro ha il focus della tastiera. Un riquadro che si apre mentre l'utente sta digitando non prende i suoi tasti.

502 

503<h4 id="what-each-key-does">

504 Cosa fa ogni tasto

505</h4>

506 

507Questa tabella elenca cosa fa un tasto mentre il tuo riquadro o banda ha il focus della tastiera:

508 

509| Tasto | Cosa fa |

510| :- | :- |

511| Tab | Si sposta al controllo successivo |

512| Su e Giù | Si spostano tra i controlli mentre il tuo disegno si adatta. Quando il riquadro o la banda ha più righe di quante possa mostrare, lo scorrono. |

513| Invio | Preme il `Button` focalizzato, invia il `Input` focalizzato, o sceglie in un `Select` |

514| La scorciatoia da tastiera di un pulsante | Preme quel pulsante. Mentre un `Input` ha il focus, ogni tasto stampabile va al campo. |

515| Esc | Restituisce il focus della tastiera al prompt. Con `closeOnEscape: true`, chiude anche il riquadro. |

516 

517Un mod non può associare Tab o i tasti freccia a nient'altro, quindi un gioco si muove con `w`, `a`, `s`, e `d`.

518 

519<h4 id="set-a-hotkey-and-the-first-focus">

520 Impostare una scorciatoia da tastiera e il primo focus

521</h4>

522 

523Due proprietà su un controllo decidono come la tastiera lo raggiunge:

524 

525* **`hotkey`**: per lasciare che l'utente preme un `Button` con un tasto, dagli una `hotkey` di una cifra o una lettera minuscola, come in `hotkey: 'a'`

526* **`autoFocus`**: per scegliere quale controllo ha il focus quando il riquadro si apre, aggiungi `autoFocus: true` ad esso. Lascia la proprietà fuori dagli altri, perché Claude Code rifiuta `autoFocus: false`.

527 

528Come una scorciatoia da tastiera si mostra dipende dal pulsante e dall'app:

529 

530| Pulsante | Nel terminale | Nell'app Desktop |

531| :- | :- | :- |

532| Con parentesi, il default | `[ Add one ]`, senza scorciatoia da tastiera mostrata | L'etichetta con un piccolo tasto accanto |

533| Con `plain: true` | `1: One` | L'etichetta con un piccolo tasto accanto |

534 

535Nel terminale, nomina il tasto nell'etichetta di un pulsante tra parentesi, o usa `plain: true`, così l'utente può vedere cosa premere. Il [riferimento degli elementi](/docs/it/plugins/mods/reference#elements) ha le altre regole di `Button`: `action`, scorciatoie da tastiera con cifra sulla banda, e due pulsanti su una scorciatoia da tastiera.

536 

537<h3 id="take-typed-input-and-draw-a-row-for-each-item">

538 Prendere input digitato e disegnare una riga per ogni elemento

539</h3>

540 

541Molti riquadri sono un campo di testo con un elenco sotto. L'esempio in questa sezione è un riquadro di note: digiti una nota e premi Invio per aggiungerla, e ogni nota ha un pulsante `x` che la elimina. Con due note aggiunte, il terminale disegna il riquadro in questo modo:

542 

543```text theme={null}

544╭──────────────────────────────────────────────────────────╮

545│ Note: Type a note and press Enter ⏎ add ✕ │

546│ x buy milk │

547│ x call bob │

548╰──────────────────────────────────────────────────────────╯

549```

550 

551L'esempio usa due tecniche:

552 

553* **Prendere input digitato**: un `Input` chiama `onSubmit(value)` con il testo del campo quando l'utente preme Invio, e `onInput(value)` ad ogni cambio

554* **Disegnare un elenco**: mappa i tuoi dati a una riga ciascuno, e dai a ogni pulsante della riga la sua `key`

555 

556Questo hook disegna il contenuto del riquadro:

557 

558```javascript theme={null}

559// L'elenco che il riquadro disegna

560let notes = []

561 

562on('ui.render', { component: 'Pane' }, async ($, e, next) => {

563 // Disegna solo nel riquadro aperto con l'id 'notes'

564 if (e.requestId !== 'notes') return next(e)

565 const { Box, Text, Button, Input } = $.ui.resolve(e)

566 const redraw = () => $.ui.invalidate('ui.render')

567 

568 return Box({

569 flexDirection: 'column',

570 children: [

571 Input({

572 key: 'new-note',

573 label: 'Note',

574 placeholder: 'Type a note and press Enter',

575 // Disegna il campo vuoto ogni volta, che lo cancella dopo un invio

576 value: '',

577 submitLabel: 'add',

578 autoFocus: true,

579 // Viene eseguito quando premi Invio nel campo

580 onSubmit: async (value) => {

581 // Ignora una riga vuota

582 if (!value.trim()) return

583 notes = [...notes, value.trim()]

584 redraw()

585 await $.store.set('notes', notes)

586 },

587 }),

588 // Una riga per ogni nota: un pulsante di eliminazione, quindi il testo della nota

589 ...notes.map((note, i) =>

590 Box({

591 flexDirection: 'row',

592 columnGap: 1,

593 children: [

594 Button({

595 // Una key propria, così il pulsante di ogni riga può essere distinto

596 key: 'delete-' + i,

597 label: 'x',

598 plain: true,

599 onPress: async () => {

600 notes = notes.filter((_, j) => j !== i)

601 redraw()

602 await $.store.set('notes', notes)

603 },

604 }),

605 Text({ children: [note] }),

606 ],

607 }),

608 ),

609 ],

610 })

611})

612```

613 

614Per provare il riquadro:

615 

616* **Aggiungi una nota**: digita una riga e premi Invio. La riga appare come una nuova riga, e il campo si svuota.

617* **Elimina una nota**: premi Tab finché il pulsante `x` della nota non ha il focus, quindi premi Invio. La `x` è l'etichetta del pulsante e non una scorciatoia da tastiera, quindi digitare la lettera non lo preme.

618 

619Ogni cambio segue lo stesso ciclo di rendering di `hello-tabs`: il callback cambia `notes`, chiama `redraw`, e salva l'elenco in `$.store`.

620 

621Il campo si svuota dopo ogni invio a causa della sua proprietà `value`. `value` è il testo che il campo contiene quando viene disegnato, e la digitazione dell'utente lo sostituisce finché il tuo hook non disegna il campo di nuovo. L'esempio disegna sempre il campo con `''`.

622 

623L'esempio salva le note e non le carica. Per riportarle nella sessione successiva, leggile in un hook `session.start`, come `hello-tabs` legge `count`.

624 

625Tre proprietà compongono la riga del campo, `Note: Type a note and press Enter ⏎ add`:

626 

627| Proprietà | Nell'esempio | Cosa è |

628| :- | :- | :- |

629| `label` | `Note` | Il testo prima del campo. Il terminale disegna `: ` dopo di esso. |

630| `placeholder` | `Type a note and press Enter` | Testo attenuato che si mostra mentre il campo è vuoto |

631| `submitLabel` | `add` | La parola dopo `⏎` che dice cosa fa Invio |

632 

633Inviare un `Input` non avvia un turno a meno che il tuo callback non chiami [`$.prompt.submit`](/docs/it/plugins/mods/api#start-a-turn-from-a-background-job).

634 

635<h2 id="redraw-when-something-changes">

636 Ridisegnare un sito

637</h2>

638 

639Un disegno è un'istantanea: mostra quello che il tuo hook `ui.render` ha restituito l'ultima volta che l'hook è stato eseguito. Per mostrare qualcosa di nuovo, l'hook deve essere eseguito di nuovo. Claude Code lo esegue di nuovo per alcuni cambiamenti, e il tuo mod chiede il resto.

640 

641<h3 id="when-claude-code-redraws-without-being-asked">

642 Quando Claude Code ridisegna senza essere chiesto

643</h3>

644 

645Claude Code esegue di nuovo il tuo hook `ui.render` quando le proprietà del sito cambiano o la larghezza del terminale cambia. Non esegue l'hook su un timer, e non può dire quando una variabile nel tuo modulo cambia.

646 

647<h3 id="redraw-when-your-data-changes">

648 Ridisegnare quando i tuoi dati cambiano

649</h3>

650 

651Per avere i tuoi siti disegnati di nuovo dopo che i tuoi dati cambiano, chiama `$.ui.invalidate('ui.render')`. Questo riquadro conta le pressioni. Il callback del pulsante cambia `count`, quindi chiede un ridisegno:

652 

653```javascript theme={null}

654let count = 0

655 

656on('ui.render', { component: 'Pane' }, async ($, e, next) => {

657 if (e.requestId !== 'counter') return next(e)

658 const { Box, Text, Button } = $.ui.resolve(e)

659 return Box({

660 flexDirection: 'row',

661 columnGap: 2,

662 children: [

663 Button({

664 key: 'more',

665 label: 'Add one',

666 onPress: () => {

667 count += 1

668 // I dati sono cambiati, quindi chiedi a Claude Code di disegnare il riquadro di nuovo

669 $.ui.invalidate('ui.render')

670 },

671 }),

672 Text({ children: ['Count: ' + count] }),

673 ],

674 })

675})

676```

677 

678Ogni pressione alza il numero nel riquadro. L'esempio [`hello-tabs`](#build-a-pane-with-tabs) avvolge la stessa chiamata nella sua funzione `redraw`.

679 

680Un valore che mantieni in [`$.state`](#keep-a-value-in-\$-state) non ha bisogno della chiamata, perché scrivere il valore ridisegna i siti che lo leggono.

681 

682<h3 id="redraw-on-a-timer">

683 Ridisegnare su un timer

684</h3>

685 

686Per mantenere un orologio, un conto alla rovescia, o un valore da fuori la sessione attuale, ridisegna su un programma. Avvia un timer nell'hook `session.start` del modulo. Se il modulo ne ha già uno, come `hello-tabs`, aggiungi la riga [`$.clock.every`](/docs/it/plugins/mods/api#run-work-in-the-background) ad esso:

687 

688```javascript theme={null}

689on('session.start', async ($, e, next) => {

690 // Ogni 1000 millisecondi, chiedi a Claude Code di disegnare di nuovo i tuoi siti

691 $.clock.every(1000, () => $.ui.invalidate('ui.render'))

692 return next(e)

693})

694```

695 

696Claude Code ora esegue il tuo hook `ui.render` una volta al secondo. Il timer si ferma quando il modulo si ricarica, e la nuova copia del modulo avvia il suo.

697 

698<h3 id="how-often-a-site-can-redraw">

699 Quanto spesso un sito può ridisegnare

700</h3>

701 

702Claude Code limita quanto spesso ridisegna un sito, quindi il tuo mod può chiamare `$.ui.invalidate` quanto spesso i suoi dati cambiano. Il riquadro visibile e la banda hanno un limite più alto rispetto ad altri siti, e la [tabella dei limiti](/docs/it/plugins/mods/reference#limits) contiene i numeri.

703 

704Le chiamate che arrivano più velocemente del limite vengono combinate in un ridisegno. Quel ridisegno esegue il tuo hook una volta, e l'hook legge i tuoi dati come sono in quel momento, quindi il valore più recente si mostra e i valori in mezzo no. Un'animazione non può essere eseguita più velocemente del limite.

705 

706<h2 id="keep-state">

707 Mantenere lo stato

708</h2>

709 

710Un mod ha tre posti per mantenere un valore, e differiscono in quanto tempo il valore dura: finché il modulo non si ricarica, finché la sessione non finisce, o da una sessione all'altra. Scegli in base a quanto tempo il valore deve durare:

711 

712| Mantienilo in | Dura fino a | Usalo per |

713| :- | :- | :- |

714| Una variabile a livello di modulo | Il modulo si ricarica, che accade ogni volta che salvi un file durante lo sviluppo | Valori che puoi perdere, come `tab` è in `hello-tabs` |

715| `$.state` | La sessione finisce, o l'utente esegue `/clear`, `/resume`, o `/branch` | Valori su cui un disegno dipende che dovrebbero sopravvivere a un ricaricamento |

716| `$.store` | Il tuo mod lo elimina, o nessuna sessione legge o scrive lo store per [`cleanupPeriodDays`](/docs/it/settings-reference#cleanupperioddays). Lo store è un archivio chiave-valore, salvato come file JSON del tuo plugin sotto `~/.claude/plugins/store/`. | Impostazioni, cronologia, qualsiasi cosa l'utente si aspetta di trovare la prossima volta |

717 

718`$.store.get(key)` si risolve nel valore o `undefined`, e `$.store.set(key, value)` accetta qualsiasi valore JSON.

719 

720<h3 id="keep-a-value-in-state">

721 Mantenere un valore in `$.state`

722</h3>

723 

724`$.state` contiene valori per la durata di una sessione, e ridisegna per te. È uno stato reattivo: un hook `ui.render` che legge un valore si iscrive ad esso, quindi Claude Code ridisegna quel sito ogni volta che scrivi il valore, e non chiami `$.ui.invalidate`. Un valore in `$.state` sopravvive anche a un ricaricamento del modulo, che una variabile non fa.

725 

726Per configurarlo, dichiara i tuoi valori, punta il tuo manifesto alla dichiarazione, quindi definisci e usa ogni valore. Gli esempi spostano il `count` da `hello-tabs` in `$.state`.

727 

728<h4 id="declare-the-values">

729 Dichiarare i valori

730</h4>

731 

732Dichiara i valori in un file di tipi. La chiave esterna è il nome del tuo plugin, e ogni voce sotto di esso è un valore e il suo tipo. Salva questo come `hello-tabs/types/index.d.ts`:

733 

734```typescript hello-tabs/types/index.d.ts theme={null}

735declare module 'claude-code' {

736 interface PluginState {

737 'hello-tabs': {

738 tab: 'one' | 'two'

739 count: number

740 }

741 }

742}

743```

744 

745<h4 id="point-the-manifest-at-the-declaration">

746 Puntare il manifesto alla dichiarazione

747</h4>

748 

749Per lasciare che `claude plugin validate` controlli il tuo codice contro quel file, aggiungi un campo `types` al manifesto con il suo percorso:

750 

751```json hello-tabs/.claude-plugin/plugin.json theme={null}

752{

753 "name": "hello-tabs",

754 "version": "0.1.0",

755 "description": "Opens a pane with two tabs and a counter",

756 "author": { "name": "Your Name" },

757 "types": "./types/index.d.ts"

758}

759```

760 

761<h4 id="define-read-and-write-a-value">

762 Definire, leggere e scrivere un valore

763</h4>

764 

765Nel tuo modulo, definisci ogni valore con un default, leggilo mentre disegni, e scrivilo da un callback. `atom` nomina un valore e il suo default, `read` lo restituisce, e `update` lo scrive. I tre helper chiamano `$.state.get` e `$.state.set` per te:

766 

767```javascript theme={null}

768import { atom, read, update } from 'claude-code'

769 

770// In cima al modulo: nomina il valore e dai il suo default

771const count = atom({ plugin: 'hello-tabs', key: 'count' }, 0)

772 

773// Nell'hook ui.render: leggi il valore per disegnarlo

774const n = await read($, count)

775 

776// In un Button: scrivi un nuovo valore dal vecchio

777onPress: () => update($, count, (value) => value + 1)

778```

779 

780Perché l'hook `ui.render` ha letto `count`, Claude Code esegue l'hook di nuovo ogni volta che il pulsante lo scrive.

781 

782Tre regole si applicano al codice:

783 

784* **Scrivi `plugin` e `key` come stringhe letterali**: `claude plugin validate` le legge dal tuo sorgente

785* **Dichiara ogni valore nel file di tipi**: altrimenti la validazione fallisce con `hello-tabs.count is not declared`

786* **Scrivi da un callback o dall'hook di un altro evento**: un hook `ui.render` può leggere lo stato e non può scriverlo, quindi scrivi da `onPress`, `onSubmit`, o un hook per un altro evento

787 

788<h4 id="change-hello-tabs-to-use-state">

789 Cambiare `hello-tabs` per usare `$.state`

790</h4>

791 

792Per spostare `count` in `hello-tabs` in `$.state`, cambia ogni riga che lo usa:

793 

794* **In cima al modulo**: aggiungi la riga `import`, e sostituisci `let count = 0` con la riga `atom`

795* **Nell'hook `ui.render`**: aggiungi la riga `read` prima di `tabButton`, e disegna `'Count: ' + n` nel `Text`

796* **Nel pulsante Add one**: sostituisci `onPress` con quello in [Salvare da più di una sessione](#save-from-more-than-one-session), che salva il conteggio così come lo scrive

797* **Nell'hook `session.start`**: sostituisci le due righe che leggono `saved` con la chiamata `loadCount` da [Caricare un valore salvato di nuovo dopo `/clear`](#load-a-saved-value-again-after-clear)

798 

799Mantieni `redraw` per i pulsanti delle schede, perché `tab` è ancora una variabile.

800 

801<h3 id="load-a-saved-value-again-after-clear">

802 Caricare un valore salvato di nuovo dopo `/clear`

803</h3>

804 

805Se il tuo mod copia un valore salvato da `$.store` in `$.state` a `session.start`, deve copiarlo di nuovo dopo `/clear`, `/resume`, o `/branch`. Questi comandi rimettono ogni valore `$.state` al suo default, e `session.start` non viene generato di nuovo. [`classic.SessionStart`](/docs/it/plugins/mods/events#hook-the-settings-hook-events) viene generato dopo ognuno di essi, con `e.source` impostato a `clear`, `resume`, o `fork`, quindi copia il valore di nuovo in un hook su di esso. Altrimenti il tuo disegno mostra il default, e un callback che salva il valore `$.state` scrive il default su quello che hai archiviato.

806 

807Questo codice carica `count` da entrambi gli hook. Si basa sulla versione `$.state` di `hello-tabs`, dove `count` è un atom e `update` è importato. Metti `loadCount` sopra `register`, e aggiungi la chiamata `loadCount` all'hook `session.start` che hai già. `classic.SessionStart` viene generato anche all'avvio e dopo la compattazione, che non ripristina `$.state`, quindi il filtro su `source` mantiene l'hook ai tre ripristini:

808 

809```javascript theme={null}

810// Copia il conteggio salvato da $.store in $.state, o 0 se nulla è salvato

811async function loadCount($) {

812 const saved = Number((await $.store.get('count')) ?? 0)

813 await update($, count, () => saved)

814}

815 

816// Viene eseguito prima del tuo primo prompt, e di nuovo dopo un ricaricamento

817on('session.start', async ($, e, next) => {

818 await loadCount($)

819 return next(e)

820})

821 

822// Viene eseguito di nuovo dopo /clear, /resume, e /branch, che riporta fork

823on('classic.SessionStart', { source: ['clear', 'resume', 'fork'] }, async ($, e, next) => {

824 await loadCount($)

825 return next(e)

826})

827```

828 

829Con entrambi gli hook in posizione, il riquadro mostra il conteggio salvato dopo `/clear` e non `0`, e la prossima pressione di **Add one** aggiunge al conteggio salvato.

830 

831`loadCount` scrive il valore archiviato su quello in `$.state`, e `session.start` viene generato di nuovo ogni volta che il modulo si ricarica. Per mantenere lo store dal rimanere indietro, salva ad ogni cambio, come il pulsante **Add one** fa.

832 

833Per controllare il ricaricamento senza una sessione, [testa il disegno dopo `/clear`](/docs/it/plugins/mods/test#test-a-drawing-after-clear).

834 

835<h3 id="save-from-more-than-one-session">

836 Salvare da più di una sessione

837</h3>

838 

839Ogni sessione sulla tua macchina che esegue il tuo mod condivide uno `$.store`. Un `get` seguito da un `set` non è atomico. Quando due sessioni leggono ciascuna un valore, lo cambiano, e lo scrivono di nuovo, corrono, e la seconda scrittura sostituisce la prima.

840 

841Due scelte lo rendono meno probabile:

842 

843* **Dai a ogni elemento la sua chiave**: un `set` cambia solo la sua chiave, quindi le sessioni che scrivono chiavi diverse non si sovrascrivono a vicenda

844* **Leggi di nuovo subito prima di scrivere**: per un valore che più sessioni cambiano, `get` la chiave nel callback e costruisci il nuovo valore da quello, non da una copia che hai caricato a `session.start`. Un'altra scrittura della sessione è ancora persa se atterra tra il tuo `get` e il tuo `set`.

845 

846Questo pulsante aggiunge uno a quello che lo store contiene ora, quindi aggiorna il disegno:

847 

848```javascript theme={null}

849onPress: async () => {

850 // Leggi quello che lo store contiene ora, che un'altra sessione potrebbe aver cambiato

851 const saved = Number((await $.store.get('count')) ?? 0)

852 // Salva il nuovo conteggio, quindi mostralo

853 await $.store.set('count', saved + 1)

854 await update($, count, () => saved + 1)

855}

856```

857 

858Se una seconda sessione ha premuto il suo pulsante tre volte da quando questa sessione è iniziata, questa pressione mostra e salva un conteggio che include quei tre.

859 

860<h2 id="next-steps">

861 Prossimi passi

862</h2>

863 

864* [Reagire agli eventi](/docs/it/plugins/mods/events): alimenta il tuo disegno da chiamate di strumenti e turni

865* [Usare l'API dei mod](/docs/it/plugins/mods/api): alimenta il tuo disegno da timer e chiamate di modello

866* [Testare un disegno](/docs/it/plugins/mods/test#test-a-drawing): premi i tuoi pulsanti da un test, su più di una superficie

867* [Siti di rendering](/docs/it/plugins/mods/reference#render-sites) e [elementi](/docs/it/plugins/mods/reference#elements): le proprietà di ogni sito e le proprietà di ogni elemento

plugins/mods/overview.md +269 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Panoramica dei mod

6 

7> Aggiungi riquadri, comandi e regole di chiamata di strumenti a Claude Code con un mod. Scopri cosa può fare un mod, come crearne o installarne uno e dove vengono eseguiti i mod.

8 

9Un mod è un [plugin](/docs/it/plugins/overview) che cambia l'aspetto e il comportamento di Claude Code. È composto da gestori di eventi JavaScript o TypeScript: Claude Code ne chiama uno quando si verifica un evento, come una chiamata di strumento, un prompt inviato o una parte dell'interfaccia disegnata, e il gestore può osservare l'evento, modificarlo o assumersi il controllo. Usa un mod per aggiungere una funzione personalizzata a Claude Code, come un riquadro che rappresenta graficamente quanto pieno è il tuo contesto dopo ogni richiesta. Per i file in un mod e un esempio completo, vedi [Come funziona un mod](#how-a-mod-works).

10 

11<Note>

12 I [hooks](/docs/it/hooks) esistenti di Claude Code vengono eseguiti anche su eventi, come comando shell, richiesta HTTP o prompt che configuri in un file di impostazioni. I gestori di un mod sono funzioni che vengono eseguite all'interno di Claude Code. Claude Code chiama entrambi i tipi di hook: su queste pagine, "hook" significa il gestore di un mod, e il tipo di file di impostazioni è un "settings hook".

13</Note>

14 

15<h2 id="what-a-mod-can-do">

16 Cosa può fare un mod

17</h2>

18 

19Gli settings hook, le skills, le righe di stato e i server MCP funzionano dall'esterno di Claude Code: ognuno esegue uno script o fornisce a Claude testo o strumenti. Un mod viene eseguito all'interno di Claude Code, quindi può fare cose che gli altri non possono:

20 

21* **Disegnare un'interfaccia che puoi usare**: un riquadro accanto alla trascrizione o una banda sopra il prompt, con schede, pulsanti e campi di testo. Vedi [Disegnare nell'interfaccia](/docs/it/plugins/mods/interface).

22* **Ridisegnare l'interfaccia di Claude Code**: sostituire o modificare lo stile di parti che Claude Code disegna stesso, come la riga di una chiamata di strumento, lo spinner o la finestra di dialogo in cui Claude pone domande. Vedi [Cambiare quello che Claude Code disegna già](/docs/it/plugins/mods/interface#change-what-claude-code-already-draws).

23* **Intervenire in una chiamata di strumento o una richiesta**: ad esempio, trattenere una chiamata di strumento mentre chiedi all'utente una domanda, rispondere senza eseguire lo strumento o inviare una richiesta a un modello diverso. Vedi [Proteggere o modificare una chiamata di strumento](/docs/it/plugins/mods/events#guard-or-change-a-tool-call) e [Seguire un turno](/docs/it/plugins/mods/events#follow-a-turn).

24* **Eseguire il tuo codice su un comando**: un `/command` che esegue la tua funzione immediatamente, senza un turno di Claude, anche mentre Claude sta lavorando. Vedi [Aggiungere un comando o uno strumento](/docs/it/plugins/mods/api#add-a-command-or-a-tool).

25* **Condividere dati tra hook**: gli hook di un mod condividono le variabili nel suo file, quindi quello che un hook registra, un altro può mostrare. Ad esempio, un hook può contare le chiamate di strumento mentre un altro mostra il conteggio accanto allo spinner, oppure uno può leggere l'utilizzo dei token di ogni richiesta mentre un altro lo rappresenta graficamente in un riquadro. Vedi [Reagire agli eventi](/docs/it/plugins/mods/events).

26 

27I mod funzionano nella CLI di Claude Code e nella scheda Code dell'app Claude Desktop. Vedi [Dove vengono eseguiti i mod](#where-mods-run) per capire come si comportano altrove, come nell'estensione VS Code, `claude -p` e le sessioni cloud. Se un settings hook, una skill o un server MCP fa già quello che ti serve, [confrontali](#compare-mods-settings-hooks-skills-and-mcp-servers) prima di scrivere un mod. Per gestire i mod per un'organizzazione, vedi [Gestire i mod per la tua organizzazione](/docs/it/plugins/mods/admin).

28 

29<h2 id="get-a-mod">

30 Ottenere un mod

31</h2>

32 

33Puoi iniziare con un mod in uno di tre modi:

34 

35* **Usarne uno che hai già**: alcune funzioni di Claude Code sono mod, come `/diff`. Vedi [Mod integrati in Claude Code](#mods-built-into-claude-code).

36* **Crearne uno**: descrivi quello che vuoi in una sessione di Claude Code e Claude scrive il mod. Vedi [Chiedere a Claude un mod](/docs/it/plugins/mods/create#ask-claude-for-a-mod). Per imparare come funziona il codice di un mod, [scrivi uno tu stesso](/docs/it/plugins/mods/create#write-a-mod-yourself).

37* **Installarne uno**: vedi [Installare o aggiornare un mod](#install-or-update-a-mod)

38 

39<h3 id="install-or-update-a-mod">

40 Installare o aggiornare un mod

41</h3>

42 

43<Warning>

44 Un mod è codice che viene eseguito con le tue autorizzazioni. Può leggere e scrivere i tuoi file, avviare processi e fare richieste di rete. Installa i mod solo da autori e marketplace di cui ti fidi. Vedi [Decidere se fidarsi di un mod](#decide-whether-to-trust-a-mod).

45</Warning>

46 

47Un mod si installa come plugin, da un marketplace. Fornisci il nome del plugin, un `@` e il nome del marketplace. Questi esempi installano un plugin denominato `token-chart` da un marketplace denominato `your-org`:

48 

49* In una sessione di Claude Code, esegui `/plugin install token-chart@your-org`.

50* Nella tua shell, esegui `claude plugin install token-chart@your-org`.

51 

52[Installare plugin](/docs/it/plugins/install) copre i marketplace, gli ambiti, l'estensione VS Code e l'app Desktop, e [mantenere i plugin aggiornati](/docs/it/plugins/install#keep-plugins-updated), che si applicano a un plugin che contiene un mod senza modifiche.

53 

54Se installi o aggiorni un mod dalla tua shell mentre una sessione è aperta, esegui `/reload-plugins` in quella sessione per caricarlo. Altrimenti si carica la prossima volta che avvii Claude Code.

55 

56<h2 id="decide-whether-to-trust-a-mod">

57 Decidere se fidarsi di un mod

58</h2>

59 

60Un mod è codice che viene eseguito con le tue autorizzazioni, all'interno di Claude Code. Installa i mod solo da autori e [marketplace di cui ti fidi](/docs/it/plugins/security).

61 

62<h3 id="what-a-mod-can-reach">

63 Cosa può raggiungere un mod

64</h3>

65 

66Un mod viene eseguito con le tue autorizzazioni, quindi prima di installarne uno, sappi a cosa ha accesso. Una volta caricato, un mod può:

67 

68* **Agire sulla tua macchina come te**: leggere e scrivere file ovunque il tuo account utente possa, avviare programmi e fare richieste di rete

69* **Leggere i tuoi segreti**: variabili di ambiente e file di impostazioni, inclusa una chiave API che mantieni in uno di essi

70* **Vedere la tua sessione**: ogni prompt che invii e ogni chiamata di strumento che Claude fa

71* **Modificare la tua sessione**: riscrivere un prompt o una chiamata di strumento, inviare un prompt come se l'avessi digitato, o inviare un messaggio a un'altra delle tue sessioni

72* **Agire senza chiederti**: approvare una chiamata di strumento prima che ti venga chiesto

73* **Spendere il tuo utilizzo**: chiamare un modello sul tuo piano o sulla tua chiave API

74 

75Un mod che approva le chiamate di strumento può approvare una che una regola `ask` richiederebbe, o che uno dei tuoi hook `PreToolUse` ha bloccato. [Estendere le autorizzazioni con hook](/docs/it/permissions#extend-permissions-with-hooks) elenca cosa un tale mod può approvare, incluso quando può approvare una chiamata che una regola `deny` rifiuta.

76 

77Un mod può modificare lo stile di gran parte dell'interfaccia di Claude Code, ma non il prompt di autorizzazione. Non può cambiare quello che un prompt ti mostra.

78 

79<h3 id="list-what-a-mod-does-before-you-install-one">

80 Elencare cosa fa un mod prima di installarlo

81</h3>

82 

83Prima di installare un mod, puoi elencare quali eventi aggancia e cosa chiede a Claude Code di fare, come leggere un file o fare una richiesta di rete, senza eseguirlo. Ottieni prima i file del plugin, ad esempio clonando il suo repository. Quindi, nella tua shell, esegui `claude plugin validate` sulla directory del plugin:

84 

85```bash theme={null}

86claude plugin validate ./some-mod

87```

88 

89Le righe `hooks:` e `calls:` nell'output elencano gli eventi che il mod gestisce e cosa chiede a Claude Code di fare. [Rivedere cosa può fare un mod](/docs/it/plugins/mods/admin#review-what-a-mod-can-do) mostra l'output e quali chiamate cercare.

90 

91<h2 id="turn-mods-on-or-off">

92 Attivare o disattivare i mod

93</h2>

94 

95I mod richiedono Claude Code v2.1.287 o successivo e sono attivati per impostazione predefinita. Nella tua shell, esegui `claude --version` per verificare e aggiorna Claude Code se il tuo è più vecchio.

96 

97Per disattivare i mod, scegli quanti fermarne e per quanto tempo. Per riattivarli, annulla la stessa modifica:

98 

99* **Un mod**: disabilita o disinstalla il suo plugin dalla [**scheda Installed in `/plugin`**](/docs/it/plugins/install#manage-installed-plugins)

100* **Ogni mod installato, per una sessione**: avvia Claude Code con [`--safe-mode`](/docs/it/cli-reference#cli-flags), che lascia fuori anche le tue altre personalizzazioni

101* **Ogni mod che hai installato, in ogni sessione**: imposta [`"disableAllHooks": true`](/docs/it/settings-reference#disableallhooks) in `~/.claude/settings.json`. I tuoi settings hook e la riga di stato personalizzata si fermano anche. Quello che la tua organizzazione gestisce continua a funzionare.

102 

103Se usi Claude Code attraverso un'organizzazione, un amministratore può anche limitare quali mod si caricano. Gli amministratori iniziano da [Impedire ai mod installati dall'utente di caricarsi](/docs/it/plugins/mods/admin#stop-user-installed-mods-from-loading).

104 

105Per scoprire se i mod possono caricarsi per te, vedi [Verificare se i mod possono caricarsi](/docs/it/plugins/mods/troubleshoot#check-whether-mods-can-load).

106 

107<Note>

108 Se hai impostato `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` durante l'accesso anticipato, rimuovilo. Claude Code v2.1.287 e successivo lo ignora, quindi impostarlo a `0` non mantiene i mod disattivati.

109</Note>

110 

111<h3 id="see-which-mods-a-session-loaded">

112 Vedere quali mod una sessione ha caricato

113</h3>

114 

115Per vedere quali mod una sessione di terminale ha caricato, esegui `/plugin` al prompt di Claude Code. Una riga attenuata sotto le schede fornisce il conteggio e i nomi, come `1 mod active · first-mod`. Se un mod che hai installato non è nominato lì, vedi [Scoprire perché un mod non fa nulla](/docs/it/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing).

116 

117<h2 id="how-a-mod-works">

118 Come funziona un mod

119</h2>

120 

121Un mod è un [plugin](/docs/it/plugins/overview) il cui codice registra gestori di eventi, chiamati hooks. Claude Code esegue un hook quando si verifica il suo evento, come quando Claude chiama uno strumento o quando lo spinner viene disegnato. Un piccolo mod ha tre file:

122 

123```text theme={null}

124first-mod/

125├── .claude-plugin/

126│ └── plugin.json

127└── hooks/

128 ├── hooks.json

129 └── register.js

130```

131 

132* **`plugin.json`**: il [manifest](/docs/it/plugins/manifest-reference) del plugin

133* **`hooks.json`**: [punta al tuo file di codice](/docs/it/plugins/mods/reference#files)

134* **`register.js`**: [il tuo codice](/docs/it/plugins/mods/create#write-a-mod-yourself), chiamato il modulo hooks. Dice a Claude Code su quali eventi eseguire le tue funzioni.

135 

136Questo è un `register.js` completo. Conta le chiamate di strumento che Claude fa e mostra il conteggio accanto allo spinner mentre Claude lavora, come in `Thinking · tool calls: 3…`.

137 

138```javascript hooks/register.js theme={null}

139// The count, shared by the two hooks below

140let calls = 0

141 

142// Claude Code calls this once when the mod loads

143export function register(on) {

144 // Runs each time Claude is about to use a tool

145 on('tool.call', async ($, e, next) => {

146 calls += 1

147 // Ask Claude Code to draw the interface again, so the new count shows

148 $.ui.invalidate('ui.render')

149 // Let the tool run as usual

150 return next(e)

151 })

152 

153 // Runs each time Claude Code draws the spinner

154 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

155 // Keep Claude Code's spinner, with the count added after its word

156 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })

157 })

158}

159```

160 

161Il file registra due hook e entrambi usano la variabile `calls` in alto:

162 

163* **L'hook [`tool.call`](/docs/it/plugins/mods/reference#tools)** viene eseguito ogni volta che Claude sta per usare uno strumento. Aggiunge uno a `calls`, chiede a Claude Code di disegnare di nuovo l'interfaccia e lascia che lo strumento funzioni come al solito.

164* **L'hook [`ui.render`](/docs/it/plugins/mods/reference#interface)** viene eseguito ogni volta che Claude Code disegna lo spinner. Mantiene lo spinner di Claude Code e aggiunge il conteggio dopo la parola.

165 

166Questa registrazione mostra il mod al lavoro. Guarda la riga dello spinner sopra la casella del prompt: mentre Claude elenca una directory e legge due file, legge `Thinking · tool calls: 1…`, poi `2…`, poi `3…`.

167 

168<Frame>

169 <video autoPlay muted loop playsInline controls className="w-full dark:hidden" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-overview-light.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=00a18aa0743b59a700f0275ce226e6d1" aria-label="In a Claude Code session, the prompt 'list the files here and read the README' is typed and sent. While Claude works, the spinner reads 'Thinking · tool calls: 1', then 2, then 3, as Claude lists the files and reads two of them." data-path="images/mods-overview-light.mp4" />

170 

171 <video autoPlay muted loop playsInline controls className="w-full hidden dark:block" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-overview-dark.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=d5223da2fef16ceaaa214a36d72c0536" aria-label="In a Claude Code session, the prompt 'list the files here and read the README' is typed and sent. While Claude works, the spinner reads 'Thinking · tool calls: 1', then 2, then 3, as Claude lists the files and reads two of them." data-path="images/mods-overview-dark.mp4" />

172</Frame>

173 

174<h3 id="what-a-hook-can-do-with-an-event">

175 Cosa può fare un hook con un evento

176</h3>

177 

178Claude Code esegue il tuo hook prima di agire sull'evento, quindi il hook decide cosa succede dopo. Ha tre scelte:

179 

180* **Osservare**: notare cosa sta succedendo e lasciarlo continuare invariato, come fa l'hook `tool.call` nell'esempio

181* **Riscrivere**: cambiare l'evento prima che continui, come fa l'hook `ui.render` quando aggiunge il conteggio allo spinner

182* **Rispondere**: gestire l'evento stesso, quindi il comportamento usuale non viene eseguito, come rifiutare un comando

183 

184Per fare qualsiasi cosa al di fuori del suo codice, come disegnare, aggiungere un comando, chiamare un modello, leggere un file, avviare un processo o fare una richiesta di rete, un hook chiama l'API dei mod. Un hook non ha altro modo per fare queste cose, ed è per questo che Claude Code può [elencare cosa fa un mod](#list-what-a-mod-does-before-you-install-one) prima di installarlo.

185 

186Per il codice dietro ogni scelta, vedi [Reagire agli eventi](/docs/it/plugins/mods/events#how-a-hook-handles-an-event). Per quello che un hook può chiamare, vedi [Usare l'API dei mod](/docs/it/plugins/mods/api).

187 

188<h3 id="where-mods-run">

189 Dove vengono eseguiti i mod

190</h3>

191 

192Gli hook di un mod vengono eseguiti in ogni tipo di sessione che carica il plugin. Il disegno è più ristretto: solo il terminale e l'app Desktop mostrano i riquadri, le bande e le righe sostituite di un mod. Questa tabella elenca ogni posto in cui potresti eseguire Claude Code:

193 

194| Dove esegui Claude Code | Gli hook vengono eseguiti | Quello che il mod disegna appare |

195| :- | :- | :- |

196| `claude` in un terminale, incluso il terminale integrato di un editor e il plugin JetBrains | Sì | Sì |

197| La scheda Code dell'app Desktop, tranne in una sessione WSL | Sì | Sì, tranne gli elementi che la [tabella degli elementi](/docs/it/plugins/mods/reference#elements) contrassegna come solo terminale |

198| Una [sessione WSL](/docs/it/desktop-wsl) nell'app Desktop | No, perché i plugin non sono disponibili nelle sessioni WSL | No |

199| Il pannello chat dell'estensione VS Code | Sì | No |

200| `claude -p` e l'[Agent SDK](/docs/it/agent-sdk/overview) | Sì | No |

201| [Remote Control](/docs/it/remote-control) da claude.ai o dall'app mobile | Sì, nella sessione sulla tua macchina | Nel terminale sulla tua macchina |

202| Una [sessione cloud](/docs/it/claude-code-on-the-web) | Sì, per un plugin che [raggiunge la sessione cloud](/docs/it/cloud-environments#what-carries-over-from-your-setup) | No |

203 

204Un mod che disegna può verificare in quale app è in esecuzione e tornare a una riga nella trascrizione o a una risposta di testo del comando dove nulla viene disegnato.

205 

206<h2 id="control-mods-for-your-organization">

207 Controllare i mod per la tua organizzazione

208</h2>

209 

210Gli amministratori decidono se i mod vengono eseguiti e quali, attraverso [impostazioni gestite](/docs/it/managed-settings). [Gestire i mod per la tua organizzazione](/docs/it/plugins/mods/admin) copre quello che accade per impostazione predefinita, come rivedere un mod e come applicare una politica con un mod proprio.

211 

212<h2 id="compare-mods-settings-hooks-skills-and-mcp-servers">

213 Confrontare mod, settings hook, skills e server MCP

214</h2>

215 

216I mod, gli settings hook, le skills e i server MCP si sovrappongono. Questa tabella mostra cosa è ognuno e quando sceglierlo.

217 

218| | Mod | Settings hook | Skill | Server MCP |

219| :- | :- | :- | :- | :- |

220| Cosa è | Funzioni in un plugin che Claude Code chiama nel suo processo | Un comando shell, una richiesta HTTP o un prompt che Claude Code esegue su un evento del ciclo di vita | Un file `SKILL.md` di istruzioni che Claude legge | Un processo esterno o un servizio che fornisce strumenti a Claude |

221| Cosa può cambiare | Chiamate di strumento, prompt, comandi, turni e quello che l'interfaccia disegna | Se una chiamata di strumento o un prompt procede, gli argomenti e il risultato di una chiamata di strumento e il contesto aggiunto per Claude | Quello che Claude sa e fa | Quali strumenti ha Claude |

222| Può disegnare nell'interfaccia | Sì | No | No | No |

223| Cosa scrivi | JavaScript o TypeScript | Uno script e una voce `settings.json` | Markdown | Un server in qualsiasi linguaggio |

224| Sceglilo quando | Vuoi un riquadro, una banda sopra il prompt, un comando personalizzato o riscrivere un evento | Vuoi bloccare, consentire o registrare un evento con uno script che hai già | Continui a incollare le stesse istruzioni nella chat | Claude ha bisogno di raggiungere un sistema esterno |

225 

226Ognuno degli altri ha la sua pagina: [Hooks](/docs/it/hooks), [Skills](/docs/it/skills) e [MCP](/docs/it/mcp). Un plugin può contenere tutti e quattro, quindi un mod può essere spedito nello stesso plugin di una skill e di un server MCP.

227 

228<h2 id="mods-built-into-claude-code">

229 Mod integrati in Claude Code

230</h2>

231 

232Alcune funzioni di Claude Code sono mod. Per vedere quelli che la tua sessione ha, esegui `/plugin` al prompt di Claude Code e vai alla scheda **Installed**, che li elenca sotto **Built-in**. Non puoi aggiornare o disinstallare un mod integrato e l'ultima colonna della tabella dice come disattivare ognuno. La riga [`mods active`](#see-which-mods-a-session-loaded) esclude i mod integrati.

233 

234Questa tabella elenca ogni voce per il nome che `/plugin` mostra:

235 

236| Nome in `/plugin` | Cosa fa | Dove è attivo | Come disattivarlo |

237| :- | :- | :- | :- |

238| `cc-plugin-agents-md` | Carica `AGENTS.md` come istruzioni di progetto | Ogni sessione, a parte [quelle che non possono leggere `AGENTS.md`](/docs/it/memory#when-agents-md-support-is-unavailable) | Disabilitalo in `/plugin`, o [scegli quali file di istruzioni caricare](/docs/it/memory#choose-which-instruction-files-load) |

239| `cc-plugin-diff` | Assume il controllo di [`/diff`](/docs/it/interactive-mode#review-changes-with-%2Fdiff) e disegna il suo riquadro | Sessioni di terminale interattive | Disabilitalo in `/plugin`. `/diff` rimane e la versione integrata di Claude Code del comando risponde. |

240| `cc-plugin-plugin-authoring` | Dà a Claude la skill [`plugin-authoring`](/docs/it/plugins/mods/create#ask-claude-for-a-mod) per scrivere mod. Contiene una skill e nessun codice mod. | A meno che Anthropic non abbia disattivato i mod installati da remoto | Disabilitalo in `/plugin` |

241| `cc-plugin-sec-default` | Protegge quello che la tua organizzazione gestisce dai mod che un utente installa | [Dove il guard si carica](/docs/it/plugins/mods/admin#know-what-happens-by-default) | Non puoi. Un amministratore [imposta l'ordine](/docs/it/plugins/mods/admin#install-your-organizations-mods) nelle impostazioni gestite |

242| `cc-plugin-telemetry` | Invia i record di analitiche che Claude Code e i suoi mod integrati registrano | Ovunque le proprie analitiche di Claude Code siano attive | Disabilitalo in `/plugin`, o disattiva le analitiche, ad esempio con [`DISABLE_TELEMETRY`](/docs/it/env-vars) |

243| `cc-plugin-you-should-know` | Esegue un agente laterale che ti protegge mentre Claude lavora su attività più lunghe. Quando trova qualcosa che vale la pena sapere che potresti perdere, ti mostra una nota sopra il prompt. | Disabilitato per impostazione predefinita. Elencato in `/plugin` -> **Installed** -> **Show disabled** se disponibile per la tua organizzazione. Abilita con [`/plugin enable cc-plugin-you-should-know@builtin`](/docs/it/plugins/cli-reference#plugin-in-a-session). | Disabilitalo in `/plugin` |

244 

245Le impostazioni e i flag che fermano i mod installati, come `disableAllHooks`, `--bare` e `--safe-mode`, non fermano i mod integrati.

246 

247<h3 id="read-the-source-of-built-in-mods">

248 Leggere il codice sorgente dei mod integrati

249</h3>

250 

251Il codice sorgente di quattro di questi mod è pubblico nella [directory `mods` del repository Claude Code](https://github.com/anthropics/claude-code/tree/main/mods). Ognuno è un plugin completo con il suo modulo hooks e test:

252 

253* [`diff`](https://github.com/anthropics/claude-code/tree/main/mods/diff): il riquadro `/diff`, con pulsanti associati ad azioni da tastiera e scorrimento che il mod gestisce da solo

254* [`agents-md`](https://github.com/anthropics/claude-code/tree/main/mods/agents-md): carica `AGENTS.md` come istruzioni di progetto, con un'opzione [`userConfig`](/docs/it/plugins/components#user-configuration)

255* [`sec-default`](https://github.com/anthropics/claude-code/tree/main/mods/sec-default): il guard descritto in [Sapere cosa accade per impostazione predefinita](/docs/it/plugins/mods/admin#know-what-happens-by-default), un modello per un mod che applica la politica

256* [`telemetry`](https://github.com/anthropics/claude-code/tree/main/mods/telemetry): aggiunge metodi che altri mod possono chiamare e spedisce i loro tipi

257 

258<h2 id="next-steps">

259 Passaggi successivi

260</h2>

261 

262* [Creare un mod](/docs/it/plugins/mods/create): costruisci uno che conta le chiamate di strumento, mostra il conteggio accanto allo spinner e aggiunge un comando, e impara il ciclo di modifica e ricaricamento

263* [Disegnare nell'interfaccia](/docs/it/plugins/mods/interface): riquadri, la banda sopra il prompt, pulsanti, campi di testo e stato

264* [Reagire agli eventi](/docs/it/plugins/mods/events): chiamate di strumento, prompt, turni e l'ordine in cui i mod vengono eseguiti

265* [Usare l'API dei mod](/docs/it/plugins/mods/api): comandi, strumenti, chiamate di modello, timer e file

266* [Testare un mod](/docs/it/plugins/mods/test): test automatizzati che vengono eseguiti senza una sessione

267* [Risolvere i problemi di un mod](/docs/it/plugins/mods/troubleshoot): i motivi per cui un mod non fa nulla e il log di debug

268* [Gestire i mod per la tua organizzazione](/docs/it/plugins/mods/admin): impostazioni predefinite, impostazioni gestite, revisione di un mod e mod di politica

269* [Riferimento dei mod](/docs/it/plugins/mods/reference): ogni evento, metodo, elemento e limite

plugins/mods/test.md +422 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Testare un mod

6 

7> Scrivi test automatizzati per un mod Claude Code che generano eventi, simulano le risposte di Claude Code e premono pulsanti, senza sessione, accesso o rete.

8 

9Puoi scrivere test automatizzati per un mod ed eseguirli dalla tua shell con [`claude plugin test`](/docs/it/plugins/mods/reference#commands). Un test genera gli eventi che i tuoi hook gestiscono e controlla cosa hanno fatto gli hook, così puoi individuare un problema prima che raggiunga una sessione. Il primo esempio testa il mod da [Create a mod](/docs/it/plugins/mods/create).

10 

11<h2 id="write-a-test">

12 Scrivi un test

13</h2>

14 

15Un test carica il tuo mod, invia eventi attraverso i suoi hook nel modo in cui Claude Code farebbe, e controlla cosa hanno fatto gli hook, senza una sessione, un accesso o una rete. Esegui i test dalla tua shell con `claude plugin test`, e ogni file di test importa il test kit, una libreria di test nel modulo `claude-code/testing`.

16 

17Dai a ogni file di test un nome che termina in `.test.ts`, come `first-mod.test.ts`, e salvalo ovunque nella directory del plugin. Ogni file di test ha bisogno di almeno un `test()`, altrimenti l'esecuzione fallisce con `declares no test(): nothing ran`. Un file di test può importare i tuoi file mod e helper `.ts` fratelli, così puoi fare unit test di funzioni semplici, come le regole di un gioco, senza il kit.

18 

19Questo test genera due chiamate di strumento, esegue il comando `/tally` da [Create a mod](/docs/it/plugins/mods/create), e controlla che la risposta conti entrambe. La sua prima riga è uno [stub](#stub-what-claude-code-would-answer), che risponde alle chiamate di strumento al posto di Claude Code. Salvalo come `first-mod/tests/first-mod.test.ts`:

20 

21```typescript first-mod/tests/first-mod.test.ts theme={null}

22import { expect, test } from 'claude-code/testing'

23 

24test('/tally reports the tool calls the mod has seen', async ($, on) => {

25 // Answer each tool call in Claude Code's place, so no tool runs

26 on('tool.call', () => ({ result: 'ok' }))

27 

28 // Raise two tool calls, which the mod's tool.call hook counts

29 await $.tool.call({ tool: 'Bash', command: 'ls' })

30 await $.tool.call({ tool: 'Read', file_path: 'README.md' })

31 

32 // Run /tally and check the text its hook returns

33 const answer = await $.command.run({ command: 'tally', args: '' })

34 expect(answer.text).toBe('Claude has made 2 tool calls since this mod loaded')

35})

36```

37 

38Nella tua shell, esegui i test dalla directory `first-mod`:

39 

40```bash theme={null}

41claude plugin test

42```

43 

44L'output nomina ogni test e se è passato, con tempi che variano da esecuzione a esecuzione:

45 

46```text theme={null}

47tests/first-mod.test.ts:

48(pass) /tally reports the tool calls the mod has seen [22.87ms]

49 

50 1 pass

51 0 fail

52Ran 1 test across 1 file. [0.19s]

53```

54 

55Ogni `$.tool.call` è passato attraverso l'hook [`tool.call`](/docs/it/plugins/mods/reference#tools) del mod, che ha aggiunto uno al suo conteggio e ha passato la chiamata allo stub. Nessun `ls` è stato eseguito e nessun file è stato letto. `$.command.run` è poi andato all'hook [`command.run`](/docs/it/plugins/mods/reference#commands-and-configuration) del mod, e `answer` è l'oggetto che quell'hook ha restituito.

56 

57Il comando esce con stato 1 quando un test fallisce, quindi funziona in CI. Se i tuoi mod non riescono a caricarsi nella shell che lo esegue, stampa una riga che inizia con `claude plugin test: hooks modules are turned off` con il motivo, ed esce con stato 1.

58 

59<h3 id="stub-what-claude-code-would-answer">

60 Simula quello che Claude Code risponderebbe

61</h3>

62 

63Nessun modello, archivio o strumento viene eseguito in un test, quindi ovunque il tuo mod si aspetti una risposta da Claude Code, il test fornisce la risposta con uno stub. Una funzione di test riceve due argomenti per questo:

64 

65* **`$`**: il `$` del test, che sta dove Claude Code fa. Non è l'[API dei mod](/docs/it/plugins/mods/reference#mods-api-methods) che un hook riceve. Ognuno dei suoi metodi genera l'evento dello stesso nome, lo invia attraverso i tuoi hook del mod, e si risolve nel risultato: `$.tool.call({ tool: 'Bash', command: 'ls' })` genera `tool.call`. `$.command.run`, `$.prompt.submit`, `$.session.start`, e `$.turn.complete` funzionano allo stesso modo, e `$.classic.Stop` e gli altri metodi `$.classic` generano un [evento hook delle impostazioni](/docs/it/plugins/mods/events#hook-the-settings-hook-events). Un test non può generare direttamente una chiamata API dei mod come `ui.close`. Attivala attraverso il tuo mod, ad esempio premendo il pulsante che chiude il riquadro.

66* **`on`**: chiamalo per registrare gli stub, che sono hook che rispondono al posto di Claude Code. Nomina uno stub per una chiamata API dei mod senza il `$.`, quindi uno stub registrato come `store.get` risponde al `$.store.get` del tuo mod. Quando il tuo mod chiama [`$.model.complete`](/docs/it/plugins/mods/api#call-a-model) o [`$.store.get`](/docs/it/plugins/mods/interface#keep-state), uno stub fornisce la risposta.

67 

68Questo esempio simula una chiamata di modello. L'hook appartiene a un mod denominato `grader`, e gestisce un comando `/grade` che invia una frase a un modello e segnala se la risposta inizia con `PASS`. Il file contiene solo l'hook in prova, quindi il mod ha anche bisogno di un `plugin.json` e un `hooks.json`, come in [Create a mod](/docs/it/plugins/mods/create#write-a-mod-yourself). Per digitare `/grade` in una sessione, il mod deve anche [registrare il comando](/docs/it/plugins/mods/api#add-a-command):

69 

70```javascript grader/hooks/register.js theme={null}

71export function register(on) {

72 on('command.run', { command: 'grade' }, async ($, e) => {

73 // e.args is the text typed after /grade

74 const reply = await $.model.complete({

75 model: 'haiku',

76 system: 'Grade the sentence. Start your reply with PASS or FAIL.',

77 prompt: e.args,

78 })

79 const passed = reply.isAnswered && reply.text.startsWith('PASS')

80 return { text: passed ? 'Passed' : 'Try again' }

81 })

82}

83```

84 

85Questo test simula la chiamata del modello per controllare cosa fa l'hook con una risposta positiva:

86 

87```typescript grader/tests/grader.test.ts theme={null}

88import { expect, test } from 'claude-code/testing'

89 

90test('a passing grade is reported', async ($, on) => {

91 // Answer the mod's $.model.complete call with a fixed reply, so no model runs

92 on('model.complete', () => ({

93 value: {

94 isAnswered: true,

95 text: 'PASS\nNice sentence.',

96 usage: { input_tokens: 10, output_tokens: 5, cache_read_input_tokens: 0, cache_creation_input_tokens: 0 },

97 },

98 }))

99 

100 // Run /grade, which makes the mod call the model

101 const answer = await $.command.run({ command: 'grade', args: 'The cat sat on the mat.' })

102 expect(answer.text).toBe('Passed')

103})

104```

105 

106Il test passa perché il `reply` dell'hook è l'oggetto sotto `value`, il cui `text` inizia con `PASS`. Per controllare l'altro ramo, aggiungi un secondo test il cui stub restituisce un `text` che inizia con `FAIL`, e aspettati `Try again`.

107 

108Uno stub per una chiamata API dei mod restituisce un oggetto con un campo `value`, che contiene ciò a cui la chiamata si risolve nel tuo mod: `{ value: 7 }` fa sì che `$.store.get` si risolva in `7`. Uno stub per uno degli eventi di Claude Code, come [`turn.step`](/docs/it/plugins/mods/reference#turns) o `tool.call`, restituisce il risultato proprio di quell'evento, come `{ result: 'ok' }`. `$.session.send` e `$.prompt.fill` prendono anche il risultato dell'evento, come mostra la tabella. [Guarda cosa restituisce uno stub](#look-up-what-a-stub-returns) mostra quale forma assume ogni nome comune. Due errori significano che uno stub è sbagliato o mancante. L'output di un test fallito include un blocco intitolato `the engine reported:`, e ogni errore appare lì:

109 

110* `returned neither { value } nor { deny }`: uno stub per una chiamata API dei mod ha restituito un valore nudo

111* `no implementation for` seguito da un nome: il tuo mod ha fatto quella chiamata e nessuno stub la risponde

112 

113Il kit esporta anche mock in memoria che rispondono a un intero namespace per te. `mock.clock(on)` risponde a [`$.clock`](/docs/it/plugins/mods/api#run-work-in-the-background), `mock.store(on, { count: 7 })` risponde a `$.store` da un archivio che inizia con quelle voci, e `mock.env(on, { CI: 'true' })` risponde a `$.env.get` da quelle variabili. `mock.clock` restituisce un orologio mock che il tuo test avanza, quindi un test di un timer non aspetta. `mock.store` non restituisce nulla, quindi per controllare cosa il tuo mod ha salvato, scrivi i due stub `store` tu stesso come fa il [test di disegno](#test-a-drawing).

114 

115<h3 id="follow-the-test-kit’s-rules">

116 Segui le regole del test kit

117</h3>

118 

119Il test kit ha alcune regole proprie, e infrangerne una produce gli errori che i nuovi autori di test incontrano per primi:

120 

121* **Registra ogni stub prima della prima chiamata del test su `$`.** Chiamare `on` dopo questo genera un errore come `on("ui.render") after the test first called $`.

122 

123* **[`session.start`](/docs/it/plugins/mods/reference#session) non viene eseguito da solo.** Ogni test inizia con il tuo modulo appena caricato e nessuno dei suoi hook chiamato, quindi le variabili a livello di modulo mantengono i loro valori iniziali. Se un hook dipende da ciò che `session.start` configura, generalo per primo:

124 

125 ```typescript theme={null}

126 // Answer the event after your hook passes it on with next(e)

127 on('session.start', () => ({ cwd: '/work' }))

128 // Answer the $.command.register call your hook makes

129 on('command.register', () => ({ value: undefined }))

130 // Raise the event, which runs your session.start hook

131 await $.session.start({ surface: 'terminal', isInteractive: true, cwd: '/work' })

132 ```

133 

134 Il secondo stub risponde alla chiamata `$.command.register` che un hook `session.start` come quello del [tutorial](/docs/it/plugins/mods/create#write-a-mod-yourself) fa. Senza di esso, quella chiamata rifiuta con `no implementation for command.register` e il kit salta il tuo hook, quindi nulla dopo la chiamata nell'hook viene eseguito. Il test non fallisce a quel punto. L'hook saltato è elencato sotto `the engine reported:` solo se un controllo successivo fallisce.

135 

136* **Un hook che restituisce `next(e)` ha bisogno di uno stub per rispondere.** Quando il tuo hook [`ui.render`](/docs/it/plugins/mods/reference#interface) restituisce `next(e)`, ad esempio per non disegnare nulla mentre Claude è inattivo, [montarlo](#test-a-drawing) fallisce con `no implementation for ui.render`. Registra uno stub che restituisce un elemento come dati semplici:

137 

138 ```typescript theme={null}

139 // Stands for what Claude Code would draw at the site

140 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))

141 ```

142 

143 Con lo stub registrato, il montaggio ha successo, e `ui.find({ type: 'Text' })` restituisce quell'elemento ogni volta che il tuo hook ha restituito `next(e)`.

144 

145* **Uno stub per `turn.step` è un generatore asincrono**, e il test legge il flusso fino alla fine per ottenere il risultato:

146 

147 ```typescript theme={null}

148 on('turn.step', async function* ($, e) {

149 // Each yield is one piece of the model's streamed reply

150 yield { kind: 'text', index: 0, text: 'ok' }

151 // The return value is the result of the whole request

152 return { turnId: e.turnId, index: e.index, answer: 'ok', toolUses: [], stopReason: 'end_turn', usage: null }

153 })

154 

155 // Raise one request to the model, which runs your turn.step hook

156 const stream = $.turn.step({ turnId: 't', index: 0, model: 'claude-test', messageCount: 1 })

157 // Read every piece until the stream says it's done

158 let step = await stream.next()

159 while (step.done !== true) step = await stream.next()

160 const result = step.value

161 ```

162 

163 Quando il ciclo termina, `result` è l'oggetto che lo stub ha restituito, dopo che il tuo hook `turn.step` ha avuto la possibilità di cambiarlo. Qui `result.answer` è `'ok'`.

164 

165* **Genera una chiamata di strumento con il nome dello strumento e gli argomenti come campi**, come `await $.tool.call({ tool: 'Bash', command: 'ls' })`, e registra uno stub `tool.call` che restituisce `{ result }`.

166 

167<h3 id="look-up-what-a-stub-returns">

168 Guarda cosa restituisce uno stub

169</h3>

170 

171Ogni chiamata API dei mod che il tuo mod fa in un test ha bisogno di uno stub che risponda al posto di Claude Code, tranne i pochi che il kit risponde da solo: [`$.ui.invalidate`](/docs/it/plugins/mods/interface#redraw-when-something-changes) e [`$.state`](/docs/it/plugins/mods/interface#keep-state) chiama. Per le chiamate `$.clock`, usa `mock.clock(on)`, altrimenti il `$.clock.now()` del tuo mod fallisce con `no implementation for clock.now`.

172 

173Questa tabella elenca quelli che i mod usano di più. La prima colonna è la chiamata che il tuo mod fa o l'evento che passa con `next(e)`. La seconda è la funzione da passare a `on` con quel nome, quindi la riga `$.store.get` diventa `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`. Un `'...'` in uno stub contrassegna il testo che devi compilare:

174 

175| Il tuo mod chiama o passa | Stub |

176| :- | :- |

177| `$.command.register`, `$.tool.register`, `$.ui.toast`, `$.ui.log`, `$.ui.status`, `$.ui.close`, `$.store.set` | `() => ({ value: undefined })`. Per `ui.toast` e `ui.log`, il testo è `e.text`. |

178| `$.store.get` | `($, e) => ({ value: saved.get(e.key) })` |

179| `$.fs.read` | `($, e) => ({ value: e.path.endsWith('notes.md') ? '# Notes' : '' })`. `e.path` arriva come percorso assoluto, quindi confronta con `endsWith`. |

180| `$.ui.open` | `() => ({ value: { isPlaced: true } })` |

181| `$.ui.ask` | Uno stub `tool.call`, perché la domanda la raggiunge come una chiamata allo strumento `AskUserQuestion`: `($, e) => ({ result: { answers: { [e.questions[0].question]: 'Run it' } } })`. Controlla `e.tool` per primo se il tuo mod passa altre chiamate di strumento. |

182| `$.model.complete` | `() => ({ value: { isAnswered: true, text: '...', usage } })` |

183| `$.process.run` | `($, e) => ({ value: { exitCode: 0, stdout: '...', stderr: '' } })`. `e.argv` è l'elenco degli argomenti e `e.init` contiene `cwd` e `timeoutMs`. |

184| Qualsiasi chiamata API dei mod che dovrebbe fallire | `() => ({ deny: 'the reason' })`, che fa sì che la chiamata rifiuti nel tuo mod. Uno stub che genera un'eccezione viene saltato invece. |

185| `session.start` | `() => ({ cwd: '/work' })` |

186| `turn.start` | `($, e) => ({ turnId: e.turnId })` |

187| `tool.call` | `() => ({ result: '...' })` |

188| `turn.complete` | `() => ({ text: '' })`. Generalo con `$.turn.complete({ turnId, answer, durationMs, isAborted: false, usage: null })`. |

189| `prompt.submit` | `($, e) => ({ text: e.text })` |

190| `prompt.fill` | `() => ({ isFilled: true })` |

191| `$.prompt.read` | `() => ({ value: { text: '...', cursor: 0 } })` |

192| `$.ui.copy` | `() => ({ value: { isCopied: true } })` |

193| `$.session.messages` | `() => ({ value: [{ role: 'assistant', text: '...', toolUses: [] }] })` |

194| `$.session.id`, `$.agent.list` | `() => ({ value: 'abc123' })`, `() => ({ value: [] })` |

195| `session.send` | `() => ({ isDelivered: true })`. `e.to` arriva come stringa anche quando il tuo mod ha passato `{ sessionId }`. |

196| `session.receive` | `($, e) => ({ text: e.text })`. Generalo con `$.session.receive({ origin: { kind: 'peer-send-message' }, text })`. |

197| `ui.render` | `() => ({ type: 'Text', props: {}, children: ['...'] })` |

198 

199`expect` ha le asserzioni `toBe`, `toEqual`, `toMatch`, `toMatchObject`, `toContain`, `toBeDefined`, `toBeUndefined`, e `toThrow`, e `.not` prima di una qualsiasi di esse.

200 

201<h2 id="test-a-timer">

202 Testa un timer

203</h2>

204 

205Un mod che esegue lavoro su un timer ha bisogno di un orologio che il test controlla, così il test può spostare il tempo in avanti invece di aspettare. `const clock = mock.clock(on)` restituisce un orologio mock che inizia a `0` e si muove solo quando il tuo test lo muove. Per iniziare in un altro momento, passalo in millisecondi, come in `mock.clock(on, { now: 5000 })`. L'orologio ha questi metodi:

206 

207| Metodo | Cosa fa |

208| :- | :- |

209| `await clock.advance(1000)` | Sposta il tempo in avanti di quel numero di millisecondi ed esegue ogni timer che scade |

210| `await clock.set(5000)` | Sposta il tempo in avanti a quel valore, come farebbe `advance` |

211| `clock.now()` | Restituisce il tempo, che è ciò a cui si risolve `$.clock.now()` del tuo mod |

212| `await clock.settle()` | Esegue i timer che sono già scaduti, come una catena di chiamate `$.clock.after` a ritardo zero, senza spostare il tempo |

213| `await clock.sleep(2000)` | All'interno di uno stub, fa sì che quello stub risponda solo una volta che il test ha avanzato così lontano, che è come simuli un modello o un processo lento |

214 

215Questo hook appartiene a un mod denominato `countdown`, e gestisce un comando `/countdown` che accetta un numero di secondi, avvia un timer `$.clock.every` di un secondo, e mostra un toast a zero. Come con `grader`, il file contiene solo l'hook in prova e non registra il comando:

216 

217```javascript countdown/hooks/register.js theme={null}

218export function register(on) {

219 on('command.run', { command: 'countdown' }, async ($, e) => {

220 // e.args is the text typed after /countdown

221 let left = Number(e.args)

222 const timer = $.clock.every(1000, () => {

223 left -= 1

224 if (left === 0) {

225 timer.cancel()

226 $.ui.toast('Time is up')

227 }

228 })

229 // Print nothing in the transcript

230 return {}

231 })

232}

233```

234 

235Questo test esegue `/countdown 3` e sposta l'orologio mock, così controlla tre secondi di comportamento senza aspettare tre secondi:

236 

237```typescript countdown/tests/countdown.test.ts theme={null}

238import { expect, mock, test } from 'claude-code/testing'

239 

240test('the countdown ends with a toast', async ($, on) => {

241 // Answer every $.clock call from a clock the test controls

242 const clock = mock.clock(on)

243 // Collect the text of each toast the mod shows

244 const toasts: string[] = []

245 on('ui.toast', ($, e) => {

246 toasts.push(e.text)

247 return { value: undefined }

248 })

249 

250 await $.command.run({ command: 'countdown', args: '3' })

251 // After two seconds the timer has fired twice, and no toast is due

252 await clock.advance(2000)

253 expect(toasts).toEqual([])

254 // The third second brings the count to zero

255 await clock.advance(1000)

256 expect(toasts).toEqual(['Time is up'])

257})

258```

259 

260Il primo `expect` mostra che il toast non arriva presto, e il secondo mostra che arriva una volta. Ogni `advance` si risolve dopo che i timer che sono scaduti hanno eseguito, così il controllo sulla riga successiva vede il loro effetto.

261 

262<h2 id="test-a-drawing">

263 Testa un disegno

264</h2>

265 

266Un test può disegnare uno dei [siti di rendering](/docs/it/plugins/mods/reference#render-sites) del tuo mod, quindi premere, digitare in, e trovare gli elementi che ha disegnato. `$.ui.mount` disegna il sito attraverso l'hook `ui.render` del tuo mod e restituisce un handle con un metodo per ognuno di quelli. Per coprire diverse app in un test, imposta `surface` all'app per cui disegnare. Questo test apre il riquadro da [Build a pane with tabs](/docs/it/plugins/mods/interface#build-a-pane-with-tabs), cambia schede, preme il pulsante, e controlla il conteggio nel terminale e nell'app Desktop:

267 

268```typescript hello-tabs/tests/hello-tabs.test.ts theme={null}

269import { expect, test } from 'claude-code/testing'

270 

271// What Claude Code passes to a ui.render hook for this pane, apart from the app

272const PANE = {

273 plugin: 'hello-tabs',

274 component: 'Pane',

275 requestId: 'hello-tabs',

276 viewport: { columns: 100, rows: 30 },

277 props: {

278 title: 'Hello tabs',

279 isFocused: true,

280 bodyColumns: 60,

281 placement: 'inline',

282 scroll: { offset: 0, bodyRows: 10 },

283 view: {},

284 },

285} as const

286 

287test('the second tab counts presses and saves the count', async ($, on) => {

288 // Stub $.store with a Map, so the test can read what the mod saved

289 const saved = new Map<string, unknown>()

290 on('store.get', ($, e) => ({ value: saved.get(e.key) }))

291 on('store.set', ($, e) => {

292 saved.set(e.key, e.value)

293 return { value: undefined }

294 })

295 

296 // Draw the pane once for each app

297 for (const surface of ['terminal', 'desktop'] as const) {

298 const ui = await $.ui.mount({ ...PANE, surface })

299 // Press the buttons by the key the mod gave them

300 await ui.press({ key: 'tab-two' })

301 await ui.press({ key: 'more' })

302 // The second tab's count line is in the drawing

303 expect(await ui.find({ type: 'Text', text: /^Count: \d+$/ })).toBeDefined()

304 await ui.unmount()

305 }

306 

307 // One press in each app makes two

308 expect(saved.get('count')).toBe(2)

309})

310```

311 

312Nella tua shell, esegui `claude plugin test` dalla directory `hello-tabs`. Il test passa quando entrambe le app disegnano la riga di conteggio e il mod ha salvato `2`. Il conteggio si trasporta dalla prima app alla seconda perché entrambi i montaggi usano lo stesso modulo caricato.

313 

314L'handle che `$.ui.mount` restituisce ha questi metodi, che indirizzano gli elementi per la `key` che hai dato loro:

315 

316| Metodo | Cosa fa |

317| :- | :- |

318| `press({ key: 'more' })` | Preme il `Button` con quella key |

319| `input({ key: 'new-note', text: 'buy milk' })` | Digita il testo nell'`Input` con quella key e preme Invio. Aggiungi `kind: 'change'` per digitare senza inviare. |

320| `select({ key: 'size', value: 'large' })` | Sceglie l'opzione con quel valore nel `Select` con quella key |

321| `find({ key: 'more' })` o `find({ type: 'Text', text: 'Count: 2' })` | Restituisce il primo elemento corrispondente come `{ type, props, children }`, o `undefined`. `text` può essere una stringa o un'espressione regolare. |

322| `unmount()` | Rimuove il disegno |

323 

324Ogni metodo si risolve dopo che il tuo handler ha finito, così puoi controllare il risultato sulla riga successiva. Imposta `props` a ciò che Claude Code passerebbe per quel sito. La [tabella dei siti di rendering](/docs/it/plugins/mods/reference#render-sites) elenca i prop di ogni sito, e [i tipi per la tua build](/docs/it/plugins/mods/create#get-the-types-for-your-build) hanno i loro tipi.

325 

326Un test di disegno controlla l'albero che il tuo hook restituisce e se è valido per quell'app. Non controlla come l'app lo dipinge, quindi guarda un nuovo layout in una sessione reale anche.

327 

328<h3 id="test-a-drawing-after-clear">

329 Testa un disegno dopo `/clear`

330</h3>

331 

332Ogni test inizia con ogni valore `$.state` al suo default, che è come `/clear` li lascia. Per testare cosa fa il tuo mod dopo, salta `session.start`, genera `classic.SessionStart` con `source: 'clear'`, e controlla cosa disegna il tuo mod.

333 

334Questo test controlla il modulo da [Load a saved value again after `/clear`](/docs/it/plugins/mods/interface#load-a-saved-value-again-after-clear). Aggiungilo al file da [Test a drawing](#test-a-drawing), dove `PANE` è definito. Il primo test di quel file si aspetta che il pulsante salvi il conteggio, come il pulsante in [Save from more than one session](/docs/it/plugins/mods/interface#save-from-more-than-one-session) fa:

335 

336```typescript hello-tabs/tests/hello-tabs.test.ts theme={null}

337test('the saved count comes back after /clear', async ($, on) => {

338 // The store already holds a count of 7

339 on('store.get', () => ({ value: 7 }))

340 // Answer the event after your hook passes it on with next(e)

341 on('classic.SessionStart', () => ({}))

342 

343 // Raise the event that fires after /clear, which runs your hook

344 await $.classic.SessionStart({ source: 'clear' })

345 

346 const ui = await $.ui.mount({ ...PANE, surface: 'terminal' })

347 await ui.press({ key: 'tab-two' })

348 // The pane shows the stored count, not the default of 0

349 expect(await ui.find({ type: 'Text', text: 'Count: 7' })).toBeDefined()

350})

351```

352 

353Il test passa quando il tuo hook `classic.SessionStart` ha copiato il `7` salvato in `$.state` prima che il riquadro disegni. Senza quell'hook nel tuo modulo, il riquadro disegna `Count: 0`, `find` restituisce `undefined`, e il test fallisce a `toBeDefined`.

354 

355<h2 id="test-a-mod-that-judges-other-mods">

356 Testa un mod che giudica altri mod

357</h2>

358 

359Un mod che la tua organizzazione elenca in [`prependPlugins`](/docs/it/plugins/mods/admin) può rifiutare un altro mod prima che carichi. Per testarne uno, imposta il tier del tuo mod e dai al test un secondo mod per il tuo da ammettere o rifiutare:

360 

361* **`tier`**: chiamalo una volta in cima al file di test, come in `tier('prepend')`, per caricare il tuo mod come `prepend`, `append`, o `builtin`, il suo posto nell'[ordine in cui i mod vengono eseguiti](/docs/it/plugins/mods/events#the-order-mods-run-in). Senza di esso, il tuo mod carica come `user`.

362* **`plugins`**: passa a `test` un oggetto opzioni davanti al corpo del test. Il suo array `plugins` contiene mod che scrivi inline, ognuno con un `name` e una funzione `register`. Per caricare uno da qualche parte diversa da `user`, aggiungi `tier` ad esso.

363 

364Questo file di test carica il [mod di policy dalla pagina admin](/docs/it/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) per primo. Controlla che il mod di policy rifiuti un mod che avvia un processo e ammetta uno che non lo fa:

365 

366```typescript acme-guard/tests/guard.test.ts theme={null}

367import { expect, test, tier } from 'claude-code/testing'

368 

369// Load the mod under test ahead of every other mod

370tier('prepend')

371 

372// A second mod whose code calls $.process.run, which the policy blocks

373const runner = {

374 name: 'runner',

375 register(on) {

376 on('tool.call', async ($, e, next) => {

377 await $.process.run(['ls'])

378 return { result: 'runner answered' }

379 })

380 },

381}

382 

383// A second mod that calls nothing the policy blocks

384const reader = {

385 name: 'reader',

386 register(on) {

387 on('tool.call', async ($, e, next) => {

388 return { result: 'reader answered' }

389 })

390 },

391}

392 

393test('refuses a mod that starts a process', { plugins: [runner] }, async ($, on) => {

394 on('tool.call', () => ({ result: 'claude code answered' }))

395 let message = ''

396 try {

397 // The first call on $ loads the mods, so the refusal is thrown here

398 await $.tool.call({ tool: 'Bash', command: 'ls' })

399 } catch (error) {

400 message = error.message

401 }

402 expect(message).toBe('runner: refused by acme-guard: Acme policy: mods may not call process.run')

403})

404 

405test('admits a mod that starts no process', { plugins: [reader] }, async ($, on) => {

406 on('tool.call', () => ({ result: 'claude code answered' }))

407 const out = await $.tool.call({ tool: 'Bash', command: 'ls' })

408 // The answer comes from reader, which shows that it loaded

409 expect(out).toEqual({ result: 'reader answered' })

410})

411```

412 

413Nella tua shell, esegui `claude plugin test` dalla directory `acme-guard`. Entrambi i test passano con il mod di policy come mostra la pagina admin.

414 

415Il kit carica ogni mod alla prima chiamata del test su `$`. Quando il tuo mod ne rifiuta uno, quella chiamata genera un'eccezione, e il messaggio nomina il mod rifiutato, il mod che lo ha rifiutato, e il tuo motivo. Nel secondo test nulla viene rifiutato, quindi `reader` risponde alla chiamata di strumento prima che raggiunga lo stub.

416 

417<h2 id="next-steps">

418 Passaggi successivi

419</h2>

420 

421* [Troubleshoot a mod](/docs/it/plugins/mods/troubleshoot): scopri perché un mod non fa nulla in una sessione

422* [Mods reference](/docs/it/plugins/mods/reference): ogni evento di input e risultato, per scrivere stub

plugins/mods/troubleshoot.md +284 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Risolvere i problemi di un mod

6 

7> Scopri perché un mod Claude Code non fa nulla: abbina il sintomo o il messaggio alla sua causa, cerca i messaggi di rifiuto e leggi il debug log.

8 

9Quando il modulo di un mod o uno dei suoi hooks fallisce, Claude Code lo salta e la sessione continua, quindi un mod rotto può sembrare uno che non fa nulla. Inizia controllando cosa Claude Code ha letto dal tuo mod e dove segnala un problema, quindi trova il sintomo o il messaggio che hai.

10 

11<h2 id="find-out-why-a-mod-does-nothing">

12 Scopri perché un mod non fa nulla

13</h2>

14 

15Quando un mod non fa nulla, due controlli trovano il motivo: cosa Claude Code legge dai file del mod e la riga che scrive quando salta qualcosa. Per il primo, nella tua shell esegui [`claude plugin validate`](/docs/it/plugins/mods/create#check-what-claude-code-reads-from-your-mod) con la directory del mod, come in `claude plugin validate ./first-mod`. Cattura un evento scritto male, un manifest errato e un modulo che Claude Code non riesce a leggere, senza avviare una sessione.

16 

17Quando un modulo non si carica, un hook viene saltato o un altro mod rifiuta il tuo, Claude Code scrive una riga che nomina il tuo mod. Dove leggi quella riga dipende dalla sessione:

18 

19* **Una sessione che ricarica a caldo una directory di plugin**: una riga attenuata nella trascrizione. È una sessione interattiva che hai avviato con `--plugin-dir`, oppure una in cui hai [abilitato il ricaricamento a caldo](/docs/it/plugins/mods/create#ask-claude-for-a-mod) per i mod che Claude ha scritto.

20* **Qualsiasi altra sessione interattiva, come una che esegue un mod che hai installato da un marketplace**: il [debug log](#read-the-debug-log) solo. Per ottenerne uno, avvia la sessione con `claude --debug`.

21* **Un'esecuzione `claude -p` con `--plugin-dir`**: stderr, nel formato di output di testo predefinito. Un rifiuto da parte di un altro mod va al debug log solo.

22 

23<h2 id="check-whether-mods-can-load">

24 Controlla se i mod possono caricarsi

25</h2>

26 

27Per verificare se la tua configurazione consente ai mod di caricarsi affatto, senza installarne uno, esegui `claude plugin test` nella tua shell, da una directory che non contiene un mod. Non hai bisogno di una sessione. Il messaggio che stampa ti dice lo stato:

28 

29| Il messaggio include | Cosa significa |

30| :- | :- |

31| `no hooks module to load` | I mod possono caricarsi. Il comando non ha trovato alcun mod da testare in questa directory. |

32| `hooks modules are turned off here` | Un'impostazione sta tenendo i tuoi mod fuori: `disableAllHooks` nelle tue impostazioni, oppure la politica della tua organizzazione |

33| `hooks modules are turned off in this process` | Anthropic ha disattivato i mod installati da remoto. Nessuna impostazione sulla tua macchina li riattiva. |

34 

35Un'organizzazione può anche impostare `allowManagedModsOnly` per consentire solo i suoi mod, che questo comando non segnala. In quel caso un mod che installi non si carica e [un messaggio spiega perché](/docs/it/plugins/mods/troubleshoot#messages-from-the-built-in-guard).

36 

37<h2 id="the-mod-doesn’t-load">

38 Il mod non si carica

39</h2>

40 

41Nulla di ciò che il mod aggiunge appare: nessun comando, nessun disegno e nessun cambiamento nel comportamento.

42 

43<h3 id="your-version-is-older-than-2-1-287">

44 La tua versione è più vecchia di 2.1.287

45</h3>

46 

47`claude --version` stampa una versione più vecchia di 2.1.287. La tua versione è precedente ai mod attivi per impostazione predefinita.

48 

49[Aggiorna Claude Code](/docs/it/setup#update-claude-code).

50 

51<h3 id="the-mods-active-line-doesn’t-name-the-mod">

52 La riga `mods active` non nomina il mod

53</h3>

54 

55Nulla di ciò che il mod aggiunge appare e la [`riga mods active`](/docs/it/plugins/mods/overview#see-which-mods-a-session-loaded) in `/plugin` non lo nomina. Il modulo hooks non si è caricato. Quando Claude Code lo ha rifiutato, il debug log ha una riga che inizia con `hooks module`, il nome del mod e `not loaded:`, come in `hooks module first-mod@inline not loaded: disableAllHooks in managed settings` per un mod caricato con `--plugin-dir`.

56 

57Leggi il motivo dopo i due punti. La sezione [refusal messages](#refusal-messages) elenca ognuno. Se il log non ha tale riga, esamina le altre voci in questo gruppo.

58 

59<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">

60 Un'esecuzione `claude -p` stampa `hooks module not loaded`

61</h3>

62 

63La riga inizia con il nome del mod e va a stderr. Il modulo hooks è stato rifiutato. Un'esecuzione non interattiva non ha trascrizione, quindi il messaggio va a stderr.

64 

65Leggi il motivo dopo i due punti. La sezione [refusal messages](#refusal-messages) elenca ognuno.

66 

67<h3 id="refusal-messages">

68 Refusal messages

69</h3>

70 

71Ognuno di questi segue `hooks module`, il nome del mod e `not loaded:` nel debug log.

72 

73| Il messaggio inizia con | Cosa significa |

74| :- | :- |

75| `hooks modules are turned off for installed plugins in this process` | Anthropic ha disattivato i mod installati da remoto. Nessuna impostazione sulla tua macchina li riattiva. |

76| `disableAllHooks in managed settings` | La tua organizzazione ha disattivato gli hooks dai plugin installati |

77| `only managed plugins and built-in plugins run` | `allowManagedHooksOnly` è impostato, oppure `disableAllHooks` è impostato in un file di impostazioni diverso dalle impostazioni gestite |

78| `installed plugins that are not managed load no hooks module in this mode (--bare)` | Hai avviato Claude Code con `--bare` |

79| `another plugin of that name loads first` | Due plugin condividono un nome. Viene utilizzato quello gestito o quello caricato per primo. |

80 

81<h3 id="messages-from-the-built-in-guard">

82 Messages from the built-in guard

83</h3>

84 

85Su una macchina con impostazioni gestite, o per un utente connesso con un piano Team o Enterprise, la [built-in guard](/docs/it/plugins/mods/admin#know-what-happens-by-default) può rifiutare un mod o una delle sue risposte. Ogni messaggio nomina l'opzione che l'amministratore della tua organizzazione imposta per modificare la regola.

86 

87| Il messaggio contiene | Cosa significa | Dove appare |

88| :- | :- | :- |

89| `mods are limited to your organization's by policy (allowManagedModsOnly)` | La tua organizzazione consente solo [i suoi mod](/docs/it/plugins/mods/admin#install-your-organizations-mods), quindi il tuo non è stato caricato | Il debug log e la trascrizione in una [sessione che ricarica a caldo una directory di plugin](#find-out-why-a-mod-does-nothing) |

90| `tried to lift a deny rule in your settings` | Il [`tool.check`](/docs/it/plugins/mods/reference#tools) hook del tuo mod ha approvato una chiamata che una regola `deny` rifiuta. La chiamata rimane negata. | La trascrizione e il debug log, una volta per ogni mod in una sessione. In un'esecuzione `claude -p`, il debug log solo. |

91| `the deny rules in your settings could not be checked for this call, so it is refused` | La guard ha fallito durante il controllo di una chiamata che un mod ha approvato, quindi ha rifiutato la chiamata | Il motivo che Claude legge per la chiamata negata |

92 

93<h3 id="validate-passes-and-lists-no-hooks-line">

94 `validate` passa e non elenca alcuna riga `hooks`

95</h3>

96 

97`hooks/hooks.json` non ha una chiave `modules`, oppure la chiave è scritta male.

98 

99Aggiungi `"modules": ["./register.js"]`.

100 

101<h3 id="hooks-module-did-not-load">

102 `hooks module did not load`

103</h3>

104 

105La riga inizia con il nome del mod, quindi `hooks module did not load:` e un motivo, che fornisce il file e la riga quando il problema è nel tuo codice. Claude Code non ha potuto caricare il modulo, ad esempio perché il suo codice di livello superiore ha lanciato un'eccezione.

106 

107Correggi l'errore che il motivo nomina.

108 

109<h3 id="options-do-not-fit-plugin-json-userconfig">

110 `options do not fit plugin.json userConfig`

111</h3>

112 

113La riga inizia con il nome del mod, quindi `hooks module did not load: options do not fit plugin.json userConfig:` e un motivo. Un'opzione non si adatta al suo campo [`userConfig`](/docs/it/plugins/components#user-configuration), come un numero superiore al `max` del campo, oppure un campo obbligatorio non ha valore.

114 

115Imposta o modifica il valore. La fine della riga nomina la sua voce `pluginConfigs` in `settings.json`.

116 

117<h3 id="no-mod-loads-in-a-directory-you-opened-for-the-first-time">

118 Nessun mod si carica in una directory che hai aperto per la prima volta

119</h3>

120 

121Non hai risposto al prompt di fiducia per la directory.

122 

123Avvia una sessione interattiva in quella directory con `claude` e accetta il prompt di fiducia che apre.

124 

125<h3 id="no-installed-plugin-loads-at-all">

126 Nessun plugin installato si carica affatto

127</h3>

128 

129Hai avviato Claude Code con `--safe-mode`.

130 

131Avvia senza il flag.

132 

133<h2 id="a-hook-is-skipped-or-a-mod-is-unloaded">

134 Un hook viene saltato o un mod viene scaricato

135</h2>

136 

137Il mod si è caricato e poi Claude Code ha saltato uno dei suoi hooks o lo ha scaricato.

138 

139<h3 id="hook-skipped">

140 `hook skipped`

141</h3>

142 

143La riga nomina il mod e l'evento, quindi dice `hook skipped:` e un motivo, come in `first-mod: tool.call hook skipped: threw Error: boom`. Un hook ha lanciato un'eccezione, ha superato il suo [limite di tempo di 10 secondi](/docs/it/plugins/mods/reference#limits), oppure ha restituito un risultato di forma sbagliata. La riga appare una volta per ogni evento e tipo di errore fino al ricaricamento del mod.

144 

145Correggi l'errore. Il debug log ha una riga per ogni occorrenza.

146 

147<h3 id="it-crashed-the-hooks-worker">

148 `it crashed the hooks worker`

149</h3>

150 

151La riga inizia con il nome del mod, come in `first-mod was unloaded: it crashed the hooks worker`. I mod installati condividono un thread di lavoro. Il worker ha smesso di rispondere o si è bloccato e Claude Code ha tracciato che ciò è dovuto a questo mod e lo ha scaricato. Un hook che blocca il thread, come un ciclo che non attende mai, è una causa.

152 

153Correggi l'hook.

154 

155<h3 id="mods-that-run-in-the-hooks-worker-are-off-for-this-session">

156 `mods that run in the hooks worker are off for this session`

157</h3>

158 

159La riga legge `hooks: mods that run in the hooks worker are off for this session: it crashed 3 times`. Il worker si è fermato tre volte e Claude Code non ha potuto tracciare gli arresti a un mod, quindi ha scaricato ogni mod che non è built-in, inclusi i mod che la tua organizzazione installa. Questa riga raggiunge la trascrizione in ogni sessione interattiva.

160 

161Esegui `/reload-plugins` per caricarli di nuovo.

162 

163<h2 id="a-tool-call-is-denied">

164 Una chiamata di strumento viene negata

165</h2>

166 

167Il mod si è caricato e i suoi hooks vengono eseguiti e una chiamata di strumento che ha toccato viene rifiutata.

168 

169<h3 id="a-hook-changed-this-call’s-input-after-the-model-wrote-it">

170 `a hook changed this call's input after the model wrote it`

171</h3>

172 

173In modalità auto, una chiamata di strumento negata fornisce questo motivo. Un hook ha modificato l'input della chiamata di strumento dopo che il [classificatore lato server](/docs/it/permission-modes#server-side-classifier-review) lo ha esaminato, quindi quella revisione non copre ciò che verrebbe eseguito. L'hook può essere il [`tool.call`](/docs/it/plugins/mods/reference#tools) o il [`turn.step`](/docs/it/plugins/mods/reference#turns) hook del mod, oppure un hook di impostazioni [`PreToolUse`](/docs/it/hooks#pretooluse). Il messaggio non dice quale.

174 

175Il messaggio dice a Claude di emettere la chiamata ancora una volta come registrata. Se viene negata anche quella, l'hook cambia l'input ogni volta, quindi disattiva il mod o l'hook, oppure esci dalla modalità auto e approva la chiamata tu stesso.

176 

177<h3 id="a-message-about-the-deny-rules-in-your-settings">

178 Un messaggio sulle regole di negazione nelle tue impostazioni

179</h3>

180 

181`tried to lift a deny rule in your settings` e `the deny rules in your settings could not be checked for this call, so it is refused` provengono entrambi dalla built-in guard.

182 

183Cercali in [Messages from the built-in guard](#messages-from-the-built-in-guard).

184 

185<h2 id="a-drawing-doesn’t-appear-or-respond">

186 Un disegno non appare o non risponde

187</h2>

188 

189Il mod si è caricato e il tuo riquadro, banda o controlli non si comportano come ti aspetti.

190 

191<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">

192 Un riquadro o una banda è vuoto o mostra il solito contenuto di Claude Code

193</h3>

194 

195L'[albero](/docs/it/plugins/mods/interface#build-a-tree-from-elements) che il tuo hook ha restituito non ha convalidato. Con `--plugin-dir`, la trascrizione dice `ui.render (Pane) refused:` con il motivo, come in `first-mod: ui.render (Pane) refused: Box prop "flexDirection" must be one of row, column, row-reverse, column-reverse; the engine drew its own`. Il debug log ha `a hook returned a tree that does not validate` con lo stesso motivo.

196 

197Leggi il motivo su quella riga. Le cause comuni sono una prop che l'elemento non accetta e un elemento che l'app non ha.

198 

199<h3 id="ui-open-runs-and-no-pane-appears">

200 `$.ui.open` viene eseguito e nessun riquadro appare

201</h3>

202 

203La chiamata non è venuta da qualcosa che l'utente ha fatto e il terminale è più stretto di 144 colonne.

204 

205Apri il riquadro da un comando o un pulsante, oppure controlla il risultato `isPlaced` della chiamata. Vedi [Open a pane at the right time](/docs/it/plugins/mods/interface#open-a-pane-at-the-right-time).

206 

207<h3 id="hotkeys-do-nothing">

208 I tasti di scelta rapida non fanno nulla

209</h3>

210 

211Il tuo riquadro non ha il focus della tastiera.

212 

213Premi Ctrl+X quindi Tab, oppure fai clic sul riquadro. Aprilo con `focus: true` da un comando.

214 

215<h3 id="a-drawing-works-in-the-terminal-and-not-in-the-desktop-app">

216 Un disegno funziona nel terminale e non nell'app Desktop

217</h3>

218 

219Il sito o l'elemento non è disponibile lì.

220 

221Controlla le [render sites](/docs/it/plugins/mods/reference#render-sites) e le tabelle [elements](/docs/it/plugins/mods/reference#elements).

222 

223<h2 id="an-edit-or-a-value-is-lost">

224 Una modifica o un valore viene perso

225</h2>

226 

227Il mod viene eseguito e una modifica che hai fatto o un valore che ha mantenuto non è lì.

228 

229<h3 id="your-edits-don’t-take-effect">

230 Le tue modifiche non hanno effetto

231</h3>

232 

233Stai modificando un plugin che hai installato. Claude Code esegue la copia memorizzata nella cache per la versione installata.

234 

235Sviluppa con `--plugin-dir` puntato alla tua copia di lavoro, come in `claude --plugin-dir ./first-mod`, che ricarica quando salvi.

236 

237<h3 id="a-value-resets-when-the-module-reloads">

238 Un valore si ripristina quando il modulo si ricarica

239</h3>

240 

241Le variabili a livello di modulo vengono reinizializzate ad ogni ricaricamento.

242 

243[Mantieni il valore in `$.state` o `$.store`](/docs/it/plugins/mods/interface#keep-state).

244 

245<h3 id="a-value-resets-after-/clear-/resume-or-/branch">

246 Un valore si ripristina dopo `/clear`, `/resume` o `/branch`

247</h3>

248 

249Un valore si ripristina, oppure un valore salvato viene sostituito dal suo valore predefinito. Ognuno di questi comandi ripristina `$.state` ai suoi valori predefiniti e `session.start` non si attiva di nuovo.

250 

251[Carica il valore salvato di nuovo](/docs/it/plugins/mods/interface#load-a-saved-value-again-after-clear) in un hook `classic.SessionStart`.

252 

253<h2 id="read-the-debug-log">

254 Read the debug log

255</h2>

256 

257Il debug log ha una riga per ogni modulo che Claude Code carica o rifiuta, ogni hook che fallisce e ogni risultato che rifiuta, quindi è dove guardare quando la trascrizione non mostra nulla. Per scriverne uno, nella tua shell avvia Claude Code con `--debug`, oppure con `--debug-file <path>` per scegliere dove va:

258 

259```bash theme={null}

260claude --debug-file ./mod-debug.log --plugin-dir ./first-mod

261```

262 

263In un altro terminale, segui il file e filtra per il nome del tuo mod:

264 

265```bash theme={null}

266tail -f ./mod-debug.log | grep first-mod

267```

268 

269Un mod che si è caricato ha una riga che lo nomina ed elenca gli eventi che aggancia. Un mod caricato con `--plugin-dir` appare sotto il suo nome seguito da `@inline`:

270 

271```text theme={null}

272hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render

273```

274 

275Un disegno che non ha convalidato conta come un risultato rifiutato e ottiene una riga anche. Per scrivere le tue righe nel log, chiama [`$.ui.log`](/docs/it/plugins/mods/api#show-something-without-starting-a-turn) con un secondo argomento, come in `$.ui.log('message', { to: 'debug' })`. Senza il secondo argomento, `$.ui.log` aggiunge una riga attenuata alla trascrizione.

276 

277Mentre modifichi un mod caricato con `--plugin-dir`, la trascrizione mostra una riga per ogni ricaricamento che nomina il mod ed elenca i suoi hooks. Se un salvataggio interrompe il modulo, la riga dice `reload failed, the previous version stays loaded:` con il motivo e l'ultima versione funzionante continua a essere eseguita.

278 

279<h2 id="next-steps">

280 Next steps

281</h2>

282 

283* [Test a mod](/docs/it/plugins/mods/test): cattura i problemi prima che raggiungano una sessione

284* [Troubleshoot plugins](/docs/it/plugins/troubleshooting): problemi con l'installazione e il caricamento di un plugin che non sono specifici dei mod

plugins/org.md +4 −1

Details

212| `pluginTrustMessage` | Aggiunge il vostro testo all'avviso di fiducia che `/plugin` mostra prima che un plugin si installi | Non cambia il testo dell'avviso stesso |212| `pluginTrustMessage` | Aggiunge il vostro testo all'avviso di fiducia che `/plugin` mostra prima che un plugin si installi | Non cambia il testo dell'avviso stesso |

213| `allowedChannelPlugins` | Sostituisce l'elenco predefinito di plugin autorizzati a inviare messaggi di canale. Richiede `channelsEnabled: true` | Vedere [Limitare quali plugin di canale possono essere eseguiti](/docs/it/channels#restrict-which-channel-plugins-can-run) |213| `allowedChannelPlugins` | Sostituisce l'elenco predefinito di plugin autorizzati a inviare messaggi di canale. Richiede `channelsEnabled: true` | Vedere [Limitare quali plugin di canale possono essere eseguiti](/docs/it/channels#restrict-which-channel-plugins-can-run) |

214| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](/docs/it/env-vars) | Interrompe le sessioni di terminale interattive dal registrare automaticamente il marketplace ufficiale | Non rimuove un marketplace già registrato. L'elenco consentito e l'elenco bloccato controllano la stessa registrazione automatica senza di esso. Una macchina che ha iniziato una volta con esso impostato non riprende la registrazione automatica dopo averlo disimpostato |214| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](/docs/it/env-vars) | Interrompe le sessioni di terminale interattive dal registrare automaticamente il marketplace ufficiale | Non rimuove un marketplace già registrato. L'elenco consentito e l'elenco bloccato controllano la stessa registrazione automatica senza di esso. Una macchina che ha iniziato una volta con esso impostato non riprende la registrazione automatica dopo averlo disimpostato |

215| [`allowManagedModsOnly`](/docs/it/plugins/mods/admin#stop-user-installed-mods-from-loading) | Interrompe ogni [mod](/docs/it/plugins/mods/overview) installato che non [conta come della vostra organizzazione](/docs/it/plugins/mods/admin#install-your-organizations-mods) dal caricamento | Non interrompe un plugin che contiene un mod dall'installazione. Per questo, usate le chiavi di marketplace in questa tabella |

215 216 

216Ogni chiave nella tabella è un'impostazione gestita, a parte `enabledPlugins`, `syncClaudeAiPlugins` e `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`:217Ogni chiave nella tabella è un'impostazione gestita, a parte `enabledPlugins`, `syncClaudeAiPlugins`, `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` e `allowManagedModsOnly`:

217 218 

218* **`enabledPlugins`**: potete impostarla in qualsiasi ambito, e le impostazioni gestite la bloccano.219* **`enabledPlugins`**: potete impostarla in qualsiasi ambito, e le impostazioni gestite la bloccano.

219* **`syncClaudeAiPlugins`**: ogni utente può anche impostarla nelle proprie impostazioni utente o locali. Vedere il suo [ambito nel riferimento delle impostazioni](/docs/it/settings-reference#syncclaudeaiplugins).220* **`syncClaudeAiPlugins`**: ogni utente può anche impostarla nelle proprie impostazioni utente o locali. Vedere il suo [ambito nel riferimento delle impostazioni](/docs/it/settings-reference#syncclaudeaiplugins).

220* **`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`**: questa è una variabile di ambiente che consegnate attraverso il blocco `env` gestito mostrato in [Disattivare gli aggiornamenti per l'intera flotta](#turn-updates-off-for-the-whole-fleet).221* **`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`**: questa è una variabile di ambiente che consegnate attraverso il blocco `env` gestito mostrato in [Disattivare gli aggiornamenti per l'intera flotta](#turn-updates-off-for-the-whole-fleet).

222* **`allowManagedModsOnly`**: questa è un'opzione su un plugin incorporato, che impostate in `pluginConfigs` nelle impostazioni gestite. Vedere [Interrompere il caricamento dei mod installati dall'utente](/docs/it/plugins/mods/admin#stop-user-installed-mods-from-loading).

221 223 

222Ogni chiave di impostazioni qui ha una voce nel [riferimento delle impostazioni](/docs/it/settings-reference).224Ogni chiave di impostazioni qui ha una voce nel [riferimento delle impostazioni](/docs/it/settings-reference).

223 225 


457* [Marketplace reference](/docs/it/plugins/marketplace-reference#marketplace-sources): the `source` values `extraKnownMarketplaces`, `strictKnownMarketplaces`, and `blockedMarketplaces` accept459* [Marketplace reference](/docs/it/plugins/marketplace-reference#marketplace-sources): the `source` values `extraKnownMarketplaces`, `strictKnownMarketplaces`, and `blockedMarketplaces` accept

458* [Host and maintain a marketplace](/docs/it/plugins/host-marketplace): run the marketplace your policy points at460* [Host and maintain a marketplace](/docs/it/plugins/host-marketplace): run the marketplace your policy points at

459* [Plugin security and trust](/docs/it/plugins/security): what a plugin can do on a machine and how to review one before installing461* [Plugin security and trust](/docs/it/plugins/security): what a plugin can do on a machine and how to review one before installing

462* [Manage mods for your organization](/docs/it/plugins/mods/admin): turn off or limit mods, the plugins that run JavaScript inside Claude Code

460* [Server-managed settings](/docs/it/server-managed-settings): deliver these keys from the claude.ai admin console463* [Server-managed settings](/docs/it/server-managed-settings): deliver these keys from the claude.ai admin console

461* [Troubleshoot plugins](/docs/it/plugins/troubleshooting#blocked-by-your-organization): the messages users see when policy blocks them464* [Troubleshoot plugins](/docs/it/plugins/troubleshooting#blocked-by-your-organization): the messages users see when policy blocks them

Details

30* [**Skills**](/docs/it/plugins/components#skills): istruzioni `SKILL.md` che Claude carica quando rilevante, e che puoi anche eseguire come comando30* [**Skills**](/docs/it/plugins/components#skills): istruzioni `SKILL.md` che Claude carica quando rilevante, e che puoi anche eseguire come comando

31* [**Agenti**](/docs/it/plugins/components#agents): definizioni di subagenti a cui Claude può delegare31* [**Agenti**](/docs/it/plugins/components#agents): definizioni di subagenti a cui Claude può delegare

32* [**Hooks**](/docs/it/plugins/components#hooks): comandi che Claude Code esegue in punti del suo ciclo di vita, come dopo ogni modifica32* [**Hooks**](/docs/it/plugins/components#hooks): comandi che Claude Code esegue in punti del suo ciclo di vita, come dopo ogni modifica

33* [**Un modulo hooks**](/docs/it/plugins/mods/overview): hook scritti come funzioni JavaScript, che possono anche disegnare riquadri e aggiungere comandi. Un plugin che ne ha uno è chiamato mod

33* [**Server MCP**](/docs/it/plugins/components#mcp-servers): server di strumenti a cui Claude Code si connette mentre il plugin è abilitato34* [**Server MCP**](/docs/it/plugins/components#mcp-servers): server di strumenti a cui Claude Code si connette mentre il plugin è abilitato

34 35 

35Questo diagramma mostra un plugin denominato `my-plugin` che contiene uno di ciascuno di questi componenti, e cosa ottieni da ogni file una volta che il plugin si carica.36Questo diagramma mostra un plugin denominato `my-plugin` che contiene uno di ciascuno di questi componenti, e cosa ottieni da ogni file una volta che il plugin si carica.

Details

29Un plugin può contenere contenuti che eseguono codice sulla tua macchina con i tuoi privilegi utente e contenuti che entrano nel contesto di Claude come istruzioni, quindi [esamina un plugin prima di installarlo](#review-a-plugin-before-you-install). Ecco cosa può fare un plugin installato:29Un plugin può contenere contenuti che eseguono codice sulla tua macchina con i tuoi privilegi utente e contenuti che entrano nel contesto di Claude come istruzioni, quindi [esamina un plugin prima di installarlo](#review-a-plugin-before-you-install). Ecco cosa può fare un plugin installato:

30 30 

31* **Hooks**: gli [hooks](/docs/it/hooks) di un plugin vengono eseguiti come comandi shell in punti del ciclo di vita di Claude Code, come prima o dopo una chiamata a uno strumento.31* **Hooks**: gli [hooks](/docs/it/hooks) di un plugin vengono eseguiti come comandi shell in punti del ciclo di vita di Claude Code, come prima o dopo una chiamata a uno strumento.

32* **Mods**: un [mod](/docs/it/plugins/mods/overview) di un plugin esegue JavaScript all'interno di Claude Code con le tue autorizzazioni. Per elencare cosa fa un mod prima di installarlo, vedi [Decide whether to trust a mod](/docs/it/plugins/mods/overview#decide-whether-to-trust-a-mod).

32* **Server MCP e LSP**: Claude Code si connette ai [server MCP](/docs/it/mcp) che un plugin abilitato dichiara e fornisce a Claude i loro strumenti. Un server MCP stdio viene eseguito come un processo che Claude Code avvia sulla tua macchina. Claude Code avvia anche i language server che il plugin dichiara.33* **Server MCP e LSP**: Claude Code si connette ai [server MCP](/docs/it/mcp) che un plugin abilitato dichiara e fornisce a Claude i loro strumenti. Un server MCP stdio viene eseguito come un processo che Claude Code avvia sulla tua macchina. Claude Code avvia anche i language server che il plugin dichiara.

33* **Directory `bin/`**: Claude Code aggiunge la directory `bin/` di ogni plugin abilitato al `PATH` della shell dello strumento Bash, quindi i comandi Bash di Claude possono eseguire qualsiasi eseguibile lì.34* **Directory `bin/`**: Claude Code aggiunge la directory `bin/` di ogni plugin abilitato al `PATH` della shell dello strumento Bash, quindi i comandi Bash di Claude possono eseguire qualsiasi eseguibile lì.

34* **Skills, comandi e agenti**: questi entrano nel contesto di Claude come istruzioni, quindi influenzano ciò che Claude fa con gli strumenti che ha già.35* **Skills, comandi e agenti**: questi entrano nel contesto di Claude come istruzioni, quindi influenzano ciò che Claude fa con gli strumenti che ha già.


37Le [regole di autorizzazione](/docs/it/permissions) e la [sandbox](/docs/it/sandboxing) di Claude Code coprono le chiamate agli strumenti che Claude fa, non il codice che un plugin esegue da solo:38Le [regole di autorizzazione](/docs/it/permissions) e la [sandbox](/docs/it/sandboxing) di Claude Code coprono le chiamate agli strumenti che Claude fa, non il codice che un plugin esegue da solo:

38 39 

39* **Hooks e processi server**: gli hook dei comandi eseguono comandi shell con i tuoi permessi utente completi. Claude Code esegue hook e server MCP al di fuori della sandbox.40* **Hooks e processi server**: gli hook dei comandi eseguono comandi shell con i tuoi permessi utente completi. Claude Code esegue hook e server MCP al di fuori della sandbox.

40* **Chiamate agli strumenti di Claude**: una chiamata a uno degli strumenti MCP del plugin e un comando Bash che esegue un eseguibile dalla `bin/` del plugin sono chiamate agli strumenti, quindi le tue regole di autorizzazione si applicano a loro.41* **Chiamate agli strumenti di Claude**: una chiamata a uno degli strumenti MCP del plugin e un comando Bash che esegue un eseguibile dalla `bin/` del plugin sono chiamate agli strumenti, quindi le tue regole di autorizzazione si applicano a loro. Per cosa può fare un mod a una chiamata a uno strumento, vedi [Decide whether to trust a mod](/docs/it/plugins/mods/overview#decide-whether-to-trust-a-mod).

41 42 

42L'installazione di un plugin lo abilita anche, a meno che il suo manifest o la voce del marketplace non imposti [`defaultEnabled: false`](/docs/it/plugins/install#choose-an-install-scope) e tu non l'abbia abilitato tu stesso.43L'installazione di un plugin lo abilita anche, a meno che il suo manifest o la voce del marketplace non imposti [`defaultEnabled: false`](/docs/it/plugins/install#choose-an-install-scope) e tu non l'abbia abilitato tu stesso.

43 44 

Details

201 201 

202Un'aggiunta riuscita stampa `Successfully added marketplace: <name>`.202Un'aggiunta riuscita stampa `Successfully added marketplace: <name>`.

203 203 

204<h3 id="invalid-git-url">

205 `Invalid git URL`

206</h3>

207 

208È stato aggiunto un marketplace, installato un plugin o eseguito un aggiornamento da un indirizzo git e il comando è fallito con `Invalid git URL` nel suo messaggio.

209 

210Claude Code controlla ogni indirizzo git prima di eseguire git. Rifiuta un indirizzo il cui protocollo non supporta. Rifiuta anche un indirizzo che git potrebbe leggere come denominazione di un server o cartella diversa da quella che l'indirizzo mostra.

211 

212Il testo dopo l'indirizzo nomina cosa cambiare. Riscrivere l'indirizzo come il messaggio dice ed eseguire di nuovo il comando.

213 

214Un rifiuto che invece dice `is blocked by enterprise policy` proviene dalle impostazioni dell'organizzazione. Vedere [Marketplace source is blocked by enterprise policy](#marketplace-source-is-blocked-by-enterprise-policy).

215 

204<h3 id="path-does-not-exist">216<h3 id="path-does-not-exist">

205 `Path does not exist: <path>`217 `Path does not exist: <path>`

206</h3>218</h3>


410 422 

411`claude plugin install` nella shell stampa un messaggio diverso. Per un plugin già installato nello scope di destinazione, stampa `Plugin "<name>@<marketplace>" is already installed (scope: user)` ed esce con 0. Se la sua directory di cache è mancante, lo stesso comando la scarica di nuovo.423`claude plugin install` nella shell stampa un messaggio diverso. Per un plugin già installato nello scope di destinazione, stampa `Plugin "<name>@<marketplace>" is already installed (scope: user)` ed esce con 0. Se la sua directory di cache è mancante, lo stesso comando la scarica di nuovo.

412 424 

425<h3 id="plugin-would-share-its-folder">

426 `"<plugin>" was not installed: it would share its folder with "<other>"`

427</h3>

428 

429È stato installato un plugin tramite `claude plugin install`, `/plugin` o un suggerimento di installazione in una sessione e Claude Code l'ha rifiutato con questa riga o con `would share its saved data with`.

430 

431L'id del plugin rifiutato e l'id di un plugin installato si mappano sulla stessa cartella su disco: sono uguali una volta che `.` e `@` sono scritti come `-`. Su macOS e Windows, gli id che differiscono solo in maiuscole si mappano sulla stessa cartella anche. Installare entrambi metterebbe i file di un plugin nella cartella dell'altro, quindi Claude Code rifiuta e il plugin installato mantiene i suoi file.

432 

433Il messaggio nomina la via d'uscita:

434 

435* **L'altro plugin è installato**: il messaggio dice `Only one of the two can be installed.` e nomina il comando `claude plugin uninstall` o il passaggio di disinstallazione in `/plugin` che rimuove l'altro plugin. Eseguirlo, quindi installare di nuovo. Per ciò che la disinstallazione rimuove, vedere [What an uninstall deletes and keeps](/docs/it/plugins/cli-reference#what-an-uninstall-deletes-and-keeps).

436* **Entrambi gli id arrivano in un'installazione**, come un plugin e una dipendenza di cui ha bisogno: nessun ordine di installazione aiuta. Solo un manutentore del marketplace che elenca i due plugin può risolverlo, rinominandone uno. Quando i due provengono da marketplace diversi, un manutentore di uno qualsiasi di essi può.

437 

413<h3 id="this-plugin-uses-a-source-type-your-claude-code-version-does-not-suppo">438<h3 id="this-plugin-uses-a-source-type-your-claude-code-version-does-not-suppo">

414 `This plugin uses a source type your Claude Code version does not support`439 `This plugin uses a source type your Claude Code version does not support`

415</h3>440</h3>


790* **`URL is unset or invalid`**: un'opzione `${user_config.*}` che l'URL utilizza non è impostata. Eseguire `/plugin configure <plugin>` per impostarla815* **`URL is unset or invalid`**: un'opzione `${user_config.*}` che l'URL utilizza non è impostata. Eseguire `/plugin configure <plugin>` per impostarla

791* **`has an invalid MCP url`** o **`headersHelper for MCP server '<server>' references ${user_config.*}`**: la configurazione del plugin stesso è in difetto. Correggere l'`url` o `headersHelper` nella configurazione MCP del plugin o segnalarlo all'autore del plugin se il plugin non è vostro. Il caso `headersHelper` ha la sua voce sotto [plugin command references user\_config](/docs/it/errors#plugin-command-references-user-config)816* **`has an invalid MCP url`** o **`headersHelper for MCP server '<server>' references ${user_config.*}`**: la configurazione del plugin stesso è in difetto. Correggere l'`url` o `headersHelper` nella configurazione MCP del plugin o segnalarlo all'autore del plugin se il plugin non è vostro. Il caso `headersHelper` ha la sua voce sotto [plugin command references user\_config](/docs/it/errors#plugin-command-references-user-config)

792 817 

818<h4 id="bundled-mcp-server-name-was-not-started-it-needs-configuration">

819 `Bundled MCP server "<name>" was not started: it needs configuration`

820</h4>

821 

822Il plugin include il server come un [MCPB bundle](/docs/it/plugins/components#include-a-packaged-mcpb-server) che dichiara `user_config`, e un'impostazione richiesta non ha un valore salvato ancora o un valore salvato fallisce la convalida propria del bundle, quindi Claude Code salta l'avvio del server. Il resto del plugin funziona.

823 

824Selezionare il plugin sulla scheda **Installed** di `/plugin` e scegliere **Configure** per fornire i valori. Dopo aver salvato, `/plugin` mostra `Configuration saved.` e si chiude, e Claude Code ricarica i plugin come descritto sotto [Manage installed plugins](/docs/it/plugins/install#manage-installed-plugins). Il server si avvia una volta che quel ricaricamento si applica. Prima della v2.1.285, Claude Code saltava il server senza mostrare questa riga.

825 

793<h4 id="server-is-configured-but-never-connects">826<h4 id="server-is-configured-but-never-connects">

794 Server is configured but never connects827 Server is configured but never connects

795</h4>828</h4>


841Un language server che non è configurato per lo spazio di lavoro può segnalare importazioni non risolte per i pacchetti interni. Non c'è nulla da correggere dal lato di Claude Code e le diagnostiche non impediscono a Claude di modificare il codice.874Un language server che non è configurato per lo spazio di lavoro può segnalare importazioni non risolte per i pacchetti interni. Non c'è nulla da correggere dal lato di Claude Code e le diagnostiche non impediscono a Claude di modificare il codice.

842 875 

843<h2 id="build-a-plugin">876<h2 id="build-a-plugin">

844 Build a plugin877 Creare un plugin

845</h2>878</h2>

846 879 

847Si sta sviluppando un plugin e lo si carica con `--plugin-dir` o lo si installa da un marketplace locale. Queste voci coprono i fallimenti che si incontrano durante lo sviluppo di un plugin. Per i controlli da eseguire dopo ogni modifica, vedere [Test and debug](/docs/it/plugins/create#test-and-debug).880Stai sviluppando un plugin e lo stai caricando con `--plugin-dir` o lo stai installando da un marketplace locale. Queste voci coprono i guasti che incontri durante lo sviluppo di un plugin. Per eseguire i controlli dopo ogni modifica, vedi [Test and debug](/docs/it/plugins/create#test-and-debug).

848 881 

849Due fallimenti che raggiungono anche gli utenti di un plugin hanno le loro voci sotto [Plugin installed but not working](#plugin-installed-but-not-working):882Due guasti che raggiungono anche gli utenti di un plugin hanno le loro voci sotto [Plugin installed but not working](#plugin-installed-but-not-working):

850 883 

851* **Un hook che non si attiva**: vedere [hooks that don't fire](#failed-to-load-hooks-from-and-hooks-that-dont-fire)884* **Un hook che non si attiva**: vedi [hooks that don't fire](#failed-to-load-hooks-from-and-hooks-that-dont-fire)

852* **Un server MCP che non si avvia**: vedere [MCP servers that don't start](#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start)885* **Un server MCP che non si avvia**: vedi [MCP servers that don't start](#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start)

853 886 

854<h3 id="commands-path-not-found">887<h3 id="commands-path-not-found">

855 `commands path not found: <path>`888 `commands path not found: <path>`


857 890 

858La scheda **Errors** mostra `commands path not found: <absolute path>` con la guida `Check that the path in your manifest or marketplace config is correct`. Lo stesso messaggio appare per `skills`, `agents` e `hooks`.891La scheda **Errors** mostra `commands path not found: <absolute path>` con la guida `Check that the path in your manifest or marketplace config is correct`. Lo stesso messaggio appare per `skills`, `agents` e `hooks`.

859 892 

860Claude Code ha risolto un percorso dal vostro `plugin.json` o dalla voce del marketplace rispetto alla radice del plugin e non ha trovato nulla lì. Il percorso nel messaggio è il percorso assoluto che ha controllato, quindi confrontarlo con ciò che è su disco. Correggere il percorso o creare la directory, quindi eseguire `/reload-plugins`.893Claude Code ha risolto un percorso dal tuo `plugin.json` o dalla voce del marketplace rispetto alla radice del plugin e non ha trovato nulla lì. Il percorso nel messaggio è il percorso assoluto che ha controllato, quindi confrontalo con quello su disco. Correggi il percorso o crea la directory, quindi esegui `/reload-plugins`.

861 894 

862I percorsi nel manifest sono relativi alla radice del plugin e iniziano con `./`. Un percorso che si risolve al di fuori della radice del plugin è segnalato come `<component> path escapes plugin directory` al suo posto e viene scartato.895I percorsi nel manifest sono relativi alla radice del plugin e iniziano con `./`. Un percorso che si risolve al di fuori della radice del plugin viene segnalato come `<component> path escapes plugin directory` e viene eliminato.

863 896 

864<h3 id="plugin-dir-loads-a-plugin-with-no-components">897<h3 id="plugin-dir-loads-a-plugin-with-no-components">

865 `--plugin-dir` at a marketplace root doesn't load the plugins under `plugins/`898 `--plugin-dir` in una radice del marketplace non carica i plugin sotto `plugins/`

866</h3>899</h3>

867 900 

868È stato avviato `claude --plugin-dir <path>` e non si vede alcun errore, ma le skills, gli agent e gli hooks del plugin non sono lì.901Hai avviato `claude --plugin-dir <path>` e non vedi errori, ma le skills, gli agents e gli hooks del plugin non sono lì.

869 902 

870`--plugin-dir` prende la directory radice del plugin, quella che contiene `.claude-plugin/plugin.json` e le directory dei componenti come `skills/`. Se lo si punta alla radice di un marketplace al suo posto, Claude Code non legge `marketplace.json`, quindi un plugin sotto `plugins/` non si carica e non si vede alcun errore. Prima della v2.1.281, Claude Code caricava una radice di marketplace come un plugin vuoto denominato dopo quella directory. Puntare il flag alla directory del plugin stesso:903`--plugin-dir` accetta la directory radice del plugin, quella che contiene `.claude-plugin/plugin.json` e le directory dei componenti come `skills/`. Se la punti a una radice del marketplace, Claude Code non legge `marketplace.json`, quindi un plugin sotto `plugins/` non si carica e non vedi errori. Prima della v2.1.281, Claude Code caricava una radice del marketplace come un plugin vuoto denominato dopo quella directory. Punta il flag alla directory del plugin stesso:

871 904 

872```shell theme={null}905```shell theme={null}

873claude --plugin-dir ./my-marketplace/plugins/my-plugin906claude --plugin-dir ./my-marketplace/plugins/my-plugin

874```907```

875 908 

876Quindi aprire **Installed** in `/plugin`, dove il riquadro dei dettagli del plugin elenca i suoi componenti.909Quindi apri **Installed** in `/plugin`, dove il riquadro dei dettagli del plugin elenca i suoi componenti.

877 910 

878<h3 id="files-the-plugin-references-outside-its-directory-arent-found">911<h3 id="files-the-plugin-references-outside-its-directory-arent-found">

879 Files the plugin references outside its directory aren't found912 I file a cui il plugin fa riferimento al di fuori della sua directory non vengono trovati

880</h3>913</h3>

881 914 

882Un plugin funziona dalla sua directory di origine con `--plugin-dir` ma fallisce dopo l'installazione, con errori su un percorso come `../shared-utils`.915Un plugin funziona dalla sua directory di origine con `--plugin-dir` ma fallisce dopo l'installazione, con errori su un percorso come `../shared-utils`.

883 916 

884Claude Code copia un plugin installato nella sua cache e lo carica da lì, quindi un percorso che raggiunge al di fuori della propria directory del plugin non punta a nulla nella cache. Spostare i file condivisi all'interno della directory del plugin o farvi riferimento attraverso un symlink al suo interno. Per dove è la cache e come i percorsi si risolvono, vedere [Find plugins on disk](/docs/it/plugins/loading#find-plugins-on-disk).917Claude Code copia un plugin installato nella sua cache e lo carica da lì, quindi un percorso che raggiunge al di fuori della directory del plugin stesso non punta a nulla nella cache. Sposta i file condivisi all'interno della directory del plugin o fai riferimento ad essi tramite un symlink al suo interno. Per sapere dove si trova la cache e come si risolvono i percorsi, vedi [Find plugins on disk](/docs/it/plugins/loading#find-plugins-on-disk).

885 918 

886<h3 id="claude-plugin-root-shows-forward-slashes-on-windows">919<h3 id="claude-plugin-root-shows-forward-slashes-on-windows">

887 `${CLAUDE_PLUGIN_ROOT}` shows forward slashes on Windows920 `${CLAUDE_PLUGIN_ROOT}` mostra barre oblique in avanti su Windows

888</h3>921</h3>

889 922 

890Su Windows, un hook del plugin riceve `${CLAUDE_PLUGIN_ROOT}` come `C:/Users/you/...` piuttosto che `C:\Users\you\...` e uno script che si aspettava backslash si interrompe.923Su Windows, un hook del plugin riceve `${CLAUDE_PLUGIN_ROOT}` come `C:/Users/you/...` anziché `C:\Users\you\...` e uno script che si aspettava barre oblique inverse si interrompe.

891 924 

892Claude Code esegue gli hook in forma di shell attraverso Git Bash su Windows e sostituisce la radice del plugin nella forma Win32 con barra in avanti di proposito. I builtin di Bash, gli strumenti MSYS e i binari Windows nativi accettano tutti quella forma.925Claude Code esegue gli hook in forma shell attraverso Git Bash su Windows e sostituisce la radice del plugin nella forma Win32 con barre oblique in avanti di proposito. I builtin di Bash, gli strumenti MSYS e i binari Windows nativi accettano tutti quella forma.

893 926 

894Se lo script ha bisogno di backslash, passare l'hook a una delle forme che mantengono i percorsi nativi, descritte sotto [exec form and shell form](/docs/it/hooks#exec-form-and-shell-form):927Se il tuo script ha bisogno di barre oblique inverse, passa l'hook a una delle forme che mantengono i percorsi nativi, descritte sotto [exec form and shell form](/docs/it/hooks#exec-form-and-shell-form):

895 928 

896* Un hook in forma exec, che genera il processo direttamente con un array `args`929* Un hook in forma exec, che genera il processo direttamente con un array `args`

897* Un hook con `"shell": "powershell"`930* Un hook con `"shell": "powershell"`

898 931 

899<h3 id="plugin-loads-but-its-skills-are-missing">932<h3 id="plugin-loads-but-its-skills-are-missing">

900 Plugin loads but its skills are missing933 Il plugin si carica ma le sue skills sono mancanti

901</h3>934</h3>

902 935 

903Il plugin è elencato sotto **Installed** senza errori, ma le sue skills non vengono offerte quando si digita `/`.936Il tuo plugin è elencato sotto **Installed** senza errori, ma le sue skills non vengono offerte quando digiti `/`.

904 937 

905Le skills si caricano da `skills/` alla radice del plugin e i comandi da `commands/` alla radice del plugin. Solo `plugin.json` appartiene all'interno di `.claude-plugin/` e una directory `skills/` all'interno di `.claude-plugin/` non viene scansionata. Spostare le directory alla radice del plugin ed eseguire `/reload-plugins`. Successivamente, il riquadro dei dettagli del plugin in `/plugin` elenca le skills e digitare `/` le offre.938Le skills si caricano da `skills/` alla radice del plugin e i comandi da `commands/` alla radice del plugin. Solo `plugin.json` appartiene a `.claude-plugin/` e una directory `skills/` all'interno di `.claude-plugin/` non viene scansionata. Sposta le directory alla radice del plugin ed esegui `/reload-plugins`. Successivamente, il riquadro dei dettagli del plugin in `/plugin` elenca le skills e digitando `/` le offre.

906 939 

907Ogni skill è una directory contenente `SKILL.md`. Una voce `skills` nel manifest che punta a un file `SKILL.md` piuttosto che alla sua directory è segnalata come `path is a file; skills entries must be directories containing SKILL.md`.940Ogni skill è una directory contenente `SKILL.md`. Una voce `skills` nel manifest che punta a un file `SKILL.md` anziché alla sua directory viene segnalata come `path is a file; skills entries must be directories containing SKILL.md`.

908 941 

909<h3 id="skill-loads-but-claude-never-invokes-the-skill">942<h3 id="skill-loads-but-claude-never-invokes-the-skill">

910 Skill loads but Claude never invokes the skill943 La skill si carica ma Claude non invoca mai la skill

911</h3>944</h3>

912 945 

913La skill del plugin viene eseguita quando si digita il comando `/<plugin>:<skill>` ma Claude non la invoca mai in risposta a una richiesta semplice.946La skill del tuo plugin viene eseguita quando digiti il suo comando `/<plugin>:<skill>`, ma Claude non la invoca mai in risposta a una richiesta semplice.

914 947 

915Controllare queste cause in ordine:948Controlla queste cause in ordine:

916 949 

917* **La skill imposta `disable-model-invocation: true`**: con quel campo impostato, solo voi potete invocare la skill. La skill del modello in [Create your first plugin](/docs/it/plugins/create#create-your-first-plugin) lo imposta. Rimuovere la riga da una skill che volete che Claude invochi da solo. [Control who invokes a skill](/docs/it/skills#control-who-invokes-a-skill) copre il campo950* **La skill imposta `disable-model-invocation: true`**: con quel campo impostato, solo tu puoi invocare la skill. La skill del template in [Create your first plugin](/docs/it/plugins/create#create-your-first-plugin) lo imposta. Rimuovi la riga da una skill che vuoi che Claude invochi da solo. [Control who invokes a skill](/docs/it/skills#control-who-invokes-a-skill) copre il campo

918* **La descrizione non corrisponde a come le persone chiedono**: lavorare attraverso i controlli in [Skill not triggering](/docs/it/skills#skill-not-triggering)951* **La descrizione non corrisponde a come le persone chiedono**: lavora attraverso i controlli in [Skill not triggering](/docs/it/skills#skill-not-triggering)

919* **La descrizione è troncata**: quando molte skills sono installate, Claude Code accorcia le descrizioni per adattarsi al budget dei caratteri dell'elenco, che può spogliare le parole chiave di cui Claude ha bisogno per abbinare una richiesta. Vedere [Skill descriptions are cut short](/docs/it/skills#skill-descriptions-are-cut-short)952* **La descrizione è troncata**: quando molte skills sono installate, Claude Code accorcia le descrizioni per adattarsi al budget dei caratteri dell'elenco, che può eliminare le parole chiave di cui Claude ha bisogno per abbinare una richiesta. Vedi [Skill descriptions are cut short](/docs/it/skills#skill-descriptions-are-cut-short)

920 953 

921Per misurare quanto spesso la skill si attiva su prompt realistici piuttosto che controllare uno alla volta, scrivere un caso di eval con un [grader `tool_used: Skill`](/docs/it/plugin-evals#create-your-first-eval-suite) ed eseguirlo con `claude plugin eval` dopo ogni modifica della descrizione.954Per misurare quanto spesso la skill si attiva su prompt realistici anziché controllare uno alla volta, scrivi un caso eval con un [grader `tool_used: Skill`](/docs/it/plugin-evals#create-your-first-eval-suite) ed eseguilo con `claude plugin eval` dopo ogni modifica della descrizione.

922 955 

923<h3 id="is-not-a-plugin-or-skill-folder">956<h3 id="is-not-a-plugin-or-skill-folder">

924 `<directory> is not a plugin or skill folder` from `claude plugin eval init`957 `<directory> is not a plugin or skill folder` da `claude plugin eval init`

925</h3>958</h3>

926 959 

927È stato eseguito `claude plugin eval init` da una directory che non è la radice di un plugin, come la directory home o la radice di un repository che mantiene il plugin in una sottodirectory. `init` scrive la suite sotto la directory di lavoro, quindi si ferma invece di creare una directory `evals/` che il plugin non vedrebbe mai.960Hai eseguito `claude plugin eval init` da una directory che non è la radice di un plugin, come la tua home directory o la radice di un repository che mantiene il plugin in una sottodirectory. `init` scrive la suite nella directory di lavoro, quindi si ferma invece di creare una directory `evals/` che il plugin non vedrebbe mai.

928 961 

929Cambiare alla radice del plugin, la directory che contiene `.claude-plugin/plugin.json` o il `SKILL.md` della skill ed eseguire di nuovo il comando. Per impalcare la suite da qualche parte d'altro di proposito, passare `--eval-dir`. Vedere [Test plugins with evals](/docs/it/plugin-evals).962Cambia alla radice del plugin, la directory che contiene `.claude-plugin/plugin.json` o il `SKILL.md` della skill, ed esegui di nuovo il comando. Per impalcare la suite da qualche altra parte di proposito, passa `--eval-dir`. Vedi [Test plugins with evals](/docs/it/plugin-evals).

930 963 

931<h3 id="the-userconfig-dialog-never-appears">964<h3 id="the-userconfig-dialog-never-appears">

932 The `userConfig` dialog never appears965 La finestra di dialogo `userConfig` non appare mai

933</h3>966</h3>

934 967 

935Il plugin dichiara opzioni `userConfig` ma nessuna finestra di dialogo di configurazione appare quando lo si installa.968Il tuo plugin dichiara opzioni `userConfig`, ma nessuna finestra di dialogo di configurazione appare quando lo installi.

936 969 

937L'installazione interattiva mostra la finestra di dialogo e il comando della shell prende i valori come flag al suo posto:970Se l'installazione chiede i valori dipende da dove lo esegui:

938 971 

939* **`/plugin install` in una sessione, o la scheda Discover in `/plugin`**: la finestra di dialogo fa parte di questa installazione interattiva972* **`/plugin install` in una sessione, o la scheda Discover in `/plugin`**: la finestra di dialogo fa parte di questa installazione interattiva

940* **`claude plugin install` nella shell**: non chiede mai i valori di `userConfig`. Salva tutti i valori `--config KEY=VALUE` che si passano e quando le opzioni rimangono non impostate stampa `N userConfig options not yet set — run /plugin configure <plugin>@<marketplace> in Claude Code, or pass --config KEY=VALUE.` Quando una qualsiasi delle opzioni non impostate è obbligatoria, `(M required)` segue `not yet set`.973* **La finestra di dialogo Manage plugins dell'estensione VS Code**: chiede le opzioni non impostate come un modulo dopo l'installazione. Prima della v2.1.285, l'installazione lì non mostrava alcun modulo di opzioni, quindi imposta i valori da una sessione di terminale con `/plugin configure <plugin>@<marketplace>`

974* **`claude plugin install` nella tua shell**: non chiede mai i valori `userConfig`. Salva tutti i valori `--config KEY=VALUE` che passi e quando le opzioni rimangono non impostate stampa `N userConfig options not yet set — run /plugin configure <plugin>@<marketplace> in Claude Code, or pass --config KEY=VALUE.` Quando una qualsiasi delle opzioni non impostate è obbligatoria, `(M required)` segue `not yet set`.

941 975 

942Se è stato installato dalla shell, passare i valori con `--config`, un flag per opzione:976Se hai installato dalla shell, passa i valori con `--config`, un flag per opzione:

943 977 

944```shell theme={null}978```shell theme={null}

945claude plugin install my-plugin@my-marketplace --config api_url=https://example.com979claude plugin install my-plugin@my-marketplace --config api_url=https://example.com

946```980```

947 981 

948Quando ogni opzione è impostata, l'output di installazione non porta alcuna riga `not yet set`. Per aprire la finestra di dialogo in seguito al suo posto, eseguire `/plugin configure my-plugin@my-marketplace` in una sessione.982Quando ogni opzione è impostata, l'output dell'installazione non contiene alcuna riga `not yet set`.

983 

984Per aprire la finestra di dialogo successivamente, esegui `/plugin configure my-plugin@my-marketplace` in una sessione. Dalla shell, [`claude plugin configure`](/docs/it/plugins/cli-reference#plugin-configure) mostra quali opzioni sono ancora non impostate e salva i valori inviati su stdin. Richiede Claude Code v2.1.285 o successivo.

985 

986Se passi una chiave `--config` che il manifest non dichiara, il plugin si installa comunque e il comando stampa `⚠ Installed, but --config not applied: --config key "<key>" isn't declared in this plugin's userConfig.` seguito dalle chiavi che il plugin dichiara.

949 987 

950Se si passa una chiave `--config` che il manifest non dichiara, il plugin si installa comunque e il comando stampa `⚠ Installed, but --config not applied: --config key "<key>" isn't declared in this plugin's userConfig.` seguito dalle chiavi che il plugin dichiara.988Per un plugin che spedisce un [file bundle MCPB](/docs/it/plugins/components#include-a-packaged-mcpb-server) che dichiara il suo `user_config`, il messaggio legge `isn't declared in this plugin's userConfig or by its bundled MCP servers.` invece, e le chiavi note includono le chiavi di quel server, scritte `<server>.<key>`. Un bundle che il manifest riferisce tramite URL non viene letto al momento dell'installazione, quindi le sue chiavi non sono elencate e il messaggio dice di configurarlo in `/plugin`. L'impostazione delle chiavi `<server>.<key>` richiede Claude Code v2.1.285 o successivo.

951 989 

952<h3 id="claude-plugin-validate-reports-errors">990<h3 id="claude-plugin-validate-reports-errors">

953 `claude plugin validate` reports errors991 `claude plugin validate` segnala errori

954</h3>992</h3>

955 993 

956È stato eseguito `claude plugin validate <path>` o `/plugin validate <path>` in una sessione e ha stampato `Found N errors` e `Validation failed`, quindi è uscito con codice 1.994Hai eseguito `claude plugin validate <path>`, o `/plugin validate <path>` in una sessione, e ha stampato `Found N errors` e `Validation failed`, quindi è uscito con codice 1.

957 995 

958Il validatore legge il manifest nel percorso che si fornisce: `.claude-plugin/plugin.json` per una directory di plugin o `.claude-plugin/marketplace.json` per una directory di marketplace. Per un marketplace, prefissa i problemi nel manifest della voce stessa con l'indice della voce, come `plugins[1] plugin.json → json: ...`.996Il validatore legge il manifest nel percorso che fornisci: `.claude-plugin/plugin.json` per una directory di plugin, o `.claude-plugin/marketplace.json` per una directory di marketplace. Per un marketplace, antepone i problemi nel manifest proprio di una voce con l'indice della voce, come `plugins[1] plugin.json → json: ...`.

959 997 

960La tabella copre i messaggi che fermano la convalida e due avvisi, `No frontmatter block found` e `Unknown field '<key>'`, che la fermano solo quando si passa `--strict`. Altri avvisi, come una descrizione mancante, non sono elencati.998La tabella copre i messaggi che fermano la convalida e due avvisi, `No frontmatter block found` e `Unknown field '<key>'`, che la fermano solo quando passi `--strict`. Altri avvisi, come una descrizione mancante, non sono elencati.

961 999 

962| Message | Cause | Fix |1000| Messaggio | Causa | Correzione |

963| :- | :- | :- |1001| :- | :- | :- |

964| `File not found: <path>` | Il percorso non ha un manifest o non esiste. | Eseguire il comando rispetto alla radice del plugin o del marketplace, la directory che contiene `.claude-plugin/`. |1002| `File not found: <path>` | Il percorso non ha manifest o non esiste. | Esegui il comando rispetto alla radice del plugin o del marketplace, la directory che contiene `.claude-plugin/`. |

965| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | La directory non ha alcun manifest `.claude-plugin/`. | Creare il manifest o puntare alla directory giusta. |1003| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | La directory non ha manifest `.claude-plugin/`. | Crea il manifest o punta alla directory giusta. |

966| `Invalid JSON syntax: <parse error>` | Il manifest o `hooks/hooks.json` non è JSON valido. | Correggere il JSON. Fino a quando non si corregge `hooks/hooks.json`, una sessione carica il plugin senza gli hook in quel file. |1004| `Invalid JSON syntax: <parse error>` | Il manifest o `hooks/hooks.json` non è JSON valido. | Correggi il JSON. Finché non correggi `hooks/hooks.json`, una sessione carica il plugin senza gli hook in quel file. |

967| `Path not found: <path>. The runtime loader will report this as a load failure.` | Un percorso di componente nel manifest non esiste. | Correggere il percorso o creare la directory. |1005| `Path not found: <path>. The runtime loader will report this as a load failure.` | Un percorso di componente nel manifest non esiste. | Correggi il percorso o crea la directory. |

968| `Path contains ".." which could be a path traversal attempt: <path>` | Un percorso di componente esce dalla directory del plugin. | Utilizzare percorsi all'interno della radice del plugin. |1006| `Path contains ".." which could be a path traversal attempt: <path>` | Un percorso di componente esce dalla directory del plugin. | Usa percorsi all'interno della radice del plugin. |

969| `Path is a file; skills entries must be directories containing SKILL.md` | Una voce `skills` punta a `SKILL.md` invece che alla sua directory. | Puntare alla directory padre o `.` per un `SKILL.md` a livello di radice. |1007| `Path is a file; skills entries must be directories containing SKILL.md` | Una voce `skills` punta a `SKILL.md` anziché alla sua directory. | Punta alla directory padre, o `.` per un `SKILL.md` a livello di radice. |

970| `No frontmatter block found` o `YAML frontmatter failed to parse: <error>` | Un file di skill, agent o comando ha frontmatter YAML mancante o non valido. | Aggiungere o correggere il frontmatter tra i delimitatori `---`. Segnalato durante la convalida di una directory di plugin. |1008| `No frontmatter block found` o `YAML frontmatter failed to parse: <error>` | Un file skill, agent o command ha frontmatter YAML mancante o non valido. | Aggiungi o correggi il frontmatter tra i delimitatori `---`. Segnalato durante la convalida di una directory di plugin. |

971| `Unknown field '<key>'` | Il manifest ha un campo che lo schema non definisce. | Rimuoverlo o utilizzare il nome che il messaggio suggerisce. Claude Code ignora i campi sconosciuti al momento del caricamento. |1009| `Plugin name "<name>" is reserved: it passes as one of Anthropic's own` | Il nome `name` del plugin è uno dei [nomi riservati](/docs/it/plugins/manifest-reference#name). | Rinomina il plugin per quello che fa. |

1010| `Unknown field '<key>'` | Il manifest ha un campo che lo schema non definisce. | Rimuovilo o usa il nome che il messaggio suggerisce. Claude Code ignora i campi sconosciuti al momento del caricamento. |

972 1011 

973Eseguire il comando di nuovo dopo ogni correzione fino a quando non stampa alcun errore.1012Esegui il comando di nuovo dopo ogni correzione finché non stampa errori.

974 1013 

975I campi `plugin.json` sono sul [manifest reference](/docs/it/plugins/manifest-reference) e i messaggi a livello di marketplace sono sotto [Marketplace validation errors](#marketplace-validation-errors).1014I campi `plugin.json` sono nel [manifest reference](/docs/it/plugins/manifest-reference) e i messaggi a livello di marketplace sono sotto [Marketplace validation errors](#marketplace-validation-errors).

976 1015 

977<h3 id="plugin-has-conflicting-manifests">1016<h3 id="plugin-has-conflicting-manifests">

978 `Plugin <name> has conflicting manifests`1017 `Plugin <name> has conflicting manifests`


980 1019 

981Il plugin non si carica con `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components.`1020Il plugin non si carica con `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components.`

982 1021 

983Il plugin ha il suo `plugin.json` e la sua voce del marketplace imposta `strict: false` mentre dichiara anche uno qualsiasi di `commands`, `agents`, `skills`, `hooks`, `outputStyles` o `themes`. Rimuovere quei campi dalla voce o impostare `strict: true` nella voce in modo che Claude Code li aggiunga a `plugin.json`. Vedere [Strict mode](/docs/it/plugins/marketplace-reference#strict-mode).1022Il plugin ha il suo `plugin.json` e la sua voce del marketplace imposta `strict: false` mentre dichiara anche uno qualsiasi di `commands`, `agents`, `skills`, `hooks`, `outputStyles` o `themes`. Rimuovi quei campi dalla voce o imposta `strict: true` nella voce in modo che Claude Code li aggiunga a `plugin.json`. Vedi [Strict mode](/docs/it/plugins/marketplace-reference#strict-mode).

984 1023 

985<h3 id="warning-no-commands-found-in-plugin-custom-directory">1024<h3 id="warning-no-commands-found-in-plugin-custom-directory">

986 `Warning: No commands found in plugin <name> custom directory`1025 `Warning: No commands found in plugin <name> custom directory`

987</h3>1026</h3>

988 1027 

989Quando il plugin si carica, il log `claude --debug` su `~/.claude/debug/<session-id>.txt` registra `Warning: No commands found in plugin <name> custom directory: <path>. Expected .md files or SKILL.md in subdirectories.` Nulla appare nella sessione o nella scheda **Errors**.1028Quando il plugin si carica, il log `claude --debug` in `~/.claude/debug/<session-id>.txt` registra `Warning: No commands found in plugin <name> custom directory: <path>. Expected .md files or SKILL.md in subdirectories.` Nulla appare nella sessione o nella scheda **Errors**.

990 1029 

991Il percorso `commands` nel manifest esiste ma non contiene file `.md` e nessun `SKILL.md` in una sottodirectory. Aggiungere i file di comando o rimuovere il percorso dal manifest.1030Il percorso `commands` nel manifest esiste ma non contiene file `.md` e nessun `SKILL.md` in una sottodirectory. Aggiungi i file di comando o rimuovi il percorso dal manifest.

992 1031 

993<h2 id="host-a-marketplace">1032<h2 id="host-a-marketplace">

994 Host a marketplace1033 Host a marketplace

Details

84<span id="loop-provider-differences" />84<span id="loop-provider-differences" />

85 85 

86<Note>86<Note>

87 Gli intervalli scelti dinamicamente e il [prompt di manutenzione integrato](#run-the-built-in-maintenance-prompt) funzionano su ogni provider, e con il [fetching dei feature flag](/docs/it/env-vars#features-that-need-feature-flag-fetching) disattivato. Su Amazon Bedrock, Claude Platform su AWS, Google Cloud's Agent Platform e Microsoft Foundry, o con il fetching disattivato, entrambi richiedono Claude Code v2.1.248 o successivo. In questi casi, su versioni precedenti, un prompt senza intervallo viene eseguito su un programma fisso di 10 minuti, e un `/loop` senza prompt stampa il messaggio di utilizzo.87 Gli intervalli scelti dinamicamente e il [prompt di manutenzione integrato](#run-the-built-in-maintenance-prompt) funzionano su ogni provider, e con il [fetching dei feature flag](/docs/it/env-vars#features-that-need-feature-flag-fetching) disattivato. Su Amazon Bedrock, Claude Platform su AWS, Google Cloud's Agent Platform e Microsoft Foundry, o con il fetching disattivato, entrambi richiedono Claude Code v2.1.248 o successivo.

88</Note>88</Note>

89 89 

90<h3 id="run-the-built-in-maintenance-prompt">90<h3 id="run-the-built-in-maintenance-prompt">

Details

87Un runner serve un proprietario alla volta. La prima sessione che un runner raccoglie blocca il runner a quel proprietario della sessione, e il runner quindi esegue sessioni solo per quel proprietario, fino a una capacità configurata. Chi è il proprietario dipende da come è stata avviata la sessione:87Un runner serve un proprietario alla volta. La prima sessione che un runner raccoglie blocca il runner a quel proprietario della sessione, e il runner quindi esegue sessioni solo per quel proprietario, fino a una capacità configurata. Chi è il proprietario dipende da come è stata avviata la sessione:

88 88 

89* **Sessioni avviate da un utente**: il proprietario è l'account di quell'utente.89* **Sessioni avviate da un utente**: il proprietario è l'account di quell'utente.

90* **Sessioni del canale Claude Tag**: Claude le esegue senza alcun account utente allegato, quindi il proprietario è l'[agente Claude Tag](https://claude.com/docs/claude-tag/concepts/glossary#agent-identity) che ha avviato la sessione. Ogni sessione di canale che quell'agente avvia ha lo stesso proprietario, chiunque abbia inviato il messaggio Slack, quindi un runner bloccato ad esso serve sessioni che persone diverse hanno avviato quando lo esegui a una `--capacity` superiore a uno o con un `--drain-grace-sec` positivo. Un runner bloccato a un utente non raccoglie mai questi, e un runner bloccato a un agente Claude Tag non raccoglie mai le sessioni di un utente.90* **Sessioni del canale Claude Tag**: Claude le esegue senza alcun account utente allegato, quindi il proprietario è l'[agente Claude Tag](https://claude.com/docs/claude-tag/concepts/glossary#agent-identity) che ha avviato la sessione. Ogni sessione di canale che quell'agente avvia ha lo stesso proprietario, chiunque abbia inviato il messaggio Slack, quindi un runner bloccato ad esso serve sessioni che persone diverse hanno avviato quando lo esegui a una `--capacity` superiore a uno o con un `--drain-grace-sec` positivo.

91 91 

92La dimensione minima della flotta è quindi il numero di proprietari che ti aspetti siano attivi contemporaneamente, contando utenti e agenti Claude Tag.92La dimensione minima della flotta è quindi il numero di proprietari che ti aspetti siano attivi contemporaneamente, contando utenti e agenti Claude Tag.

93 93 

Details

163 Eccezioni per chiave tra fonti gestite163 Eccezioni per chiave tra fonti gestite

164</h3>164</h3>

165 165 

166Tre tipi di chiavi sono eccezioni alla regola di non-unione:166Queste chiavi sono eccezioni alla regola di non-unione:

167 167 

168* **Chiavi di blocco tra fonti**: un piccolo insieme di chiavi, come i blocchi della lista di autorizzazione della sandbox, [elencate nella pagina delle impostazioni gestite](/docs/it/managed-settings#precedence-within-the-managed-tier). Claude Code le rispetta quando qualsiasi fonte gestita controllata dall'amministratore le imposta; il livello del registro HKCU scrivibile dall'utente è escluso.168* **Chiavi di blocco tra fonti**: un piccolo insieme di chiavi, come i blocchi della lista di autorizzazione della sandbox, [elencate nella pagina delle impostazioni gestite](/docs/it/managed-settings#precedence-within-the-managed-tier). Claude Code le rispetta quando qualsiasi fonte gestita controllata dall'amministratore le imposta; il livello del registro HKCU scrivibile dall'utente è escluso.

169 169 


171* **Il blocco `env`**: a parte l'unità di telemetria e le variabili di routing associate a una chiave di credenziale, entrambe coperte di seguito, si unisce per chiave tra le fonti controllate dall'amministratore. Per ogni variabile di ambiente, la fonte con la priorità più alta che la definisce vince, e le fonti amministrative inferiori riempiono le variabili che le fonti superiori lasciano non impostate. Una voce `env` gestita dall'endpoint si applica quindi ogni volta che la configurazione gestita dal server lascia quella variabile non impostata, o mentre un valore server memorizzato nella cache per essa è [trattenuto in sospeso della conferma del server](#fetch-and-caching-behavior). Richiede Claude Code v2.1.223 o successivo. Prima della v2.1.223, Claude Code applica solo il blocco `env` della fonte selezionata.171* **Il blocco `env`**: a parte l'unità di telemetria e le variabili di routing associate a una chiave di credenziale, entrambe coperte di seguito, si unisce per chiave tra le fonti controllate dall'amministratore. Per ogni variabile di ambiente, la fonte con la priorità più alta che la definisce vince, e le fonti amministrative inferiori riempiono le variabili che le fonti superiori lasciano non impostate. Una voce `env` gestita dall'endpoint si applica quindi ogni volta che la configurazione gestita dal server lascia quella variabile non impostata, o mentre un valore server memorizzato nella cache per essa è [trattenuto in sospeso della conferma del server](#fetch-and-caching-behavior). Richiede Claude Code v2.1.223 o successivo. Prima della v2.1.223, Claude Code applica solo il blocco `env` della fonte selezionata.

172 * **Unità di telemetria**: le chiavi dell'esportatore `OTEL_EXPORTER_OTLP_*`, gli interruttori di acquisizione del contenuto `OTEL_LOG_*`, `OTEL_LOGS_EXPORTER` e le variabili di tracciamento beta `ENABLE_BETA_TRACING_DETAILED` e `BETA_TRACING_ENDPOINT` seguono la fonte più alta che imposta una qualsiasi di esse come unità. Una fonte che fornisce la chiave di credenziale `otelHeadersHelper` rivendica l'unità anche, ma fornisce queste variabili solo quando è la fonte selezionata: una fonte che non è selezionata ma fornisce la chiave non contribuisce a nessuna di esse e blocca comunque le fonti inferiori dal riempirle. In ogni caso, un endpoint dell'esportatore da una fonte non può mai essere associato a credenziali da un'altra.172 * **Unità di telemetria**: le chiavi dell'esportatore `OTEL_EXPORTER_OTLP_*`, gli interruttori di acquisizione del contenuto `OTEL_LOG_*`, `OTEL_LOGS_EXPORTER` e le variabili di tracciamento beta `ENABLE_BETA_TRACING_DETAILED` e `BETA_TRACING_ENDPOINT` seguono la fonte più alta che imposta una qualsiasi di esse come unità. Una fonte che fornisce la chiave di credenziale `otelHeadersHelper` rivendica l'unità anche, ma fornisce queste variabili solo quando è la fonte selezionata: una fonte che non è selezionata ma fornisce la chiave non contribuisce a nessuna di esse e blocca comunque le fonti inferiori dal riempirle. In ogni caso, un endpoint dell'esportatore da una fonte non può mai essere associato a credenziali da un'altra.

173 * **Routing associato a credenziale**: una fonte che associa variabili di routing a una chiave di credenziale solo per la fonte selezionata, come `apiKeyHelper` o `otelHeadersHelper`, contribuisce a quelle variabili di routing solo quando vince lo slot.173 * **Routing associato a credenziale**: una fonte che associa variabili di routing a una chiave di credenziale solo per la fonte selezionata, come `apiKeyHelper` o `otelHeadersHelper`, contribuisce a quelle variabili di routing solo quando vince lo slot.

174* **`allowedProviders`**: un elenco impostato sulla macchina e un elenco gestito dal server si combinano come [la nota Scope della sua voce](/docs/it/settings-reference#allowedproviders) afferma. Richiede Claude Code v2.1.285 o successivo

174* **Chiavi di accesso al gateway**: Claude Code non legge mai [`forceLoginGatewayUrl`](/docs/it/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/it/settings-reference#gatewayinternalnetworks), o il valore `"gateway"` di [`forceLoginMethod`](/docs/it/settings-reference#forceloginmethod) dalle impostazioni gestite dal server, quindi un valore lì non si applica né nasconde uno impostato in una politica MDM o file di impostazioni gestite. La voce [`managedSourcesBehavior`](/docs/it/settings-reference#managedsourcesbehavior) dice quale fonte amministrativa sulla macchina le fornisce.175* **Chiavi di accesso al gateway**: Claude Code non legge mai [`forceLoginGatewayUrl`](/docs/it/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/it/settings-reference#gatewayinternalnetworks), o il valore `"gateway"` di [`forceLoginMethod`](/docs/it/settings-reference#forceloginmethod) dalle impostazioni gestite dal server, quindi un valore lì non si applica né nasconde uno impostato in una politica MDM o file di impostazioni gestite. La voce [`managedSourcesBehavior`](/docs/it/settings-reference#managedsourcesbehavior) dice quale fonte amministrativa sulla macchina le fornisce.

175 176 

176<h3 id="fetch-and-caching-behavior">177<h3 id="fetch-and-caching-behavior">


310* **Una sessione interattiva che non può mostrare la finestra di dialogo**: Claude Code non applica le impostazioni consegnate e mantiene le ultime impostazioni approvate. La finestra di dialogo appare nella prossima sessione che può mostrarla. Richiede Claude Code v2.1.211 o successivo.311* **Una sessione interattiva che non può mostrare la finestra di dialogo**: Claude Code non applica le impostazioni consegnate e mantiene le ultime impostazioni approvate. La finestra di dialogo appare nella prossima sessione che può mostrarla. Richiede Claude Code v2.1.211 o successivo.

311* **`claude install` o `claude update`**: Claude Code non mostra la finestra di dialogo durante nessuno dei due comandi. Il comando viene eseguito con le ultime impostazioni approvate e la finestra di dialogo appare nella vostra prossima sessione interattiva. Se Claude Code attende il recupero delle impostazioni all'avvio, come con [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup) impostato o su una distribuzione [gateway di app Claude](/docs/it/claude-apps-gateway), mostra la finestra di dialogo durante il comando invece, e un'esecuzione di installazione da una pipe non riesce; vedere [`Raw mode is not supported` durante l'installazione](/docs/it/troubleshoot-install#raw-mode-is-not-supported-during-install). Prima della v2.1.246, Claude Code cercava di mostrare la finestra di dialogo durante questi comandi anche.312* **`claude install` o `claude update`**: Claude Code non mostra la finestra di dialogo durante nessuno dei due comandi. Il comando viene eseguito con le ultime impostazioni approvate e la finestra di dialogo appare nella vostra prossima sessione interattiva. Se Claude Code attende il recupero delle impostazioni all'avvio, come con [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup) impostato o su una distribuzione [gateway di app Claude](/docs/it/claude-apps-gateway), mostra la finestra di dialogo durante il comando invece, e un'esecuzione di installazione da una pipe non riesce; vedere [`Raw mode is not supported` durante l'installazione](/docs/it/troubleshoot-install#raw-mode-is-not-supported-during-install). Prima della v2.1.246, Claude Code cercava di mostrare la finestra di dialogo durante questi comandi anche.

312* **Un errore chiude la finestra di dialogo prima che rispondiate**: Claude Code non applica le impostazioni consegnate e mantiene le ultime impostazioni approvate. La mostra di nuovo nella prossima sessione che può mostrarla.313* **Un errore chiude la finestra di dialogo prima che rispondiate**: Claude Code non applica le impostazioni consegnate e mantiene le ultime impostazioni approvate. La mostra di nuovo nella prossima sessione che può mostrarla.

313* **Un'esecuzione non interattiva**, come `claude -p` o una sessione Agent SDK: Claude Code non può mostrare la finestra di dialogo, quindi quando le impostazioni consegnate richiederebbero approvazione, le applica solo per quella esecuzione. Non le registra come approvate o le scrive nella [cache locale](#fetch-and-caching-behavior), e la prossima sessione interattiva mostra la finestra di dialogo. Fino a quando un utente non approva in una sessione interattiva, ogni esecuzione non interattiva recupera le impostazioni di nuovo all'avvio. Prima della v2.1.207, un'esecuzione non interattiva salvava le impostazioni come approvate, quindi le sessioni interattive successive non mostravano mai la finestra di dialogo per esse.314* **Un'esecuzione non interattiva**, come `claude -p`, una sessione Agent SDK, o una sessione nel pannello di chat dell'estensione VS Code o nella scheda Code dell'app desktop: Claude Code non può mostrare la finestra di dialogo, quindi quando le impostazioni consegnate richiederebbero approvazione, le applica solo per quella esecuzione. Non le registra come approvate o le scrive nella [cache locale](#fetch-and-caching-behavior), e la prossima sessione interattiva mostra la finestra di dialogo. Fino a quando un utente non approva in una sessione interattiva, ogni esecuzione non interattiva recupera le impostazioni di nuovo all'avvio. Prima della v2.1.207, un'esecuzione non interattiva salvava le impostazioni come approvate, quindi le sessioni interattive successive non mostravano mai la finestra di dialogo per esse.

314 315 

315<h4 id="environment-variables-and-the-approval-dialog">316<h4 id="environment-variables-and-the-approval-dialog">

316 Variabili di ambiente e la finestra di dialogo di approvazione317 Variabili di ambiente e la finestra di dialogo di approvazione

sessions.md +20 −2

Details

29 29 

30`claude --continue` apre una [sessione in background](/docs/it/agent-view) che è terminata, ma non una ancora in esecuzione; l'apertura di sessioni in background terminate richiede Claude Code v2.1.257 o successiva. Se la tua conversazione più recente è una che hai [spostato in background](/docs/it/agent-view#send-the-session-to-the-background) ed è ancora in esecuzione lì, Claude Code esce con `Your most recent conversation is running in the background` e l'ID di quella sessione. Collegati alla sessione da [`claude agents`](/docs/it/agent-view#attach-to-a-session), oppure esegui `claude --resume` per sceglierne un'altra.30`claude --continue` apre una [sessione in background](/docs/it/agent-view) che è terminata, ma non una ancora in esecuzione; l'apertura di sessioni in background terminate richiede Claude Code v2.1.257 o successiva. Se la tua conversazione più recente è una che hai [spostato in background](/docs/it/agent-view#send-the-session-to-the-background) ed è ancora in esecuzione lì, Claude Code esce con `Your most recent conversation is running in the background` e l'ID di quella sessione. Collegati alla sessione da [`claude agents`](/docs/it/agent-view#attach-to-a-session), oppure esegui `claude --resume` per sceglierne un'altra.

31 31 

32<span id="resume-a-running-background-session" />

33 

34Quando la conversazione che riprendi con `claude --resume` o `/resume` appartiene a una [sessione in background](/docs/it/agent-view) ancora in esecuzione, Claude Code apre la sessione in esecuzione stessa. Con `--bg` sulla riga di comando, la ripresa è invece un [dispatch in background](/docs/it/agent-view#from-your-shell). Prima della v2.1.285, Claude Code rifiutava e ti diceva di aprire la sessione con `claude attach <id>`, oppure di fermarla prima con `claude stop <id>`.

35 

36* **Dal tuo shell**: `claude --resume <session>` esegue [`claude attach`](/docs/it/agent-view#attach-to-a-session) su quella sessione nello stesso terminale invece di caricare il trascritto stesso. Un prompt che passi sulla riga di comando, come in `claude --resume <session> "check the tests too"`, va alla sessione come suo prossimo turno per primo, e Claude Code stampa `Sent your prompt to the background session (<id>); opening it…` prima di collegarsi. `claude -p --resume <session> "prompt"` digitato in un terminale fa lo stesso, quindi `-p` non mantiene quella esecuzione non interattiva.

37 

38 Claude Code non apre la sessione quando la riga di comando ha uno di questi:

39 

40 * Input o output piped o reindirizzato

41 * Flag che configurano la sessione, come `--permission-mode`, `--model` o `--settings`

42 * Flag che leggono l'output, come `--output-format json` o `--json-schema`

43 * Flag che limitano o riavvolgono l'esecuzione, come `--max-turns` o `--max-budget-usd`

44 

45 Con uno di questi, o quando la [visualizzazione agent è disattivata](/docs/it/agent-view#turn-off-agent-view), Claude Code non invia nulla ed esce con stato 1, stampando che la sessione è in esecuzione in background insieme al comando `claude attach <id>` che l'apre, oppure dicendoti di trovarla in `claude agents` quando non riesce a determinare l'ID. Aggiungi `--fork-session` per riprendere una copia della conversazione. Per continuare la conversazione stessa in una sessione tua, con i tuoi flag applicati, esegui `claude stop <id>` e poi ripeti il comando.

46 

47 Un prompt che inizia con `/` o `!` non viene inviato, e neanche alcun prompt mentre la sessione attende la tua risposta a una domanda. In entrambi i casi Claude Code non apre la sessione, e il messaggio include `Your prompt was not sent to it` con il motivo.

48* **Da dentro una sessione**: `/resume` sposta la tua conversazione corrente in background e collega questo terminale alla sessione in esecuzione, stampando `Opening "<title>", running in the background (<id>)`. Premi `←` su un prompt vuoto per tornare alla visualizzazione agent, che elenca anche la conversazione che hai lasciato. Quando la conversazione corrente non può spostarsi in background, ad esempio perché sei già collegato a una sessione in background o la persistenza della sessione è disattivata, `/resume` stampa il comando `claude attach` da eseguire.

49 

32Puoi eseguire `claude --resume <session-id>` da qualsiasi directory: Claude Code cerca l'ID nella directory del progetto corrente e nei suoi git worktrees per primo, poi in ogni altro progetto su questa macchina, quindi trova una sessione che è stata avviata altrove o spostata con [`/cd`](/docs/it/commands). La ricerca tra progetti risolve l'ID solo quando esattamente un altro progetto contiene un trascritto con messaggi per esso, quindi un duplicato copiato manualmente fa sì che Claude Code segnali non trovato piuttosto che riprendere una copia arbitraria. Se nessuna sessione archiviata corrisponde all'ID, Claude Code segnala `No conversation found with session ID: <session-id>`. Prima della v2.1.223, la ricerca si fermava alla directory del progetto corrente e ai suoi git worktrees, quindi dovevi riprendere dalla directory in cui la sessione aveva lavorato per ultimo.50Puoi eseguire `claude --resume <session-id>` da qualsiasi directory: Claude Code cerca l'ID nella directory del progetto corrente e nei suoi git worktrees per primo, poi in ogni altro progetto su questa macchina, quindi trova una sessione che è stata avviata altrove o spostata con [`/cd`](/docs/it/commands). La ricerca tra progetti risolve l'ID solo quando esattamente un altro progetto contiene un trascritto con messaggi per esso, quindi un duplicato copiato manualmente fa sì che Claude Code segnali non trovato piuttosto che riprendere una copia arbitraria. Se nessuna sessione archiviata corrisponde all'ID, Claude Code segnala `No conversation found with session ID: <session-id>`. Prima della v2.1.223, la ricerca si fermava alla directory del progetto corrente e ai suoi git worktrees, quindi dovevi riprendere dalla directory in cui la sessione aveva lavorato per ultimo.

33 51 

34<h3 id="what-a-resumed-session-restores">52<h3 id="what-a-resumed-session-restores">

35 Cosa ripristina una sessione ripresa53 Cosa ripristina una sessione ripresa

36</h3>54</h3>

37 55 

38Una sessione ripresa ripristina la conversazione insieme allo stato salvato in essa:56Quando Claude Code carica una conversazione dal suo trascritto, la sessione ripresa ripristina la conversazione insieme allo stato salvato in essa:

39 57 

40* Cronologia della conversazione: la cronologia completa, incluse le chiamate agli strumenti e i risultati. Uno strumento che era ancora in esecuzione quando il processo precedente è terminato, ad esempio in un arresto anomalo, non finisce o non viene eseguito di nuovo quando riprendi. Claude vede la chiamata contrassegnata come interrotta prima che il suo risultato fosse registrato e gli viene detto di verificare se ha avuto effetto prima di eseguirla di nuovo, a meno che [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/it/env-vars#variables) non sia impostato. Prima della v2.1.281, Claude Code eliminava la chiamata interrotta dalla conversazione o la mostrava a Claude come una che hai interrotto.58* Cronologia della conversazione: la cronologia completa, incluse le chiamate agli strumenti e i risultati. Uno strumento che era ancora in esecuzione quando il processo precedente è terminato, ad esempio in un arresto anomalo, non finisce o non viene eseguito di nuovo quando riprendi. Claude vede la chiamata contrassegnata come interrotta prima che il suo risultato fosse registrato e gli viene detto di verificare se ha avuto effetto prima di eseguirla di nuovo, a meno che [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/it/env-vars#variables) non sia impostato. Prima della v2.1.281, Claude Code eliminava la chiamata interrotta dalla conversazione o la mostrava a Claude come una che hai interrotto.

41* Modello: la sessione continua sul modello che stava utilizzando. Il modello non viene ripristinato quando è stato ritirato o non è consentito da `availableModels`, quando un flag `--model` o una variabile di ambiente della famiglia `ANTHROPIC_MODEL` ne seleziona uno al lancio, o su provider che utilizzano ID di distribuzione specifici del provider, come [Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry](/docs/it/third-party-integrations); vedi [configurazione del modello](/docs/it/model-config#setting-your-model) per l'ordine di risoluzione.59* Modello: la sessione continua sul modello che stava utilizzando. Il modello non viene ripristinato quando è stato ritirato o non è consentito da `availableModels`, quando un flag `--model` o una variabile di ambiente della famiglia `ANTHROPIC_MODEL` ne seleziona uno al lancio, o su provider che utilizzano ID di distribuzione specifici del provider, come [Amazon Bedrock, Google Cloud's Agent Platform e Microsoft Foundry](/docs/it/third-party-integrations); vedi [configurazione del modello](/docs/it/model-config#setting-your-model) per l'ordine di risoluzione.


51 Modalità di autorizzazione al ripristino69 Modalità di autorizzazione al ripristino

52</h4>70</h4>

53 71 

54La modalità di autorizzazione in cui Claude Code avvia una sessione ripresa dipende da come la riprendi:72La modalità di autorizzazione in cui Claude Code avvia una sessione ripresa dipende da come la riprendi. I casi di seguito si applicano quando Claude Code carica la conversazione dal suo trascritto; quando invece [apri una sessione in background ancora in esecuzione](#resume-a-running-background-session), quella sessione mantiene la modalità di autorizzazione in cui si trova.

55 73 

56* Terminale: `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` quando il nome corrisponde a una sessione, senza `-p`. Claude Code ripristina la modalità di autorizzazione in cui era la sessione, tranne nei casi nella tabella. Passa `--permission-mode` o `--dangerously-skip-permissions` per ignorare la modalità ripristinata.74* Terminale: `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` quando il nome corrisponde a una sessione, senza `-p`. Claude Code ripristina la modalità di autorizzazione in cui era la sessione, tranne nei casi nella tabella. Passa `--permission-mode` o `--dangerously-skip-permissions` per ignorare la modalità ripristinata.

57* Non interattivo: `claude -p --resume` o `claude -p --continue`. Claude Code avvia l'esecuzione nella modalità di autorizzazione in cui una nuova esecuzione `claude -p` si avvierebbe, tranne che una sessione che è terminata in modalità piano riprende in modalità piano secondo le [condizioni di seguito](#resume-in-plan-mode-with-p).75* Non interattivo: `claude -p --resume` o `claude -p --continue`. Claude Code avvia l'esecuzione nella modalità di autorizzazione in cui una nuova esecuzione `claude -p` si avvierebbe, tranne che una sessione che è terminata in modalità piano riprende in modalità piano secondo le [condizioni di seguito](#resume-in-plan-mode-with-p).

settings-reference.md +335 −242

Details

589}}589}}

590/>590/>

591 591 

592| Key | Description | Topic | Scope |592| Chiave | Descrizione | Argomento | Ambito |

593| :- | :- | :- | :- |593| :- | :- | :- | :- |

594| [`advisorModel`](#advisormodel) | Scegliete quale modello risponde quando Claude chiede lo [strumento advisor](/docs/it/advisor) | Model and responses | Any file |594| [`advisorModel`](#advisormodel) | Scegliete quale modello risponde quando Claude chiede lo [strumento advisor](/docs/it/advisor) | Modello e risposte | Any file |

595| [`agent`](#agent) | Iniziate ogni sessione come un [subagent](/docs/it/sub-agents) denominato con il suo prompt, strumenti e modello | Agents, sessions, and worktrees | Any file |595| [`agent`](#agent) | Iniziate ogni sessione come un [subagent](/docs/it/sub-agents) denominato con il suo prompt, strumenti e modello | Agenti, sessioni e worktrees | Any file |

596| [`agentPushNotifEnabled`](#agentpushnotifenabled) | Lasciate che Claude invii una [notifica push al vostro telefono](/docs/it/remote-control#mobile-push-notifications) quando decide di farlo | Remote, desktop, and notifications | Any file |596| [`agentPushNotifEnabled`](#agentpushnotifenabled) | Lasciate che Claude invii una [notifica push al vostro telefono](/docs/it/remote-control#mobile-push-notifications) quando decide di farlo | Remoto, desktop e notifiche | Any file |

597| [`allowAllClaudeAiMcps`](#allowallclaudeaimcps) | Caricate i [connettori claude.ai](/docs/it/mcp) che Claude Code recupera da solo insieme a un [`managed-mcp.json`](/docs/it/managed-mcp#exclusive-control-with-managed-mcp-json) distribuito | MCP | Managed |597| [`allowAllClaudeAiMcps`](#allowallclaudeaimcps) | Caricate i [connettori claude.ai](/docs/it/mcp) che Claude Code recupera da solo insieme a un [`managed-mcp.json`](/docs/it/managed-mcp#exclusive-control-with-managed-mcp-json) distribuito | MCP | Managed |

598| [`allowClaudeInChromeWithManagedMcp`](#allowclaudeinchromewithmanagedmcp) | Lasciate che il server [Claude in Chrome](/docs/it/chrome) integrato funzioni insieme a un [`managed-mcp.json`](/docs/it/managed-mcp#exclusive-control-with-managed-mcp-json) distribuito | MCP | Managed |598| [`allowClaudeInChromeWithManagedMcp`](#allowclaudeinchromewithmanagedmcp) | Lasciate che il server [Claude in Chrome](/docs/it/chrome) integrato funzioni insieme a un [`managed-mcp.json`](/docs/it/managed-mcp#exclusive-control-with-managed-mcp-json) distribuito | MCP | Managed |

599| [`allowedChannelPlugins`](#allowedchannelplugins) | Sostituite l'elenco di autorizzazione predefinito dei [plugin di canale](/docs/it/channels#restrict-which-channel-plugins-can-run) che possono inviare messaggi | Plugins and skills | Managed |599| [`allowedChannelPlugins`](#allowedchannelplugins) | Sostituite l'elenco di autorizzazione predefinito dei [plugin di canale](/docs/it/channels#restrict-which-channel-plugins-can-run) che possono inviare messaggi | Plugin e skill | Managed |

600| [`allowedHttpHookUrls`](#allowedhttphookurls) | Limitate gli URL che gli [hook HTTP](/docs/it/hooks) possono raggiungere | Hooks and automation | Any file |600| [`allowedHttpHookUrls`](#allowedhttphookurls) | Limitate gli URL che gli [hook HTTP](/docs/it/hooks) possono raggiungere | Hook e automazione | Any file |

601| [`allowedMcpServers`](#allowedmcpservers) | Elenco di autorizzazione per i [server MCP](/docs/it/mcp) che gli utenti possono aggiungere | MCP | Any file |601| [`allowedMcpServers`](#allowedmcpservers) | Elenco di autorizzazione per i [server MCP](/docs/it/mcp) che gli utenti possono aggiungere | MCP | Any file |

602| [`allowManagedHooksOnly`](#allowmanagedhooksonly) | Eseguite solo gli [hook](/docs/it/hooks) che la vostra organizzazione distribuisce | Hooks and automation | Managed |602| [`allowedProviders`](#allowedproviders) | Limitate quali [provider API](/docs/it/third-party-integrations) una macchina può utilizzare | Autenticazione e provider | Managed |

603| [`allowManagedHooksOnly`](#allowmanagedhooksonly) | Eseguite solo gli [hook](/docs/it/hooks) che la vostra organizzazione distribuisce | Hook e automazione | Managed |

603| [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly) | Rendete l'elenco di autorizzazione [MCP](/docs/it/mcp) gestito l'unico che si applica | MCP | Managed |604| [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly) | Rendete l'elenco di autorizzazione [MCP](/docs/it/mcp) gestito l'unico che si applica | MCP | Managed |

604| [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly) | Rendete le [impostazioni gestite](/docs/it/managed-settings) l'unica fonte di impostazioni delle [regole di autorizzazione](/docs/it/permissions#managed-settings) | Permission settings | Managed |605| [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly) | Rendete le [impostazioni gestite](/docs/it/managed-settings) l'unica fonte di impostazioni delle [regole di autorizzazione](/docs/it/permissions#managed-settings) | Impostazioni di autorizzazione | Managed |

605| [`alwaysThinkingEnabled`](#alwaysthinkingenabled) | Disattivate il [pensiero esteso](/docs/it/model-config#extended-thinking) per ogni sessione | Model and responses | Any file |606| [`alwaysThinkingEnabled`](#alwaysthinkingenabled) | Disattivate il [pensiero esteso](/docs/it/model-config#extended-thinking) per ogni sessione | Modello e risposte | Any file |

606| [`apiKeyHelper`](#apikeyhelper) | Generare le [credenziali API](/docs/it/authentication#credential-management) con il vostro comando | Authentication and providers | Any file |607| [`apiKeyHelper`](#apikeyhelper) | Generare le [credenziali API](/docs/it/authentication#credential-management) con il vostro comando | Autenticazione e provider | Any file |

607| [`askUserQuestionTimeout`](#askuserquestiontimeout) | Lasciate che una domanda senza risposta [continui automaticamente](/docs/it/tools-reference#question-auto-continue-timeout) dopo il tempo di inattività | Interface and terminal | User or managed |608| [`askUserQuestionTimeout`](#askuserquestiontimeout) | Lasciate che una domanda senza risposta [continui automaticamente](/docs/it/tools-reference#question-auto-continue-timeout) dopo il tempo di inattività | Interfaccia e terminale | User or managed |

608| [`attribution`](#attribution) | Personalizzate l'attribuzione che Claude Code aggiunge ai commit e alle pull request | Git and attribution | Any file |609| [`appendPlugins`](#appendplugins) | Eseguite i [mod](/docs/it/plugins/mods/admin) della vostra organizzazione dopo ogni mod che un utente installa | Plugin e skill | User or managed |

609| [`attribution.commit`](#attribution-commit) | Cambiate o nascondeteil trailer che Claude Code aggiunge ai commit | Git and attribution | Any file |610| [`attribution`](#attribution) | Personalizzate l'attribuzione che Claude Code aggiunge ai commit e alle pull request | Git e attribuzione | Any file |

610| [`attribution.pr`](#attribution-pr) | Cambiate o nascondetela riga di attribuzione nelle descrizioni delle pull request | Git and attribution | Any file |611| [`attribution.commit`](#attribution-commit) | Cambiate o nascondeteil trailer che Claude Code aggiunge ai commit | Git e attribuzione | Any file |

611| [`attribution.sessionUrl`](#attribution-sessionurl) | Omettete il collegamento della sessione claude.ai dai commit di [cloud](/docs/it/claude-code-on-the-web) e [Remote Control](/docs/it/remote-control) | Git and attribution | Any file |612| [`attribution.pr`](#attribution-pr) | Cambiate o nascondetela riga di attribuzione nelle descrizioni delle pull request | Git e attribuzione | Any file |

612| [`autoCompactEnabled`](#autocompactenabled) | Disattivate o attivate la [compattazione automatica](/docs/it/context-window) | Memory and context | Any file |613| [`attribution.sessionUrl`](#attribution-sessionurl) | Omettete il collegamento della sessione claude.ai dai commit [cloud](/docs/it/claude-code-on-the-web) e [Remote Control](/docs/it/remote-control) | Git e attribuzione | Any file |

613| [`autoCompactWindow`](#autocompactwindow) | Impostate quanto pieno diventa il contesto prima che Claude Code [compatti](/docs/it/context-window) | Memory and context | Any file |614| [`autoCompactEnabled`](#autocompactenabled) | Disattivate o attivate la [compattazione automatica](/docs/it/context-window) | Memoria e contesto | Any file |

614| [`autoConnectIde`](#autoconnectide) | Connettetevi automaticamente a un IDE [VS Code](/docs/it/vs-code) o [JetBrains](/docs/it/jetbrains#from-external-terminals) in esecuzione da un terminale esterno | Global config settings | Global config |615| [`autoCompactWindow`](#autocompactwindow) | Impostate quanto pieno il contesto diventa prima che Claude Code [compatti](/docs/it/context-window) | Memoria e contesto | Any file |

615| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | Aspettate nella sessione aperta e [continuate il compito automaticamente](/docs/it/interactive-mode#wait-for-a-usage-limit-to-reset) dopo il ripristino di un limite di utilizzo di claude.ai | Interface and terminal | User or managed |616| [`autoConnectIde`](#autoconnectide) | Connettetevi automaticamente a un [VS Code](/docs/it/vs-code) o [JetBrains](/docs/it/jetbrains#from-external-terminals) IDE in esecuzione da un terminale esterno | Impostazioni di configurazione globale | Global config |

616| [`autoInstallIdeExtension`](#autoinstallideextension) | Disattivate l'installazione automatica dell'[estensione IDE](/docs/it/vs-code#install-the-extension) da un terminale VS Code | Global config settings | Global config |617| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | Aspettate nella sessione aperta e [continuate l'attività automaticamente](/docs/it/interactive-mode#wait-for-a-usage-limit-to-reset) dopo il ripristino di un limite di utilizzo di claude.ai | Interfaccia e terminale | User or managed |

617| [`autoMemoryDirectory`](#automemorydirectory) | Archiviate la [memoria automatica](/docs/it/memory#auto-memory) in una directory che scegliete | Memory and context | Any file |618| [`autoInstallIdeExtension`](#autoinstallideextension) | Disattivate l'installazione automatica dell'[estensione IDE](/docs/it/vs-code#install-the-extension) da un terminale VS Code | Impostazioni di configurazione globale | Global config |

618| [`autoMemoryEnabled`](#automemoryenabled) | Disattivate o attivate la [memoria automatica](/docs/it/memory#auto-memory) | Memory and context | Any file |619| [`autoMemoryDirectory`](#automemorydirectory) | Archiviate la [memoria automatica](/docs/it/memory#auto-memory) in una directory che scegliete | Memoria e contesto | Any file |

619| [`autoMode`](#automode) | Aggiungete le vostre regole di autorizzazione e negazione al classificatore della [modalità automatica](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) | Permission settings | User or managed |620| [`autoMemoryEnabled`](#automemoryenabled) | Disattivate o attivate la [memoria automatica](/docs/it/memory#auto-memory) | Memoria e contesto | Any file |

620| [`autoMode.classifyAllShell`](#automode-classifyallshell) | Inviate ogni comando shell attraverso il [classificatore della modalità automatica](/docs/it/permission-modes#what-the-classifier-blocks-by-default), anche quelli che corrispondono a una regola di autorizzazione ristretta | Permission settings | User or managed |621| [`autoMode`](#automode) | Aggiungete le vostre regole di autorizzazione e negazione al classificatore della [modalità automatica](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) | Impostazioni di autorizzazione | User or managed |

621| [`autoScrollEnabled`](#autoscrollenabled) | [Seguite il nuovo output](/docs/it/fullscreen#auto-follow) fino in fondo nel rendering a schermo intero | Interface and terminal | Any file |622| [`autoMode.classifyAllShell`](#automode-classifyallshell) | Inviate ogni comando shell attraverso il [classificatore della modalità automatica](/docs/it/permission-modes#what-the-classifier-blocks-by-default), anche quelli che una regola di autorizzazione ristretta corrisponde | Impostazioni di autorizzazione | User or managed |

622| [`autoUpdatesChannel`](#autoupdateschannel) | Seguite il [canale di rilascio](/docs/it/setup#configure-release-channel) stabile invece dell'ultimo | Updates and versioning | Any file |623| [`autoScrollEnabled`](#autoscrollenabled) | [Seguite il nuovo output](/docs/it/fullscreen#auto-follow) fino in fondo nel rendering a schermo intero | Interfaccia e terminale | Any file |

623| [`availableModels`](#availablemodels) | [Limitate quali modelli](/docs/it/model-config#restrict-model-selection) le persone possono scegliere | Model and responses | Any file |624| [`autoUpdatesChannel`](#autoupdateschannel) | Seguite il [canale di rilascio](/docs/it/setup#configure-release-channel) stabile invece dell'ultimo | Aggiornamenti e versioning | Any file |

624| [`availableModelsMatch`](#availablemodelsmatch) | Fate in modo che ogni voce dell'ID modello `availableModels` [consenta solo la versione che nomina](/docs/it/model-config#block-specific-models-or-versions) | Model and responses | Managed |625| [`availableModels`](#availablemodels) | [Limitate quali modelli](/docs/it/model-config#restrict-model-selection) le persone possono scegliere | Modello e risposte | Any file |

625| [`awaySummaryEnabled`](#awaysummaryenabled) | Disattivate il [riepilogo della sessione](/docs/it/interactive-mode#session-recap) mostrato quando tornate al terminale | Remote, desktop, and notifications | Any file |626| [`availableModelsMatch`](#availablemodelsmatch) | Rendete ogni voce dell'ID modello `availableModels` [permetta solo la versione che nomina](/docs/it/model-config#block-specific-models-or-versions) | Modello e risposte | Managed |

626| [`awsAuthRefresh`](#awsauthrefresh) | Aggiornate le [credenziali Bedrock](/docs/it/amazon-bedrock#advanced-credential-configuration) scadute in `.aws` con il vostro comando | Authentication and providers | Any file |627| [`awaySummaryEnabled`](#awaysummaryenabled) | Disattivate il [riepilogo della sessione](/docs/it/interactive-mode#session-recap) mostrato quando tornate al terminale | Remoto, desktop e notifiche | Any file |

627| [`awsCredentialExport`](#awscredentialexport) | Fornite le [credenziali Bedrock](/docs/it/amazon-bedrock#advanced-credential-configuration) come JSON dal vostro comando | Authentication and providers | Any file |628| [`awsAuthRefresh`](#awsauthrefresh) | Aggiornate le [credenziali Bedrock](/docs/it/amazon-bedrock#advanced-credential-configuration) scadute in `.aws` con il vostro comando | Autenticazione e provider | Any file |

628| [`axScreenReader`](#axscreenreader) | Rendete l'[output adatto ai lettori di schermo](/docs/it/accessibility) | Interface and terminal | Any file |629| [`awsCredentialExport`](#awscredentialexport) | Fornite le [credenziali Bedrock](/docs/it/amazon-bedrock#advanced-credential-configuration) come JSON dal vostro comando | Autenticazione e provider | Any file |

629| [`bashEditDiffEnabled`](#basheditdiffenabled) | Registrate i [file che un comando Bash ha modificato](/docs/it/hooks#bash) in ogni modalità di autorizzazione | Interface and terminal | User or managed |630| [`axScreenReader`](#axscreenreader) | Rendete l'[output compatibile con lo screen reader](/docs/it/accessibility) | Interfaccia e terminale | Any file |

630| [`bashOutputMaxChars`](#bashoutputmaxchars) | Impostate quanto dell'[output](/docs/it/tools-reference#output-limits) di un comando riuscito Claude riceve inline | Memory and context | Any file |631| [`bashEditDiffEnabled`](#basheditdiffenabled) | Registrate i [file che sono cambiati mentre un comando Bash era in esecuzione](/docs/it/hooks#bash) in ogni modalità di autorizzazione | Interfaccia e terminale | User or managed |

631| [`blockedMarketplaces`](#blockedmarketplaces) | Bloccate le fonti del [marketplace di plugin](/docs/it/plugins/overview) per la vostra organizzazione | Plugins and skills | Managed |632| [`bashOutputMaxChars`](#bashoutputmaxchars) | Impostate quanto dell'[output](/docs/it/tools-reference#output-limits) di un comando riuscito Claude riceve inline | Memoria e contesto | Any file |

632| [`browserExternalPageTools`](#browserexternalpagetools) | Mantenete gli strumenti di Claude disattivati sulle pagine esterne nel riquadro [desktop](/docs/it/desktop) Browser | Tools | Managed |633| [`blockedMarketplaces`](#blockedmarketplaces) | Bloccate le fonti del [marketplace dei plugin](/docs/it/plugins/overview) per la vostra organizzazione | Plugin e skill | Managed |

633| [`channelsEnabled`](#channelsenabled) | Consentite i [canali](/docs/it/channels#enable-channels-for-your-organization) per la vostra organizzazione | Plugins and skills | Managed |634| [`browserExternalPageTools`](#browserexternalpagetools) | Mantenete gli strumenti di Claude disattivati sulle pagine esterne nel riquadro [desktop](/docs/it/desktop) Browser | Strumenti | Managed |

634| [`claudeInChromeDefaultEnabled`](#claudeinchromedefaultenabled) | Attivate l'[integrazione Chrome](/docs/it/chrome) in ogni sessione CLI interattiva senza passare `--chrome` | Global config settings | Global config |635| [`channelsEnabled`](#channelsenabled) | Consentite i [canali](/docs/it/channels#enable-channels-for-your-organization) per la vostra organizzazione | Plugin e skill | Managed |

635| [`claudeMd`](#claudemd) | Iniettate le istruzioni [CLAUDE.md](/docs/it/memory#deploy-organization-wide-claude-md) a livello di organizzazione dalle impostazioni gestite | Memory and context | Managed |636| [`claudeInChromeDefaultEnabled`](#claudeinchromedefaultenabled) | Attivate l'[integrazione Chrome](/docs/it/chrome) in ogni sessione CLI interattiva senza passare `--chrome` | Impostazioni di configurazione globale | Global config |

636| [`claudeMdExcludes`](#claudemdexcludes) | Saltate i file [CLAUDE.md](/docs/it/memory#exclude-specific-claude-md-files) specifici quando la memoria si carica | Memory and context | Any file |637| [`claudeMd`](#claudemd) | Iniettate le istruzioni [CLAUDE.md](/docs/it/memory#deploy-organization-wide-claude-md) a livello di organizzazione dalle impostazioni gestite | Memoria e contesto | Managed |

637| [`cleanupPeriodDays`](#cleanupperioddays) | Scegliete quanti giorni Claude Code mantiene i [trascritti](/docs/it/data-usage#data-retention) prima di eliminarli | Privacy and telemetry | Any file |638| [`claudeMdExcludes`](#claudemdexcludes) | Saltate i file [CLAUDE.md](/docs/it/memory#exclude-specific-claude-md-files) specifici quando la memoria si carica | Memoria e contesto | Any file |

638| [`companyAnnouncements`](#companyannouncements) | Mostrate gli annunci della vostra organizzazione all'avvio | Interface and terminal | Any file |639| [`cleanupPeriodDays`](#cleanupperioddays) | Scegliete quanti giorni Claude Code mantiene i [trascritti](/docs/it/data-usage#data-retention) prima di eliminarli | Privacy e telemetria | Any file |

639| [`copyFullResponse`](#copyfullresponse) | Fate in modo che [`/copy`](/docs/it/commands) copi la risposta completa senza mostrare il selezionatore di blocchi di codice | Global config settings | Global config |640| [`companyAnnouncements`](#companyannouncements) | Mostrate gli annunci della vostra organizzazione all'avvio | Interfaccia e terminale | Any file |

640| [`copyOnSelect`](#copyonselect) | Disattivate la copia automatica del testo che selezionate con il mouse nel [rendering a schermo intero](/docs/it/fullscreen#use-the-mouse) e nella vista agente | Global config settings | Global config |641| [`copyFullResponse`](#copyfullresponse) | Rendete [`/copy`](/docs/it/commands) copia la risposta completa senza mostrare il selettore di blocchi di codice | Impostazioni di configurazione globale | Global config |

641| [`crossSessionInbound`](#crosssessioninbound) | Scegliete se Claude Code consegna i [messaggi dalle vostre altre sessioni](/docs/it/cross-session-messaging#control-inbound-messages), mostra un avviso senza consegnarli, o li rifiuta | Agents, sessions, and worktrees | Any file |642| [`copyOnSelect`](#copyonselect) | Disattivate la copia automatica del testo che selezionate con il mouse nel [rendering a schermo intero](/docs/it/fullscreen#use-the-mouse) e nella vista agente | Impostazioni di configurazione globale | Global config |

642| [`defaultShell`](#defaultshell) | Scegliete se Bash o PowerShell esegue i comandi shell che digitate con il prefisso [`!`](/docs/it/interactive-mode#shell-mode-with-prefix) | Interface and terminal | Any file |643| [`crossSessionInbound`](#crosssessioninbound) | Scegliete se Claude Code consegna i [messaggi dalle vostre altre sessioni](/docs/it/cross-session-messaging#control-inbound-messages), mostra un avviso senza consegnarli, o li rifiuta | Agenti, sessioni e worktrees | Any file |

643| [`defaultToAgentsView`](#defaulttoagentsview) | Aprite la [vista agente](/docs/it/agent-view) invece di una nuova conversazione quando eseguite `claude` senza argomenti | Global config settings | Global config |644| [`defaultShell`](#defaultshell) | Scegliete se Bash o PowerShell esegue i comandi shell che digitate con il prefisso [`!`](/docs/it/interactive-mode#shell-mode-with-prefix) | Interfaccia e terminale | Any file |

645| [`defaultToAgentsView`](#defaulttoagentsview) | Aprite la [vista agente](/docs/it/agent-view) invece di una nuova conversazione quando eseguite `claude` senza argomenti | Impostazioni di configurazione globale | Global config |

644| [`deniedMcpServers`](#deniedmcpservers) | Bloccate i [server MCP](/docs/it/mcp) specifici per URL, comando o nome | MCP | Any file |646| [`deniedMcpServers`](#deniedmcpservers) | Bloccate i [server MCP](/docs/it/mcp) specifici per URL, comando o nome | MCP | Any file |

645| [`deniedModels`](#deniedmodels) | [Bloccate i modelli specifici](/docs/it/model-config#block-specific-models-or-versions), anche quelli che `availableModels` consente | Model and responses | Managed |647| [`deniedModels`](#deniedmodels) | [Bloccate i modelli specifici](/docs/it/model-config#block-specific-models-or-versions), anche quelli che `availableModels` consente | Modello e risposte | Managed |

646| [`desktopSessionCleanupPeriodDays`](#desktopsessioncleanupperioddays) | Impostate un limite di età in giorni per i [trascritti di Claude Desktop e Cowork](/docs/it/claude-directory#cleaned-up-automatically) | Privacy and telemetry | User or managed |648| [`desktopSessionCleanupPeriodDays`](#desktopsessioncleanupperioddays) | Impostate un limite di età in giorni per i [trascritti di Claude Desktop e Cowork](/docs/it/claude-directory#cleaned-up-automatically) | Privacy e telemetria | User or managed |

647| [`dialogExpiry`](#dialogexpiry) | Impostate quanto a lungo Claude Code aspetta che [Remote Control](/docs/it/remote-control) o un host SDK risponda a una finestra di dialogo inoltrata prima di annullarla | Interface and terminal | User or managed |649| [`dialogExpiry`](#dialogexpiry) | Impostate quanto a lungo Claude Code aspetta che [Remote Control](/docs/it/remote-control) o un host SDK risponda a una finestra di dialogo inoltrata prima di annullare la finestra di dialogo | Interfaccia e terminale | User or managed |

648| [`diffTool`](#difftool) | Scegliete se le modifiche ai file proposte da Claude si aprono nel visualizzatore diff di [VS Code](/docs/it/vs-code) o [JetBrains](/docs/it/jetbrains#features) o rimangono nel terminale | Global config settings | Global config |650| [`diffTool`](#difftool) | Scegliete se le modifiche ai file proposte da Claude si aprono nel visualizzatore diff di [VS Code](/docs/it/vs-code) o [JetBrains](/docs/it/jetbrains#features) o rimangono nel terminale | Impostazioni di configurazione globale | Global config |

649| [`disableAgentView`](#disableagentview) | Disattivate gli agenti in background e la [vista agente](/docs/it/agent-view) | Agents, sessions, and worktrees | Any file |651| [`disableAgentView`](#disableagentview) | Disattivate gli agenti in background e la [vista agente](/docs/it/agent-view) | Agenti, sessioni e worktrees | Any file |

650| [`disableAllHooks`](#disableallhooks) | Disattivate gli [hook](/docs/it/hooks), una [riga di stato](/docs/it/statusline) personalizzata, e un comando [`@`](/docs/it/interactive-mode#quick-commands) personalizzato di suggerimento di file tutto in una volta | Hooks and automation | Any file |652| [`disableAllHooks`](#disableallhooks) | Disattivate gli [hook](/docs/it/hooks), una [riga di stato](/docs/it/statusline) personalizzata, e un comando personalizzato di [suggerimento file `@`](/docs/it/interactive-mode#quick-commands) tutto in una volta | Hook e automazione | Any file |

651| [`disableArtifact`](#disableartifact) | Deprecato; usate `enableArtifact` per disattivare lo [strumento Artifact](/docs/it/artifacts) | Remote, desktop, and notifications | Any file |653| [`disableArtifact`](#disableartifact) | Deprecato; usate `enableArtifact` per disattivare lo [strumento Artifact](/docs/it/artifacts) | Remoto, desktop e notifiche | Any file |

652| [`disableAutoMode`](#disableautomode) | Rimuovete la [modalità automatica](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) dal ciclo della modalità di autorizzazione | Permission settings | Any file |654| [`disableAutoMode`](#disableautomode) | Rimuovete la [modalità automatica](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) dal ciclo della modalità di autorizzazione | Impostazioni di autorizzazione | Any file |

653| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Limitate il riquadro [desktop](/docs/it/desktop) Browser a localhost per le persone e Claude | Tools | Managed |655| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Limitate il riquadro [desktop](/docs/it/desktop) Browser a localhost per le persone e Claude | Strumenti | Managed |

654| [`disableBundledSkills`](#disablebundledskills) | Disattivate le [skill](/docs/it/skills#bundled-skills) e i [workflow](/docs/it/workflows) inclusi in Claude Code | Plugins and skills | Any file |656| [`disableBundledSkills`](#disablebundledskills) | Disattivate le [skill](/docs/it/skills#bundled-skills) e i [workflow](/docs/it/workflows) inclusi con Claude Code | Plugin e skill | Any file |

655| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Disattivate i [connettori claude.ai](/docs/it/mcp#disable-claude-ai-connectors) in modo che Claude Code non li recuperi | MCP | Any file |657| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Disattivate i [connettori claude.ai](/docs/it/mcp#disable-claude-ai-connectors) in modo che Claude Code non li recuperi | MCP | Any file |

656| [`disableCommandPluginSources`](#disablecommandpluginsources) | Bloccate i [plugin](/docs/it/plugins/overview) che si installano eseguendo un comando dichiarato dal marketplace | Plugins and skills | Managed |658| [`disableCommandPluginSources`](#disablecommandpluginsources) | Bloccate i [plugin](/docs/it/plugins/overview) che si installano eseguendo un comando dichiarato dal marketplace | Plugin e skill | Managed |

657| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Impedite a Claude Code di registrare il [gestore `claude-cli://`](/docs/it/deep-links) | Remote, desktop, and notifications | Any file |659| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Impedite a Claude Code di registrare il [gestore `claude-cli://`](/docs/it/deep-links) | Remoto, desktop e notifiche | Any file |

658| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Disattivate le [sessioni Desktop Code](/docs/it/desktop#local-sessions-on-managed-devices) che vengono eseguite sul dispositivo, lasciando SSH ad altri host e al cloud | Remote, desktop, and notifications | Managed |660| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Disattivate le [sessioni Desktop Code](/docs/it/desktop#local-sessions-on-managed-devices) che vengono eseguite sul dispositivo, lasciando SSH ad altri host e al cloud | Remoto, desktop e notifiche | Managed |

659| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Rifiutate i server specifici dal [`.mcp.json`](/docs/it/mcp#project-scope) di un progetto | MCP | Any file |661| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Rifiutate i server specifici da un [`.mcp.json`](/docs/it/mcp#project-scope) del progetto | MCP | Any file |

660| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Bloccate gli strumenti di Claude nel riquadro [desktop](/docs/it/desktop) iOS Simulator | Tools | Managed |662| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Bloccate gli strumenti di Claude nel riquadro [desktop](/docs/it/desktop) iOS Simulator | Strumenti | Managed |

661| [`disableRemoteControl`](#disableremotecontrol) | Disattivate [Remote Control](/docs/it/remote-control) ovunque possa iniziare | Remote, desktop, and notifications | Any file |663| [`disableRemoteControl`](#disableremotecontrol) | Disattivate [Remote Control](/docs/it/remote-control) ovunque possa iniziare | Remoto, desktop e notifiche | Any file |

662| [`disableSideloadFlags`](#disablesideloadflags) | Rifiutate i flag CLI che caricano lateralmente i [plugin](/docs/it/plugins/overview), i [subagent](/docs/it/sub-agents), e i [server MCP](/docs/it/mcp) | Enterprise and managed settings | Managed |664| [`disableSideloadFlags`](#disablesideloadflags) | Rifiutate i flag CLI che caricano i [plugin](/docs/it/plugins/overview), i [subagent](/docs/it/sub-agents), e i [server MCP](/docs/it/mcp) | Impostazioni aziendali e gestite | Managed |

663| [`disableSkillShellExecution`](#disableskillshellexecution) | Impedite alle [skill](/docs/it/skills) e ai comandi personalizzati di eseguire shell inline | Plugins and skills | Any file |665| [`disableSkillShellExecution`](#disableskillshellexecution) | Impedite alle [skill](/docs/it/skills) e ai comandi personalizzati di eseguire shell inline | Plugin e skill | Any file |

664| [`disableWorkflows`](#disableworkflows) | Disattivate i [workflow dinamici](/docs/it/workflows) per tutti; usate `enableWorkflows` per voi stessi | Hooks and automation | Any file |666| [`disableWorkflows`](#disableworkflows) | Disattivate i [workflow dinamici](/docs/it/workflows) per tutti; usate `enableWorkflows` per voi stessi | Hook e automazione | Any file |

665| [`editorMode`](#editormode) | Usate le [scorciatoie da tastiera vim](/docs/it/interactive-mode#vim-editor-mode) nel prompt di input | Interface and terminal | Any file |667| [`editorMode`](#editormode) | Usate le [scorciatoie da tastiera vim](/docs/it/interactive-mode#vim-editor-mode) nel prompt di input | Interfaccia e terminale | Any file |

666| [`effortLevel`](#effortlevel) | Impostate un [livello di sforzo](/docs/it/model-config#adjust-effort-level) predefinito per i modelli senza un livello salvato | Model and responses | Any file |668| [`effortLevel`](#effortlevel) | Impostate un [livello di sforzo](/docs/it/model-config#adjust-effort-level) predefinito per i modelli senza un livello salvato proprio | Modello e risposte | Any file |

667| [`emojiCompletionEnabled`](#emojicompletionenabled) | Disattivate i suggerimenti e la sostituzione di emoji [`:shortcode:`](/docs/it/interactive-mode#emoji-shortcodes) nell'input del prompt | Interface and terminal | Any file |669| [`emojiCompletionEnabled`](#emojicompletionenabled) | Disattivate i [suggerimenti e la sostituzione emoji `:shortcode:`](/docs/it/interactive-mode#emoji-shortcodes) nell'input del prompt | Interfaccia e terminale | Any file |

668| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Approvate ogni server nel file [`.mcp.json`](/docs/it/mcp#project-server-approvals-and-workspace-trust) del progetto senza un prompt | MCP | Any file |670| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Approvate ogni server nei file [`.mcp.json`](/docs/it/mcp#project-server-approvals-and-workspace-trust) del progetto senza un prompt | MCP | Any file |

669| [`enableArtifact`](#enableartifact) | Disattivate lo [strumento Artifact](/docs/it/artifacts) con un `false` in qualsiasi file; nessun file può riattivarlo | Remote, desktop, and notifications | Any file |671| [`enableArtifact`](#enableartifact) | Disattivate lo [strumento Artifact](/docs/it/artifacts) con un `false` in qualsiasi file; nessun file può riattivarlo | Remoto, desktop e notifiche | Any file |

670| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Approvate i server specifici dal [`.mcp.json`](/docs/it/mcp#project-server-approvals-and-workspace-trust) di un progetto | MCP | Any file |672| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Approvate i server specifici da un [`.mcp.json`](/docs/it/mcp#project-server-approvals-and-workspace-trust) del progetto | MCP | Any file |

671| [`enabledPlugins`](#enabledplugins) | Attivate o disattivate i singoli [plugin](/docs/it/plugins/overview) per ambito | Plugins and skills | Any file |673| [`enabledPlugins`](#enabledplugins) | Attivate o disattivate i singoli [plugin](/docs/it/plugins/overview) per ambito | Plugin e skill | Any file |

672| [`enableWorkflows`](#enableworkflows) | Attivate o disattivate i [workflow dinamici](/docs/it/workflows) rispetto al valore predefinito del vostro piano | Hooks and automation | Any file |674| [`enableWorkflows`](#enableworkflows) | Attivate o disattivate i [workflow dinamici](/docs/it/workflows) rispetto al valore predefinito del vostro piano | Hook e automazione | Any file |

673| [`enforceAvailableModels`](#enforceavailablemodels) | Mantenete la scelta predefinita di [`/model`](/docs/it/model-config#enforce-the-allowlist-for-the-default-model) all'interno dell'elenco di autorizzazione `availableModels` | Model and responses | Any file |675| [`enforceAvailableModels`](#enforceavailablemodels) | Mantenete la [scelta predefinita di `/model`](/docs/it/model-config#enforce-the-allowlist-for-the-default-model) all'interno dell'elenco di autorizzazione `availableModels` | Modello e risposte | Any file |

674| [`env`](#env) | Impostate le [variabili di ambiente](/docs/it/env-vars#in-settings-files) per ogni sessione e i suoi sottoprocessi | Memory and context | Any file |676| [`env`](#env) | Impostate le [variabili di ambiente](/docs/it/env-vars#in-settings-files) per ogni sessione e i suoi sottoprocessi | Memoria e contesto | Any file |

675| [`externalEditorContext`](#externaleditorcontext) | Mostrate l'ultima risposta di Claude come commenti quando premete [Ctrl+G](/docs/it/interactive-mode#general-controls) per modificare | Global config settings | Global config |677| [`externalEditorContext`](#externaleditorcontext) | Mostrate l'ultima risposta di Claude come commenti quando premete [Ctrl+G](/docs/it/interactive-mode#general-controls) per modificare | Impostazioni di configurazione globale | Global config |

676| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Registrate i [marketplace](/docs/it/plugins/overview) per un repository o un'organizzazione | Plugins and skills | Any file |678| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Registrate i [marketplace](/docs/it/plugins/overview) per un repository o un'organizzazione | Plugin e skill | Any file |

677| [`fallbackModel`](#fallbackmodel) | Nominate i [modelli di backup](/docs/it/model-config#fallback-model-chains) per quando il primario è sovraccarico | Model and responses | Any file |679| [`fallbackModel`](#fallbackmodel) | Nominate i [modelli di backup](/docs/it/model-config#fallback-model-chains) per quando il primario è sovraccarico | Modello e risposte | Any file |

678| [`fastMode`](#fastmode) | Attivate la [modalità veloce](/docs/it/fast-mode) per le sessioni dove è disponibile | Model and responses | Any file |680| [`fastMode`](#fastmode) | Attivate la [modalità veloce](/docs/it/fast-mode) per le sessioni dove è disponibile | Modello e risposte | Any file |

679| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Richiedete alle persone di attivare la [modalità veloce](/docs/it/fast-mode) ogni sessione | Model and responses | Any file |681| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Richiedete alle persone di attivare la [modalità veloce](/docs/it/fast-mode) ogni sessione | Modello e risposte | Any file |

680| [`feedbackDrafts`](#feedbackdrafts) | Controllate se Claude mette in coda le [bozze di feedback](/docs/it/tools-reference#sendfeedback-tool-behavior) per voi da rivedere | Privacy and telemetry | User or managed |682| [`feedbackDrafts`](#feedbackdrafts) | Controllate se Claude mette in coda le [bozze di feedback](/docs/it/tools-reference#sendfeedback-tool-behavior) per voi da rivedere | Privacy e telemetria | User or managed |

681| [`feedbackSurveyRate`](#feedbacksurveyrate) | Cambiate la frequenza con cui appare il [sondaggio sulla qualità della sessione](/docs/it/data-usage#session-quality-surveys) | Privacy and telemetry | Any file |683| [`feedbackSurveyRate`](#feedbacksurveyrate) | Cambiate la frequenza con cui il [sondaggio sulla qualità della sessione](/docs/it/data-usage#session-quality-surveys) appare | Privacy e telemetria | Any file |

682| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Disattivate o attivate gli snapshot di file che [`/rewind`](/docs/it/checkpointing) ripristina | Memory and context | Any file |684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Disattivate o attivate gli snapshot di file che [`/rewind`](/docs/it/checkpointing) ripristina | Memoria e contesto | Any file |

683| [`fileSuggestion`](#filesuggestion) | Fornite l'[autocompletamento dei file `@`](/docs/it/interactive-mode#quick-commands) dal vostro comando | Interface and terminal | Any file |685| [`fileSuggestion`](#filesuggestion) | Fornite l'[autocompletamento del file `@`](/docs/it/interactive-mode#quick-commands) dal vostro comando | Interfaccia e terminale | Any file |

684| [`footerLinksRegexes`](#footerlinksregexes) | Rendete gli ID di problema o revisione nell'output in [link cliccabili](/docs/it/statusline#clickable-links) sotto la casella di input | Interface and terminal | User or managed |686| [`footerLinksRegexes`](#footerlinksregexes) | Rendete gli ID di problema o revisione nell'output in [link cliccabili](/docs/it/statusline#clickable-links) sotto la casella di input | Interfaccia e terminale | User or managed |

685| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Impostate l'[URL del gateway](/docs/it/claude-apps-gateway#set-the-gateway-url) a cui si connette la schermata di accesso | Authentication and providers | Managed |687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Impostate l'[URL del gateway](/docs/it/claude-apps-gateway#set-the-gateway-url) a cui si connette la schermata di accesso | Autenticazione e provider | Managed |

686| [`forceLoginMethod`](#forceloginmethod) | [Limitate l'accesso](/docs/it/authentication#restrict-login-to-your-organization) a claude.ai, Claude Console, o a un [gateway cloud](/docs/it/claude-apps-gateway) | Authentication and providers | Any file |688| [`forceLoginMethod`](#forceloginmethod) | [Limitate l'accesso](/docs/it/authentication#restrict-login-to-your-organization) a claude.ai, Claude Console, o un [gateway cloud](/docs/it/claude-apps-gateway) | Autenticazione e provider | Any file |

687| [`forceLoginOrgUUID`](#forceloginorguuid) | [Fissate gli accessi a claude.ai alla vostra organizzazione](/docs/it/authentication#restrict-login-to-your-organization); solo una fonte gestita lo applica | Authentication and providers | Any file |689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Fissate gli accessi a claude.ai alla vostra organizzazione](/docs/it/authentication#restrict-login-to-your-organization); solo una fonte gestita lo applica | Autenticazione e provider | Any file |

688| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Bloccate l'avvio fino a quando le [impostazioni gestite dal server](/docs/it/server-managed-settings) non vengono recuperate di recente | Enterprise and managed settings | Managed |690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Bloccate l'avvio fino a quando le [impostazioni gestite dal server](/docs/it/server-managed-settings) non vengono recuperate di recente | Impostazioni aziendali e gestite | Managed |

689| [`gatewayInternalNetworks`](#gatewayinternalnetworks) | Lasciate che `/login` raggiunga un [gateway cloud](/docs/it/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) su spazio IPv4 pubblico che la vostra organizzazione utilizza internamente | Authentication and providers | Managed |691| [`gatewayInternalNetworks`](#gatewayinternalnetworks) | Lasciate che `/login` raggiunga un [gateway cloud](/docs/it/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) su spazio IPv4 pubblico che la vostra organizzazione utilizza internamente | Autenticazione e provider | Managed |

690| [`gcpAuthRefresh`](#gcpauthrefresh) | Aggiornate le [credenziali Google Cloud](/docs/it/google-vertex-ai#advanced-credential-configuration) con il vostro comando | Authentication and providers | Any file |692| [`gcpAuthRefresh`](#gcpauthrefresh) | Aggiornate le [credenziali Google Cloud](/docs/it/google-vertex-ai#advanced-credential-configuration) con il vostro comando | Autenticazione e provider | Any file |

691| [`hooks`](#hooks) | Eseguite i vostri comandi come [hook](/docs/it/hooks) nei punti del ciclo di vita di Claude Code | Hooks and automation | Any file |693| [`hooks`](#hooks) | Eseguite i vostri comandi come [hook](/docs/it/hooks) nei punti del ciclo di vita di Claude Code | Hook e automazione | Any file |

692| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limitate quali variabili di ambiente gli [hook HTTP](/docs/it/hooks) possono mettere nelle intestazioni | Hooks and automation | Any file |694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limitate quali variabili di ambiente gli [hook HTTP](/docs/it/hooks) possono mettere nelle intestazioni | Hook e automazione | Any file |

693| [`includeCoAuthoredBy`](#includecoauthoredby) | Deprecato; usate `attribution` per nascondere o modificare l'attribuzione di commit e PR | Git and attribution | Any file |695| [`includeCoAuthoredBy`](#includecoauthoredby) | Deprecato; usate `attribution` per nascondere o cambiare l'attribuzione di commit e PR | Git e attribuzione | Any file |

694| [`includeGitInstructions`](#includegitinstructions) | Rimuovete le istruzioni di commit e PR integrate dal contesto di Claude | Git and attribution | Any file |696| [`includeGitInstructions`](#includegitinstructions) | Rimuovete le istruzioni di commit e PR integrate dal contesto di Claude | Git e attribuzione | Any file |

695| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Ricevete una [notifica push](/docs/it/remote-control#mobile-push-notifications) quando Claude vi sta aspettando | Remote, desktop, and notifications | Any file |697| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Ricevete una [notifica push](/docs/it/remote-control#mobile-push-notifications) quando Claude sta aspettando voi | Remoto, desktop e notifiche | Any file |

696| [`isolatePeerMachines`](#isolatepeermachines) | Chiedete prima che Claude [messaggi una delle vostre sessioni su un'altra macchina](/docs/it/cross-session-messaging#require-approval-for-cross-machine-messages) | Agents, sessions, and worktrees | Any file |698| [`isolatePeerMachines`](#isolatepeermachines) | Chiedete prima che Claude [messaggi una delle vostre sessioni su un'altra macchina](/docs/it/cross-session-messaging#require-approval-for-cross-machine-messages) | Agenti, sessioni e worktrees | Any file |

697| [`keybindingFlavor`](#keybindingflavor) | Deprecato e non ha effetto; le scorciatoie di modifica delle parole seguono sempre le [convenzioni readline](/docs/it/interactive-mode#make-ctrl-w-delete-back-to-whitespace) | Interface and terminal | Any file |699| [`keybindingFlavor`](#keybindingflavor) | Deprecato e non ha effetto; le scorciatoie di modifica delle parole seguono sempre le [convenzioni readline](/docs/it/interactive-mode#make-ctrl-w-delete-back-to-whitespace) | Interfaccia e terminale | Any file |

698| [`language`](#language) | Fate in modo che Claude risponda in una lingua diversa dall'inglese | Model and responses | Any file |700| [`language`](#language) | Fate che Claude risponda in una lingua diversa dall'inglese | Modello e risposte | Any file |

699| [`leftArrowOpensAgents`](#leftarrowopensagents) | Disattivate la scorciatoia `←` che [mette in background la sessione e apre la vista agente](/docs/it/agent-view#switch-sessions-without-leaving-the-terminal) | Global config settings | Global config |701| [`leftArrowOpensAgents`](#leftarrowopensagents) | Disattivate la scorciatoia `←` che [mette in background la sessione e apre la vista agente](/docs/it/agent-view#switch-sessions-without-leaving-the-terminal) | Impostazioni di configurazione globale | Global config |

700| [`managedMcpServers`](#managedmcpservers) | Fornite i [server MCP](/docs/it/managed-mcp#provide-servers-through-managed-settings) remoti a ogni utente insieme a quelli che aggiungono | MCP | Managed |702| [`managedMcpServers`](#managedmcpservers) | Fornite i [server MCP](/docs/it/managed-mcp#provide-servers-through-managed-settings) remoti a ogni utente insieme a quelli che aggiungono | MCP | Managed |

701| [`managedSourcesBehavior`](#managedsourcesbehavior) | Componete ogni [fonte gestita](/docs/it/managed-settings#how-claude-code-combines-managed-sources) che distribuite invece di usare solo quella con la priorità più alta | Enterprise and managed settings | Managed |703| [`managedSourcesBehavior`](#managedsourcesbehavior) | Componete ogni [fonte gestita](/docs/it/managed-settings#how-claude-code-combines-managed-sources) che distribuite invece di usare solo quella con la priorità più alta | Impostazioni aziendali e gestite | Managed |

702| [`maxEffortLevel`](#maxeffortlevel) | Limitate il [livello di sforzo](/docs/it/model-config#adjust-effort-level) per ogni modello o per modello, su ogni provider | Model and responses | Any file |704| [`maxEffortLevel`](#maxeffortlevel) | Limitate il [livello di sforzo](/docs/it/model-config#adjust-effort-level) per ogni modello o per modello, su ogni provider | Modello e risposte | Any file |

703| [`maxProseWidth`](#maxprosewidth) | Limitate la larghezza della prosa nelle risposte di Claude in un terminale ampio | Interface and terminal | Any file |705| [`maxProseWidth`](#maxprosewidth) | Limitate la larghezza della prosa nelle risposte di Claude in un terminale ampio | Interfaccia e terminale | Any file |

704| [`minimumVersion`](#minimumversion) | Impedite agli [aggiornamenti automatici](/docs/it/setup#pin-a-minimum-version) di installare qualsiasi cosa al di sotto di una versione | Updates and versioning | Any file |706| [`minimumVersion`](#minimumversion) | Impedite agli [aggiornamenti automatici](/docs/it/setup#pin-a-minimum-version) di installare qualsiasi cosa al di sotto di una versione | Aggiornamenti e versioning | Any file |

705| [`model`](#model) | Cambiate il [modello](/docs/it/model-config#set-a-default-model-for-new-sessions) con cui Claude Code inizia | Model and responses | Any file |707| [`model`](#model) | Cambiate il [modello](/docs/it/model-config#set-a-default-model-for-new-sessions) con cui Claude Code inizia | Modello e risposte | Any file |

706| [`modelOverrides`](#modeloverrides) | [Mappate gli ID dei modelli](/docs/it/model-config#override-model-ids-per-version) agli ID del vostro provider, come gli ARN di Bedrock | Model and responses | Any file |708| [`modelOverrides`](#modeloverrides) | [Mappate gli ID modello](/docs/it/model-config#override-model-ids-per-version) agli ID del vostro provider, come gli ARN di Bedrock | Modello e risposte | Any file |

707| [`modelPicker`](#modelpicker) | Scegliete quali modelli il [selezionatore `/model`](/docs/it/model-config#available-models) elenca, nel vostro ordine e con le vostre etichette | Model and responses | User or managed |709| [`modelPicker`](#modelpicker) | Scegliete quali modelli il selettore [`/model`](/docs/it/model-config#available-models) elenca, nel vostro ordine e con le vostre etichette | Modello e risposte | User or managed |

708| [`modelPricing`](#modelpricing) | Segnalate la spesa alle tariffe contrattuali della vostra organizzazione invece del prezzo di listino | Model and responses | Managed |710| [`modelPricing`](#modelpricing) | Segnalate la spesa ai tassi contrattuali della vostra organizzazione invece del prezzo di listino | Modello e risposte | Managed |

709| [`modelSettings`](#modelsettings) | Mantenete un [livello di sforzo](/docs/it/model-config#adjust-effort-level) salvato per modello, o limitate lo sforzo di un modello | Model and responses | Any file |711| [`modelSettings`](#modelsettings) | Mantenete un [livello di sforzo](/docs/it/model-config#adjust-effort-level) salvato per modello, o limitate lo sforzo di un modello | Modello e risposte | Any file |

710| [`otelHeadersHelper`](#otelheadershelper) | Generare le intestazioni [OpenTelemetry](/docs/it/monitoring-usage#dynamic-headers) rotanti con il vostro comando | Authentication and providers | Any file |712| [`otelHeadersHelper`](#otelheadershelper) | Generare le intestazioni [OpenTelemetry](/docs/it/monitoring-usage#dynamic-headers) rotanti con il vostro comando | Autenticazione e provider | Any file |

711| [`outputStyle`](#outputstyle) | Cambiate il ruolo, il tono e il formato di output di Claude con uno [stile di output](/docs/it/output-styles) | Model and responses | Any file |713| [`outputStyle`](#outputstyle) | Cambiate il ruolo, il tono e il formato di output di Claude con uno [stile di output](/docs/it/output-styles) | Modello e risposte | Any file |

712| [`parentSettingsBehavior`](#parentsettingsbehavior) | Applicate o eliminate le restrizioni che un [host SDK o IDE](/docs/it/managed-settings#let-an-embedding-host-add-policy) passa quando distribuite le [impostazioni gestite](/docs/it/managed-settings) | Enterprise and managed settings | Managed |714| [`parentSettingsBehavior`](#parentsettingsbehavior) | Applicate o eliminate le restrizioni che un [host SDK o IDE](/docs/it/managed-settings#let-an-embedding-host-add-policy) passa quando distribuite le [impostazioni gestite](/docs/it/managed-settings) | Impostazioni aziendali e gestite | Managed |

713| [`permissionExplainerEnabled`](#permissionexplainerenabled) | Rimosso nella v2.1.257, insieme al comando di spiegazione `Ctrl+E` sui prompt di autorizzazione shell | Global config settings | Global config |715| [`permissionExplainerEnabled`](#permissionexplainerenabled) | Rimosso nella v2.1.257, insieme al comando di spiegazione `Ctrl+E` sui prompt di autorizzazione shell | Impostazioni di configurazione globale | Global config |

714| [`permissions`](#permissions) | Impostate le regole di autorizzazione, domanda e negazione e la [modalità di autorizzazione](/docs/it/permission-modes) iniziale | Permission settings | Any file |716| [`permissions`](#permissions) | Impostate le regole di autorizzazione, domanda e negazione e la [modalità di autorizzazione](/docs/it/permission-modes) iniziale | Impostazioni di autorizzazione | Any file |

715| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Fornite a Claude l'accesso ai file alle [directory al di fuori di quella attuale](/docs/it/permissions#working-directories) | Permission settings | Any file |717| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Date a Claude l'accesso ai file alle [directory al di fuori di quella attuale](/docs/it/permissions#working-directories) | Impostazioni di autorizzazione | Any file |

716| [`permissions.allow`](#permissions-allow) | Approvate gli [usi dello strumento](/docs/it/permissions#permission-rule-syntax) elencati senza un prompt | Permission settings | Any file |718| [`permissions.allow`](#permissions-allow) | Approvate gli [usi dello strumento](/docs/it/permissions#permission-rule-syntax) elencati senza un prompt | Impostazioni di autorizzazione | Any file |

717| [`permissions.ask`](#permissions-ask) | Chiedete sempre prima degli [usi dello strumento](/docs/it/permissions#permission-rule-syntax) elencati | Permission settings | Any file |719| [`permissions.ask`](#permissions-ask) | Chiedete sempre prima degli [usi dello strumento](/docs/it/permissions#permission-rule-syntax) elencati | Impostazioni di autorizzazione | Any file |

718| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | Fate in modo che gli strumenti di file rifiutino le letture al di fuori delle [directory di lavoro](/docs/it/permissions#working-directories) in ogni modalità di autorizzazione | Permission settings | Any file |720| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | Rendete i file tools rifiutino le letture al di fuori delle [directory di lavoro](/docs/it/permissions#working-directories) in ogni modalità di autorizzazione | Impostazioni di autorizzazione | Any file |

719| [`permissions.defaultMode`](#permissions-defaultmode) | Impostate la [modalità di autorizzazione](/docs/it/permission-modes#which-mode-a-session-starts-in) in cui iniziano le nuove sessioni | Permission settings | Any file |721| [`permissions.defaultMode`](#permissions-defaultmode) | Impostate la [modalità di autorizzazione](/docs/it/permission-modes#which-mode-a-session-starts-in) in cui le nuove sessioni iniziano | Impostazioni di autorizzazione | Any file |

720| [`permissions.deny`](#permissions-deny) | Bloccate gli [usi dello strumento](/docs/it/permissions#permission-rule-syntax) elencati, incluse le letture di file che contengono segreti | Permission settings | Any file |722| [`permissions.deny`](#permissions-deny) | Bloccate gli [usi dello strumento](/docs/it/permissions#permission-rule-syntax) elencati, incluse le letture di file che contengono segreti | Impostazioni di autorizzazione | Any file |

721| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Impedite a chiunque di entrare nella [modalità bypassPermissions](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | Any file |723| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Impedite a chiunque di entrare nella [modalità bypassPermissions](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Impostazioni di autorizzazione | Any file |

722| [`plansDirectory`](#plansdirectory) | Scegliete dove la [modalità plan](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode) scrive i file di piano | Memory and context | Any file |724| [`plansDirectory`](#plansdirectory) | Scegliete dove la [modalità plan](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode) scrive i file di piano | Memoria e contesto | Any file |

723| [`pluginConfigs`](#pluginconfigs) | Archiviate le risposte che avete dato alla finestra di dialogo di configurazione di un [plugin](/docs/it/plugins/overview) | Plugins and skills | User or managed |725| [`pluginConfigs`](#pluginconfigs) | Archiviate le risposte che avete dato alla finestra di dialogo di configurazione di un [plugin](/docs/it/plugins/overview) | Plugin e skill | User or managed |

724| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Scegliete quali [marketplace](/docs/it/plugins/org#restrict-what-users-can-install) possono far emergere i suggerimenti di installazione dei plugin in `/plugin` | Plugins and skills | Managed |726| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Scegliete quali [marketplace](/docs/it/plugins/org#restrict-what-users-can-install) possono far emergere i suggerimenti di installazione dei plugin in `/plugin` | Plugin e skill | Managed |

725| [`pluginTrustMessage`](#plugintrustmessage) | Aggiungete il vostro testo all'avviso di fiducia del [plugin](/docs/it/plugins/overview) | Plugins and skills | Managed |727| [`pluginTrustMessage`](#plugintrustmessage) | Aggiungete il vostro testo all'[avviso di fiducia](/docs/it/plugins/overview) del plugin | Plugin e skill | Managed |

726| [`policyHelper`](#policyhelper) | Eseguite un eseguibile che calcola le [impostazioni gestite](/docs/it/managed-settings#compute-the-policy-with-a-helper-program) all'avvio | Enterprise and managed settings | Managed |728| [`policyHelper`](#policyhelper) | Eseguite un eseguibile che calcola le [impostazioni gestite](/docs/it/managed-settings#compute-the-policy-with-a-helper-program) all'avvio | Impostazioni aziendali e gestite | Managed |

727| [`policyHelper.path`](#policyhelper-path) | Nominate l'[eseguibile helper](/docs/it/managed-settings#compute-the-policy-with-a-helper-program) che Claude Code esegue | Enterprise and managed settings | Managed |729| [`policyHelper.path`](#policyhelper-path) | Nominate l'[eseguibile helper](/docs/it/managed-settings#compute-the-policy-with-a-helper-program) che Claude Code esegue | Impostazioni aziendali e gestite | Managed |

728| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Rieseguite l'[helper](/docs/it/managed-settings#compute-the-policy-with-a-helper-program) in background a intervalli | Enterprise and managed settings | Managed |730| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Rieseguite l'[helper](/docs/it/managed-settings#compute-the-policy-with-a-helper-program) in background a intervalli | Impostazioni aziendali e gestite | Managed |

729| [`policyHelper.timeoutMs`](#policyhelper-timeoutms) | Impostate quanto a lungo Claude Code aspetta l'[helper](/docs/it/managed-settings#compute-the-policy-with-a-helper-program) | Enterprise and managed settings | Managed |731| [`policyHelper.timeoutMs`](#policyhelper-timeoutms) | Impostate quanto a lungo Claude Code aspetta l'[helper](/docs/it/managed-settings#compute-the-policy-with-a-helper-program) | Impostazioni aziendali e gestite | Managed |

730| [`preferredNotifChannel`](#preferrednotifchannel) | Scegliete un [campanello del terminale o una notifica desktop](/docs/it/terminal-config#get-a-terminal-bell-or-notification) per il completamento del compito | Remote, desktop, and notifications | Any file |732| [`preferredNotifChannel`](#preferrednotifchannel) | Scegliete un [campanello del terminale o una notifica desktop](/docs/it/terminal-config#get-a-terminal-bell-or-notification) per il completamento dell'attività | Remoto, desktop e notifiche | Any file |

731| [`prefersReducedMotion`](#prefersreducedmotion) | [Riducete o disattivate](/docs/it/accessibility#accessibility-settings) le animazioni di spinner, shimmer e flash | Interface and terminal | Any file |733| [`prefersReducedMotion`](#prefersreducedmotion) | [Riducete o disattivate](/docs/it/accessibility#accessibility-settings) le animazioni di spinner, shimmer e flash | Interfaccia e terminale | Any file |

732| [`processWrapper`](#processwrapper) | Eseguite i processi in background di Claude Code attraverso un [launcher aziendale](/docs/it/corporate-launcher) su macOS e Linux | Agents, sessions, and worktrees | User or managed |734| [`prependPlugins`](#prependplugins) | Eseguite i [mod](/docs/it/plugins/mods/admin) della vostra organizzazione prima di ogni mod che un utente installa | Plugin e skill | User or managed |

733| [`promptCacheTtl`](#promptcachettl) | Scegliete la [durata della cache del prompt](/docs/it/prompt-caching#cache-lifetime) per la conversazione principale | Model and responses | Any file |735| [`processWrapper`](#processwrapper) | Eseguite i processi in background di Claude Code attraverso un [launcher aziendale](/docs/it/corporate-launcher) su macOS e Linux | Agenti, sessioni e worktrees | User or managed |

734| [`promptSuggestionEnabled`](#promptsuggestionenabled) | Nascondetei [suggerimenti di prompt](/docs/it/interactive-mode#prompt-suggestions) in grigio nella casella di input | Interface and terminal | Any file |736| [`promptCacheTtl`](#promptcachettl) | Scegliete la [durata della cache del prompt](/docs/it/prompt-caching#cache-lifetime) per la conversazione principale | Modello e risposte | Any file |

735| [`prStatusFooterEnabled`](#prstatusfooterenabled) | Disattivate il [badge dello stato di revisione PR](/docs/it/interactive-mode#pr-review-status) del footer del prompt e il controllo della pull request dietro di esso | Global config settings | Global config |737| [`promptSuggestionEnabled`](#promptsuggestionenabled) | Nascondetei [suggerimenti di prompt](/docs/it/interactive-mode#prompt-suggestions) in grigio nella casella di input | Interfaccia e terminale | Any file |

736| [`prUrlTemplate`](#prurltemplate) | Puntate i link PR a uno strumento di revisione del codice interno invece di github.com | Git and attribution | Any file |738| [`prStatusFooterEnabled`](#prstatusfooterenabled) | Disattivate il badge [stato della revisione PR](/docs/it/interactive-mode#pr-review-status) del piè di pagina del prompt e il controllo della pull request dietro di esso | Impostazioni di configurazione globale | Global config |

737| [`remote.defaultEnvironmentId`](#remote-defaultenvironmentid) | Scegliete l'[ambiente cloud](/docs/it/cloud-environments) predefinito per `claude --cloud`; un ID `ccpool_` auto-ospitato è di sola lettura dalle impostazioni utente e gestite e `--settings` | Remote, desktop, and notifications | Any file |739| [`prUrlTemplate`](#prurltemplate) | Puntate i link PR a uno strumento di revisione del codice interno invece di github.com | Git e attribuzione | Any file |

738| [`remoteControlAtStartup`](#remotecontrolatstartup) | Connettetevi a [Remote Control](/docs/it/remote-control#enable-remote-control-for-all-sessions) automaticamente quando una sessione inizia | Remote, desktop, and notifications | Any file |740| [`remote.defaultEnvironmentId`](#remote-defaultenvironmentid) | Scegliete l'[ambiente cloud](/docs/it/cloud-environments) predefinito per `claude --cloud`; un ID `ccpool_` auto-ospitato è di sola lettura dalle impostazioni utente e gestite e `--settings` | Remoto, desktop e notifiche | Any file |

739| [`requiredMaximumVersion`](#requiredmaximumversion) | [Rifiutate di avviare](/docs/it/setup#pin-a-minimum-version) su una versione più recente di quella che la vostra organizzazione consente | Updates and versioning | Managed |741| [`remoteControlAtStartup`](#remotecontrolatstartup) | Connettetevi a [Remote Control](/docs/it/remote-control#enable-remote-control-for-all-sessions) automaticamente quando una sessione inizia | Remoto, desktop e notifiche | Any file |

740| [`requiredMinimumVersion`](#requiredminimumversion) | [Rifiutate di avviare](/docs/it/setup#pin-a-minimum-version) su una versione più vecchia di quella che la vostra organizzazione richiede | Updates and versioning | Managed |742| [`requiredMaximumVersion`](#requiredmaximumversion) | [Rifiutate di avviare](/docs/it/setup#pin-a-minimum-version) su una versione più recente di quella che la vostra organizzazione consente | Aggiornamenti e versioning | Managed |

741| [`respectGitignore`](#respectgitignore) | Mantenete i file ignorati da git fuori dal [selezionatore di file `@`](/docs/it/interactive-mode#quick-commands) | Interface and terminal | Any file |743| [`requiredMinimumVersion`](#requiredminimumversion) | [Rifiutate di avviare](/docs/it/setup#pin-a-minimum-version) su una versione più vecchia di quella che la vostra organizzazione richiede | Aggiornamenti e versioning | Managed |

742| [`respondToBashCommands`](#respondtobashcommands) | Impedite a Claude di rispondere dopo l'esecuzione di un [comando shell `!`](/docs/it/interactive-mode#shell-mode-with-prefix) | Interface and terminal | Any file |744| [`respectGitignore`](#respectgitignore) | Mantenete i file ignorati da git fuori dal [selettore di file `@`](/docs/it/interactive-mode#quick-commands) | Interfaccia e terminale | Any file |

743| [`sandbox`](#sandbox) | [Isolate i comandi Bash](/docs/it/sandboxing) dal vostro filesystem e dalla rete su macOS, Linux e WSL2 | Sandbox settings | Any file |745| [`respondToBashCommands`](#respondtobashcommands) | Impedite a Claude di rispondere dopo l'esecuzione di un [comando shell `!`](/docs/it/interactive-mode#shell-mode-with-prefix) | Interfaccia e terminale | Any file |

744| [`sandbox.allowAppleEvents`](#sandbox-allowappleevents) | Lasciate che i [comandi in sandbox](/docs/it/sandboxing) inviino Apple Events su macOS | Sandbox settings | User or managed |746| [`sandbox`](#sandbox) | [Isolate i comandi Bash](/docs/it/sandboxing) dal vostro filesystem e dalla rete su macOS, Linux e WSL2 | Impostazioni sandbox | Any file |

745| [`sandbox.allowUnsandboxedCommands`](#sandbox-allowunsandboxedcommands) | Lasciate che Claude riprovi un comando bloccato al di fuori della [sandbox](/docs/it/sandboxing#the-unsandboxed-retry-escape-hatch), o vietatelo | Sandbox settings | Any file |747| [`sandbox.allowAppleEvents`](#sandbox-allowappleevents) | Lasciate che i comandi [sandboxed](/docs/it/sandboxing) inviino Apple Events su macOS | Impostazioni sandbox | User or managed |

746| [`sandbox.autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) | Eseguite i [comandi in sandbox](/docs/it/sandboxing#auto-allow-mode) senza un prompt di autorizzazione | Sandbox settings | Any file |748| [`sandbox.allowUnsandboxedCommands`](#sandbox-allowunsandboxedcommands) | Lasciate che Claude riprovi un comando bloccato al di fuori della [sandbox](/docs/it/sandboxing#the-unsandboxed-retry-escape-hatch), o vietatelo | Impostazioni sandbox | Any file |

747| [`sandbox.bwrapPath`](#sandbox-bwrappath) | Puntate la [sandbox](/docs/it/sandboxing) a un binario bubblewrap al di fuori di `PATH` | Sandbox settings | Managed |749| [`sandbox.autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) | Eseguite i comandi [sandboxed](/docs/it/sandboxing#auto-allow-mode) senza un prompt di autorizzazione | Impostazioni sandbox | Any file |

748| [`sandbox.credentials`](#sandbox-credentials) | Nascondeteo mascherate i file e le variabili di credenziale all'interno della [sandbox](/docs/it/sandboxing#protect-credentials) | Sandbox settings | Any file |750| [`sandbox.bwrapPath`](#sandbox-bwrappath) | Puntate la [sandbox](/docs/it/sandboxing) a un binario bubblewrap al di fuori di `PATH` | Impostazioni sandbox | Managed |

749| [`sandbox.credentials.allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) | Lasciate che le [credenziali mascherate](/docs/it/sandboxing#mask-credentials) raggiungano i servizi HTTP semplici su reti di test affidabili | Sandbox settings | User or managed |751| [`sandbox.credentials`](#sandbox-credentials) | Nascondeteo mascherate i file di credenziali e le variabili all'interno della [sandbox](/docs/it/sandboxing#protect-credentials) | Impostazioni sandbox | Any file |

750| [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs) | Collegate le variabili di chiave AWS con nome personalizzato in una credenziale per la [ri-firma](/docs/it/sandboxing#re-sign-aws-requests) | Sandbox settings | User or managed |752| [`sandbox.credentials.allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) | Lasciate che le [credenziali mascherate](/docs/it/sandboxing#mask-credentials) raggiungano i servizi HTTP semplici su reti di test affidabili | Impostazioni sandbox | User or managed |

751| [`sandbox.credentials.envVars`](#sandbox-credentials-envvars) | Annullate o mascherate una variabile di ambiente all'interno della [sandbox](/docs/it/sandboxing#mask-environment-variables) | Sandbox settings | Any file |753| [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs) | Collegate le variabili di chiave AWS con nome personalizzato in una credenziale per la [ri-firma](/docs/it/sandboxing#re-sign-aws-requests) | Impostazioni sandbox | User or managed |

752| [`sandbox.credentials.files`](#sandbox-credentials-files) | Bloccate o mascherate le letture di un file di credenziale all'interno della [sandbox](/docs/it/sandboxing#mask-credential-files) | Sandbox settings | Any file |754| [`sandbox.credentials.envVars`](#sandbox-credentials-envvars) | Annullate o mascherate una variabile di ambiente all'interno della [sandbox](/docs/it/sandboxing#mask-environment-variables) | Impostazioni sandbox | Any file |

753| [`sandbox.credentials.sigv4`](#sandbox-credentials-sigv4) | Scegliete se le richieste AWS [SigV4A](/docs/it/sandboxing#re-sign-aws-requests) in streaming, prescritte o falliscono o passano | Sandbox settings | User or managed |755| [`sandbox.credentials.files`](#sandbox-credentials-files) | Bloccate o mascherate le letture di un file di credenziali all'interno della [sandbox](/docs/it/sandboxing#mask-credential-files) | Impostazioni sandbox | Any file |

754| [`sandbox.enabled`](#sandbox-enabled) | Attivate il [sandboxing di Bash](/docs/it/sandboxing#get-started) su macOS, Linux e WSL2 | Sandbox settings | Any file |756| [`sandbox.credentials.sigv4`](#sandbox-credentials-sigv4) | Scegliete se lo streaming, presigned, o le [richieste AWS SigV4A](/docs/it/sandboxing#re-sign-aws-requests) falliscono o passano | Impostazioni sandbox | User or managed |

755| [`sandbox.enableWeakerNestedSandbox`](#sandbox-enableweakernestedsandbox) | Eseguite la [sandbox](/docs/it/sandboxing) Linux all'interno di un contenitore senza privilegi | Sandbox settings | Any file |757| [`sandbox.enabled`](#sandbox-enabled) | Attivate il [sandboxing Bash](/docs/it/sandboxing#get-started) su macOS, Linux e WSL2 | Impostazioni sandbox | Any file |

756| [`sandbox.enableWeakerNetworkIsolation`](#sandbox-enableweakernetworkisolation) | Lasciate che `gh`, `gcloud` e `terraform` verifichino TLS dietro un proxy MITM all'interno della [sandbox](/docs/it/sandboxing#troubleshooting) su macOS | Sandbox settings | Any file |758| [`sandbox.enableWeakerNestedSandbox`](#sandbox-enableweakernestedsandbox) | Eseguite la [sandbox](/docs/it/sandboxing) Linux all'interno di un contenitore senza privilegi | Impostazioni sandbox | Any file |

757| [`sandbox.excludedCommands`](#sandbox-excludedcommands) | Nominate i comandi che Claude Code può eseguire al di fuori della [sandbox](/docs/it/sandboxing) | Sandbox settings | Any file |759| [`sandbox.enableWeakerNetworkIsolation`](#sandbox-enableweakernetworkisolation) | Lasciate che `gh`, `gcloud`, e `terraform` verifichino TLS dietro un proxy MITM all'interno della [sandbox](/docs/it/sandboxing#troubleshooting) su macOS | Impostazioni sandbox | Any file |

758| [`sandbox.failIfUnavailable`](#sandbox-failifunavailable) | Rifiutate di avviare quando la [sandbox](/docs/it/sandboxing) non può, invece di eseguire senza sandbox | Sandbox settings | Any file |760| [`sandbox.excludedCommands`](#sandbox-excludedcommands) | Nominate i comandi che Claude Code può eseguire al di fuori della [sandbox](/docs/it/sandboxing) | Impostazioni sandbox | Any file |

759| [`sandbox.filesystem`](#sandbox-filesystem) | Controllate quali percorsi i [comandi in sandbox](/docs/it/sandboxing#filesystem-isolation) possono leggere e scrivere | Sandbox settings | Any file |761| [`sandbox.failIfUnavailable`](#sandbox-failifunavailable) | Rifiutate di avviare quando la [sandbox](/docs/it/sandboxing) non può, invece di eseguire senza sandbox | Impostazioni sandbox | Any file |

760| [`sandbox.filesystem.allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) | Impedite agli sviluppatori di riaprire i [percorsi di lettura che la vostra organizzazione ha bloccato](/docs/it/sandboxing#keep-developers-from-widening-the-policy) | Sandbox settings | Managed |762| [`sandbox.filesystem`](#sandbox-filesystem) | Controllate quali percorsi i comandi [sandboxed](/docs/it/sandboxing#filesystem-isolation) possono leggere e scrivere | Impostazioni sandbox | Any file |

761| [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) | Riaprire la lettura all'interno di una regione che [`denyRead`](#sandbox-filesystem-denyread) blocca | Sandbox settings | Any file |763| [`sandbox.filesystem.allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) | Impedite agli sviluppatori di riaprire i [percorsi di lettura che la vostra organizzazione ha bloccato](/docs/it/sandboxing#keep-developers-from-widening-the-policy) | Impostazioni sandbox | Managed |

762| [`sandbox.filesystem.allowWrite`](#sandbox-filesystem-allowwrite) | Aggiungete i percorsi che i [comandi in sandbox](/docs/it/sandboxing) possono scrivere | Sandbox settings | Any file |764| [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) | Riaprire la lettura all'interno di una regione che [`denyRead`](#sandbox-filesystem-denyread) blocca | Impostazioni sandbox | Any file |

763| [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread) | Bloccate i [comandi in sandbox](/docs/it/sandboxing) dalla lettura di percorsi specifici | Sandbox settings | Any file |765| [`sandbox.filesystem.allowWrite`](#sandbox-filesystem-allowwrite) | Aggiungete i percorsi che i comandi [sandboxed](/docs/it/sandboxing) possono scrivere | Impostazioni sandbox | Any file |

764| [`sandbox.filesystem.denyWrite`](#sandbox-filesystem-denywrite) | Bloccate i [comandi in sandbox](/docs/it/sandboxing) dalla scrittura in percorsi specifici | Sandbox settings | Any file |766| [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread) | Bloccate i comandi [sandboxed](/docs/it/sandboxing) dalla lettura di percorsi specifici | Impostazioni sandbox | Any file |

765| [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled) | [Disattivate l'isolamento del filesystem](/docs/it/sandboxing#disable-filesystem-isolation) mantenendo l'isolamento della rete | Sandbox settings | User or managed |767| [`sandbox.filesystem.denyWrite`](#sandbox-filesystem-denywrite) | Bloccate i comandi [sandboxed](/docs/it/sandboxing) dalla scrittura in percorsi specifici | Impostazioni sandbox | Any file |

766| [`sandbox.ignoreViolations`](#sandbox-ignoreviolations) | Silenziategli avvisi di violazione per i percorsi che un comando dovrebbe sondare | Sandbox settings | Any file |768| [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled) | [Disattivate l'isolamento del filesystem](/docs/it/sandboxing#disable-filesystem-isolation) mantenendo l'isolamento della rete | Impostazioni sandbox | User or managed |

767| [`sandbox.network`](#sandbox-network) | Controllate quali host, porte e socket i [comandi in sandbox](/docs/it/sandboxing#network-isolation) raggiungono | Sandbox settings | Any file |769| [`sandbox.ignoreViolations`](#sandbox-ignoreviolations) | Silenziategli rapporti di violazione per i percorsi che un comando dovrebbe sondare | Impostazioni sandbox | Any file |

768| [`sandbox.network.allowAllUnixSockets`](#sandbox-network-allowallunixsockets) | Lasciate che i [comandi in sandbox](/docs/it/sandboxing) si connettano a ogni socket Unix | Sandbox settings | Any file |770| [`sandbox.network`](#sandbox-network) | Controllate quali host, porte e socket i comandi [sandboxed](/docs/it/sandboxing#network-isolation) raggiungono | Impostazioni sandbox | Any file |

769| [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Pre-autorizzate i domini in modo che i [comandi in sandbox](/docs/it/sandboxing) non chiedano loro | Sandbox settings | Any file |771| [`sandbox.network.allowAllUnixSockets`](#sandbox-network-allowallunixsockets) | Lasciate che i comandi [sandboxed](/docs/it/sandboxing) si connettano a ogni socket Unix | Impostazioni sandbox | Any file |

770| [`sandbox.network.allowLocalBinding`](#sandbox-network-allowlocalbinding) | Lasciate che i [comandi in sandbox](/docs/it/sandboxing) si colleghino alle porte localhost su macOS | Sandbox settings | Any file |772| [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Pre-autorizzate i domini in modo che i comandi [sandboxed](/docs/it/sandboxing) non chiedano | Impostazioni sandbox | Any file |

771| [`sandbox.network.allowMachLookup`](#sandbox-network-allowmachlookup) | Lasciate che gli strumenti macOS [in sandbox](/docs/it/sandboxing) come il simulatore iOS o Playwright raggiungano i loro servizi XPC | Sandbox settings | Any file |773| [`sandbox.network.allowLocalBinding`](#sandbox-network-allowlocalbinding) | Lasciate che i comandi [sandboxed](/docs/it/sandboxing) si colleghino alle porte localhost su macOS | Impostazioni sandbox | Any file |

772| [`sandbox.network.allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) | Bloccate l'elenco di autorizzazione della rete alle [impostazioni gestite](/docs/it/sandboxing#keep-developers-from-widening-the-policy) | Sandbox settings | Managed |774| [`sandbox.network.allowMachLookup`](#sandbox-network-allowmachlookup) | Lasciate che gli strumenti [sandboxed](/docs/it/sandboxing) di macOS come il simulatore iOS o Playwright raggiungano i loro servizi XPC | Impostazioni sandbox | Any file |

773| [`sandbox.network.allowUnixSockets`](#sandbox-network-allowunixsockets) | Elencate i percorsi dei socket Unix che i [comandi in sandbox](/docs/it/sandboxing) possono utilizzare su macOS | Sandbox settings | Any file |775| [`sandbox.network.allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) | Bloccate l'elenco di autorizzazione della rete alle [impostazioni gestite](/docs/it/sandboxing#keep-developers-from-widening-the-policy) | Impostazioni sandbox | Managed |

774| [`sandbox.network.deniedDomains`](#sandbox-network-denieddomains) | Bloccate i domini per i [comandi in sandbox](/docs/it/sandboxing), anche all'interno di un wildcard consentito | Sandbox settings | Any file |776| [`sandbox.network.allowUnixSockets`](#sandbox-network-allowunixsockets) | Elencate i percorsi dei socket Unix che i comandi [sandboxed](/docs/it/sandboxing) possono utilizzare su macOS | Impostazioni sandbox | Any file |

775| [`sandbox.network.httpProxyPort`](#sandbox-network-httpproxyport) | Instradateil traffico HTTP della [sandbox](/docs/it/sandboxing#custom-proxy-configuration) attraverso il vostro proxy | Sandbox settings | Any file |777| [`sandbox.network.deniedDomains`](#sandbox-network-denieddomains) | Bloccate i domini per i comandi [sandboxed](/docs/it/sandboxing), anche all'interno di un wildcard consentito | Impostazioni sandbox | Any file |

776| [`sandbox.network.socksProxyPort`](#sandbox-network-socksproxyport) | Instradateil traffico SOCKS della [sandbox](/docs/it/sandboxing#custom-proxy-configuration) attraverso il vostro proxy | Sandbox settings | Any file |778| [`sandbox.network.httpProxyPort`](#sandbox-network-httpproxyport) | Indirizzate il traffico HTTP della [sandbox](/docs/it/sandboxing#custom-proxy-configuration) attraverso il vostro proxy | Impostazioni sandbox | Any file |

777| [`sandbox.network.strictAllowlist`](#sandbox-network-strictallowlist) | Negate gli host al di fuori dell'[elenco di autorizzazione](/docs/it/sandboxing#network-isolation) invece di chiedere | Sandbox settings | User or managed |779| [`sandbox.network.socksProxyPort`](#sandbox-network-socksproxyport) | Indirizzate il traffico SOCKS della [sandbox](/docs/it/sandboxing#custom-proxy-configuration) attraverso il vostro proxy | Impostazioni sandbox | Any file |

778| [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate) | Fate in modo che la [sandbox](/docs/it/sandboxing#network-isolation) proxy termini TLS in modo che possa leggere le richieste HTTPS | Sandbox settings | User or managed |780| [`sandbox.network.strictAllowlist`](#sandbox-network-strictallowlist) | Negate gli host al di fuori dell'[elenco di autorizzazione](/docs/it/sandboxing#network-isolation) invece di chiedere | Impostazioni sandbox | User or managed |

779| [`sandbox.ripgrep`](#sandbox-ripgrep) | Usate il vostro binario ripgrep all'interno della [sandbox](/docs/it/sandboxing) | Sandbox settings | User or managed |781| [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate) | Fate che la [sandbox](/docs/it/sandboxing#network-isolation) proxy termini TLS in modo che possa leggere le richieste HTTPS | Impostazioni sandbox | User or managed |

780| [`sandbox.socatPath`](#sandbox-socatpath) | Puntate il proxy della [sandbox](/docs/it/sandboxing) a un binario `socat` al di fuori di `PATH` | Sandbox settings | Managed |782| [`sandbox.ripgrep`](#sandbox-ripgrep) | Usate il vostro binario ripgrep all'interno della [sandbox](/docs/it/sandboxing) | Impostazioni sandbox | User or managed |

781| [`showClearContextOnPlanAccept`](#showclearcontextonplanaccept) | Mostrate un'opzione "cancella contesto" sulla [schermata di accettazione del piano](/docs/it/permission-modes#review-and-approve-a-plan) | Interface and terminal | Any file |783| [`sandbox.socatPath`](#sandbox-socatpath) | Puntate il proxy della [sandbox](/docs/it/sandboxing) a un binario `socat` al di fuori di `PATH` | Impostazioni sandbox | Managed |

782| [`showThinkingSummaries`](#showthinkingsummaries) | Vedete i riassunti del [pensiero](/docs/it/model-config#extended-thinking) di Claude invece di uno stub compresso | Model and responses | Any file |784| [`showClearContextOnPlanAccept`](#showclearcontextonplanaccept) | Mostrate un'opzione "cancella contesto" sulla [schermata di accettazione del piano](/docs/it/permission-modes#review-and-approve-a-plan) | Interfaccia e terminale | Any file |

783| [`showTurnDuration`](#showturnduration) | Nascondetela durata "Cooked for" dopo ogni risposta | Interface and terminal | Any file |785| [`showThinkingSummaries`](#showthinkingsummaries) | Vedete i riassunti del [pensiero](/docs/it/model-config#extended-thinking) di Claude invece di uno stub compresso | Modello e risposte | Any file |

784| [`skillListingBudgetFraction`](#skilllistingbudgetfraction) | Riservate più o meno contesto per l'[elenco di skill](/docs/it/skills#skill-descriptions-are-cut-short) | Memory and context | Any file |786| [`showTurnDuration`](#showturnduration) | Nascondetela durata "Cooked for" dopo ogni risposta | Interfaccia e terminale | Any file |

785| [`skillListingMaxDescChars`](#skilllistingmaxdescchars) | Limitate la lunghezza della descrizione di ogni skill nell'[elenco di skill](/docs/it/skills#skill-descriptions-are-cut-short) | Memory and context | Any file |787| [`skillListingBudgetFraction`](#skilllistingbudgetfraction) | Riservate più o meno contesto per l'[elenco di skill](/docs/it/skills#skill-descriptions-are-cut-short) | Memoria e contesto | Any file |

786| [`skillOverrides`](#skilloverrides) | [Nascondeteo comprimete una skill](/docs/it/skills#override-skill-visibility-from-settings) senza modificare il suo SKILL.md | Plugins and skills | Any file |788| [`skillListingMaxDescChars`](#skilllistingmaxdescchars) | Limitate la lunghezza della descrizione di ogni skill nell'[elenco di skill](/docs/it/skills#skill-descriptions-are-cut-short) | Memoria e contesto | Any file |

787| [`skipAutoPermissionPrompt`](#skipautopermissionprompt) | Saltate l'avviso una tantum che Claude Code mostra quando entrate per la prima volta nella [modalità automatica](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) voi stessi piuttosto che attraverso il valore predefinito integrato | Permission settings | User or managed |789| [`skillOverrides`](#skilloverrides) | [Nascondeteo comprimete una skill](/docs/it/skills#override-skill-visibility-from-settings) senza modificare il suo SKILL.md | Plugin e skill | Any file |

788| [`skipDangerousModePermissionPrompt`](#skipdangerousmodepermissionprompt) | Saltate la finestra di dialogo di conferma prima della [modalità bypassPermissions](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | User, local, or managed |790| [`skipAutoPermissionPrompt`](#skipautopermissionprompt) | Saltate l'avviso una tantum che Claude Code mostra quando entrate per la prima volta nella [modalità automatica](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) voi stessi piuttosto che attraverso il valore predefinito integrato | Impostazioni di autorizzazione | User or managed |

789| [`skipWebFetchPreflight`](#skipwebfetchpreflight) | Saltate il [controllo del nome host WebFetch](/docs/it/tools-reference#webfetch-tool-behavior) quando Anthropic non è raggiungibile | Privacy and telemetry | Any file |791| [`skipDangerousModePermissionPrompt`](#skipdangerousmodepermissionprompt) | Saltate la finestra di dialogo di conferma prima della [modalità bypassPermissions](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Impostazioni di autorizzazione | User, local, or managed |

790| [`spellcheck`](#spellcheck) | Sottolineate le parole scritte male nell'input del prompt con un [correttore ortografico](/docs/it/interactive-mode#check-spelling-as-you-type) che installate | Interface and terminal | User or managed |792| [`skipWebFetchPreflight`](#skipwebfetchpreflight) | Saltate il [controllo del nome host WebFetch](/docs/it/tools-reference#webfetch-tool-behavior) quando Anthropic non è raggiungibile | Privacy e telemetria | Any file |

791| [`spinnerTipsEnabled`](#spinnertipsenabled) | Nascondetei suggerimenti nello spinner mentre Claude lavora | Interface and terminal | Any file |793| [`spellcheck`](#spellcheck) | Sottolineate le parole scritte male nell'input del prompt con un [correttore ortografico](/docs/it/interactive-mode#check-spelling-as-you-type) che installate | Interfaccia e terminale | User or managed |

792| [`spinnerTipsOverride`](#spinnertipsoverride) | Aggiungete i vostri suggerimenti alla rotazione dello spinner, o sostituite i suggerimenti integrati | Interface and terminal | Any file |794| [`spinnerTipsEnabled`](#spinnertipsenabled) | Nascondetei suggerimenti nello spinner mentre Claude lavora | Interfaccia e terminale | Any file |

793| [`spinnerVerbs`](#spinnerverbs) | Aggiungete o sostituite i verbi mostrati mentre un turno viene eseguito | Interface and terminal | Any file |795| [`spinnerTipsOverride`](#spinnertipsoverride) | Aggiungete i vostri suggerimenti alla rotazione dello spinner, o sostituite i suggerimenti integrati | Interfaccia e terminale | Any file |

794| [`sshConfigs`](#sshconfigs) | Aggiungete le [connessioni SSH](/docs/it/desktop#pre-configure-ssh-connections-for-your-team) al menu a discesa dell'ambiente Desktop | Remote, desktop, and notifications | User or managed |796| [`spinnerVerbs`](#spinnerverbs) | Aggiungete o sostituite i verbi mostrati mentre un turno viene eseguito | Interfaccia e terminale | Any file |

795| [`sshHostAllowlist`](#sshhostallowlist) | Limitate gli host che le [sessioni SSH Desktop](/docs/it/desktop#restrict-which-ssh-hosts-users-can-connect-to) possono raggiungere | Remote, desktop, and notifications | Managed |797| [`sshConfigs`](#sshconfigs) | Aggiungete le [connessioni SSH](/docs/it/desktop#pre-configure-ssh-connections-for-your-team) al menu a discesa dell'ambiente Desktop | Remoto, desktop e notifiche | User or managed |

796| [`statusLine`](#statusline) | Eseguite il vostro comando per rendere una [riga di stato](/docs/it/statusline) sotto il prompt | Interface and terminal | Any file |798| [`sshHostAllowlist`](#sshhostallowlist) | Limitate gli host che le [sessioni SSH Desktop](/docs/it/desktop#restrict-which-ssh-hosts-users-can-connect-to) possono raggiungere | Remoto, desktop e notifiche | Managed |

797| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Elencate in whitelist le fonti del [marketplace](/docs/it/plugins/overview) che gli utenti possono aggiungere e installare | Plugins and skills | Managed |799| [`statusLine`](#statusline) | Eseguite il vostro comando per rendere una [riga di stato](/docs/it/statusline) sotto il prompt | Interfaccia e terminale | Any file |

798| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Bloccate le [skill](/docs/it/skills), gli [agenti](/docs/it/sub-agents), gli [hook](/docs/it/hooks) e i [server MCP](/docs/it/mcp) dalle fonti utente e progetto | Plugins and skills | Managed |800| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Elenco di autorizzazione delle fonti del [marketplace](/docs/it/plugins/overview) che gli utenti possono aggiungere e installare | Plugin e skill | Managed |

799| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Bloccate gli [agenti](/docs/it/sub-agents) alle fonti plugin e gestite | Plugins and skills | Managed |801| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Bloccate le [skill](/docs/it/skills), gli [agenti](/docs/it/sub-agents), gli [hook](/docs/it/hooks), e i [server MCP](/docs/it/mcp) dalle fonti utente e progetto | Plugin e skill | Managed |

800| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Bloccate gli [hook](/docs/it/hooks) alle fonti plugin e gestite | Plugins and skills | Managed |802| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Bloccate gli [agenti](/docs/it/sub-agents) alle fonti plugin e gestite | Plugin e skill | Managed |

801| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Bloccate i [server MCP](/docs/it/mcp) alle fonti plugin e gestite | Plugins and skills | Managed |803| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Bloccate gli [hook](/docs/it/hooks) alle fonti plugin e gestite | Plugin e skill | Managed |

802| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Bloccate le [skill](/docs/it/skills) alle fonti plugin e gestite | Plugins and skills | Managed |804| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Bloccate i [server MCP](/docs/it/mcp) alle fonti plugin e gestite | Plugin e skill | Managed |

803| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Scegliete la [durata della cache del prompt](/docs/it/prompt-caching#cache-lifetime) per i subagent e altre richieste al di fuori della conversazione principale | Model and responses | Any file |805| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Bloccate le [skill](/docs/it/skills) alle fonti plugin e gestite | Plugin e skill | Managed |

804| [`subagentStatusLine`](#subagentstatusline) | Riscrivetle righe nella [visualizzazione del subagent](/docs/it/sub-agents) con il vostro comando | Interface and terminal | Any file |806| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Scegliete la [durata della cache del prompt](/docs/it/prompt-caching#cache-lifetime) per i subagent e altre richieste al di fuori della conversazione principale | Modello e risposte | Any file |

805| [`switchModelsOnFlag`](#switchmodelsonflag) | Cambiate i modelli automaticamente o fate una pausa quando un [classificatore di sicurezza](/docs/it/model-config#ask-before-switching) contrassegna una richiesta | Model and responses | Any file |807| [`subagentStatusLine`](#subagentstatusline) | Riscrivete le righe nella [visualizzazione dell'attività del subagent](/docs/it/sub-agents) con il vostro comando | Interfaccia e terminale | Any file |

806| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Smettete di caricare i [plugin abilitati sul vostro account claude.ai](/docs/it/plugins/loading#synced-plugins) e smettete di scaricare quelli nuovi | Plugins and skills | User, local, or managed |808| [`switchModelsOnFlag`](#switchmodelsonflag) | Cambiate i modelli automaticamente o fate una pausa quando un [classificatore di sicurezza](/docs/it/model-config#ask-before-switching) contrassegna una richiesta | Modello e risposte | Any file |

807| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Smettete di scaricare le [skill abilitate sul vostro account claude.ai](/docs/it/skills#how-synced-skills-behave) e nascondetequelle già sincronizzate | Plugins and skills | User, local, or managed |809| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Smettete di caricare i [plugin abilitati sul vostro account claude.ai](/docs/it/plugins/loading#synced-plugins) e smettete di scaricare quelli nuovi | Plugin e skill | User, local, or managed |

808| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Disattivate l'evidenziazione della sintassi nei diff e nei blocchi di codice | Interface and terminal | Any file |810| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Smettete di caricare le [skill abilitate sul vostro account claude.ai](/docs/it/skills#how-synced-skills-behave) e smettete di scaricare quelle nuove | Plugin e skill | User, local, or managed |

809| [`taskOutputMaxChars`](#taskoutputmaxchars) | Rimosso nella v2.1.277, insieme allo strumento `TaskOutput` che ha dimensionato | Memory and context | Any file |811| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Disattivate l'evidenziazione della sintassi nei diff e nei blocchi di codice | Interfaccia e terminale | Any file |

810| [`teammateDefaultModel`](#teammatedefaultmodel) | Rimosso nella v2.1.234; vedere [Specificare i compagni di squadra e i modelli](/docs/it/agent-teams#specify-teammates-and-models) per come Claude Code sceglie il modello di un compagno di squadra | Global config settings | Global config |812| [`taskOutputMaxChars`](#taskoutputmaxchars) | Rimosso nella v2.1.277, insieme allo strumento `TaskOutput` che ha dimensionato | Memoria e contesto | Any file |

811| [`teammateMode`](#teammatemode) | Scegliete come i [compagni di squadra del team di agenti](/docs/it/agent-teams#choose-a-display-mode) vengono visualizzati | Agents, sessions, and worktrees | Any file |813| [`teammateDefaultModel`](#teammatedefaultmodel) | Rimosso nella v2.1.234; vedete [Specificate i compagni di squadra e i modelli](/docs/it/agent-teams#specify-teammates-and-models) per come Claude Code sceglie il modello di un compagno di squadra | Impostazioni di configurazione globale | Global config |

812| [`terminalProgressBarEnabled`](#terminalprogressbarenabled) | Nascondetela barra di avanzamento del terminale nei terminali che la supportano | Interface and terminal | Any file |814| [`teammateMode`](#teammatemode) | Scegliete come i [compagni di squadra del team di agenti](/docs/it/agent-teams#choose-a-display-mode) si visualizzano | Agenti, sessioni e worktrees | Any file |

813| [`terminalTitleFromRename`](#terminaltitlefromrename) | Impedite a [`/rename`](/docs/it/sessions#name-your-sessions) e `--name` di modificare il titolo della scheda del terminale | Interface and terminal | Any file |815| [`terminalProgressBarEnabled`](#terminalprogressbarenabled) | Nascondetela barra di avanzamento del terminale nei terminali che la supportano | Interfaccia e terminale | Any file |

814| [`theme`](#theme) | Scegliete il [tema colore](/docs/it/terminal-config#match-the-color-theme) dell'interfaccia, integrato o personalizzato | Interface and terminal | Any file |816| [`terminalTitleFromRename`](#terminaltitlefromrename) | Impedite a [`/rename`](/docs/it/sessions#name-your-sessions) e `--name` di cambiare il titolo della scheda del terminale | Interfaccia e terminale | Any file |

815| [`timeFormat`](#timeformat) | Mostrate i tempi nell'interfaccia su un orologio a 12 ore o 24 ore, in UTC, o con un modello strftime | Interface and terminal | Any file |817| [`theme`](#theme) | Scegliete il [tema di colore](/docs/it/terminal-config#match-the-color-theme) dell'interfaccia, integrato o personalizzato | Interfaccia e terminale | Any file |

816| [`timeZone`](#timezone) | Mostrate i tempi nell'interfaccia in un fuso orario diverso da quello del vostro sistema | Interface and terminal | Any file |818| [`timeFormat`](#timeformat) | Mostrate i tempi nell'interfaccia su un orologio a 12 ore o 24 ore, in UTC, o con un modello strftime | Interfaccia e terminale | Any file |

817| [`tui`](#tui) | Scegliete il renderer [a schermo intero](/docs/it/fullscreen) o terminale classico | Interface and terminal | Any file |819| [`timeZone`](#timezone) | Mostrate i tempi nell'interfaccia in un fuso orario diverso da quello del vostro sistema | Interfaccia e terminale | Any file |

818| [`ultracode`](#ultracode) | Fate in modo che Claude pianifichi un [workflow](/docs/it/workflows#let-claude-decide-with-ultracode) per ogni compito sostanziale senza essere chiesto | Model and responses | Any file |820| [`tui`](#tui) | Scegliete il renderer [fullscreen](/docs/it/fullscreen) o terminale classico | Interfaccia e terminale | Any file |

819| [`useAutoModeDuringPlan`](#useautomodeduringplan) | Lasciate che il classificatore della [modalità automatica](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) riveda i comandi shell nella [modalità plan](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode); impostate `false` per ottenere i prompt invece | Permission settings | User, local, or managed |821| [`ultracode`](#ultracode) | Fate che Claude pianifichi un [workflow](/docs/it/workflows#let-claude-decide-with-ultracode) per ogni attività sostanziale senza essere chiesto | Modello e risposte | Any file |

820| [`verbose`](#verbose) | Mostrate l'[output completo dello strumento](/docs/it/cli-reference#cli-flags) invece di riassunti troncati; `viewMode` ha la precedenza quando entrambi sono impostati | Interface and terminal | Any file |822| [`useAutoModeDuringPlan`](#useautomodeduringplan) | Lasciate che il classificatore della [modalità automatica](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) riveda i comandi shell nella [modalità plan](/docs/it/permission-modes#analyze-before-you-edit-with-plan-mode); impostate `false` per ottenere i prompt invece | Impostazioni di autorizzazione | User, local, or managed |

821| [`viewMode`](#viewmode) | Iniziate ogni sessione nella [visualizzazione predefinita, dettagliata o focalizzata](/docs/it/cli-reference#cli-flags) | Interface and terminal | Any file |823| [`verbose`](#verbose) | Mostrate l'[output completo dello strumento](/docs/it/cli-reference#cli-flags) invece dei riassunti troncati; `viewMode` ha la precedenza quando entrambi sono impostati | Interfaccia e terminale | Any file |

822| [`vimInsertModeRemaps`](#viminsertmoderemaps) | Mappate una [sequenza in modalità INSERT](/docs/it/interactive-mode#remap-insert-mode-key-sequences) a due tasti come `jj` su Escape | Interface and terminal | User or managed |824| [`viewMode`](#viewmode) | Iniziate ogni sessione nella [visualizzazione predefinita, dettagliata o focus](/docs/it/cli-reference#cli-flags) | Interfaccia e terminale | Any file |

823| [`voice`](#voice) | Attivate la [dettatura vocale](/docs/it/voice-dictation) e scegliete la modalità di mantenimento o tocco | Interface and terminal | Any file |825| [`vimInsertModeRemaps`](#viminsertmoderemaps) | Mappate una [sequenza in modalità INSERT](/docs/it/interactive-mode#remap-insert-mode-key-sequences) a due tasti come `jj` su Escape | Interfaccia e terminale | User or managed |

824| [`voiceEnabled`](#voiceenabled) | Attivate la [dettatura vocale](/docs/it/voice-dictation) con il modulo a chiave singola più vecchio | Interface and terminal | Any file |826| [`voice`](#voice) | Attivate la [dettatura vocale](/docs/it/voice-dictation) e scegliete la modalità hold o tap | Interfaccia e terminale | Any file |

825| [`wheelScrollAccelerationEnabled`](#wheelscrollaccelerationenabled) | Disattivate l'[accelerazione della rotella del mouse](/docs/it/fullscreen#mouse-wheel-scrolling) nel rendering a schermo intero | Interface and terminal | Any file |827| [`voiceEnabled`](#voiceenabled) | Attivate la [dettatura vocale](/docs/it/voice-dictation) con la forma a chiave singola più vecchia | Interfaccia e terminale | Any file |

826| [`workflowKeywordTriggerEnabled`](#workflowkeywordtriggerenabled) | Lasciate che la parola `ultracode` in un prompt avvii un [workflow](/docs/it/workflows); impostate `false` per digitarla senza avviarne uno | Hooks and automation | Any file |828| [`wheelScrollAccelerationEnabled`](#wheelscrollaccelerationenabled) | Disattivate l'[accelerazione della rotella del mouse](/docs/it/fullscreen#mouse-wheel-scrolling) nel rendering a schermo intero | Interfaccia e terminale | Any file |

827| [`workflowSizeGuideline`](#workflowsizeguideline) | Impostate il numero di agenti a cui Claude mira nei [workflow dinamici](/docs/it/workflows) | Hooks and automation | Any file |829| [`workflowKeywordTriggerEnabled`](#workflowkeywordtriggerenabled) | Lasciate che la parola `ultracode` in un prompt inizi un [workflow](/docs/it/workflows); impostate `false` per digitarla senza iniziarne uno | Hook e automazione | Any file |

828| [`worktree`](#worktree) | Configurate come Claude Code crea git [worktree](/docs/it/worktrees) | Agents, sessions, and worktrees | Any file |830| [`workflowSizeGuideline`](#workflowsizeguideline) | Impostate il numero di agenti che Claude mira in [workflow dinamici](/docs/it/workflows) | Hook e automazione | Any file |

829| [`worktree.baseRef`](#worktree-baseref) | Ramificate i nuovi [worktree](/docs/it/worktrees) dal ramo predefinito remoto o dal vostro HEAD locale | Agents, sessions, and worktrees | Any file |831| [`worktree`](#worktree) | Configurate come Claude Code crea i [worktrees](/docs/it/worktrees) git | Agenti, sessioni e worktrees | Any file |

830| [`worktree.bgIsolation`](#worktree-bgisolation) | Lasciate che le sessioni in background modifichino la copia di lavoro senza un [worktree](/docs/it/worktrees) | Agents, sessions, and worktrees | Any file |832| [`worktree.baseRef`](#worktree-baseref) | Ramificate i nuovi [worktrees](/docs/it/worktrees) dal ramo predefinito remoto o dal vostro HEAD locale | Agenti, sessioni e worktrees | Any file |

831| [`worktree.sparsePaths`](#worktree-sparsepaths) | Controllate solo le directory di cui avete bisogno in ogni [worktree](/docs/it/worktrees) | Agents, sessions, and worktrees | Any file |833| [`worktree.bgIsolation`](#worktree-bgisolation) | Lasciate che le sessioni in background modifichino la copia di lavoro senza un [worktree](/docs/it/worktrees) | Agenti, sessioni e worktrees | Any file |

832| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Collegate simbolicamente le directory di grandi dimensioni in ogni [worktree](/docs/it/worktrees) invece di duplicarle | Agents, sessions, and worktrees | Any file |834| [`worktree.sparsePaths`](#worktree-sparsepaths) | Controllate solo le directory di cui avete bisogno in ogni [worktree](/docs/it/worktrees) | Agenti, sessioni e worktrees | Any file |

833| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Fate in modo che WSL legga le [impostazioni gestite](/docs/it/managed-settings) dalla catena di criteri di Windows | Enterprise and managed settings | Managed |835| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Collegate simbolicamente le directory di grandi dimensioni in ogni [worktree](/docs/it/worktrees) invece di duplicarle | Agenti, sessioni e worktrees | Any file |

836| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Fate che WSL legga le [impostazioni gestite](/docs/it/managed-settings) dalla catena di criteri di Windows | Impostazioni aziendali e gestite | Managed |

834 837 

835<h2 id="model-and-responses">838<h2 id="model-and-responses">

836 Modello e risposte839 Modello e risposte


3675 `spinnerTipsOverride`3678 `spinnerTipsOverride`

3676</h3>3679</h3>

3677 3680 

3678Aggiungi i tuoi suggerimenti ai [suggerimenti dello spinner](#spinnertipsenabled) che Claude Code mostra mentre Claude lavora, o sostituisci i suggerimenti integrati con i tuoi. Claude Code mette i tuoi suggerimenti nella stessa rotazione di quelli integrati: sceglie il suggerimento che non è stato mostrato più a lungo, salta i suggerimenti ancora nel loro cooldown, e rompe i pareggi per priorità.3681Aggiungi i tuoi suggerimenti ai [suggerimenti dello spinner](#spinnertipsenabled) che Claude Code mostra mentre Claude lavora, o sostituisci i suggerimenti integrati con i tuoi. Claude Code mette i tuoi suggerimenti nella stessa rotazione di quelli integrati.

3679 3682 

3680Se imposti [`spinnerTipsEnabled`](#spinnertipsenabled) su `false`, Claude Code nasconde tutti i suggerimenti, inclusi i tuoi.3683Se imposti [`spinnerTipsEnabled`](#spinnertipsenabled) su `false`, Claude Code nasconde tutti i suggerimenti, inclusi i tuoi.

3681 3684 


3683* **Type**: object con campi `tips`, `tipsFile`, `label`, e `excludeDefault`, ognuno opzionale3686* **Type**: object con campi `tips`, `tipsFile`, `label`, e `excludeDefault`, ognuno opzionale

3684* **Default**: unset, quindi Claude Code mostra solo i suggerimenti integrati3687* **Default**: unset, quindi Claude Code mostra solo i suggerimenti integrati

3685 3688 

3686Gli oggetti suggerimento, `tipsFile`, `label`, e la regola della riga Scope che i file di impostazioni di progetto e locale contribuiscono solo stringhe semplici richiedono Claude Code v2.1.247 o successivo. Nelle versioni precedenti, `excludeDefault` di un file di progetto o locale si applica anche.3689Gli oggetti suggerimento, `tipsFile`, `label`, e la regola della riga Scope che i file di impostazioni di progetto e locale contribuiscono solo stringhe semplici richiedono Claude Code v2.1.247 o successivo.

3687 3690 

3688Ogni voce `tips` è una stringa semplice o un oggetto con questi campi:3691Ogni voce `tips` è una stringa semplice o un oggetto con questi campi:

3689 3692 


4305Quando lo imposti su `true`, Claude Code cambia quali hooks e comandi simili agli hooks vengono caricati:4308Quando lo imposti su `true`, Claude Code cambia quali hooks e comandi simili agli hooks vengono caricati:

4306 4309 

4307* **Gli hooks gestiti e SDK vengono eseguiti**: gli hooks dalle impostazioni gestite e gli hooks che l'[Agent SDK](/docs/it/agent-sdk/overview) registra nel processo4310* **Gli hooks gestiti e SDK vengono eseguiti**: gli hooks dalle impostazioni gestite e gli hooks che l'[Agent SDK](/docs/it/agent-sdk/overview) registra nel processo

4308* **Gli hooks dei plugin forzati vengono eseguiti**: gli hooks dai plugin che le tue impostazioni gestite forzano l'abilitazione tramite [`enabledPlugins`](#enabledplugins). Claude Code corrisponde all'ID completo `plugin@marketplace`, quindi un plugin con lo stesso nome da un marketplace diverso rimane bloccato. Questo ti consente di distribuire hooks verificati tramite un marketplace dell'organizzazione mentre blocchi tutto il resto4311* **Gli hooks dei plugin forzati vengono eseguiti**: gli hooks dai plugin che le tue impostazioni gestite forzano l'abilitazione tramite [`enabledPlugins`](#enabledplugins). Claude Code corrisponde all'ID completo `plugin@marketplace`, quindi un plugin con lo stesso nome da un marketplace diverso rimane bloccato. Questo ti consente di distribuire hooks verificati tramite un marketplace dell'organizzazione mentre blocchi tutto il resto. Un [mod](/docs/it/plugins/mods/overview) in tale plugin viene caricato solo quando [conta come quello della tua organizzazione](/docs/it/plugins/mods/admin#install-your-organizations-mods)

4309* **Tutto il resto è bloccato**: gli hooks dell'utente, del progetto e locali, gli hooks da altri plugin e gli hooks dichiarati nel frontmatter dell'agente4312* **Tutto il resto è bloccato**: gli hooks dell'utente, del progetto e locali, gli hooks e i mod da altri plugin installati e gli hooks dichiarati nel frontmatter dell'agente. I [mod integrati in Claude Code](/docs/it/plugins/mods/overview#mods-built-into-claude-code) continuano a essere eseguiti. Per bloccare solo i mod degli utenti, imposta [`allowManagedModsOnly`](/docs/it/plugins/mods/admin#set-options-on-the-built-in-guard) invece.

4310* **I plugin con origine comando sono disabilitati**: Claude Code disabilita anche i plugin con un'[origine `command`](/docs/it/plugins/marketplace-reference#command-plugin-source), inclusi i plugin forzati abilitati in `enabledPlugins` gestito, a meno che tu non imposti [`disableCommandPluginSources`](#disablecommandpluginsources) su `false` esplicitamente4313* **I plugin con origine comando sono disabilitati**: Claude Code disabilita anche i plugin con un'[origine `command`](/docs/it/plugins/marketplace-reference#command-plugin-source), inclusi i plugin forzati abilitati in `enabledPlugins` gestito, a meno che tu non imposti [`disableCommandPluginSources`](#disablecommandpluginsources) su `false` esplicitamente

4311* **I comandi marketplace `headersHelper` sono bloccati**: Claude Code blocca anche i comandi marketplace [`headersHelper`](/docs/it/plugins/host-marketplace#authenticate-archive-downloads) a meno che [`disableCommandPluginSources`](#disablecommandpluginsources) non sia esplicitamente impostato su `false`, ad eccezione di un marketplace che le impostazioni gestite stesse dichiarano. Richiede Claude Code v2.1.238 o successivo4314* **I comandi marketplace `headersHelper` sono bloccati**: Claude Code blocca anche i comandi marketplace [`headersHelper`](/docs/it/plugins/host-marketplace#authenticate-archive-downloads) a meno che [`disableCommandPluginSources`](#disablecommandpluginsources) non sia esplicitamente impostato su `false`, ad eccezione di un marketplace che le impostazioni gestite stesse dichiarano. Richiede Claude Code v2.1.238 o successivo

4312* **La riga di stato e il suggerimento di file si restringono alle impostazioni gestite**: Claude Code legge [`statusLine`](/docs/it/statusline), [`fileSuggestion`](#filesuggestion) e [`subagentStatusLine`](/docs/it/statusline#subagent-status-lines) solo dalle impostazioni gestite, seguendo i [gate della riga di stato e del suggerimento di file](#status-line-and-file-suggestion-gates)4315* **La riga di stato e il suggerimento di file si restringono alle impostazioni gestite**: Claude Code legge [`statusLine`](/docs/it/statusline), [`fileSuggestion`](#filesuggestion) e [`subagentStatusLine`](/docs/it/statusline#subagent-status-lines) solo dalle impostazioni gestite, seguendo i [gate della riga di stato e del suggerimento di file](#status-line-and-file-suggestion-gates)


5046* **`git`**: qualsiasi URL git, con `url`5049* **`git`**: qualsiasi URL git, con `url`

5047* **`url`**: un URL diretto a un file `marketplace.json`, con `url` e `headers` opzionali e `headersHelper` per l'accesso autenticato. `headersHelper` nomina un comando che stampa intestazioni i cui valori sono troppo brevi per elencare in `headers`, e richiede Claude Code v2.1.238 o successivo5050* **`url`**: un URL diretto a un file `marketplace.json`, con `url` e `headers` opzionali e `headersHelper` per l'accesso autenticato. `headersHelper` nomina un comando che stampa intestazioni i cui valori sono troppo brevi per elencare in `headers`, e richiede Claude Code v2.1.238 o successivo

5048* **`file`**: un percorso locale a un file `marketplace.json`, con `path`5051* **`file`**: un percorso locale a un file `marketplace.json`, con `path`

5049* **`directory`**: un percorso del filesystem locale, con `path`, solo per lo sviluppo5052* **`directory`**: un percorso del filesystem locale, con `path`. Usalo per lo sviluppo, o per un marketplace che la tua organizzazione [distribuisce a ogni macchina](/docs/it/plugins/mods/admin#install-your-organizations-mods).

5050* **`settings`**: un marketplace inline dichiarato direttamente nel file di impostazioni senza un repository ospitato, con `name` e `plugins`5053* **`settings`**: un marketplace inline dichiarato direttamente nel file di impostazioni senza un repository ospitato, con `name` e `plugins`

5051 5054 

5052Il tipo di origine `git` funziona con qualsiasi servizio di hosting git, incluso GitLab self-hosted e Bitbucket. Claude Code clona il repository con la stessa autenticazione che `git clone` userebbe su quella macchina: helper di credenziali configurati o chiavi SSH. Un token del provider come `GITHUB_TOKEN` ha effetto tramite un helper di credenziali che lo legge. Vedi [Repository privati](/docs/it/plugins/host-marketplace#grant-access-to-a-private-marketplace) per i dettagli di configurazione.5055Il tipo di origine `git` funziona con qualsiasi servizio di hosting git, incluso GitLab self-hosted e Bitbucket. Claude Code clona il repository con la stessa autenticazione che `git clone` userebbe su quella macchina: helper di credenziali configurati o chiavi SSH. Un token del provider come `GITHUB_TOKEN` ha effetto tramite un helper di credenziali che lo legge. Vedi [Repository privati](/docs/it/plugins/host-marketplace#grant-access-to-a-private-marketplace) per i dettagli di configurazione.


5133 5136 

5134Claude Code ignora le voci di progetto e locale perché sostituisce questi valori nelle configurazioni di hook, MCP e LSP del plugin, e un repository clonato non deve essere in grado di fornirli. Prima di v2.1.207, anche le impostazioni di progetto e locale venivano lette.5137Claude Code ignora le voci di progetto e locale perché sostituisce questi valori nelle configurazioni di hook, MCP e LSP del plugin, e un repository clonato non deve essere in grado di fornirli. Prima di v2.1.207, anche le impostazioni di progetto e locale venivano lette.

5135 5138 

5139<h3 id="prependplugins">

5140 `prependPlugins`

5141</h3>

5142 

5143Elenca i plugin gestiti i cui [mods](/docs/it/plugins/mods/overview) vengono eseguiti prima di ogni mod che un utente installa, nell'ordine elencato. Quando imposti questa chiave nelle impostazioni gestite, nomina `sec-default@builtin` nell'elenco per mantenere la guardia incorporata. Nelle impostazioni gestite, Claude Code salta un id il cui plugin non conta come della tua organizzazione. Vedi [Installa i mods della tua organizzazione e imposta l'ordine](/docs/it/plugins/mods/admin#install-your-organizations-mods) per quelle condizioni e per come le due chiavi di ordinamento funzionano insieme.

5144 

5145* **Scope**: [`User or managed`](#scopes). Claude Code legge la chiave dalle impostazioni gestite. Legge la chiave dalle impostazioni utente solo su una macchina senza impostazioni gestite, per un utente che non è connesso con un piano Team o Enterprise. Ignora la chiave nelle impostazioni di progetto e locale e in un file `--settings`.

5146* **Type**: array di stringhe `plugin-name@marketplace-name`

5147* **Default**: non impostato

5148 

5149```json managed-settings.json theme={null}

5150{

5151 "extraKnownMarketplaces": {

5152 "acme-tools": {

5153 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }

5154 }

5155 },

5156 "enabledPlugins": { "acme-guard@acme-tools": true },

5157 "prependPlugins": ["acme-guard@acme-tools", "sec-default@builtin"]

5158}

5159```

5160 

5161<h3 id="appendplugins">

5162 `appendPlugins`

5163</h3>

5164 

5165Elenca i plugin gestiti i cui [mods](/docs/it/plugins/mods/overview) vengono eseguiti dopo ogni mod che un utente installa, nell'ordine elencato. Un id elencato sia in `prependPlugins` che in `appendPlugins` viene preposto. Nelle impostazioni gestite, Claude Code salta un id il cui plugin non [conta come della tua organizzazione](/docs/it/plugins/mods/admin#install-your-organizations-mods).

5166 

5167* **Scope**: [`User or managed`](#scopes). Claude Code legge la chiave dalle impostazioni gestite. Legge la chiave dalle impostazioni utente solo su una macchina senza impostazioni gestite, per un utente che non è connesso con un piano Team o Enterprise. Ignora la chiave nelle impostazioni di progetto e locale e in un file `--settings`.

5168* **Type**: array di stringhe `plugin-name@marketplace-name`

5169* **Default**: non impostato

5170 

5171```json managed-settings.json theme={null}

5172{

5173 "extraKnownMarketplaces": {

5174 "acme-tools": {

5175 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }

5176 }

5177 },

5178 "enabledPlugins": { "acme-audit@acme-tools": true },

5179 "appendPlugins": ["acme-audit@acme-tools"]

5180}

5181```

5182 

5136<h2 id="mcp">5183<h2 id="mcp">

5137 MCP5184 MCP

5138</h2>5185</h2>


5653 5700 

5654* **Scope**: [`Any file`](#scopes)5701* **Scope**: [`Any file`](#scopes)

5655* **Type**: Boolean5702* **Type**: Boolean

5656 * `true`: Claude Code disattiva lo strumento Artifact per ogni sessione a cui il file si applica e nessun altro file lo riattiva. Prima della v2.1.242, un file con precedenza più alta potrebbe sovrascrivere un `true` di un file inferiore piuttosto che la chiave agire come un blocco5703 * `true`: Claude Code disattiva lo strumento Artifact per ogni sessione a cui il file si applica e nessun altro file lo riattiva

5657 * `false`: ignorato; per lasciare lo strumento attivo, rimuovi la chiave5704 * `false`: ignorato; per lasciare lo strumento attivo, rimuovi la chiave

5658* **Default**: non impostato, quindi lo strumento segue la [disponibilità](/docs/it/artifacts#availability) del tuo account5705* **Default**: non impostato, quindi lo strumento segue la [disponibilità](/docs/it/artifacts#availability) del tuo account

5659* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_ARTIFACT`](/docs/it/env-vars) impostato su `1` disattiva lo strumento per una sessione5706* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_ARTIFACT`](/docs/it/env-vars) impostato su `1` disattiva lo strumento per una sessione


5740}5787}

5741```5788```

5742 5789 

5743Mentre un'origine diversa dalle tue impostazioni utente mantiene lo strumento disattivato, Claude Code nasconde la riga **Artifacts** in `/config`, perché attivarlo lì non cambierebbe nulla. [Disabilita artefatti](/docs/it/artifacts#disable-artifacts) elenca ogni modo per disattivare lo strumento. Prima della v2.1.242, Claude Code ignorava questa chiave nelle impostazioni di progetto e locali e un file più alto nello [stack di precedenza](/docs/it/settings#settings-precedence) potrebbe riattivare lo strumento su un file inferiore spento.5790Mentre un'origine diversa dalle tue impostazioni utente mantiene lo strumento disattivato, Claude Code nasconde la riga **Artifacts** in `/config`, perché attivarlo lì non cambierebbe nulla. [Disabilita artefatti](/docs/it/artifacts#disable-artifacts) elenca ogni modo per disattivare lo strumento.

5744 5791 

5745<h3 id="inputneedednotifenabled">5792<h3 id="inputneedednotifenabled">

5746 `inputNeededNotifEnabled`5793 `inputNeededNotifEnabled`


5879 5926 

5880Fornisci credenziali tramite script helper e, per le organizzazioni, forza un metodo di accesso o un'organizzazione. Vedi [Autenticazione](/docs/it/authentication).5927Fornisci credenziali tramite script helper e, per le organizzazioni, forza un metodo di accesso o un'organizzazione. Vedi [Autenticazione](/docs/it/authentication).

5881 5928 

5929<h3 id="allowedproviders">

5930 `allowedProviders`

5931</h3>

5932 

5933Elenca i servizi attraverso i quali una macchina può raggiungere Claude, come l'API Anthropic, Amazon Bedrock, o un gateway LLM. Una sessione su un provider non elencato viene rifiutata all'avvio, al login e quando contatta successivamente l'API, quindi anche il passaggio a un provider non elencato durante la sessione viene rifiutato. Il [messaggio di rifiuto](/docs/it/errors#managed-settings-dont-allow-this-api-provider) nomina ciò che ha selezionato il provider e i passaggi per continuare. Richiede Claude Code v2.1.285 o successivo.

5934 

5935* **Scope**: [`Managed`](#scopes). Un elenco che le fonti admin della macchina stessa impostano, le policy MDM e i file di impostazioni gestite, continua ad applicarsi quando le impostazioni gestite dal server forniscono anche uno: una sessione può quindi utilizzare solo i provider su entrambi gli elenchi, quindi un elenco gestito dal server può restringere ciò che la macchina consente ma mai ampliarlo. Quale `allowedProviders` della fonte della macchina conta segue [come Claude Code combina le fonti gestite](/docs/it/managed-settings#how-claude-code-combines-managed-sources). Un elenco fornito solo tramite impostazioni gestite dal server raggiunge solo le sessioni che [recuperano impostazioni gestite dal server](/docs/it/server-managed-settings#platform-availability).

5936* **Type**: array di stringhe, ognuna di:

5937 * `"anthropic"`: l'API Anthropic su host proprio di Anthropic, tramite un accesso claude.ai o Console o una chiave API. Abbinalo a [`forceLoginMethod`](#forceloginmethod) o [`forceLoginOrgUUID`](#forceloginorguuid) per limitare anche l'accesso

5938 * `"bedrock"`: [Amazon Bedrock](/docs/it/amazon-bedrock)

5939 * `"vertex"`: [Google Cloud's Agent Platform](/docs/it/google-vertex-ai), precedentemente Vertex AI

5940 * `"foundry"`: [Microsoft Foundry](/docs/it/microsoft-foundry)

5941 * `"anthropicAws"`: [Claude Platform on AWS](/docs/it/claude-platform-on-aws)

5942 * `"mantle"`: l'endpoint [Mantle](/docs/it/amazon-bedrock#use-the-mantle-endpoint) di Amazon Bedrock. Una sessione che [esegue Mantle insieme all'API Invoke](/docs/it/amazon-bedrock#run-mantle-alongside-the-invoke-api) utilizza entrambi i provider, quindi elenca `"bedrock"` e `"mantle"` insieme per essa

5943 * `"customEndpoint"`: l'API Anthropic o l'API di un provider cloud inviata a un altro host, come un [gateway LLM](/docs/it/llm-gateway) denominato da `ANTHROPIC_BASE_URL`, una variabile `ANTHROPIC_*_BASE_URL` del provider, o un valore `ANTHROPIC_FOUNDRY_RESOURCE` che non è un nome di risorsa nudo. Claude Code lo ammette solo per il valore esatto che un blocco [`env`](#env) gestito fissa

5944 * `"gateway"`: un accesso [Cloud gateway](/docs/it/claude-apps-gateway)

5945* **Default**: non impostato, quindi qualsiasi provider può essere utilizzato

5946 

5947```json managed-settings.json theme={null}

5948{

5949 "allowedProviders": ["anthropic", "bedrock"]

5950}

5951```

5952 

5953La voce di ogni provider cloud significa il servizio proprio di quel provider, inclusi i suoi endpoint regionali, FIPS e privati.

5954 

5955Una voce che Claude Code non riconosce come nome di provider viene eliminata e segnalata, e il resto dell'elenco rimane applicato. Con un elenco vuoto, o uno le cui voci sono tutte non riconosciute, Claude Code rifiuta ogni provider e non si avvia sulla macchina.

5956 

5957<h4 id="endpoints-that-need-a-pin-in-managed-env">

5958 Endpoint che necessitano di un pin in `env` gestito

5959</h4>

5960 

5961Un pin è il valore di una variabile di endpoint impostato in un blocco [`env`](#env) gestito. Quando una sessione invia il traffico di un provider da qualche parte diversa dal servizio proprio di quel provider, Claude Code lo ammette solo se il valore della sessione è lo stesso del pin. Questi endpoint ne hanno bisogno:

5962 

5963* **Sessioni `"customEndpoint"`**: la variabile che nomina l'host, come `ANTHROPIC_BASE_URL`

5964* **Amazon Bedrock**: le variabili `AWS_ENDPOINT_URL`, `AWS_ENDPOINT_URL_BEDROCK` e `AWS_ENDPOINT_URL_BEDROCK_RUNTIME` dell'SDK AWS quando puntano al di fuori del servizio proprio di Bedrock. La sessione rimane sotto `"bedrock"` piuttosto che `"customEndpoint"`

5965* **L'URL di accesso di un gateway**: la sessione rimane sotto `"gateway"`, e [`forceLoginGatewayUrl`](#forcelogingatewayurl) conta anche come il pin

5966 

5967Quali blocchi `env` contano come pin dipende da dove è impostato l'elenco:

5968 

5969* **Una fonte amministratore sulla macchina imposta un elenco**: solo i blocchi `env` delle fonti amministratore della macchina stessa contano

5970* **Solo le impostazioni gestite dal server impostano un elenco**: un valore `env` in quelle impostazioni gestite dal server conta anche

5971 

5972L'elenco non giudica le variabili di credenziale e tenancy di un provider cloud o il percorso di rete, come `HTTPS_PROXY` e le impostazioni di certificato. Impostale per la flotta nel blocco `env` gestito.

5973 

5882<h3 id="apikeyhelper">5974<h3 id="apikeyhelper">

5883 `apiKeyHelper`5975 `apiKeyHelper`

5884</h3>5976</h3>


6401| :- | :- | :- |6493| :- | :- | :- |

6402| Liste | Combina voci da ogni fonte | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) e altre chiavi di lista |6494| Liste | Combina voci da ogni fonte | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) e altre chiavi di lista |

6403| Blocchi | Applica il valore più rigoroso che qualsiasi fonte imposta. Quando nessuna fonte imposta un valore rigoroso, applica un valore più lasco solo dalla fonte con la priorità più alta | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) e altri blocchi booleani o enum |6495| Blocchi | Applica il valore più rigoroso che qualsiasi fonte imposta. Quando nessuna fonte imposta un valore rigoroso, applica un valore più lasco solo dalla fonte con la priorità più alta | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) e altri blocchi booleani o enum |

6404| Liste di restrizioni | Prende la lista intera dalla fonte con la priorità più alta che la imposta, senza aggiungere voci da fonti inferiori. Quando la fonte con la priorità più alta non ne imposta una, la prende intera dalla fonte successiva | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins) e la catena [`fallbackModel`](#fallbackmodel) |6496| Liste di restrizioni | Prende la lista intera dalla fonte con la priorità più alta che la imposta, senza aggiungere voci da fonti inferiori. Quando la fonte con la priorità più alta non ne imposta una, la prende intera dalla fonte successiva | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`allowedProviders`](#allowedproviders), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins) e la catena [`fallbackModel`](#fallbackmodel) |

6405| Valori presi interi | Prende il valore intero dalla fonte con la priorità più alta che lo imposta, senza combinare voci o campi da fonti inferiori. Quando la fonte con la priorità più alta non lo imposta, lo prende intero dalla fonte successiva | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs), [`sandbox.ripgrep`](#sandbox-ripgrep) |6497| Valori presi interi | Prende il valore intero dalla fonte con la priorità più alta che lo imposta, senza combinare voci o campi da fonti inferiori. Quando la fonte con la priorità più alta non lo imposta, lo prende intero dalla fonte successiva | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs), [`sandbox.ripgrep`](#sandbox-ripgrep) |

6406| Server MCP forniti | Combina i nomi dei server da ogni fonte. Quando due fonti impostano lo stesso nome, applica la voce intera della fonte più alta | [`managedMcpServers`](#managedmcpservers) |6498| Server MCP forniti | Combina i nomi dei server da ogni fonte. Quando due fonti impostano lo stesso nome, applica la voce intera della fonte più alta | [`managedMcpServers`](#managedmcpservers) |

6407| Leggi solo dalla fonte con la priorità più alta | Legge la chiave solo dalla fonte con la priorità più alta che contiene una chiave di politica, quindi il valore di una fonte inferiore viene ignorato anche quando la fonte con la priorità più alta non ne imposta uno | [`apiKeyHelper`](#apikeyhelper), [`awsAuthRefresh`](#awsauthrefresh), [`awsCredentialExport`](#awscredentialexport), [`gcpAuthRefresh`](#gcpauthrefresh), [`otelHeadersHelper`](#otelheadershelper), `proxyAuthHelper`, [`forceLoginOrgUUID`](#forceloginorguuid), i valori `"claudeai"` e `"console"` di [`forceLoginMethod`](#forceloginmethod), [`parentSettingsBehavior`](#parentsettingsbehavior), [`modelPicker`](#modelpicker), [`policyHelper`](#policyhelper), [`permissions.defaultMode`](#permissions-defaultmode) |6499| Leggi solo dalla fonte con la priorità più alta | Legge la chiave solo dalla fonte con la priorità più alta che contiene una chiave di politica, quindi il valore di una fonte inferiore viene ignorato anche quando la fonte con la priorità più alta non ne imposta uno | [`apiKeyHelper`](#apikeyhelper), [`awsAuthRefresh`](#awsauthrefresh), [`awsCredentialExport`](#awscredentialexport), [`gcpAuthRefresh`](#gcpauthrefresh), [`otelHeadersHelper`](#otelheadershelper), `proxyAuthHelper`, [`forceLoginOrgUUID`](#forceloginorguuid), i valori `"claudeai"` e `"console"` di [`forceLoginMethod`](#forceloginmethod), [`parentSettingsBehavior`](#parentsettingsbehavior), [`modelPicker`](#modelpicker), [`policyHelper`](#policyhelper), [`permissions.defaultMode`](#permissions-defaultmode) |


6415* **[`policyHelper`](#policyhelper)**: Claude Code lo onora solo quando la fonte con la priorità più alta che contiene una chiave di politica è una politica MDM o un file di impostazioni gestite, quindi con le impostazioni gestite dal server non si applica.6507* **[`policyHelper`](#policyhelper)**: Claude Code lo onora solo quando la fonte con la priorità più alta che contiene una chiave di politica è una politica MDM o un file di impostazioni gestite, quindi con le impostazioni gestite dal server non si applica.

6416* **[`modelOverrides`](#modeloverrides)**: si accoppia con `availableModels`. Claude Code prende `modelOverrides` dalla fonte con la priorità più alta che lo imposta, a meno che una fonte più alta non imposti `availableModels` senza `modelOverrides`. In quel caso ignora `modelOverrides` da ogni fonte.6508* **[`modelOverrides`](#modeloverrides)**: si accoppia con `availableModels`. Claude Code prende `modelOverrides` dalla fonte con la priorità più alta che lo imposta, a meno che una fonte più alta non imposti `availableModels` senza `modelOverrides`. In quel caso ignora `modelOverrides` da ogni fonte.

6417* **[`forceLoginGatewayUrl`](#forcelogingatewayurl), [`gatewayInternalNetworks`](#gatewayinternalnetworks) e il valore `"gateway"` di [`forceLoginMethod`](#forceloginmethod)**: Claude Code non li legge mai dalle impostazioni gestite dal server, quindi un valore lì non si applica né nasconde uno impostato in una politica MDM o un file di impostazioni gestite. Tra le fonti amministrative sulla macchina, solo quella con il rango più alto che contiene una chiave di politica le fornisce, indipendentemente dal fatto che le impostazioni gestite dal server siano presenti o meno.6509* **[`forceLoginGatewayUrl`](#forcelogingatewayurl), [`gatewayInternalNetworks`](#gatewayinternalnetworks) e il valore `"gateway"` di [`forceLoginMethod`](#forceloginmethod)**: Claude Code non li legge mai dalle impostazioni gestite dal server, quindi un valore lì non si applica né nasconde uno impostato in una politica MDM o un file di impostazioni gestite. Tra le fonti amministrative sulla macchina, solo quella con il rango più alto che contiene una chiave di politica le fornisce, indipendentemente dal fatto che le impostazioni gestite dal server siano presenti o meno.

6510* **[`allowedProviders`](#allowedproviders)**: dopo la regola della tabella, l'elenco della macchina stessa limita ancora il risultato, come afferma la nota Scope della sua voce.

6418 6511 

6419Per confermare quali fonti si sono combinate su una macchina, esegui `/status` e [leggi la riga `Setting sources`](/docs/it/managed-settings#read-the-source-in-/status).6512Per confermare quali fonti si sono combinate su una macchina, esegui `/status` e [leggi la riga `Setting sources`](/docs/it/managed-settings#read-the-source-in-/status).

6420 6513 

skills.md +1 −1

Details

740 740 

741* **Directory di lavoro**: Claude Code esegue ogni comando nella directory di lavoro corrente della shell della sessione. Quella directory si sposta quando Claude esegue `cd`. Utilizza [`${CLAUDE_SKILL_DIR}` o `${CLAUDE_PROJECT_DIR}`](#available-string-substitutions) nei percorsi che devono risolversi nello stesso modo ogni volta.741* **Directory di lavoro**: Claude Code esegue ogni comando nella directory di lavoro corrente della shell della sessione. Quella directory si sposta quando Claude esegue `cd`. Utilizza [`${CLAUDE_SKILL_DIR}` o `${CLAUDE_PROJECT_DIR}`](#available-string-substitutions) nei percorsi che devono risolversi nello stesso modo ogni volta.

742* **stderr**: con la shell `bash` predefinita, Claude Code unisce stderr in stdout. Tutto ciò che il comando scrive su stderr appare nel testo iniettato.742* **stderr**: con la shell `bash` predefinita, Claude Code unisce stderr in stdout. Tutto ciò che il comando scrive su stderr appare nel testo iniettato.

743* **Timeout**: ogni comando viene eseguito sotto il [timeout](/docs/it/tools-reference#timeout-and-output-limits) predefinito di 2 minuti dello strumento Bash. Quando lo strumento Bash [sposta un comando scaduto in background](/docs/it/tools-reference#background-commands), la skill viene comunque renderizzata. Il testo iniettato segnala lo spostamento e nomina l'attività in background e il file che raccoglie l'output del comando. Quando il comando è uno che lo strumento Bash non mette mai automaticamente in background, Claude Code lo termina al timeout. Quel fallimento [interrompe l'invocazione](#when-an-injected-command-fails).743* **Timeout**: ogni comando viene eseguito sotto il [timeout](/docs/it/tools-reference#timeout-and-output-limits) predefinito di 2 minuti dello strumento Bash. Quando lo strumento Bash [sposta un comando scaduto in background](/docs/it/tools-reference#foreground-commands-that-move-to-the-background), la skill viene comunque renderizzata. Il testo iniettato segnala lo spostamento e nomina l'attività in background e il file che raccoglie l'output del comando. Quando il comando è uno che lo strumento Bash non mette mai automaticamente in background, Claude Code lo termina al timeout. Quel fallimento [interrompe l'invocazione](#when-an-injected-command-fails).

744* **Dimensione dell'output**: l'output oltre il limite inline dello strumento Bash arriva come percorso file più un'anteprima breve, non testo troncato. [Output limits](/docs/it/tools-reference#output-limits) copre il limite e come regolare ogni confine.744* **Dimensione dell'output**: l'output oltre il limite inline dello strumento Bash arriva come percorso file più un'anteprima breve, non testo troncato. [Output limits](/docs/it/tools-reference#output-limits) copre il limite e come regolare ogni confine.

745 745 

746Lo strumento PowerShell applica lo stesso timeout, backgrounding e comportamento di output-ceiling ai comandi che esegue. Vedi la sezione [PowerShell tool](/docs/it/tools-reference#powershell-tool) per i suoi dettagli.746Lo strumento PowerShell applica lo stesso timeout, backgrounding e comportamento di output-ceiling ai comandi che esegue. Vedi la sezione [PowerShell tool](/docs/it/tools-reference#powershell-tool) per i suoi dettagli.

statusline.md +7 −7

Details

20Ecco un esempio di una [barra di stato multi-riga](#display-multiple-lines) che visualizza le informazioni git sulla prima riga e una barra di contesto codificata a colori sulla seconda.20Ecco un esempio di una [barra di stato multi-riga](#display-multiple-lines) che visualizza le informazioni git sulla prima riga e una barra di contesto codificata a colori sulla seconda.

21 21 

22<Frame>22<Frame>

23 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Una barra di stato multi-riga che mostra il nome del modello, la directory, il ramo git sulla prima riga, e una barra di progresso dell'utilizzo del contesto con costo e durata sulla seconda riga" width="776" height="212" data-path="images/statusline-multiline.png" />23 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-multiline.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=a9d0a2fe8e446d80b1abc46da3f93270" alt="Una barra di stato multi-riga che mostra il nome del modello, la directory, il ramo git sulla prima riga, e una barra di progresso dell'utilizzo del contesto con costo e durata sulla seconda riga" width="1224" height="262" data-path="images/statusline-multiline.png" />

24</Frame>24</Frame>

25 25 

26Questa pagina illustra come [configurare una barra di stato di base](#set-up-a-status-line), spiega [come fluiscono i dati](#how-status-lines-work) da Claude Code al tuo script, elenca [tutti i campi che puoi visualizzare](#available-data), e fornisce [esempi pronti all'uso](#examples) per modelli comuni come lo stato git, il tracciamento dei costi e le barre di progresso.26Questa pagina illustra come [configurare una barra di stato di base](#set-up-a-status-line), spiega [come fluiscono i dati](#how-status-lines-work) da Claude Code al tuo script, elenca [tutti i campi che puoi visualizzare](#available-data), e fornisce [esempi pronti all'uso](#examples) per modelli comuni come lo stato git, il tracciamento dei costi e le barre di progresso.


93Questi esempi usano script Bash, che funzionano su macOS e Linux. Su Windows, vedi [Configurazione Windows](#windows-configuration) per esempi PowerShell e Git Bash.93Questi esempi usano script Bash, che funzionano su macOS e Linux. Su Windows, vedi [Configurazione Windows](#windows-configuration) per esempi PowerShell e Git Bash.

94 94 

95<Frame>95<Frame>

96 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-quickstart.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=696445e59ca0059213250651ad23db6b" alt="Una barra di stato che mostra il nome del modello, la directory e la percentuale di contesto" width="726" height="164" data-path="images/statusline-quickstart.png" />96 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-quickstart.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=88a7eab9c1038dd098ee8e284d96b7e6" alt="Una barra di stato che mostra il nome del modello, la directory e la percentuale di contesto" width="1224" height="224" data-path="images/statusline-quickstart.png" />

97</Frame>97</Frame>

98 98 

99<Steps>99<Steps>


444Visualizza il modello corrente e l'utilizzo della finestra di contesto con una barra di progresso visiva. Ogni script legge JSON da stdin, estrae il campo `used_percentage` e costruisce una barra di 10 caratteri dove i blocchi pieni (▓) rappresentano l'utilizzo:444Visualizza il modello corrente e l'utilizzo della finestra di contesto con una barra di progresso visiva. Ogni script legge JSON da stdin, estrae il campo `used_percentage` e costruisce una barra di 10 caratteri dove i blocchi pieni (▓) rappresentano l'utilizzo:

445 445 

446<Frame>446<Frame>

447 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-context-window-usage.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=15b58ab3602f036939145dde3165c6f7" alt="Una barra di stato che mostra il nome del modello e una barra di progresso con percentuale" width="448" height="152" data-path="images/statusline-context-window-usage.png" />447 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-context-window-usage.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=f3918a549912dc47e90f2b69e68bc847" alt="Una barra di stato che mostra il nome del modello e una barra di progresso con percentuale" width="1224" height="224" data-path="images/statusline-context-window-usage.png" />

448</Frame>448</Frame>

449 449 

450<CodeGroup>450<CodeGroup>


513Mostra il ramo git con indicatori codificati a colori per i file in staging e modificati. Questo script usa [codici di escape ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) per i colori del terminale: `\033[32m` è verde, `\033[33m` è giallo e `\033[0m` ripristina il valore predefinito.513Mostra il ramo git con indicatori codificati a colori per i file in staging e modificati. Questo script usa [codici di escape ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) per i colori del terminale: `\033[32m` è verde, `\033[33m` è giallo e `\033[0m` ripristina il valore predefinito.

514 514 

515<Frame>515<Frame>

516 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-git-context.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e656f34f90d1d9a1d0e220988914345f" alt="Una barra di stato che mostra il modello, la directory, il ramo git e indicatori codificati a colori per i file in staging e modificati" width="742" height="178" data-path="images/statusline-git-context.png" />516 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-git-context.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=f13c190724d9ec7188c17cd2f98b7bf4" alt="Una barra di stato che mostra il modello, la directory, il ramo git e indicatori codificati a colori per i file in staging e modificati" width="1224" height="224" data-path="images/statusline-git-context.png" />

517</Frame>517</Frame>

518 518 

519Ogni script verifica se la directory corrente è un repository git, conta i file in staging e modificati e visualizza indicatori codificati a colori:519Ogni script verifica se la directory corrente è un repository git, conta i file in staging e modificati e visualizza indicatori codificati a colori:


611Ogni script formatta il costo come valuta e converte i millisecondi in minuti e secondi:611Ogni script formatta il costo come valuta e converte i millisecondi in minuti e secondi:

612 612 

613<Frame>613<Frame>

614 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-cost-tracking.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e3444a51fe6f3440c134bd5f1f08ad29" alt="Una barra di stato che mostra il nome del modello, il costo della sessione e la durata" width="588" height="180" data-path="images/statusline-cost-tracking.png" />614 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-cost-tracking.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=925f7024c3b38be0f0eca63564bfb52f" alt="Una barra di stato che mostra il nome del modello, il costo della sessione e la durata" width="1224" height="224" data-path="images/statusline-cost-tracking.png" />

615</Frame>615</Frame>

616 616 

617<CodeGroup>617<CodeGroup>


672Il tuo script può produrre più righe per creare una visualizzazione più ricca.672Il tuo script può produrre più righe per creare una visualizzazione più ricca.

673 673 

674<Frame>674<Frame>

675 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Una barra di stato multi-riga che mostra il nome del modello, la directory, il ramo git sulla prima riga, e una barra di progresso dell'utilizzo del contesto con costo e durata sulla seconda riga" width="776" height="212" data-path="images/statusline-multiline.png" />675 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-multiline.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=a9d0a2fe8e446d80b1abc46da3f93270" alt="Una barra di stato multi-riga che mostra il nome del modello, la directory, il ramo git sulla prima riga, e una barra di progresso dell'utilizzo del contesto con costo e durata sulla seconda riga" width="1224" height="262" data-path="images/statusline-multiline.png" />

676</Frame>676</Frame>

677 677 

678Questo esempio combina diverse tecniche: colori basati su soglie (verde sotto il 70%, giallo 70-89%, rosso 90%+), una barra di progresso e informazioni sul ramo git. Ogni istruzione `print` o `echo` crea una riga separata:678Questo esempio combina diverse tecniche: colori basati su soglie (verde sotto il 70%, giallo 70-89%, rosso 90%+), una barra di progresso e informazioni sul ramo git. Ogni istruzione `print` o `echo` crea una riga separata:


781Questo esempio crea un link cliccabile al tuo repository GitHub. Tieni premuto Cmd (macOS) o Ctrl (Windows/Linux) e fai clic per aprire il link nel tuo browser.781Questo esempio crea un link cliccabile al tuo repository GitHub. Tieni premuto Cmd (macOS) o Ctrl (Windows/Linux) e fai clic per aprire il link nel tuo browser.

782 782 

783<Frame>783<Frame>

784 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-links.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=4bcc6e7deb7cf52f41ab85a219b52661" alt="Una barra di stato che mostra un link cliccabile a un repository GitHub" width="726" height="198" data-path="images/statusline-links.png" />784 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-links.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=4778a144a28cb498c99d5fa018bb374a" alt="Una barra di stato che mostra un link cliccabile a un repository GitHub" width="1224" height="224" data-path="images/statusline-links.png" />

785</Frame>785</Frame>

786 786 

787Ogni script ottiene l'URL del remote git, converte il formato SSH in HTTPS e avvolge il nome del repository nei codici di escape OSC 8. La versione Bash usa `printf '%b'` che interpreta gli escape di backslash in modo più affidabile rispetto a `echo -e` su diverse shell:787Ogni script ottiene l'URL del remote git, converte il formato SSH in HTTPS e avvolge il nome del repository nei codici di escape OSC 8. La versione Bash usa `printf '%b'` che interpreta gli escape di backslash in modo più affidabile rispetto a `echo -e` su diverse shell:

Details

253 253 

254I team di sicurezza possono configurare autorizzazioni gestite per ciò che Claude Code è e non è autorizzato a fare, che non può essere sovrascritto dalla configurazione locale. [Scopri di più](/docs/it/security).254I team di sicurezza possono configurare autorizzazioni gestite per ciò che Claude Code è e non è autorizzato a fare, che non può essere sovrascritto dalla configurazione locale. [Scopri di più](/docs/it/security).

255 255 

256Per limitare quali di queste opzioni di distribuzione una macchina gestita può utilizzare, imposta [`allowedProviders`](/docs/it/settings-reference#allowedproviders) nelle impostazioni gestite. Ad esempio, `["bedrock"]` consente Amazon Bedrock e nient'altro; una flotta Bedrock che abilita anche l'endpoint Mantle elenca `"mantle"` anche. La voce indica quali variabili di endpoint necessitano anche di un pin `env` gestito. Richiede Claude Code v2.1.285 o successivo.

257 

256<h3 id="leverage-mcp-for-integrations">258<h3 id="leverage-mcp-for-integrations">

257 Use MCP for integrations259 Use MCP for integrations

258</h3>260</h3>

tools-reference.md +37 −22

Details

154 Cosa persiste tra i comandi154 Cosa persiste tra i comandi

155</h3>155</h3>

156 156 

157* Quando Claude esegue `cd` nella sessione principale, la nuova directory di lavoro viene mantenuta per i successivi comandi Bash finché rimane all'interno della directory del progetto o di una [directory di lavoro aggiuntiva](/docs/it/permissions#working-directories) che hai aggiunto con `--add-dir`, `/add-dir`, o `additionalDirectories` nelle impostazioni. Questo include i comandi che Claude esegue in risposta ai tuoi messaggi successivi.157* Quando Claude esegue `cd` nella sessione principale, la nuova directory di lavoro viene mantenuta per i comandi Bash successivi finché rimane all'interno della directory del progetto o di una [directory di lavoro aggiuntiva](/docs/it/permissions#working-directories) che hai aggiunto con `--add-dir`, `/add-dir`, o `additionalDirectories` nelle impostazioni. Questo include i comandi che Claude esegue in risposta ai tuoi messaggi successivi.

158 * Le sessioni di subagent non mantengono mai i cambiamenti della directory di lavoro.158 * Le sessioni di subagent non mantengono mai i cambiamenti della directory di lavoro.

159 * Se `cd` finisce al di fuori di quelle directory, Claude Code ripristina la directory del progetto e aggiunge `Shell cwd was reset to <dir>` al risultato dello strumento.159 * Se `cd` finisce al di fuori di quelle directory, Claude Code ripristina la directory del progetto e aggiunge `Shell cwd was reset to <dir>` al risultato dello strumento.

160 * Per disabilitare questo mantenimento in modo che ogni comando Bash inizi nella directory del progetto, imposta `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.160 * Per disabilitare questo mantenimento in modo che ogni comando Bash inizi nella directory del progetto, imposta `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.

161* Le variabili di ambiente non persistono. Un `export` in un comando non sarà disponibile nel successivo.161* Le variabili di ambiente non persistono. Un `export` in un comando non sarà disponibile nel successivo.

162* Gli alias e le funzioni shell definiti nel tuo file di avvio della shell sono disponibili. All'inizio della sessione, Claude Code esegue `~/.zshrc`, `~/.bashrc`, o `~/.profile` a seconda della tua shell, cattura gli alias, le funzioni e le opzioni shell risultanti, e le applica a ogni comando Bash.162* Gli alias e le funzioni shell definiti nel tuo file di avvio della shell sono disponibili. All'inizio della sessione, Claude Code esegue `~/.zshrc`, `~/.bashrc`, o `~/.profile` a seconda della tua shell, acquisisce gli alias, le funzioni e le opzioni della shell risultanti, e le applica a ogni comando Bash.

163 163 

164Attiva il tuo virtualenv o ambiente conda prima di avviare Claude Code. Per fare in modo che le variabili di ambiente persistano tra i comandi Bash, imposta [`CLAUDE_ENV_FILE`](/docs/it/env-vars) su uno script shell prima di avviare Claude Code, oppure usa un [hook SessionStart](/docs/it/hooks#persist-environment-variables) per popolarlo dinamicamente.164Attiva il tuo virtualenv o ambiente conda prima di avviare Claude Code. Per fare in modo che le variabili di ambiente persistano tra i comandi Bash, imposta [`CLAUDE_ENV_FILE`](/docs/it/env-vars) su uno script shell prima di avviare Claude Code, o usa un [hook SessionStart](/docs/it/hooks#persist-environment-variables) per popolarlo dinamicamente.

165 165 

166<h3 id="timeout-and-output-limits">166<h3 id="timeout-and-output-limits">

167 Limiti di timeout e output167 Limiti di timeout e output


174* `BASH_DEFAULT_TIMEOUT_MS` — il valore predefinito quando Claude non passa alcun timeout; due minuti per impostazione predefinita174* `BASH_DEFAULT_TIMEOUT_MS` — il valore predefinito quando Claude non passa alcun timeout; due minuti per impostazione predefinita

175* `BASH_MAX_TIMEOUT_MS` — con il valore predefinito, imposta il limite massimo che limita tutto ciò che Claude richiede: il limite massimo effettivo è il maggiore dei due, dieci minuti per impostazione predefinita175* `BASH_MAX_TIMEOUT_MS` — con il valore predefinito, imposta il limite massimo che limita tutto ciò che Claude richiede: il limite massimo effettivo è il maggiore dei due, dieci minuti per impostazione predefinita

176 176 

177Per un comando che Claude avvia in background, `timeout` imposta invece per quanto tempo il comando può essere eseguito lì, con il valore predefinito e il massimo separati descritti in [Comandi in background](#background-commands). Lo [strumento PowerShell](#powershell-tool) segue le stesse regole di timeout e legge le stesse due variabili.177Per un comando che Claude avvia in background, `timeout` imposta invece per quanto tempo il comando può essere eseguito lì, con il valore predefinito e massimo separato descritto in [Limite di tempo per i comandi in background](#time-limit-for-background-commands). Lo strumento [PowerShell](#powershell-tool) segue le stesse regole di timeout e legge le stesse due variabili.

178 178 

179<h4 id="output-limits">179<h4 id="output-limits">

180 Limiti di output180 Limiti di output

181</h4>181</h4>

182 182 

183Claude Code trasmette l'output di un comando a un file di lavoro mentre il comando viene eseguito; un comando il cui output supera 5 GB viene terminato. Quando il comando termina, Claude Code legge l'output da quel file, fino alla finestra di lettura descritta di seguito. Quanto dell'output raggiunge Claude inline dipende da se Claude Code tratta il risultato come un errore:183Claude Code trasmette l'output di un comando a un file di lavoro mentre il comando viene eseguito; un comando il cui output supera 5 GB viene terminato. Quando il comando termina, Claude Code legge l'output da quel file, fino alla finestra di lettura descritta di seguito. Quanto dell'output raggiunge Claude inline dipende dal fatto che Claude Code tratti il risultato come un errore:

184 184 

185| Risultato | Cosa ottiene Claude |185| Risultato | Cosa ottiene Claude |

186| :- | :- |186| :- | :- |

187| Valido | Inline fino a circa 30.000 caratteri per impostazione predefinita; oltre quello, il percorso di un file salvato nella directory della sessione e troncato oltre 64 MiB, più un'anteprima di fino ai primi 2.000 caratteri, e Claude legge o cerca il file quando ha bisogno del resto |187| Valido | Inline fino a circa 30.000 caratteri per impostazione predefinita; oltre quello, il percorso di un file salvato nella directory della sessione e troncato oltre 64 MiB, più un'anteprima di fino ai primi 2.000 caratteri, e Claude legge o cerca il file quando ha bisogno del resto |

188| Errore | Inline fino a circa 10.000 caratteri; oltre quello, un estratto di testa e coda di quella dimensione ricavato dalla finestra di lettura, senza percorso del file |188| Errore | Inline fino a circa 10.000 caratteri; oltre quello, un estratto di testa e coda di quella dimensione ricavato dalla finestra di lettura, senza percorso del file |

189 189 

190Un comando che esce con codice 1 conta come risultato valido per lo strumento Bash solo quando Claude Code riconosce il codice di uscita 1 come un risultato benigno per quel comando: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, e `[`, più `git diff` e `git grep`. Ogni altro comando che esce con 1 conta come errore, anche quando il codice di uscita 1 è un risultato informativo benigno: nessuna corrispondenza per `pgrep` e `jq -e`, file che differiscono per `cmp`.190Un comando che esce con 1 conta come un risultato valido per lo strumento Bash solo quando Claude Code riconosce il codice di uscita 1 come un risultato benigno per quel comando: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, e `[`, più `git diff` e `git grep`. Ogni altro comando che esce con 1 conta come un errore, anche quando l'uscita 1 è un risultato informativo benigno: nessuna corrispondenza per `pgrep` e `jq -e`, file che differiscono per `cmp`.

191 191 

192[`BASH_MAX_OUTPUT_LENGTH`](/docs/it/env-vars) imposta quanti caratteri di output Claude Code legge dal file di lavoro nel risultato di un comando: 30.000 per impostazione predefinita, fino a un limite massimo fisso di 150.000. Aumentalo quando i tuoi comandi superano regolarmente quella finestra, come una build dettagliata o un log completo della suite di test. Aumentarlo allarga la finestra di lettura, che è anche la finestra da cui viene ricavato l'estratto di un comando non riuscito. Non aumenta i limiti inline: un risultato valido oltre il limite inline arriva come percorso del file più anteprima indipendentemente da questa variabile.192[`BASH_MAX_OUTPUT_LENGTH`](/docs/it/env-vars) imposta quanti caratteri di output Claude Code legge dal file di lavoro nel risultato di un comando: 30.000 per impostazione predefinita, fino a un limite massimo fisso di 150.000. Aumentalo quando i tuoi comandi superano regolarmente quella finestra, come una build dettagliata o un log completo della suite di test. Aumentarlo allarga la finestra di lettura, che è anche la finestra da cui viene ricavato l'estratto di un comando non riuscito. Non aumenta i limiti inline: un risultato valido oltre il limite inline arriva come percorso del file più anteprima indipendentemente da questa variabile.

193 193 

194Per cambiare quanto di un risultato valido Claude riceve inline, imposta invece l'impostazione [`bashOutputMaxChars`](/docs/it/settings-reference#bashoutputmaxchars), fino a 128.000 caratteri. Dimensiona il limite inline e la finestra di lettura insieme, e Claude Code ignora quindi `BASH_MAX_OUTPUT_LENGTH`. Richiede Claude Code v2.1.261 o successivo.194Per modificare quanto di un risultato valido Claude riceve inline, imposta l'impostazione [`bashOutputMaxChars`](/docs/it/settings-reference#bashoutputmaxchars) invece, fino a 128.000 caratteri. Dimensiona il limite inline e la finestra di lettura insieme, e Claude Code ignora quindi `BASH_MAX_OUTPUT_LENGTH`. Richiede Claude Code v2.1.261 o successivo.

195 195 

196<h3 id="background-commands">196<h3 id="background-commands">

197 Comandi in background197 Comandi in background

198</h3>198</h3>

199 199 

200Per processi a lunga esecuzione come server di sviluppo o build di watch, Claude può impostare `run_in_background: true` per avviare il comando come attività in background e continuare a lavorare mentre viene eseguito. Elenca e arresta le attività in background con `/tasks`. Dopo che ne arresti una lì, o da un client connesso come l'app desktop, Claude procede invece di aspettare. Se un subagent ha avviato il comando, è quel subagent che procede.200Per processi a lunga esecuzione come server di sviluppo o build di watch, Claude può impostare `run_in_background: true` per avviare il comando come attività in background e continuare a lavorare mentre viene eseguito. Elenca e arresta le attività in background con `/tasks`. Dopo averlo fermato lì, o da un client connesso come l'app desktop, Claude procede invece di aspettare. Se un subagent ha avviato il comando, è quel subagent che procede.

201 201 

202Un comando che un [subagent in primo piano](/docs/it/sub-agents#run-subagents-in-foreground-or-background) ha avviato si arresta quando la sessione di quel subagent termina, indipendentemente dal fatto che sia terminata, non riuscita o sia stata interrotta. Un comando che la conversazione principale o un subagent in background ha avviato continua a essere eseguito dopo una risposta finale, finché non esce, non viene arrestato o non raggiunge il suo limite di tempo. In modalità non interattiva con il flag `-p`, i [comandi in background terminano poco dopo il risultato finale della sessione](/docs/it/headless#background-tasks-at-exit).202<h4 id="when-a-background-command-stops">

203 Quando un comando in background si ferma

204</h4>

205 

206Un comando che un [subagent in primo piano](/docs/it/sub-agents#run-subagents-in-foreground-or-background) ha avviato si ferma quando la corsa di quel subagent termina, sia che sia finita, non riuscita o interrotta. Un comando che la conversazione principale o un subagent in background ha avviato continua a essere eseguito dopo una risposta finale, finché non esce, non viene fermato, o raggiunge il suo [limite di tempo](#time-limit-for-background-commands). In modalità non interattiva con il flag `-p`, i [comandi in background terminano poco dopo il risultato finale della corsa](/docs/it/headless#background-tasks-at-exit).

207 

208<h4 id="time-limit-for-background-commands">

209 Limite di tempo per i comandi in background

210</h4>

203 211 

204I comandi Bash e PowerShell in background hanno un limite di tempo, contato dal momento in cui il comando entra in background:212I comandi Bash e PowerShell in background hanno un limite di tempo, contato dal momento in cui il comando entra in background:

205 213 

206* Un comando che Claude avvia in background ottiene 30 minuti, o il `timeout` che Claude passa con `run_in_background`, fino a un massimo di 2 ore214* Un comando che Claude avvia in background ottiene 30 minuti, o il `timeout` che Claude passa con `run_in_background`, fino a un massimo di 2 ore

207* Un comando che inizia in primo piano e poi si sposta in background, ad esempio con `Ctrl+B` o al suo timeout, ottiene 30 minuti dallo spostamento215* Un comando che inizia in primo piano e poi si sposta in background, ad esempio con `Ctrl+B` o al suo timeout, ottiene 30 minuti dalla mossa

208 216 

209Due [variabili di ambiente](/docs/it/env-vars) aumentano questi limiti, per i comandi Bash e PowerShell allo stesso modo. Entrambe accettano millisecondi, e nessuna può accorciare un limite: un valore inferiore lascia il valore predefinito di 30 minuti e il massimo di 2 ore in vigore.217Quando un comando in background raggiunge il suo limite di tempo, Claude Code lo ferma e dice a Claude perché, e Claude può avviare di nuovo il comando con un `timeout` più lungo se il lavoro ne ha ancora bisogno. L'avviso di arresto recita `Background command "<description>" was stopped after reaching its background time limit`.

218 

219<h4 id="raise-the-time-limit-for-background-commands">

220 Aumenta il limite di tempo per i comandi in background

221</h4>

222 

223Due [variabili di ambiente](/docs/it/env-vars) aumentano questi limiti, per i comandi Bash e PowerShell allo stesso modo. Entrambe prendono millisecondi, e nessuna può accorciare un limite: un valore inferiore lascia il valore predefinito di 30 minuti e il massimo di 2 ore in vigore.

210 224 

211* Imposta `BASH_DEFAULT_TIMEOUT_MS` sopra `1800000` per sostituire il valore predefinito di 30 minuti con quel valore, sia per i comandi che Claude avvia senza un `timeout` che per i comandi spostati225* Imposta `BASH_DEFAULT_TIMEOUT_MS` sopra `1800000` per sostituire il valore predefinito di 30 minuti con quel valore, sia per i comandi che Claude avvia senza un `timeout` che per i comandi spostati

212* Imposta `BASH_MAX_TIMEOUT_MS` sopra `7200000` per aumentare il massimo di 2 ore a quel valore. Impostare `BASH_DEFAULT_TIMEOUT_MS` sopra `7200000` aumenta il massimo allo stesso modo226* Imposta `BASH_MAX_TIMEOUT_MS` sopra `7200000` per aumentare il massimo di 2 ore a quel valore. Impostare `BASH_DEFAULT_TIMEOUT_MS` sopra `7200000` aumenta il massimo allo stesso modo

213 227 

214Quando un comando in background raggiunge il suo limite di tempo, Claude Code lo arresta e dice a Claude perché, e Claude può avviare di nuovo il comando con un `timeout` più lungo se il lavoro ne ha ancora bisogno. L'avviso di arresto recita `Background command "<description>" was stopped after reaching its background time limit`.228<h4 id="foreground-commands-that-move-to-the-background">

229 Comandi in primo piano che si spostano in background

230</h4>

215 231 

216Quando un comando in primo piano raggiunge il suo timeout senza terminare, Claude Code lo sposta in background invece di arrestarlo, a meno che il comando non inizi con `sleep`. Il limite di tempo di un comando spostato conta dallo spostamento, e il comando spostato di un subagent in primo piano si arresta comunque quando la sessione di quel subagent termina.232Quando un comando in primo piano raggiunge il suo timeout senza terminare, Claude Code lo sposta in background invece di fermarlo, a meno che il comando non inizi con `sleep`. Il [limite di tempo](#time-limit-for-background-commands) di un comando spostato conta dalla mossa, e il comando spostato di un subagent in primo piano si ferma comunque quando la corsa di quel subagent termina.

217 233 

218L'impostazione [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/it/env-vars#variables) disabilita lo spostamento automatico in background insieme al resto della funzionalità di attività in background.234Impostare [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/it/env-vars#variables) disabilita l'auto-backgrounding insieme al resto della funzionalità delle attività in background.

219 235 

220Il risultato di un comando spostato in background indica cosa è successo:236Il risultato di un comando spostato in background afferma cosa è successo:

221 237 

222* Quando il timeout attiva lo spostamento, il risultato lo segnala esplicitamente: `Command did not complete within its 120s timeout and was moved to the background`, con i secondi che corrispondono al timeout che si è applicato, seguito dall'ID dell'attività e dal percorso del file in cui l'output viene scritto.238* Quando il timeout attiva la mossa, il risultato lo segnala esplicitamente: `Command did not complete within its 120s timeout and was moved to the background`, con i secondi che corrispondono al timeout che si è applicato, seguito dall'ID dell'attività e dal percorso del file in cui l'output viene scritto.

223* Un `cd`, `pushd`, `popd`, o `chdir` all'interno di un comando che viene spostato in background non viene mai mantenuto: il risultato afferma `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, quindi Claude non agisce su un cambio di directory che non è avvenuto.239* Un `cd`, `pushd`, `popd`, o `chdir` all'interno di un comando che viene spostato in background non viene mai mantenuto: il risultato afferma `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, quindi Claude non agisce su un cambio di directory che non è avvenuto.

224 240 

225<h3 id="memory-limit-on-linux-and-wsl">241<h3 id="memory-limit-on-linux-and-wsl">

226 Limite di memoria su Linux e WSL242 Limite di memoria su Linux e WSL

227</h3>243</h3>

228 244 

229Su Linux e WSL, imposta [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/it/env-vars#variables) su una dimensione come `4G` per limitare la memoria che i comandi degli strumenti Bash, PowerShell e [Monitor](#monitor-tool) possono utilizzare, in modo che una build fuori controllo non possa prendere la memoria di cui il resto della sessione ha bisogno. Richiede Claude Code v2.1.233 o successivo. Prima della v2.1.246, i comandi dello strumento Monitor venivano eseguiti al di fuori del limite.245Su Linux e WSL, imposta [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/it/env-vars#variables) su una dimensione come `4G` per limitare la memoria che i comandi degli strumenti Bash, PowerShell e [Monitor](#monitor-tool) possono utilizzare, in modo che una build in fuga non possa prendere la memoria di cui il resto della sessione ha bisogno. Richiede Claude Code v2.1.233 o successivo. Prima della v2.1.246, i comandi dello strumento Monitor venivano eseguiti al di fuori del limite.

230 246 

231* Scrivi la dimensione come un numero di byte o con un suffisso `K`, `M`, `G`, o `T`. Imposta `0`, `off`, `false`, `no`, o `none` per disattivare il limite. Claude Code ignora qualsiasi altro valore che non riesce a leggere come dimensione, come `4e9`.247* Scrivi la dimensione come un numero di byte o con un suffisso `K`, `M`, `G`, o `T`. Imposta `0`, `off`, `false`, `no`, o `none` per disattivare il limite. Claude Code ignora qualsiasi altro valore che non riesce a leggere come dimensione, come `4e9`.

232* Claude Code conta tutti i comandi Bash, PowerShell e Monitor di una sessione rispetto al limite unico, non ogni comando per conto proprio.248* Claude Code conta tutti i comandi Bash, PowerShell e Monitor di una sessione rispetto al limite unico, non ogni comando per conto proprio.

233* Claude Code applica il limite con un cgroup di memoria. Quando non riesce a configurare il cgroup, i comandi vengono eseguiti senza limite, e il log di debug da `claude --debug` spiega perché.249* Claude Code applica il limite con un cgroup di memoria. Quando non riesce a configurare il cgroup, i comandi vengono eseguiti senza un limite, e il log di debug da `claude --debug` dice perché.

234* Dopo che il primo processo che Claude Code avvia ha attivato il limite, o lo ha disattivato a causa di un valore off o di una configurazione cgroup non riuscita, Claude Code mantiene quel risultato finché non riavvii. Per applicare un valore modificato o rimosso, o una configurazione corretta, avvia di nuovo `claude`.250* Dopo che il primo processo che Claude Code avvia ha attivato il limite, o lo ha disattivato a causa di un valore off o di una configurazione cgroup non riuscita, Claude Code mantiene quel risultato finché non riavvii. Per applicare un valore modificato o rimosso, o una configurazione corretta, avvia `claude` di nuovo.

235* Quando i comandi non riescono a stare sotto il limite, il kernel termina un comando, e nulla nel suo risultato nomina il limite.251* Quando i comandi non riescono a stare sotto il limite, il kernel uccide un comando, e nulla nel suo risultato nomina il limite.

236 252 

237Claude Code può anche contare altri tipi di processi che avvia rispetto allo stesso limite. Imposta [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/it/env-vars#variables) su un elenco separato da virgole dei tipi da esentare dal limite; Claude Code applica il limite a ogni tipo non nel tuo elenco. Impostalo su `none` per limitare ogni tipo, o su `all-new` per limitare solo i comandi degli strumenti Bash, PowerShell e Monitor. Richiede Claude Code v2.1.246 o successivo. I tipi che puoi nominare:253Claude Code può anche contare altri tipi di processi che avvia rispetto allo stesso limite. Imposta [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/it/env-vars#variables) su un elenco separato da virgole dei tipi da esentare dal limite; Claude Code applica il limite a ogni tipo non nel tuo elenco. Impostalo su `none` per limitare ogni tipo, o su `all-new` per limitare solo i comandi degli strumenti Bash, PowerShell e Monitor. Richiede Claude Code v2.1.246 o successivo. I tipi che puoi nominare:

238 254 


246Qualunque cosa tu elenchi, queste regole si applicano:262Qualunque cosa tu elenchi, queste regole si applicano:

247 263 

248* **Nomi sconosciuti**: Claude Code ignora i nomi che non riconosce264* **Nomi sconosciuti**: Claude Code ignora i nomi che non riconosce

249* **Bash, PowerShell e Monitor**: Claude Code mantiene i comandi degli strumenti Bash, PowerShell e Monitor sotto il limite qualunque cosa tu elenchi

250* **Variabile non impostata**: Claude Code prende l'insieme di altri tipi limitati dalla configurazione che Anthropic fornisce dal server, e quell'insieme può cambiare nel tempo, quindi imposta la variabile quando hai bisogno di un insieme che non cambia265* **Variabile non impostata**: Claude Code prende l'insieme di altri tipi limitati dalla configurazione che Anthropic fornisce dal server, e quell'insieme può cambiare nel tempo, quindi imposta la variabile quando hai bisogno di un insieme che non cambia

251* **Hook con gating delle autorizzazioni**: anche con ogni tipo limitato, Claude Code esclude dal limite un hook che può bloccare o cambiare l'esito di un'azione, e qualsiasi server MCP che tale hook chiama, quindi il kernel che termina un hook con gating delle autorizzazioni non può consentire l'azione che stava bloccando266* **Hook con gating delle autorizzazioni**: anche con ogni tipo limitato, Claude Code esclude dal limite un hook che può bloccare o modificare l'esito di un'azione, e qualsiasi server MCP che tale hook chiama, quindi il kernel che uccide un hook con gating delle autorizzazioni non può consentire l'azione che stava bloccando

252 267 

253<h2 id="edit-tool-behavior">268<h2 id="edit-tool-behavior">

254 Comportamento dello strumento Edit269 Comportamento dello strumento Edit

ultrareview.md +1 −1

Details

66 66 

67In modalità PR, la sandbox remota clona la pull request direttamente dall'host piuttosto che raggruppare il vostro albero di lavoro locale. La modalità PR funziona con repository su `github.com` e su istanze di [GitHub Enterprise Server](/docs/it/github-enterprise-server) che un proprietario ha collegato a Claude Code.67In modalità PR, la sandbox remota clona la pull request direttamente dall'host piuttosto che raggruppare il vostro albero di lavoro locale. La modalità PR funziona con repository su `github.com` e su istanze di [GitHub Enterprise Server](/docs/it/github-enterprise-server) che un proprietario ha collegato a Claude Code.

68 68 

69Per i repository su `github.com`, la sandbox clona con l'account GitHub collegato al vostro account Claude, quindi l'account deve essere in grado di leggere il repository della PR. Claude Code verifica questo prima di creare la sessione cloud, a meno che non abbiate impostato [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/it/env-vars#variables), e rifiuta l'avvio quando [nessun account è collegato](/docs/it/errors#no-github-account-is-connected-to-your-claude-account) o [l'account non può vedere il repository](/docs/it/errors#your-connected-github-account-cant-see-the-repository); il rifiuto nomina la soluzione. Prima della v2.1.248, Claude Code non verificava questo prima dell'avvio.69Per i repository su `github.com`, la sandbox clona con l'account GitHub collegato al vostro account Claude, quindi l'account deve essere in grado di leggere il repository della PR.

70 70 

71Eseguite [`/web-setup`](/docs/it/web-quickstart#connect-from-your-terminal) per collegare il vostro login GitHub CLI al vostro account Claude.71Eseguite [`/web-setup`](/docs/it/web-quickstart#connect-from-your-terminal) per collegare il vostro login GitHub CLI al vostro account Claude.

72 72 

vs-code.md +25 −5

Details

58 58 

59 * **Activity Bar**: fai clic sull'icona Spark nella barra laterale sinistra per aprire l'elenco delle sessioni. Fai clic su qualsiasi sessione per aprirla nella tua [posizione preferita](#extension-settings), o avvia una nuova. Questa icona è sempre visibile nella Activity Bar.59 * **Activity Bar**: fai clic sull'icona Spark nella barra laterale sinistra per aprire l'elenco delle sessioni. Fai clic su qualsiasi sessione per aprirla nella tua [posizione preferita](#extension-settings), o avvia una nuova. Questa icona è sempre visibile nella Activity Bar.

60 * **Command Palette**: `Cmd+Shift+P` (Mac) o `Ctrl+Shift+P` (Windows/Linux), digita "Claude Code" e seleziona un'opzione come "Open in New Tab"60 * **Command Palette**: `Cmd+Shift+P` (Mac) o `Ctrl+Shift+P` (Windows/Linux), digita "Claude Code" e seleziona un'opzione come "Open in New Tab"

61 * **Status Bar**: se hai impostato [`preferredLocation`](#extension-settings) su `sidebar`, o hai aperto Claude con **Claude Code: Open in Side Bar**, fai clic su **✻ Claude Code** nell'angolo in basso a destra della finestra. Questo funziona anche quando nessun file è aperto.61 * **Status Bar**: fai clic su **✻ Claude Code** nell'angolo in basso a destra della finestra. Questo funziona anche quando nessun file è aperto.

62 62 

63 Puoi trascinare il pannello Claude per riposizionarlo ovunque in VS Code. Vedi [Personalizza il tuo flusso di lavoro](#customize-your-workflow) per i dettagli.63 Puoi trascinare il pannello Claude per riposizionarlo ovunque in VS Code. Vedi [Personalizza il tuo flusso di lavoro](#customize-your-workflow) per i dettagli.

64 </Step>64 </Step>


362 362 

363Nella scheda Plugins:363Nella scheda Plugins:

364 364 

365* I **plugin installati** appaiono in alto con interruttori per abilitarli o disabilitarli365* I **plugin installati** appaiono in alto con interruttori per abilitarli o disabilitarli.

366 * Se disattivate un plugin che il file `.claude/settings.json` condiviso del vostro progetto attiva, l'estensione chiede prima: **Disable for me** lo disattiva solo per voi, mentre **Disable for everyone** modifica il file condiviso.

366* I **plugin disponibili** dai vostri marketplace configurati appaiono di seguito367* I **plugin disponibili** dai vostri marketplace configurati appaiono di seguito

367* Cercate per filtrare i plugin per nome o descrizione368* Cercate per filtrare i plugin per nome o descrizione

368* Fate clic su **Install** su qualsiasi plugin disponibile369* Fate clic su **Install** su qualsiasi plugin disponibile


373* **Install for this project**: condiviso con i collaboratori del progetto (ambito progetto)374* **Install for this project**: condiviso con i collaboratori del progetto (ambito progetto)

374* **Install locally**: solo per voi, solo in questo repository (ambito locale)375* **Install locally**: solo per voi, solo in questo repository (ambito locale)

375 376 

377Una volta completata l'installazione, un modulo chiede le [opzioni di configurazione](/docs/it/plugins/components#user-configuration) del plugin che non sono ancora impostate. Per rivedere o modificare le opzioni in seguito, fate clic sull'icona dell'ingranaggio sulla riga del plugin.

378 

379I campi di testo sensibili sono mascherati e un segreto salvato in precedenza mostra **(unchanged)**. Lasciate il campo vuoto per mantenere il valore salvato.

380 

381Dopo aver salvato le modifiche, le sessioni aperte ricaricano i loro plugin e la finestra di dialogo mostra **Restart Claude to apply plugin changes**.

382 

383<h3 id="uninstall-plugins">

384 Disinstallare i plugin

385</h3>

386 

387Ogni riga installata nomina l'[ambito](/docs/it/plugins/install#choose-an-install-scope) in cui è installata. Per disinstallare quell'installazione, fate clic sull'icona del cestino della riga. Un'icona del cestino attenuata contrassegna una riga che non potete disinstallare da questo workspace, come un plugin che la vostra organizzazione gestisce o uno installato per un altro progetto.

388 

389L'estensione chiede prima in due casi:

390 

391* **Un plugin che il file `.claude/settings.json` condiviso del vostro progetto attiva**: scegliete **Disable for me**, che mantiene il plugin installato per i vostri collaboratori, o **Uninstall for everyone**, che rimuove l'installazione del progetto con [`--keep-data`](/docs/it/plugins/cli-reference#what-an-uninstall-deletes-and-keeps), in modo che la directory dei dati salvati del plugin rimanga. Se avete già disattivato il plugin per voi stessi, l'icona del cestino rimuove la vostra installazione senza la domanda.

392* **Altrimenti, l'ultima installazione di un plugin con dati salvati**: scegliete se mantenere o eliminare i dati; **Keep** è l'impostazione predefinita

393 

376<h3 id="share-a-plugin-install-link">394<h3 id="share-a-plugin-install-link">

377 Condividere un collegamento di installazione del plugin395 Condividere un collegamento di installazione del plugin

378</h3>396</h3>


407 425 

408* Inserite un repository GitHub, un URL o un percorso locale per aggiungere un nuovo marketplace426* Inserite un repository GitHub, un URL o un percorso locale per aggiungere un nuovo marketplace

409* Fate clic sull'icona di aggiornamento per aggiornare l'elenco dei plugin di un marketplace427* Fate clic sull'icona di aggiornamento per aggiornare l'elenco dei plugin di un marketplace

410* Fate clic sull'icona del cestino per rimuovere un marketplace428* Fate clic sull'icona del cestino per rimuovere un marketplace. Rimuoverlo [disinstalla ogni plugin che avete installato da esso](/docs/it/plugins/install#manage-marketplaces), quindi una conferma nomina prima quei plugin

429 

430Le modifiche ai plugin che apportate nella finestra di dialogo si applicano immediatamente alle sessioni Claude Code aperte in quella finestra VS Code.

411 431 

412Le modifiche ai plugin che apportate nella finestra di dialogo si applicano immediatamente alle sessioni Claude Code aperte in quella finestra VS Code. Se la sessione da cui avete aperto la finestra di dialogo non riesce a ricaricare i suoi plugin, la finestra di dialogo offre di riprovare o di riavviare Claude in quella sessione.432Se la sessione da cui avete aperto la finestra di dialogo non riesce a ricaricare i suoi plugin, la finestra di dialogo offre di riprovare o di riavviare Claude in quella sessione.

413 433 

414<Note>434<Note>

415 La gestione dei plugin in VS Code utilizza gli stessi comandi CLI dietro le quinte. I plugin e i marketplace che configurate nell'estensione sono disponibili anche nella CLI, e viceversa.435 La gestione dei plugin in VS Code utilizza gli stessi comandi CLI dietro le quinte. I plugin e i marketplace che configurate nell'estensione sono disponibili anche nella CLI, e viceversa.


7904. **Disabilita le estensioni in conflitto**: Disabilita temporaneamente altre estensioni AI (Cline, Continue, ecc.)8104. **Disabilita le estensioni in conflitto**: Disabilita temporaneamente altre estensioni AI (Cline, Continue, ecc.)

7915. **Controlla la fiducia dell'area di lavoro**: L'estensione non funziona in Restricted Mode8115. **Controlla la fiducia dell'area di lavoro**: L'estensione non funziona in Restricted Mode

792 812 

793In alternativa, se hai impostato [`preferredLocation`](#extension-settings) su `sidebar`, o hai aperto Claude con **Claude Code: Open in Side Bar**, fai clic su "✻ Claude Code" nella **Status Bar** (angolo in basso a destra). Questo funziona anche senza un file aperto. Puoi anche usare la **Command Palette** (`Cmd+Shift+P` / `Ctrl+Shift+P`) e digitare "Claude Code".813In alternativa, fai clic su **✻ Claude Code** nella **Status Bar** nell'angolo in basso a destra della finestra. Questo funziona anche senza un file aperto. Puoi anche usare la **Command Palette** (`Cmd+Shift+P` / `Ctrl+Shift+P`) e digitare "Claude Code".

794 814 

795<h3 id="cmd-esc-does-nothing-on-macos">815<h3 id="cmd-esc-does-nothing-on-macos">

796 Cmd+Esc non fa nulla su macOS816 Cmd+Esc non fa nulla su macOS

worktrees.md +1 −1

Details

145* Il worktree appartiene a una sessione `--worktree` che non avete inviato in background, indipendentemente dalla sua età.145* Il worktree appartiene a una sessione `--worktree` che non avete inviato in background, indipendentemente dalla sua età.

146* Avete creato il worktree voi stessi con `git worktree add`, anche se poi avete eseguito una sessione `--worktree <name>` in esso e l'avete inviata in background.146* Avete creato il worktree voi stessi con `git worktree add`, anche se poi avete eseguito una sessione `--worktree <name>` in esso e l'avete inviata in background.

147 147 

148Claude Code scrive un marcatore nei metadati git di ogni worktree che crea con git, e la scansione mantiene qualsiasi worktree senza uno, incluso un worktree che un hook [`WorktreeCreate`](#non-git-version-control) ha creato. Prima della v2.1.246, la scansione non controllava il marcatore, e poteva rimuovere un worktree che avete creato voi stessi quando un vecchio record di sessione in background puntava a esso.148Claude Code scrive un marcatore nei metadati git di ogni worktree che crea con git, e la scansione mantiene qualsiasi worktree senza uno, incluso un worktree che un hook [`WorktreeCreate`](#non-git-version-control) ha creato.

149 149 

150Mentre un agente è in esecuzione, Claude Code mantiene un `git worktree lock` sul suo worktree in modo che la pulizia concorrente non possa rimuoverlo, e rilascia il blocco quando l'agente finisce. Claude Code mantiene lo stesso blocco sul worktree che ha creato per una sessione inviata in background mentre la sessione viene eseguita, quindi la scansione lascia il worktree in posizione e `git worktree remove` rifiuta di rimuoverlo.150Mentre un agente è in esecuzione, Claude Code mantiene un `git worktree lock` sul suo worktree in modo che la pulizia concorrente non possa rimuoverlo, e rilascia il blocco quando l'agente finisce. Claude Code mantiene lo stesso blocco sul worktree che ha creato per una sessione inviata in background mentre la sessione viene eseguita, quindi la scansione lascia il worktree in posizione e `git worktree remove` rifiuta di rimuoverlo.

151 151