SpyBara
Go Premium

Documentation 2026-05-02 18:14 UTC to 2026-05-04 22:58 UTC

99 files changed +47,390 −0. View all changes and history on the product overview
2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

admin-setup.md +132 −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# Configurare Claude Code per la tua organizzazione

6 

7> Una mappa decisionale per gli amministratori che distribuiscono Claude Code, che copre i provider API, le impostazioni gestite, l'applicazione delle policy, il monitoraggio dell'utilizzo e la gestione dei dati.

8 

9Claude Code applica la policy dell'organizzazione attraverso impostazioni gestite che hanno la precedenza sulla configurazione locale dello sviluppatore. Fornisci queste impostazioni dalla console di amministrazione Claude, dal tuo sistema di gestione dei dispositivi mobili (MDM) o da un file su disco. Le impostazioni controllano quali strumenti, comandi, server e destinazioni di rete Claude può raggiungere.

10 

11Questa pagina illustra le decisioni di distribuzione in ordine. Ogni riga si collega alla sezione sottostante e alla pagina di riferimento per quell'area.

12 

13<Note>

14 SSO, il provisioning SCIM e l'assegnazione dei posti sono configurati a livello di account Claude. Consulta la [Guida dell'amministratore aziendale Claude](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide) e l'[assegnazione dei posti](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan) per questi passaggi.

15</Note>

16 

17| Decisione | Cosa stai scegliendo | Riferimento |

18| :-------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

19| [Scegli il tuo provider API](#scegli-il-tuo-provider-api) | Dove Claude Code si autentica e come viene fatturato | [Authentication](/it/authentication), [Bedrock](/it/amazon-bedrock), [Vertex AI](/it/google-vertex-ai), [Foundry](/it/microsoft-foundry) |

20| [Decidi come le impostazioni raggiungono i dispositivi](#decidi-come-le-impostazioni-raggiungono-i-dispositivi) | Come la policy gestita raggiunge le macchine degli sviluppatori | [Server-managed settings](/it/server-managed-settings), [Settings files](/it/settings#settings-files) |

21| [Decidi cosa applicare](#decidi-cosa-applicare) | Quali strumenti, comandi e integrazioni sono consentiti | [Permissions](/it/permissions), [Sandboxing](/it/sandboxing) |

22| [Configura la visibilità dell'utilizzo](#configura-la-visibilità-dellutilizzo) | Come tracciare la spesa e l'adozione | [Analytics](/it/analytics), [Monitoring](/it/monitoring-usage), [Costs](/it/costs) |

23| [Rivedi la gestione dei dati](#rivedi-la-gestione-dei-dati) | Conservazione dei dati e postura di conformità | [Data usage](/it/data-usage), [Security](/it/security) |

24 

25## Scegli il tuo provider API

26 

27Claude Code si connette a Claude attraverso uno dei diversi provider API. La tua scelta influisce sulla fatturazione, l'autenticazione e sulla postura di conformità che erediti.

28 

29| Provider | Scegli questo quando |

30| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- |

31| Claude for Teams / Enterprise | Vuoi Claude Code e claude.ai in un'unica sottoscrizione per posto senza infrastruttura da eseguire. Questa è la raccomandazione predefinita. |

32| Claude Console | Sei API-first o vuoi una fatturazione pay-as-you-go |

33| Amazon Bedrock | Vuoi ereditare i controlli di conformità e la fatturazione AWS esistenti |

34| Google Vertex AI | Vuoi ereditare i controlli di conformità e la fatturazione GCP esistenti |

35| Microsoft Foundry | Vuoi ereditare i controlli di conformità e la fatturazione Azure esistenti |

36 

37Per il confronto completo dei provider che copre l'autenticazione, le regioni e la parità delle funzionalità, consulta la [panoramica della distribuzione aziendale](/it/third-party-integrations). La configurazione dell'autenticazione di ogni provider è in [Authentication](/it/authentication).

38 

39I requisiti di proxy e firewall in [Network configuration](/it/network-config) si applicano indipendentemente dal provider. Se vuoi un singolo endpoint davanti a più provider o un logging centralizzato delle richieste, consulta [LLM gateway](/it/llm-gateway).

40 

41## Decidi come le impostazioni raggiungono i dispositivi

42 

43Le impostazioni gestite definiscono una policy che ha la precedenza sulla configurazione locale dello sviluppatore. Claude Code le cerca in quattro posti e utilizza la prima che trova su un determinato dispositivo.

44 

45| Meccanismo | Consegna | Priorità | Piattaforme |

46| :---------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- | :------------- |

47| Server-managed | Console di amministrazione Claude.ai | Massima | Tutte |

48| plist / registry policy | macOS: `com.anthropic.claudecode` plist<br />Windows: `HKLM\SOFTWARE\Policies\ClaudeCode` | Alta | macOS, Windows |

49| File-based managed | macOS: `/Library/Application Support/ClaudeCode/managed-settings.json`<br />Linux e WSL: `/etc/claude-code/managed-settings.json`<br />Windows: `C:\Program Files\ClaudeCode\managed-settings.json` | Media | Tutte |

50| Windows user registry | `HKCU\SOFTWARE\Policies\ClaudeCode` | Minima | Solo Windows |

51 

52Le impostazioni gestite dal server raggiungono i dispositivi al momento dell'autenticazione e si aggiornano ogni ora durante le sessioni attive, senza infrastruttura di endpoint. Richiedono un piano Claude for Teams o Enterprise, quindi le distribuzioni su altri provider hanno bisogno di uno dei meccanismi basati su file o a livello di sistema operativo.

53 

54Se la tua organizzazione mescola provider, configura le [impostazioni gestite dal server](/it/server-managed-settings) per gli utenti di Claude.ai più un [fallback basato su file o plist/registry](/it/settings#settings-files) in modo che gli altri utenti ricevano comunque la policy gestita.

55 

56Le posizioni del registro plist e HKLM funzionano con qualsiasi provider e resistono alle manomissioni perché richiedono privilegi di amministratore per la scrittura. Il registro utente di Windows in HKCU è scrivibile senza elevazione, quindi trattalo come un default di convenienza piuttosto che come un canale di applicazione.

57 

58Per impostazione predefinita WSL legge solo il percorso del file Linux in `/etc/claude-code`. Per estendere la tua policy del registro Windows e `C:\Program Files\ClaudeCode` a WSL sulla stessa macchina, imposta [`wslInheritsWindowsSettings: true`](/it/settings#available-settings) in una di quelle fonti solo amministratore di Windows.

59 

60Qualunque meccanismo tu scelga, i valori gestiti hanno la precedenza sulle impostazioni dell'utente e del progetto. Le impostazioni di array come `permissions.allow` e `permissions.deny` uniscono le voci da tutte le fonti, quindi gli sviluppatori possono estendere gli elenchi gestiti ma non rimuovere da essi.

61 

62Consulta [Server-managed settings](/it/server-managed-settings) e [Settings files and precedence](/it/settings#settings-files).

63 

64## Decidi cosa applicare

65 

66Le impostazioni gestite possono bloccare gli strumenti, l'esecuzione sandbox, limitare i server MCP e le fonti di plugin e controllare quali hook vengono eseguiti. Ogni riga è una superficie di controllo con le chiavi di impostazione che la guidano.

67 

68| Controllo | Cosa fa | Impostazioni chiave |

69| :------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- |

70| [Permission rules](/it/permissions) | Consenti, chiedi o nega strumenti e comandi specifici | `permissions.allow`, `permissions.deny` |

71| [Permission lockdown](/it/permissions#managed-only-settings) | Solo le regole di autorizzazione gestite si applicano; disabilita `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |

72| [Sandboxing](/it/sandboxing) | Isolamento del filesystem e della rete a livello di sistema operativo con allowlist di domini | `sandbox.enabled`, `sandbox.network.allowedDomains` |

73| [Managed policy CLAUDE.md](/it/memory#deploy-organization-wide-claude-md) | Istruzioni a livello di organizzazione caricate in ogni sessione, non possono essere escluse | File nel percorso della policy gestita |

74| [MCP server control](/it/mcp#managed-mcp-configuration) | Limitare quali server MCP gli utenti possono aggiungere o connettere | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly` |

75| [Plugin marketplace control](/it/plugin-marketplaces#managed-marketplace-restrictions) | Limitare quali fonti di marketplace gli utenti possono aggiungere e installare | `strictKnownMarketplaces`, `blockedMarketplaces` |

76| [Hook restrictions](/it/settings#hook-configuration) | Solo gli hook gestiti vengono caricati; limitare gli URL degli hook HTTP | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

77| [Version floor](/it/settings) | Impedire all'aggiornamento automatico di installare al di sotto di un minimo a livello di organizzazione | `minimumVersion` |

78 

79Le regole di autorizzazione e il sandboxing coprono livelli diversi. Negare WebFetch blocca lo strumento fetch di Claude, ma se Bash è consentito, `curl` e `wget` possono comunque raggiungere qualsiasi URL. Il sandboxing chiude questo divario con un allowlist di domini di rete applicato a livello di sistema operativo.

80 

81Per il modello di minaccia che questi controlli difendono, consulta [Security](/it/security).

82 

83## Configura la visibilità dell'utilizzo

84 

85Scegli il monitoraggio in base a ciò che devi segnalare.

86 

87| Capacità | Cosa ottieni | Disponibilità | Da dove iniziare |

88| :------------------ | :--------------------------------------------------------------- | :--------------- | :--------------------------------------- |

89| Usage monitoring | Esportazione OpenTelemetry di sessioni, strumenti e token | Tutti i provider | [Monitoring usage](/it/monitoring-usage) |

90| Analytics dashboard | Metriche per utente, tracciamento dei contributi, leaderboard | Solo Anthropic | [Analytics](/it/analytics) |

91| Cost tracking | Limiti di spesa, limiti di velocità e attribuzione dell'utilizzo | Solo Anthropic | [Costs](/it/costs) |

92 

93I provider cloud espongono la spesa attraverso AWS Cost Explorer, GCP Billing o Azure Cost Management. I piani Claude for Teams e Enterprise includono una dashboard di utilizzo su [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code).

94 

95## Rivedi la gestione dei dati

96 

97Sui piani Team, Enterprise, Claude API e provider cloud, Anthropic non addestra i modelli sul tuo codice o sui tuoi prompt. Il tuo provider API determina la conservazione e la postura di conformità.

98 

99| Argomento | Cosa sapere | Da dove iniziare |

100| :------------------------ | :----------------------------------------------------------------------------------------------------------- | :--------------------------------------------- |

101| Data usage policy | Cosa raccoglie Anthropic, quanto a lungo viene conservato, cosa non viene mai utilizzato per l'addestramento | [Data usage](/it/data-usage) |

102| Zero Data Retention (ZDR) | Nulla archiviato dopo il completamento della richiesta. Disponibile su Claude for Enterprise | [Zero data retention](/it/zero-data-retention) |

103| Security architecture | Modello di rete, crittografia, autenticazione, audit trail | [Security](/it/security) |

104 

105Se hai bisogno di logging di audit a livello di richiesta o di instradare il traffico in base alla sensibilità dei dati, posiziona un [LLM gateway](/it/llm-gateway) tra gli sviluppatori e il tuo provider. Per i requisiti normativi e le certificazioni, consulta [Legal and compliance](/it/legal-and-compliance).

106 

107## Verifica e onboard

108 

109Dopo aver configurato le impostazioni gestite, fai eseguire a uno sviluppatore `/status` all'interno di Claude Code. L'output include una riga che inizia con `Enterprise managed settings` seguita dalla fonte tra parentesi, una di `(remote)`, `(plist)`, `(HKLM)`, `(HKCU)` o `(file)`. Consulta [Verify active settings](/it/settings#verify-active-settings).

110 

111Condividi queste risorse per aiutare gli sviluppatori a iniziare:

112 

113* [Quickstart](/it/quickstart): procedura dettagliata della prima sessione dall'installazione al lavoro con un progetto

114* [Common workflows](/it/common-workflows): modelli per attività quotidiane come revisione del codice, refactoring e debug

115* [Claude 101](https://anthropic.skilljar.com/claude-101) e [Claude Code in Action](https://anthropic.skilljar.com/claude-code-in-action): corsi di Anthropic Academy a ritmo autonomo

116 

117Per i problemi di accesso, indirizza gli sviluppatori alla [risoluzione dei problemi di autenticazione](/it/troubleshoot-install#login-and-authentication). Le correzioni più comuni sono:

118 

119* Esegui `/logout` quindi `/login` per cambiare account

120* Esegui `claude update` se l'opzione di autenticazione aziendale è mancante

121* Riavvia il terminale dopo l'aggiornamento

122 

123Se uno sviluppatore vede "You haven't been added to your organization yet," il suo posto non include l'accesso a Claude Code e deve essere aggiornato nella console di amministrazione.

124 

125## Passaggi successivi

126 

127Con il provider e il meccanismo di consegna scelti, passa alla configurazione dettagliata:

128 

129* [Server-managed settings](/it/server-managed-settings): fornire la policy gestita dalla console di amministrazione Claude

130* [Settings reference](/it/settings): ogni chiave di impostazione, posizione del file e regola di precedenza

131* [Amazon Bedrock](/it/amazon-bedrock), [Google Vertex AI](/it/google-vertex-ai), [Microsoft Foundry](/it/microsoft-foundry): distribuzione specifica del provider

132* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide): SSO, SCIM, gestione dei posti e playbook di rollout

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 le funzionalità di Claude Code nell'SDK

6 

7> Carica le istruzioni del progetto, le skills, gli hooks e altre funzionalità di Claude Code nei tuoi agenti SDK.

8 

9L'Agent SDK è costruito sulla stessa base di Claude Code, il che significa che i tuoi agenti SDK hanno accesso alle stesse funzionalità basate sul filesystem: istruzioni del progetto (`CLAUDE.md` e regole), skills, hooks e altro ancora.

10 

11Quando ometti `settingSources`, `query()` legge le stesse impostazioni del filesystem di Claude Code CLI: impostazioni utente, progetto e locali, file `CLAUDE.md` e skills, agenti e comandi in `.claude/`. Per eseguire senza questi, passa `settingSources: []`, che limita l'agente a ciò che configuri programmaticamente. Le impostazioni dei criteri gestiti e la configurazione globale `~/.claude.json` vengono lette indipendentemente da questa opzione. Vedi [Cosa settingSources non controlla](#what-settingsources-does-not-control).

12 

13Per una panoramica concettuale di ciò che ogni funzionalità fa e quando usarla, vedi [Estendi Claude Code](/it/features-overview).

14 

15## Controlla le impostazioni del filesystem con settingSources

16 

17L'opzione delle fonti di impostazione ([`setting_sources`](/it/agent-sdk/python#claude-agent-options) in Python, [`settingSources`](/it/agent-sdk/typescript#setting-source) in TypeScript) controlla quali impostazioni basate sul filesystem carica l'SDK. Passa un elenco esplicito per acconsentire a fonti specifiche, oppure passa un array vuoto per disabilitare le impostazioni utente, progetto e locali.

18 

19Questo esempio carica sia le impostazioni a livello di utente che a livello di progetto impostando `settingSources` su `["user", "project"]`:

20 

21<CodeGroup>

22 ```python Python theme={null}

23 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage

24 

25 async for message in query(

26 prompt="Help me refactor the auth module",

27 options=ClaudeAgentOptions(

28 # "user" loads from ~/.claude/, "project" loads from ./.claude/ in cwd.

29 # Together they give the agent access to CLAUDE.md, skills, hooks, and

30 # permissions from both locations.

31 setting_sources=["user", "project"],

32 allowed_tools=["Read", "Edit", "Bash"],

33 ),

34 ):

35 if isinstance(message, AssistantMessage):

36 for block in message.content:

37 if hasattr(block, "text"):

38 print(block.text)

39 if isinstance(message, ResultMessage) and message.subtype == "success":

40 print(f"\nResult: {message.result}")

41 ```

42 

43 ```typescript TypeScript theme={null}

44 import { query } from "@anthropic-ai/claude-agent-sdk";

45 

46 for await (const message of query({

47 prompt: "Help me refactor the auth module",

48 options: {

49 // "user" loads from ~/.claude/, "project" loads from ./.claude/ in cwd.

50 // Together they give the agent access to CLAUDE.md, skills, hooks, and

51 // permissions from both locations.

52 settingSources: ["user", "project"],

53 allowedTools: ["Read", "Edit", "Bash"]

54 }

55 })) {

56 if (message.type === "assistant") {

57 for (const block of message.message.content) {

58 if (block.type === "text") console.log(block.text);

59 }

60 }

61 if (message.type === "result" && message.subtype === "success") {

62 console.log(`\nResult: ${message.result}`);

63 }

64 }

65 ```

66</CodeGroup>

67 

68Ogni fonte carica le impostazioni da una posizione specifica, dove `<cwd>` è la directory di lavoro che passi tramite l'opzione `cwd` (o la directory corrente del processo se non impostata). Per la definizione del tipo completo, vedi [`SettingSource`](/it/agent-sdk/typescript#setting-source) (TypeScript) o [`SettingSource`](/it/agent-sdk/python#setting-source) (Python).

69 

70| Fonte | Cosa carica | Posizione |

71| :---------- | :------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------- |

72| `"project"` | CLAUDE.md del progetto, `.claude/rules/*.md`, skills del progetto, hooks del progetto, `settings.json` del progetto | `<cwd>/.claude/` e ogni directory padre fino alla radice del filesystem (fermandosi quando viene trovato un `.claude/` o non ci sono più genitori) |

73| `"user"` | CLAUDE.md dell'utente, `~/.claude/rules/*.md`, skills dell'utente, impostazioni dell'utente | `~/.claude/` |

74| `"local"` | CLAUDE.local.md (gitignored), `.claude/settings.local.json` | `<cwd>/` |

75 

76Omettere `settingSources` equivale a `["user", "project", "local"]`.

77 

78L'opzione `cwd` determina dove l'SDK cerca le impostazioni del progetto. Se né `cwd` né nessuna delle sue directory padre contiene una cartella `.claude/`, le funzionalità a livello di progetto non verranno caricate.

79 

80### Cosa settingSources non controlla

81 

82`settingSources` copre le impostazioni utente, progetto e locali. Alcuni input vengono letti indipendentemente dal suo valore:

83 

84| Input | Comportamento | Per disabilitare |

85| :----------------------------------------------------------- | :---------------------------------------------------------- | :---------------------------------------------------------------------------------------------------- |

86| Impostazioni dei criteri gestiti | Sempre caricate quando presenti sull'host | Rimuovi il file delle impostazioni gestite |

87| Configurazione globale `~/.claude.json` | Sempre letta | Riposiziona con `CLAUDE_CONFIG_DIR` in `env` |

88| Memoria automatica in `~/.claude/projects/<project>/memory/` | Caricata per impostazione predefinita nel prompt di sistema | Imposta `autoMemoryEnabled: false` nelle impostazioni, o `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` in `env` |

89 

90<Warning>

91 Non fare affidamento sulle opzioni predefinite di `query()` per l'isolamento multi-tenant. Poiché gli input di cui sopra vengono letti indipendentemente da `settingSources`, un processo SDK può raccogliere la configurazione a livello di host e la memoria per directory. Per le distribuzioni multi-tenant, esegui ogni tenant nel suo proprio filesystem e imposta `settingSources: []` più `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` in `env`. Vedi [Distribuzione sicura](/it/agent-sdk/secure-deployment).

92</Warning>

93 

94## Istruzioni del progetto (CLAUDE.md e regole)

95 

96I file `CLAUDE.md` e i file `.claude/rules/*.md` forniscono al tuo agente un contesto persistente sul tuo progetto: convenzioni di codifica, comandi di compilazione, decisioni architettoniche e istruzioni. Quando `settingSources` include `"project"` (come nell'esempio sopra), l'SDK carica questi file nel contesto all'inizio della sessione. L'agente quindi segue le tue convenzioni di progetto senza che tu le ripeta in ogni prompt.

97 

98### Posizioni di caricamento di CLAUDE.md

99 

100| Livello | Posizione | Quando caricato |

101| :-------------------------- | :--------------------------------------------- | :------------------------------------------------------------------------------------------------------------ |

102| Progetto (root) | `<cwd>/CLAUDE.md` o `<cwd>/.claude/CLAUDE.md` | `settingSources` include `"project"` |

103| Regole del progetto | `<cwd>/.claude/rules/*.md` | `settingSources` include `"project"` |

104| Progetto (directory padre) | File `CLAUDE.md` nelle directory sopra `cwd` | `settingSources` include `"project"`, caricato all'inizio della sessione |

105| Progetto (directory figlie) | File `CLAUDE.md` nelle sottodirectory di `cwd` | `settingSources` include `"project"`, caricato su richiesta quando l'agente legge un file in quel sottoalbero |

106| Locale (gitignored) | `<cwd>/CLAUDE.local.md` | `settingSources` include `"local"` |

107| Utente | `~/.claude/CLAUDE.md` | `settingSources` include `"user"` |

108| Regole dell'utente | `~/.claude/rules/*.md` | `settingSources` include `"user"` |

109 

110Tutti i livelli sono additivi: se esistono sia file `CLAUDE.md` di progetto che di utente, l'agente vede entrambi. Non esiste una regola di precedenza rigida tra i livelli; se le istruzioni entrano in conflitto, il risultato dipende da come Claude le interpreta. Scrivi regole non conflittuali, o dichiara esplicitamente la precedenza nel file più specifico ("Queste istruzioni di progetto sostituiscono qualsiasi impostazione predefinita conflittuale a livello di utente").

111 

112<Tip>

113 Puoi anche iniettare il contesto direttamente tramite `systemPrompt` senza usare file `CLAUDE.md`. Vedi [Modifica i prompt di sistema](/it/agent-sdk/modifying-system-prompts). Usa `CLAUDE.md` quando vuoi che lo stesso contesto sia condiviso tra le sessioni interattive di Claude Code e i tuoi agenti SDK.

114</Tip>

115 

116Per come strutturare e organizzare il contenuto di `CLAUDE.md`, vedi [Gestisci la memoria di Claude](/it/memory).

117 

118## Skills

119 

120Le skills sono file markdown che danno al tuo agente conoscenze specializzate e flussi di lavoro invocabili. A differenza di `CLAUDE.md` (che si carica ogni sessione), le skills si caricano su richiesta. L'agente riceve le descrizioni delle skills all'avvio e carica il contenuto completo quando rilevante.

121 

122Le skills vengono scoperte dal filesystem tramite `settingSources`. Con le opzioni predefinite, le skills di utente e progetto si caricano automaticamente. Lo strumento `Skill` è abilitato per impostazione predefinita quando non specifichi `allowedTools`. Se stai usando un allowlist `allowedTools`, includi `"Skill"` esplicitamente.

123 

124<CodeGroup>

125 ```python Python theme={null}

126 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

127 

128 # Skills in .claude/skills/ are discovered automatically

129 # when settingSources includes "project"

130 async for message in query(

131 prompt="Review this PR using our code review checklist",

132 options=ClaudeAgentOptions(

133 setting_sources=["user", "project"],

134 allowed_tools=["Skill", "Read", "Grep", "Glob"],

135 ),

136 ):

137 if isinstance(message, ResultMessage) and message.subtype == "success":

138 print(message.result)

139 ```

140 

141 ```typescript TypeScript theme={null}

142 import { query } from "@anthropic-ai/claude-agent-sdk";

143 

144 // Skills in .claude/skills/ are discovered automatically

145 // when settingSources includes "project"

146 for await (const message of query({

147 prompt: "Review this PR using our code review checklist",

148 options: {

149 settingSources: ["user", "project"],

150 allowedTools: ["Skill", "Read", "Grep", "Glob"]

151 }

152 })) {

153 if (message.type === "result" && message.subtype === "success") {

154 console.log(message.result);

155 }

156 }

157 ```

158</CodeGroup>

159 

160<Note>

161 Le skills devono essere create come artefatti del filesystem (`.claude/skills/<name>/SKILL.md`). L'SDK non ha un'API programmatica per registrare le skills. Vedi [Agent Skills nell'SDK](/it/agent-sdk/skills) per i dettagli completi.

162</Note>

163 

164Per ulteriori informazioni sulla creazione e l'utilizzo delle skills, vedi [Agent Skills nell'SDK](/it/agent-sdk/skills).

165 

166## Hooks

167 

168L'SDK supporta due modi per definire gli hooks, e vengono eseguiti fianco a fianco:

169 

170* **Filesystem hooks:** comandi shell definiti in `settings.json`, caricati quando `settingSources` include la fonte rilevante. Questi sono gli stessi hooks che configureresti per [sessioni interattive di Claude Code](/it/hooks-guide).

171* **Programmatic hooks:** funzioni di callback passate direttamente a `query()`. Questi vengono eseguiti nel tuo processo di applicazione e possono restituire decisioni strutturate. Vedi [Controlla l'esecuzione con gli hooks](/it/agent-sdk/hooks).

172 

173Entrambi i tipi vengono eseguiti durante lo stesso ciclo di vita degli hooks. Se hai già degli hooks nel file `.claude/settings.json` del tuo progetto e imposti `settingSources: ["project"]`, quegli hooks vengono eseguiti automaticamente nell'SDK senza configurazione aggiuntiva.

174 

175I callback degli hooks ricevono l'input dello strumento e restituiscono un dict di decisione. Restituire `{}` (un dict vuoto) significa consentire allo strumento di procedere. Restituire `{"decision": "block", "reason": "..."}` impedisce l'esecuzione e il motivo viene inviato a Claude come risultato dello strumento. Vedi la [guida degli hooks](/it/agent-sdk/hooks) per la firma completa del callback e i tipi di ritorno.

176 

177<CodeGroup>

178 ```python Python theme={null}

179 from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, ResultMessage

180 

181 

182 # PreToolUse hook callback. Positional args:

183 # input_data: HookInput dict with tool_name, tool_input, hook_event_name

184 # tool_use_id: str | None, the ID of the tool call being intercepted

185 # context: HookContext, carries session metadata

186 async def audit_bash(input_data, tool_use_id, context):

187 command = input_data.get("tool_input", {}).get("command", "")

188 if "rm -rf" in command:

189 return {"decision": "block", "reason": "Destructive command blocked"}

190 return {} # Empty dict: allow the tool to proceed

191 

192 

193 # Filesystem hooks from .claude/settings.json run automatically

194 # when settingSources loads them. You can also add programmatic hooks:

195 async for message in query(

196 prompt="Refactor the auth module",

197 options=ClaudeAgentOptions(

198 setting_sources=["project"], # Loads hooks from .claude/settings.json

199 hooks={

200 "PreToolUse": [

201 HookMatcher(matcher="Bash", hooks=[audit_bash]),

202 ]

203 },

204 ),

205 ):

206 if isinstance(message, ResultMessage) and message.subtype == "success":

207 print(message.result)

208 ```

209 

210 ```typescript TypeScript theme={null}

211 import { query, type HookInput, type HookJSONOutput } from "@anthropic-ai/claude-agent-sdk";

212 

213 // PreToolUse hook callback. HookInput is a discriminated union on

214 // hook_event_name, so narrowing on it gives TypeScript the right

215 // tool_input shape for this event.

216 const auditBash = async (input: HookInput): Promise<HookJSONOutput> => {

217 if (input.hook_event_name !== "PreToolUse") return {};

218 const toolInput = input.tool_input as { command?: string };

219 if (toolInput.command?.includes("rm -rf")) {

220 return { decision: "block", reason: "Destructive command blocked" };

221 }

222 return {}; // Empty object: allow the tool to proceed

223 };

224 

225 // Filesystem hooks from .claude/settings.json run automatically

226 // when settingSources loads them. You can also add programmatic hooks:

227 for await (const message of query({

228 prompt: "Refactor the auth module",

229 options: {

230 settingSources: ["project"], // Loads hooks from .claude/settings.json

231 hooks: {

232 PreToolUse: [{ matcher: "Bash", hooks: [auditBash] }]

233 }

234 }

235 })) {

236 if (message.type === "result" && message.subtype === "success") {

237 console.log(message.result);

238 }

239 }

240 ```

241</CodeGroup>

242 

243### Quando usare quale tipo di hook

244 

245| Tipo di hook | Migliore per |

246| :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

247| **Filesystem** (`settings.json`) | Condividere gli hooks tra le sessioni CLI e SDK. Supporta `"command"` (script shell), `"http"` (POST a un endpoint), `"mcp_tool"` (chiama lo strumento di un server MCP connesso), `"prompt"` (LLM valuta un prompt), e `"agent"` (genera un agente verificatore). Questi si attivano nell'agente principale e in qualsiasi subagente che genera. |

248| **Programmatic** (callback in `query()`) | Logica specifica dell'applicazione; restituzione di decisioni strutturate; integrazione in-process. Limitato alla sessione principale solo. |

249 

250<Note>

251 L'SDK TypeScript supporta eventi hook aggiuntivi rispetto a Python, inclusi `SessionStart`, `SessionEnd`, `TeammateIdle` e `TaskCompleted`. Vedi la [guida degli hooks](/it/agent-sdk/hooks) per la tabella di compatibilità degli eventi completa.

252</Note>

253 

254Per i dettagli completi sugli hooks programmatici, vedi [Controlla l'esecuzione con gli hooks](/it/agent-sdk/hooks). Per la sintassi degli hooks del filesystem, vedi [Hooks](/it/hooks).

255 

256## Scegli la funzionalità giusta

257 

258L'Agent SDK ti dà accesso a diversi modi per estendere il comportamento del tuo agente. Se non sei sicuro di quale usare, questa tabella mappa gli obiettivi comuni all'approccio giusto.

259 

260| Vuoi... | Usa | Superficie SDK |

261| :--------------------------------------------------------------------------------------------------------- | :---------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

262| Impostare le convenzioni del progetto che il tuo agente segue sempre | [CLAUDE.md](/it/memory) | `settingSources: ["project"]` lo carica automaticamente |

263| Dare all'agente materiale di riferimento che carica quando rilevante | [Skills](/it/agent-sdk/skills) | `settingSources` + `allowedTools: ["Skill"]` |

264| Eseguire un flusso di lavoro riutilizzabile (deploy, review, release) | [Skills invocabili dall'utente](/it/agent-sdk/skills) | `settingSources` + `allowedTools: ["Skill"]` |

265| Delegare un sottocompito isolato a un contesto fresco (ricerca, review) | [Subagenti](/it/agent-sdk/subagents) | parametro `agents` + `allowedTools: ["Agent"]` |

266| Coordinare più istanze di Claude Code con elenchi di attività condivisi e messaggistica diretta tra agenti | [Team di agenti](/it/agent-teams) | Non configurato direttamente tramite le opzioni SDK. I team di agenti sono una funzionalità CLI in cui una sessione agisce come il capo del team, coordinando il lavoro tra i compagni di squadra indipendenti |

267| Eseguire logica deterministica sulle chiamate di strumenti (audit, block, transform) | [Hooks](/it/agent-sdk/hooks) | parametro `hooks` con callback, o script shell caricati tramite `settingSources` |

268| Dare a Claude accesso strutturato agli strumenti di un servizio esterno | [MCP](/it/agent-sdk/mcp) | parametro `mcpServers` |

269 

270<Tip>

271 **Subagenti versus team di agenti:** I subagenti sono effimeri e isolati: conversazione fresca, un compito, riepilogo restituito al genitore. I team di agenti coordinano più istanze indipendenti di Claude Code che condividono un elenco di attività e si messaggiano direttamente. I team di agenti sono una funzionalità CLI. Vedi [Cosa ereditano i subagenti](/it/agent-sdk/subagents#what-subagents-inherit) e il [confronto dei team di agenti](/it/agent-teams#compare-with-subagents) per i dettagli.

272</Tip>

273 

274Ogni funzionalità che abiliti aggiunge alla finestra di contesto del tuo agente. Per i costi per funzionalità e come queste funzionalità si stratificano insieme, vedi [Estendi Claude Code](/it/features-overview#understand-context-costs).

275 

276## Risorse correlate

277 

278* [Estendi Claude Code](/it/features-overview): Panoramica concettuale di tutte le funzionalità di estensione, con tabelle di confronto e analisi dei costi di contesto

279* [Skills nell'SDK](/it/agent-sdk/skills): Guida completa all'utilizzo delle skills a livello programmatico

280* [Subagenti](/it/agent-sdk/subagents): Definisci e invoca subagenti per sottocompiti isolati

281* [Hooks](/it/agent-sdk/hooks): Intercetta e controlla il comportamento dell'agente nei punti di esecuzione chiave

282* [Permessi](/it/agent-sdk/permissions): Controlla l'accesso agli strumenti con modalità, regole e callback

283* [Prompt di sistema](/it/agent-sdk/modifying-system-prompts): Inietta il contesto senza file CLAUDE.md

agent-sdk/cost-tracking.md +263 −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# Tracciare costi e utilizzo

6 

7> Scopri come tracciare l'utilizzo dei token, stimare i costi e configurare la memorizzazione nella cache dei prompt con Claude Agent SDK.

8 

9Claude Agent SDK fornisce informazioni dettagliate sull'utilizzo dei token per ogni interazione con Claude. Questa guida spiega come tracciare correttamente l'utilizzo e comprendere la segnalazione dei costi, soprattutto quando si affrontano utilizzi di strumenti paralleli e conversazioni multi-step.

10 

11Per la documentazione API completa, consulta il [riferimento TypeScript SDK](/it/agent-sdk/typescript) e il [riferimento Python SDK](/it/agent-sdk/python).

12 

13<Warning>

14 I campi `total_cost_usd` e `costUSD` sono stime lato client, non dati di fatturazione autorevoli. L'SDK li calcola localmente da una tabella dei prezzi inclusa al momento della compilazione, quindi possono divergere da ciò che viene effettivamente fatturato quando:

15 

16 * i prezzi cambiano

17 * la versione dell'SDK installata non riconosce un modello

18 * si applicano regole di fatturazione che il client non può modellare

19 

20 Utilizza questi campi per approfondimenti di sviluppo e budget approssimativi. Per la fatturazione autorevole, utilizza l'[API di utilizzo e costi](https://platform.claude.com/docs/en/build-with-claude/usage-cost-api) o la pagina Utilizzo nella [Console Claude](https://platform.claude.com/usage). Non fatturare gli utenti finali o attivare decisioni finanziarie da questi campi.

21</Warning>

22 

23## Comprendere l'utilizzo dei token

24 

25Gli SDK TypeScript e Python espongono gli stessi dati di utilizzo con nomi di campi diversi:

26 

27* **TypeScript** fornisce scomposizioni di token per step su ogni messaggio dell'assistente (`message.message.id`, `message.message.usage`), costi per modello tramite `modelUsage` sul messaggio risultato e un totale cumulativo sul messaggio risultato.

28* **Python** fornisce scomposizioni di token per step su ogni messaggio dell'assistente (`message.usage`, `message.message_id`), costi per modello tramite `model_usage` sul messaggio risultato e il totale accumulato sul messaggio risultato (`total_cost_usd` e dizionario `usage`).

29 

30Entrambi gli SDK utilizzano lo stesso modello di costo sottostante ed espongono la stessa granularità. La differenza è nella denominazione dei campi e nel punto in cui l'utilizzo per step è annidato.

31 

32Il tracciamento dei costi dipende dalla comprensione di come l'SDK delimita i dati di utilizzo:

33 

34* **Chiamata `query()`:** una singola invocazione della funzione `query()` dell'SDK. Una singola chiamata può coinvolgere più step (Claude risponde, utilizza strumenti, ottiene risultati, risponde di nuovo). Ogni chiamata produce un messaggio [`result`](/it/agent-sdk/typescript#sdk-result-message) alla fine.

35* **Step:** un singolo ciclo di richiesta/risposta all'interno di una chiamata `query()`. Ogni step produce messaggi dell'assistente con utilizzo dei token.

36* **Sessione:** una serie di chiamate `query()` collegate da un ID di sessione (utilizzando l'opzione `resume`). Ogni chiamata `query()` all'interno di una sessione segnala il proprio costo in modo indipendente.

37 

38Il diagramma seguente mostra il flusso di messaggi da una singola chiamata `query()`, con utilizzo dei token segnalato ad ogni step e la stima cumulativa alla fine:

39 

40<img src="https://mintcdn.com/claude-code/Dujg43sxTkuhSELI/images/agent-sdk/message-usage-flow.svg?fit=max&auto=format&n=Dujg43sxTkuhSELI&q=85&s=c542f51ff58547ef9c0e57b16d03f33c" alt="Diagramma che mostra una query che produce due step di messaggi. Lo Step 1 ha quattro messaggi dell'assistente che condividono lo stesso ID e utilizzo (contare una volta), lo Step 2 ha un messaggio dell'assistente con un nuovo ID e il messaggio risultato finale mostra il total_cost_usd stimato." width="760" height="520" data-path="images/agent-sdk/message-usage-flow.svg" />

41 

42<Steps>

43 <Step title="Ogni step produce messaggi dell'assistente">

44 Quando Claude risponde, invia uno o più messaggi dell'assistente. In TypeScript, ogni messaggio dell'assistente contiene un `BetaMessage` annidato (accessibile tramite `message.message`) con un `id` e un oggetto [`usage`](https://platform.claude.com/docs/en/api/messages) con conteggi di token (`input_tokens`, `output_tokens`). In Python, la classe dataclass `AssistantMessage` espone gli stessi dati direttamente tramite `message.usage` e `message.message_id`. Quando Claude utilizza più strumenti in un turno, tutti i messaggi in quel turno condividono lo stesso ID, quindi deduplicare per ID per evitare il doppio conteggio.

45 </Step>

46 

47 <Step title="Il messaggio risultato fornisce la stima cumulativa">

48 Quando la chiamata `query()` si completa, l'SDK emette un messaggio risultato con `total_cost_usd` e `usage` cumulativo. Questo è disponibile sia in TypeScript ([`SDKResultMessage`](/it/agent-sdk/typescript#sdk-result-message)) che in Python ([`ResultMessage`](/it/agent-sdk/python#result-message)). Se effettui più chiamate `query()` (ad esempio, in una sessione multi-turno), ogni risultato riflette solo il costo di quella singola chiamata. Se hai bisogno solo della stima totale, puoi ignorare l'utilizzo per step e leggere questo singolo valore.

49 </Step>

50</Steps>

51 

52## Ottenere il costo totale di una query

53 

54Il messaggio risultato ([TypeScript](/it/agent-sdk/typescript#sdk-result-message), [Python](/it/agent-sdk/python#result-message)) segna la fine del ciclo dell'agente per una chiamata `query()`. Include `total_cost_usd`, il costo stimato cumulativo su tutti gli step in quella chiamata. Questo funziona sia per risultati di successo che di errore. Se utilizzi sessioni per effettuare più chiamate `query()`, ogni risultato riflette solo il costo di quella singola chiamata.

55 

56Gli esempi seguenti iterano sul flusso di messaggi da una chiamata `query()` e stampano il costo totale quando arriva il messaggio `result`:

57 

58<CodeGroup>

59 ```typescript TypeScript theme={null}

60 import { query } from "@anthropic-ai/claude-agent-sdk";

61 

62 for await (const message of query({ prompt: "Summarize this project" })) {

63 if (message.type === "result") {

64 console.log(`Total cost: $${message.total_cost_usd}`);

65 }

66 }

67 ```

68 

69 ```python Python theme={null}

70 from claude_agent_sdk import query, ResultMessage

71 import asyncio

72 

73 

74 async def main():

75 async for message in query(prompt="Summarize this project"):

76 if isinstance(message, ResultMessage):

77 print(f"Total cost: ${message.total_cost_usd or 0}")

78 

79 

80 asyncio.run(main())

81 ```

82</CodeGroup>

83 

84## Tracciare l'utilizzo per step e per modello

85 

86Gli esempi in questa sezione utilizzano nomi di campi TypeScript. In Python, i campi equivalenti sono [`AssistantMessage.usage`](/it/agent-sdk/python#assistant-message) e `AssistantMessage.message_id` per l'utilizzo per step, e [`ResultMessage.model_usage`](/it/agent-sdk/python#result-message) per le scomposizioni per modello.

87 

88### Tracciare l'utilizzo per step

89 

90Ogni messaggio dell'assistente contiene un `BetaMessage` annidato (accessibile tramite `message.message`) con un `id` e un oggetto `usage` con conteggi di token. Quando Claude utilizza strumenti in parallelo, più messaggi condividono lo stesso `id` con dati di utilizzo identici. Traccia quali ID hai già contato e salta i duplicati per evitare totali gonfiati.

91 

92<Warning>

93 Le chiamate di strumenti paralleli producono più messaggi dell'assistente il cui `BetaMessage` annidato condivide lo stesso `id` e utilizzo identico. Deduplicare sempre per ID per ottenere conteggi di token per step accurati.

94</Warning>

95 

96L'esempio seguente accumula token di input e output su tutti gli step, contando ogni ID di messaggio univoco una sola volta:

97 

98```typescript theme={null}

99import { query } from "@anthropic-ai/claude-agent-sdk";

100 

101const seenIds = new Set<string>();

102let totalInputTokens = 0;

103let totalOutputTokens = 0;

104 

105for await (const message of query({ prompt: "Summarize this project" })) {

106 if (message.type === "assistant") {

107 const msgId = message.message.id;

108 

109 // Parallel tool calls share the same ID, only count once

110 if (!seenIds.has(msgId)) {

111 seenIds.add(msgId);

112 totalInputTokens += message.message.usage.input_tokens;

113 totalOutputTokens += message.message.usage.output_tokens;

114 }

115 }

116}

117 

118console.log(`Steps: ${seenIds.size}`);

119console.log(`Input tokens: ${totalInputTokens}`);

120console.log(`Output tokens: ${totalOutputTokens}`);

121```

122 

123### Scomporre l'utilizzo per modello

124 

125Il messaggio risultato include [`modelUsage`](/it/agent-sdk/typescript#model-usage), una mappa del nome del modello ai conteggi di token e costi per modello. Questo è utile quando esegui più modelli (ad esempio, Haiku per subagenti e Opus per l'agente principale) e vuoi vedere dove vanno i token.

126 

127L'esempio seguente esegue una query e stampa il costo e la scomposizione dei token per ogni modello utilizzato:

128 

129```typescript theme={null}

130import { query } from "@anthropic-ai/claude-agent-sdk";

131 

132for await (const message of query({ prompt: "Summarize this project" })) {

133 if (message.type !== "result") continue;

134 

135 for (const [modelName, usage] of Object.entries(message.modelUsage)) {

136 console.log(`${modelName}: $${usage.costUSD.toFixed(4)}`);

137 console.log(` Input tokens: ${usage.inputTokens}`);

138 console.log(` Output tokens: ${usage.outputTokens}`);

139 console.log(` Cache read: ${usage.cacheReadInputTokens}`);

140 console.log(` Cache creation: ${usage.cacheCreationInputTokens}`);

141 }

142}

143```

144 

145## Accumulare costi su più chiamate

146 

147Ogni chiamata `query()` restituisce il suo `total_cost_usd`. L'SDK non fornisce un totale a livello di sessione, quindi se la tua applicazione effettua più chiamate `query()` (ad esempio, in una sessione multi-turno o tra diversi utenti), accumula i totali tu stesso.

148 

149Gli esempi seguenti eseguono due chiamate `query()` in sequenza, aggiungono il `total_cost_usd` di ogni chiamata a un totale in esecuzione e stampano sia il costo per chiamata che quello combinato:

150 

151<CodeGroup>

152 ```typescript TypeScript theme={null}

153 import { query } from "@anthropic-ai/claude-agent-sdk";

154 

155 // Track cumulative cost across multiple query() calls

156 let totalSpend = 0;

157 

158 const prompts = [

159 "Read the files in src/ and summarize the architecture",

160 "List all exported functions in src/auth.ts"

161 ];

162 

163 for (const prompt of prompts) {

164 for await (const message of query({ prompt })) {

165 if (message.type === "result") {

166 totalSpend += message.total_cost_usd;

167 console.log(`This call: $${message.total_cost_usd}`);

168 }

169 }

170 }

171 

172 console.log(`Total spend: $${totalSpend.toFixed(4)}`);

173 ```

174 

175 ```python Python theme={null}

176 from claude_agent_sdk import query, ResultMessage

177 import asyncio

178 

179 

180 async def main():

181 # Track cumulative cost across multiple query() calls

182 total_spend = 0.0

183 

184 prompts = [

185 "Read the files in src/ and summarize the architecture",

186 "List all exported functions in src/auth.ts",

187 ]

188 

189 for prompt in prompts:

190 async for message in query(prompt=prompt):

191 if isinstance(message, ResultMessage):

192 cost = message.total_cost_usd or 0

193 total_spend += cost

194 print(f"This call: ${cost}")

195 

196 print(f"Total spend: ${total_spend:.4f}")

197 

198 

199 asyncio.run(main())

200 ```

201</CodeGroup>

202 

203## Gestire errori, caching e discrepanze di token

204 

205Per un tracciamento accurato dei costi, tieni conto di conversazioni non riuscite, prezzi dei token in cache e occasionali incoerenze di segnalazione.

206 

207### Risolvere discrepanze di token di output

208 

209In rari casi, potresti osservare valori `output_tokens` diversi per messaggi con lo stesso ID. Quando ciò accade:

210 

2111. **Utilizza il valore più alto:** il messaggio finale in un gruppo contiene in genere il totale accurato.

2122. **Preferisci il messaggio risultato:** il `total_cost_usd` nel messaggio risultato riflette la stima accumulata dell'SDK su tutti gli step, quindi è più affidabile che sommare i valori per step tu stesso. È comunque una stima e può differire dalla tua fattura effettiva.

2133. **Segnala incoerenze:** archivia i problemi nel [repository GitHub Claude Code](https://github.com/anthropics/claude-code/issues).

214 

215### Tracciare i costi su conversazioni non riuscite

216 

217Sia i messaggi risultato di successo che di errore includono `usage` e `total_cost_usd`. Se una conversazione fallisce a metà, hai comunque consumato token fino al punto di errore. Leggi sempre i dati di costo dal messaggio risultato indipendentemente dal suo `subtype`.

218 

219### Tracciare i token in cache

220 

221Agent SDK utilizza automaticamente la [memorizzazione nella cache dei prompt](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) per ridurre i costi su contenuti ripetuti. Non è necessario configurare il caching tu stesso. L'oggetto di utilizzo include due campi aggiuntivi per il tracciamento della cache:

222 

223* `cache_creation_input_tokens`: token utilizzati per creare nuove voci di cache (addebitati a una tariffa più alta rispetto ai token di input standard).

224* `cache_read_input_tokens`: token letti da voci di cache esistenti (addebitati a una tariffa ridotta).

225 

226Traccia questi separatamente da `input_tokens` per comprendere i risparmi di caching. In TypeScript, questi campi sono tipizzati sull'oggetto [`Usage`](/it/agent-sdk/typescript#usage). In Python, appaiono come chiavi nel dizionario [`ResultMessage.usage`](/it/agent-sdk/python#result-message) (ad esempio, `message.usage.get("cache_read_input_tokens", 0)`).

227 

228### Estendere il TTL della cache dei prompt a un'ora

229 

230Le voci di cache scritte dall'SDK utilizzano un TTL di 5 minuti per impostazione predefinita quando ti autentichi con una chiave API o esegui su Amazon Bedrock, Google Cloud Vertex AI o Microsoft Foundry. Se il tuo carico di lavoro esegue molte sessioni brevi rispetto allo stesso prompt di sistema e contesto con gap più lunghi di 5 minuti tra loro, la cache scade tra le sessioni e ogni nuova sessione paga il prezzo di input completo.

231 

232Per richiedere un TTL di 1 ora sulle scritture della cache, imposta la variabile di ambiente [`ENABLE_PROMPT_CACHING_1H`](/it/env-vars). Puoi esportarla nel tuo ambiente shell o container, oppure passarla tramite `options.env`.

233 

234L'esempio seguente abilita il TTL di 1 ora per un agente in esecuzione su Bedrock:

235 

236<CodeGroup>

237 ```python Python theme={null}

238 options = ClaudeAgentOptions(

239 env={

240 "CLAUDE_CODE_USE_BEDROCK": "1",

241 "ENABLE_PROMPT_CACHING_1H": "1",

242 },

243 )

244 ```

245 

246 ```typescript TypeScript theme={null}

247 const options = {

248 env: {

249 ...process.env,

250 CLAUDE_CODE_USE_BEDROCK: "1",

251 ENABLE_PROMPT_CACHING_1H: "1",

252 },

253 };

254 ```

255</CodeGroup>

256 

257Le scritture della cache con un TTL di 1 ora sono fatturate a una tariffa più alta rispetto alle scritture di 5 minuti, quindi abilitare questa opzione scambia un costo di scrittura più elevato per più letture della cache. Consulta i [prezzi della memorizzazione nella cache dei prompt](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) per i dettagli. Gli utenti con abbonamento Claude ricevono già automaticamente il TTL di 1 ora e non hanno bisogno di impostare questa variabile.

258 

259## Documentazione correlata

260 

261* [Riferimento TypeScript SDK](/it/agent-sdk/typescript) - Documentazione API completa

262* [Panoramica SDK](/it/agent-sdk/overview) - Introduzione all'SDK

263* [Autorizzazioni SDK](/it/agent-sdk/permissions) - Gestione delle autorizzazioni degli strumenti

agent-sdk/hooks.md +819 −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# Intercettare e controllare il comportamento dell'agente con hooks

6 

7> Intercettare e personalizzare il comportamento dell'agente nei punti chiave di esecuzione con hooks

8 

9Gli hooks sono funzioni di callback che eseguono il vostro codice in risposta agli eventi dell'agente, come una chiamata a uno strumento, l'avvio di una sessione o l'arresto dell'esecuzione. Con gli hooks, potete:

10 

11* **Bloccare operazioni pericolose** prima che vengano eseguite, come comandi shell distruttivi o accesso a file non autorizzato

12* **Registrare e controllare** ogni chiamata a uno strumento per conformità, debug o analitiche

13* **Trasformare input e output** per sanitizzare i dati, iniettare credenziali o reindirizzare i percorsi dei file

14* **Richiedere approvazione umana** per azioni sensibili come scritture su database o chiamate API

15* **Tracciare il ciclo di vita della sessione** per gestire lo stato, pulire le risorse o inviare notifiche

16 

17Questa guida copre come funzionano gli hooks, come configurarli e fornisce esempi per modelli comuni come il blocco di strumenti, la modifica degli input e l'inoltro di notifiche.

18 

19## Come funzionano gli hooks

20 

21<Steps>

22 <Step title="Un evento si attiva">

23 Qualcosa accade durante l'esecuzione dell'agente e l'SDK attiva un evento: un strumento sta per essere chiamato (`PreToolUse`), uno strumento ha restituito un risultato (`PostToolUse`), un subagente è stato avviato o interrotto, l'agente è inattivo o l'esecuzione è terminata. Consultate l'[elenco completo degli eventi](#available-hooks).

24 </Step>

25 

26 <Step title="L'SDK raccoglie gli hooks registrati">

27 L'SDK verifica la presenza di hooks registrati per quel tipo di evento. Questo include gli hooks di callback che passate in `options.hooks` e gli hooks dei comandi shell dai file di impostazioni quando la voce [`settingSources`](/it/agent-sdk/typescript#setting-source) o [`setting_sources`](/it/agent-sdk/python#setting-source) corrispondente è abilitata, come avviene per le opzioni predefinite di `query()`.

28 </Step>

29 

30 <Step title="I matcher filtrano quali hooks vengono eseguiti">

31 Se un hook ha un modello [`matcher`](#matchers) (come `"Write|Edit"`), l'SDK lo testa rispetto al target dell'evento (ad esempio, il nome dello strumento). Gli hooks senza un matcher vengono eseguiti per ogni evento di quel tipo.

32 </Step>

33 

34 <Step title="Le funzioni di callback vengono eseguite">

35 Ogni hook corrispondente riceve la sua [funzione di callback](#callback-functions) con input su ciò che sta accadendo: il nome dello strumento, i suoi argomenti, l'ID della sessione e altri dettagli specifici dell'evento.

36 </Step>

37 

38 <Step title="Il vostro callback restituisce una decisione">

39 Dopo aver eseguito qualsiasi operazione (registrazione, chiamate API, convalida), il vostro callback restituisce un [oggetto di output](#outputs) che dice all'agente cosa fare: consentire l'operazione, bloccarla, modificare l'input o iniettare contesto nella conversazione.

40 </Step>

41</Steps>

42 

43L'esempio seguente mette insieme questi passaggi. Registra un hook `PreToolUse` (passaggio 1) con un matcher `"Write|Edit"` (passaggio 3) in modo che il callback si attivi solo per gli strumenti di scrittura di file. Quando attivato, il callback riceve l'input dello strumento (passaggio 4), verifica se il percorso del file è destinato a un file `.env` e restituisce `permissionDecision: "deny"` per bloccare l'operazione (passaggio 5):

44 

45<CodeGroup>

46 ```python Python theme={null}

47 import asyncio

48 from claude_agent_sdk import (

49 AssistantMessage,

50 ClaudeSDKClient,

51 ClaudeAgentOptions,

52 HookMatcher,

53 ResultMessage,

54 )

55 

56 

57 # Define a hook callback that receives tool call details

58 async def protect_env_files(input_data, tool_use_id, context):

59 # Extract the file path from the tool's input arguments

60 file_path = input_data["tool_input"].get("file_path", "")

61 file_name = file_path.split("/")[-1]

62 

63 # Block the operation if targeting a .env file

64 if file_name == ".env":

65 return {

66 "hookSpecificOutput": {

67 "hookEventName": input_data["hook_event_name"],

68 "permissionDecision": "deny",

69 "permissionDecisionReason": "Cannot modify .env files",

70 }

71 }

72 

73 # Return empty object to allow the operation

74 return {}

75 

76 

77 async def main():

78 options = ClaudeAgentOptions(

79 hooks={

80 # Register the hook for PreToolUse events

81 # The matcher filters to only Write and Edit tool calls

82 "PreToolUse": [HookMatcher(matcher="Write|Edit", hooks=[protect_env_files])]

83 }

84 )

85 

86 async with ClaudeSDKClient(options=options) as client:

87 await client.query("Update the database configuration")

88 async for message in client.receive_response():

89 # Filter for assistant and result messages

90 if isinstance(message, (AssistantMessage, ResultMessage)):

91 print(message)

92 

93 

94 asyncio.run(main())

95 ```

96 

97 ```typescript TypeScript theme={null}

98 import { query, HookCallback, PreToolUseHookInput } from "@anthropic-ai/claude-agent-sdk";

99 

100 // Define a hook callback with the HookCallback type

101 const protectEnvFiles: HookCallback = async (input, toolUseID, { signal }) => {

102 // Cast input to the specific hook type for type safety

103 const preInput = input as PreToolUseHookInput;

104 

105 // Cast tool_input to access its properties (typed as unknown in the SDK)

106 const toolInput = preInput.tool_input as Record<string, unknown>;

107 const filePath = toolInput?.file_path as string;

108 const fileName = filePath?.split("/").pop();

109 

110 // Block the operation if targeting a .env file

111 if (fileName === ".env") {

112 return {

113 hookSpecificOutput: {

114 hookEventName: preInput.hook_event_name,

115 permissionDecision: "deny",

116 permissionDecisionReason: "Cannot modify .env files"

117 }

118 };

119 }

120 

121 // Return empty object to allow the operation

122 return {};

123 };

124 

125 for await (const message of query({

126 prompt: "Update the database configuration",

127 options: {

128 hooks: {

129 // Register the hook for PreToolUse events

130 // The matcher filters to only Write and Edit tool calls

131 PreToolUse: [{ matcher: "Write|Edit", hooks: [protectEnvFiles] }]

132 }

133 }

134 })) {

135 // Filter for assistant and result messages

136 if (message.type === "assistant" || message.type === "result") {

137 console.log(message);

138 }

139 }

140 ```

141</CodeGroup>

142 

143## Hook disponibili

144 

145L'SDK fornisce hooks per diverse fasi dell'esecuzione dell'agente. Alcuni hooks sono disponibili in entrambi gli SDK, mentre altri sono solo per TypeScript.

146 

147| Hook Event | Python SDK | TypeScript SDK | Cosa lo attiva | Caso d'uso di esempio |

148| -------------------- | ---------- | -------------- | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |

149| `PreToolUse` | Sì | Sì | Richiesta di chiamata a uno strumento (può bloccare o modificare) | Bloccare comandi shell pericolosi |

150| `PostToolUse` | Sì | Sì | Risultato dell'esecuzione dello strumento | Registrare tutte le modifiche ai file nel registro di controllo |

151| `PostToolUseFailure` | Sì | Sì | Errore di esecuzione dello strumento | Gestire o registrare errori dello strumento |

152| `PostToolBatch` | No | Sì | Un intero batch di chiamate a strumenti si risolve, una volta per batch prima della prossima chiamata al modello | Iniettare convenzioni una volta per l'intero batch |

153| `UserPromptSubmit` | Sì | Sì | Invio del prompt dell'utente | Iniettare contesto aggiuntivo nei prompt |

154| `Stop` | Sì | Sì | Arresto dell'esecuzione dell'agente | Salvare lo stato della sessione prima dell'uscita |

155| `SubagentStart` | Sì | Sì | Inizializzazione del subagente | Tracciare l'avvio di attività parallele |

156| `SubagentStop` | Sì | Sì | Completamento del subagente | Aggregare i risultati dalle attività parallele |

157| `PreCompact` | Sì | Sì | Richiesta di compattazione della conversazione | Archiviare la trascrizione completa prima del riepilogo |

158| `PermissionRequest` | Sì | Sì | La finestra di dialogo delle autorizzazioni verrebbe visualizzata | Gestione personalizzata delle autorizzazioni |

159| `SessionStart` | No | Sì | Inizializzazione della sessione | Inizializzare la registrazione e la telemetria |

160| `SessionEnd` | No | Sì | Terminazione della sessione | Pulire le risorse temporanee |

161| `Notification` | Sì | Sì | Messaggi di stato dell'agente | Inviare aggiornamenti dello stato dell'agente a Slack o PagerDuty |

162| `Setup` | No | Sì | Configurazione/manutenzione della sessione | Eseguire attività di inizializzazione |

163| `TeammateIdle` | No | Sì | Il compagno di squadra diventa inattivo | Riassegnare il lavoro o notificare |

164| `TaskCompleted` | No | Sì | L'attività in background si completa | Aggregare i risultati dalle attività parallele |

165| `ConfigChange` | No | Sì | Il file di configurazione cambia | Ricaricare le impostazioni dinamicamente |

166| `WorktreeCreate` | No | Sì | Git worktree creato | Tracciare gli spazi di lavoro isolati |

167| `WorktreeRemove` | No | Sì | Git worktree rimosso | Pulire le risorse dello spazio di lavoro |

168 

169## Configurare gli hooks

170 

171Per configurare un hook, passatelo nel campo `hooks` delle opzioni dell'agente (`ClaudeAgentOptions` in Python, l'oggetto `options` in TypeScript):

172 

173<CodeGroup>

174 ```python Python theme={null}

175 options = ClaudeAgentOptions(

176 hooks={"PreToolUse": [HookMatcher(matcher="Bash", hooks=[my_callback])]}

177 )

178 

179 async with ClaudeSDKClient(options=options) as client:

180 await client.query("Your prompt")

181 async for message in client.receive_response():

182 print(message)

183 ```

184 

185 ```typescript TypeScript theme={null}

186 for await (const message of query({

187 prompt: "Your prompt",

188 options: {

189 hooks: {

190 PreToolUse: [{ matcher: "Bash", hooks: [myCallback] }]

191 }

192 }

193 })) {

194 console.log(message);

195 }

196 ```

197</CodeGroup>

198 

199L'opzione `hooks` è un dizionario (Python) o un oggetto (TypeScript) dove:

200 

201* **Le chiavi** sono [nomi degli eventi hook](#available-hooks) (ad es. `'PreToolUse'`, `'PostToolUse'`, `'Stop'`)

202* **I valori** sono array di [matcher](#matchers), ognuno contenente un modello di filtro opzionale e le vostre [funzioni di callback](#callback-functions)

203 

204### Matcher

205 

206Utilizzate i matcher per filtrare quando i vostri callback si attivano. Il campo `matcher` è una stringa regex che corrisponde a un valore diverso a seconda del tipo di evento hook. Ad esempio, gli hook basati su strumenti corrispondono al nome dello strumento, mentre gli hook `Notification` corrispondono al tipo di notifica. Consultate il [riferimento degli hooks di Claude Code](/it/hooks#matcher-patterns) per l'elenco completo dei valori di matcher per ogni tipo di evento.

207 

208| Opzione | Tipo | Predefinito | Descrizione |

209| --------- | ---------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

210| `matcher` | `string` | `undefined` | Modello regex abbinato al campo di filtro dell'evento. Per gli hook degli strumenti, questo è il nome dello strumento. Gli strumenti incorporati includono `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` e altri (consultate [Tipi di input degli strumenti](/it/agent-sdk/typescript#tool-input-types) per l'elenco completo). Gli strumenti MCP utilizzano il modello `mcp__<server>__<action>`. |

211| `hooks` | `HookCallback[]` | - | Obbligatorio. Array di funzioni di callback da eseguire quando il modello corrisponde |

212| `timeout` | `number` | `60` | Timeout in secondi |

213 

214Utilizzate il modello `matcher` per indirizzare strumenti specifici quando possibile. Un matcher con `'Bash'` viene eseguito solo per i comandi Bash, mentre omettere il modello esegue i vostri callback per ogni occorrenza dell'evento. Notate che per gli hook basati su strumenti, i matcher filtrano solo per **nome dello strumento**, non per percorsi di file o altri argomenti. Per filtrare per percorso di file, controllate `tool_input.file_path` all'interno del vostro callback.

215 

216<Tip>

217 **Scoprire i nomi degli strumenti:** Consultate [Tipi di input degli strumenti](/it/agent-sdk/typescript#tool-input-types) per l'elenco completo dei nomi degli strumenti incorporati, oppure aggiungete un hook senza un matcher per registrare tutte le chiamate agli strumenti che la vostra sessione effettua.

218 

219 **Denominazione degli strumenti MCP:** Gli strumenti MCP iniziano sempre con `mcp__` seguito dal nome del server e dall'azione: `mcp__<server>__<action>`. Ad esempio, se configurate un server denominato `playwright`, i suoi strumenti saranno denominati `mcp__playwright__browser_screenshot`, `mcp__playwright__browser_click`, ecc. Il nome del server proviene dalla chiave che utilizzate nella configurazione `mcpServers`.

220</Tip>

221 

222### Funzioni di callback

223 

224#### Input

225 

226Ogni callback hook riceve tre argomenti:

227 

228* **Dati di input:** un oggetto tipizzato contenente i dettagli dell'evento. Ogni tipo di hook ha la sua forma di input (ad esempio, `PreToolUseHookInput` include `tool_name` e `tool_input`, mentre `NotificationHookInput` include `message`). Consultate le definizioni di tipo complete nei riferimenti SDK [TypeScript](/it/agent-sdk/typescript#hook-input) e [Python](/it/agent-sdk/python#hook-input).

229 * Tutti gli input hook condividono `session_id`, `cwd` e `hook_event_name`.

230 * `agent_id` e `agent_type` vengono popolati quando l'hook si attiva all'interno di un subagente. In TypeScript, questi si trovano sull'input hook di base e sono disponibili per tutti i tipi di hook. In Python, si trovano solo su `PreToolUse`, `PostToolUse` e `PostToolUseFailure`.

231* **ID di utilizzo dello strumento** (`str | None` / `string | undefined`): correla gli eventi `PreToolUse` e `PostToolUse` per la stessa chiamata a uno strumento.

232* **Contesto:** in TypeScript, contiene una proprietà `signal` (`AbortSignal`) per l'annullamento. In Python, questo argomento è riservato per uso futuro.

233 

234#### Output

235 

236Il vostro callback restituisce un oggetto con due categorie di campi:

237 

238* **Campi di livello superiore** controllano la conversazione: `systemMessage` inietta un messaggio nella conversazione visibile al modello e `continue` (`continue_` in Python) determina se l'agente continua a funzionare dopo questo hook.

239* **`hookSpecificOutput`** controlla l'operazione corrente. I campi all'interno dipendono dal tipo di evento hook. Per gli hook `PreToolUse`, è qui che impostate `permissionDecision` (`"allow"`, `"deny"` o `"ask"`), `permissionDecisionReason` e `updatedInput`. Nell'SDK TypeScript, `permissionDecision` accetta anche `"defer"` per terminare la query e [riprendere in seguito](/it/hooks#defer-a-tool-call-for-later); questo valore non è disponibile nell'SDK Python. Per gli hook `PostToolUse`, potete impostare `additionalContext` per aggiungere informazioni al risultato dello strumento.

240 

241Restituite `{}` per consentire l'operazione senza modifiche. Gli hook di callback SDK utilizzano lo stesso formato di output JSON degli [hook dei comandi shell di Claude Code](/it/hooks#json-output), che documenta ogni campo e opzione specifica dell'evento. Per le definizioni di tipo SDK, consultate i riferimenti SDK [TypeScript](/it/agent-sdk/typescript#sync-hook-json-output) e [Python](/it/agent-sdk/python#sync-hook-json-output).

242 

243<Note>

244 Quando si applicano più hook o regole di autorizzazione, **deny** ha priorità su **defer**, che ha priorità su **ask**, che ha priorità su **allow**. Se un hook restituisce `deny`, l'operazione viene bloccata indipendentemente dagli altri hook.

245</Note>

246 

247#### Output asincrono

248 

249Per impostazione predefinita, l'agente attende che il vostro hook restituisca prima di procedere. Se il vostro hook esegue un effetto collaterale (registrazione, invio di un webhook) e non ha bisogno di influenzare il comportamento dell'agente, potete restituire un output asincrono. Questo dice all'agente di continuare immediatamente senza attendere il completamento dell'hook:

250 

251<CodeGroup>

252 ```python Python theme={null}

253 async def async_hook(input_data, tool_use_id, context):

254 # Start a background task, then return immediately

255 asyncio.create_task(send_to_logging_service(input_data))

256 return {"async_": True, "asyncTimeout": 30000}

257 ```

258 

259 ```typescript TypeScript theme={null}

260 const asyncHook: HookCallback = async (input, toolUseID, { signal }) => {

261 // Start a background task, then return immediately

262 sendToLoggingService(input).catch(console.error);

263 return { async: true, asyncTimeout: 30000 };

264 };

265 ```

266</CodeGroup>

267 

268| Campo | Tipo | Descrizione |

269| -------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- |

270| `async` | `true` | Segnala la modalità asincrona. L'agente procede senza attendere. In Python, utilizzate `async_` per evitare la parola chiave riservata. |

271| `asyncTimeout` | `number` | Timeout opzionale in millisecondi per l'operazione in background |

272 

273<Note>

274 Gli output asincroni non possono bloccare, modificare o iniettare contesto nell'operazione poiché l'agente ha già proseguito. Utilizzateli solo per effetti collaterali come registrazione, metriche o notifiche.

275</Note>

276 

277## Esempi

278 

279### Modificare l'input dello strumento

280 

281Questo esempio intercetta le chiamate allo strumento Write e riscrive l'argomento `file_path` per anteporre `/sandbox`, reindirizzando tutte le scritture di file a una directory sandbox. Il callback restituisce `updatedInput` con il percorso modificato e `permissionDecision: 'allow'` per approvare automaticamente l'operazione riscritta:

282 

283<CodeGroup>

284 ```python Python theme={null}

285 async def redirect_to_sandbox(input_data, tool_use_id, context):

286 if input_data["hook_event_name"] != "PreToolUse":

287 return {}

288 

289 if input_data["tool_name"] == "Write":

290 original_path = input_data["tool_input"].get("file_path", "")

291 return {

292 "hookSpecificOutput": {

293 "hookEventName": input_data["hook_event_name"],

294 "permissionDecision": "allow",

295 "updatedInput": {

296 **input_data["tool_input"],

297 "file_path": f"/sandbox{original_path}",

298 },

299 }

300 }

301 return {}

302 ```

303 

304 ```typescript TypeScript theme={null}

305 const redirectToSandbox: HookCallback = async (input, toolUseID, { signal }) => {

306 if (input.hook_event_name !== "PreToolUse") return {};

307 

308 const preInput = input as PreToolUseHookInput;

309 const toolInput = preInput.tool_input as Record<string, unknown>;

310 if (preInput.tool_name === "Write") {

311 const originalPath = toolInput.file_path as string;

312 return {

313 hookSpecificOutput: {

314 hookEventName: preInput.hook_event_name,

315 permissionDecision: "allow",

316 updatedInput: {

317 ...toolInput,

318 file_path: `/sandbox${originalPath}`

319 }

320 }

321 };

322 }

323 return {};

324 };

325 ```

326</CodeGroup>

327 

328<Note>

329 Quando utilizzate `updatedInput`, dovete anche includere `permissionDecision: 'allow'`. Restituite sempre un nuovo oggetto piuttosto che mutare l'originale `tool_input`.

330</Note>

331 

332### Aggiungere contesto e bloccare uno strumento

333 

334Questo esempio blocca qualsiasi tentativo di scrivere nella directory `/etc` e utilizza due campi di output insieme: `permissionDecision: 'deny'` interrompe la chiamata dello strumento, mentre `systemMessage` inietta un promemoria nella conversazione in modo che l'agente riceva il contesto sul motivo per cui l'operazione è stata bloccata e eviti di ritentarla:

335 

336<CodeGroup>

337 ```python Python theme={null}

338 async def block_etc_writes(input_data, tool_use_id, context):

339 file_path = input_data["tool_input"].get("file_path", "")

340 

341 if file_path.startswith("/etc"):

342 return {

343 # Top-level field: inject guidance into the conversation

344 "systemMessage": "Remember: system directories like /etc are protected.",

345 # hookSpecificOutput: block the operation

346 "hookSpecificOutput": {

347 "hookEventName": input_data["hook_event_name"],

348 "permissionDecision": "deny",

349 "permissionDecisionReason": "Writing to /etc is not allowed",

350 },

351 }

352 return {}

353 ```

354 

355 ```typescript TypeScript theme={null}

356 const blockEtcWrites: HookCallback = async (input, toolUseID, { signal }) => {

357 const preInput = input as PreToolUseHookInput;

358 const toolInput = preInput.tool_input as Record<string, unknown>;

359 const filePath = toolInput?.file_path as string;

360 

361 if (filePath?.startsWith("/etc")) {

362 return {

363 // Top-level field: inject guidance into the conversation

364 systemMessage: "Remember: system directories like /etc are protected.",

365 // hookSpecificOutput: block the operation

366 hookSpecificOutput: {

367 hookEventName: preInput.hook_event_name,

368 permissionDecision: "deny",

369 permissionDecisionReason: "Writing to /etc is not allowed"

370 }

371 };

372 }

373 return {};

374 };

375 ```

376</CodeGroup>

377 

378### Approvare automaticamente strumenti specifici

379 

380Per impostazione predefinita, l'agente potrebbe richiedere l'autorizzazione prima di utilizzare determinati strumenti. Questo esempio approva automaticamente gli strumenti del file system di sola lettura (Read, Glob, Grep) restituendo `permissionDecision: 'allow'`, consentendo loro di funzionare senza conferma dell'utente mentre lascia tutti gli altri strumenti soggetti ai normali controlli di autorizzazione:

381 

382<CodeGroup>

383 ```python Python theme={null}

384 async def auto_approve_read_only(input_data, tool_use_id, context):

385 if input_data["hook_event_name"] != "PreToolUse":

386 return {}

387 

388 read_only_tools = ["Read", "Glob", "Grep"]

389 if input_data["tool_name"] in read_only_tools:

390 return {

391 "hookSpecificOutput": {

392 "hookEventName": input_data["hook_event_name"],

393 "permissionDecision": "allow",

394 "permissionDecisionReason": "Read-only tool auto-approved",

395 }

396 }

397 return {}

398 ```

399 

400 ```typescript TypeScript theme={null}

401 const autoApproveReadOnly: HookCallback = async (input, toolUseID, { signal }) => {

402 if (input.hook_event_name !== "PreToolUse") return {};

403 

404 const preInput = input as PreToolUseHookInput;

405 const readOnlyTools = ["Read", "Glob", "Grep"];

406 if (readOnlyTools.includes(preInput.tool_name)) {

407 return {

408 hookSpecificOutput: {

409 hookEventName: preInput.hook_event_name,

410 permissionDecision: "allow",

411 permissionDecisionReason: "Read-only tool auto-approved"

412 }

413 };

414 }

415 return {};

416 };

417 ```

418</CodeGroup>

419 

420### Concatenare più hook

421 

422Gli hooks vengono eseguiti nell'ordine in cui appaiono nell'array. Mantenete ogni hook focalizzato su una singola responsabilità e concatenate più hook per logica complessa:

423 

424<CodeGroup>

425 ```python Python theme={null}

426 options = ClaudeAgentOptions(

427 hooks={

428 "PreToolUse": [

429 HookMatcher(hooks=[rate_limiter]), # First: check rate limits

430 HookMatcher(hooks=[authorization_check]), # Second: verify permissions

431 HookMatcher(hooks=[input_sanitizer]), # Third: sanitize inputs

432 HookMatcher(hooks=[audit_logger]), # Last: log the action

433 ]

434 }

435 )

436 ```

437 

438 ```typescript TypeScript theme={null}

439 const options = {

440 hooks: {

441 PreToolUse: [

442 { hooks: [rateLimiter] }, // First: check rate limits

443 { hooks: [authorizationCheck] }, // Second: verify permissions

444 { hooks: [inputSanitizer] }, // Third: sanitize inputs

445 { hooks: [auditLogger] } // Last: log the action

446 ]

447 }

448 };

449 ```

450</CodeGroup>

451 

452### Filtrare con matcher regex

453 

454Utilizzate modelli regex per abbinare più strumenti. Questo esempio registra tre matcher con ambiti diversi: il primo attiva `file_security_hook` solo per gli strumenti di modifica dei file, il secondo attiva `mcp_audit_hook` per qualsiasi strumento MCP (strumenti i cui nomi iniziano con `mcp__`), e il terzo attiva `global_logger` per ogni chiamata a uno strumento indipendentemente dal nome:

455 

456<CodeGroup>

457 ```python Python theme={null}

458 options = ClaudeAgentOptions(

459 hooks={

460 "PreToolUse": [

461 # Match file modification tools

462 HookMatcher(matcher="Write|Edit|Delete", hooks=[file_security_hook]),

463 # Match all MCP tools

464 HookMatcher(matcher="^mcp__", hooks=[mcp_audit_hook]),

465 # Match everything (no matcher)

466 HookMatcher(hooks=[global_logger]),

467 ]

468 }

469 )

470 ```

471 

472 ```typescript TypeScript theme={null}

473 const options = {

474 hooks: {

475 PreToolUse: [

476 // Match file modification tools

477 { matcher: "Write|Edit|Delete", hooks: [fileSecurityHook] },

478 

479 // Match all MCP tools

480 { matcher: "^mcp__", hooks: [mcpAuditHook] },

481 

482 // Match everything (no matcher)

483 { hooks: [globalLogger] }

484 ]

485 }

486 };

487 ```

488</CodeGroup>

489 

490### Tracciare l'attività dei subagenti

491 

492Utilizzate gli hook `SubagentStop` per monitorare quando i subagenti completano il loro lavoro. Consultate il tipo di input completo nei riferimenti SDK [TypeScript](/it/agent-sdk/typescript#hook-input) e [Python](/it/agent-sdk/python#hook-input). Questo esempio registra un riepilogo ogni volta che un subagente si completa:

493 

494<CodeGroup>

495 ```python Python theme={null}

496 async def subagent_tracker(input_data, tool_use_id, context):

497 # Log subagent details when it finishes

498 print(f"[SUBAGENT] Completed: {input_data['agent_id']}")

499 print(f" Transcript: {input_data['agent_transcript_path']}")

500 print(f" Tool use ID: {tool_use_id}")

501 print(f" Stop hook active: {input_data.get('stop_hook_active')}")

502 return {}

503 

504 

505 options = ClaudeAgentOptions(

506 hooks={"SubagentStop": [HookMatcher(hooks=[subagent_tracker])]}

507 )

508 ```

509 

510 ```typescript TypeScript theme={null}

511 import { HookCallback, SubagentStopHookInput } from "@anthropic-ai/claude-agent-sdk";

512 

513 const subagentTracker: HookCallback = async (input, toolUseID, { signal }) => {

514 // Cast to SubagentStopHookInput to access subagent-specific fields

515 const subInput = input as SubagentStopHookInput;

516 

517 // Log subagent details when it finishes

518 console.log(`[SUBAGENT] Completed: ${subInput.agent_id}`);

519 console.log(` Transcript: ${subInput.agent_transcript_path}`);

520 console.log(` Tool use ID: ${toolUseID}`);

521 console.log(` Stop hook active: ${subInput.stop_hook_active}`);

522 return {};

523 };

524 

525 const options = {

526 hooks: {

527 SubagentStop: [{ hooks: [subagentTracker] }]

528 }

529 };

530 ```

531</CodeGroup>

532 

533### Effettuare richieste HTTP dagli hooks

534 

535Gli hooks possono eseguire operazioni asincrone come richieste HTTP. Catturate gli errori all'interno del vostro hook invece di lasciarli propagare, poiché un'eccezione non gestita può interrompere l'agente.

536 

537Questo esempio invia un webhook dopo il completamento di ogni strumento, registrando quale strumento è stato eseguito e quando. L'hook cattura gli errori in modo che un webhook non riuscito non interrompa l'agente:

538 

539<CodeGroup>

540 ```python Python theme={null}

541 import asyncio

542 import json

543 import urllib.request

544 from datetime import datetime

545 

546 

547 def _send_webhook(tool_name):

548 """Synchronous helper that POSTs tool usage data to an external webhook."""

549 data = json.dumps(

550 {

551 "tool": tool_name,

552 "timestamp": datetime.now().isoformat(),

553 }

554 ).encode()

555 req = urllib.request.Request(

556 "https://api.example.com/webhook",

557 data=data,

558 headers={"Content-Type": "application/json"},

559 method="POST",

560 )

561 urllib.request.urlopen(req)

562 

563 

564 async def webhook_notifier(input_data, tool_use_id, context):

565 # Only fire after a tool completes (PostToolUse), not before

566 if input_data["hook_event_name"] != "PostToolUse":

567 return {}

568 

569 try:

570 # Run the blocking HTTP call in a thread to avoid blocking the event loop

571 await asyncio.to_thread(_send_webhook, input_data["tool_name"])

572 except Exception as e:

573 # Log the error but don't raise. A failed webhook shouldn't stop the agent

574 print(f"Webhook request failed: {e}")

575 

576 return {}

577 ```

578 

579 ```typescript TypeScript theme={null}

580 import { query, HookCallback, PostToolUseHookInput } from "@anthropic-ai/claude-agent-sdk";

581 

582 const webhookNotifier: HookCallback = async (input, toolUseID, { signal }) => {

583 // Only fire after a tool completes (PostToolUse), not before

584 if (input.hook_event_name !== "PostToolUse") return {};

585 

586 try {

587 await fetch("https://api.example.com/webhook", {

588 method: "POST",

589 headers: { "Content-Type": "application/json" },

590 body: JSON.stringify({

591 tool: (input as PostToolUseHookInput).tool_name,

592 timestamp: new Date().toISOString()

593 }),

594 // Pass signal so the request cancels if the hook times out

595 signal

596 });

597 } catch (error) {

598 // Handle cancellation separately from other errors

599 if (error instanceof Error && error.name === "AbortError") {

600 console.log("Webhook request cancelled");

601 }

602 // Don't re-throw. A failed webhook shouldn't stop the agent

603 }

604 

605 return {};

606 };

607 

608 // Register as a PostToolUse hook

609 for await (const message of query({

610 prompt: "Refactor the auth module",

611 options: {

612 hooks: {

613 PostToolUse: [{ hooks: [webhookNotifier] }]

614 }

615 }

616 })) {

617 console.log(message);

618 }

619 ```

620</CodeGroup>

621 

622### Inoltrare le notifiche a Slack

623 

624Utilizzate gli hook `Notification` per ricevere notifiche di sistema dall'agente e inoltrarle a servizi esterni. Le notifiche si attivano per tipi di evento specifici: `permission_prompt` (Claude ha bisogno di autorizzazione), `idle_prompt` (Claude è in attesa di input), `auth_success` (autenticazione completata) e `elicitation_dialog` (Claude sta richiedendo all'utente). Ogni notifica include un campo `message` con una descrizione leggibile dall'uomo e facoltativamente un `title`.

625 

626Questo esempio inoltra ogni notifica a un canale Slack. Richiede un [URL webhook in arrivo di Slack](https://api.slack.com/messaging/webhooks), che create aggiungendo un'app al vostro spazio di lavoro Slack e abilitando i webhook in arrivo:

627 

628<CodeGroup>

629 ```python Python theme={null}

630 import asyncio

631 import json

632 import urllib.request

633 

634 from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, HookMatcher

635 

636 

637 def _send_slack_notification(message):

638 """Synchronous helper that sends a message to Slack via incoming webhook."""

639 data = json.dumps({"text": f"Agent status: {message}"}).encode()

640 req = urllib.request.Request(

641 "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",

642 data=data,

643 headers={"Content-Type": "application/json"},

644 method="POST",

645 )

646 urllib.request.urlopen(req)

647 

648 

649 async def notification_handler(input_data, tool_use_id, context):

650 try:

651 # Run the blocking HTTP call in a thread to avoid blocking the event loop

652 await asyncio.to_thread(_send_slack_notification, input_data.get("message", ""))

653 except Exception as e:

654 print(f"Failed to send notification: {e}")

655 

656 # Return empty object. Notification hooks don't modify agent behavior

657 return {}

658 

659 

660 async def main():

661 options = ClaudeAgentOptions(

662 hooks={

663 # Register the hook for Notification events (no matcher needed)

664 "Notification": [HookMatcher(hooks=[notification_handler])],

665 },

666 )

667 

668 async with ClaudeSDKClient(options=options) as client:

669 await client.query("Analyze this codebase")

670 async for message in client.receive_response():

671 print(message)

672 

673 

674 asyncio.run(main())

675 ```

676 

677 ```typescript TypeScript theme={null}

678 import { query, HookCallback, NotificationHookInput } from "@anthropic-ai/claude-agent-sdk";

679 

680 // Define a hook callback that sends notifications to Slack

681 const notificationHandler: HookCallback = async (input, toolUseID, { signal }) => {

682 // Cast to NotificationHookInput to access the message field

683 const notification = input as NotificationHookInput;

684 

685 try {

686 // POST the notification message to a Slack incoming webhook

687 await fetch("https://hooks.slack.com/services/YOUR/WEBHOOK/URL", {

688 method: "POST",

689 headers: { "Content-Type": "application/json" },

690 body: JSON.stringify({

691 text: `Agent status: ${notification.message}`

692 }),

693 // Pass signal so the request cancels if the hook times out

694 signal

695 });

696 } catch (error) {

697 if (error instanceof Error && error.name === "AbortError") {

698 console.log("Notification cancelled");

699 } else {

700 console.error("Failed to send notification:", error);

701 }

702 }

703 

704 // Return empty object. Notification hooks don't modify agent behavior

705 return {};

706 };

707 

708 // Register the hook for Notification events (no matcher needed)

709 for await (const message of query({

710 prompt: "Analyze this codebase",

711 options: {

712 hooks: {

713 Notification: [{ hooks: [notificationHandler] }]

714 }

715 }

716 })) {

717 console.log(message);

718 }

719 ```

720</CodeGroup>

721 

722## Risolvere i problemi comuni

723 

724### Hook non si attiva

725 

726* Verificate che il nome dell'evento hook sia corretto e sensibile alle maiuscole (`PreToolUse`, non `preToolUse`)

727* Controllate che il vostro modello di matcher corrisponda esattamente al nome dello strumento

728* Assicuratevi che l'hook sia sotto il tipo di evento corretto in `options.hooks`

729* Per gli hook non basati su strumenti come `Stop` e `SubagentStop`, i matcher corrispondono a campi diversi (consultate [modelli di matcher](/it/hooks#matcher-patterns))

730* Gli hooks potrebbero non attivarsi quando l'agente raggiunge il limite [`max_turns`](/it/agent-sdk/python#claude-agent-options) perché la sessione termina prima che gli hooks possano essere eseguiti

731 

732### Matcher non filtra come previsto

733 

734I matcher corrispondono solo ai **nomi degli strumenti**, non ai percorsi dei file o ad altri argomenti. Per filtrare per percorso di file, controllate `tool_input.file_path` all'interno del vostro hook:

735 

736```typescript theme={null}

737const myHook: HookCallback = async (input, toolUseID, { signal }) => {

738 const preInput = input as PreToolUseHookInput;

739 const toolInput = preInput.tool_input as Record<string, unknown>;

740 const filePath = toolInput?.file_path as string;

741 if (!filePath?.endsWith(".md")) return {}; // Skip non-markdown files

742 // Process markdown files...

743 return {};

744};

745```

746 

747### Timeout dell'hook

748 

749* Aumentate il valore `timeout` nella configurazione `HookMatcher`

750* Utilizzate `AbortSignal` dal terzo argomento del callback per gestire l'annullamento con eleganza in TypeScript

751 

752### Strumento bloccato inaspettatamente

753 

754* Controllate tutti gli hook `PreToolUse` per i ritorni `permissionDecision: 'deny'`

755* Aggiungete la registrazione ai vostri hook per vedere quale `permissionDecisionReason` stanno restituendo

756* Verificate che i modelli di matcher non siano troppo ampi (un matcher vuoto corrisponde a tutti gli strumenti)

757 

758### Input modificato non applicato

759 

760* Assicuratevi che `updatedInput` sia all'interno di `hookSpecificOutput`, non al livello superiore:

761 

762 ```typescript theme={null}

763 return {

764 hookSpecificOutput: {

765 hookEventName: "PreToolUse",

766 permissionDecision: "allow",

767 updatedInput: { command: "new command" }

768 }

769 };

770 ```

771 

772* Dovete anche restituire `permissionDecision: 'allow'` affinché la modifica dell'input abbia effetto

773 

774* Includete `hookEventName` in `hookSpecificOutput` per identificare quale tipo di hook è l'output

775 

776### Hook di sessione non disponibili in Python

777 

778`SessionStart` e `SessionEnd` possono essere registrati come hook di callback SDK in TypeScript, ma non sono disponibili nell'SDK Python (`HookEvent` li omette). In Python, sono disponibili solo come [hook dei comandi shell](/it/hooks#hook-events) definiti nei file di impostazioni (ad esempio, `.claude/settings.json`). Per caricare gli hook dei comandi shell dalla vostra applicazione SDK, includete la fonte di impostazione appropriata con [`setting_sources`](/it/agent-sdk/python#setting-source) o [`settingSources`](/it/agent-sdk/typescript#setting-source):

779 

780<CodeGroup>

781 ```python Python theme={null}

782 options = ClaudeAgentOptions(

783 setting_sources=["project"], # Loads .claude/settings.json including hooks

784 )

785 ```

786 

787 ```typescript TypeScript theme={null}

788 const options = {

789 settingSources: ["project"] // Loads .claude/settings.json including hooks

790 };

791 ```

792</CodeGroup>

793 

794Per eseguire la logica di inizializzazione come callback SDK Python, utilizzate il primo messaggio da `client.receive_response()` come trigger.

795 

796### I prompt di autorizzazione dei subagenti si moltiplicano

797 

798Quando si avviano più subagenti, ognuno potrebbe richiedere autorizzazioni separatamente. I subagenti non ereditano automaticamente le autorizzazioni dell'agente genitore. Per evitare prompt ripetuti, utilizzate gli hook `PreToolUse` per approvare automaticamente strumenti specifici o configurate regole di autorizzazione che si applicano alle sessioni dei subagenti.

799 

800### Loop ricorsivi di hook con subagenti

801 

802Un hook `UserPromptSubmit` che avvia subagenti può creare loop infiniti se quei subagenti attivano lo stesso hook. Per prevenire questo:

803 

804* Controllate un indicatore di subagente nell'input dell'hook prima di avviare

805* Utilizzate una variabile condivisa o lo stato della sessione per tracciare se siete già all'interno di un subagente

806* Limitate gli hook per l'esecuzione solo per la sessione dell'agente di livello superiore

807 

808### systemMessage non appare nell'output

809 

810Il campo `systemMessage` aggiunge contesto alla conversazione che il modello vede, ma potrebbe non apparire in tutte le modalità di output SDK. Se avete bisogno di far emergere le decisioni degli hook alla vostra applicazione, registratele separatamente o utilizzate un canale di output dedicato.

811 

812## Risorse correlate

813 

814* [Riferimento degli hooks di Claude Code](/it/hooks): schemi JSON di input/output completi, documentazione degli eventi e modelli di matcher

815* [Guida agli hooks di Claude Code](/it/hooks-guide): esempi di hook dei comandi shell e procedure dettagliate

816* [Riferimento SDK TypeScript](/it/agent-sdk/typescript): tipi di hook, definizioni di input/output e opzioni di configurazione

817* [Riferimento SDK Python](/it/agent-sdk/python): tipi di hook, definizioni di input/output e opzioni di configurazione

818* [Autorizzazioni](/it/agent-sdk/permissions): controllare cosa può fare il vostro agente

819* [Strumenti personalizzati](/it/agent-sdk/custom-tools): creare strumenti per estendere le capacità dell'agente

agent-sdk/hosting.md +142 −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# Hosting dell'Agent SDK

6 

7> Distribuisci e ospita Claude Agent SDK in ambienti di produzione

8 

9Claude Agent SDK differisce dalle tradizionali API LLM senza stato in quanto mantiene lo stato conversazionale ed esegue comandi in un ambiente persistente. Questa guida copre l'architettura, le considerazioni di hosting e le best practice per distribuire agenti basati su SDK in produzione.

10 

11<Info>

12 Per l'indurimento della sicurezza oltre il sandboxing di base (inclusi i controlli di rete, la gestione delle credenziali e le opzioni di isolamento), vedi [Secure Deployment](/it/agent-sdk/secure-deployment).

13</Info>

14 

15## Requisiti di Hosting

16 

17### Sandboxing Basato su Container

18 

19Per la sicurezza e l'isolamento, l'SDK dovrebbe essere eseguito all'interno di un ambiente container sandbox. Questo fornisce isolamento dei processi, limiti di risorse, controllo di rete e filesystem effimeri.

20 

21L'SDK supporta anche [configurazione sandbox programmatica](/it/agent-sdk/typescript#sandbox-settings) per l'esecuzione dei comandi.

22 

23### Requisiti di Sistema

24 

25Ogni istanza SDK richiede:

26 

27* **Dipendenze di runtime**

28 * Python 3.10+ per Python SDK, o Node.js 18+ per TypeScript SDK

29 * Entrambi i pacchetti SDK includono un binario Claude Code nativo per la piattaforma host, quindi non è necessaria un'installazione separata di Claude Code o Node.js per la CLI generata

30 

31* **Allocazione di risorse**

32 * Consigliato: 1GiB RAM, 5GiB di disco e 1 CPU (varia questo in base al tuo compito secondo necessità)

33 

34* **Accesso di rete**

35 * HTTPS in uscita a `api.anthropic.com`

36 * Opzionale: Accesso ai server MCP o strumenti esterni

37 

38## Comprensione dell'Architettura dell'SDK

39 

40A differenza delle chiamate API senza stato, Claude Agent SDK opera come un **processo a lunga esecuzione** che:

41 

42* **Esegue comandi** in un ambiente shell persistente

43* **Gestisce operazioni su file** all'interno di una directory di lavoro

44* **Gestisce l'esecuzione di strumenti** con contesto dalle interazioni precedenti

45 

46## Opzioni di Provider Sandbox

47 

48Diversi provider si specializzano in ambienti container sicuri per l'esecuzione di codice AI:

49 

50* **[Modal Sandbox](https://modal.com/docs/guide/sandbox)** - [implementazione demo](https://modal.com/docs/examples/claude-slack-gif-creator)

51* **[Cloudflare Sandboxes](https://github.com/cloudflare/sandbox-sdk)**

52* **[Daytona](https://www.daytona.io/)**

53* **[E2B](https://e2b.dev/)**

54* **[Fly Machines](https://fly.io/docs/machines/)**

55* **[Vercel Sandbox](https://vercel.com/docs/functions/sandbox)**

56 

57Per opzioni self-hosted (Docker, gVisor, Firecracker) e configurazione dettagliata dell'isolamento, vedi [Isolation Technologies](/it/agent-sdk/secure-deployment#isolation-technologies).

58 

59## Pattern di Distribuzione in Produzione

60 

61### Pattern 1: Sessioni Effimere

62 

63Crea un nuovo container per ogni compito dell'utente, quindi distruggilo al completamento.

64 

65Ideale per compiti una tantum, l'utente può ancora interagire con l'AI mentre il compito è in corso di completamento, ma una volta completato il container viene distrutto.

66 

67**Esempi:**

68 

69* Bug Investigation & Fix: Esegui il debug e risolvi un problema specifico con contesto rilevante

70* Invoice Processing: Estrai e struttura i dati da ricevute/fatture per i sistemi contabili

71* Translation Tasks: Traduci documenti o batch di contenuti tra lingue

72* Image/Video Processing: Applica trasformazioni, ottimizzazioni o estrai metadati da file multimediali

73 

74### Pattern 2: Sessioni a Lunga Esecuzione

75 

76Mantieni istanze di container persistenti per compiti a lunga esecuzione. Spesso esegui *molteplici* processi Claude Agent all'interno del container in base alla domanda.

77 

78Ideale per agenti proattivi che agiscono senza l'input dell'utente, agenti che servono contenuti o agenti che elaborano grandi quantità di messaggi.

79 

80**Esempi:**

81 

82* Email Agent: Monitora i messaggi di posta in arrivo e autonomamente li smista, risponde o intraprende azioni in base al contenuto

83* Site Builder: Ospita siti web personalizzati per utente con capacità di editing dal vivo servite attraverso porte container

84* High-Frequency Chat Bots: Gestisce flussi di messaggi continui da piattaforme come Slack dove i tempi di risposta rapidi sono critici

85 

86### Pattern 3: Sessioni Ibride

87 

88Container effimeri che vengono idratati con cronologia e stato, possibilmente da un database o dalle funzionalità di ripresa della sessione dell'SDK.

89 

90Ideale per container con interazione intermittente dall'utente che avvia il lavoro e si spegne quando il lavoro è completato ma può essere continuato.

91 

92**Esempi:**

93 

94* Personal Project Manager: Aiuta a gestire progetti in corso con check-in intermittenti, mantiene il contesto di compiti, decisioni e progressi

95* Deep Research: Conduce compiti di ricerca multi-ora, salva i risultati e riprende l'indagine quando l'utente ritorna

96* Customer Support Agent: Gestisce ticket di supporto che si estendono su più interazioni, carica la cronologia dei ticket e il contesto del cliente

97 

98### Pattern 4: Container Singoli

99 

100Esegui molteplici processi Claude Agent SDK in un container globale.

101 

102Ideale per agenti che devono collaborare strettamente insieme. Questo è probabilmente il pattern meno popolare perché dovrai impedire agli agenti di sovrascrivere l'uno l'altro.

103 

104**Esempi:**

105 

106* **Simulations**: Agenti che interagiscono tra loro in simulazioni come videogiochi.

107 

108## FAQ

109 

110### Come comunico con i miei sandbox?

111 

112Quando ospiti in container, esponi porte per comunicare con le tue istanze SDK. La tua applicazione può esporre endpoint HTTP/WebSocket per client esterni mentre l'SDK viene eseguito internamente all'interno del container.

113 

114### Qual è il costo dell'hosting di un container?

115 

116Il costo dominante della gestione di agenti è i token; i container variano in base a quello che provisioni, ma un costo minimo è approssimativamente 5 centesimi all'ora di esecuzione.

117 

118### Quando dovrei spegnere i container inattivi rispetto a mantenerli caldi?

119 

120Questo è probabilmente dipendente dal provider, diversi provider sandbox ti permetteranno di impostare criteri diversi per i timeout di inattività dopo i quali un sandbox potrebbe spegnersi.

121Vorrai sintonizzare questo timeout in base a quanto frequentemente pensi che la risposta dell'utente potrebbe essere.

122 

123### Con quale frequenza dovrei aggiornare Claude Code CLI?

124 

125Claude Code CLI è versionato con semver, quindi eventuali modifiche di rottura saranno versionate.

126 

127### Come monitoro la salute del container e le prestazioni dell'agente?

128 

129Poiché i container sono solo server, la stessa infrastruttura di logging che usi per il backend funzionerà per i container.

130 

131### Quanto tempo può durare una sessione di agente prima del timeout?

132 

133Una sessione di agente non scadrà, ma considera di impostare una proprietà 'maxTurns' per impedire a Claude di rimanere bloccato in un ciclo.

134 

135## Passaggi Successivi

136 

137* [Secure Deployment](/it/agent-sdk/secure-deployment) - Controlli di rete, gestione delle credenziali e indurimento dell'isolamento

138* [TypeScript SDK - Sandbox Settings](/it/agent-sdk/typescript#sandbox-settings) - Configura sandbox programmaticamente

139* [Sessions Guide](/it/agent-sdk/sessions) - Scopri la gestione delle sessioni

140* [Permissions](/it/agent-sdk/permissions) - Configura i permessi degli strumenti

141* [Cost Tracking](/it/agent-sdk/cost-tracking) - Monitora l'utilizzo dell'API

142* [MCP Integration](/it/agent-sdk/mcp) - Estendi con strumenti personalizzati

agent-sdk/overview.md +607 −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 dell'Agent SDK

6 

7> Costruisci agenti AI di produzione con Claude Code come libreria

8 

9<Note>

10 L'SDK di Claude Code è stato rinominato in Claude Agent SDK. Se stai migrando dal vecchio SDK, consulta la [Guida alla migrazione](/it/agent-sdk/migration-guide).

11</Note>

12 

13Costruisci agenti AI che leggono autonomamente file, eseguono comandi, cercano sul web, modificano codice e molto altro. L'Agent SDK ti offre gli stessi strumenti, il ciclo dell'agente e la gestione del contesto che alimentano Claude Code, programmabili in Python e TypeScript.

14 

15<Note>

16 Opus 4.7 (`claude-opus-4-7`) richiede Agent SDK v0.2.111 o successivo. Se vedi un errore API `thinking.type.enabled`, consulta [Troubleshooting](/it/agent-sdk/quickstart#troubleshooting).

17</Note>

18 

19<CodeGroup>

20 ```python Python theme={null}

21 import asyncio

22 from claude_agent_sdk import query, ClaudeAgentOptions

23 

24 

25 async def main():

26 async for message in query(

27 prompt="Find and fix the bug in auth.py",

28 options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"]),

29 ):

30 print(message) # Claude reads the file, finds the bug, edits it

31 

32 

33 asyncio.run(main())

34 ```

35 

36 ```typescript TypeScript theme={null}

37 import { query } from "@anthropic-ai/claude-agent-sdk";

38 

39 for await (const message of query({

40 prompt: "Find and fix the bug in auth.ts",

41 options: { allowedTools: ["Read", "Edit", "Bash"] }

42 })) {

43 console.log(message); // Claude reads the file, finds the bug, edits it

44 }

45 ```

46</CodeGroup>

47 

48L'Agent SDK include strumenti integrati per leggere file, eseguire comandi e modificare codice, quindi il tuo agente può iniziare a lavorare immediatamente senza che tu implementi l'esecuzione degli strumenti. Tuffati nella guida rapida o esplora agenti reali costruiti con l'SDK:

49 

50<CardGroup cols={2}>

51 <Card title="Quickstart" icon="play" href="/it/agent-sdk/quickstart">

52 Costruisci un agente di correzione dei bug in pochi minuti

53 </Card>

54 

55 <Card title="Example agents" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">

56 Assistente email, agente di ricerca e altro ancora

57 </Card>

58</CardGroup>

59 

60## Inizia

61 

62<Steps>

63 <Step title="Installa l'SDK">

64 <Tabs>

65 <Tab title="TypeScript">

66 ```bash theme={null}

67 npm install @anthropic-ai/claude-agent-sdk

68 ```

69 </Tab>

70 

71 <Tab title="Python">

72 ```bash theme={null}

73 pip install claude-agent-sdk

74 ```

75 </Tab>

76 </Tabs>

77 

78 <Note>

79 L'SDK TypeScript raggruppa un binario nativo di Claude Code per la tua piattaforma come dipendenza opzionale, quindi non è necessario installare Claude Code separatamente.

80 </Note>

81 </Step>

82 

83 <Step title="Imposta la tua chiave API">

84 Ottieni una chiave API dalla [Console](https://platform.claude.com/), quindi impostala come variabile di ambiente:

85 

86 ```bash theme={null}

87 export ANTHROPIC_API_KEY=your-api-key

88 ```

89 

90 L'SDK supporta anche l'autenticazione tramite provider API di terze parti:

91 

92 * **Amazon Bedrock**: imposta la variabile di ambiente `CLAUDE_CODE_USE_BEDROCK=1` e configura le credenziali AWS

93 * **Google Vertex AI**: imposta la variabile di ambiente `CLAUDE_CODE_USE_VERTEX=1` e configura le credenziali di Google Cloud

94 * **Microsoft Azure**: imposta la variabile di ambiente `CLAUDE_CODE_USE_FOUNDRY=1` e configura le credenziali di Azure

95 

96 Consulta le guide di configurazione per [Bedrock](/it/amazon-bedrock), [Vertex AI](/it/google-vertex-ai) o [Azure AI Foundry](/it/microsoft-foundry) per i dettagli.

97 

98 <Note>

99 Se non precedentemente approvato, Anthropic non consente agli sviluppatori di terze parti di offrire l'accesso a claude.ai o limiti di velocità per i loro prodotti, inclusi gli agenti costruiti su Claude Agent SDK. Utilizza invece i metodi di autenticazione con chiave API descritti in questo documento.

100 </Note>

101 </Step>

102 

103 <Step title="Esegui il tuo primo agente">

104 Questo esempio crea un agente che elenca i file nella tua directory corrente utilizzando strumenti integrati.

105 

106 <CodeGroup>

107 ```python Python theme={null}

108 import asyncio

109 from claude_agent_sdk import query, ClaudeAgentOptions

110 

111 

112 async def main():

113 async for message in query(

114 prompt="What files are in this directory?",

115 options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]),

116 ):

117 if hasattr(message, "result"):

118 print(message.result)

119 

120 

121 asyncio.run(main())

122 ```

123 

124 ```typescript TypeScript theme={null}

125 import { query } from "@anthropic-ai/claude-agent-sdk";

126 

127 for await (const message of query({

128 prompt: "What files are in this directory?",

129 options: { allowedTools: ["Bash", "Glob"] }

130 })) {

131 if ("result" in message) console.log(message.result);

132 }

133 ```

134 </CodeGroup>

135 </Step>

136</Steps>

137 

138**Pronto a costruire?** Segui il [Quickstart](/it/agent-sdk/quickstart) per creare un agente che trova e corregge i bug in pochi minuti.

139 

140## Capacità

141 

142Tutto ciò che rende Claude Code potente è disponibile nell'SDK:

143 

144<Tabs>

145 <Tab title="Built-in tools">

146 Il tuo agente può leggere file, eseguire comandi e cercare codebase subito. Gli strumenti chiave includono:

147 

148 | Tool | Cosa fa |

149 | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |

150 | **Read** | Leggi qualsiasi file nella directory di lavoro |

151 | **Write** | Crea nuovi file |

152 | **Edit** | Apporta modifiche precise ai file esistenti |

153 | **Bash** | Esegui comandi di terminale, script, operazioni git |

154 | **Monitor** | Osserva uno script in background e reagisci a ogni riga di output come evento |

155 | **Glob** | Trova file per pattern (`**/*.ts`, `src/**/*.py`) |

156 | **Grep** | Cerca contenuti di file con regex |

157 | **WebSearch** | Cerca sul web informazioni attuali |

158 | **WebFetch** | Recupera e analizza il contenuto della pagina web |

159 | **[AskUserQuestion](/it/agent-sdk/user-input#handle-clarifying-questions)** | Poni all'utente domande di chiarimento con opzioni a scelta multipla |

160 

161 Questo esempio crea un agente che cerca nella tua codebase i commenti TODO:

162 

163 <CodeGroup>

164 ```python Python theme={null}

165 import asyncio

166 from claude_agent_sdk import query, ClaudeAgentOptions

167 

168 

169 async def main():

170 async for message in query(

171 prompt="Find all TODO comments and create a summary",

172 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"]),

173 ):

174 if hasattr(message, "result"):

175 print(message.result)

176 

177 

178 asyncio.run(main())

179 ```

180 

181 ```typescript TypeScript theme={null}

182 import { query } from "@anthropic-ai/claude-agent-sdk";

183 

184 for await (const message of query({

185 prompt: "Find all TODO comments and create a summary",

186 options: { allowedTools: ["Read", "Glob", "Grep"] }

187 })) {

188 if ("result" in message) console.log(message.result);

189 }

190 ```

191 </CodeGroup>

192 </Tab>

193 

194 <Tab title="Hooks">

195 Esegui codice personalizzato in punti chiave del ciclo di vita dell'agente. Gli hooks dell'SDK utilizzano funzioni di callback per convalidare, registrare, bloccare o trasformare il comportamento dell'agente.

196 

197 **Hook disponibili:** `PreToolUse`, `PostToolUse`, `Stop`, `SessionStart`, `SessionEnd`, `UserPromptSubmit` e altri.

198 

199 Questo esempio registra tutte le modifiche ai file in un file di audit:

200 

201 <CodeGroup>

202 ```python Python theme={null}

203 import asyncio

204 from datetime import datetime

205 from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher

206 

207 

208 async def log_file_change(input_data, tool_use_id, context):

209 file_path = input_data.get("tool_input", {}).get("file_path", "unknown")

210 with open("./audit.log", "a") as f:

211 f.write(f"{datetime.now()}: modified {file_path}\n")

212 return {}

213 

214 

215 async def main():

216 async for message in query(

217 prompt="Refactor utils.py to improve readability",

218 options=ClaudeAgentOptions(

219 permission_mode="acceptEdits",

220 hooks={

221 "PostToolUse": [

222 HookMatcher(matcher="Edit|Write", hooks=[log_file_change])

223 ]

224 },

225 ),

226 ):

227 if hasattr(message, "result"):

228 print(message.result)

229 

230 

231 asyncio.run(main())

232 ```

233 

234 ```typescript TypeScript theme={null}

235 import { query, HookCallback } from "@anthropic-ai/claude-agent-sdk";

236 import { appendFile } from "fs/promises";

237 

238 const logFileChange: HookCallback = async (input) => {

239 const filePath = (input as any).tool_input?.file_path ?? "unknown";

240 await appendFile("./audit.log", `${new Date().toISOString()}: modified ${filePath}\n`);

241 return {};

242 };

243 

244 for await (const message of query({

245 prompt: "Refactor utils.py to improve readability",

246 options: {

247 permissionMode: "acceptEdits",

248 hooks: {

249 PostToolUse: [{ matcher: "Edit|Write", hooks: [logFileChange] }]

250 }

251 }

252 })) {

253 if ("result" in message) console.log(message.result);

254 }

255 ```

256 </CodeGroup>

257 

258 [Scopri di più su hooks →](/it/agent-sdk/hooks)

259 </Tab>

260 

261 <Tab title="Subagents">

262 Genera agenti specializzati per gestire sottoattività mirate. Il tuo agente principale delega il lavoro e i subagenti riferiscono i risultati.

263 

264 Definisci agenti personalizzati con istruzioni specializzate. Includi `Agent` in `allowedTools` poiché i subagenti vengono invocati tramite lo strumento Agent:

265 

266 <CodeGroup>

267 ```python Python theme={null}

268 import asyncio

269 from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition

270 

271 

272 async def main():

273 async for message in query(

274 prompt="Use the code-reviewer agent to review this codebase",

275 options=ClaudeAgentOptions(

276 allowed_tools=["Read", "Glob", "Grep", "Agent"],

277 agents={

278 "code-reviewer": AgentDefinition(

279 description="Expert code reviewer for quality and security reviews.",

280 prompt="Analyze code quality and suggest improvements.",

281 tools=["Read", "Glob", "Grep"],

282 )

283 },

284 ),

285 ):

286 if hasattr(message, "result"):

287 print(message.result)

288 

289 

290 asyncio.run(main())

291 ```

292 

293 ```typescript TypeScript theme={null}

294 import { query } from "@anthropic-ai/claude-agent-sdk";

295 

296 for await (const message of query({

297 prompt: "Use the code-reviewer agent to review this codebase",

298 options: {

299 allowedTools: ["Read", "Glob", "Grep", "Agent"],

300 agents: {

301 "code-reviewer": {

302 description: "Expert code reviewer for quality and security reviews.",

303 prompt: "Analyze code quality and suggest improvements.",

304 tools: ["Read", "Glob", "Grep"]

305 }

306 }

307 }

308 })) {

309 if ("result" in message) console.log(message.result);

310 }

311 ```

312 </CodeGroup>

313 

314 I messaggi dal contesto di un subagente includono un campo `parent_tool_use_id`, che ti consente di tracciare quali messaggi appartengono a quale esecuzione di subagente.

315 

316 [Scopri di più su subagenti →](/it/agent-sdk/subagents)

317 </Tab>

318 

319 <Tab title="MCP">

320 Connettiti a sistemi esterni tramite il Model Context Protocol: database, browser, API e [centinaia di altri](https://github.com/modelcontextprotocol/servers).

321 

322 Questo esempio connette il [server Playwright MCP](https://github.com/microsoft/playwright-mcp) per dare al tuo agente capacità di automazione del browser:

323 

324 <CodeGroup>

325 ```python Python theme={null}

326 import asyncio

327 from claude_agent_sdk import query, ClaudeAgentOptions

328 

329 

330 async def main():

331 async for message in query(

332 prompt="Open example.com and describe what you see",

333 options=ClaudeAgentOptions(

334 mcp_servers={

335 "playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]}

336 }

337 ),

338 ):

339 if hasattr(message, "result"):

340 print(message.result)

341 

342 

343 asyncio.run(main())

344 ```

345 

346 ```typescript TypeScript theme={null}

347 import { query } from "@anthropic-ai/claude-agent-sdk";

348 

349 for await (const message of query({

350 prompt: "Open example.com and describe what you see",

351 options: {

352 mcpServers: {

353 playwright: { command: "npx", args: ["@playwright/mcp@latest"] }

354 }

355 }

356 })) {

357 if ("result" in message) console.log(message.result);

358 }

359 ```

360 </CodeGroup>

361 

362 [Scopri di più su MCP →](/it/agent-sdk/mcp)

363 </Tab>

364 

365 <Tab title="Permissions">

366 Controlla esattamente quali strumenti il tuo agente può utilizzare. Consenti operazioni sicure, blocca quelle pericolose o richiedi approvazione per azioni sensibili.

367 

368 <Note>

369 Per prompt di approvazione interattivi e lo strumento `AskUserQuestion`, consulta [Gestisci approvazioni e input dell'utente](/it/agent-sdk/user-input).

370 </Note>

371 

372 Questo esempio crea un agente di sola lettura che può analizzare ma non modificare il codice. `allowed_tools` pre-approva `Read`, `Glob` e `Grep`.

373 

374 <CodeGroup>

375 ```python Python theme={null}

376 import asyncio

377 from claude_agent_sdk import query, ClaudeAgentOptions

378 

379 

380 async def main():

381 async for message in query(

382 prompt="Review this code for best practices",

383 options=ClaudeAgentOptions(

384 allowed_tools=["Read", "Glob", "Grep"],

385 ),

386 ):

387 if hasattr(message, "result"):

388 print(message.result)

389 

390 

391 asyncio.run(main())

392 ```

393 

394 ```typescript TypeScript theme={null}

395 import { query } from "@anthropic-ai/claude-agent-sdk";

396 

397 for await (const message of query({

398 prompt: "Review this code for best practices",

399 options: {

400 allowedTools: ["Read", "Glob", "Grep"]

401 }

402 })) {

403 if ("result" in message) console.log(message.result);

404 }

405 ```

406 </CodeGroup>

407 

408 [Scopri di più su permessi →](/it/agent-sdk/permissions)

409 </Tab>

410 

411 <Tab title="Sessions">

412 Mantieni il contesto su più scambi. Claude ricorda i file letti, l'analisi eseguita e la cronologia della conversazione. Riprendi le sessioni in seguito o dividile per esplorare approcci diversi.

413 

414 Questo esempio acquisisce l'ID della sessione dalla prima query, quindi riprende per continuare con il contesto completo:

415 

416 <CodeGroup>

417 ```python Python theme={null}

418 import asyncio

419 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage, ResultMessage

420 

421 

422 async def main():

423 session_id = None

424 

425 # First query: capture the session ID

426 async for message in query(

427 prompt="Read the authentication module",

428 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob"]),

429 ):

430 if isinstance(message, SystemMessage) and message.subtype == "init":

431 session_id = message.data["session_id"]

432 

433 # Resume with full context from the first query

434 async for message in query(

435 prompt="Now find all places that call it", # "it" = auth module

436 options=ClaudeAgentOptions(resume=session_id),

437 ):

438 if isinstance(message, ResultMessage):

439 print(message.result)

440 

441 

442 asyncio.run(main())

443 ```

444 

445 ```typescript TypeScript theme={null}

446 import { query } from "@anthropic-ai/claude-agent-sdk";

447 

448 let sessionId: string | undefined;

449 

450 // First query: capture the session ID

451 for await (const message of query({

452 prompt: "Read the authentication module",

453 options: { allowedTools: ["Read", "Glob"] }

454 })) {

455 if (message.type === "system" && message.subtype === "init") {

456 sessionId = message.session_id;

457 }

458 }

459 

460 // Resume with full context from the first query

461 for await (const message of query({

462 prompt: "Now find all places that call it", // "it" = auth module

463 options: { resume: sessionId }

464 })) {

465 if ("result" in message) console.log(message.result);

466 }

467 ```

468 </CodeGroup>

469 

470 [Scopri di più su sessioni →](/it/agent-sdk/sessions)

471 </Tab>

472</Tabs>

473 

474### Funzionalità di Claude Code

475 

476L'SDK supporta anche la configurazione basata su filesystem di Claude Code. Con le opzioni predefinite, l'SDK carica questi da `.claude/` nella tua directory di lavoro e `~/.claude/`. Per limitare quali fonti caricare, imposta `setting_sources` (Python) o `settingSources` (TypeScript) nelle tue opzioni.

477 

478| Funzionalità | Descrizione | Posizione |

479| ------------------------------------------------ | ------------------------------------------------------- | --------------------------------------- |

480| [Skills](/it/agent-sdk/skills) | Capacità specializzate definite in Markdown | `.claude/skills/*/SKILL.md` |

481| [Slash commands](/it/agent-sdk/slash-commands) | Comandi personalizzati per attività comuni | `.claude/commands/*.md` |

482| [Memory](/it/agent-sdk/modifying-system-prompts) | Contesto del progetto e istruzioni | `CLAUDE.md` o `.claude/CLAUDE.md` |

483| [Plugins](/it/agent-sdk/plugins) | Estendi con comandi personalizzati, agenti e server MCP | Programmatico tramite opzione `plugins` |

484 

485## Confronta l'Agent SDK con altri strumenti Claude

486 

487La piattaforma Claude offre più modi per costruire con Claude. Ecco come si inserisce l'Agent SDK:

488 

489<Tabs>

490 <Tab title="Agent SDK vs Client SDK">

491 L'[Anthropic Client SDK](https://platform.claude.com/docs/it/api/client-sdks) ti offre accesso diretto all'API: invii prompt e implementi tu stesso l'esecuzione degli strumenti. L'**Agent SDK** ti offre Claude con esecuzione degli strumenti integrata.

492 

493 Con il Client SDK, implementi un ciclo di strumenti. Con l'Agent SDK, Claude lo gestisce:

494 

495 <CodeGroup>

496 ```python Python theme={null}

497 # Client SDK: You implement the tool loop

498 response = client.messages.create(...)

499 while response.stop_reason == "tool_use":

500 result = your_tool_executor(response.tool_use)

501 response = client.messages.create(tool_result=result, **params)

502 

503 # Agent SDK: Claude handles tools autonomously

504 async for message in query(prompt="Fix the bug in auth.py"):

505 print(message)

506 ```

507 

508 ```typescript TypeScript theme={null}

509 // Client SDK: You implement the tool loop

510 let response = await client.messages.create({ ...params });

511 while (response.stop_reason === "tool_use") {

512 const result = yourToolExecutor(response.tool_use);

513 response = await client.messages.create({ tool_result: result, ...params });

514 }

515 

516 // Agent SDK: Claude handles tools autonomously

517 for await (const message of query({ prompt: "Fix the bug in auth.ts" })) {

518 console.log(message);

519 }

520 ```

521 </CodeGroup>

522 </Tab>

523 

524 <Tab title="Agent SDK vs Claude Code CLI">

525 Stesse capacità, interfaccia diversa:

526 

527 | Caso d'uso | Scelta migliore |

528 | --------------------------- | --------------- |

529 | Sviluppo interattivo | CLI |

530 | Pipeline CI/CD | SDK |

531 | Applicazioni personalizzate | SDK |

532 | Attività una tantum | CLI |

533 | Automazione di produzione | SDK |

534 

535 Molti team utilizzano entrambi: CLI per lo sviluppo quotidiano, SDK per la produzione. I flussi di lavoro si traducono direttamente tra loro.

536 </Tab>

537 

538 <Tab title="Agent SDK vs Managed Agents">

539 [Managed Agents](https://platform.claude.com/docs/it/managed-agents/overview) è un'API REST ospitata: Anthropic esegue l'agente e la sandbox, e la tua applicazione invia eventi e riceve i risultati in streaming. L'**Agent SDK** è una libreria che esegue il ciclo dell'agente all'interno del tuo processo.

540 

541 | | Agent SDK | Managed Agents |

542 | ---------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |

543 | **Viene eseguito in** | Il tuo processo, la tua infrastruttura | Infrastruttura gestita da Anthropic |

544 | **Interfaccia** | Libreria Python o TypeScript | API REST |

545 | **L'agente lavora su** | File sulla tua infrastruttura | Una sandbox gestita per sessione |

546 | **Stato della sessione** | JSONL sul tuo filesystem | Log degli eventi ospitato da Anthropic |

547 | **Strumenti personalizzati** | Funzioni Python o TypeScript in-process | Claude attiva lo strumento; tu esegui e restituisci i risultati |

548 | **Ideale per** | Prototipazione locale, agenti che lavorano direttamente sul tuo filesystem e servizi | Agenti di produzione senza gestire infrastruttura di sandbox o sessione, sessioni a lunga durata e asincrone |

549 

550 Un percorso comune è prototipare con l'Agent SDK localmente, quindi passare a Managed Agents per la produzione.

551 </Tab>

552</Tabs>

553 

554## Changelog

555 

556Visualizza il changelog completo per gli aggiornamenti dell'SDK, le correzioni di bug e le nuove funzionalità:

557 

558* **TypeScript SDK**: [visualizza CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md)

559* **Python SDK**: [visualizza CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md)

560 

561## Segnalazione di bug

562 

563Se riscontri bug o problemi con l'Agent SDK:

564 

565* **TypeScript SDK**: [segnala i problemi su GitHub](https://github.com/anthropics/claude-agent-sdk-typescript/issues)

566* **Python SDK**: [segnala i problemi su GitHub](https://github.com/anthropics/claude-agent-sdk-python/issues)

567 

568## Linee guida di branding

569 

570Per i partner che integrano Claude Agent SDK, l'uso del branding Claude è facoltativo. Quando fai riferimento a Claude nel tuo prodotto:

571 

572**Consentito:**

573 

574* "Claude Agent" (preferito per i menu a discesa)

575* "Claude" (quando già all'interno di un menu etichettato "Agents")

576* "{YourAgentName} Powered by Claude" (se hai un nome di agente esistente)

577 

578**Non consentito:**

579 

580* "Claude Code" o "Claude Code Agent"

581* Arte ASCII con branding Claude Code o elementi visivi che imitano Claude Code

582 

583Il tuo prodotto dovrebbe mantenere il suo proprio branding e non sembrare Claude Code o alcun prodotto Anthropic. Per domande sulla conformità del branding, contatta il [team di vendita](https://www.anthropic.com/contact-sales) di Anthropic.

584 

585## Licenza e termini

586 

587L'uso di Claude Agent SDK è disciplinato dai [Termini di servizio commerciali di Anthropic](https://www.anthropic.com/legal/commercial-terms), incluso quando lo utilizzi per alimentare prodotti e servizi che metti a disposizione dei tuoi clienti e utenti finali, tranne nella misura in cui un componente o una dipendenza specifica è coperta da una licenza diversa come indicato nel file LICENSE di quel componente.

588 

589## Passaggi successivi

590 

591<CardGroup cols={2}>

592 <Card title="Quickstart" icon="play" href="/it/agent-sdk/quickstart">

593 Costruisci un agente che trova e corregge i bug in pochi minuti

594 </Card>

595 

596 <Card title="Example agents" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">

597 Assistente email, agente di ricerca e altro ancora

598 </Card>

599 

600 <Card title="TypeScript SDK" icon="code" href="/it/agent-sdk/typescript">

601 Riferimento API TypeScript completo ed esempi

602 </Card>

603 

604 <Card title="Python SDK" icon="code" href="/it/agent-sdk/python">

605 Riferimento API Python completo ed esempi

606 </Card>

607</CardGroup>

agent-sdk/plugins.md +342 −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# Plugins nell'SDK

6 

7> Carica plugin personalizzati per estendere Claude Code con comandi, agenti, skills e hooks tramite l'Agent SDK

8 

9I plugin ti permettono di estendere Claude Code con funzionalità personalizzate che possono essere condivise tra i progetti. Attraverso l'Agent SDK, puoi caricare programmaticamente i plugin da directory locali per aggiungere comandi slash personalizzati, agenti, skills, hooks e server MCP alle tue sessioni di agente.

10 

11## Cosa sono i plugin?

12 

13I plugin sono pacchetti di estensioni di Claude Code che possono includere:

14 

15* **Skills**: Capacità richiamate dal modello che Claude utilizza autonomamente (possono anche essere richiamate con `/skill-name`)

16* **Agents**: Subagenti specializzati per compiti specifici

17* **Hooks**: Gestori di eventi che rispondono all'uso degli strumenti e ad altri eventi

18* **MCP servers**: Integrazioni di strumenti esterni tramite Model Context Protocol

19 

20<Note>

21 La directory `commands/` è un formato legacy. Usa `skills/` per i nuovi plugin. Claude Code continua a supportare entrambi i formati per la compatibilità con le versioni precedenti.

22</Note>

23 

24Per informazioni complete sulla struttura dei plugin e su come creare plugin, vedi [Plugins](/it/plugins).

25 

26## Caricamento dei plugin

27 

28Carica i plugin fornendo i loro percorsi del file system locale nella configurazione delle opzioni. Il campo `type` deve essere `"local"`, l'unico valore che l'SDK accetta. Per utilizzare un plugin distribuito tramite un [marketplace](/it/plugin-marketplaces) o un repository remoto, scaricalo prima e fornisci il percorso della directory locale. L'SDK supporta il caricamento di più plugin da posizioni diverse.

29 

30<CodeGroup>

31 ```typescript TypeScript theme={null}

32 import { query } from "@anthropic-ai/claude-agent-sdk";

33 

34 for await (const message of query({

35 prompt: "Hello",

36 options: {

37 plugins: [

38 { type: "local", path: "./my-plugin" },

39 { type: "local", path: "/absolute/path/to/another-plugin" }

40 ]

41 }

42 })) {

43 // Plugin commands, agents, and other features are now available

44 }

45 ```

46 

47 ```python Python theme={null}

48 import asyncio

49 from claude_agent_sdk import query

50 

51 

52 async def main():

53 async for message in query(

54 prompt="Hello",

55 options={

56 "plugins": [

57 {"type": "local", "path": "./my-plugin"},

58 {"type": "local", "path": "/absolute/path/to/another-plugin"},

59 ]

60 },

61 ):

62 # Plugin commands, agents, and other features are now available

63 pass

64 

65 

66 asyncio.run(main())

67 ```

68</CodeGroup>

69 

70### Specifiche dei percorsi

71 

72I percorsi dei plugin possono essere:

73 

74* **Percorsi relativi**: Risolti rispetto alla tua directory di lavoro corrente (ad esempio, `"./plugins/my-plugin"`)

75* **Percorsi assoluti**: Percorsi completi del file system (ad esempio, `"/home/user/plugins/my-plugin"`)

76 

77<Note>

78 Il percorso deve puntare alla directory radice del plugin (la directory contenente `.claude-plugin/plugin.json`).

79</Note>

80 

81## Verifica dell'installazione del plugin

82 

83Quando i plugin si caricano correttamente, appaiono nel messaggio di inizializzazione del sistema. Puoi verificare che i tuoi plugin siano disponibili:

84 

85<CodeGroup>

86 ```typescript TypeScript theme={null}

87 import { query } from "@anthropic-ai/claude-agent-sdk";

88 

89 for await (const message of query({

90 prompt: "Hello",

91 options: {

92 plugins: [{ type: "local", path: "./my-plugin" }]

93 }

94 })) {

95 if (message.type === "system" && message.subtype === "init") {

96 // Check loaded plugins

97 console.log("Plugins:", message.plugins);

98 // Example: [{ name: "my-plugin", path: "./my-plugin" }]

99 

100 // Check available commands from plugins

101 console.log("Commands:", message.slash_commands);

102 // Example: ["/help", "/compact", "my-plugin:custom-command"]

103 }

104 }

105 ```

106 

107 ```python Python theme={null}

108 import asyncio

109 from claude_agent_sdk import query

110 

111 

112 async def main():

113 async for message in query(

114 prompt="Hello", options={"plugins": [{"type": "local", "path": "./my-plugin"}]}

115 ):

116 if message.type == "system" and message.subtype == "init":

117 # Check loaded plugins

118 print("Plugins:", message.data.get("plugins"))

119 # Example: [{"name": "my-plugin", "path": "./my-plugin"}]

120 

121 # Check available commands from plugins

122 print("Commands:", message.data.get("slash_commands"))

123 # Example: ["/help", "/compact", "my-plugin:custom-command"]

124 

125 

126 asyncio.run(main())

127 ```

128</CodeGroup>

129 

130## Utilizzo delle skills dei plugin

131 

132Le skills dai plugin vengono automaticamente associate allo spazio dei nomi del plugin per evitare conflitti. Quando richiamate come comandi slash, il formato è `plugin-name:skill-name`.

133 

134<CodeGroup>

135 ```typescript TypeScript theme={null}

136 import { query } from "@anthropic-ai/claude-agent-sdk";

137 

138 // Load a plugin with a custom /greet skill

139 for await (const message of query({

140 prompt: "/my-plugin:greet", // Use plugin skill with namespace

141 options: {

142 plugins: [{ type: "local", path: "./my-plugin" }]

143 }

144 })) {

145 // Claude executes the custom greeting skill from the plugin

146 if (message.type === "assistant") {

147 console.log(message.message.content);

148 }

149 }

150 ```

151 

152 ```python Python theme={null}

153 import asyncio

154 from claude_agent_sdk import query, AssistantMessage, TextBlock

155 

156 

157 async def main():

158 # Load a plugin with a custom /greet skill

159 async for message in query(

160 prompt="/demo-plugin:greet", # Use plugin skill with namespace

161 options={"plugins": [{"type": "local", "path": "./plugins/demo-plugin"}]},

162 ):

163 # Claude executes the custom greeting skill from the plugin

164 if isinstance(message, AssistantMessage):

165 for block in message.content:

166 if isinstance(block, TextBlock):

167 print(f"Claude: {block.text}")

168 

169 

170 asyncio.run(main())

171 ```

172</CodeGroup>

173 

174<Note>

175 Se hai installato un plugin tramite la CLI (ad esempio, `/plugin install my-plugin@marketplace`), puoi comunque utilizzarlo nell'SDK fornendo il suo percorso di installazione. Controlla `~/.claude/plugins/` per i plugin installati tramite CLI.

176</Note>

177 

178## Esempio completo

179 

180Ecco un esempio completo che dimostra il caricamento e l'utilizzo dei plugin:

181 

182<CodeGroup>

183 ```typescript TypeScript theme={null}

184 import { query } from "@anthropic-ai/claude-agent-sdk";

185 import * as path from "path";

186 

187 async function runWithPlugin() {

188 const pluginPath = path.join(__dirname, "plugins", "my-plugin");

189 

190 console.log("Loading plugin from:", pluginPath);

191 

192 for await (const message of query({

193 prompt: "What custom commands do you have available?",

194 options: {

195 plugins: [{ type: "local", path: pluginPath }],

196 maxTurns: 3

197 }

198 })) {

199 if (message.type === "system" && message.subtype === "init") {

200 console.log("Loaded plugins:", message.plugins);

201 console.log("Available commands:", message.slash_commands);

202 }

203 

204 if (message.type === "assistant") {

205 console.log("Assistant:", message.message.content);

206 }

207 }

208 }

209 

210 runWithPlugin().catch(console.error);

211 ```

212 

213 ```python Python theme={null}

214 #!/usr/bin/env python3

215 """Example demonstrating how to use plugins with the Agent SDK."""

216 

217 from pathlib import Path

218 import anyio

219 from claude_agent_sdk import (

220 AssistantMessage,

221 ClaudeAgentOptions,

222 TextBlock,

223 query,

224 )

225 

226 

227 async def run_with_plugin():

228 """Example using a custom plugin."""

229 plugin_path = Path(__file__).parent / "plugins" / "demo-plugin"

230 

231 print(f"Loading plugin from: {plugin_path}")

232 

233 options = ClaudeAgentOptions(

234 plugins=[{"type": "local", "path": str(plugin_path)}],

235 max_turns=3,

236 )

237 

238 async for message in query(

239 prompt="What custom commands do you have available?", options=options

240 ):

241 if message.type == "system" and message.subtype == "init":

242 print(f"Loaded plugins: {message.data.get('plugins')}")

243 print(f"Available commands: {message.data.get('slash_commands')}")

244 

245 if isinstance(message, AssistantMessage):

246 for block in message.content:

247 if isinstance(block, TextBlock):

248 print(f"Assistant: {block.text}")

249 

250 

251 if __name__ == "__main__":

252 anyio.run(run_with_plugin)

253 ```

254</CodeGroup>

255 

256## Riferimento della struttura del plugin

257 

258Una directory di plugin deve contenere un file manifest `.claude-plugin/plugin.json`. Può facoltativamente includere:

259 

260```text theme={null}

261my-plugin/

262├── .claude-plugin/

263│ └── plugin.json # Required: plugin manifest

264├── skills/ # Agent Skills (invoked autonomously or via /skill-name)

265│ └── my-skill/

266│ └── SKILL.md

267├── commands/ # Legacy: use skills/ instead

268│ └── custom-cmd.md

269├── agents/ # Custom agents

270│ └── specialist.md

271├── hooks/ # Event handlers

272│ └── hooks.json

273└── .mcp.json # MCP server definitions

274```

275 

276Per informazioni dettagliate sulla creazione di plugin, vedi:

277 

278* [Plugins](/it/plugins) - Guida completa allo sviluppo dei plugin

279* [Plugins reference](/it/plugins-reference) - Specifiche tecniche e schemi

280 

281## Casi d'uso comuni

282 

283### Sviluppo e test

284 

285Carica i plugin durante lo sviluppo senza installarli globalmente:

286 

287```typescript theme={null}

288plugins: [{ type: "local", path: "./dev-plugins/my-plugin" }];

289```

290 

291### Estensioni specifiche del progetto

292 

293Includi i plugin nel tuo repository di progetto per la coerenza a livello di team:

294 

295```typescript theme={null}

296plugins: [{ type: "local", path: "./project-plugins/team-workflows" }];

297```

298 

299### Più fonti di plugin

300 

301Combina i plugin da posizioni diverse:

302 

303```typescript theme={null}

304plugins: [

305 { type: "local", path: "./local-plugin" },

306 { type: "local", path: "~/.claude/custom-plugins/shared-plugin" }

307];

308```

309 

310## Troubleshooting

311 

312### Plugin non caricato

313 

314Se il tuo plugin non appare nel messaggio di init:

315 

3161. **Controlla il percorso**: Assicurati che il percorso punti alla directory radice del plugin (contenente `.claude-plugin/`)

3172. **Valida plugin.json**: Assicurati che il tuo file manifest abbia una sintassi JSON valida

3183. **Controlla i permessi dei file**: Assicurati che la directory del plugin sia leggibile

319 

320### Skills non appaiono

321 

322Se le skills dei plugin non funzionano:

323 

3241. **Usa lo spazio dei nomi**: Le skills dei plugin richiedono il formato `plugin-name:skill-name` quando richiamate come comandi slash

3252. **Controlla il messaggio di init**: Verifica che la skill appaia in `slash_commands` con lo spazio dei nomi corretto

3263. **Valida i file delle skills**: Assicurati che ogni skill abbia un file `SKILL.md` nella sua sottodirectory sotto `skills/` (ad esempio, `skills/my-skill/SKILL.md`)

327 

328### Problemi di risoluzione dei percorsi

329 

330Se i percorsi relativi non funzionano:

331 

3321. **Controlla la directory di lavoro**: I percorsi relativi vengono risolti dalla tua directory di lavoro corrente

3332. **Usa percorsi assoluti**: Per l'affidabilità, considera l'utilizzo di percorsi assoluti

3343. **Normalizza i percorsi**: Usa le utility dei percorsi per costruire i percorsi correttamente

335 

336## Vedi anche

337 

338* [Plugins](/it/plugins) - Guida completa allo sviluppo dei plugin

339* [Plugins reference](/it/plugins-reference) - Specifiche tecniche

340* [Slash Commands](/it/agent-sdk/slash-commands) - Utilizzo dei comandi slash nell'SDK

341* [Subagents](/it/agent-sdk/subagents) - Lavoro con agenti specializzati

342* [Skills](/it/agent-sdk/skills) - Utilizzo delle Agent Skills

agent-sdk/python.md +3274 −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# Riferimento SDK Agent - Python

6 

7> Riferimento API completo per Python Agent SDK, incluse tutte le funzioni, i tipi e le classi.

8 

9## Installazione

10 

11```bash theme={null}

12pip install claude-agent-sdk

13```

14 

15## Scelta tra `query()` e `ClaudeSDKClient`

16 

17Python SDK fornisce due modi per interagire con Claude Code:

18 

19### Confronto rapido

20 

21| Funzionalità | `query()` | `ClaudeSDKClient` |

22| :--------------------------- | :--------------------------------- | :------------------------------- |

23| **Sessione** | Crea una nuova sessione ogni volta | Riutilizza la stessa sessione |

24| **Conversazione** | Singolo scambio | Più scambi nello stesso contesto |

25| **Connessione** | Gestita automaticamente | Controllo manuale |

26| **Input Streaming** | ✅ Supportato | ✅ Supportato |

27| **Interruzioni** | ❌ Non supportato | ✅ Supportato |

28| **Hooks** | ✅ Supportato | ✅ Supportato |

29| **Strumenti personalizzati** | ✅ Supportato | ✅ Supportato |

30| **Continua chat** | ❌ Nuova sessione ogni volta | ✅ Mantiene la conversazione |

31| **Caso d'uso** | Attività una tantum | Conversazioni continue |

32 

33### Quando usare `query()` (nuova sessione ogni volta)

34 

35**Migliore per:**

36 

37* Domande una tantum dove non hai bisogno della cronologia della conversazione

38* Attività indipendenti che non richiedono contesto da scambi precedenti

39* Script di automazione semplici

40* Quando vuoi un nuovo inizio ogni volta

41 

42### Quando usare `ClaudeSDKClient` (conversazione continua)

43 

44**Migliore per:**

45 

46* **Continuare conversazioni** - Quando hai bisogno che Claude ricordi il contesto

47* **Domande di follow-up** - Costruire su risposte precedenti

48* **Applicazioni interattive** - Interfacce chat, REPL

49* **Logica guidata dalla risposta** - Quando l'azione successiva dipende dalla risposta di Claude

50* **Controllo della sessione** - Gestire il ciclo di vita della conversazione in modo esplicito

51 

52## Funzioni

53 

54### `query()`

55 

56Crea una nuova sessione per ogni interazione con Claude Code. Restituisce un iteratore asincrono che produce messaggi man mano che arrivano. Ogni chiamata a `query()` inizia da zero senza memoria di interazioni precedenti.

57 

58```python theme={null}

59async def query(

60 *,

61 prompt: str | AsyncIterable[dict[str, Any]],

62 options: ClaudeAgentOptions | None = None,

63 transport: Transport | None = None

64) -> AsyncIterator[Message]

65```

66 

67#### Parametri

68 

69| Parametro | Tipo | Descrizione |

70| :---------- | :--------------------------- | :------------------------------------------------------------------------------------------------ |

71| `prompt` | `str \| AsyncIterable[dict]` | Il prompt di input come stringa o iterabile asincrono per la modalità streaming |

72| `options` | `ClaudeAgentOptions \| None` | Oggetto di configurazione opzionale (per impostazione predefinita `ClaudeAgentOptions()` se None) |

73| `transport` | `Transport \| None` | Trasporto personalizzato opzionale per comunicare con il processo CLI |

74 

75#### Restituisce

76 

77Restituisce un `AsyncIterator[Message]` che produce messaggi dalla conversazione.

78 

79#### Esempio - Con opzioni

80 

81```python theme={null}

82import asyncio

83from claude_agent_sdk import query, ClaudeAgentOptions

84 

85 

86async def main():

87 options = ClaudeAgentOptions(

88 system_prompt="You are an expert Python developer",

89 permission_mode="acceptEdits",

90 cwd="/home/user/project",

91 )

92 

93 async for message in query(prompt="Create a Python web server", options=options):

94 print(message)

95 

96 

97asyncio.run(main())

98```

99 

100### `tool()`

101 

102Decoratore per definire strumenti MCP con sicurezza dei tipi.

103 

104```python theme={null}

105def tool(

106 name: str,

107 description: str,

108 input_schema: type | dict[str, Any],

109 annotations: ToolAnnotations | None = None

110) -> Callable[[Callable[[Any], Awaitable[dict[str, Any]]]], SdkMcpTool[Any]]

111```

112 

113#### Parametri

114 

115| Parametro | Tipo | Descrizione |

116| :------------- | :----------------------------------------------- | :---------------------------------------------------------------------------------------------- |

117| `name` | `str` | Identificatore univoco per lo strumento |

118| `description` | `str` | Descrizione leggibile di cosa fa lo strumento |

119| `input_schema` | `type \| dict[str, Any]` | Schema che definisce i parametri di input dello strumento (vedi sotto) |

120| `annotations` | [`ToolAnnotations`](#tool-annotations)` \| None` | Annotazioni MCP dello strumento opzionali che forniscono suggerimenti comportamentali ai client |

121 

122#### Opzioni dello schema di input

123 

1241. **Mappatura di tipo semplice** (consigliato):

125 

126 ```python theme={null}

127 {"text": str, "count": int, "enabled": bool}

128 ```

129 

1302. **Formato JSON Schema** (per validazione complessa):

131 ```python theme={null}

132 {

133 "type": "object",

134 "properties": {

135 "text": {"type": "string"},

136 "count": {"type": "integer", "minimum": 0},

137 },

138 "required": ["text"],

139 }

140 ```

141 

142#### Restituisce

143 

144Una funzione decoratore che avvolge l'implementazione dello strumento e restituisce un'istanza `SdkMcpTool`.

145 

146#### Esempio

147 

148```python theme={null}

149from claude_agent_sdk import tool

150from typing import Any

151 

152 

153@tool("greet", "Greet a user", {"name": str})

154async def greet(args: dict[str, Any]) -> dict[str, Any]:

155 return {"content": [{"type": "text", "text": f"Hello, {args['name']}!"}]}

156```

157 

158#### `ToolAnnotations`

159 

160Riesportato da `mcp.types` (disponibile anche come `from claude_agent_sdk import ToolAnnotations`). Tutti i campi sono suggerimenti opzionali; i client non dovrebbero fare affidamento su di essi per decisioni di sicurezza.

161 

162| Campo | Tipo | Predefinito | Descrizione |

163| :---------------- | :------------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

164| `title` | `str \| None` | `None` | Titolo leggibile per lo strumento |

165| `readOnlyHint` | `bool \| None` | `False` | Se `True`, lo strumento non modifica il suo ambiente |

166| `destructiveHint` | `bool \| None` | `True` | Se `True`, lo strumento può eseguire aggiornamenti distruttivi (significativo solo quando `readOnlyHint` è `False`) |

167| `idempotentHint` | `bool \| None` | `False` | Se `True`, le chiamate ripetute con gli stessi argomenti non hanno effetto aggiuntivo (significativo solo quando `readOnlyHint` è `False`) |

168| `openWorldHint` | `bool \| None` | `True` | Se `True`, lo strumento interagisce con entità esterne (ad esempio, ricerca web). Se `False`, il dominio dello strumento è chiuso (ad esempio, uno strumento di memoria) |

169 

170```python theme={null}

171from claude_agent_sdk import tool, ToolAnnotations

172from typing import Any

173 

174 

175@tool(

176 "search",

177 "Search the web",

178 {"query": str},

179 annotations=ToolAnnotations(readOnlyHint=True, openWorldHint=True),

180)

181async def search(args: dict[str, Any]) -> dict[str, Any]:

182 return {"content": [{"type": "text", "text": f"Results for: {args['query']}"}]}

183```

184 

185### `create_sdk_mcp_server()`

186 

187Crea un server MCP in-process che viene eseguito all'interno della tua applicazione Python.

188 

189```python theme={null}

190def create_sdk_mcp_server(

191 name: str,

192 version: str = "1.0.0",

193 tools: list[SdkMcpTool[Any]] | None = None

194) -> McpSdkServerConfig

195```

196 

197#### Parametri

198 

199| Parametro | Tipo | Predefinito | Descrizione |

200| :-------- | :------------------------------ | :---------- | :--------------------------------------------------------------- |

201| `name` | `str` | - | Identificatore univoco per il server |

202| `version` | `str` | `"1.0.0"` | Stringa della versione del server |

203| `tools` | `list[SdkMcpTool[Any]] \| None` | `None` | Elenco di funzioni di strumento create con il decoratore `@tool` |

204 

205#### Restituisce

206 

207Restituisce un oggetto `McpSdkServerConfig` che può essere passato a `ClaudeAgentOptions.mcp_servers`.

208 

209#### Esempio

210 

211```python theme={null}

212from claude_agent_sdk import tool, create_sdk_mcp_server

213 

214 

215@tool("add", "Add two numbers", {"a": float, "b": float})

216async def add(args):

217 return {"content": [{"type": "text", "text": f"Sum: {args['a'] + args['b']}"}]}

218 

219 

220@tool("multiply", "Multiply two numbers", {"a": float, "b": float})

221async def multiply(args):

222 return {"content": [{"type": "text", "text": f"Product: {args['a'] * args['b']}"}]}

223 

224 

225calculator = create_sdk_mcp_server(

226 name="calculator",

227 version="2.0.0",

228 tools=[add, multiply], # Pass decorated functions

229)

230 

231# Use with Claude

232options = ClaudeAgentOptions(

233 mcp_servers={"calc": calculator},

234 allowed_tools=["mcp__calc__add", "mcp__calc__multiply"],

235)

236```

237 

238### `list_sessions()`

239 

240Elenca le sessioni passate con metadati. Filtra per directory di progetto o elenca le sessioni in tutti i progetti. Sincrono; restituisce immediatamente.

241 

242```python theme={null}

243def list_sessions(

244 directory: str | None = None,

245 limit: int | None = None,

246 include_worktrees: bool = True

247) -> list[SDKSessionInfo]

248```

249 

250#### Parametri

251 

252| Parametro | Tipo | Predefinito | Descrizione |

253| :------------------ | :------------ | :---------- | :------------------------------------------------------------------------------------------------------------- |

254| `directory` | `str \| None` | `None` | Directory per cui elencare le sessioni. Se omesso, restituisce le sessioni in tutti i progetti |

255| `limit` | `int \| None` | `None` | Numero massimo di sessioni da restituire |

256| `include_worktrees` | `bool` | `True` | Quando `directory` si trova all'interno di un repository git, includi le sessioni da tutti i percorsi worktree |

257 

258#### Tipo di ritorno: `SDKSessionInfo`

259 

260| Proprietà | Tipo | Descrizione |

261| :-------------- | :------------ | :-------------------------------------------------------------------------------------------------- |

262| `session_id` | `str` | Identificatore di sessione univoco |

263| `summary` | `str` | Titolo di visualizzazione: titolo personalizzato, riepilogo generato automaticamente o primo prompt |

264| `last_modified` | `int` | Ora dell'ultima modifica in millisecondi dall'epoca |

265| `file_size` | `int \| None` | Dimensione del file di sessione in byte (`None` per backend di archiviazione remota) |

266| `custom_title` | `str \| None` | Titolo della sessione impostato dall'utente |

267| `first_prompt` | `str \| None` | Primo prompt utente significativo nella sessione |

268| `git_branch` | `str \| None` | Ramo Git alla fine della sessione |

269| `cwd` | `str \| None` | Directory di lavoro per la sessione |

270| `tag` | `str \| None` | Tag della sessione impostato dall'utente (vedi [`tag_session()`](#tag-session)) |

271| `created_at` | `int \| None` | Ora di creazione della sessione in millisecondi dall'epoca |

272 

273#### Esempio

274 

275Stampa le 10 sessioni più recenti per un progetto. I risultati sono ordinati per `last_modified` decrescente, quindi il primo elemento è il più recente. Ometti `directory` per cercare in tutti i progetti.

276 

277```python theme={null}

278from claude_agent_sdk import list_sessions

279 

280for session in list_sessions(directory="/path/to/project", limit=10):

281 print(f"{session.summary} ({session.session_id})")

282```

283 

284### `get_session_messages()`

285 

286Recupera i messaggi da una sessione passata. Sincrono; restituisce immediatamente.

287 

288```python theme={null}

289def get_session_messages(

290 session_id: str,

291 directory: str | None = None,

292 limit: int | None = None,

293 offset: int = 0

294) -> list[SessionMessage]

295```

296 

297#### Parametri

298 

299| Parametro | Tipo | Predefinito | Descrizione |

300| :----------- | :------------ | :----------- | :-------------------------------------------------------------------------- |

301| `session_id` | `str` | obbligatorio | L'ID della sessione per cui recuperare i messaggi |

302| `directory` | `str \| None` | `None` | Directory del progetto in cui cercare. Se omesso, cerca in tutti i progetti |

303| `limit` | `int \| None` | `None` | Numero massimo di messaggi da restituire |

304| `offset` | `int` | `0` | Numero di messaggi da saltare dall'inizio |

305 

306#### Tipo di ritorno: `SessionMessage`

307 

308| Proprietà | Tipo | Descrizione |

309| :------------------- | :----------------------------- | :---------------------------------- |

310| `type` | `Literal["user", "assistant"]` | Ruolo del messaggio |

311| `uuid` | `str` | Identificatore di messaggio univoco |

312| `session_id` | `str` | Identificatore di sessione |

313| `message` | `Any` | Contenuto del messaggio grezzo |

314| `parent_tool_use_id` | `None` | Riservato per uso futuro |

315 

316#### Esempio

317 

318```python theme={null}

319from claude_agent_sdk import list_sessions, get_session_messages

320 

321sessions = list_sessions(limit=1)

322if sessions:

323 messages = get_session_messages(sessions[0].session_id)

324 for msg in messages:

325 print(f"[{msg.type}] {msg.uuid}")

326```

327 

328### `get_session_info()`

329 

330Legge i metadati per una singola sessione per ID senza scansionare la directory del progetto completo. Sincrono; restituisce immediatamente.

331 

332```python theme={null}

333def get_session_info(

334 session_id: str,

335 directory: str | None = None,

336) -> SDKSessionInfo | None

337```

338 

339#### Parametri

340 

341| Parametro | Tipo | Predefinito | Descrizione |

342| :----------- | :------------ | :----------- | :----------------------------------------------------------------------------------------- |

343| `session_id` | `str` | obbligatorio | UUID della sessione da cercare |

344| `directory` | `str \| None` | `None` | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |

345 

346Restituisce [`SDKSessionInfo`](#return-type-sdk-session-info), o `None` se la sessione non viene trovata.

347 

348#### Esempio

349 

350Cerca i metadati di una singola sessione senza scansionare la directory del progetto. Utile quando hai già un ID di sessione da un'esecuzione precedente.

351 

352```python theme={null}

353from claude_agent_sdk import get_session_info

354 

355info = get_session_info("550e8400-e29b-41d4-a716-446655440000")

356if info:

357 print(f"{info.summary} (branch: {info.git_branch}, tag: {info.tag})")

358```

359 

360### `rename_session()`

361 

362Rinomina una sessione aggiungendo una voce di titolo personalizzato. Le chiamate ripetute sono sicure; il titolo più recente vince. Sincrono.

363 

364```python theme={null}

365def rename_session(

366 session_id: str,

367 title: str,

368 directory: str | None = None,

369) -> None

370```

371 

372#### Parametri

373 

374| Parametro | Tipo | Predefinito | Descrizione |

375| :----------- | :------------ | :----------- | :----------------------------------------------------------------------------------------- |

376| `session_id` | `str` | obbligatorio | UUID della sessione da rinominare |

377| `title` | `str` | obbligatorio | Nuovo titolo. Deve essere non vuoto dopo la rimozione degli spazi bianchi |

378| `directory` | `str \| None` | `None` | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |

379 

380Genera `ValueError` se `session_id` non è un UUID valido o `title` è vuoto; `FileNotFoundError` se la sessione non può essere trovata.

381 

382#### Esempio

383 

384Rinomina la sessione più recente in modo che sia più facile da trovare in seguito. Il nuovo titolo appare in [`SDKSessionInfo.custom_title`](#return-type-sdk-session-info) nelle letture successive.

385 

386```python theme={null}

387from claude_agent_sdk import list_sessions, rename_session

388 

389sessions = list_sessions(directory="/path/to/project", limit=1)

390if sessions:

391 rename_session(sessions[0].session_id, "Refactor auth module")

392```

393 

394### `tag_session()`

395 

396Etichetta una sessione. Passa `None` per cancellare l'etichetta. Le chiamate ripetute sono sicure; l'etichetta più recente vince. Sincrono.

397 

398```python theme={null}

399def tag_session(

400 session_id: str,

401 tag: str | None,

402 directory: str | None = None,

403) -> None

404```

405 

406#### Parametri

407 

408| Parametro | Tipo | Predefinito | Descrizione |

409| :----------- | :------------ | :----------- | :------------------------------------------------------------------------------------------ |

410| `session_id` | `str` | obbligatorio | UUID della sessione da etichettare |

411| `tag` | `str \| None` | obbligatorio | Stringa di etichetta, o `None` per cancellare. Sanitizzato Unicode prima dell'archiviazione |

412| `directory` | `str \| None` | `None` | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |

413 

414Genera `ValueError` se `session_id` non è un UUID valido o `tag` è vuoto dopo la sanitizzazione; `FileNotFoundError` se la sessione non può essere trovata.

415 

416#### Esempio

417 

418Etichetta una sessione, quindi filtra per quell'etichetta in una lettura successiva. Passa `None` per cancellare un'etichetta esistente.

419 

420```python theme={null}

421from claude_agent_sdk import list_sessions, tag_session

422 

423# Tag a session

424tag_session("550e8400-e29b-41d4-a716-446655440000", "needs-review")

425 

426# Later: find all sessions with that tag

427for session in list_sessions(directory="/path/to/project"):

428 if session.tag == "needs-review":

429 print(session.summary)

430```

431 

432## Classi

433 

434### `ClaudeSDKClient`

435 

436**Mantiene una sessione di conversazione in più scambi.** Questo è l'equivalente Python di come la funzione `query()` di TypeScript SDK funziona internamente - crea un oggetto client che può continuare le conversazioni.

437 

438#### Caratteristiche principali

439 

440* **Continuità della sessione**: Mantiene il contesto della conversazione in più chiamate `query()`

441* **Stessa conversazione**: La sessione conserva i messaggi precedenti

442* **Supporto per interruzioni**: Può interrompere l'esecuzione a metà attività

443* **Ciclo di vita esplicito**: Controlli quando la sessione inizia e termina

444* **Flusso guidato dalla risposta**: Può reagire alle risposte e inviare follow-up

445* **Strumenti personalizzati e hooks**: Supporta strumenti personalizzati (creati con il decoratore `@tool`) e hooks

446 

447```python theme={null}

448class ClaudeSDKClient:

449 def __init__(self, options: ClaudeAgentOptions | None = None, transport: Transport | None = None)

450 async def connect(self, prompt: str | AsyncIterable[dict] | None = None) -> None

451 async def query(self, prompt: str | AsyncIterable[dict], session_id: str = "default") -> None

452 async def receive_messages(self) -> AsyncIterator[Message]

453 async def receive_response(self) -> AsyncIterator[Message]

454 async def interrupt(self) -> None

455 async def set_permission_mode(self, mode: str) -> None

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

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

458 async def get_mcp_status(self) -> McpStatusResponse

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

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

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

462 async def get_server_info(self) -> dict[str, Any] | None

463 async def disconnect(self) -> None

464```

465 

466#### Metodi

467 

468| Metodo | Descrizione |

469| :---------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

470| `__init__(options)` | Inizializza il client con configurazione opzionale |

471| `connect(prompt)` | Connettiti a Claude con un prompt iniziale opzionale o flusso di messaggi |

472| `query(prompt, session_id)` | Invia una nuova richiesta in modalità streaming |

473| `receive_messages()` | Ricevi tutti i messaggi da Claude come iteratore asincrono |

474| `receive_response()` | Ricevi messaggi fino a e incluso un ResultMessage |

475| `interrupt()` | Invia segnale di interruzione (funziona solo in modalità streaming) |

476| `set_permission_mode(mode)` | Cambia la modalità di autorizzazione per la sessione corrente |

477| `set_model(model)` | Cambia il modello per la sessione corrente. Passa `None` per ripristinare il valore predefinito |

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

479| `get_mcp_status()` | Ottieni lo stato di tutti i server MCP configurati. Restituisce [`McpStatusResponse`](#mcp-status-response) |

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

481| `toggle_mcp_server(server_name, enabled)` | Abilita o disabilita un server MCP a metà sessione. La disabilitazione rimuove i suoi strumenti |

482| `stop_task(task_id)` | Interrompi un'attività in background in esecuzione. Un [`TaskNotificationMessage`](#task-notification-message) con stato `"stopped"` segue nel flusso di messaggi |

483| `get_server_info()` | Ottieni informazioni sul server incluso l'ID della sessione e le capacità |

484| `disconnect()` | Disconnettiti da Claude |

485 

486#### Supporto Context Manager

487 

488Il client può essere utilizzato come context manager asincrono per la gestione automatica della connessione:

489 

490```python theme={null}

491async with ClaudeSDKClient() as client:

492 await client.query("Hello Claude")

493 async for message in client.receive_response():

494 print(message)

495```

496 

497> **Importante:** Quando iteri sui messaggi, evita di usare `break` per uscire anticipatamente poiché questo può causare problemi di pulizia asyncio. Invece, lascia che l'iterazione si completi naturalmente o usa flag per tracciare quando hai trovato quello che cerchi.

498 

499#### Esempio - Continuare una conversazione

500 

501```python theme={null}

502import asyncio

503from claude_agent_sdk import ClaudeSDKClient, AssistantMessage, TextBlock, ResultMessage

504 

505 

506async def main():

507 async with ClaudeSDKClient() as client:

508 # First question

509 await client.query("What's the capital of France?")

510 

511 # Process response

512 async for message in client.receive_response():

513 if isinstance(message, AssistantMessage):

514 for block in message.content:

515 if isinstance(block, TextBlock):

516 print(f"Claude: {block.text}")

517 

518 # Follow-up question - the session retains the previous context

519 await client.query("What's the population of that city?")

520 

521 async for message in client.receive_response():

522 if isinstance(message, AssistantMessage):

523 for block in message.content:

524 if isinstance(block, TextBlock):

525 print(f"Claude: {block.text}")

526 

527 # Another follow-up - still in the same conversation

528 await client.query("What are some famous landmarks there?")

529 

530 async for message in client.receive_response():

531 if isinstance(message, AssistantMessage):

532 for block in message.content:

533 if isinstance(block, TextBlock):

534 print(f"Claude: {block.text}")

535 

536 

537asyncio.run(main())

538```

539 

540#### Esempio - Input streaming con ClaudeSDKClient

541 

542```python theme={null}

543import asyncio

544from claude_agent_sdk import ClaudeSDKClient

545 

546 

547async def message_stream():

548 """Generate messages dynamically."""

549 yield {

550 "type": "user",

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

552 }

553 await asyncio.sleep(0.5)

554 yield {

555 "type": "user",

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

557 }

558 await asyncio.sleep(0.5)

559 yield {

560 "type": "user",

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

562 }

563 

564 

565async def main():

566 async with ClaudeSDKClient() as client:

567 # Stream input to Claude

568 await client.query(message_stream())

569 

570 # Process response

571 async for message in client.receive_response():

572 print(message)

573 

574 # Follow-up in same session

575 await client.query("Should we be concerned about these readings?")

576 

577 async for message in client.receive_response():

578 print(message)

579 

580 

581asyncio.run(main())

582```

583 

584#### Esempio - Utilizzo di interruzioni

585 

586```python theme={null}

587import asyncio

588from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, ResultMessage

589 

590 

591async def interruptible_task():

592 options = ClaudeAgentOptions(allowed_tools=["Bash"], permission_mode="acceptEdits")

593 

594 async with ClaudeSDKClient(options=options) as client:

595 # Start a long-running task

596 await client.query("Count from 1 to 100 slowly, using the bash sleep command")

597 

598 # Let it run for a bit

599 await asyncio.sleep(2)

600 

601 # Interrupt the task

602 await client.interrupt()

603 print("Task interrupted!")

604 

605 # Drain the interrupted task's messages (including its ResultMessage)

606 async for message in client.receive_response():

607 if isinstance(message, ResultMessage):

608 print(f"Interrupted task finished with subtype={message.subtype!r}")

609 # subtype is "error_during_execution" for interrupted tasks

610 

611 # Send a new command

612 await client.query("Just say hello instead")

613 

614 # Now receive the new response

615 async for message in client.receive_response():

616 if isinstance(message, ResultMessage) and message.subtype == "success":

617 print(f"New result: {message.result}")

618 

619 

620asyncio.run(interruptible_task())

621```

622 

623<Note>

624 **Comportamento del buffer dopo l'interruzione:** `interrupt()` invia un segnale di arresto ma non cancella il buffer dei messaggi. I messaggi già prodotti dall'attività interrotta, incluso il suo `ResultMessage` (con `subtype="error_during_execution"`), rimangono nel flusso. Devi drenare con `receive_response()` prima di leggere la risposta a una nuova query. Se invii una nuova query immediatamente dopo `interrupt()` e chiami `receive_response()` una sola volta, riceverai i messaggi dell'attività interrotta, non la risposta della nuova query.

625</Note>

626 

627#### Esempio - Controllo avanzato delle autorizzazioni

628 

629```python theme={null}

630from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

631from claude_agent_sdk.types import (

632 PermissionResultAllow,

633 PermissionResultDeny,

634 ToolPermissionContext,

635)

636 

637 

638async def custom_permission_handler(

639 tool_name: str, input_data: dict, context: ToolPermissionContext

640) -> PermissionResultAllow | PermissionResultDeny:

641 """Custom logic for tool permissions."""

642 

643 # Block writes to system directories

644 if tool_name == "Write" and input_data.get("file_path", "").startswith("/system/"):

645 return PermissionResultDeny(

646 message="System directory write not allowed", interrupt=True

647 )

648 

649 # Redirect sensitive file operations

650 if tool_name in ["Write", "Edit"] and "config" in input_data.get("file_path", ""):

651 safe_path = f"./sandbox/{input_data['file_path']}"

652 return PermissionResultAllow(

653 updated_input={**input_data, "file_path": safe_path}

654 )

655 

656 # Allow everything else

657 return PermissionResultAllow(updated_input=input_data)

658 

659 

660async def main():

661 options = ClaudeAgentOptions(

662 can_use_tool=custom_permission_handler, allowed_tools=["Read", "Write", "Edit"]

663 )

664 

665 async with ClaudeSDKClient(options=options) as client:

666 await client.query("Update the system config file")

667 

668 async for message in client.receive_response():

669 # Will use sandbox path instead

670 print(message)

671 

672 

673asyncio.run(main())

674```

675 

676## Tipi

677 

678<Note>

679 **`@dataclass` vs `TypedDict`:** Questo SDK utilizza due tipi di tipi. Le classi decorate con `@dataclass` (come `ResultMessage`, `AgentDefinition`, `TextBlock`) sono istanze di oggetti in fase di esecuzione e supportano l'accesso agli attributi: `msg.result`. Le classi definite con `TypedDict` (come `ThinkingConfigEnabled`, `McpStdioServerConfig`, `SyncHookJSONOutput`) sono **dicts semplici in fase di esecuzione** e richiedono l'accesso alle chiavi: `config["budget_tokens"]`, non `config.budget_tokens`. La sintassi di chiamata `ClassName(field=value)` funziona per entrambi, ma solo le dataclass producono oggetti con attributi.

680</Note>

681 

682### `SdkMcpTool`

683 

684Definizione per uno strumento SDK MCP creato con il decoratore `@tool`.

685 

686```python theme={null}

687@dataclass

688class SdkMcpTool(Generic[T]):

689 name: str

690 description: str

691 input_schema: type[T] | dict[str, Any]

692 handler: Callable[[T], Awaitable[dict[str, Any]]]

693 annotations: ToolAnnotations | None = None

694```

695 

696| Proprietà | Tipo | Descrizione |

697| :------------- | :----------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- |

698| `name` | `str` | Identificatore univoco per lo strumento |

699| `description` | `str` | Descrizione leggibile |

700| `input_schema` | `type[T] \| dict[str, Any]` | Schema per la validazione dell'input |

701| `handler` | `Callable[[T], Awaitable[dict[str, Any]]]` | Funzione asincrona che gestisce l'esecuzione dello strumento |

702| `annotations` | `ToolAnnotations \| None` | Annotazioni MCP dello strumento opzionali (ad es. `readOnlyHint`, `destructiveHint`, `openWorldHint`). Da `mcp.types` |

703 

704### `Transport`

705 

706Classe base astratta per implementazioni di trasporto personalizzate. Usala per comunicare con il processo Claude su un canale personalizzato (ad esempio, una connessione remota invece di un subprocess locale).

707 

708<Warning>

709 Questa è un'API interna di basso livello. L'interfaccia potrebbe cambiare nelle versioni future. Le implementazioni personalizzate devono essere aggiornate per corrispondere a eventuali modifiche dell'interfaccia.

710</Warning>

711 

712```python theme={null}

713from abc import ABC, abstractmethod

714from collections.abc import AsyncIterator

715from typing import Any

716 

717 

718class Transport(ABC):

719 @abstractmethod

720 async def connect(self) -> None: ...

721 

722 @abstractmethod

723 async def write(self, data: str) -> None: ...

724 

725 @abstractmethod

726 def read_messages(self) -> AsyncIterator[dict[str, Any]]: ...

727 

728 @abstractmethod

729 async def close(self) -> None: ...

730 

731 @abstractmethod

732 def is_ready(self) -> bool: ...

733 

734 @abstractmethod

735 async def end_input(self) -> None: ...

736```

737 

738| Metodo | Descrizione |

739| :---------------- | :---------------------------------------------------------------------------- |

740| `connect()` | Connetti il trasporto e preparati per la comunicazione |

741| `write(data)` | Scrivi dati grezzi (JSON + newline) nel trasporto |

742| `read_messages()` | Iteratore asincrono che produce messaggi JSON analizzati |

743| `close()` | Chiudi la connessione e pulisci le risorse |

744| `is_ready()` | Restituisce `True` se il trasporto può inviare e ricevere |

745| `end_input()` | Chiudi il flusso di input (ad esempio, chiudi stdin per trasporti subprocess) |

746 

747Importazione: `from claude_agent_sdk import Transport`

748 

749### `ClaudeAgentOptions`

750 

751Dataclass di configurazione per le query Claude Code.

752 

753```python theme={null}

754@dataclass

755class ClaudeAgentOptions:

756 tools: list[str] | ToolsPreset | None = None

757 allowed_tools: list[str] = field(default_factory=list)

758 system_prompt: str | SystemPromptPreset | None = None

759 mcp_servers: dict[str, McpServerConfig] | str | Path = field(default_factory=dict)

760 permission_mode: PermissionMode | None = None

761 continue_conversation: bool = False

762 resume: str | None = None

763 max_turns: int | None = None

764 max_budget_usd: float | None = None

765 disallowed_tools: list[str] = field(default_factory=list)

766 model: str | None = None

767 fallback_model: str | None = None

768 betas: list[SdkBeta] = field(default_factory=list)

769 output_format: dict[str, Any] | None = None

770 permission_prompt_tool_name: str | None = None

771 cwd: str | Path | None = None

772 cli_path: str | Path | None = None

773 settings: str | None = None

774 add_dirs: list[str | Path] = field(default_factory=list)

775 env: dict[str, str] = field(default_factory=dict)

776 extra_args: dict[str, str | None] = field(default_factory=dict)

777 max_buffer_size: int | None = None

778 debug_stderr: Any = sys.stderr # Deprecated

779 stderr: Callable[[str], None] | None = None

780 can_use_tool: CanUseTool | None = None

781 hooks: dict[HookEvent, list[HookMatcher]] | None = None

782 user: str | None = None

783 include_partial_messages: bool = False

784 fork_session: bool = False

785 agents: dict[str, AgentDefinition] | None = None

786 setting_sources: list[SettingSource] | None = None

787 sandbox: SandboxSettings | None = None

788 plugins: list[SdkPluginConfig] = field(default_factory=list)

789 max_thinking_tokens: int | None = None # Deprecated: use thinking instead

790 thinking: ThinkingConfig | None = None

791 effort: Literal["low", "medium", "high", "max"] | None = None

792 enable_file_checkpointing: bool = False

793 session_store: SessionStore | None = None

794```

795 

796| Proprietà | Tipo | Predefinito | Descrizione |

797| :---------------------------- | :------------------------------------------------------------------------------------- | :---------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

798| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Configurazione degli strumenti. Usa `{"type": "preset", "preset": "claude_code"}` per gli strumenti predefiniti di Claude Code |

799| `allowed_tools` | `list[str]` | `[]` | Strumenti da approvare automaticamente senza chiedere. Questo non limita Claude a solo questi strumenti; gli strumenti non elencati ricadono in `permission_mode` e `can_use_tool`. Usa `disallowed_tools` per bloccare gli strumenti. Vedi [Autorizzazioni](/it/agent-sdk/permissions#allow-and-deny-rules) |

800| `system_prompt` | `str \| SystemPromptPreset \| None` | `None` | Configurazione del prompt di sistema. Passa una stringa per un prompt personalizzato, o usa `{"type": "preset", "preset": "claude_code"}` per il prompt di sistema di Claude Code. Aggiungi `"append"` per estendere il preset |

801| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Configurazioni del server MCP o percorso al file di configurazione |

802| `permission_mode` | `PermissionMode \| None` | `None` | Modalità di autorizzazione per l'utilizzo dello strumento |

803| `continue_conversation` | `bool` | `False` | Continua la conversazione più recente |

804| `resume` | `str \| None` | `None` | ID della sessione da riprendere |

805| `max_turns` | `int \| None` | `None` | Numero massimo di turni agentici (round trip di utilizzo dello strumento) |

806| `max_budget_usd` | `float \| None` | `None` | Interrompi la query quando la stima del costo lato client raggiunge questo valore in USD. Confrontato con la stessa stima di `total_cost_usd`; vedi [Traccia costo e utilizzo](/it/agent-sdk/cost-tracking) per avvertenze di accuratezza |

807| `disallowed_tools` | `list[str]` | `[]` | Strumenti da sempre negare. Le regole di negazione vengono controllate per prime e sovrascrivono `allowed_tools` e `permission_mode` (incluso `bypassPermissions`) |

808| `enable_file_checkpointing` | `bool` | `False` | Abilita il tracciamento dei cambiamenti dei file per il rewind. Vedi [File checkpointing](/it/agent-sdk/file-checkpointing) |

809| `model` | `str \| None` | `None` | Modello Claude da utilizzare |

810| `fallback_model` | `str \| None` | `None` | Modello di fallback da utilizzare se il modello primario fallisce |

811| `betas` | `list[SdkBeta]` | `[]` | Funzionalità beta da abilitare. Vedi [`SdkBeta`](#sdk-beta) per le opzioni disponibili |

812| `output_format` | `dict[str, Any] \| None` | `None` | Formato di output per risposte strutturate (ad es. `{"type": "json_schema", "schema": {...}}`). Vedi [Output strutturati](/it/agent-sdk/structured-outputs) per i dettagli |

813| `permission_prompt_tool_name` | `str \| None` | `None` | Nome dello strumento MCP per i prompt di autorizzazione |

814| `cwd` | `str \| Path \| None` | `None` | Directory di lavoro corrente |

815| `cli_path` | `str \| Path \| None` | `None` | Percorso personalizzato all'eseguibile CLI di Claude Code |

816| `settings` | `str \| None` | `None` | Percorso al file di impostazioni |

817| `add_dirs` | `list[str \| Path]` | `[]` | Directory aggiuntive a cui Claude può accedere |

818| `env` | `dict[str, str]` | `{}` | Variabili di ambiente unite in cima all'ambiente del processo ereditato. Vedi [Variabili di ambiente](/it/env-vars) per le variabili che la CLI sottostante legge |

819| `extra_args` | `dict[str, str \| None]` | `{}` | Argomenti CLI aggiuntivi da passare direttamente alla CLI |

820| `max_buffer_size` | `int \| None` | `None` | Byte massimi durante il buffering dell'stdout della CLI |

821| `debug_stderr` | `Any` | `sys.stderr` | *Deprecato* - Oggetto simile a un file per l'output di debug. Usa il callback `stderr` invece |

822| `stderr` | `Callable[[str], None] \| None` | `None` | Funzione di callback per l'output stderr dalla CLI |

823| `can_use_tool` | [`CanUseTool`](#can-use-tool) ` \| None` | `None` | Funzione di callback per l'autorizzazione dello strumento. Vedi [Tipi di autorizzazione](#can-use-tool) per i dettagli |

824| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configurazioni hook per intercettare gli eventi |

825| `user` | `str \| None` | `None` | Identificatore utente |

826| `include_partial_messages` | `bool` | `False` | Includi eventi di streaming di messaggi parziali. Se abilitato, i messaggi [`StreamEvent`](#stream-event) vengono prodotti |

827| `fork_session` | `bool` | `False` | Quando si riprende con `resume`, esegui il fork a un nuovo ID di sessione invece di continuare la sessione originale |

828| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Subagenti definiti programmaticamente |

829| `plugins` | `list[SdkPluginConfig]` | `[]` | Carica plugin personalizzati da percorsi locali. Vedi [Plugin](/it/agent-sdk/plugins) per i dettagli |

830| `sandbox` | [`SandboxSettings`](#sandbox-settings) ` \| None` | `None` | Configura il comportamento della sandbox a livello di programmazione. Vedi [Impostazioni sandbox](#sandbox-settings) per i dettagli |

831| `setting_sources` | `list[SettingSource] \| None` | `None` (Impostazioni predefinite CLI: tutte le fonti) | Controlla quali impostazioni del filesystem caricare. Passa `[]` per disabilitare le impostazioni utente, progetto e locali. Le impostazioni della politica gestita vengono caricate indipendentemente. Vedi [Usa le funzionalità di Claude Code](/it/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

832| `max_thinking_tokens` | `int \| None` | `None` | *Deprecato* - Token massimi per i blocchi di pensiero. Usa `thinking` invece |

833| `thinking` | [`ThinkingConfig`](#thinking-config) ` \| None` | `None` | Controlla il comportamento del pensiero esteso. Ha la precedenza su `max_thinking_tokens` |

834| `effort` | `Literal["low", "medium", "high", "max"] \| None` | `None` | Livello di sforzo per la profondità del pensiero |

835| `session_store` | [`SessionStore`](/it/agent-sdk/session-storage#the-session-store-interface) ` \| None` | `None` | Specchia i trascritti di sessione in un backend esterno in modo che qualsiasi host possa riprenderli. Vedi [Persisti le sessioni nell'archiviazione esterna](/it/agent-sdk/session-storage) |

836 

837### `OutputFormat`

838 

839Configurazione per la validazione dell'output strutturato. Passa questo come `dict` al campo `output_format` su `ClaudeAgentOptions`:

840 

841```python theme={null}

842# Expected dict shape for output_format

843{

844 "type": "json_schema",

845 "schema": {...}, # Your JSON Schema definition

846}

847```

848 

849| Campo | Obbligatorio | Descrizione |

850| :------- | :----------- | :--------------------------------------------------------- |

851| `type` | Sì | Deve essere `"json_schema"` per la validazione JSON Schema |

852| `schema` | Sì | Definizione JSON Schema per la validazione dell'output |

853 

854### `SystemPromptPreset`

855 

856Configurazione per l'utilizzo del prompt di sistema preset di Claude Code con aggiunte opzionali.

857 

858```python theme={null}

859class SystemPromptPreset(TypedDict):

860 type: Literal["preset"]

861 preset: Literal["claude_code"]

862 append: NotRequired[str]

863 exclude_dynamic_sections: NotRequired[bool]

864```

865 

866| Campo | Obbligatorio | Descrizione |

867| :------------------------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

868| `type` | Sì | Deve essere `"preset"` per utilizzare un prompt di sistema preset |

869| `preset` | Sì | Deve essere `"claude_code"` per utilizzare il prompt di sistema di Claude Code |

870| `append` | No | Istruzioni aggiuntive da aggiungere al prompt di sistema preset |

871| `exclude_dynamic_sections` | No | Sposta il contesto per sessione come directory di lavoro, stato git e percorsi di memoria dal prompt di sistema nel primo messaggio utente. Migliora il riutilizzo della cache dei prompt tra utenti e macchine. Vedi [Modifica i prompt di sistema](/it/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

872 

873### `SettingSource`

874 

875Controlla quali fonti di configurazione basate su filesystem l'SDK carica le impostazioni da.

876 

877```python theme={null}

878SettingSource = Literal["user", "project", "local"]

879```

880 

881| Valore | Descrizione | Posizione |

882| :---------- | :-------------------------------------------------------------- | :---------------------------- |

883| `"user"` | Impostazioni utente globali | `~/.claude/settings.json` |

884| `"project"` | Impostazioni di progetto condivise (controllate dalla versione) | `.claude/settings.json` |

885| `"local"` | Impostazioni di progetto locali (gitignored) | `.claude/settings.local.json` |

886 

887#### Comportamento predefinito

888 

889Quando `setting_sources` è omesso o `None`, `query()` carica le stesse impostazioni del filesystem della CLI di Claude Code: utente, progetto e locale. Le impostazioni della politica gestita vengono caricate in tutti i casi. Vedi [Cosa settingSources non controlla](/it/agent-sdk/claude-code-features#what-settingsources-does-not-control) per gli input che vengono letti indipendentemente da questa opzione, e come disabilitarli.

890 

891#### Perché usare setting\_sources

892 

893**Disabilita le impostazioni del filesystem:**

894 

895```python theme={null}

896# Do not load user, project, or local settings from disk

897from claude_agent_sdk import query, ClaudeAgentOptions

898 

899async for message in query(

900 prompt="Analyze this code",

901 options=ClaudeAgentOptions(

902 setting_sources=[]

903 ),

904):

905 print(message)

906```

907 

908<Note>

909 In Python SDK 0.1.59 e versioni precedenti, un elenco vuoto era trattato come l'omissione dell'opzione, quindi `setting_sources=[]` non disabilitava le impostazioni del filesystem. Aggiorna a una versione più recente se hai bisogno che un elenco vuoto abbia effetto. TypeScript SDK non è interessato.

910</Note>

911 

912**Carica tutte le impostazioni del filesystem in modo esplicito:**

913 

914```python theme={null}

915from claude_agent_sdk import query, ClaudeAgentOptions

916 

917async for message in query(

918 prompt="Analyze this code",

919 options=ClaudeAgentOptions(

920 setting_sources=["user", "project", "local"]

921 ),

922):

923 print(message)

924```

925 

926**Carica solo fonti di impostazioni specifiche:**

927 

928```python theme={null}

929# Load only project settings, ignore user and local

930async for message in query(

931 prompt="Run CI checks",

932 options=ClaudeAgentOptions(

933 setting_sources=["project"] # Only .claude/settings.json

934 ),

935):

936 print(message)

937```

938 

939**Ambienti di test e CI:**

940 

941```python theme={null}

942# Ensure consistent behavior in CI by excluding local settings

943async for message in query(

944 prompt="Run tests",

945 options=ClaudeAgentOptions(

946 setting_sources=["project"], # Only team-shared settings

947 permission_mode="bypassPermissions",

948 ),

949):

950 print(message)

951```

952 

953**Applicazioni solo SDK:**

954 

955```python theme={null}

956# Define everything programmatically.

957# Pass [] to opt out of filesystem setting sources.

958async for message in query(

959 prompt="Review this PR",

960 options=ClaudeAgentOptions(

961 setting_sources=[],

962 agents={...},

963 mcp_servers={...},

964 allowed_tools=["Read", "Grep", "Glob"],

965 ),

966):

967 print(message)

968```

969 

970**Caricamento delle istruzioni del progetto CLAUDE.md:**

971 

972```python theme={null}

973# Load project settings to include CLAUDE.md files

974async for message in query(

975 prompt="Add a new feature following project conventions",

976 options=ClaudeAgentOptions(

977 system_prompt={

978 "type": "preset",

979 "preset": "claude_code", # Use Claude Code's system prompt

980 },

981 setting_sources=["project"], # Loads CLAUDE.md from project

982 allowed_tools=["Read", "Write", "Edit"],

983 ),

984):

985 print(message)

986```

987 

988#### Precedenza delle impostazioni

989 

990Quando più fonti vengono caricate, le impostazioni vengono unite con questa precedenza (da più alta a più bassa):

991 

9921. Impostazioni locali (`.claude/settings.local.json`)

9932. Impostazioni di progetto (`.claude/settings.json`)

9943. Impostazioni utente (`~/.claude/settings.json`)

995 

996Le opzioni programmatiche come `agents` e `allowed_tools` sovrascrivono le impostazioni del filesystem utente, progetto e locale. Le impostazioni della politica gestita hanno la precedenza sulle opzioni programmatiche.

997 

998### `AgentDefinition`

999 

1000Configurazione per un subagente definito programmaticamente.

1001 

1002```python theme={null}

1003@dataclass

1004class AgentDefinition:

1005 description: str

1006 prompt: str

1007 tools: list[str] | None = None

1008 disallowedTools: list[str] | None = None

1009 model: str | None = None

1010 skills: list[str] | None = None

1011 memory: Literal["user", "project", "local"] | None = None

1012 mcpServers: list[str | dict[str, Any]] | None = None

1013 initialPrompt: str | None = None

1014 maxTurns: int | None = None

1015 background: bool | None = None

1016 effort: Literal["low", "medium", "high", "max"] | int | None = None

1017 permissionMode: PermissionMode | None = None

1018```

1019 

1020| Campo | Obbligatorio | Descrizione |

1021| :---------------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1022| `description` | Sì | Descrizione in linguaggio naturale di quando utilizzare questo agente |

1023| `prompt` | Sì | Il prompt di sistema dell'agente |

1024| `tools` | No | Array di nomi di strumenti consentiti. Se omesso, eredita tutti gli strumenti |

1025| `disallowedTools` | No | Array di nomi di strumenti da rimuovere dal set di strumenti dell'agente |

1026| `model` | No | Override del modello per questo agente. Accetta un alias come `"sonnet"`, `"opus"`, `"haiku"`, o `"inherit"`, o un ID modello completo. Se omesso, utilizza il modello principale |

1027| `skills` | No | Elenco dei nomi di skills disponibili per questo agente |

1028| `memory` | No | Fonte di memoria per questo agente: `"user"`, `"project"`, o `"local"` |

1029| `mcpServers` | No | Server MCP disponibili per questo agente. Ogni voce è un nome di server o un dict `{name: config}` inline |

1030| `initialPrompt` | No | Auto-inviato come il primo turno utente quando questo agente viene eseguito come agente del thread principale |

1031| `maxTurns` | No | Numero massimo di turni agentici prima che l'agente si fermi |

1032| `background` | No | Esegui questo agente come attività in background non bloccante quando invocato |

1033| `effort` | No | Livello di sforzo di ragionamento per questo agente. Accetta un livello denominato o un numero intero |

1034| `permissionMode` | No | Modalità di autorizzazione per l'esecuzione dello strumento all'interno di questo agente. Vedi [`PermissionMode`](#permission-mode) |

1035 

1036<Note>

1037 I nomi dei campi `AgentDefinition` usano camelCase, come `disallowedTools`, `permissionMode` e `maxTurns`. Questi nomi si mappano direttamente al formato wire condiviso con TypeScript SDK. Questo differisce da `ClaudeAgentOptions`, che usa Python snake\_case per i campi di livello superiore equivalenti come `disallowed_tools` e `permission_mode`. Poiché `AgentDefinition` è una dataclass, passare una parola chiave snake\_case genera un `TypeError` al momento della costruzione.

1038</Note>

1039 

1040### `PermissionMode`

1041 

1042Modalità di autorizzazione per controllare l'esecuzione dello strumento.

1043 

1044```python theme={null}

1045PermissionMode = Literal[

1046 "default", # Standard permission behavior

1047 "acceptEdits", # Auto-accept file edits

1048 "plan", # Planning mode - no execution

1049 "dontAsk", # Deny anything not pre-approved instead of prompting

1050 "bypassPermissions", # Bypass all permission checks (use with caution)

1051]

1052```

1053 

1054### `CanUseTool`

1055 

1056Alias di tipo per le funzioni di callback di autorizzazione dello strumento.

1057 

1058```python theme={null}

1059CanUseTool = Callable[

1060 [str, dict[str, Any], ToolPermissionContext], Awaitable[PermissionResult]

1061]

1062```

1063 

1064Il callback riceve:

1065 

1066* `tool_name`: Nome dello strumento che viene chiamato

1067* `input_data`: I parametri di input dello strumento

1068* `context`: Un `ToolPermissionContext` con informazioni aggiuntive

1069 

1070Restituisce un `PermissionResult` (sia `PermissionResultAllow` che `PermissionResultDeny`).

1071 

1072### `ToolPermissionContext`

1073 

1074Informazioni di contesto passate ai callback di autorizzazione dello strumento.

1075 

1076```python theme={null}

1077@dataclass

1078class ToolPermissionContext:

1079 signal: Any | None = None # Future: abort signal support

1080 suggestions: list[PermissionUpdate] = field(default_factory=list)

1081```

1082 

1083| Campo | Tipo | Descrizione |

1084| :------------ | :----------------------- | :----------------------------------------------------------- |

1085| `signal` | `Any \| None` | Riservato per il supporto futuro del segnale di interruzione |

1086| `suggestions` | `list[PermissionUpdate]` | Suggerimenti di aggiornamento delle autorizzazioni dalla CLI |

1087 

1088### `PermissionResult`

1089 

1090Tipo di unione per i risultati del callback di autorizzazione.

1091 

1092```python theme={null}

1093PermissionResult = PermissionResultAllow | PermissionResultDeny

1094```

1095 

1096### `PermissionResultAllow`

1097 

1098Risultato che indica che la chiamata dello strumento deve essere consentita.

1099 

1100```python theme={null}

1101@dataclass

1102class PermissionResultAllow:

1103 behavior: Literal["allow"] = "allow"

1104 updated_input: dict[str, Any] | None = None

1105 updated_permissions: list[PermissionUpdate] | None = None

1106```

1107 

1108| Campo | Tipo | Predefinito | Descrizione |

1109| :-------------------- | :------------------------------- | :---------- | :----------------------------------------------------- |

1110| `behavior` | `Literal["allow"]` | `"allow"` | Deve essere "allow" |

1111| `updated_input` | `dict[str, Any] \| None` | `None` | Input modificato da utilizzare al posto dell'originale |

1112| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | Aggiornamenti delle autorizzazioni da applicare |

1113 

1114### `PermissionResultDeny`

1115 

1116Risultato che indica che la chiamata dello strumento deve essere negata.

1117 

1118```python theme={null}

1119@dataclass

1120class PermissionResultDeny:

1121 behavior: Literal["deny"] = "deny"

1122 message: str = ""

1123 interrupt: bool = False

1124```

1125 

1126| Campo | Tipo | Predefinito | Descrizione |

1127| :---------- | :---------------- | :---------- | :------------------------------------------------------ |

1128| `behavior` | `Literal["deny"]` | `"deny"` | Deve essere "deny" |

1129| `message` | `str` | `""` | Messaggio che spiega perché lo strumento è stato negato |

1130| `interrupt` | `bool` | `False` | Se interrompere l'esecuzione corrente |

1131 

1132### `PermissionUpdate`

1133 

1134Configurazione per l'aggiornamento delle autorizzazioni a livello di programmazione.

1135 

1136```python theme={null}

1137@dataclass

1138class PermissionUpdate:

1139 type: Literal[

1140 "addRules",

1141 "replaceRules",

1142 "removeRules",

1143 "setMode",

1144 "addDirectories",

1145 "removeDirectories",

1146 ]

1147 rules: list[PermissionRuleValue] | None = None

1148 behavior: Literal["allow", "deny", "ask"] | None = None

1149 mode: PermissionMode | None = None

1150 directories: list[str] | None = None

1151 destination: (

1152 Literal["userSettings", "projectSettings", "localSettings", "session"] | None

1153 ) = None

1154```

1155 

1156| Campo | Tipo | Descrizione |

1157| :------------ | :---------------------------------------- | :---------------------------------------------------------- |

1158| `type` | `Literal[...]` | Il tipo di operazione di aggiornamento delle autorizzazioni |

1159| `rules` | `list[PermissionRuleValue] \| None` | Regole per le operazioni add/replace/remove |

1160| `behavior` | `Literal["allow", "deny", "ask"] \| None` | Comportamento per le operazioni basate su regole |

1161| `mode` | `PermissionMode \| None` | Modalità per l'operazione setMode |

1162| `directories` | `list[str] \| None` | Directory per le operazioni add/remove directory |

1163| `destination` | `Literal[...] \| None` | Dove applicare l'aggiornamento delle autorizzazioni |

1164 

1165### `PermissionRuleValue`

1166 

1167Una regola da aggiungere, sostituire o rimuovere in un aggiornamento delle autorizzazioni.

1168 

1169```python theme={null}

1170@dataclass

1171class PermissionRuleValue:

1172 tool_name: str

1173 rule_content: str | None = None

1174```

1175 

1176### `ToolsPreset`

1177 

1178Configurazione degli strumenti preset per l'utilizzo del set di strumenti predefinito di Claude Code.

1179 

1180```python theme={null}

1181class ToolsPreset(TypedDict):

1182 type: Literal["preset"]

1183 preset: Literal["claude_code"]

1184```

1185 

1186### `ThinkingConfig`

1187 

1188Controlla il comportamento del pensiero esteso. Un'unione di tre configurazioni:

1189 

1190```python theme={null}

1191class ThinkingConfigAdaptive(TypedDict):

1192 type: Literal["adaptive"]

1193 

1194 

1195class ThinkingConfigEnabled(TypedDict):

1196 type: Literal["enabled"]

1197 budget_tokens: int

1198 

1199 

1200class ThinkingConfigDisabled(TypedDict):

1201 type: Literal["disabled"]

1202 

1203 

1204ThinkingConfig = ThinkingConfigAdaptive | ThinkingConfigEnabled | ThinkingConfigDisabled

1205```

1206 

1207| Variante | Campi | Descrizione |

1208| :--------- | :---------------------- | :--------------------------------------------------- |

1209| `adaptive` | `type` | Claude decide adattivamente quando pensare |

1210| `enabled` | `type`, `budget_tokens` | Abilita il pensiero con un budget di token specifico |

1211| `disabled` | `type` | Disabilita il pensiero |

1212 

1213Poiché queste sono classi `TypedDict`, sono dicts semplici in fase di esecuzione. Costruiscile come letterali dict o chiama la classe come costruttore; entrambi producono un `dict`. Accedi ai campi con `config["budget_tokens"]`, non `config.budget_tokens`:

1214 

1215```python theme={null}

1216from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled

1217 

1218# Option 1: dict literal (recommended, no import needed)

1219options = ClaudeAgentOptions(thinking={"type": "enabled", "budget_tokens": 20000})

1220 

1221# Option 2: constructor-style (returns a plain dict)

1222config = ThinkingConfigEnabled(type="enabled", budget_tokens=20000)

1223print(config["budget_tokens"]) # 20000

1224# config.budget_tokens would raise AttributeError

1225```

1226 

1227### `SdkBeta`

1228 

1229Tipo letterale per le funzionalità beta dell'SDK.

1230 

1231```python theme={null}

1232SdkBeta = Literal["context-1m-2025-08-07"]

1233```

1234 

1235Usa con il campo `betas` in `ClaudeAgentOptions` per abilitare le funzionalità beta.

1236 

1237<Warning>

1238 La beta `context-1m-2025-08-07` è ritirata a partire dal 30 aprile 2026. Passare questo header con Claude Sonnet 4.5 o Sonnet 4 non ha effetto, e le richieste che superano la finestra di contesto standard di 200k token restituiscono un errore. Per utilizzare una finestra di contesto di 1M token, esegui la migrazione a [Claude Sonnet 4.6, Claude Opus 4.6, o Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/overview), che includono 1M di contesto a prezzi standard senza header beta richiesto.

1239</Warning>

1240 

1241### `McpSdkServerConfig`

1242 

1243Configurazione per i server MCP dell'SDK creati con `create_sdk_mcp_server()`.

1244 

1245```python theme={null}

1246class McpSdkServerConfig(TypedDict):

1247 type: Literal["sdk"]

1248 name: str

1249 instance: Any # MCP Server instance

1250```

1251 

1252### `McpServerConfig`

1253 

1254Tipo di unione per le configurazioni del server MCP.

1255 

1256```python theme={null}

1257McpServerConfig = (

1258 McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig

1259)

1260```

1261 

1262#### `McpStdioServerConfig`

1263 

1264```python theme={null}

1265class McpStdioServerConfig(TypedDict):

1266 type: NotRequired[Literal["stdio"]] # Optional for backwards compatibility

1267 command: str

1268 args: NotRequired[list[str]]

1269 env: NotRequired[dict[str, str]]

1270```

1271 

1272#### `McpSSEServerConfig`

1273 

1274```python theme={null}

1275class McpSSEServerConfig(TypedDict):

1276 type: Literal["sse"]

1277 url: str

1278 headers: NotRequired[dict[str, str]]

1279```

1280 

1281#### `McpHttpServerConfig`

1282 

1283```python theme={null}

1284class McpHttpServerConfig(TypedDict):

1285 type: Literal["http"]

1286 url: str

1287 headers: NotRequired[dict[str, str]]

1288```

1289 

1290### `McpServerStatusConfig`

1291 

1292La configurazione di un server MCP come riportato da [`get_mcp_status()`](#methods). Questa è l'unione di tutte le varianti di trasporto [`McpServerConfig`](#mcp-server-config) più una variante di output-only `claudeai-proxy` per i server proxy attraverso claude.ai.

1293 

1294```python theme={null}

1295McpServerStatusConfig = (

1296 McpStdioServerConfig

1297 | McpSSEServerConfig

1298 | McpHttpServerConfig

1299 | McpSdkServerConfigStatus

1300 | McpClaudeAIProxyServerConfig

1301)

1302```

1303 

1304`McpSdkServerConfigStatus` è la forma serializzabile di [`McpSdkServerConfig`](#mcp-sdk-server-config) con solo i campi `type` (`"sdk"`) e `name` (`str`); l'`instance` in-process viene omesso. `McpClaudeAIProxyServerConfig` ha i campi `type` (`"claudeai-proxy"`), `url` (`str`), e `id` (`str`).

1305 

1306### `McpStatusResponse`

1307 

1308Risposta da [`ClaudeSDKClient.get_mcp_status()`](#methods). Avvolge l'elenco degli stati del server sotto la chiave `mcpServers`.

1309 

1310```python theme={null}

1311class McpStatusResponse(TypedDict):

1312 mcpServers: list[McpServerStatus]

1313```

1314 

1315### `McpServerStatus`

1316 

1317Stato di un server MCP connesso, contenuto in [`McpStatusResponse`](#mcp-status-response).

1318 

1319```python theme={null}

1320class McpServerStatus(TypedDict):

1321 name: str

1322 status: McpServerConnectionStatus # "connected" | "failed" | "needs-auth" | "pending" | "disabled"

1323 serverInfo: NotRequired[McpServerInfo]

1324 error: NotRequired[str]

1325 config: NotRequired[McpServerStatusConfig]

1326 scope: NotRequired[str]

1327 tools: NotRequired[list[McpToolInfo]]

1328```

1329 

1330| Campo | Tipo | Descrizione |

1331| :----------- | :--------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1332| `name` | `str` | Nome del server |

1333| `status` | `str` | Uno di `"connected"`, `"failed"`, `"needs-auth"`, `"pending"`, o `"disabled"` |

1334| `serverInfo` | `dict` (opzionale) | Nome e versione del server (`{"name": str, "version": str}`) |

1335| `error` | `str` (opzionale) | Messaggio di errore se il server non si è connesso |

1336| `config` | [`McpServerStatusConfig`](#mcp-server-status-config) (opzionale) | Configurazione del server. Stessa forma di [`McpServerConfig`](#mcp-server-config) (stdio, SSE, HTTP, o SDK), più una variante `claudeai-proxy` per i server connessi tramite claude.ai |

1337| `scope` | `str` (opzionale) | Ambito di configurazione |

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

1339 

1340### `SdkPluginConfig`

1341 

1342Configurazione per il caricamento dei plugin nell'SDK.

1343 

1344```python theme={null}

1345class SdkPluginConfig(TypedDict):

1346 type: Literal["local"]

1347 path: str

1348```

1349 

1350| Campo | Tipo | Descrizione |

1351| :----- | :----------------- | :--------------------------------------------------------------------- |

1352| `type` | `Literal["local"]` | Deve essere `"local"` (attualmente sono supportati solo plugin locali) |

1353| `path` | `str` | Percorso assoluto o relativo alla directory del plugin |

1354 

1355**Esempio:**

1356 

1357```python theme={null}

1358plugins = [

1359 {"type": "local", "path": "./my-plugin"},

1360 {"type": "local", "path": "/absolute/path/to/plugin"},

1361]

1362```

1363 

1364Per informazioni complete sulla creazione e l'utilizzo dei plugin, vedi [Plugin](/it/agent-sdk/plugins).

1365 

1366## Tipi di messaggio

1367 

1368### `Message`

1369 

1370Tipo di unione di tutti i possibili messaggi.

1371 

1372```python theme={null}

1373Message = (

1374 UserMessage

1375 | AssistantMessage

1376 | SystemMessage

1377 | ResultMessage

1378 | StreamEvent

1379 | RateLimitEvent

1380)

1381```

1382 

1383### `UserMessage`

1384 

1385Messaggio di input dell'utente.

1386 

1387```python theme={null}

1388@dataclass

1389class UserMessage:

1390 content: str | list[ContentBlock]

1391 uuid: str | None = None

1392 parent_tool_use_id: str | None = None

1393 tool_use_result: dict[str, Any] | None = None

1394```

1395 

1396| Campo | Tipo | Descrizione |

1397| :------------------- | :-------------------------- | :--------------------------------------------------------------------------------------------- |

1398| `content` | `str \| list[ContentBlock]` | Contenuto del messaggio come testo o blocchi di contenuto |

1399| `uuid` | `str \| None` | Identificatore di messaggio univoco |

1400| `parent_tool_use_id` | `str \| None` | ID di utilizzo dello strumento se questo messaggio è una risposta al risultato dello strumento |

1401| `tool_use_result` | `dict[str, Any] \| None` | Dati del risultato dello strumento se applicabile |

1402 

1403### `AssistantMessage`

1404 

1405Messaggio di risposta dell'assistente con blocchi di contenuto.

1406 

1407```python theme={null}

1408@dataclass

1409class AssistantMessage:

1410 content: list[ContentBlock]

1411 model: str

1412 parent_tool_use_id: str | None = None

1413 error: AssistantMessageError | None = None

1414 usage: dict[str, Any] | None = None

1415 message_id: str | None = None

1416```

1417 

1418| Campo | Tipo | Descrizione |

1419| :------------------- | :------------------------------------------------------------- | :------------------------------------------------------------------------------------------- |

1420| `content` | `list[ContentBlock]` | Elenco di blocchi di contenuto nella risposta |

1421| `model` | `str` | Modello che ha generato la risposta |

1422| `parent_tool_use_id` | `str \| None` | ID di utilizzo dello strumento se questa è una risposta nidificata |

1423| `error` | [`AssistantMessageError`](#assistant-message-error) ` \| None` | Tipo di errore se la risposta ha riscontrato un errore |

1424| `usage` | `dict[str, Any] \| None` | Utilizzo dei token per messaggio (stesse chiavi di [`ResultMessage.usage`](#result-message)) |

1425| `message_id` | `str \| None` | ID del messaggio API. Più messaggi da un turno condividono lo stesso ID |

1426 

1427### `AssistantMessageError`

1428 

1429Possibili tipi di errore per i messaggi dell'assistente.

1430 

1431```python theme={null}

1432AssistantMessageError = Literal[

1433 "authentication_failed",

1434 "billing_error",

1435 "rate_limit",

1436 "invalid_request",

1437 "server_error",

1438 "max_output_tokens",

1439 "unknown",

1440]

1441```

1442 

1443### `SystemMessage`

1444 

1445Messaggio di sistema con metadati.

1446 

1447```python theme={null}

1448@dataclass

1449class SystemMessage:

1450 subtype: str

1451 data: dict[str, Any]

1452```

1453 

1454### `ResultMessage`

1455 

1456Messaggio di risultato finale con informazioni su costo e utilizzo.

1457 

1458```python theme={null}

1459@dataclass

1460class ResultMessage:

1461 subtype: str

1462 duration_ms: int

1463 duration_api_ms: int

1464 is_error: bool

1465 num_turns: int

1466 session_id: str

1467 total_cost_usd: float | None = None

1468 usage: dict[str, Any] | None = None

1469 result: str | None = None

1470 stop_reason: str | None = None

1471 structured_output: Any = None

1472 model_usage: dict[str, Any] | None = None

1473```

1474 

1475Il dict `usage` contiene le seguenti chiavi quando presenti:

1476 

1477| Chiave | Tipo | Descrizione |

1478| ----------------------------- | ----- | ------------------------------------------------ |

1479| `input_tokens` | `int` | Token di input totali consumati. |

1480| `output_tokens` | `int` | Token di output totali generati. |

1481| `cache_creation_input_tokens` | `int` | Token utilizzati per creare nuove voci di cache. |

1482| `cache_read_input_tokens` | `int` | Token letti dalle voci di cache esistenti. |

1483 

1484Il dict `model_usage` mappa i nomi dei modelli all'utilizzo per modello. Le chiavi del dict interno usano camelCase perché il valore viene passato senza modifiche dal processo CLI sottostante, corrispondendo al tipo TypeScript [`ModelUsage`](/it/agent-sdk/typescript#model-usage):

1485 

1486| Chiave | Tipo | Descrizione |

1487| -------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1488| `inputTokens` | `int` | Token di input per questo modello. |

1489| `outputTokens` | `int` | Token di output per questo modello. |

1490| `cacheReadInputTokens` | `int` | Token di lettura della cache per questo modello. |

1491| `cacheCreationInputTokens` | `int` | Token di creazione della cache per questo modello. |

1492| `webSearchRequests` | `int` | Richieste di ricerca web effettuate da questo modello. |

1493| `costUSD` | `float` | Costo stimato in USD per questo modello, calcolato lato client. Vedi [Traccia costo e utilizzo](/it/agent-sdk/cost-tracking) per avvertenze di fatturazione. |

1494| `contextWindow` | `int` | Dimensione della finestra di contesto per questo modello. |

1495| `maxOutputTokens` | `int` | Limite massimo di token di output per questo modello. |

1496 

1497### `StreamEvent`

1498 

1499Evento di flusso per aggiornamenti di messaggi parziali durante lo streaming. Ricevuto solo quando `include_partial_messages=True` in `ClaudeAgentOptions`. Importa tramite `from claude_agent_sdk.types import StreamEvent`.

1500 

1501```python theme={null}

1502@dataclass

1503class StreamEvent:

1504 uuid: str

1505 session_id: str

1506 event: dict[str, Any] # The raw Claude API stream event

1507 parent_tool_use_id: str | None = None

1508```

1509 

1510| Campo | Tipo | Descrizione |

1511| :------------------- | :--------------- | :----------------------------------------------------------------------------- |

1512| `uuid` | `str` | Identificatore univoco per questo evento |

1513| `session_id` | `str` | Identificatore di sessione |

1514| `event` | `dict[str, Any]` | I dati dell'evento di flusso dell'API Claude grezzo |

1515| `parent_tool_use_id` | `str \| None` | ID di utilizzo dello strumento padre se questo evento proviene da un subagente |

1516 

1517### `RateLimitEvent`

1518 

1519Emesso quando lo stato del limite di velocità cambia (ad esempio, da `"allowed"` a `"allowed_warning"`). Usalo per avvertire gli utenti prima che raggiungano un limite rigido, o per fare backoff quando lo stato è `"rejected"`.

1520 

1521```python theme={null}

1522@dataclass

1523class RateLimitEvent:

1524 rate_limit_info: RateLimitInfo

1525 uuid: str

1526 session_id: str

1527```

1528 

1529| Campo | Tipo | Descrizione |

1530| :---------------- | :---------------------------------- | :------------------------------------ |

1531| `rate_limit_info` | [`RateLimitInfo`](#rate-limit-info) | Stato del limite di velocità corrente |

1532| `uuid` | `str` | Identificatore di evento univoco |

1533| `session_id` | `str` | Identificatore di sessione |

1534 

1535### `RateLimitInfo`

1536 

1537Stato del limite di velocità trasportato da [`RateLimitEvent`](#rate-limit-event).

1538 

1539```python theme={null}

1540RateLimitStatus = Literal["allowed", "allowed_warning", "rejected"]

1541RateLimitType = Literal[

1542 "five_hour", "seven_day", "seven_day_opus", "seven_day_sonnet", "overage"

1543]

1544 

1545 

1546@dataclass

1547class RateLimitInfo:

1548 status: RateLimitStatus

1549 resets_at: int | None = None

1550 rate_limit_type: RateLimitType | None = None

1551 utilization: float | None = None

1552 overage_status: RateLimitStatus | None = None

1553 overage_resets_at: int | None = None

1554 overage_disabled_reason: str | None = None

1555 raw: dict[str, Any] = field(default_factory=dict)

1556```

1557 

1558| Campo | Tipo | Descrizione |

1559| :------------------------ | :------------------------ | :-------------------------------------------------------------------------------------------------------------------------- |

1560| `status` | `RateLimitStatus` | Stato corrente. `"allowed_warning"` significa avvicinarsi al limite; `"rejected"` significa che il limite è stato raggiunto |

1561| `resets_at` | `int \| None` | Timestamp Unix quando la finestra del limite di velocità si ripristina |

1562| `rate_limit_type` | `RateLimitType \| None` | Quale finestra del limite di velocità si applica |

1563| `utilization` | `float \| None` | Frazione del limite di velocità consumato (0.0 a 1.0) |

1564| `overage_status` | `RateLimitStatus \| None` | Stato dell'utilizzo di overage pay-as-you-go, se applicabile |

1565| `overage_resets_at` | `int \| None` | Timestamp Unix quando la finestra di overage si ripristina |

1566| `overage_disabled_reason` | `str \| None` | Perché l'overage non è disponibile, se lo stato è `"rejected"` |

1567| `raw` | `dict[str, Any]` | Dict grezzo completo dalla CLI, inclusi i campi non modellati sopra |

1568 

1569### `TaskStartedMessage`

1570 

1571Emesso quando un'attività in background inizia. Un'attività in background è qualsiasi cosa tracciata al di fuori del turno principale: un comando Bash in background, un watch Monitor, un subagente generato tramite lo strumento Agent, o un agente remoto. Il campo `task_type` ti dice quale. Questo nome non è correlato al rinomina dello strumento `Task`-to-`Agent`.

1572 

1573```python theme={null}

1574@dataclass

1575class TaskStartedMessage(SystemMessage):

1576 task_id: str

1577 description: str

1578 uuid: str

1579 session_id: str

1580 tool_use_id: str | None = None

1581 task_type: str | None = None

1582```

1583 

1584| Campo | Tipo | Descrizione |

1585| :------------ | :------------ | :------------------------------------------------------------------------------------------------------------------------------- |

1586| `task_id` | `str` | Identificatore univoco per l'attività |

1587| `description` | `str` | Descrizione dell'attività |

1588| `uuid` | `str` | Identificatore di messaggio univoco |

1589| `session_id` | `str` | Identificatore di sessione |

1590| `tool_use_id` | `str \| None` | ID di utilizzo dello strumento associato |

1591| `task_type` | `str \| None` | Quale tipo di attività in background: `"local_bash"` per Bash in background e watch Monitor, `"local_agent"`, o `"remote_agent"` |

1592 

1593### `TaskUsage`

1594 

1595Dati di token e timing per un'attività in background.

1596 

1597```python theme={null}

1598class TaskUsage(TypedDict):

1599 total_tokens: int

1600 tool_uses: int

1601 duration_ms: int

1602```

1603 

1604### `TaskProgressMessage`

1605 

1606Emesso periodicamente con aggiornamenti di progresso per un'attività in background in esecuzione.

1607 

1608```python theme={null}

1609@dataclass

1610class TaskProgressMessage(SystemMessage):

1611 task_id: str

1612 description: str

1613 usage: TaskUsage

1614 uuid: str

1615 session_id: str

1616 tool_use_id: str | None = None

1617 last_tool_name: str | None = None

1618```

1619 

1620| Campo | Tipo | Descrizione |

1621| :--------------- | :------------ | :-------------------------------------------------- |

1622| `task_id` | `str` | Identificatore univoco per l'attività |

1623| `description` | `str` | Descrizione dello stato corrente |

1624| `usage` | `TaskUsage` | Utilizzo dei token per questa attività finora |

1625| `uuid` | `str` | Identificatore di messaggio univoco |

1626| `session_id` | `str` | Identificatore di sessione |

1627| `tool_use_id` | `str \| None` | ID di utilizzo dello strumento associato |

1628| `last_tool_name` | `str \| None` | Nome dell'ultimo strumento utilizzato dall'attività |

1629 

1630### `TaskNotificationMessage`

1631 

1632Emesso quando un'attività in background si completa, fallisce o viene interrotta. Le attività in background includono comandi Bash `run_in_background`, watch Monitor e subagenti in background.

1633 

1634```python theme={null}

1635@dataclass

1636class TaskNotificationMessage(SystemMessage):

1637 task_id: str

1638 status: TaskNotificationStatus # "completed" | "failed" | "stopped"

1639 output_file: str

1640 summary: str

1641 uuid: str

1642 session_id: str

1643 tool_use_id: str | None = None

1644 usage: TaskUsage | None = None

1645```

1646 

1647| Campo | Tipo | Descrizione |

1648| :------------ | :----------------------- | :---------------------------------------------- |

1649| `task_id` | `str` | Identificatore univoco per l'attività |

1650| `status` | `TaskNotificationStatus` | Uno di `"completed"`, `"failed"`, o `"stopped"` |

1651| `output_file` | `str` | Percorso al file di output dell'attività |

1652| `summary` | `str` | Riepilogo del risultato dell'attività |

1653| `uuid` | `str` | Identificatore di messaggio univoco |

1654| `session_id` | `str` | Identificatore di sessione |

1655| `tool_use_id` | `str \| None` | ID di utilizzo dello strumento associato |

1656| `usage` | `TaskUsage \| None` | Utilizzo dei token finale per l'attività |

1657 

1658## Tipi di blocco di contenuto

1659 

1660### `ContentBlock`

1661 

1662Tipo di unione di tutti i blocchi di contenuto.

1663 

1664```python theme={null}

1665ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock | ToolResultBlock

1666```

1667 

1668### `TextBlock`

1669 

1670Blocco di contenuto di testo.

1671 

1672```python theme={null}

1673@dataclass

1674class TextBlock:

1675 text: str

1676```

1677 

1678### `ThinkingBlock`

1679 

1680Blocco di contenuto di pensiero (per modelli con capacità di pensiero).

1681 

1682```python theme={null}

1683@dataclass

1684class ThinkingBlock:

1685 thinking: str

1686 signature: str

1687```

1688 

1689### `ToolUseBlock`

1690 

1691Blocco di richiesta di utilizzo dello strumento.

1692 

1693```python theme={null}

1694@dataclass

1695class ToolUseBlock:

1696 id: str

1697 name: str

1698 input: dict[str, Any]

1699```

1700 

1701### `ToolResultBlock`

1702 

1703Blocco di risultato dell'esecuzione dello strumento.

1704 

1705```python theme={null}

1706@dataclass

1707class ToolResultBlock:

1708 tool_use_id: str

1709 content: str | list[dict[str, Any]] | None = None

1710 is_error: bool | None = None

1711```

1712 

1713## Tipi di errore

1714 

1715### `ClaudeSDKError`

1716 

1717Classe di eccezione base per tutti gli errori dell'SDK.

1718 

1719```python theme={null}

1720class ClaudeSDKError(Exception):

1721 """Base error for Claude SDK."""

1722```

1723 

1724### `CLINotFoundError`

1725 

1726Generato quando Claude Code CLI non è installato o non viene trovato.

1727 

1728```python theme={null}

1729class CLINotFoundError(CLIConnectionError):

1730 def __init__(

1731 self, message: str = "Claude Code not found", cli_path: str | None = None

1732 ):

1733 """

1734 Args:

1735 message: Error message (default: "Claude Code not found")

1736 cli_path: Optional path to the CLI that was not found

1737 """

1738```

1739 

1740### `CLIConnectionError`

1741 

1742Generato quando la connessione a Claude Code fallisce.

1743 

1744```python theme={null}

1745class CLIConnectionError(ClaudeSDKError):

1746 """Failed to connect to Claude Code."""

1747```

1748 

1749### `ProcessError`

1750 

1751Generato quando il processo Claude Code fallisce.

1752 

1753```python theme={null}

1754class ProcessError(ClaudeSDKError):

1755 def __init__(

1756 self, message: str, exit_code: int | None = None, stderr: str | None = None

1757 ):

1758 self.exit_code = exit_code

1759 self.stderr = stderr

1760```

1761 

1762### `CLIJSONDecodeError`

1763 

1764Generato quando l'analisi JSON fallisce.

1765 

1766```python theme={null}

1767class CLIJSONDecodeError(ClaudeSDKError):

1768 def __init__(self, line: str, original_error: Exception):

1769 """

1770 Args:

1771 line: The line that failed to parse

1772 original_error: The original JSON decode exception

1773 """

1774 self.line = line

1775 self.original_error = original_error

1776```

1777 

1778## Tipi di Hook

1779 

1780Per una guida completa sull'utilizzo degli hooks con esempi e modelli comuni, vedi la [guida Hooks](/it/agent-sdk/hooks).

1781 

1782### `HookEvent`

1783 

1784Tipi di evento hook supportati.

1785 

1786```python theme={null}

1787HookEvent = Literal[

1788 "PreToolUse", # Called before tool execution

1789 "PostToolUse", # Called after tool execution

1790 "PostToolUseFailure", # Called when a tool execution fails

1791 "UserPromptSubmit", # Called when user submits a prompt

1792 "Stop", # Called when stopping execution

1793 "SubagentStop", # Called when a subagent stops

1794 "PreCompact", # Called before message compaction

1795 "Notification", # Called for notification events

1796 "SubagentStart", # Called when a subagent starts

1797 "PermissionRequest", # Called when a permission decision is needed

1798]

1799```

1800 

1801<Note>

1802 TypeScript SDK supporta eventi hook aggiuntivi non ancora disponibili in Python: `SessionStart`, `SessionEnd`, `Setup`, `TeammateIdle`, `TaskCompleted`, `ConfigChange`, `WorktreeCreate`, `WorktreeRemove`, e `PostToolBatch`.

1803</Note>

1804 

1805### `HookCallback`

1806 

1807Definizione di tipo per le funzioni di callback hook.

1808 

1809```python theme={null}

1810HookCallback = Callable[[HookInput, str | None, HookContext], Awaitable[HookJSONOutput]]

1811```

1812 

1813Parametri:

1814 

1815* `input`: Input hook fortemente tipizzato con unioni discriminate basate su `hook_event_name` (vedi [`HookInput`](#hook-input))

1816* `tool_use_id`: Identificatore di utilizzo dello strumento opzionale (per hook correlati allo strumento)

1817* `context`: Contesto hook con informazioni aggiuntive

1818 

1819Restituisce un [`HookJSONOutput`](#hook-json-output) che può contenere:

1820 

1821* `decision`: `"block"` per bloccare l'azione

1822* `systemMessage`: Messaggio di sistema da aggiungere al trascritto

1823* `hookSpecificOutput`: Dati di output specifici dell'hook

1824 

1825### `HookContext`

1826 

1827Informazioni di contesto passate ai callback hook.

1828 

1829```python theme={null}

1830class HookContext(TypedDict):

1831 signal: Any | None # Future: abort signal support

1832```

1833 

1834### `HookMatcher`

1835 

1836Configurazione per l'abbinamento degli hook a eventi o strumenti specifici.

1837 

1838```python theme={null}

1839@dataclass

1840class HookMatcher:

1841 matcher: str | None = (

1842 None # Tool name or pattern to match (e.g., "Bash", "Write|Edit")

1843 )

1844 hooks: list[HookCallback] = field(

1845 default_factory=list

1846 ) # List of callbacks to execute

1847 timeout: float | None = (

1848 None # Timeout in seconds for all hooks in this matcher (default: 60)

1849 )

1850```

1851 

1852### `HookInput`

1853 

1854Tipo di unione di tutti i tipi di input hook. Il tipo effettivo dipende dal campo `hook_event_name`.

1855 

1856```python theme={null}

1857HookInput = (

1858 PreToolUseHookInput

1859 | PostToolUseHookInput

1860 | PostToolUseFailureHookInput

1861 | UserPromptSubmitHookInput

1862 | StopHookInput

1863 | SubagentStopHookInput

1864 | PreCompactHookInput

1865 | NotificationHookInput

1866 | SubagentStartHookInput

1867 | PermissionRequestHookInput

1868)

1869```

1870 

1871### `BaseHookInput`

1872 

1873Campi di base presenti in tutti i tipi di input hook.

1874 

1875```python theme={null}

1876class BaseHookInput(TypedDict):

1877 session_id: str

1878 transcript_path: str

1879 cwd: str

1880 permission_mode: NotRequired[str]

1881```

1882 

1883| Campo | Tipo | Descrizione |

1884| :---------------- | :---------------- | :-------------------------------------------- |

1885| `session_id` | `str` | Identificatore di sessione corrente |

1886| `transcript_path` | `str` | Percorso al file di trascritto della sessione |

1887| `cwd` | `str` | Directory di lavoro corrente |

1888| `permission_mode` | `str` (opzionale) | Modalità di autorizzazione corrente |

1889 

1890### `PreToolUseHookInput`

1891 

1892Dati di input per gli eventi hook `PreToolUse`.

1893 

1894```python theme={null}

1895class PreToolUseHookInput(BaseHookInput):

1896 hook_event_name: Literal["PreToolUse"]

1897 tool_name: str

1898 tool_input: dict[str, Any]

1899 tool_use_id: str

1900 agent_id: NotRequired[str]

1901 agent_type: NotRequired[str]

1902```

1903 

1904| Campo | Tipo | Descrizione |

1905| :---------------- | :---------------------- | :----------------------------------------------------------------------------------------- |

1906| `hook_event_name` | `Literal["PreToolUse"]` | Sempre "PreToolUse" |

1907| `tool_name` | `str` | Nome dello strumento che sta per essere eseguito |

1908| `tool_input` | `dict[str, Any]` | Parametri di input per lo strumento |

1909| `tool_use_id` | `str` | Identificatore univoco per questo utilizzo dello strumento |

1910| `agent_id` | `str` (opzionale) | Identificatore del subagente, presente quando l'hook si attiva all'interno di un subagente |

1911| `agent_type` | `str` (opzionale) | Tipo di subagente, presente quando l'hook si attiva all'interno di un subagente |

1912 

1913### `PostToolUseHookInput`

1914 

1915Dati di input per gli eventi hook `PostToolUse`.

1916 

1917```python theme={null}

1918class PostToolUseHookInput(BaseHookInput):

1919 hook_event_name: Literal["PostToolUse"]

1920 tool_name: str

1921 tool_input: dict[str, Any]

1922 tool_response: Any

1923 tool_use_id: str

1924 agent_id: NotRequired[str]

1925 agent_type: NotRequired[str]

1926```

1927 

1928| Campo | Tipo | Descrizione |

1929| :---------------- | :----------------------- | :----------------------------------------------------------------------------------------- |

1930| `hook_event_name` | `Literal["PostToolUse"]` | Sempre "PostToolUse" |

1931| `tool_name` | `str` | Nome dello strumento che è stato eseguito |

1932| `tool_input` | `dict[str, Any]` | Parametri di input che sono stati utilizzati |

1933| `tool_response` | `Any` | Risposta dall'esecuzione dello strumento |

1934| `tool_use_id` | `str` | Identificatore univoco per questo utilizzo dello strumento |

1935| `agent_id` | `str` (opzionale) | Identificatore del subagente, presente quando l'hook si attiva all'interno di un subagente |

1936| `agent_type` | `str` (opzionale) | Tipo di subagente, presente quando l'hook si attiva all'interno di un subagente |

1937 

1938### `PostToolUseFailureHookInput`

1939 

1940Dati di input per gli eventi hook `PostToolUseFailure`. Chiamato quando l'esecuzione di uno strumento fallisce.

1941 

1942```python theme={null}

1943class PostToolUseFailureHookInput(BaseHookInput):

1944 hook_event_name: Literal["PostToolUseFailure"]

1945 tool_name: str

1946 tool_input: dict[str, Any]

1947 tool_use_id: str

1948 error: str

1949 is_interrupt: NotRequired[bool]

1950 agent_id: NotRequired[str]

1951 agent_type: NotRequired[str]

1952```

1953 

1954| Campo | Tipo | Descrizione |

1955| :---------------- | :------------------------------ | :----------------------------------------------------------------------------------------- |

1956| `hook_event_name` | `Literal["PostToolUseFailure"]` | Sempre "PostToolUseFailure" |

1957| `tool_name` | `str` | Nome dello strumento che ha fallito |

1958| `tool_input` | `dict[str, Any]` | Parametri di input che sono stati utilizzati |

1959| `tool_use_id` | `str` | Identificatore univoco per questo utilizzo dello strumento |

1960| `error` | `str` | Messaggio di errore dall'esecuzione fallita |

1961| `is_interrupt` | `bool` (opzionale) | Se il fallimento è stato causato da un'interruzione |

1962| `agent_id` | `str` (opzionale) | Identificatore del subagente, presente quando l'hook si attiva all'interno di un subagente |

1963| `agent_type` | `str` (opzionale) | Tipo di subagente, presente quando l'hook si attiva all'interno di un subagente |

1964 

1965### `UserPromptSubmitHookInput`

1966 

1967Dati di input per gli eventi hook `UserPromptSubmit`.

1968 

1969```python theme={null}

1970class UserPromptSubmitHookInput(BaseHookInput):

1971 hook_event_name: Literal["UserPromptSubmit"]

1972 prompt: str

1973```

1974 

1975| Campo | Tipo | Descrizione |

1976| :---------------- | :---------------------------- | :---------------------------- |

1977| `hook_event_name` | `Literal["UserPromptSubmit"]` | Sempre "UserPromptSubmit" |

1978| `prompt` | `str` | Il prompt inviato dall'utente |

1979 

1980### `StopHookInput`

1981 

1982Dati di input per gli eventi hook `Stop`.

1983 

1984```python theme={null}

1985class StopHookInput(BaseHookInput):

1986 hook_event_name: Literal["Stop"]

1987 stop_hook_active: bool

1988```

1989 

1990| Campo | Tipo | Descrizione |

1991| :----------------- | :---------------- | :---------------------------- |

1992| `hook_event_name` | `Literal["Stop"]` | Sempre "Stop" |

1993| `stop_hook_active` | `bool` | Se l'hook di arresto è attivo |

1994 

1995### `SubagentStopHookInput`

1996 

1997Dati di input per gli eventi hook `SubagentStop`.

1998 

1999```python theme={null}

2000class SubagentStopHookInput(BaseHookInput):

2001 hook_event_name: Literal["SubagentStop"]

2002 stop_hook_active: bool

2003 agent_id: str

2004 agent_transcript_path: str

2005 agent_type: str

2006```

2007 

2008| Campo | Tipo | Descrizione |

2009| :---------------------- | :------------------------ | :------------------------------------------- |

2010| `hook_event_name` | `Literal["SubagentStop"]` | Sempre "SubagentStop" |

2011| `stop_hook_active` | `bool` | Se l'hook di arresto è attivo |

2012| `agent_id` | `str` | Identificatore univoco per il subagente |

2013| `agent_transcript_path` | `str` | Percorso al file di trascritto del subagente |

2014| `agent_type` | `str` | Tipo del subagente |

2015 

2016### `PreCompactHookInput`

2017 

2018Dati di input per gli eventi hook `PreCompact`.

2019 

2020```python theme={null}

2021class PreCompactHookInput(BaseHookInput):

2022 hook_event_name: Literal["PreCompact"]

2023 trigger: Literal["manual", "auto"]

2024 custom_instructions: str | None

2025```

2026 

2027| Campo | Tipo | Descrizione |

2028| :-------------------- | :-------------------------- | :--------------------------------------------- |

2029| `hook_event_name` | `Literal["PreCompact"]` | Sempre "PreCompact" |

2030| `trigger` | `Literal["manual", "auto"]` | Cosa ha attivato la compattazione |

2031| `custom_instructions` | `str \| None` | Istruzioni personalizzate per la compattazione |

2032 

2033### `NotificationHookInput`

2034 

2035Dati di input per gli eventi hook `Notification`.

2036 

2037```python theme={null}

2038class NotificationHookInput(BaseHookInput):

2039 hook_event_name: Literal["Notification"]

2040 message: str

2041 title: NotRequired[str]

2042 notification_type: str

2043```

2044 

2045| Campo | Tipo | Descrizione |

2046| :------------------ | :------------------------ | :---------------------------------- |

2047| `hook_event_name` | `Literal["Notification"]` | Sempre "Notification" |

2048| `message` | `str` | Contenuto del messaggio di notifica |

2049| `title` | `str` (opzionale) | Titolo della notifica |

2050| `notification_type` | `str` | Tipo di notifica |

2051 

2052### `SubagentStartHookInput`

2053 

2054Dati di input per gli eventi hook `SubagentStart`.

2055 

2056```python theme={null}

2057class SubagentStartHookInput(BaseHookInput):

2058 hook_event_name: Literal["SubagentStart"]

2059 agent_id: str

2060 agent_type: str

2061```

2062 

2063| Campo | Tipo | Descrizione |

2064| :---------------- | :------------------------- | :-------------------------------------- |

2065| `hook_event_name` | `Literal["SubagentStart"]` | Sempre "SubagentStart" |

2066| `agent_id` | `str` | Identificatore univoco per il subagente |

2067| `agent_type` | `str` | Tipo del subagente |

2068 

2069### `PermissionRequestHookInput`

2070 

2071Dati di input per gli eventi hook `PermissionRequest`. Consente agli hook di gestire le decisioni di autorizzazione a livello di programmazione.

2072 

2073```python theme={null}

2074class PermissionRequestHookInput(BaseHookInput):

2075 hook_event_name: Literal["PermissionRequest"]

2076 tool_name: str

2077 tool_input: dict[str, Any]

2078 permission_suggestions: NotRequired[list[Any]]

2079```

2080 

2081| Campo | Tipo | Descrizione |

2082| :----------------------- | :----------------------------- | :-------------------------------------------------- |

2083| `hook_event_name` | `Literal["PermissionRequest"]` | Sempre "PermissionRequest" |

2084| `tool_name` | `str` | Nome dello strumento che richiede l'autorizzazione |

2085| `tool_input` | `dict[str, Any]` | Parametri di input per lo strumento |

2086| `permission_suggestions` | `list[Any]` (opzionale) | Aggiornamenti di autorizzazione suggeriti dalla CLI |

2087 

2088### `HookJSONOutput`

2089 

2090Tipo di unione per i valori di ritorno del callback hook.

2091 

2092```python theme={null}

2093HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput

2094```

2095 

2096#### `SyncHookJSONOutput`

2097 

2098Output hook sincrono con campi di controllo e decisione.

2099 

2100```python theme={null}

2101class SyncHookJSONOutput(TypedDict):

2102 # Control fields

2103 continue_: NotRequired[bool] # Whether to proceed (default: True)

2104 suppressOutput: NotRequired[bool] # Hide stdout from transcript

2105 stopReason: NotRequired[str] # Message when continue is False

2106 

2107 # Decision fields

2108 decision: NotRequired[Literal["block"]]

2109 systemMessage: NotRequired[str] # Warning message for user

2110 reason: NotRequired[str] # Feedback for Claude

2111 

2112 # Hook-specific output

2113 hookSpecificOutput: NotRequired[HookSpecificOutput]

2114```

2115 

2116<Note>

2117 Usa `continue_` (con underscore) nel codice Python. Viene automaticamente convertito a `continue` quando inviato alla CLI.

2118</Note>

2119 

2120#### `HookSpecificOutput`

2121 

2122Un `TypedDict` contenente il nome dell'evento hook e i campi specifici dell'evento. La forma dipende dal valore `hookEventName`. Per i dettagli completi sui campi disponibili per evento hook, vedi [Controlla l'esecuzione con gli hooks](/it/agent-sdk/hooks#outputs).

2123 

2124Un'unione discriminata di tipi di output specifici dell'evento. Il campo `hookEventName` determina quali campi sono validi.

2125 

2126```python theme={null}

2127class PreToolUseHookSpecificOutput(TypedDict):

2128 hookEventName: Literal["PreToolUse"]

2129 permissionDecision: NotRequired[Literal["allow", "deny", "ask"]]

2130 permissionDecisionReason: NotRequired[str]

2131 updatedInput: NotRequired[dict[str, Any]]

2132 additionalContext: NotRequired[str]

2133 

2134 

2135class PostToolUseHookSpecificOutput(TypedDict):

2136 hookEventName: Literal["PostToolUse"]

2137 additionalContext: NotRequired[str]

2138 updatedMCPToolOutput: NotRequired[Any]

2139 

2140 

2141class PostToolUseFailureHookSpecificOutput(TypedDict):

2142 hookEventName: Literal["PostToolUseFailure"]

2143 additionalContext: NotRequired[str]

2144 

2145 

2146class UserPromptSubmitHookSpecificOutput(TypedDict):

2147 hookEventName: Literal["UserPromptSubmit"]

2148 additionalContext: NotRequired[str]

2149 

2150 

2151class NotificationHookSpecificOutput(TypedDict):

2152 hookEventName: Literal["Notification"]

2153 additionalContext: NotRequired[str]

2154 

2155 

2156class SubagentStartHookSpecificOutput(TypedDict):

2157 hookEventName: Literal["SubagentStart"]

2158 additionalContext: NotRequired[str]

2159 

2160 

2161class PermissionRequestHookSpecificOutput(TypedDict):

2162 hookEventName: Literal["PermissionRequest"]

2163 decision: dict[str, Any]

2164 

2165 

2166HookSpecificOutput = (

2167 PreToolUseHookSpecificOutput

2168 | PostToolUseHookSpecificOutput

2169 | PostToolUseFailureHookSpecificOutput

2170 | UserPromptSubmitHookSpecificOutput

2171 | NotificationHookSpecificOutput

2172 | SubagentStartHookSpecificOutput

2173 | PermissionRequestHookSpecificOutput

2174)

2175```

2176 

2177#### `AsyncHookJSONOutput`

2178 

2179Output hook asincrono che rinvia l'esecuzione dell'hook.

2180 

2181```python theme={null}

2182class AsyncHookJSONOutput(TypedDict):

2183 async_: Literal[True] # Set to True to defer execution

2184 asyncTimeout: NotRequired[int] # Timeout in milliseconds

2185```

2186 

2187<Note>

2188 Usa `async_` (con underscore) nel codice Python. Viene automaticamente convertito a `async` quando inviato alla CLI.

2189</Note>

2190 

2191### Esempio di utilizzo di Hook

2192 

2193Questo esempio registra due hook: uno che blocca i comandi bash pericolosi come `rm -rf /`, e un altro che registra tutto l'utilizzo dello strumento per il controllo. L'hook di sicurezza viene eseguito solo sui comandi Bash (tramite il `matcher`), mentre l'hook di registrazione viene eseguito su tutti gli strumenti.

2194 

2195```python theme={null}

2196from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, HookContext

2197from typing import Any

2198 

2199 

2200async def validate_bash_command(

2201 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2202) -> dict[str, Any]:

2203 """Validate and potentially block dangerous bash commands."""

2204 if input_data["tool_name"] == "Bash":

2205 command = input_data["tool_input"].get("command", "")

2206 if "rm -rf /" in command:

2207 return {

2208 "hookSpecificOutput": {

2209 "hookEventName": "PreToolUse",

2210 "permissionDecision": "deny",

2211 "permissionDecisionReason": "Dangerous command blocked",

2212 }

2213 }

2214 return {}

2215 

2216 

2217async def log_tool_use(

2218 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2219) -> dict[str, Any]:

2220 """Log all tool usage for auditing."""

2221 print(f"Tool used: {input_data.get('tool_name')}")

2222 return {}

2223 

2224 

2225options = ClaudeAgentOptions(

2226 hooks={

2227 "PreToolUse": [

2228 HookMatcher(

2229 matcher="Bash", hooks=[validate_bash_command], timeout=120

2230 ), # 2 min for validation

2231 HookMatcher(

2232 hooks=[log_tool_use]

2233 ), # Applies to all tools (default 60s timeout)

2234 ],

2235 "PostToolUse": [HookMatcher(hooks=[log_tool_use])],

2236 }

2237)

2238 

2239async for message in query(prompt="Analyze this codebase", options=options):

2240 print(message)

2241```

2242 

2243## Tipi di input/output dello strumento

2244 

2245Documentazione 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.

2246 

2247### Agent

2248 

2249**Nome dello strumento:** `Agent` (precedentemente `Task`, che è ancora accettato come alias)

2250 

2251**Input:**

2252 

2253```python theme={null}

2254{

2255 "description": str, # A short (3-5 word) description of the task

2256 "prompt": str, # The task for the agent to perform

2257 "subagent_type": str, # The type of specialized agent to use

2258}

2259```

2260 

2261**Output:**

2262 

2263```python theme={null}

2264{

2265 "result": str, # Final result from the subagent

2266 "usage": dict | None, # Token usage statistics

2267 "total_cost_usd": float | None, # Estimated total cost in USD

2268 "duration_ms": int | None, # Execution duration in milliseconds

2269}

2270```

2271 

2272### AskUserQuestion

2273 

2274**Nome dello strumento:** `AskUserQuestion`

2275 

2276Chiede all'utente domande di chiarimento durante l'esecuzione. Vedi [Gestisci approvazioni e input dell'utente](/it/agent-sdk/user-input#handle-clarifying-questions) per i dettagli di utilizzo.

2277 

2278**Input:**

2279 

2280```python theme={null}

2281{

2282 "questions": [ # Questions to ask the user (1-4 questions)

2283 {

2284 "question": str, # The complete question to ask the user

2285 "header": str, # Very short label displayed as a chip/tag (max 12 chars)

2286 "options": [ # The available choices (2-4 options)

2287 {

2288 "label": str, # Display text for this option (1-5 words)

2289 "description": str, # Explanation of what this option means

2290 }

2291 ],

2292 "multiSelect": bool, # Set to true to allow multiple selections

2293 }

2294 ],

2295 "answers": dict | None, # User answers populated by the permission system

2296}

2297```

2298 

2299**Output:**

2300 

2301```python theme={null}

2302{

2303 "questions": [ # The questions that were asked

2304 {

2305 "question": str,

2306 "header": str,

2307 "options": [{"label": str, "description": str}],

2308 "multiSelect": bool,

2309 }

2310 ],

2311 "answers": dict[str, str], # Maps question text to answer string

2312 # Multi-select answers are comma-separated

2313}

2314```

2315 

2316### Bash

2317 

2318**Nome dello strumento:** `Bash`

2319 

2320**Input:**

2321 

2322```python theme={null}

2323{

2324 "command": str, # The command to execute

2325 "timeout": int | None, # Optional timeout in milliseconds (max 600000)

2326 "description": str | None, # Clear, concise description (5-10 words)

2327 "run_in_background": bool | None, # Set to true to run in background

2328}

2329```

2330 

2331**Output:**

2332 

2333```python theme={null}

2334{

2335 "output": str, # Combined stdout and stderr output

2336 "exitCode": int, # Exit code of the command

2337 "killed": bool | None, # Whether command was killed due to timeout

2338 "shellId": str | None, # Shell ID for background processes

2339}

2340```

2341 

2342### Monitor

2343 

2344**Nome dello strumento:** `Monitor`

2345 

2346Esegue uno script in background e fornisce ogni riga stdout a Claude come evento in modo che possa reagire senza polling. Monitor segue le stesse regole di autorizzazione di Bash. Vedi il [riferimento dello strumento Monitor](/it/tools-reference#monitor-tool) per il comportamento e la disponibilità del provider.

2347 

2348**Input:**

2349 

2350```python theme={null}

2351{

2352 "command": str, # Shell script; each stdout line is an event, exit ends the watch

2353 "description": str, # Short description shown in notifications

2354 "timeout_ms": int | None, # Kill after this deadline (default 300000, max 3600000)

2355 "persistent": bool | None, # Run for the lifetime of the session; stop with TaskStop

2356}

2357```

2358 

2359**Output:**

2360 

2361```python theme={null}

2362{

2363 "taskId": str, # ID of the background monitor task

2364 "timeoutMs": int, # Timeout deadline in milliseconds (0 when persistent)

2365 "persistent": bool | None, # True when running until TaskStop or session end

2366}

2367```

2368 

2369### Edit

2370 

2371**Nome dello strumento:** `Edit`

2372 

2373**Input:**

2374 

2375```python theme={null}

2376{

2377 "file_path": str, # The absolute path to the file to modify

2378 "old_string": str, # The text to replace

2379 "new_string": str, # The text to replace it with

2380 "replace_all": bool | None, # Replace all occurrences (default False)

2381}

2382```

2383 

2384**Output:**

2385 

2386```python theme={null}

2387{

2388 "message": str, # Confirmation message

2389 "replacements": int, # Number of replacements made

2390 "file_path": str, # File path that was edited

2391}

2392```

2393 

2394### Read

2395 

2396**Nome dello strumento:** `Read`

2397 

2398**Input:**

2399 

2400```python theme={null}

2401{

2402 "file_path": str, # The absolute path to the file to read

2403 "offset": int | None, # The line number to start reading from

2404 "limit": int | None, # The number of lines to read

2405}

2406```

2407 

2408**Output (File di testo):**

2409 

2410```python theme={null}

2411{

2412 "content": str, # File contents with line numbers

2413 "total_lines": int, # Total number of lines in file

2414 "lines_returned": int, # Lines actually returned

2415}

2416```

2417 

2418**Output (Immagini):**

2419 

2420```python theme={null}

2421{

2422 "image": str, # Base64 encoded image data

2423 "mime_type": str, # Image MIME type

2424 "file_size": int, # File size in bytes

2425}

2426```

2427 

2428### Write

2429 

2430**Nome dello strumento:** `Write`

2431 

2432**Input:**

2433 

2434```python theme={null}

2435{

2436 "file_path": str, # The absolute path to the file to write

2437 "content": str, # The content to write to the file

2438}

2439```

2440 

2441**Output:**

2442 

2443```python theme={null}

2444{

2445 "message": str, # Success message

2446 "bytes_written": int, # Number of bytes written

2447 "file_path": str, # File path that was written

2448}

2449```

2450 

2451### Glob

2452 

2453**Nome dello strumento:** `Glob`

2454 

2455**Input:**

2456 

2457```python theme={null}

2458{

2459 "pattern": str, # The glob pattern to match files against

2460 "path": str | None, # The directory to search in (defaults to cwd)

2461}

2462```

2463 

2464**Output:**

2465 

2466```python theme={null}

2467{

2468 "matches": list[str], # Array of matching file paths

2469 "count": int, # Number of matches found

2470 "search_path": str, # Search directory used

2471}

2472```

2473 

2474### Grep

2475 

2476**Nome dello strumento:** `Grep`

2477 

2478**Input:**

2479 

2480```python theme={null}

2481{

2482 "pattern": str, # The regular expression pattern

2483 "path": str | None, # File or directory to search in

2484 "glob": str | None, # Glob pattern to filter files

2485 "type": str | None, # File type to search

2486 "output_mode": str | None, # "content", "files_with_matches", or "count"

2487 "-i": bool | None, # Case insensitive search

2488 "-n": bool | None, # Show line numbers

2489 "-B": int | None, # Lines to show before each match

2490 "-A": int | None, # Lines to show after each match

2491 "-C": int | None, # Lines to show before and after

2492 "head_limit": int | None, # Limit output to first N lines/entries

2493 "multiline": bool | None, # Enable multiline mode

2494}

2495```

2496 

2497**Output (modalità content):**

2498 

2499```python theme={null}

2500{

2501 "matches": [

2502 {

2503 "file": str,

2504 "line_number": int | None,

2505 "line": str,

2506 "before_context": list[str] | None,

2507 "after_context": list[str] | None,

2508 }

2509 ],

2510 "total_matches": int,

2511}

2512```

2513 

2514**Output (modalità files\_with\_matches):**

2515 

2516```python theme={null}

2517{

2518 "files": list[str], # Files containing matches

2519 "count": int, # Number of files with matches

2520}

2521```

2522 

2523### NotebookEdit

2524 

2525**Nome dello strumento:** `NotebookEdit`

2526 

2527**Input:**

2528 

2529```python theme={null}

2530{

2531 "notebook_path": str, # Absolute path to the Jupyter notebook

2532 "cell_id": str | None, # The ID of the cell to edit

2533 "new_source": str, # The new source for the cell

2534 "cell_type": "code" | "markdown" | None, # The type of the cell

2535 "edit_mode": "replace" | "insert" | "delete" | None, # Edit operation type

2536}

2537```

2538 

2539**Output:**

2540 

2541```python theme={null}

2542{

2543 "message": str, # Success message

2544 "edit_type": "replaced" | "inserted" | "deleted", # Type of edit performed

2545 "cell_id": str | None, # Cell ID that was affected

2546 "total_cells": int, # Total cells in notebook after edit

2547}

2548```

2549 

2550### WebFetch

2551 

2552**Nome dello strumento:** `WebFetch`

2553 

2554**Input:**

2555 

2556```python theme={null}

2557{

2558 "url": str, # The URL to fetch content from

2559 "prompt": str, # The prompt to run on the fetched content

2560}

2561```

2562 

2563**Output:**

2564 

2565```python theme={null}

2566{

2567 "response": str, # AI model's response to the prompt

2568 "url": str, # URL that was fetched

2569 "final_url": str | None, # Final URL after redirects

2570 "status_code": int | None, # HTTP status code

2571}

2572```

2573 

2574### WebSearch

2575 

2576**Nome dello strumento:** `WebSearch`

2577 

2578**Input:**

2579 

2580```python theme={null}

2581{

2582 "query": str, # The search query to use

2583 "allowed_domains": list[str] | None, # Only include results from these domains

2584 "blocked_domains": list[str] | None, # Never include results from these domains

2585}

2586```

2587 

2588**Output:**

2589 

2590```python theme={null}

2591{

2592 "results": [{"title": str, "url": str, "snippet": str, "metadata": dict | None}],

2593 "total_results": int,

2594 "query": str,

2595}

2596```

2597 

2598### TodoWrite

2599 

2600**Nome dello strumento:** `TodoWrite`

2601 

2602**Input:**

2603 

2604```python theme={null}

2605{

2606 "todos": [

2607 {

2608 "content": str, # The task description

2609 "status": "pending" | "in_progress" | "completed", # Task status

2610 "activeForm": str, # Active form of the description

2611 }

2612 ]

2613}

2614```

2615 

2616**Output:**

2617 

2618```python theme={null}

2619{

2620 "message": str, # Success message

2621 "stats": {"total": int, "pending": int, "in_progress": int, "completed": int},

2622}

2623```

2624 

2625### BashOutput

2626 

2627**Nome dello strumento:** `BashOutput`

2628 

2629**Input:**

2630 

2631```python theme={null}

2632{

2633 "bash_id": str, # The ID of the background shell

2634 "filter": str | None, # Optional regex to filter output lines

2635}

2636```

2637 

2638**Output:**

2639 

2640```python theme={null}

2641{

2642 "output": str, # New output since last check

2643 "status": "running" | "completed" | "failed", # Current shell status

2644 "exitCode": int | None, # Exit code when completed

2645}

2646```

2647 

2648### KillBash

2649 

2650**Nome dello strumento:** `KillBash`

2651 

2652**Input:**

2653 

2654```python theme={null}

2655{

2656 "shell_id": str # The ID of the background shell to kill

2657}

2658```

2659 

2660**Output:**

2661 

2662```python theme={null}

2663{

2664 "message": str, # Success message

2665 "shell_id": str, # ID of the killed shell

2666}

2667```

2668 

2669### ExitPlanMode

2670 

2671**Nome dello strumento:** `ExitPlanMode`

2672 

2673**Input:**

2674 

2675```python theme={null}

2676{

2677 "plan": str # The plan to run by the user for approval

2678}

2679```

2680 

2681**Output:**

2682 

2683```python theme={null}

2684{

2685 "message": str, # Confirmation message

2686 "approved": bool | None, # Whether user approved the plan

2687}

2688```

2689 

2690### ListMcpResources

2691 

2692**Nome dello strumento:** `ListMcpResources`

2693 

2694**Input:**

2695 

2696```python theme={null}

2697{

2698 "server": str | None # Optional server name to filter resources by

2699}

2700```

2701 

2702**Output:**

2703 

2704```python theme={null}

2705{

2706 "resources": [

2707 {

2708 "uri": str,

2709 "name": str,

2710 "description": str | None,

2711 "mimeType": str | None,

2712 "server": str,

2713 }

2714 ],

2715 "total": int,

2716}

2717```

2718 

2719### ReadMcpResource

2720 

2721**Nome dello strumento:** `ReadMcpResource`

2722 

2723**Input:**

2724 

2725```python theme={null}

2726{

2727 "server": str, # The MCP server name

2728 "uri": str, # The resource URI to read

2729}

2730```

2731 

2732**Output:**

2733 

2734```python theme={null}

2735{

2736 "contents": [

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

2738 ],

2739 "server": str,

2740}

2741```

2742 

2743## Funzionalità avanzate con ClaudeSDKClient

2744 

2745### Costruire un'interfaccia di conversazione continua

2746 

2747```python theme={null}

2748from claude_agent_sdk import (

2749 ClaudeSDKClient,

2750 ClaudeAgentOptions,

2751 AssistantMessage,

2752 TextBlock,

2753)

2754import asyncio

2755 

2756 

2757class ConversationSession:

2758 """Maintains a single conversation session with Claude."""

2759 

2760 def __init__(self, options: ClaudeAgentOptions | None = None):

2761 self.client = ClaudeSDKClient(options)

2762 self.turn_count = 0

2763 

2764 async def start(self):

2765 await self.client.connect()

2766 print("Starting conversation session. Claude will remember context.")

2767 print(

2768 "Commands: 'exit' to quit, 'interrupt' to stop current task, 'new' for new session"

2769 )

2770 

2771 while True:

2772 user_input = input(f"\n[Turn {self.turn_count + 1}] You: ")

2773 

2774 if user_input.lower() == "exit":

2775 break

2776 elif user_input.lower() == "interrupt":

2777 await self.client.interrupt()

2778 print("Task interrupted!")

2779 continue

2780 elif user_input.lower() == "new":

2781 # Disconnect and reconnect for a fresh session

2782 await self.client.disconnect()

2783 await self.client.connect()

2784 self.turn_count = 0

2785 print("Started new conversation session (previous context cleared)")

2786 continue

2787 

2788 # Send message - the session retains all previous messages

2789 await self.client.query(user_input)

2790 self.turn_count += 1

2791 

2792 # Process response

2793 print(f"[Turn {self.turn_count}] Claude: ", end="")

2794 async for message in self.client.receive_response():

2795 if isinstance(message, AssistantMessage):

2796 for block in message.content:

2797 if isinstance(block, TextBlock):

2798 print(block.text, end="")

2799 print() # New line after response

2800 

2801 await self.client.disconnect()

2802 print(f"Conversation ended after {self.turn_count} turns.")

2803 

2804 

2805async def main():

2806 options = ClaudeAgentOptions(

2807 allowed_tools=["Read", "Write", "Bash"], permission_mode="acceptEdits"

2808 )

2809 session = ConversationSession(options)

2810 await session.start()

2811 

2812 

2813# Example conversation:

2814# Turn 1 - You: "Create a file called hello.py"

2815# Turn 1 - Claude: "I'll create a hello.py file for you..."

2816# Turn 2 - You: "What's in that file?"

2817# Turn 2 - Claude: "The hello.py file I just created contains..." (remembers!)

2818# Turn 3 - You: "Add a main function to it"

2819# Turn 3 - Claude: "I'll add a main function to hello.py..." (knows which file!)

2820 

2821asyncio.run(main())

2822```

2823 

2824### Utilizzo di Hook per la modifica del comportamento

2825 

2826```python theme={null}

2827from claude_agent_sdk import (

2828 ClaudeSDKClient,

2829 ClaudeAgentOptions,

2830 HookMatcher,

2831 HookContext,

2832)

2833import asyncio

2834from typing import Any

2835 

2836 

2837async def pre_tool_logger(

2838 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2839) -> dict[str, Any]:

2840 """Log all tool usage before execution."""

2841 tool_name = input_data.get("tool_name", "unknown")

2842 print(f"[PRE-TOOL] About to use: {tool_name}")

2843 

2844 # You can modify or block the tool execution here

2845 if tool_name == "Bash" and "rm -rf" in str(input_data.get("tool_input", {})):

2846 return {

2847 "hookSpecificOutput": {

2848 "hookEventName": "PreToolUse",

2849 "permissionDecision": "deny",

2850 "permissionDecisionReason": "Dangerous command blocked",

2851 }

2852 }

2853 return {}

2854 

2855 

2856async def post_tool_logger(

2857 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2858) -> dict[str, Any]:

2859 """Log results after tool execution."""

2860 tool_name = input_data.get("tool_name", "unknown")

2861 print(f"[POST-TOOL] Completed: {tool_name}")

2862 return {}

2863 

2864 

2865async def user_prompt_modifier(

2866 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2867) -> dict[str, Any]:

2868 """Add context to user prompts."""

2869 original_prompt = input_data.get("prompt", "")

2870 

2871 # Add a timestamp as additional context for Claude to see

2872 from datetime import datetime

2873 

2874 timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

2875 

2876 return {

2877 "hookSpecificOutput": {

2878 "hookEventName": "UserPromptSubmit",

2879 "additionalContext": f"[Submitted at {timestamp}] Original prompt: {original_prompt}",

2880 }

2881 }

2882 

2883 

2884async def main():

2885 options = ClaudeAgentOptions(

2886 hooks={

2887 "PreToolUse": [

2888 HookMatcher(hooks=[pre_tool_logger]),

2889 HookMatcher(matcher="Bash", hooks=[pre_tool_logger]),

2890 ],

2891 "PostToolUse": [HookMatcher(hooks=[post_tool_logger])],

2892 "UserPromptSubmit": [HookMatcher(hooks=[user_prompt_modifier])],

2893 },

2894 allowed_tools=["Read", "Write", "Bash"],

2895 )

2896 

2897 async with ClaudeSDKClient(options=options) as client:

2898 await client.query("List files in current directory")

2899 

2900 async for message in client.receive_response():

2901 # Hooks will automatically log tool usage

2902 pass

2903 

2904 

2905asyncio.run(main())

2906```

2907 

2908### Monitoraggio del progresso in tempo reale

2909 

2910```python theme={null}

2911from claude_agent_sdk import (

2912 ClaudeSDKClient,

2913 ClaudeAgentOptions,

2914 AssistantMessage,

2915 ToolUseBlock,

2916 ToolResultBlock,

2917 TextBlock,

2918)

2919import asyncio

2920 

2921 

2922async def monitor_progress():

2923 options = ClaudeAgentOptions(

2924 allowed_tools=["Write", "Bash"], permission_mode="acceptEdits"

2925 )

2926 

2927 async with ClaudeSDKClient(options=options) as client:

2928 await client.query("Create 5 Python files with different sorting algorithms")

2929 

2930 # Monitor progress in real-time

2931 async for message in client.receive_response():

2932 if isinstance(message, AssistantMessage):

2933 for block in message.content:

2934 if isinstance(block, ToolUseBlock):

2935 if block.name == "Write":

2936 file_path = block.input.get("file_path", "")

2937 print(f"Creating: {file_path}")

2938 elif isinstance(block, ToolResultBlock):

2939 print("Completed tool execution")

2940 elif isinstance(block, TextBlock):

2941 print(f"Claude says: {block.text[:100]}...")

2942 

2943 print("Task completed!")

2944 

2945 

2946asyncio.run(monitor_progress())

2947```

2948 

2949## Utilizzo di esempio

2950 

2951### Operazioni di file di base (usando query)

2952 

2953```python theme={null}

2954from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock

2955import asyncio

2956 

2957 

2958async def create_project():

2959 options = ClaudeAgentOptions(

2960 allowed_tools=["Read", "Write", "Bash"],

2961 permission_mode="acceptEdits",

2962 cwd="/home/user/project",

2963 )

2964 

2965 async for message in query(

2966 prompt="Create a Python project structure with setup.py", options=options

2967 ):

2968 if isinstance(message, AssistantMessage):

2969 for block in message.content:

2970 if isinstance(block, ToolUseBlock):

2971 print(f"Using tool: {block.name}")

2972 

2973 

2974asyncio.run(create_project())

2975```

2976 

2977### Gestione degli errori

2978 

2979```python theme={null}

2980from claude_agent_sdk import query, CLINotFoundError, ProcessError, CLIJSONDecodeError

2981 

2982try:

2983 async for message in query(prompt="Hello"):

2984 print(message)

2985except CLINotFoundError:

2986 print(

2987 "Claude Code CLI not found. Try reinstalling: pip install --force-reinstall claude-agent-sdk"

2988 )

2989except ProcessError as e:

2990 print(f"Process failed with exit code: {e.exit_code}")

2991except CLIJSONDecodeError as e:

2992 print(f"Failed to parse response: {e}")

2993```

2994 

2995### Modalità streaming con client

2996 

2997```python theme={null}

2998from claude_agent_sdk import ClaudeSDKClient

2999import asyncio

3000 

3001 

3002async def interactive_session():

3003 async with ClaudeSDKClient() as client:

3004 # Send initial message

3005 await client.query("What's the weather like?")

3006 

3007 # Process responses

3008 async for msg in client.receive_response():

3009 print(msg)

3010 

3011 # Send follow-up

3012 await client.query("Tell me more about that")

3013 

3014 # Process follow-up response

3015 async for msg in client.receive_response():

3016 print(msg)

3017 

3018 

3019asyncio.run(interactive_session())

3020```

3021 

3022### Utilizzo di strumenti personalizzati con ClaudeSDKClient

3023 

3024```python theme={null}

3025from claude_agent_sdk import (

3026 ClaudeSDKClient,

3027 ClaudeAgentOptions,

3028 tool,

3029 create_sdk_mcp_server,

3030 AssistantMessage,

3031 TextBlock,

3032)

3033import asyncio

3034from typing import Any

3035 

3036 

3037# Define custom tools with @tool decorator

3038@tool("calculate", "Perform mathematical calculations", {"expression": str})

3039async def calculate(args: dict[str, Any]) -> dict[str, Any]:

3040 try:

3041 result = eval(args["expression"], {"__builtins__": {}})

3042 return {"content": [{"type": "text", "text": f"Result: {result}"}]}

3043 except Exception as e:

3044 return {

3045 "content": [{"type": "text", "text": f"Error: {str(e)}"}],

3046 "is_error": True,

3047 }

3048 

3049 

3050@tool("get_time", "Get current time", {})

3051async def get_time(args: dict[str, Any]) -> dict[str, Any]:

3052 from datetime import datetime

3053 

3054 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

3055 return {"content": [{"type": "text", "text": f"Current time: {current_time}"}]}

3056 

3057 

3058async def main():

3059 # Create SDK MCP server with custom tools

3060 my_server = create_sdk_mcp_server(

3061 name="utilities", version="1.0.0", tools=[calculate, get_time]

3062 )

3063 

3064 # Configure options with the server

3065 options = ClaudeAgentOptions(

3066 mcp_servers={"utils": my_server},

3067 allowed_tools=["mcp__utils__calculate", "mcp__utils__get_time"],

3068 )

3069 

3070 # Use ClaudeSDKClient for interactive tool usage

3071 async with ClaudeSDKClient(options=options) as client:

3072 await client.query("What's 123 * 456?")

3073 

3074 # Process calculation response

3075 async for message in client.receive_response():

3076 if isinstance(message, AssistantMessage):

3077 for block in message.content:

3078 if isinstance(block, TextBlock):

3079 print(f"Calculation: {block.text}")

3080 

3081 # Follow up with time query

3082 await client.query("What time is it now?")

3083 

3084 async for message in client.receive_response():

3085 if isinstance(message, AssistantMessage):

3086 for block in message.content:

3087 if isinstance(block, TextBlock):

3088 print(f"Time: {block.text}")

3089 

3090 

3091asyncio.run(main())

3092```

3093 

3094## Configurazione della Sandbox

3095 

3096### `SandboxSettings`

3097 

3098Configurazione per il comportamento della sandbox. Usala per abilitare il sandboxing dei comandi e configurare le restrizioni di rete a livello di programmazione.

3099 

3100```python theme={null}

3101class SandboxSettings(TypedDict, total=False):

3102 enabled: bool

3103 autoAllowBashIfSandboxed: bool

3104 excludedCommands: list[str]

3105 allowUnsandboxedCommands: bool

3106 network: SandboxNetworkConfig

3107 ignoreViolations: SandboxIgnoreViolations

3108 enableWeakerNestedSandbox: bool

3109```

3110 

3111| Proprietà | Tipo | Predefinito | Descrizione |

3112| :-------------------------- | :------------------------------------------------------ | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

3113| `enabled` | `bool` | `False` | Abilita la modalità sandbox per l'esecuzione dei comandi |

3114| `autoAllowBashIfSandboxed` | `bool` | `True` | Approva automaticamente i comandi bash quando la sandbox è abilitata |

3115| `excludedCommands` | `list[str]` | `[]` | Comandi che sempre bypassano le restrizioni della sandbox (ad es. `["docker"]`). Questi vengono eseguiti senza sandbox automaticamente senza coinvolgimento del modello |

3116| `allowUnsandboxedCommands` | `bool` | `True` | Consenti al modello di richiedere l'esecuzione di comandi al di fuori della sandbox. Quando `True`, il modello può impostare `dangerouslyDisableSandbox` nell'input dello strumento, che ricade nel [sistema di autorizzazioni](#permissions-fallback-for-unsandboxed-commands) |

3117| `network` | [`SandboxNetworkConfig`](#sandbox-network-config) | `None` | Configurazione della sandbox specifica della rete |

3118| `ignoreViolations` | [`SandboxIgnoreViolations`](#sandbox-ignore-violations) | `None` | Configura quali violazioni della sandbox ignorare |

3119| `enableWeakerNestedSandbox` | `bool` | `False` | Abilita una sandbox nidificata più debole per la compatibilità |

3120 

3121#### Utilizzo di esempio

3122 

3123```python theme={null}

3124from claude_agent_sdk import query, ClaudeAgentOptions, SandboxSettings

3125 

3126sandbox_settings: SandboxSettings = {

3127 "enabled": True,

3128 "autoAllowBashIfSandboxed": True,

3129 "network": {"allowLocalBinding": True},

3130}

3131 

3132async for message in query(

3133 prompt="Build and test my project",

3134 options=ClaudeAgentOptions(sandbox=sandbox_settings),

3135):

3136 print(message)

3137```

3138 

3139<Warning>

3140 **Sicurezza del socket Unix**: L'opzione `allowUnixSockets` può concedere l'accesso a potenti servizi di sistema. Ad esempio, consentire `/var/run/docker.sock` concede effettivamente l'accesso completo al sistema host tramite l'API Docker, bypassando l'isolamento della sandbox. Consenti solo i socket Unix strettamente necessari e comprendi le implicazioni di sicurezza di ognuno.

3141</Warning>

3142 

3143### `SandboxNetworkConfig`

3144 

3145Configurazione specifica della rete per la modalità sandbox.

3146 

3147```python theme={null}

3148class SandboxNetworkConfig(TypedDict, total=False):

3149 allowedDomains: list[str]

3150 deniedDomains: list[str]

3151 allowManagedDomainsOnly: bool

3152 allowUnixSockets: list[str]

3153 allowAllUnixSockets: bool

3154 allowLocalBinding: bool

3155 allowMachLookup: list[str]

3156 httpProxyPort: int

3157 socksProxyPort: int

3158```

3159 

3160| Proprietà | Tipo | Predefinito | Descrizione |

3161| :------------------------ | :---------- | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3162| `allowedDomains` | `list[str]` | `[]` | Nomi di dominio a cui i processi in sandbox possono accedere |

3163| `deniedDomains` | `list[str]` | `[]` | Nomi di dominio a cui i processi in sandbox non possono accedere. Ha la precedenza su `allowedDomains` |

3164| `allowManagedDomainsOnly` | `bool` | `False` | Solo impostazioni gestite: quando impostato nelle impostazioni gestite, ignora `allowedDomains` da fonti di impostazioni non gestite. Non ha effetto quando impostato tramite opzioni SDK |

3165| `allowUnixSockets` | `list[str]` | `[]` | Percorsi dei socket Unix a cui i processi possono accedere (ad es. socket Docker) |

3166| `allowAllUnixSockets` | `bool` | `False` | Consenti l'accesso a tutti i socket Unix |

3167| `allowLocalBinding` | `bool` | `False` | Consenti ai processi di associarsi alle porte locali (ad es. per server di sviluppo) |

3168| `allowMachLookup` | `list[str]` | `[]` | Solo macOS: nomi dei servizi XPC/Mach da consentire. Supporta un carattere jolly finale |

3169| `httpProxyPort` | `int` | `None` | Porta proxy HTTP per le richieste di rete |

3170| `socksProxyPort` | `int` | `None` | Porta proxy SOCKS per le richieste di rete |

3171 

3172<Note>

3173 Il proxy sandbox integrato applica l'allowlist di rete in base al nome host richiesto e non termina o ispeziona il traffico TLS, quindi tecniche come il [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) possono potenzialmente bypassarlo. Vedi [Limitazioni di sicurezza del sandboxing](/it/sandboxing#security-limitations) per i dettagli e [Distribuzione sicura](/it/agent-sdk/secure-deployment#traffic-forwarding) per configurare un proxy che termina TLS.

3174</Note>

3175 

3176### `SandboxIgnoreViolations`

3177 

3178Configurazione per ignorare violazioni specifiche della sandbox.

3179 

3180```python theme={null}

3181class SandboxIgnoreViolations(TypedDict, total=False):

3182 file: list[str]

3183 network: list[str]

3184```

3185 

3186| Proprietà | Tipo | Predefinito | Descrizione |

3187| :-------- | :---------- | :---------- | :------------------------------------------------------ |

3188| `file` | `list[str]` | `[]` | Modelli di percorso file per cui ignorare le violazioni |

3189| `network` | `list[str]` | `[]` | Modelli di rete per cui ignorare le violazioni |

3190 

3191### Fallback delle autorizzazioni per i comandi senza sandbox

3192 

3193Quando `allowUnsandboxedCommands` è abilitato, il modello può richiedere di eseguire comandi al di fuori della sandbox impostando `dangerouslyDisableSandbox: True` nell'input dello strumento. Queste richieste ricadono nel sistema di autorizzazioni esistente, il che significa che il tuo handler `can_use_tool` verrà invocato, permettendoti di implementare una logica di autorizzazione personalizzata.

3194 

3195<Note>

3196 **`excludedCommands` vs `allowUnsandboxedCommands`:**

3197 

3198 * `excludedCommands`: Un elenco statico di comandi che sempre bypassano la sandbox automaticamente (ad es. `["docker"]`). Il modello non ha controllo su questo.

3199 * `allowUnsandboxedCommands`: Consenti al modello di decidere in fase di esecuzione se richiedere l'esecuzione senza sandbox impostando `dangerouslyDisableSandbox: True` nell'input dello strumento.

3200</Note>

3201 

3202```python theme={null}

3203from claude_agent_sdk import (

3204 query,

3205 ClaudeAgentOptions,

3206 HookMatcher,

3207 PermissionResultAllow,

3208 PermissionResultDeny,

3209 ToolPermissionContext,

3210)

3211 

3212 

3213async def can_use_tool(

3214 tool: str, input: dict, context: ToolPermissionContext

3215) -> PermissionResultAllow | PermissionResultDeny:

3216 # Check if the model is requesting to bypass the sandbox

3217 if tool == "Bash" and input.get("dangerouslyDisableSandbox"):

3218 # The model is requesting to run this command outside the sandbox

3219 print(f"Unsandboxed command requested: {input.get('command')}")

3220 

3221 if is_command_authorized(input.get("command")):

3222 return PermissionResultAllow()

3223 return PermissionResultDeny(

3224 message="Command not authorized for unsandboxed execution"

3225 )

3226 return PermissionResultAllow()

3227 

3228 

3229# Required: dummy hook keeps the stream open for can_use_tool

3230async def dummy_hook(input_data, tool_use_id, context):

3231 return {"continue_": True}

3232 

3233 

3234async def prompt_stream():

3235 yield {

3236 "type": "user",

3237 "message": {"role": "user", "content": "Deploy my application"},

3238 }

3239 

3240 

3241async def main():

3242 async for message in query(

3243 prompt=prompt_stream(),

3244 options=ClaudeAgentOptions(

3245 sandbox={

3246 "enabled": True,

3247 "allowUnsandboxedCommands": True, # Model can request unsandboxed execution

3248 },

3249 permission_mode="default",

3250 can_use_tool=can_use_tool,

3251 hooks={"PreToolUse": [HookMatcher(matcher=None, hooks=[dummy_hook])]},

3252 ),

3253 ):

3254 print(message)

3255```

3256 

3257Questo modello ti consente di:

3258 

3259* **Controllare le richieste del modello**: Registra quando il modello richiede l'esecuzione senza sandbox

3260* **Implementare allowlist**: Consenti solo comandi specifici di essere eseguiti senza sandbox

3261* **Aggiungere flussi di lavoro di approvazione**: Richiedi un'autorizzazione esplicita per operazioni privilegiate

3262 

3263<Warning>

3264 I comandi in esecuzione con `dangerouslyDisableSandbox: True` hanno accesso completo al sistema. Assicurati che il tuo handler `can_use_tool` validi queste richieste attentamente.

3265 

3266 Se `permission_mode` è impostato su `bypassPermissions` e `allow_unsandboxed_commands` è abilitato, il modello può autonomamente eseguire comandi al di fuori della sandbox senza alcun prompt di approvazione. Questa combinazione consente effettivamente al modello di sfuggire all'isolamento della sandbox silenziosamente.

3267</Warning>

3268 

3269## Vedi anche

3270 

3271* [Panoramica dell'SDK](/it/agent-sdk/overview) - Concetti generali dell'SDK

3272* [Riferimento TypeScript SDK](/it/agent-sdk/typescript) - Documentazione TypeScript SDK

3273* [Riferimento CLI](/it/cli-reference) - Interfaccia della riga di comando

3274* [Flussi di lavoro comuni](/it/common-workflows) - Guide passo dopo passo

agent-sdk/quickstart.md +333 −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# Guida rapida

6 

7> Inizia con l'Agent SDK per Python o TypeScript per creare agenti AI che funzionano autonomamente

8 

9Utilizza l'Agent SDK per creare un agente AI che legge il tuo codice, trova i bug e li corregge, il tutto senza intervento manuale.

10 

11**Quello che farai:**

12 

131. Configurare un progetto con l'Agent SDK

142. Creare un file con del codice buggy

153. Eseguire un agente che trova e corregge automaticamente i bug

16 

17## Prerequisiti

18 

19* **Node.js 18+** o **Python 3.10+**

20* Un **account Anthropic** ([iscriviti qui](https://platform.claude.com/))

21 

22## Configurazione

23 

24<Steps>

25 <Step title="Crea una cartella di progetto">

26 Crea una nuova directory per questa guida rapida:

27 

28 ```bash theme={null}

29 mkdir my-agent && cd my-agent

30 ```

31 

32 Per i tuoi progetti, puoi eseguire l'SDK da qualsiasi cartella; avrà accesso ai file in quella directory e nelle sue sottodirectory per impostazione predefinita.

33 </Step>

34 

35 <Step title="Installa l'SDK">

36 Installa il pacchetto Agent SDK per il tuo linguaggio:

37 

38 <Tabs>

39 <Tab title="TypeScript">

40 ```bash theme={null}

41 npm install @anthropic-ai/claude-agent-sdk

42 ```

43 </Tab>

44 

45 <Tab title="Python (uv)">

46 [uv Python package manager](https://docs.astral.sh/uv/) è un gestore di pacchetti Python veloce che gestisce automaticamente gli ambienti virtuali:

47 

48 ```bash theme={null}

49 uv init && uv add claude-agent-sdk

50 ```

51 </Tab>

52 

53 <Tab title="Python (pip)">

54 Crea prima un ambiente virtuale, quindi installa:

55 

56 ```bash theme={null}

57 python3 -m venv .venv && source .venv/bin/activate

58 pip3 install claude-agent-sdk

59 ```

60 </Tab>

61 </Tabs>

62 

63 <Note>

64 L'SDK TypeScript raggruppa un binario Claude Code nativo per la tua piattaforma come dipendenza opzionale, quindi non è necessario installare Claude Code separatamente.

65 </Note>

66 </Step>

67 

68 <Step title="Imposta la tua chiave API">

69 Ottieni una chiave API dalla [Claude Console](https://platform.claude.com/), quindi crea un file `.env` nella directory del tuo progetto:

70 

71 ```bash theme={null}

72 ANTHROPIC_API_KEY=your-api-key

73 ```

74 

75 L'SDK supporta anche l'autenticazione tramite provider API di terze parti:

76 

77 * **Amazon Bedrock**: imposta la variabile di ambiente `CLAUDE_CODE_USE_BEDROCK=1` e configura le credenziali AWS

78 * **Google Vertex AI**: imposta la variabile di ambiente `CLAUDE_CODE_USE_VERTEX=1` e configura le credenziali Google Cloud

79 * **Microsoft Azure**: imposta la variabile di ambiente `CLAUDE_CODE_USE_FOUNDRY=1` e configura le credenziali Azure

80 

81 Consulta le guide di configurazione per [Bedrock](/it/amazon-bedrock), [Vertex AI](/it/google-vertex-ai), o [Azure AI Foundry](/it/microsoft-foundry) per i dettagli.

82 

83 <Note>

84 Se non precedentemente approvato, Anthropic non consente agli sviluppatori di terze parti di offrire il login claude.ai o limiti di velocità per i loro prodotti, inclusi gli agenti costruiti su Agent SDK di Claude. Utilizza invece i metodi di autenticazione con chiave API descritti in questo documento.

85 </Note>

86 </Step>

87</Steps>

88 

89## Crea un file buggy

90 

91Questa guida rapida ti guida attraverso la creazione di un agente che può trovare e correggere i bug nel codice. Per prima cosa, hai bisogno di un file con alcuni bug intenzionali che l'agente possa correggere. Crea `utils.py` nella directory `my-agent` e incolla il seguente codice:

92 

93```python theme={null}

94def calculate_average(numbers):

95 total = 0

96 for num in numbers:

97 total += num

98 return total / len(numbers)

99 

100 

101def get_user_name(user):

102 return user["name"].upper()

103```

104 

105Questo codice ha due bug:

106 

1071. `calculate_average([])` si arresta in modo anomalo con una divisione per zero

1082. `get_user_name(None)` si arresta in modo anomalo con un TypeError

109 

110## Costruisci un agente che trova e corregge i bug

111 

112Crea `agent.py` se stai utilizzando l'SDK Python, o `agent.ts` per TypeScript:

113 

114<CodeGroup>

115 ```python Python theme={null}

116 import asyncio

117 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage

118 

119 

120 async def main():

121 # Agentic loop: streams messages as Claude works

122 async for message in query(

123 prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",

124 options=ClaudeAgentOptions(

125 allowed_tools=["Read", "Edit", "Glob"], # Tools Claude can use

126 permission_mode="acceptEdits", # Auto-approve file edits

127 ),

128 ):

129 # Print human-readable output

130 if isinstance(message, AssistantMessage):

131 for block in message.content:

132 if hasattr(block, "text"):

133 print(block.text) # Claude's reasoning

134 elif hasattr(block, "name"):

135 print(f"Tool: {block.name}") # Tool being called

136 elif isinstance(message, ResultMessage):

137 print(f"Done: {message.subtype}") # Final result

138 

139 

140 asyncio.run(main())

141 ```

142 

143 ```typescript TypeScript theme={null}

144 import { query } from "@anthropic-ai/claude-agent-sdk";

145 

146 // Agentic loop: streams messages as Claude works

147 for await (const message of query({

148 prompt: "Review utils.py for bugs that would cause crashes. Fix any issues you find.",

149 options: {

150 allowedTools: ["Read", "Edit", "Glob"], // Tools Claude can use

151 permissionMode: "acceptEdits" // Auto-approve file edits

152 }

153 })) {

154 // Print human-readable output

155 if (message.type === "assistant" && message.message?.content) {

156 for (const block of message.message.content) {

157 if ("text" in block) {

158 console.log(block.text); // Claude's reasoning

159 } else if ("name" in block) {

160 console.log(`Tool: ${block.name}`); // Tool being called

161 }

162 }

163 } else if (message.type === "result") {

164 console.log(`Done: ${message.subtype}`); // Final result

165 }

166 }

167 ```

168</CodeGroup>

169 

170Questo codice ha tre parti principali:

171 

1721. **`query`**: il punto di ingresso principale che crea il loop agentico. Restituisce un iteratore asincrono, quindi usi `async for` per trasmettere i messaggi mentre Claude lavora. Vedi l'API completa nel riferimento SDK [Python](/it/agent-sdk/python#query) o [TypeScript](/it/agent-sdk/typescript#query).

173 

1742. **`prompt`**: quello che vuoi che Claude faccia. Claude capisce quali strumenti usare in base al compito.

175 

1763. **`options`**: configurazione per l'agente. Questo esempio utilizza `allowedTools` per pre-approvare `Read`, `Edit` e `Glob`, e `permissionMode: "acceptEdits"` per auto-approvare i cambiamenti ai file. Altre opzioni includono `systemPrompt`, `mcpServers` e altro. Vedi tutte le opzioni per [Python](/it/agent-sdk/python#claude-agent-options) o [TypeScript](/it/agent-sdk/typescript#options).

177 

178Il loop `async for` continua a funzionare mentre Claude pensa, chiama strumenti, osserva i risultati e decide cosa fare dopo. Ogni iterazione produce un messaggio: il ragionamento di Claude, una chiamata a uno strumento, un risultato dello strumento, o il risultato finale. L'SDK gestisce l'orchestrazione (esecuzione dello strumento, gestione del contesto, tentativi) quindi consumi semplicemente il flusso. Il loop termina quando Claude completa il compito o incontra un errore.

179 

180La gestione dei messaggi all'interno del loop filtra l'output leggibile dall'uomo. Senza filtraggio, vedresti oggetti messaggio grezzi inclusa l'inizializzazione del sistema e lo stato interno, il che è utile per il debug ma rumoroso altrimenti.

181 

182<Note>

183 Questo esempio utilizza lo streaming per mostrare i progressi in tempo reale. Se non hai bisogno di output dal vivo (ad esempio per lavori in background o pipeline CI), puoi raccogliere tutti i messaggi contemporaneamente. Vedi [Streaming vs. modalità single-turn](/it/agent-sdk/streaming-vs-single-mode) per i dettagli.

184</Note>

185 

186### Esegui il tuo agente

187 

188Il tuo agente è pronto. Eseguilo con il seguente comando:

189 

190<Tabs>

191 <Tab title="Python">

192 ```bash theme={null}

193 python3 agent.py

194 ```

195 </Tab>

196 

197 <Tab title="TypeScript">

198 ```bash theme={null}

199 npx tsx agent.ts

200 ```

201 </Tab>

202</Tabs>

203 

204Dopo l'esecuzione, controlla `utils.py`. Vedrai codice difensivo che gestisce elenchi vuoti e utenti nulli. Il tuo agente autonomamente:

205 

2061. **Ha letto** `utils.py` per comprendere il codice

2072. **Ha analizzato** la logica e identificato i casi limite che causerebbero arresti anomali

2083. **Ha modificato** il file per aggiungere la gestione corretta degli errori

209 

210Questo è ciò che rende diverso l'Agent SDK: Claude esegue gli strumenti direttamente invece di chiederti di implementarli.

211 

212<Note>

213 Se vedi "API key not found", assicurati di aver impostato la variabile di ambiente `ANTHROPIC_API_KEY` nel tuo file `.env` o nell'ambiente della shell. Vedi la [guida completa alla risoluzione dei problemi](/it/troubleshooting) per ulteriore aiuto.

214</Note>

215 

216### Prova altri prompt

217 

218Ora che il tuo agente è configurato, prova alcuni prompt diversi:

219 

220* `"Add docstrings to all functions in utils.py"`

221* `"Add type hints to all functions in utils.py"`

222* `"Create a README.md documenting the functions in utils.py"`

223 

224### Personalizza il tuo agente

225 

226Puoi modificare il comportamento del tuo agente cambiando le opzioni. Ecco alcuni esempi:

227 

228**Aggiungi capacità di ricerca web:**

229 

230<CodeGroup>

231 ```python Python theme={null}

232 options = ClaudeAgentOptions(

233 allowed_tools=["Read", "Edit", "Glob", "WebSearch"], permission_mode="acceptEdits"

234 )

235 ```

236 

237 ```typescript TypeScript hidelines={1,-1} theme={null}

238 const _ = {

239 options: {

240 allowedTools: ["Read", "Edit", "Glob", "WebSearch"],

241 permissionMode: "acceptEdits"

242 }

243 };

244 ```

245</CodeGroup>

246 

247**Dai a Claude un prompt di sistema personalizzato:**

248 

249<CodeGroup>

250 ```python Python theme={null}

251 options = ClaudeAgentOptions(

252 allowed_tools=["Read", "Edit", "Glob"],

253 permission_mode="acceptEdits",

254 system_prompt="You are a senior Python developer. Always follow PEP 8 style guidelines.",

255 )

256 ```

257 

258 ```typescript TypeScript hidelines={1,-1} theme={null}

259 const _ = {

260 options: {

261 allowedTools: ["Read", "Edit", "Glob"],

262 permissionMode: "acceptEdits",

263 systemPrompt: "You are a senior Python developer. Always follow PEP 8 style guidelines."

264 }

265 };

266 ```

267</CodeGroup>

268 

269**Esegui comandi nel terminale:**

270 

271<CodeGroup>

272 ```python Python theme={null}

273 options = ClaudeAgentOptions(

274 allowed_tools=["Read", "Edit", "Glob", "Bash"], permission_mode="acceptEdits"

275 )

276 ```

277 

278 ```typescript TypeScript hidelines={1,-1} theme={null}

279 const _ = {

280 options: {

281 allowedTools: ["Read", "Edit", "Glob", "Bash"],

282 permissionMode: "acceptEdits"

283 }

284 };

285 ```

286</CodeGroup>

287 

288Con `Bash` abilitato, prova: `"Write unit tests for utils.py, run them, and fix any failures"`

289 

290## Concetti chiave

291 

292**Tools** controllano cosa può fare il tuo agente:

293 

294| Tools | Cosa può fare l'agente |

295| -------------------------------------- | --------------------------------- |

296| `Read`, `Glob`, `Grep` | Analisi di sola lettura |

297| `Read`, `Edit`, `Glob` | Analizzare e modificare il codice |

298| `Read`, `Edit`, `Bash`, `Glob`, `Grep` | Automazione completa |

299 

300**Permission modes** controllano quanto controllo umano desideri:

301 

302| Mode | Comportamento | Caso d'uso |

303| ------------------------ | --------------------------------------------------------------------------------------------- | --------------------------------------------- |

304| `acceptEdits` | Auto-approva le modifiche ai file e i comandi comuni del file system, chiede per altre azioni | Flussi di lavoro di sviluppo affidabili |

305| `dontAsk` | Nega tutto ciò che non è in `allowedTools` | Agenti headless bloccati |

306| `auto` (solo TypeScript) | Un classificatore di modelli approva o nega ogni chiamata di strumento | Agenti autonomi con protezioni di sicurezza |

307| `bypassPermissions` | Esegue ogni strumento senza prompt | CI sandbox, ambienti completamente affidabili |

308| `default` | Richiede un callback `canUseTool` per gestire l'approvazione | Flussi di approvazione personalizzati |

309 

310L'esempio sopra utilizza la modalità `acceptEdits`, che auto-approva le operazioni sui file in modo che l'agente possa funzionare senza prompt interattivi. Se desideri richiedere agli utenti l'approvazione, utilizza la modalità `default` e fornisci un callback [`canUseTool`](/it/agent-sdk/user-input) che raccoglie l'input dell'utente. Per un maggiore controllo, vedi [Permissions](/it/agent-sdk/permissions).

311 

312## Risoluzione dei problemi

313 

314### Errore API `thinking.type.enabled` non è supportato per questo modello

315 

316Claude Opus 4.7 sostituisce `thinking.type.enabled` con `thinking.type.adaptive`. Le versioni precedenti di Agent SDK falliscono con il seguente errore API quando selezioni `claude-opus-4-7`:

317 

318```text theme={null}

319API Error: 400 {"type":"invalid_request_error","message":"\"thinking.type.enabled\" is not supported for this model. Use \"thinking.type.adaptive\" and \"output_config.effort\" to control thinking behavior."}

320```

321 

322Aggiorna a Agent SDK v0.2.111 o successivo per utilizzare Opus 4.7.

323 

324## Passaggi successivi

325 

326Ora che hai creato il tuo primo agente, scopri come estendere le sue capacità e adattarlo al tuo caso d'uso:

327 

328* **[Permissions](/it/agent-sdk/permissions)**: controlla cosa può fare il tuo agente e quando ha bisogno di approvazione

329* **[Hooks](/it/agent-sdk/hooks)**: esegui codice personalizzato prima o dopo le chiamate agli strumenti

330* **[Sessions](/it/agent-sdk/sessions)**: costruisci agenti multi-turn che mantengono il contesto

331* **[MCP servers](/it/agent-sdk/mcp)**: connettiti a database, browser, API e altri sistemi esterni

332* **[Hosting](/it/agent-sdk/hosting)**: distribuisci agenti a Docker, cloud e CI/CD

333* **[Example agents](https://github.com/anthropics/claude-agent-sdk-demos)**: vedi esempi completi: assistente email, agente di ricerca e altro

agent-sdk/slash-commands.md +444 −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# Slash Commands nell'SDK

6 

7> Scopri come utilizzare slash commands per controllare le sessioni di Claude Code attraverso l'SDK

8 

9Gli slash commands forniscono un modo per controllare le sessioni di Claude Code con comandi speciali che iniziano con `/`. Questi comandi possono essere inviati attraverso l'SDK per eseguire azioni come compattare il contesto, elencare l'utilizzo del contesto o invocare comandi personalizzati. Solo i comandi che funzionano senza un terminale interattivo sono dispatchable attraverso l'SDK; il messaggio `system/init` elenca quelli disponibili nella vostra sessione.

10 

11## Scoprire gli Slash Commands Disponibili

12 

13L'SDK Claude Agent fornisce informazioni sui slash commands disponibili nel messaggio di inizializzazione del sistema. Accedete a queste informazioni quando la vostra sessione inizia:

14 

15<CodeGroup>

16 ```typescript TypeScript theme={null}

17 import { query } from "@anthropic-ai/claude-agent-sdk";

18 

19 for await (const message of query({

20 prompt: "Hello Claude",

21 options: { maxTurns: 1 }

22 })) {

23 if (message.type === "system" && message.subtype === "init") {

24 console.log("Available slash commands:", message.slash_commands);

25 // Example output: ["/compact", "/context", "/usage"]

26 }

27 }

28 ```

29 

30 ```python Python theme={null}

31 import asyncio

32 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage

33 

34 

35 async def main():

36 async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):

37 if isinstance(message, SystemMessage) and message.subtype == "init":

38 print("Available slash commands:", message.data["slash_commands"])

39 # Example output: ["/compact", "/context", "/usage"]

40 

41 

42 asyncio.run(main())

43 ```

44</CodeGroup>

45 

46## Invio di Slash Commands

47 

48Inviate slash commands includendoli nella vostra stringa di prompt, proprio come testo normale:

49 

50<CodeGroup>

51 ```typescript TypeScript theme={null}

52 import { query } from "@anthropic-ai/claude-agent-sdk";

53 

54 // Send a slash command

55 for await (const message of query({

56 prompt: "/compact",

57 options: { maxTurns: 1 }

58 })) {

59 if (message.type === "result") {

60 console.log("Command executed:", message.result);

61 }

62 }

63 ```

64 

65 ```python Python theme={null}

66 import asyncio

67 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

68 

69 

70 async def main():

71 # Send a slash command

72 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):

73 if isinstance(message, ResultMessage):

74 print("Command executed:", message.result)

75 

76 

77 asyncio.run(main())

78 ```

79</CodeGroup>

80 

81## Slash Commands Comuni

82 

83### `/compact` - Compatta la Cronologia della Conversazione

84 

85Il comando `/compact` riduce la dimensione della vostra cronologia di conversazione riassumendo i messaggi più vecchi preservando il contesto importante:

86 

87<CodeGroup>

88 ```typescript TypeScript theme={null}

89 import { query } from "@anthropic-ai/claude-agent-sdk";

90 

91 for await (const message of query({

92 prompt: "/compact",

93 options: { maxTurns: 1 }

94 })) {

95 if (message.type === "system" && message.subtype === "compact_boundary") {

96 console.log("Compaction completed");

97 console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);

98 console.log("Trigger:", message.compact_metadata.trigger);

99 }

100 }

101 ```

102 

103 ```python Python theme={null}

104 import asyncio

105 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage

106 

107 

108 async def main():

109 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):

110 if isinstance(message, SystemMessage) and message.subtype == "compact_boundary":

111 print("Compaction completed")

112 print("Pre-compaction tokens:", message.data["compact_metadata"]["pre_tokens"])

113 print("Trigger:", message.data["compact_metadata"]["trigger"])

114 

115 

116 asyncio.run(main())

117 ```

118</CodeGroup>

119 

120### Cancellazione della conversazione

121 

122Il comando interattivo `/clear` non è disponibile nell'SDK. Ogni chiamata `query()` inizia già una conversazione nuova, quindi per cancellare il contesto, terminate la `query()` corrente e avviate una nuova. La conversazione precedente rimane su disco e può essere ripresa passando il suo ID di sessione all'[opzione `resume`](/it/agent-sdk/sessions#resume-by-id).

123 

124## Creazione di Slash Commands Personalizzati

125 

126Oltre a utilizzare gli slash commands integrati, potete creare i vostri comandi personalizzati disponibili attraverso l'SDK. I comandi personalizzati sono definiti come file markdown in directory specifiche, simile a come sono configurati i subagenti.

127 

128<Note>

129 La directory `.claude/commands/` è il formato legacy. Il formato consigliato è `.claude/skills/<name>/SKILL.md`, che supporta la stessa invocazione slash-command (`/name`) più l'invocazione autonoma da parte di Claude. Vedere [Skills](/it/agent-sdk/skills) per il formato attuale. La CLI continua a supportare entrambi i formati, e gli esempi seguenti rimangono accurati per `.claude/commands/`.

130</Note>

131 

132### Posizioni dei File

133 

134I comandi slash personalizzati sono archiviati in directory designate in base al loro ambito:

135 

136* **Comandi di progetto**: `.claude/commands/` - Disponibili solo nel progetto corrente (legacy; preferire `.claude/skills/`)

137* **Comandi personali**: `~/.claude/commands/` - Disponibili in tutti i vostri progetti (legacy; preferire `~/.claude/skills/`)

138 

139### Formato del File

140 

141Ogni comando personalizzato è un file markdown dove:

142 

143* Il nome del file (senza estensione `.md`) diventa il nome del comando

144* Il contenuto del file definisce cosa fa il comando

145* Il frontmatter YAML opzionale fornisce la configurazione

146 

147#### Esempio di Base

148 

149Create `.claude/commands/refactor.md`:

150 

151```markdown theme={null}

152Refactor the selected code to improve readability and maintainability.

153Focus on clean code principles and best practices.

154```

155 

156Questo crea il comando `/refactor` che potete utilizzare attraverso l'SDK.

157 

158#### Con Frontmatter

159 

160Create `.claude/commands/security-check.md`:

161 

162```markdown theme={null}

163---

164allowed-tools: Read, Grep, Glob

165description: Run security vulnerability scan

166model: claude-opus-4-7

167---

168 

169Analyze the codebase for security vulnerabilities including:

170- SQL injection risks

171- XSS vulnerabilities

172- Exposed credentials

173- Insecure configurations

174```

175 

176### Utilizzo di Comandi Personalizzati nell'SDK

177 

178Una volta definiti nel filesystem, i comandi personalizzati sono automaticamente disponibili attraverso l'SDK:

179 

180<CodeGroup>

181 ```typescript TypeScript theme={null}

182 import { query } from "@anthropic-ai/claude-agent-sdk";

183 

184 // Use a custom command

185 for await (const message of query({

186 prompt: "/refactor src/auth/login.ts",

187 options: { maxTurns: 3 }

188 })) {

189 if (message.type === "assistant") {

190 console.log("Refactoring suggestions:", message.message);

191 }

192 }

193 

194 // Custom commands appear in the slash_commands list

195 for await (const message of query({

196 prompt: "Hello",

197 options: { maxTurns: 1 }

198 })) {

199 if (message.type === "system" && message.subtype === "init") {

200 // Will include both built-in and custom commands

201 console.log("Available commands:", message.slash_commands);

202 // Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]

203 }

204 }

205 ```

206 

207 ```python Python theme={null}

208 import asyncio

209 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, SystemMessage

210 

211 

212 async def main():

213 # Use a custom command

214 async for message in query(

215 prompt="/refactor src/auth/login.py", options=ClaudeAgentOptions(max_turns=3)

216 ):

217 if isinstance(message, AssistantMessage):

218 for block in message.content:

219 if hasattr(block, "text"):

220 print("Refactoring suggestions:", block.text)

221 

222 # Custom commands appear in the slash_commands list

223 async for message in query(prompt="Hello", options=ClaudeAgentOptions(max_turns=1)):

224 if isinstance(message, SystemMessage) and message.subtype == "init":

225 # Will include both built-in and custom commands

226 print("Available commands:", message.data["slash_commands"])

227 # Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]

228 

229 

230 asyncio.run(main())

231 ```

232</CodeGroup>

233 

234### Funzionalità Avanzate

235 

236#### Argomenti e Segnaposti

237 

238I comandi personalizzati supportano argomenti dinamici utilizzando segnaposti:

239 

240Create `.claude/commands/fix-issue.md`:

241 

242```markdown theme={null}

243---

244argument-hint: [issue-number] [priority]

245description: Fix a GitHub issue

246---

247 

248Fix issue #$1 with priority $2.

249Check the issue description and implement the necessary changes.

250```

251 

252Utilizzo nell'SDK:

253 

254<CodeGroup>

255 ```typescript TypeScript theme={null}

256 import { query } from "@anthropic-ai/claude-agent-sdk";

257 

258 // Pass arguments to custom command

259 for await (const message of query({

260 prompt: "/fix-issue 123 high",

261 options: { maxTurns: 5 }

262 })) {

263 // Command will process with $1="123" and $2="high"

264 if (message.type === "result") {

265 console.log("Issue fixed:", message.result);

266 }

267 }

268 ```

269 

270 ```python Python theme={null}

271 import asyncio

272 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

273 

274 

275 async def main():

276 # Pass arguments to custom command

277 async for message in query(prompt="/fix-issue 123 high", options=ClaudeAgentOptions(max_turns=5)):

278 # Command will process with $1="123" and $2="high"

279 if isinstance(message, ResultMessage):

280 print("Issue fixed:", message.result)

281 

282 

283 asyncio.run(main())

284 ```

285</CodeGroup>

286 

287#### Esecuzione di Comandi Bash

288 

289I comandi personalizzati possono eseguire comandi bash e includere il loro output:

290 

291Create `.claude/commands/git-commit.md`:

292 

293```markdown theme={null}

294---

295allowed-tools: Bash(git add *), Bash(git status *), Bash(git commit *)

296description: Create a git commit

297---

298 

299## Context

300 

301- Current status: !`git status`

302- Current diff: !`git diff HEAD`

303 

304## Task

305 

306Create a git commit with appropriate message based on the changes.

307```

308 

309#### Riferimenti ai File

310 

311Includete i contenuti dei file utilizzando il prefisso `@`:

312 

313Create `.claude/commands/review-config.md`:

314 

315```markdown theme={null}

316---

317description: Review configuration files

318---

319 

320Review the following configuration files for issues:

321- Package config: @package.json

322- TypeScript config: @tsconfig.json

323- Environment config: @.env

324 

325Check for security issues, outdated dependencies, and misconfigurations.

326```

327 

328### Organizzazione con Namespacing

329 

330Organizzate i comandi in sottodirectory per una struttura migliore:

331 

332```bash theme={null}

333.claude/commands/

334├── frontend/

335│ ├── component.md # Creates /component (project:frontend)

336│ └── style-check.md # Creates /style-check (project:frontend)

337├── backend/

338│ ├── api-test.md # Creates /api-test (project:backend)

339│ └── db-migrate.md # Creates /db-migrate (project:backend)

340└── review.md # Creates /review (project)

341```

342 

343La sottodirectory appare nella descrizione del comando ma non influisce sul nome del comando stesso.

344 

345### Esempi Pratici

346 

347#### Comando di Revisione del Codice

348 

349Create `.claude/commands/code-review.md`:

350 

351```markdown theme={null}

352---

353allowed-tools: Read, Grep, Glob, Bash(git diff *)

354description: Comprehensive code review

355---

356 

357## Changed Files

358!`git diff --name-only HEAD~1`

359 

360## Detailed Changes

361!`git diff HEAD~1`

362 

363## Review Checklist

364 

365Review the above changes for:

3661. Code quality and readability

3672. Security vulnerabilities

3683. Performance implications

3694. Test coverage

3705. Documentation completeness

371 

372Provide specific, actionable feedback organized by priority.

373```

374 

375#### Comando Test Runner

376 

377Create `.claude/commands/test.md`:

378 

379```markdown theme={null}

380---

381allowed-tools: Bash, Read, Edit

382argument-hint: [test-pattern]

383description: Run tests with optional pattern

384---

385 

386Run tests matching pattern: $ARGUMENTS

387 

3881. Detect the test framework (Jest, pytest, etc.)

3892. Run tests with the provided pattern

3903. If tests fail, analyze and fix them

3914. Re-run to verify fixes

392```

393 

394Utilizzate questi comandi attraverso l'SDK:

395 

396<CodeGroup>

397 ```typescript TypeScript theme={null}

398 import { query } from "@anthropic-ai/claude-agent-sdk";

399 

400 // Run code review

401 for await (const message of query({

402 prompt: "/code-review",

403 options: { maxTurns: 3 }

404 })) {

405 // Process review feedback

406 }

407 

408 // Run specific tests

409 for await (const message of query({

410 prompt: "/test auth",

411 options: { maxTurns: 5 }

412 })) {

413 // Handle test results

414 }

415 ```

416 

417 ```python Python theme={null}

418 import asyncio

419 from claude_agent_sdk import query, ClaudeAgentOptions

420 

421 

422 async def main():

423 # Run code review

424 async for message in query(prompt="/code-review", options=ClaudeAgentOptions(max_turns=3)):

425 # Process review feedback

426 pass

427 

428 # Run specific tests

429 async for message in query(prompt="/test auth", options=ClaudeAgentOptions(max_turns=5)):

430 # Handle test results

431 pass

432 

433 

434 asyncio.run(main())

435 ```

436</CodeGroup>

437 

438## Vedere Anche

439 

440* [Slash Commands](/it/skills) - Documentazione completa degli slash commands

441* [Subagenti nell'SDK](/it/agent-sdk/subagents) - Configurazione basata su filesystem simile per i subagenti

442* [Riferimento SDK TypeScript](/it/agent-sdk/typescript) - Documentazione API completa

443* [Panoramica SDK](/it/agent-sdk/overview) - Concetti generali dell'SDK

444* [Riferimento CLI](/it/cli-reference) - Interfaccia della riga di comando

agent-sdk/typescript.md +2975 −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# Riferimento Agent SDK - TypeScript

6 

7> Riferimento API completo per l'Agent SDK TypeScript, incluse tutte le funzioni, i tipi e le interfacce.

8 

9<script src="/components/typescript-sdk-type-links.js" defer />

10 

11<Note>

12 **Prova la nuova interfaccia V2 (anteprima):** Un'interfaccia semplificata con i pattern `send()` e `stream()` è ora disponibile, rendendo le conversazioni multi-turno più facili. [Scopri di più sull'anteprima TypeScript V2](/it/agent-sdk/typescript-v2-preview)

13</Note>

14 

15## Installazione

16 

17```bash theme={null}

18npm install @anthropic-ai/claude-agent-sdk

19```

20 

21<Note>

22 L'SDK raggruppa un binario nativo Claude Code per la tua piattaforma come dipendenza opzionale come `@anthropic-ai/claude-agent-sdk-darwin-arm64`. Non è necessario installare Claude Code separatamente. Se il tuo gestore di pacchetti salta le dipendenze opzionali, l'SDK genera `Native CLI binary for <platform> not found`; imposta [`pathToClaudeCodeExecutable`](#options) su un binario `claude` installato separatamente.

23</Note>

24 

25## Funzioni

26 

27### `query()`

28 

29La funzione principale per interagire con Claude Code. Crea un generatore asincrono che trasmette i messaggi man mano che arrivano.

30 

31```typescript theme={null}

32function query({

33 prompt,

34 options

35}: {

36 prompt: string | AsyncIterable<SDKUserMessage>;

37 options?: Options;

38}): Query;

39```

40 

41#### Parametri

42 

43| Parametro | Tipo | Descrizione |

44| :-------- | :---------------------------------------------------------------- | :------------------------------------------------------------------------------ |

45| `prompt` | `string \| AsyncIterable<`[`SDKUserMessage`](#sdkuser-message)`>` | Il prompt di input come stringa o iterabile asincrono per la modalità streaming |

46| `options` | [`Options`](#options) | Oggetto di configurazione opzionale (vedi il tipo Options di seguito) |

47 

48#### Restituisce

49 

50Restituisce un oggetto [`Query`](#query-object) che estende `AsyncGenerator<`[`SDKMessage`](#sdk-message)`, void>` con metodi aggiuntivi.

51 

52### `startup()`

53 

54Pre-riscalda il subprocess CLI generandolo e completando l'handshake di inizializzazione prima che un prompt sia disponibile. L'handle [`WarmQuery`](#warm-query) restituito accetta un prompt in seguito e lo scrive in un processo già pronto, quindi la prima chiamata `query()` si risolve senza pagare il costo di generazione e inizializzazione del subprocess inline.

55 

56```typescript theme={null}

57function startup(params?: {

58 options?: Options;

59 initializeTimeoutMs?: number;

60}): Promise<WarmQuery>;

61```

62 

63#### Parametri

64 

65| Parametro | Tipo | Descrizione |

66| :-------------------- | :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

67| `options` | [`Options`](#options) | Oggetto di configurazione opzionale. Uguale al parametro `options` di `query()` |

68| `initializeTimeoutMs` | `number` | Tempo massimo in millisecondi per attendere l'inizializzazione del subprocess. Predefinito a `60000`. Se l'inizializzazione non si completa in tempo, la promessa viene rifiutata con un errore di timeout |

69 

70#### Restituisce

71 

72Restituisce una `Promise<`[`WarmQuery`](#warm-query)`>` che si risolve una volta che il subprocess è stato generato e ha completato il suo handshake di inizializzazione.

73 

74#### Esempio

75 

76Chiama `startup()` presto, ad esempio all'avvio dell'applicazione, quindi chiama `.query()` sull'handle restituito una volta che un prompt è pronto. Questo sposta la generazione del subprocess e l'inizializzazione fuori dal percorso critico.

77 

78```typescript theme={null}

79import { startup } from "@anthropic-ai/claude-agent-sdk";

80 

81// Paga il costo di avvio in anticipo

82const warm = await startup({ options: { maxTurns: 3 } });

83 

84// Più tardi, quando un prompt è pronto, questo è immediato

85for await (const message of warm.query("What files are here?")) {

86 console.log(message);

87}

88```

89 

90### `tool()`

91 

92Crea una definizione di tool MCP type-safe per l'uso con i server MCP dell'SDK.

93 

94```typescript theme={null}

95function tool<Schema extends AnyZodRawShape>(

96 name: string,

97 description: string,

98 inputSchema: Schema,

99 handler: (args: InferShape<Schema>, extra: unknown) => Promise<CallToolResult>,

100 extras?: { annotations?: ToolAnnotations }

101): SdkMcpToolDefinition<Schema>;

102```

103 

104#### Parametri

105 

106| Parametro | Tipo | Descrizione |

107| :------------ | :------------------------------------------------------------------ | :------------------------------------------------------------------------------------ |

108| `name` | `string` | Il nome del tool |

109| `description` | `string` | Una descrizione di cosa fa il tool |

110| `inputSchema` | `Schema extends AnyZodRawShape` | Schema Zod che definisce i parametri di input del tool (supporta sia Zod 3 che Zod 4) |

111| `handler` | `(args, extra) => Promise<`[`CallToolResult`](#call-tool-result)`>` | Funzione asincrona che esegue la logica del tool |

112| `extras` | `{ annotations?: `[`ToolAnnotations`](#tool-annotations)` }` | Annotazioni MCP tool opzionali che forniscono suggerimenti comportamentali ai client |

113 

114#### `ToolAnnotations`

115 

116Re-esportato da `@modelcontextprotocol/sdk/types.js`. Tutti i campi sono suggerimenti opzionali; i client non dovrebbero fare affidamento su di essi per decisioni di sicurezza.

117 

118| Campo | Tipo | Predefinito | Descrizione |

119| :---------------- | :-------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

120| `title` | `string` | `undefined` | Titolo leggibile per il tool |

121| `readOnlyHint` | `boolean` | `false` | Se `true`, il tool non modifica il suo ambiente |

122| `destructiveHint` | `boolean` | `true` | Se `true`, il tool può eseguire aggiornamenti distruttivi (significativo solo quando `readOnlyHint` è `false`) |

123| `idempotentHint` | `boolean` | `false` | Se `true`, le chiamate ripetute con gli stessi argomenti non hanno effetto aggiuntivo (significativo solo quando `readOnlyHint` è `false`) |

124| `openWorldHint` | `boolean` | `true` | Se `true`, il tool interagisce con entità esterne (ad esempio, ricerca web). Se `false`, il dominio del tool è chiuso (ad esempio, un tool di memoria) |

125 

126```typescript theme={null}

127import { tool } from "@anthropic-ai/claude-agent-sdk";

128import { z } from "zod";

129 

130const searchTool = tool(

131 "search",

132 "Search the web",

133 { query: z.string() },

134 async ({ query }) => {

135 return { content: [{ type: "text", text: `Results for: ${query}` }] };

136 },

137 { annotations: { readOnlyHint: true, openWorldHint: true } }

138);

139```

140 

141### `createSdkMcpServer()`

142 

143Crea un'istanza di server MCP che viene eseguita nello stesso processo della tua applicazione.

144 

145```typescript theme={null}

146function createSdkMcpServer(options: {

147 name: string;

148 version?: string;

149 tools?: Array<SdkMcpToolDefinition<any>>;

150}): McpSdkServerConfigWithInstance;

151```

152 

153#### Parametri

154 

155| Parametro | Tipo | Descrizione |

156| :---------------- | :---------------------------- | :-------------------------------------------------------- |

157| `options.name` | `string` | Il nome del server MCP |

158| `options.version` | `string` | Stringa di versione opzionale |

159| `options.tools` | `Array<SdkMcpToolDefinition>` | Array di definizioni di tool create con [`tool()`](#tool) |

160 

161### `listSessions()`

162 

163Scopre ed elenca le sessioni passate con metadati leggeri. Filtra per directory di progetto o elenca le sessioni in tutti i progetti.

164 

165```typescript theme={null}

166function listSessions(options?: ListSessionsOptions): Promise<SDKSessionInfo[]>;

167```

168 

169#### Parametri

170 

171| Parametro | Tipo | Predefinito | Descrizione |

172| :------------------------- | :-------- | :---------- | :------------------------------------------------------------------------------------------------------- |

173| `options.dir` | `string` | `undefined` | Directory per cui elencare le sessioni. Se omesso, restituisce le sessioni in tutti i progetti |

174| `options.limit` | `number` | `undefined` | Numero massimo di sessioni da restituire |

175| `options.includeWorktrees` | `boolean` | `true` | Quando `dir` si trova all'interno di un repository git, includi le sessioni da tutti i percorsi worktree |

176 

177#### Tipo di ritorno: `SDKSessionInfo`

178 

179| Proprietà | Tipo | Descrizione |

180| :------------- | :-------------------- | :-------------------------------------------------------------------------------------------------- |

181| `sessionId` | `string` | Identificatore di sessione univoco (UUID) |

182| `summary` | `string` | Titolo di visualizzazione: titolo personalizzato, riepilogo generato automaticamente o primo prompt |

183| `lastModified` | `number` | Ora dell'ultima modifica in millisecondi dall'epoca |

184| `fileSize` | `number \| undefined` | Dimensione del file di sessione in byte. Popolato solo per l'archiviazione JSONL locale |

185| `customTitle` | `string \| undefined` | Titolo della sessione impostato dall'utente (tramite `/rename`) |

186| `firstPrompt` | `string \| undefined` | Primo prompt utente significativo nella sessione |

187| `gitBranch` | `string \| undefined` | Ramo Git alla fine della sessione |

188| `cwd` | `string \| undefined` | Directory di lavoro per la sessione |

189| `tag` | `string \| undefined` | Tag della sessione impostato dall'utente (vedi [`tagSession()`](#tag-session)) |

190| `createdAt` | `number \| undefined` | Ora di creazione in millisecondi dall'epoca, dal timestamp della prima voce |

191 

192#### Esempio

193 

194Stampa le 10 sessioni più recenti per un progetto. I risultati sono ordinati per `lastModified` decrescente, quindi il primo elemento è il più recente. Ometti `dir` per cercare in tutti i progetti.

195 

196```typescript theme={null}

197import { listSessions } from "@anthropic-ai/claude-agent-sdk";

198 

199const sessions = await listSessions({ dir: "/path/to/project", limit: 10 });

200 

201for (const session of sessions) {

202 console.log(`${session.summary} (${session.sessionId})`);

203}

204```

205 

206### `getSessionMessages()`

207 

208Legge i messaggi dell'utente e dell'assistente da una trascrizione di sessione passata.

209 

210```typescript theme={null}

211function getSessionMessages(

212 sessionId: string,

213 options?: GetSessionMessagesOptions

214): Promise<SessionMessage[]>;

215```

216 

217#### Parametri

218 

219| Parametro | Tipo | Predefinito | Descrizione |

220| :--------------- | :------- | :----------- | :-------------------------------------------------------------------------------------- |

221| `sessionId` | `string` | obbligatorio | UUID della sessione da leggere (vedi `listSessions()`) |

222| `options.dir` | `string` | `undefined` | Directory del progetto in cui trovare la sessione. Se omesso, cerca in tutti i progetti |

223| `options.limit` | `number` | `undefined` | Numero massimo di messaggi da restituire |

224| `options.offset` | `number` | `undefined` | Numero di messaggi da saltare dall'inizio |

225 

226#### Tipo di ritorno: `SessionMessage`

227 

228| Proprietà | Tipo | Descrizione |

229| :------------------- | :---------------------- | :---------------------------------------------- |

230| `type` | `"user" \| "assistant"` | Ruolo del messaggio |

231| `uuid` | `string` | Identificatore di messaggio univoco |

232| `session_id` | `string` | Sessione a cui appartiene questo messaggio |

233| `message` | `unknown` | Payload del messaggio grezzo dalla trascrizione |

234| `parent_tool_use_id` | `null` | Riservato |

235 

236#### Esempio

237 

238```typescript theme={null}

239import { listSessions, getSessionMessages } from "@anthropic-ai/claude-agent-sdk";

240 

241const [latest] = await listSessions({ dir: "/path/to/project", limit: 1 });

242 

243if (latest) {

244 const messages = await getSessionMessages(latest.sessionId, {

245 dir: "/path/to/project",

246 limit: 20

247 });

248 

249 for (const msg of messages) {

250 console.log(`[${msg.type}] ${msg.uuid}`);

251 }

252}

253```

254 

255### `getSessionInfo()`

256 

257Legge i metadati per una singola sessione per ID senza scansionare la directory del progetto completa.

258 

259```typescript theme={null}

260function getSessionInfo(

261 sessionId: string,

262 options?: GetSessionInfoOptions

263): Promise<SDKSessionInfo | undefined>;

264```

265 

266#### Parametri

267 

268| Parametro | Tipo | Predefinito | Descrizione |

269| :------------ | :------- | :----------- | :----------------------------------------------------------------------------------------- |

270| `sessionId` | `string` | obbligatorio | UUID della sessione da cercare |

271| `options.dir` | `string` | `undefined` | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |

272 

273Restituisce [`SDKSessionInfo`](#return-type-sdk-session-info), o `undefined` se la sessione non viene trovata.

274 

275### `renameSession()`

276 

277Rinomina una sessione aggiungendo una voce di titolo personalizzato. Le chiamate ripetute sono sicure; il titolo più recente vince.

278 

279```typescript theme={null}

280function renameSession(

281 sessionId: string,

282 title: string,

283 options?: SessionMutationOptions

284): Promise<void>;

285```

286 

287#### Parametri

288 

289| Parametro | Tipo | Predefinito | Descrizione |

290| :------------ | :------- | :----------- | :----------------------------------------------------------------------------------------- |

291| `sessionId` | `string` | obbligatorio | UUID della sessione da rinominare |

292| `title` | `string` | obbligatorio | Nuovo titolo. Deve essere non vuoto dopo il trimming dello spazio bianco |

293| `options.dir` | `string` | `undefined` | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |

294 

295### `tagSession()`

296 

297Etichetta una sessione. Passa `null` per cancellare l'etichetta. Le chiamate ripetute sono sicure; l'etichetta più recente vince.

298 

299```typescript theme={null}

300function tagSession(

301 sessionId: string,

302 tag: string | null,

303 options?: SessionMutationOptions

304): Promise<void>;

305```

306 

307#### Parametri

308 

309| Parametro | Tipo | Predefinito | Descrizione |

310| :------------ | :--------------- | :----------- | :----------------------------------------------------------------------------------------- |

311| `sessionId` | `string` | obbligatorio | UUID della sessione da etichettare |

312| `tag` | `string \| null` | obbligatorio | Stringa di etichetta, o `null` per cancellare |

313| `options.dir` | `string` | `undefined` | Percorso della directory del progetto. Se omesso, cerca in tutte le directory del progetto |

314 

315## Tipi

316 

317### `Options`

318 

319Oggetto di configurazione per la funzione `query()`.

320 

321| Proprietà | Tipo | Predefinito | Descrizione |

322| :-------------------------------- | :------------------------------------------------------------------------------------------------------- | :---------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

323| `abortController` | `AbortController` | `new AbortController()` | Controller per annullare le operazioni |

324| `additionalDirectories` | `string[]` | `[]` | Directory aggiuntive a cui Claude può accedere |

325| `agent` | `string` | `undefined` | Nome dell'agente per il thread principale. L'agente deve essere definito nell'opzione `agents` o nelle impostazioni |

326| `agents` | `Record<string, [`AgentDefinition`](#agent-definition)>` | `undefined` | Definisci programmaticamente i subagenti |

327| `allowDangerouslySkipPermissions` | `boolean` | `false` | Abilita il bypass dei permessi. Obbligatorio quando si usa `permissionMode: 'bypassPermissions'` |

328| `allowedTools` | `string[]` | `[]` | Tool da approvare automaticamente senza richiedere. Questo non limita Claude a solo questi tool; i tool non elencati ricadono in `permissionMode` e `canUseTool`. Usa `disallowedTools` per bloccare i tool. Vedi [Permessi](/it/agent-sdk/permissions#allow-and-deny-rules) |

329| `betas` | [`SdkBeta`](#sdk-beta)`[]` | `[]` | Abilita le funzioni beta |

330| `canUseTool` | [`CanUseTool`](#can-use-tool) | `undefined` | Funzione di permesso personalizzata per l'uso dei tool |

331| `continue` | `boolean` | `false` | Continua la conversazione più recente |

332| `cwd` | `string` | `process.cwd()` | Directory di lavoro corrente |

333| `debug` | `boolean` | `false` | Abilita la modalità debug per il processo Claude Code |

334| `debugFile` | `string` | `undefined` | Scrivi i log di debug in un percorso di file specifico. Abilita implicitamente la modalità debug |

335| `disallowedTools` | `string[]` | `[]` | Tool da sempre negare. Le regole di negazione vengono controllate per prime e sovrascrivono `allowedTools` e `permissionMode` (incluso `bypassPermissions`) |

336| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `'high'` | Controlla quanto sforzo Claude mette nella sua risposta. Funziona con il pensiero adattivo per guidare la profondità del pensiero |

337| `enableFileCheckpointing` | `boolean` | `false` | Abilita il tracciamento dei cambiamenti di file per il rewind. Vedi [File checkpointing](/it/agent-sdk/file-checkpointing) |

338| `env` | `Record<string, string \| undefined>` | `process.env` | Variabili di ambiente. Vedi [Variabili di ambiente](/it/env-vars) per le variabili che la CLI sottostante legge. Imposta `CLAUDE_AGENT_SDK_CLIENT_APP` per identificare la tua app nell'intestazione User-Agent |

339| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-rilevato | Runtime JavaScript da usare |

340| `executableArgs` | `string[]` | `[]` | Argomenti da passare all'eseguibile |

341| `extraArgs` | `Record<string, string \| null>` | `{}` | Argomenti aggiuntivi |

342| `fallbackModel` | `string` | `undefined` | Modello da usare se il primario fallisce |

343| `forkSession` | `boolean` | `false` | Quando si riprende con `resume`, esegui il fork a un nuovo ID di sessione invece di continuare la sessione originale |

344| `hooks` | `Partial<Record<`[`HookEvent`](#hook-event)`, `[`HookCallbackMatcher`](#hook-callback-matcher)`[]>>` | `{}` | Callback hook per gli eventi |

345| `includePartialMessages` | `boolean` | `false` | Includi gli eventi di messaggi parziali |

346| `maxBudgetUsd` | `number` | `undefined` | Interrompi la query quando la stima del costo lato client raggiunge questo valore in USD. Confrontato con la stessa stima di `total_cost_usd`; vedi [Traccia costo e utilizzo](/it/agent-sdk/cost-tracking) per le avvertenze di accuratezza |

347| `maxThinkingTokens` | `number` | `undefined` | *Deprecato:* Usa `thinking` invece. Token massimi per il processo di pensiero |

348| `maxTurns` | `number` | `undefined` | Turni agentici massimi (round trip di uso dei tool) |

349| `mcpServers` | `Record<string, [`McpServerConfig`](#mcp-server-config)>` | `{}` | Configurazioni del server MCP |

350| `model` | `string` | Predefinito da CLI | Modello Claude da usare |

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

352| `pathToClaudeCodeExecutable` | `string` | Auto-risolto dal binario nativo raggruppato | 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 |

353| `permissionMode` | [`PermissionMode`](#permission-mode) | `'default'` | Modalità di permesso per la sessione |

354| `permissionPromptToolName` | `string` | `undefined` | Nome del tool MCP per i prompt di permesso |

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

356| `plugins` | [`SdkPluginConfig`](#sdk-plugin-config)`[]` | `[]` | Carica plugin personalizzati da percorsi locali. Vedi [Plugins](/it/agent-sdk/plugins) per i dettagli |

357| `promptSuggestions` | `boolean` | `false` | Abilita i suggerimenti di prompt. Emette un messaggio `prompt_suggestion` dopo ogni turno con un prompt utente successivo previsto |

358| `resume` | `string` | `undefined` | ID della sessione da riprendere |

359| `resumeSessionAt` | `string` | `undefined` | Riprendi la sessione a un UUID di messaggio specifico |

360| `sandbox` | [`SandboxSettings`](#sandbox-settings) | `undefined` | Configura il comportamento della sandbox a livello di programmazione. Vedi [Impostazioni sandbox](#sandbox-settings) per i dettagli |

361| `sessionId` | `string` | Auto-generato | Usa un UUID specifico per la sessione invece di generarne uno automaticamente |

362| `sessionStore` | [`SessionStore`](/it/agent-sdk/session-storage#the-session-store-interface) | `undefined` | Specchia i trascritti della sessione in un backend esterno in modo che qualsiasi host possa riprenderli. Vedi [Persisti le sessioni nell'archiviazione esterna](/it/agent-sdk/session-storage) |

363| `settingSources` | [`SettingSource`](#setting-source)`[]` | Impostazioni predefinite CLI (tutte le fonti) | Controlla quali impostazioni del filesystem caricare. Passa `[]` per disabilitare le impostazioni utente, progetto e locali. Le impostazioni della politica gestita vengono caricate indipendentemente. Vedi [Usa le funzioni Claude Code](/it/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

364| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Funzione personalizzata per generare il processo Claude Code. Usa per eseguire Claude Code in VM, container o ambienti remoti |

365| `stderr` | `(data: string) => void` | `undefined` | Callback per l'output stderr |

366| `strictMcpConfig` | `boolean` | `false` | Applica la convalida MCP rigorosa |

367| `systemPrompt` | `string \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean }` | `undefined` (prompt minimo) | Configurazione del prompt di sistema. Passa una stringa per un prompt personalizzato, o `{ type: 'preset', preset: 'claude_code' }` per usare il prompt di sistema di Claude Code. Quando si usa la forma dell'oggetto preset, aggiungi `append` per estenderlo con istruzioni aggiuntive, e imposta `excludeDynamicSections: true` per spostare il contesto per sessione nel primo messaggio utente per un [migliore riutilizzo della cache dei prompt tra le macchine](/it/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

368| `thinking` | [`ThinkingConfig`](#thinking-config) | `{ type: 'adaptive' }` per i modelli supportati | Controlla il comportamento di pensiero/ragionamento di Claude. Vedi [`ThinkingConfig`](#thinking-config) per le opzioni |

369| `toolConfig` | [`ToolConfig`](#tool-config) | `undefined` | Configurazione per il comportamento dei tool incorporati. Vedi [`ToolConfig`](#tool-config) per i dettagli |

370| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Configurazione dei tool. Passa un array di nomi di tool o usa il preset per ottenere i tool predefiniti di Claude Code |

371 

372### Oggetto `Query`

373 

374Interfaccia restituita dalla funzione `query()`.

375 

376```typescript theme={null}

377interface Query extends AsyncGenerator<SDKMessage, void> {

378 interrupt(): Promise<void>;

379 rewindFiles(

380 userMessageId: string,

381 options?: { dryRun?: boolean }

382 ): Promise<RewindFilesResult>;

383 setPermissionMode(mode: PermissionMode): Promise<void>;

384 setModel(model?: string): Promise<void>;

385 setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;

386 initializationResult(): Promise<SDKControlInitializeResponse>;

387 supportedCommands(): Promise<SlashCommand[]>;

388 supportedModels(): Promise<ModelInfo[]>;

389 supportedAgents(): Promise<AgentInfo[]>;

390 mcpServerStatus(): Promise<McpServerStatus[]>;

391 accountInfo(): Promise<AccountInfo>;

392 reconnectMcpServer(serverName: string): Promise<void>;

393 toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;

394 setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;

395 streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;

396 stopTask(taskId: string): Promise<void>;

397 close(): void;

398}

399```

400 

401#### Metodi

402 

403| Metodo | Descrizione |

404| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

405| `interrupt()` | Interrompe la query (disponibile solo in modalità input streaming) |

406| `rewindFiles(userMessageId, options?)` | Ripristina i file al loro stato al messaggio utente specificato. Passa `{ dryRun: true }` per visualizzare in anteprima i cambiamenti. Richiede `enableFileCheckpointing: true`. Vedi [File checkpointing](/it/agent-sdk/file-checkpointing) |

407| `setPermissionMode()` | Cambia la modalità di permesso (disponibile solo in modalità input streaming) |

408| `setModel()` | Cambia il modello (disponibile solo in modalità input streaming) |

409| `setMaxThinkingTokens()` | *Deprecato:* Usa l'opzione `thinking` invece. Cambia i token di pensiero massimi |

410| `initializationResult()` | Restituisce il risultato di inizializzazione completo inclusi i comandi supportati, i modelli, le informazioni dell'account e la configurazione dello stile di output |

411| `supportedCommands()` | Restituisce i comandi slash disponibili |

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

413| `supportedAgents()` | Restituisce i subagenti disponibili come [`AgentInfo`](#agent-info)`[]` |

414| `mcpServerStatus()` | Restituisce lo stato dei server MCP connessi |

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

416| `reconnectMcpServer(serverName)` | Ricollega un server MCP per nome |

417| `toggleMcpServer(serverName, enabled)` | Abilita o disabilita un server MCP per nome |

418| `setMcpServers(servers)` | Sostituisci dinamicamente l'insieme dei server MCP per questa sessione. Restituisce informazioni su quali server sono stati aggiunti, rimossi e eventuali errori |

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

420| `stopTask(taskId)` | Interrompi un'attività di background in esecuzione per ID |

421| `close()` | Chiudi la query e termina il processo sottostante. Termina forzatamente la query e pulisce tutte le risorse |

422 

423### `WarmQuery`

424 

425Handle restituito da [`startup()`](#startup). Il subprocess è già generato e inizializzato, quindi chiamare `query()` su questo handle scrive il prompt direttamente in un processo pronto senza latenza di avvio.

426 

427```typescript theme={null}

428interface WarmQuery extends AsyncDisposable {

429 query(prompt: string | AsyncIterable<SDKUserMessage>): Query;

430 close(): void;

431}

432```

433 

434#### Metodi

435 

436| Metodo | Descrizione |

437| :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |

438| `query(prompt)` | Invia un prompt al subprocess pre-riscaldato e restituisci una [`Query`](#query-object). Può essere chiamato solo una volta per `WarmQuery` |

439| `close()` | Chiudi il subprocess senza inviare un prompt. Usa questo per scartare una query calda che non è più necessaria |

440 

441`WarmQuery` implementa `AsyncDisposable`, quindi può essere usato con `await using` per la pulizia automatica.

442 

443### `SDKControlInitializeResponse`

444 

445Tipo di ritorno di `initializationResult()`. Contiene i dati di inizializzazione della sessione.

446 

447```typescript theme={null}

448type SDKControlInitializeResponse = {

449 commands: SlashCommand[];

450 agents: AgentInfo[];

451 output_style: string;

452 available_output_styles: string[];

453 models: ModelInfo[];

454 account: AccountInfo;

455 fast_mode_state?: "off" | "cooldown" | "on";

456};

457```

458 

459### `AgentDefinition`

460 

461Configurazione per un subagente definito programmaticamente.

462 

463```typescript theme={null}

464type AgentDefinition = {

465 description: string;

466 tools?: string[];

467 disallowedTools?: string[];

468 prompt: string;

469 model?: string;

470 mcpServers?: AgentMcpServerSpec[];

471 skills?: string[];

472 initialPrompt?: string;

473 maxTurns?: number;

474 background?: boolean;

475 memory?: "user" | "project" | "local";

476 effort?: "low" | "medium" | "high" | "xhigh" | "max" | number;

477 permissionMode?: PermissionMode;

478 criticalSystemReminder_EXPERIMENTAL?: string;

479};

480```

481 

482| Campo | Obbligatorio | Descrizione |

483| :------------------------------------ | :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

484| `description` | Sì | Descrizione in linguaggio naturale di quando usare questo agente |

485| `tools` | No | Array di nomi di tool consentiti. Se omesso, eredita tutti i tool dal genitore |

486| `disallowedTools` | No | Array di nomi di tool da esplicitamente disabilitare per questo agente |

487| `prompt` | Sì | Il prompt di sistema dell'agente |

488| `model` | No | Override del modello per questo agente. Accetta un alias come `'sonnet'`, `'opus'`, `'haiku'`, `'inherit'`, o un ID modello completo. Se omesso o `'inherit'`, usa il modello principale |

489| `mcpServers` | No | Specifiche del server MCP per questo agente |

490| `skills` | No | Array di nomi di skill da precaricare nel contesto dell'agente |

491| `initialPrompt` | No | Auto-inviato come il primo turno utente quando questo agente viene eseguito come agente del thread principale |

492| `maxTurns` | No | Numero massimo di turni agentici (round trip API) prima di fermarsi |

493| `background` | No | Esegui questo agente come un'attività di background non bloccante quando invocato |

494| `memory` | No | Fonte di memoria per questo agente: `'user'`, `'project'`, o `'local'` |

495| `effort` | No | Livello di sforzo di ragionamento per questo agente. Accetta un livello denominato o un numero intero |

496| `permissionMode` | No | Modalità di permesso per l'esecuzione dei tool all'interno di questo agente. Vedi [`PermissionMode`](#permission-mode) |

497| `criticalSystemReminder_EXPERIMENTAL` | No | Sperimentale: Promemoria critico aggiunto al prompt di sistema |

498 

499### `AgentMcpServerSpec`

500 

501Specifica i server MCP disponibili per un subagente. Può essere un nome di server (stringa che fa riferimento a un server dalla configurazione `mcpServers` del genitore) o una configurazione di server inline che mappa i nomi dei server alle configurazioni.

502 

503```typescript theme={null}

504type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;

505```

506 

507Dove `McpServerConfigForProcessTransport` è `McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig`.

508 

509### `SettingSource`

510 

511Controlla quali fonti di configurazione basate su filesystem l'SDK carica le impostazioni da.

512 

513```typescript theme={null}

514type SettingSource = "user" | "project" | "local";

515```

516 

517| Valore | Descrizione | Posizione |

518| :---------- | :--------------------------------------------------------------- | :---------------------------- |

519| `'user'` | Impostazioni globali dell'utente | `~/.claude/settings.json` |

520| `'project'` | Impostazioni del progetto condivise (controllate dalla versione) | `.claude/settings.json` |

521| `'local'` | Impostazioni del progetto locale (gitignorate) | `.claude/settings.local.json` |

522 

523#### Comportamento predefinito

524 

525Quando `settingSources` è omesso o `undefined`, `query()` carica le stesse impostazioni del filesystem del CLI Claude Code: utente, progetto e locale. Le impostazioni della politica gestita vengono caricate in tutti i casi. Vedi [Cosa settingSources non controlla](/it/agent-sdk/claude-code-features#what-settingsources-does-not-control) per gli input che vengono letti indipendentemente da questa opzione, e come disabilitarli.

526 

527#### Perché usare settingSources

528 

529**Disabilita le impostazioni del filesystem:**

530 

531```typescript theme={null}

532// Non caricare le impostazioni utente, progetto o locali dal disco

533const result = query({

534 prompt: "Analyze this code",

535 options: { settingSources: [] }

536});

537```

538 

539**Carica tutte le impostazioni del filesystem esplicitamente:**

540 

541```typescript theme={null}

542const result = query({

543 prompt: "Analyze this code",

544 options: {

545 settingSources: ["user", "project", "local"] // Carica tutte le impostazioni

546 }

547});

548```

549 

550**Carica solo fonti di impostazioni specifiche:**

551 

552```typescript theme={null}

553// Carica solo le impostazioni del progetto, ignora utente e locale

554const result = query({

555 prompt: "Run CI checks",

556 options: {

557 settingSources: ["project"] // Solo .claude/settings.json

558 }

559});

560```

561 

562**Ambienti di test e CI:**

563 

564```typescript theme={null}

565// Assicura un comportamento coerente in CI escludendo le impostazioni locali

566const result = query({

567 prompt: "Run tests",

568 options: {

569 settingSources: ["project"], // Solo impostazioni condivise dal team

570 permissionMode: "bypassPermissions"

571 }

572});

573```

574 

575**Applicazioni solo SDK:**

576 

577```typescript theme={null}

578// Definisci tutto a livello di programmazione.

579// Passa [] per rinunciare alle fonti di impostazioni del filesystem.

580const result = query({

581 prompt: "Review this PR",

582 options: {

583 settingSources: [],

584 agents: {

585 /* ... */

586 },

587 mcpServers: {

588 /* ... */

589 },

590 allowedTools: ["Read", "Grep", "Glob"]

591 }

592});

593```

594 

595**Caricamento delle istruzioni del progetto CLAUDE.md:**

596 

597```typescript theme={null}

598// Carica le impostazioni del progetto per includere i file CLAUDE.md

599const result = query({

600 prompt: "Add a new feature following project conventions",

601 options: {

602 systemPrompt: {

603 type: "preset",

604 preset: "claude_code" // Usa il prompt di sistema di Claude Code

605 },

606 settingSources: ["project"], // Carica CLAUDE.md dalla directory del progetto

607 allowedTools: ["Read", "Write", "Edit"]

608 }

609});

610```

611 

612#### Precedenza delle impostazioni

613 

614Quando più fonti vengono caricate, le impostazioni vengono unite con questa precedenza (più alta a più bassa):

615 

6161. Impostazioni locali (`.claude/settings.local.json`)

6172. Impostazioni del progetto (`.claude/settings.json`)

6183. Impostazioni dell'utente (`~/.claude/settings.json`)

619 

620Le opzioni programmatiche come `agents` e `allowedTools` sovrascrivono le impostazioni del filesystem utente, progetto e locale. Le impostazioni della politica gestita hanno precedenza sulle opzioni programmatiche.

621 

622### `PermissionMode`

623 

624```typescript theme={null}

625type PermissionMode =

626 | "default" // Comportamento di permesso standard

627 | "acceptEdits" // Auto-accetta le modifiche ai file

628 | "bypassPermissions" // Bypass di tutti i controlli di permesso

629 | "plan" // Modalità di pianificazione - nessuna esecuzione

630 | "dontAsk" // Non richiedere i permessi, nega se non pre-approvato

631 | "auto"; // Usa un classificatore di modello per approvare o negare ogni chiamata di tool

632```

633 

634### `CanUseTool`

635 

636Tipo di funzione di permesso personalizzato per controllare l'uso dei tool.

637 

638```typescript theme={null}

639type CanUseTool = (

640 toolName: string,

641 input: Record<string, unknown>,

642 options: {

643 signal: AbortSignal;

644 suggestions?: PermissionUpdate[];

645 blockedPath?: string;

646 decisionReason?: string;

647 toolUseID: string;

648 agentID?: string;

649 }

650) => Promise<PermissionResult>;

651```

652 

653| Opzione | Tipo | Descrizione |

654| :--------------- | :------------------------------------------- | :----------------------------------------------------------------------------------------------------- |

655| `signal` | `AbortSignal` | Segnalato se l'operazione deve essere interrotta |

656| `suggestions` | [`PermissionUpdate`](#permission-update)`[]` | Aggiornamenti di permesso suggeriti in modo che l'utente non venga richiesto di nuovo per questo tool |

657| `blockedPath` | `string` | Il percorso del file che ha attivato la richiesta di permesso, se applicabile |

658| `decisionReason` | `string` | Spiega perché questa richiesta di permesso è stata attivata |

659| `toolUseID` | `string` | Identificatore univoco per questa specifica chiamata di tool all'interno del messaggio dell'assistente |

660| `agentID` | `string` | Se in esecuzione all'interno di un sub-agente, l'ID del sub-agente |

661 

662### `PermissionResult`

663 

664Risultato di un controllo di permesso.

665 

666```typescript theme={null}

667type PermissionResult =

668 | {

669 behavior: "allow";

670 updatedInput?: Record<string, unknown>;

671 updatedPermissions?: PermissionUpdate[];

672 toolUseID?: string;

673 }

674 | {

675 behavior: "deny";

676 message: string;

677 interrupt?: boolean;

678 toolUseID?: string;

679 };

680```

681 

682### `ToolConfig`

683 

684Configurazione per il comportamento dei tool incorporati.

685 

686```typescript theme={null}

687type ToolConfig = {

688 askUserQuestion?: {

689 previewFormat?: "markdown" | "html";

690 };

691};

692```

693 

694| Campo | Tipo | Descrizione |

695| :------------------------------ | :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

696| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Acconsente al campo `preview` su [`AskUserQuestion`](/it/agent-sdk/user-input#question-format) opzioni e imposta il suo formato di contenuto. Se non impostato, Claude non emette anteprime |

697 

698### `McpServerConfig`

699 

700Configurazione per i server MCP.

701 

702```typescript theme={null}

703type McpServerConfig =

704 | McpStdioServerConfig

705 | McpSSEServerConfig

706 | McpHttpServerConfig

707 | McpSdkServerConfigWithInstance;

708```

709 

710#### `McpStdioServerConfig`

711 

712```typescript theme={null}

713type McpStdioServerConfig = {

714 type?: "stdio";

715 command: string;

716 args?: string[];

717 env?: Record<string, string>;

718};

719```

720 

721#### `McpSSEServerConfig`

722 

723```typescript theme={null}

724type McpSSEServerConfig = {

725 type: "sse";

726 url: string;

727 headers?: Record<string, string>;

728};

729```

730 

731#### `McpHttpServerConfig`

732 

733```typescript theme={null}

734type McpHttpServerConfig = {

735 type: "http";

736 url: string;

737 headers?: Record<string, string>;

738};

739```

740 

741#### `McpSdkServerConfigWithInstance`

742 

743```typescript theme={null}

744type McpSdkServerConfigWithInstance = {

745 type: "sdk";

746 name: string;

747 instance: McpServer;

748};

749```

750 

751#### `McpClaudeAIProxyServerConfig`

752 

753```typescript theme={null}

754type McpClaudeAIProxyServerConfig = {

755 type: "claudeai-proxy";

756 url: string;

757 id: string;

758};

759```

760 

761### `SdkPluginConfig`

762 

763Configurazione per il caricamento dei plugin nell'SDK.

764 

765```typescript theme={null}

766type SdkPluginConfig = {

767 type: "local";

768 path: string;

769};

770```

771 

772| Campo | Tipo | Descrizione |

773| :----- | :-------- | :---------------------------------------------------------------- |

774| `type` | `'local'` | Deve essere `'local'` (attualmente supportati solo plugin locali) |

775| `path` | `string` | Percorso assoluto o relativo alla directory del plugin |

776 

777**Esempio:**

778 

779```typescript theme={null}

780plugins: [

781 { type: "local", path: "./my-plugin" },

782 { type: "local", path: "/absolute/path/to/plugin" }

783];

784```

785 

786Per informazioni complete sulla creazione e l'uso dei plugin, vedi [Plugins](/it/agent-sdk/plugins).

787 

788## Tipi di messaggio

789 

790### `SDKMessage`

791 

792Tipo di unione di tutti i possibili messaggi restituiti dalla query.

793 

794```typescript theme={null}

795type SDKMessage =

796 | SDKAssistantMessage

797 | SDKUserMessage

798 | SDKUserMessageReplay

799 | SDKResultMessage

800 | SDKSystemMessage

801 | SDKPartialAssistantMessage

802 | SDKCompactBoundaryMessage

803 | SDKStatusMessage

804 | SDKLocalCommandOutputMessage

805 | SDKHookStartedMessage

806 | SDKHookProgressMessage

807 | SDKHookResponseMessage

808 | SDKPluginInstallMessage

809 | SDKToolProgressMessage

810 | SDKAuthStatusMessage

811 | SDKTaskNotificationMessage

812 | SDKTaskStartedMessage

813 | SDKTaskProgressMessage

814 | SDKTaskUpdatedMessage

815 | SDKFilesPersistedEvent

816 | SDKToolUseSummaryMessage

817 | SDKRateLimitEvent

818 | SDKPromptSuggestionMessage;

819```

820 

821### `SDKAssistantMessage`

822 

823Messaggio di risposta dell'assistente.

824 

825```typescript theme={null}

826type SDKAssistantMessage = {

827 type: "assistant";

828 uuid: UUID;

829 session_id: string;

830 message: BetaMessage; // Dall'SDK Anthropic

831 parent_tool_use_id: string | null;

832 error?: SDKAssistantMessageError;

833};

834```

835 

836Il campo `message` è un [`BetaMessage`](https://platform.claude.com/docs/it/api/messages/create) dall'SDK Anthropic. Include campi come `id`, `content`, `model`, `stop_reason` e `usage`.

837 

838`SDKAssistantMessageError` è uno di: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'billing_error'`, `'rate_limit'`, `'invalid_request'`, `'server_error'`, `'max_output_tokens'`, o `'unknown'`.

839 

840### `SDKUserMessage`

841 

842Messaggio di input dell'utente.

843 

844```typescript theme={null}

845type SDKUserMessage = {

846 type: "user";

847 uuid?: UUID;

848 session_id: string;

849 message: MessageParam; // Dall'SDK Anthropic

850 parent_tool_use_id: string | null;

851 isSynthetic?: boolean;

852 shouldQuery?: boolean;

853 tool_use_result?: unknown;

854 origin?: SDKMessageOrigin;

855};

856```

857 

858Imposta `shouldQuery` a `false` per aggiungere il messaggio alla trascrizione senza attivare un turno dell'assistente. Il messaggio viene mantenuto e unito al prossimo messaggio utente che attiva un turno. Usa questo per iniettare contesto, come l'output di un comando che hai eseguito fuori banda, senza spendere una chiamata di modello su di esso.

859 

860### `SDKUserMessageReplay`

861 

862Messaggio utente riprodotto con UUID obbligatorio.

863 

864```typescript theme={null}

865type SDKUserMessageReplay = {

866 type: "user";

867 uuid: UUID;

868 session_id: string;

869 message: MessageParam;

870 parent_tool_use_id: string | null;

871 isSynthetic?: boolean;

872 tool_use_result?: unknown;

873 origin?: SDKMessageOrigin;

874 isReplay: true;

875};

876```

877 

878### `SDKResultMessage`

879 

880Messaggio di risultato finale.

881 

882```typescript theme={null}

883type SDKResultMessage =

884 | {

885 type: "result";

886 subtype: "success";

887 uuid: UUID;

888 session_id: string;

889 duration_ms: number;

890 duration_api_ms: number;

891 is_error: boolean;

892 num_turns: number;

893 result: string;

894 stop_reason: string | null;

895 total_cost_usd: number;

896 usage: NonNullableUsage;

897 modelUsage: { [modelName: string]: ModelUsage };

898 permission_denials: SDKPermissionDenial[];

899 structured_output?: unknown;

900 deferred_tool_use?: { id: string; name: string; input: Record<string, unknown> };

901 origin?: SDKMessageOrigin;

902 }

903 | {

904 type: "result";

905 subtype:

906 | "error_max_turns"

907 | "error_during_execution"

908 | "error_max_budget_usd"

909 | "error_max_structured_output_retries";

910 uuid: UUID;

911 session_id: string;

912 duration_ms: number;

913 duration_api_ms: number;

914 is_error: boolean;

915 num_turns: number;

916 stop_reason: string | null;

917 total_cost_usd: number;

918 usage: NonNullableUsage;

919 modelUsage: { [modelName: string]: ModelUsage };

920 permission_denials: SDKPermissionDenial[];

921 errors: string[];

922 origin?: SDKMessageOrigin;

923 };

924```

925 

926Il campo `origin` inoltro l'[`SDKMessageOrigin`](#sdkmessageorigin) del messaggio utente che ha attivato questo risultato. Quando un'attività in background finisce e l'SDK inietta un turno di follow-up sintetico, il `SDKResultMessage` risultante contiene `origin: { kind: "task-notification" }`. Controlla questo campo per distinguere i risultati che rispondono al tuo prompt dai risultati emessi per i follow-up di attività in background, in modo da poter instradare o sopprimere questi ultimi. Il campo è assente per i risultati emessi prima di qualsiasi turno utente, come gli errori di avvio.

927 

928Quando un hook `PreToolUse` restituisce `permissionDecision: "defer"`, il risultato ha `stop_reason: "tool_deferred"` e `deferred_tool_use` contiene l'`id`, il `name` e l'`input` del tool in sospeso. Leggi questo campo per visualizzare la richiesta nella tua interfaccia utente, quindi riprendi con lo stesso `session_id` per continuare. Vedi [Rinvia una chiamata di tool per dopo](/it/hooks#defer-a-tool-call-for-later) per il percorso completo.

929 

930### `SDKSystemMessage`

931 

932Messaggio di inizializzazione del sistema.

933 

934```typescript theme={null}

935type SDKSystemMessage = {

936 type: "system";

937 subtype: "init";

938 uuid: UUID;

939 session_id: string;

940 agents?: string[];

941 apiKeySource: ApiKeySource;

942 betas?: string[];

943 claude_code_version: string;

944 cwd: string;

945 tools: string[];

946 mcp_servers: {

947 name: string;

948 status: string;

949 }[];

950 model: string;

951 permissionMode: PermissionMode;

952 slash_commands: string[];

953 output_style: string;

954 skills: string[];

955 plugins: { name: string; path: string }[];

956};

957```

958 

959### `SDKPartialAssistantMessage`

960 

961Messaggio parziale di streaming (solo quando `includePartialMessages` è true).

962 

963```typescript theme={null}

964type SDKPartialAssistantMessage = {

965 type: "stream_event";

966 event: BetaRawMessageStreamEvent; // Dall'SDK Anthropic

967 parent_tool_use_id: string | null;

968 uuid: UUID;

969 session_id: string;

970};

971```

972 

973### `SDKCompactBoundaryMessage`

974 

975Messaggio che indica un limite di compattazione della conversazione.

976 

977```typescript theme={null}

978type SDKCompactBoundaryMessage = {

979 type: "system";

980 subtype: "compact_boundary";

981 uuid: UUID;

982 session_id: string;

983 compact_metadata: {

984 trigger: "manual" | "auto";

985 pre_tokens: number;

986 };

987};

988```

989 

990### `SDKPluginInstallMessage`

991 

992Evento di progresso dell'installazione del plugin. Emesso quando [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/it/env-vars) è impostato, in modo che la tua applicazione Agent SDK possa tracciare l'installazione del plugin del marketplace prima del primo turno. Gli stati `started` e `completed` racchiudono l'installazione complessiva. Gli stati `installed` e `failed` segnalano i singoli marketplace e includono `name`.

993 

994```typescript theme={null}

995type SDKPluginInstallMessage = {

996 type: "system";

997 subtype: "plugin_install";

998 status: "started" | "installed" | "failed" | "completed";

999 name?: string;

1000 error?: string;

1001 uuid: UUID;

1002 session_id: string;

1003};

1004```

1005 

1006### `SDKPermissionDenial`

1007 

1008Informazioni su un uso di tool negato.

1009 

1010```typescript theme={null}

1011type SDKPermissionDenial = {

1012 tool_name: string;

1013 tool_use_id: string;

1014 tool_input: Record<string, unknown>;

1015};

1016```

1017 

1018### `SDKMessageOrigin`

1019 

1020Provenienza di un messaggio con ruolo utente. Questo appare come `origin` su [`SDKUserMessage`](#sdkusermessage) e viene inoltrato al corrispondente [`SDKResultMessage`](#sdkresultmessage) in modo da poter dire cosa ha attivato un determinato turno.

1021 

1022```typescript theme={null}

1023type SDKMessageOrigin =

1024 | { kind: "human" }

1025 | { kind: "channel"; server: string }

1026 | { kind: "peer"; from: string; name?: string }

1027 | { kind: "task-notification" }

1028 | { kind: "coordinator" };

1029```

1030 

1031| `kind` | Significato |

1032| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1033| `human` | Input diretto dall'utente finale. Sui messaggi utente, un `origin` assente significa anche input umano. |

1034| `channel` | Messaggio in arrivo su un [canale](/it/channels). `server` è il nome del server MCP di origine. |

1035| `peer` | Messaggio da un'altra sessione di agente tramite `SendMessage`. `from` è l'indirizzo del mittente; `name` è il nome visualizzato del mittente quando disponibile. |

1036| `task-notification` | Turno sintetico iniettato dopo il completamento di un'attività in background. Vedi [`SDKTaskNotificationMessage`](#sdktasknotificationmessage). |

1037| `coordinator` | Messaggio da un coordinatore di team in un [team di agenti](/it/agent-teams). |

1038 

1039## Tipi di hook

1040 

1041Per una guida completa sull'uso degli hook con esempi e pattern comuni, vedi la [guida Hooks](/it/agent-sdk/hooks).

1042 

1043### `HookEvent`

1044 

1045Eventi hook disponibili.

1046 

1047```typescript theme={null}

1048type HookEvent =

1049 | "PreToolUse"

1050 | "PostToolUse"

1051 | "PostToolUseFailure"

1052 | "PostToolBatch"

1053 | "Notification"

1054 | "UserPromptSubmit"

1055 | "SessionStart"

1056 | "SessionEnd"

1057 | "Stop"

1058 | "SubagentStart"

1059 | "SubagentStop"

1060 | "PreCompact"

1061 | "PermissionRequest"

1062 | "Setup"

1063 | "TeammateIdle"

1064 | "TaskCompleted"

1065 | "ConfigChange"

1066 | "WorktreeCreate"

1067 | "WorktreeRemove";

1068```

1069 

1070### `HookCallback`

1071 

1072Tipo di funzione callback hook.

1073 

1074```typescript theme={null}

1075type HookCallback = (

1076 input: HookInput, // Unione di tutti i tipi di input hook

1077 toolUseID: string | undefined,

1078 options: { signal: AbortSignal }

1079) => Promise<HookJSONOutput>;

1080```

1081 

1082### `HookCallbackMatcher`

1083 

1084Configurazione hook con matcher opzionale.

1085 

1086```typescript theme={null}

1087interface HookCallbackMatcher {

1088 matcher?: string;

1089 hooks: HookCallback[];

1090 timeout?: number; // Timeout in secondi per tutti gli hook in questo matcher

1091}

1092```

1093 

1094### `HookInput`

1095 

1096Tipo di unione di tutti i tipi di input hook.

1097 

1098```typescript theme={null}

1099type HookInput =

1100 | PreToolUseHookInput

1101 | PostToolUseHookInput

1102 | PostToolUseFailureHookInput

1103 | PostToolBatchHookInput

1104 | NotificationHookInput

1105 | UserPromptSubmitHookInput

1106 | SessionStartHookInput

1107 | SessionEndHookInput

1108 | StopHookInput

1109 | SubagentStartHookInput

1110 | SubagentStopHookInput

1111 | PreCompactHookInput

1112 | PermissionRequestHookInput

1113 | SetupHookInput

1114 | TeammateIdleHookInput

1115 | TaskCompletedHookInput

1116 | ConfigChangeHookInput

1117 | WorktreeCreateHookInput

1118 | WorktreeRemoveHookInput;

1119```

1120 

1121### `BaseHookInput`

1122 

1123Interfaccia base che tutti i tipi di input hook estendono.

1124 

1125```typescript theme={null}

1126type BaseHookInput = {

1127 session_id: string;

1128 transcript_path: string;

1129 cwd: string;

1130 permission_mode?: string;

1131 agent_id?: string;

1132 agent_type?: string;

1133};

1134```

1135 

1136#### `PreToolUseHookInput`

1137 

1138```typescript theme={null}

1139type PreToolUseHookInput = BaseHookInput & {

1140 hook_event_name: "PreToolUse";

1141 tool_name: string;

1142 tool_input: unknown;

1143 tool_use_id: string;

1144};

1145```

1146 

1147#### `PostToolUseHookInput`

1148 

1149```typescript theme={null}

1150type PostToolUseHookInput = BaseHookInput & {

1151 hook_event_name: "PostToolUse";

1152 tool_name: string;

1153 tool_input: unknown;

1154 tool_response: unknown;

1155 tool_use_id: string;

1156 duration_ms?: number;

1157};

1158```

1159 

1160#### `PostToolUseFailureHookInput`

1161 

1162```typescript theme={null}

1163type PostToolUseFailureHookInput = BaseHookInput & {

1164 hook_event_name: "PostToolUseFailure";

1165 tool_name: string;

1166 tool_input: unknown;

1167 tool_use_id: string;

1168 error: string;

1169 is_interrupt?: boolean;

1170 duration_ms?: number;

1171};

1172```

1173 

1174#### `PostToolBatchHookInput`

1175 

1176Si attiva una volta dopo che ogni chiamata di strumento in un batch è stata risolta, prima della prossima richiesta del modello. `tool_response` contiene il contenuto serializzato di `tool_result` che il modello vede; la forma differisce dall'oggetto strutturato `Output` di `PostToolUseHookInput`.

1177 

1178```typescript theme={null}

1179type PostToolBatchHookInput = BaseHookInput & {

1180 hook_event_name: "PostToolBatch";

1181 tool_calls: PostToolBatchToolCall[];

1182};

1183 

1184type PostToolBatchToolCall = {

1185 tool_name: string;

1186 tool_input: unknown;

1187 tool_use_id: string;

1188 tool_response?: unknown;

1189};

1190```

1191 

1192#### `NotificationHookInput`

1193 

1194```typescript theme={null}

1195type NotificationHookInput = BaseHookInput & {

1196 hook_event_name: "Notification";

1197 message: string;

1198 title?: string;

1199 notification_type: string;

1200};

1201```

1202 

1203#### `UserPromptSubmitHookInput`

1204 

1205```typescript theme={null}

1206type UserPromptSubmitHookInput = BaseHookInput & {

1207 hook_event_name: "UserPromptSubmit";

1208 prompt: string;

1209};

1210```

1211 

1212#### `SessionStartHookInput`

1213 

1214```typescript theme={null}

1215type SessionStartHookInput = BaseHookInput & {

1216 hook_event_name: "SessionStart";

1217 source: "startup" | "resume" | "clear" | "compact";

1218 agent_type?: string;

1219 model?: string;

1220};

1221```

1222 

1223#### `SessionEndHookInput`

1224 

1225```typescript theme={null}

1226type SessionEndHookInput = BaseHookInput & {

1227 hook_event_name: "SessionEnd";

1228 reason: ExitReason; // Stringa dall'array EXIT_REASONS

1229};

1230```

1231 

1232#### `StopHookInput`

1233 

1234```typescript theme={null}

1235type StopHookInput = BaseHookInput & {

1236 hook_event_name: "Stop";

1237 stop_hook_active: boolean;

1238 last_assistant_message?: string;

1239};

1240```

1241 

1242#### `SubagentStartHookInput`

1243 

1244```typescript theme={null}

1245type SubagentStartHookInput = BaseHookInput & {

1246 hook_event_name: "SubagentStart";

1247 agent_id: string;

1248 agent_type: string;

1249};

1250```

1251 

1252#### `SubagentStopHookInput`

1253 

1254```typescript theme={null}

1255type SubagentStopHookInput = BaseHookInput & {

1256 hook_event_name: "SubagentStop";

1257 stop_hook_active: boolean;

1258 agent_id: string;

1259 agent_transcript_path: string;

1260 agent_type: string;

1261 last_assistant_message?: string;

1262};

1263```

1264 

1265#### `PreCompactHookInput`

1266 

1267```typescript theme={null}

1268type PreCompactHookInput = BaseHookInput & {

1269 hook_event_name: "PreCompact";

1270 trigger: "manual" | "auto";

1271 custom_instructions: string | null;

1272};

1273```

1274 

1275#### `PermissionRequestHookInput`

1276 

1277```typescript theme={null}

1278type PermissionRequestHookInput = BaseHookInput & {

1279 hook_event_name: "PermissionRequest";

1280 tool_name: string;

1281 tool_input: unknown;

1282 permission_suggestions?: PermissionUpdate[];

1283};

1284```

1285 

1286#### `SetupHookInput`

1287 

1288```typescript theme={null}

1289type SetupHookInput = BaseHookInput & {

1290 hook_event_name: "Setup";

1291 trigger: "init" | "maintenance";

1292};

1293```

1294 

1295#### `TeammateIdleHookInput`

1296 

1297```typescript theme={null}

1298type TeammateIdleHookInput = BaseHookInput & {

1299 hook_event_name: "TeammateIdle";

1300 teammate_name: string;

1301 team_name: string;

1302};

1303```

1304 

1305#### `TaskCompletedHookInput`

1306 

1307```typescript theme={null}

1308type TaskCompletedHookInput = BaseHookInput & {

1309 hook_event_name: "TaskCompleted";

1310 task_id: string;

1311 task_subject: string;

1312 task_description?: string;

1313 teammate_name?: string;

1314 team_name?: string;

1315};

1316```

1317 

1318#### `ConfigChangeHookInput`

1319 

1320```typescript theme={null}

1321type ConfigChangeHookInput = BaseHookInput & {

1322 hook_event_name: "ConfigChange";

1323 source:

1324 | "user_settings"

1325 | "project_settings"

1326 | "local_settings"

1327 | "policy_settings"

1328 | "skills";

1329 file_path?: string;

1330};

1331```

1332 

1333#### `WorktreeCreateHookInput`

1334 

1335```typescript theme={null}

1336type WorktreeCreateHookInput = BaseHookInput & {

1337 hook_event_name: "WorktreeCreate";

1338 name: string;

1339};

1340```

1341 

1342#### `WorktreeRemoveHookInput`

1343 

1344```typescript theme={null}

1345type WorktreeRemoveHookInput = BaseHookInput & {

1346 hook_event_name: "WorktreeRemove";

1347 worktree_path: string;

1348};

1349```

1350 

1351### `HookJSONOutput`

1352 

1353Valore di ritorno hook.

1354 

1355```typescript theme={null}

1356type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

1357```

1358 

1359#### `AsyncHookJSONOutput`

1360 

1361```typescript theme={null}

1362type AsyncHookJSONOutput = {

1363 async: true;

1364 asyncTimeout?: number;

1365};

1366```

1367 

1368#### `SyncHookJSONOutput`

1369 

1370```typescript theme={null}

1371type SyncHookJSONOutput = {

1372 continue?: boolean;

1373 suppressOutput?: boolean;

1374 stopReason?: string;

1375 decision?: "approve" | "block";

1376 systemMessage?: string;

1377 reason?: string;

1378 hookSpecificOutput?:

1379 | {

1380 hookEventName: "PreToolUse";

1381 permissionDecision?: "allow" | "deny" | "ask" | "defer";

1382 permissionDecisionReason?: string;

1383 updatedInput?: Record<string, unknown>;

1384 additionalContext?: string;

1385 }

1386 | {

1387 hookEventName: "UserPromptSubmit";

1388 additionalContext?: string;

1389 }

1390 | {

1391 hookEventName: "SessionStart";

1392 additionalContext?: string;

1393 }

1394 | {

1395 hookEventName: "Setup";

1396 additionalContext?: string;

1397 }

1398 | {

1399 hookEventName: "SubagentStart";

1400 additionalContext?: string;

1401 }

1402 | {

1403 hookEventName: "PostToolUse";

1404 additionalContext?: string;

1405 updatedToolOutput?: unknown;

1406 /** @deprecated Usa `updatedToolOutput`, che funziona per tutti gli strumenti. */

1407 updatedMCPToolOutput?: unknown;

1408 }

1409 | {

1410 hookEventName: "PostToolUseFailure";

1411 additionalContext?: string;

1412 }

1413 | {

1414 hookEventName: "PostToolBatch";

1415 additionalContext?: string;

1416 }

1417 | {

1418 hookEventName: "Notification";

1419 additionalContext?: string;

1420 }

1421 | {

1422 hookEventName: "PermissionRequest";

1423 decision:

1424 | {

1425 behavior: "allow";

1426 updatedInput?: Record<string, unknown>;

1427 updatedPermissions?: PermissionUpdate[];

1428 }

1429 | {

1430 behavior: "deny";

1431 message?: string;

1432 interrupt?: boolean;

1433 };

1434 };

1435};

1436```

1437 

1438## Tipi di input dei tool

1439 

1440Documentazione degli schemi di input per tutti i tool Claude Code incorporati. Questi tipi vengono esportati da `@anthropic-ai/claude-agent-sdk` e possono essere usati per le interazioni dei tool type-safe.

1441 

1442### `ToolInputSchemas`

1443 

1444Unione di tutti i tipi di input dei tool, esportati da `@anthropic-ai/claude-agent-sdk`.

1445 

1446```typescript theme={null}

1447type ToolInputSchemas =

1448 | AgentInput

1449 | AskUserQuestionInput

1450 | BashInput

1451 | TaskOutputInput

1452 | EnterWorktreeInput

1453 | ExitPlanModeInput

1454 | FileEditInput

1455 | FileReadInput

1456 | FileWriteInput

1457 | GlobInput

1458 | GrepInput

1459 | ListMcpResourcesInput

1460 | McpInput

1461 | MonitorInput

1462 | NotebookEditInput

1463 | ReadMcpResourceInput

1464 | SubscribeMcpResourceInput

1465 | SubscribePollingInput

1466 | TaskStopInput

1467 | TodoWriteInput

1468 | UnsubscribeMcpResourceInput

1469 | UnsubscribePollingInput

1470 | WebFetchInput

1471 | WebSearchInput;

1472```

1473 

1474### Agent

1475 

1476**Nome del tool:** `Agent` (precedentemente `Task`, che è ancora accettato come alias)

1477 

1478```typescript theme={null}

1479type AgentInput = {

1480 description: string;

1481 prompt: string;

1482 subagent_type: string;

1483 model?: "sonnet" | "opus" | "haiku";

1484 resume?: string;

1485 run_in_background?: boolean;

1486 max_turns?: number;

1487 name?: string;

1488 team_name?: string;

1489 mode?: "acceptEdits" | "bypassPermissions" | "default" | "dontAsk" | "plan";

1490 isolation?: "worktree";

1491};

1492```

1493 

1494Avvia un nuovo agente per gestire compiti complessi e multi-step in modo autonomo.

1495 

1496### AskUserQuestion

1497 

1498**Nome del tool:** `AskUserQuestion`

1499 

1500```typescript theme={null}

1501type AskUserQuestionInput = {

1502 questions: Array<{

1503 question: string;

1504 header: string;

1505 options: Array<{ label: string; description: string; preview?: string }>;

1506 multiSelect: boolean;

1507 }>;

1508};

1509```

1510 

1511Pone domande di chiarimento all'utente durante l'esecuzione. Vedi [Gestisci approvazioni e input dell'utente](/it/agent-sdk/user-input#handle-clarifying-questions) per i dettagli di utilizzo.

1512 

1513### Bash

1514 

1515**Nome del tool:** `Bash`

1516 

1517```typescript theme={null}

1518type BashInput = {

1519 command: string;

1520 timeout?: number;

1521 description?: string;

1522 run_in_background?: boolean;

1523 dangerouslyDisableSandbox?: boolean;

1524};

1525```

1526 

1527Esegue comandi bash in una sessione shell persistente con timeout opzionale ed esecuzione in background.

1528 

1529### Monitor

1530 

1531**Nome del tool:** `Monitor`

1532 

1533```typescript theme={null}

1534type MonitorInput = {

1535 command: string;

1536 description: string;

1537 timeout_ms?: number;

1538 persistent?: boolean;

1539};

1540```

1541 

1542Esegue uno script di background e consegna ogni riga stdout a Claude come evento in modo che possa reagire senza polling. Imposta `persistent: true` per i watch di lunghezza della sessione come code tail. Monitor segue le stesse regole di permesso di Bash. Vedi il [riferimento del tool Monitor](/it/tools-reference#monitor-tool) per il comportamento e la disponibilità del provider.

1543 

1544### TaskOutput

1545 

1546**Nome del tool:** `TaskOutput`

1547 

1548```typescript theme={null}

1549type TaskOutputInput = {

1550 task_id: string;

1551 block: boolean;

1552 timeout: number;

1553};

1554```

1555 

1556Recupera l'output da un'attività di background in esecuzione o completata.

1557 

1558### Edit

1559 

1560**Nome del tool:** `Edit`

1561 

1562```typescript theme={null}

1563type FileEditInput = {

1564 file_path: string;

1565 old_string: string;

1566 new_string: string;

1567 replace_all?: boolean;

1568};

1569```

1570 

1571Esegue sostituzioni di stringhe esatte nei file.

1572 

1573### Read

1574 

1575**Nome del tool:** `Read`

1576 

1577```typescript theme={null}

1578type FileReadInput = {

1579 file_path: string;

1580 offset?: number;

1581 limit?: number;

1582 pages?: string;

1583};

1584```

1585 

1586Legge i file dal filesystem locale, inclusi testo, immagini, PDF e notebook Jupyter. Usa `pages` per gli intervalli di pagine PDF (ad esempio, `"1-5"`).

1587 

1588### Write

1589 

1590**Nome del tool:** `Write`

1591 

1592```typescript theme={null}

1593type FileWriteInput = {

1594 file_path: string;

1595 content: string;

1596};

1597```

1598 

1599Scrive un file nel filesystem locale, sovrascrivendo se esiste.

1600 

1601### Glob

1602 

1603**Nome del tool:** `Glob`

1604 

1605```typescript theme={null}

1606type GlobInput = {

1607 pattern: string;

1608 path?: string;

1609};

1610```

1611 

1612Corrispondenza di pattern di file veloce che funziona con qualsiasi dimensione di codebase.

1613 

1614### Grep

1615 

1616**Nome del tool:** `Grep`

1617 

1618```typescript theme={null}

1619type GrepInput = {

1620 pattern: string;

1621 path?: string;

1622 glob?: string;

1623 type?: string;

1624 output_mode?: "content" | "files_with_matches" | "count";

1625 "-i"?: boolean;

1626 "-n"?: boolean;

1627 "-B"?: number;

1628 "-A"?: number;

1629 "-C"?: number;

1630 context?: number;

1631 head_limit?: number;

1632 offset?: number;

1633 multiline?: boolean;

1634};

1635```

1636 

1637Potente tool di ricerca costruito su ripgrep con supporto regex.

1638 

1639### TaskStop

1640 

1641**Nome del tool:** `TaskStop`

1642 

1643```typescript theme={null}

1644type TaskStopInput = {

1645 task_id?: string;

1646 shell_id?: string; // Deprecato: usa task_id

1647};

1648```

1649 

1650Interrompe un'attività di background o shell in esecuzione per ID.

1651 

1652### NotebookEdit

1653 

1654**Nome del tool:** `NotebookEdit`

1655 

1656```typescript theme={null}

1657type NotebookEditInput = {

1658 notebook_path: string;

1659 cell_id?: string;

1660 new_source: string;

1661 cell_type?: "code" | "markdown";

1662 edit_mode?: "replace" | "insert" | "delete";

1663};

1664```

1665 

1666Modifica le celle nei file dei notebook Jupyter.

1667 

1668### WebFetch

1669 

1670**Nome del tool:** `WebFetch`

1671 

1672```typescript theme={null}

1673type WebFetchInput = {

1674 url: string;

1675 prompt: string;

1676};

1677```

1678 

1679Recupera il contenuto da un URL e lo elabora con un modello AI.

1680 

1681### WebSearch

1682 

1683**Nome del tool:** `WebSearch`

1684 

1685```typescript theme={null}

1686type WebSearchInput = {

1687 query: string;

1688 allowed_domains?: string[];

1689 blocked_domains?: string[];

1690};

1691```

1692 

1693Cerca il web e restituisce risultati formattati.

1694 

1695### TodoWrite

1696 

1697**Nome del tool:** `TodoWrite`

1698 

1699```typescript theme={null}

1700type TodoWriteInput = {

1701 todos: Array<{

1702 content: string;

1703 status: "pending" | "in_progress" | "completed";

1704 activeForm: string;

1705 }>;

1706};

1707```

1708 

1709Crea e gestisce un elenco di attività strutturato per il tracciamento del progresso.

1710 

1711### ExitPlanMode

1712 

1713**Nome del tool:** `ExitPlanMode`

1714 

1715```typescript theme={null}

1716type ExitPlanModeInput = {

1717 allowedPrompts?: Array<{

1718 tool: "Bash";

1719 prompt: string;

1720 }>;

1721};

1722```

1723 

1724Esce dalla modalità di pianificazione. Facoltativamente specifica i permessi basati su prompt necessari per implementare il piano.

1725 

1726### ListMcpResources

1727 

1728**Nome del tool:** `ListMcpResources`

1729 

1730```typescript theme={null}

1731type ListMcpResourcesInput = {

1732 server?: string;

1733};

1734```

1735 

1736Elenca le risorse MCP disponibili dai server connessi.

1737 

1738### ReadMcpResource

1739 

1740**Nome del tool:** `ReadMcpResource`

1741 

1742```typescript theme={null}

1743type ReadMcpResourceInput = {

1744 server: string;

1745 uri: string;

1746};

1747```

1748 

1749Legge una risorsa MCP specifica da un server.

1750 

1751### EnterWorktree

1752 

1753**Nome del tool:** `EnterWorktree`

1754 

1755```typescript theme={null}

1756type EnterWorktreeInput = {

1757 name?: string;

1758 path?: string;

1759};

1760```

1761 

1762Crea e entra in un worktree git temporaneo per il lavoro isolato. Passa `path` per passare a un worktree esistente del repository corrente invece di crearne uno nuovo. `name` e `path` si escludono a vicenda.

1763 

1764## Tipi di output dei tool

1765 

1766Documentazione degli schemi di output per tutti i tool Claude Code incorporati. Questi tipi vengono esportati da `@anthropic-ai/claude-agent-sdk` e rappresentano i dati di risposta effettivi restituiti da ogni tool.

1767 

1768### `ToolOutputSchemas`

1769 

1770Unione di tutti i tipi di output dei tool.

1771 

1772```typescript theme={null}

1773type ToolOutputSchemas =

1774 | AgentOutput

1775 | AskUserQuestionOutput

1776 | BashOutput

1777 | EnterWorktreeOutput

1778 | ExitPlanModeOutput

1779 | FileEditOutput

1780 | FileReadOutput

1781 | FileWriteOutput

1782 | GlobOutput

1783 | GrepOutput

1784 | ListMcpResourcesOutput

1785 | MonitorOutput

1786 | NotebookEditOutput

1787 | ReadMcpResourceOutput

1788 | TaskStopOutput

1789 | TodoWriteOutput

1790 | WebFetchOutput

1791 | WebSearchOutput;

1792```

1793 

1794### Agent

1795 

1796**Nome del tool:** `Agent` (precedentemente `Task`, che è ancora accettato come alias)

1797 

1798```typescript theme={null}

1799type AgentOutput =

1800 | {

1801 status: "completed";

1802 agentId: string;

1803 content: Array<{ type: "text"; text: string }>;

1804 totalToolUseCount: number;

1805 totalDurationMs: number;

1806 totalTokens: number;

1807 usage: {

1808 input_tokens: number;

1809 output_tokens: number;

1810 cache_creation_input_tokens: number | null;

1811 cache_read_input_tokens: number | null;

1812 server_tool_use: {

1813 web_search_requests: number;

1814 web_fetch_requests: number;

1815 } | null;

1816 service_tier: ("standard" | "priority" | "batch") | null;

1817 cache_creation: {

1818 ephemeral_1h_input_tokens: number;

1819 ephemeral_5m_input_tokens: number;

1820 } | null;

1821 };

1822 prompt: string;

1823 }

1824 | {

1825 status: "async_launched";

1826 agentId: string;

1827 description: string;

1828 prompt: string;

1829 outputFile: string;

1830 canReadOutputFile?: boolean;

1831 }

1832 | {

1833 status: "sub_agent_entered";

1834 description: string;

1835 message: string;

1836 };

1837```

1838 

1839Restituisce il risultato dal subagente. Discriminato sul campo `status`: `"completed"` per le attività finite, `"async_launched"` per le attività di background, e `"sub_agent_entered"` per i subagenti interattivi.

1840 

1841### AskUserQuestion

1842 

1843**Nome del tool:** `AskUserQuestion`

1844 

1845```typescript theme={null}

1846type AskUserQuestionOutput = {

1847 questions: Array<{

1848 question: string;

1849 header: string;

1850 options: Array<{ label: string; description: string; preview?: string }>;

1851 multiSelect: boolean;

1852 }>;

1853 answers: Record<string, string>;

1854};

1855```

1856 

1857Restituisce le domande poste e le risposte dell'utente.

1858 

1859### Bash

1860 

1861**Nome del tool:** `Bash`

1862 

1863```typescript theme={null}

1864type BashOutput = {

1865 stdout: string;

1866 stderr: string;

1867 rawOutputPath?: string;

1868 interrupted: boolean;

1869 isImage?: boolean;

1870 backgroundTaskId?: string;

1871 backgroundedByUser?: boolean;

1872 dangerouslyDisableSandbox?: boolean;

1873 returnCodeInterpretation?: string;

1874 structuredContent?: unknown[];

1875 persistedOutputPath?: string;

1876 persistedOutputSize?: number;

1877};

1878```

1879 

1880Restituisce l'output del comando con stdout/stderr divisi. I comandi di background includono un `backgroundTaskId`.

1881 

1882### Monitor

1883 

1884**Nome del tool:** `Monitor`

1885 

1886```typescript theme={null}

1887type MonitorOutput = {

1888 taskId: string;

1889 timeoutMs: number;

1890 persistent?: boolean;

1891};

1892```

1893 

1894Restituisce l'ID dell'attività di background per il monitor in esecuzione. Usa questo ID con `TaskStop` per annullare il watch in anticipo.

1895 

1896### Edit

1897 

1898**Nome del tool:** `Edit`

1899 

1900```typescript theme={null}

1901type FileEditOutput = {

1902 filePath: string;

1903 oldString: string;

1904 newString: string;

1905 originalFile: string;

1906 structuredPatch: Array<{

1907 oldStart: number;

1908 oldLines: number;

1909 newStart: number;

1910 newLines: number;

1911 lines: string[];

1912 }>;

1913 userModified: boolean;

1914 replaceAll: boolean;

1915 gitDiff?: {

1916 filename: string;

1917 status: "modified" | "added";

1918 additions: number;

1919 deletions: number;

1920 changes: number;

1921 patch: string;

1922 };

1923};

1924```

1925 

1926Restituisce il diff strutturato dell'operazione di modifica.

1927 

1928### Read

1929 

1930**Nome del tool:** `Read`

1931 

1932```typescript theme={null}

1933type FileReadOutput =

1934 | {

1935 type: "text";

1936 file: {

1937 filePath: string;

1938 content: string;

1939 numLines: number;

1940 startLine: number;

1941 totalLines: number;

1942 };

1943 }

1944 | {

1945 type: "image";

1946 file: {

1947 base64: string;

1948 type: "image/jpeg" | "image/png" | "image/gif" | "image/webp";

1949 originalSize: number;

1950 dimensions?: {

1951 originalWidth?: number;

1952 originalHeight?: number;

1953 displayWidth?: number;

1954 displayHeight?: number;

1955 };

1956 };

1957 }

1958 | {

1959 type: "notebook";

1960 file: {

1961 filePath: string;

1962 cells: unknown[];

1963 };

1964 }

1965 | {

1966 type: "pdf";

1967 file: {

1968 filePath: string;

1969 base64: string;

1970 originalSize: number;

1971 };

1972 }

1973 | {

1974 type: "parts";

1975 file: {

1976 filePath: string;

1977 originalSize: number;

1978 count: number;

1979 outputDir: string;

1980 };

1981 };

1982```

1983 

1984Restituisce il contenuto del file in un formato appropriato al tipo di file. Discriminato sul campo `type`.

1985 

1986### Write

1987 

1988**Nome del tool:** `Write`

1989 

1990```typescript theme={null}

1991type FileWriteOutput = {

1992 type: "create" | "update";

1993 filePath: string;

1994 content: string;

1995 structuredPatch: Array<{

1996 oldStart: number;

1997 oldLines: number;

1998 newStart: number;

1999 newLines: number;

2000 lines: string[];

2001 }>;

2002 originalFile: string | null;

2003 gitDiff?: {

2004 filename: string;

2005 status: "modified" | "added";

2006 additions: number;

2007 deletions: number;

2008 changes: number;

2009 patch: string;

2010 };

2011};

2012```

2013 

2014Restituisce il risultato della scrittura con informazioni sul diff strutturato.

2015 

2016### Glob

2017 

2018**Nome del tool:** `Glob`

2019 

2020```typescript theme={null}

2021type GlobOutput = {

2022 durationMs: number;

2023 numFiles: number;

2024 filenames: string[];

2025 truncated: boolean;

2026};

2027```

2028 

2029Restituisce i percorsi dei file che corrispondono al pattern glob, ordinati per tempo di modifica.

2030 

2031### Grep

2032 

2033**Nome del tool:** `Grep`

2034 

2035```typescript theme={null}

2036type GrepOutput = {

2037 mode?: "content" | "files_with_matches" | "count";

2038 numFiles: number;

2039 filenames: string[];

2040 content?: string;

2041 numLines?: number;

2042 numMatches?: number;

2043 appliedLimit?: number;

2044 appliedOffset?: number;

2045};

2046```

2047 

2048Restituisce i risultati della ricerca. La forma varia in base a `mode`: elenco di file, contenuto con corrispondenze o conteggi di corrispondenze.

2049 

2050### TaskStop

2051 

2052**Nome del tool:** `TaskStop`

2053 

2054```typescript theme={null}

2055type TaskStopOutput = {

2056 message: string;

2057 task_id: string;

2058 task_type: string;

2059 command?: string;

2060};

2061```

2062 

2063Restituisce la conferma dopo l'interruzione dell'attività di background.

2064 

2065### NotebookEdit

2066 

2067**Nome del tool:** `NotebookEdit`

2068 

2069```typescript theme={null}

2070type NotebookEditOutput = {

2071 new_source: string;

2072 cell_id?: string;

2073 cell_type: "code" | "markdown";

2074 language: string;

2075 edit_mode: string;

2076 error?: string;

2077 notebook_path: string;

2078 original_file: string;

2079 updated_file: string;

2080};

2081```

2082 

2083Restituisce il risultato della modifica del notebook con i contenuti del file originale e aggiornato.

2084 

2085### WebFetch

2086 

2087**Nome del tool:** `WebFetch`

2088 

2089```typescript theme={null}

2090type WebFetchOutput = {

2091 bytes: number;

2092 code: number;

2093 codeText: string;

2094 result: string;

2095 durationMs: number;

2096 url: string;

2097};

2098```

2099 

2100Restituisce il contenuto recuperato con lo stato HTTP e i metadati.

2101 

2102### WebSearch

2103 

2104**Nome del tool:** `WebSearch`

2105 

2106```typescript theme={null}

2107type WebSearchOutput = {

2108 query: string;

2109 results: Array<

2110 | {

2111 tool_use_id: string;

2112 content: Array<{ title: string; url: string }>;

2113 }

2114 | string

2115 >;

2116 durationSeconds: number;

2117};

2118```

2119 

2120Restituisce i risultati della ricerca dal web.

2121 

2122### TodoWrite

2123 

2124**Nome del tool:** `TodoWrite`

2125 

2126```typescript theme={null}

2127type TodoWriteOutput = {

2128 oldTodos: Array<{

2129 content: string;

2130 status: "pending" | "in_progress" | "completed";

2131 activeForm: string;

2132 }>;

2133 newTodos: Array<{

2134 content: string;

2135 status: "pending" | "in_progress" | "completed";

2136 activeForm: string;

2137 }>;

2138};

2139```

2140 

2141Restituisce gli elenchi di attività precedenti e aggiornati.

2142 

2143### ExitPlanMode

2144 

2145**Nome del tool:** `ExitPlanMode`

2146 

2147```typescript theme={null}

2148type ExitPlanModeOutput = {

2149 plan: string | null;

2150 isAgent: boolean;

2151 filePath?: string;

2152 hasTaskTool?: boolean;

2153 awaitingLeaderApproval?: boolean;

2154 requestId?: string;

2155};

2156```

2157 

2158Restituisce lo stato del piano dopo l'uscita dalla modalità di pianificazione.

2159 

2160### ListMcpResources

2161 

2162**Nome del tool:** `ListMcpResources`

2163 

2164```typescript theme={null}

2165type ListMcpResourcesOutput = Array<{

2166 uri: string;

2167 name: string;

2168 mimeType?: string;

2169 description?: string;

2170 server: string;

2171}>;

2172```

2173 

2174Restituisce un array di risorse MCP disponibili.

2175 

2176### ReadMcpResource

2177 

2178**Nome del tool:** `ReadMcpResource`

2179 

2180```typescript theme={null}

2181type ReadMcpResourceOutput = {

2182 contents: Array<{

2183 uri: string;

2184 mimeType?: string;

2185 text?: string;

2186 }>;

2187};

2188```

2189 

2190Restituisce i contenuti della risorsa MCP richiesta.

2191 

2192### EnterWorktree

2193 

2194**Nome del tool:** `EnterWorktree`

2195 

2196```typescript theme={null}

2197type EnterWorktreeOutput = {

2198 worktreePath: string;

2199 worktreeBranch?: string;

2200 message: string;

2201};

2202```

2203 

2204Restituisce le informazioni sul worktree git.

2205 

2206## Tipi di permesso

2207 

2208### `PermissionUpdate`

2209 

2210Operazioni per l'aggiornamento dei permessi.

2211 

2212```typescript theme={null}

2213type PermissionUpdate =

2214 | {

2215 type: "addRules";

2216 rules: PermissionRuleValue[];

2217 behavior: PermissionBehavior;

2218 destination: PermissionUpdateDestination;

2219 }

2220 | {

2221 type: "replaceRules";

2222 rules: PermissionRuleValue[];

2223 behavior: PermissionBehavior;

2224 destination: PermissionUpdateDestination;

2225 }

2226 | {

2227 type: "removeRules";

2228 rules: PermissionRuleValue[];

2229 behavior: PermissionBehavior;

2230 destination: PermissionUpdateDestination;

2231 }

2232 | {

2233 type: "setMode";

2234 mode: PermissionMode;

2235 destination: PermissionUpdateDestination;

2236 }

2237 | {

2238 type: "addDirectories";

2239 directories: string[];

2240 destination: PermissionUpdateDestination;

2241 }

2242 | {

2243 type: "removeDirectories";

2244 directories: string[];

2245 destination: PermissionUpdateDestination;

2246 };

2247```

2248 

2249### `PermissionBehavior`

2250 

2251```typescript theme={null}

2252type PermissionBehavior = "allow" | "deny" | "ask";

2253```

2254 

2255### `PermissionUpdateDestination`

2256 

2257```typescript theme={null}

2258type PermissionUpdateDestination =

2259 | "userSettings" // Impostazioni globali dell'utente

2260 | "projectSettings" // Impostazioni del progetto per directory

2261 | "localSettings" // Impostazioni locali gitignorate

2262 | "session" // Solo sessione corrente

2263 | "cliArg"; // Argomento CLI

2264```

2265 

2266### `PermissionRuleValue`

2267 

2268```typescript theme={null}

2269type PermissionRuleValue = {

2270 toolName: string;

2271 ruleContent?: string;

2272};

2273```

2274 

2275## Altri tipi

2276 

2277### `ApiKeySource`

2278 

2279```typescript theme={null}

2280type ApiKeySource = "user" | "project" | "org" | "temporary" | "oauth";

2281```

2282 

2283### `SdkBeta`

2284 

2285Funzioni beta disponibili che possono essere abilitate tramite l'opzione `betas`. Vedi [Intestazioni beta](https://platform.claude.com/docs/it/api/beta-headers) per ulteriori informazioni.

2286 

2287```typescript theme={null}

2288type SdkBeta = "context-1m-2025-08-07";

2289```

2290 

2291<Warning>

2292 La beta `context-1m-2025-08-07` è ritirata a partire dal 30 aprile 2026. Passare questo valore con Claude Sonnet 4.5 o Sonnet 4 non ha effetto, e le richieste che superano la finestra di contesto standard di 200k token restituiscono un errore. Per usare una finestra di contesto di 1M token, esegui la migrazione a [Claude Sonnet 4.6, Claude Opus 4.6, o Claude Opus 4.7](https://platform.claude.com/docs/it/about-claude/models/overview), che includono 1M di contesto ai prezzi standard senza intestazione beta richiesta.

2293</Warning>

2294 

2295### `SlashCommand`

2296 

2297Informazioni su un comando slash disponibile.

2298 

2299```typescript theme={null}

2300type SlashCommand = {

2301 name: string;

2302 description: string;

2303 argumentHint: string;

2304 aliases?: string[];

2305};

2306```

2307 

2308### `ModelInfo`

2309 

2310Informazioni su un modello disponibile.

2311 

2312```typescript theme={null}

2313type ModelInfo = {

2314 value: string;

2315 displayName: string;

2316 description: string;

2317 supportsEffort?: boolean;

2318 supportedEffortLevels?: ("low" | "medium" | "high" | "xhigh" | "max")[];

2319 supportsAdaptiveThinking?: boolean;

2320 supportsFastMode?: boolean;

2321};

2322```

2323 

2324### `AgentInfo`

2325 

2326Informazioni su un subagente disponibile che può essere invocato tramite il tool Agent.

2327 

2328```typescript theme={null}

2329type AgentInfo = {

2330 name: string;

2331 description: string;

2332 model?: string;

2333};

2334```

2335 

2336| Campo | Tipo | Descrizione |

2337| :------------ | :-------------------- | :---------------------------------------------------------------------------------- |

2338| `name` | `string` | Identificatore del tipo di agente (ad esempio, `"Explore"`, `"general-purpose"`) |

2339| `description` | `string` | Descrizione di quando usare questo agente |

2340| `model` | `string \| undefined` | Alias del modello che questo agente usa. Se omesso, eredita il modello del genitore |

2341 

2342### `McpServerStatus`

2343 

2344Stato di un server MCP connesso.

2345 

2346```typescript theme={null}

2347type McpServerStatus = {

2348 name: string;

2349 status: "connected" | "failed" | "needs-auth" | "pending" | "disabled";

2350 serverInfo?: {

2351 name: string;

2352 version: string;

2353 };

2354 error?: string;

2355 config?: McpServerStatusConfig;

2356 scope?: string;

2357 tools?: {

2358 name: string;

2359 description?: string;

2360 annotations?: {

2361 readOnly?: boolean;

2362 destructive?: boolean;

2363 openWorld?: boolean;

2364 };

2365 }[];

2366};

2367```

2368 

2369### `McpServerStatusConfig`

2370 

2371La configurazione di un server MCP come segnalato da `mcpServerStatus()`. Questa è l'unione di tutti i tipi di trasporto del server MCP.

2372 

2373```typescript theme={null}

2374type McpServerStatusConfig =

2375 | McpStdioServerConfig

2376 | McpSSEServerConfig

2377 | McpHttpServerConfig

2378 | McpSdkServerConfig

2379 | McpClaudeAIProxyServerConfig;

2380```

2381 

2382Vedi [`McpServerConfig`](#mcp-server-config) per i dettagli su ogni tipo di trasporto.

2383 

2384### `AccountInfo`

2385 

2386Informazioni sull'account per l'utente autenticato.

2387 

2388```typescript theme={null}

2389type AccountInfo = {

2390 email?: string;

2391 organization?: string;

2392 subscriptionType?: string;

2393 tokenSource?: string;

2394 apiKeySource?: string;

2395};

2396```

2397 

2398### `ModelUsage`

2399 

2400Statistiche di utilizzo per modello restituite nei messaggi di risultato. Il valore `costUSD` è una stima lato client. Vedi [Traccia costo e utilizzo](/it/agent-sdk/cost-tracking) per le avvertenze di fatturazione.

2401 

2402```typescript theme={null}

2403type ModelUsage = {

2404 inputTokens: number;

2405 outputTokens: number;

2406 cacheReadInputTokens: number;

2407 cacheCreationInputTokens: number;

2408 webSearchRequests: number;

2409 costUSD: number;

2410 contextWindow: number;

2411 maxOutputTokens: number;

2412};

2413```

2414 

2415### `ConfigScope`

2416 

2417```typescript theme={null}

2418type ConfigScope = "local" | "user" | "project";

2419```

2420 

2421### `NonNullableUsage`

2422 

2423Una versione di [`Usage`](#usage) con tutti i campi nullable resi non-nullable.

2424 

2425```typescript theme={null}

2426type NonNullableUsage = {

2427 [K in keyof Usage]: NonNullable<Usage[K]>;

2428};

2429```

2430 

2431### `Usage`

2432 

2433Statistiche di utilizzo dei token (da `@anthropic-ai/sdk`).

2434 

2435```typescript theme={null}

2436type Usage = {

2437 input_tokens: number | null;

2438 output_tokens: number | null;

2439 cache_creation_input_tokens?: number | null;

2440 cache_read_input_tokens?: number | null;

2441};

2442```

2443 

2444### `CallToolResult`

2445 

2446Tipo di risultato del tool MCP (da `@modelcontextprotocol/sdk/types.js`).

2447 

2448```typescript theme={null}

2449type CallToolResult = {

2450 content: Array<{

2451 type: "text" | "image" | "resource";

2452 // I campi aggiuntivi variano in base al tipo

2453 }>;

2454 isError?: boolean;

2455};

2456```

2457 

2458### `ThinkingConfig`

2459 

2460Controlla il comportamento di pensiero/ragionamento di Claude. Ha precedenza sul deprecato `maxThinkingTokens`.

2461 

2462```typescript theme={null}

2463type ThinkingConfig =

2464 | { type: "adaptive" } // Il modello determina quando e quanto ragionare (Opus 4.6+)

2465 | { type: "enabled"; budgetTokens?: number } // Budget di token di pensiero fisso

2466 | { type: "disabled" }; // Nessun pensiero esteso

2467```

2468 

2469### `SpawnedProcess`

2470 

2471Interfaccia per la generazione di processi personalizzati (usata con l'opzione `spawnClaudeCodeProcess`). `ChildProcess` soddisfa già questa interfaccia.

2472 

2473```typescript theme={null}

2474interface SpawnedProcess {

2475 stdin: Writable;

2476 stdout: Readable;

2477 readonly killed: boolean;

2478 readonly exitCode: number | null;

2479 kill(signal: NodeJS.Signals): boolean;

2480 on(

2481 event: "exit",

2482 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2483 ): void;

2484 on(event: "error", listener: (error: Error) => void): void;

2485 once(

2486 event: "exit",

2487 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2488 ): void;

2489 once(event: "error", listener: (error: Error) => void): void;

2490 off(

2491 event: "exit",

2492 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2493 ): void;

2494 off(event: "error", listener: (error: Error) => void): void;

2495}

2496```

2497 

2498### `SpawnOptions`

2499 

2500Opzioni passate alla funzione di generazione personalizzata.

2501 

2502```typescript theme={null}

2503interface SpawnOptions {

2504 command: string;

2505 args: string[];

2506 cwd?: string;

2507 env: Record<string, string | undefined>;

2508 signal: AbortSignal;

2509}

2510```

2511 

2512### `McpSetServersResult`

2513 

2514Risultato di un'operazione `setMcpServers()`.

2515 

2516```typescript theme={null}

2517type McpSetServersResult = {

2518 added: string[];

2519 removed: string[];

2520 errors: Record<string, string>;

2521};

2522```

2523 

2524### `RewindFilesResult`

2525 

2526Risultato di un'operazione `rewindFiles()`.

2527 

2528```typescript theme={null}

2529type RewindFilesResult = {

2530 canRewind: boolean;

2531 error?: string;

2532 filesChanged?: string[];

2533 insertions?: number;

2534 deletions?: number;

2535};

2536```

2537 

2538### `SDKStatusMessage`

2539 

2540Messaggio di aggiornamento dello stato (ad esempio, compattazione).

2541 

2542```typescript theme={null}

2543type SDKStatusMessage = {

2544 type: "system";

2545 subtype: "status";

2546 status: "compacting" | null;

2547 permissionMode?: PermissionMode;

2548 uuid: UUID;

2549 session_id: string;

2550};

2551```

2552 

2553### `SDKTaskNotificationMessage`

2554 

2555Notifica quando un'attività di background si completa, fallisce o viene interrotta. Le attività di background includono i comandi Bash `run_in_background`, i watch [Monitor](#monitor) e i subagenti di background.

2556 

2557```typescript theme={null}

2558type SDKTaskNotificationMessage = {

2559 type: "system";

2560 subtype: "task_notification";

2561 task_id: string;

2562 tool_use_id?: string;

2563 status: "completed" | "failed" | "stopped";

2564 output_file: string;

2565 summary: string;

2566 usage?: {

2567 total_tokens: number;

2568 tool_uses: number;

2569 duration_ms: number;

2570 };

2571 uuid: UUID;

2572 session_id: string;

2573};

2574```

2575 

2576### `SDKToolUseSummaryMessage`

2577 

2578Riepilogo dell'uso dei tool in una conversazione.

2579 

2580```typescript theme={null}

2581type SDKToolUseSummaryMessage = {

2582 type: "tool_use_summary";

2583 summary: string;

2584 preceding_tool_use_ids: string[];

2585 uuid: UUID;

2586 session_id: string;

2587};

2588```

2589 

2590### `SDKHookStartedMessage`

2591 

2592Emesso quando un hook inizia l'esecuzione.

2593 

2594```typescript theme={null}

2595type SDKHookStartedMessage = {

2596 type: "system";

2597 subtype: "hook_started";

2598 hook_id: string;

2599 hook_name: string;

2600 hook_event: string;

2601 uuid: UUID;

2602 session_id: string;

2603};

2604```

2605 

2606### `SDKHookProgressMessage`

2607 

2608Emesso mentre un hook è in esecuzione, con output stdout/stderr.

2609 

2610```typescript theme={null}

2611type SDKHookProgressMessage = {

2612 type: "system";

2613 subtype: "hook_progress";

2614 hook_id: string;

2615 hook_name: string;

2616 hook_event: string;

2617 stdout: string;

2618 stderr: string;

2619 output: string;

2620 uuid: UUID;

2621 session_id: string;

2622};

2623```

2624 

2625### `SDKHookResponseMessage`

2626 

2627Emesso quando un hook finisce l'esecuzione.

2628 

2629```typescript theme={null}

2630type SDKHookResponseMessage = {

2631 type: "system";

2632 subtype: "hook_response";

2633 hook_id: string;

2634 hook_name: string;

2635 hook_event: string;

2636 output: string;

2637 stdout: string;

2638 stderr: string;

2639 exit_code?: number;

2640 outcome: "success" | "error" | "cancelled";

2641 uuid: UUID;

2642 session_id: string;

2643};

2644```

2645 

2646### `SDKToolProgressMessage`

2647 

2648Emesso periodicamente mentre un tool è in esecuzione per indicare il progresso.

2649 

2650```typescript theme={null}

2651type SDKToolProgressMessage = {

2652 type: "tool_progress";

2653 tool_use_id: string;

2654 tool_name: string;

2655 parent_tool_use_id: string | null;

2656 elapsed_time_seconds: number;

2657 task_id?: string;

2658 uuid: UUID;

2659 session_id: string;

2660};

2661```

2662 

2663### `SDKAuthStatusMessage`

2664 

2665Emesso durante i flussi di autenticazione.

2666 

2667```typescript theme={null}

2668type SDKAuthStatusMessage = {

2669 type: "auth_status";

2670 isAuthenticating: boolean;

2671 output: string[];

2672 error?: string;

2673 uuid: UUID;

2674 session_id: string;

2675};

2676```

2677 

2678### `SDKTaskStartedMessage`

2679 

2680Emesso quando un'attività di background inizia. Il campo `task_type` è `"local_bash"` per i comandi Bash di background e i watch [Monitor](#monitor), `"local_agent"` per i subagenti, o `"remote_agent"`.

2681 

2682```typescript theme={null}

2683type SDKTaskStartedMessage = {

2684 type: "system";

2685 subtype: "task_started";

2686 task_id: string;

2687 tool_use_id?: string;

2688 description: string;

2689 task_type?: string;

2690 uuid: UUID;

2691 session_id: string;

2692};

2693```

2694 

2695### `SDKTaskProgressMessage`

2696 

2697Emesso periodicamente mentre un'attività di background è in esecuzione.

2698 

2699```typescript theme={null}

2700type SDKTaskProgressMessage = {

2701 type: "system";

2702 subtype: "task_progress";

2703 task_id: string;

2704 tool_use_id?: string;

2705 description: string;

2706 usage: {

2707 total_tokens: number;

2708 tool_uses: number;

2709 duration_ms: number;

2710 };

2711 last_tool_name?: string;

2712 uuid: UUID;

2713 session_id: string;

2714};

2715```

2716 

2717### `SDKTaskUpdatedMessage`

2718 

2719Emesso quando lo stato di un'attività di background cambia, ad esempio quando passa da `running` a `completed`. Unisci `patch` nella tua mappa attività locale con chiave `task_id`. Il campo `end_time` è un timestamp Unix epoch in millisecondi, confrontabile con `Date.now()`.

2720 

2721```typescript theme={null}

2722type SDKTaskUpdatedMessage = {

2723 type: "system";

2724 subtype: "task_updated";

2725 task_id: string;

2726 patch: {

2727 status?: "pending" | "running" | "completed" | "failed" | "killed";

2728 description?: string;

2729 end_time?: number;

2730 total_paused_ms?: number;

2731 error?: string;

2732 is_backgrounded?: boolean;

2733 };

2734 uuid: UUID;

2735 session_id: string;

2736};

2737```

2738 

2739### `SDKFilesPersistedEvent`

2740 

2741Emesso quando i checkpoint dei file vengono persistiti su disco.

2742 

2743```typescript theme={null}

2744type SDKFilesPersistedEvent = {

2745 type: "system";

2746 subtype: "files_persisted";

2747 files: { filename: string; file_id: string }[];

2748 failed: { filename: string; error: string }[];

2749 processed_at: string;

2750 uuid: UUID;

2751 session_id: string;

2752};

2753```

2754 

2755### `SDKRateLimitEvent`

2756 

2757Emesso quando la sessione incontra un limite di velocità.

2758 

2759```typescript theme={null}

2760type SDKRateLimitEvent = {

2761 type: "rate_limit_event";

2762 rate_limit_info: {

2763 status: "allowed" | "allowed_warning" | "rejected";

2764 resetsAt?: number;

2765 utilization?: number;

2766 };

2767 uuid: UUID;

2768 session_id: string;

2769};

2770```

2771 

2772### `SDKLocalCommandOutputMessage`

2773 

2774Output da un comando slash locale (ad esempio, `/voice` o `/usage`). Visualizzato come testo in stile assistente nella trascrizione.

2775 

2776```typescript theme={null}

2777type SDKLocalCommandOutputMessage = {

2778 type: "system";

2779 subtype: "local_command_output";

2780 content: string;

2781 uuid: UUID;

2782 session_id: string;

2783};

2784```

2785 

2786### `SDKPromptSuggestionMessage`

2787 

2788Emesso dopo ogni turno quando `promptSuggestions` è abilitato. Contiene un prompt utente successivo previsto.

2789 

2790```typescript theme={null}

2791type SDKPromptSuggestionMessage = {

2792 type: "prompt_suggestion";

2793 suggestion: string;

2794 uuid: UUID;

2795 session_id: string;

2796};

2797```

2798 

2799### `AbortError`

2800 

2801Classe di errore personalizzata per le operazioni di interruzione.

2802 

2803```typescript theme={null}

2804class AbortError extends Error {}

2805```

2806 

2807## Configurazione della sandbox

2808 

2809### `SandboxSettings`

2810 

2811Configurazione per il comportamento della sandbox. Usa questo per abilitare il sandboxing dei comandi e configurare le restrizioni di rete a livello di programmazione.

2812 

2813```typescript theme={null}

2814type SandboxSettings = {

2815 enabled?: boolean;

2816 autoAllowBashIfSandboxed?: boolean;

2817 excludedCommands?: string[];

2818 allowUnsandboxedCommands?: boolean;

2819 network?: SandboxNetworkConfig;

2820 filesystem?: SandboxFilesystemConfig;

2821 ignoreViolations?: Record<string, string[]>;

2822 enableWeakerNestedSandbox?: boolean;

2823 ripgrep?: { command: string; args?: string[] };

2824};

2825```

2826 

2827| Proprietà | Tipo | Predefinito | Descrizione |

2828| :-------------------------- | :------------------------------------------------------ | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2829| `enabled` | `boolean` | `false` | Abilita la modalità sandbox per l'esecuzione dei comandi |

2830| `autoAllowBashIfSandboxed` | `boolean` | `true` | Auto-approva i comandi bash quando la sandbox è abilitata |

2831| `excludedCommands` | `string[]` | `[]` | Comandi che sempre bypassano le restrizioni della sandbox (ad esempio, `['docker']`). Questi vengono eseguiti senza sandbox automaticamente senza coinvolgimento del modello |

2832| `allowUnsandboxedCommands` | `boolean` | `true` | Consenti al modello di richiedere l'esecuzione di comandi al di fuori della sandbox. Quando `true`, il modello può impostare `dangerouslyDisableSandbox` nell'input del tool, che ricade nel [sistema di permessi](#permissions-fallback-for-unsandboxed-commands) |

2833| `network` | [`SandboxNetworkConfig`](#sandbox-network-config) | `undefined` | Configurazione della sandbox specifica della rete |

2834| `filesystem` | [`SandboxFilesystemConfig`](#sandbox-filesystem-config) | `undefined` | Configurazione della sandbox specifica del filesystem per le restrizioni di lettura/scrittura |

2835| `ignoreViolations` | `Record<string, string[]>` | `undefined` | Mappa delle categorie di violazione ai pattern da ignorare (ad esempio, `{ file: ['/tmp/*'], network: ['localhost'] }`) |

2836| `enableWeakerNestedSandbox` | `boolean` | `false` | Abilita una sandbox nidificata più debole per la compatibilità |

2837| `ripgrep` | `{ command: string; args?: string[] }` | `undefined` | Configurazione del binario ripgrep personalizzato per gli ambienti sandbox |

2838 

2839#### Esempio di utilizzo

2840 

2841```typescript theme={null}

2842import { query } from "@anthropic-ai/claude-agent-sdk";

2843 

2844for await (const message of query({

2845 prompt: "Build and test my project",

2846 options: {

2847 sandbox: {

2848 enabled: true,

2849 autoAllowBashIfSandboxed: true,

2850 network: {

2851 allowLocalBinding: true

2852 }

2853 }

2854 }

2855})) {

2856 if ("result" in message) console.log(message.result);

2857}

2858```

2859 

2860<Warning>

2861 **Sicurezza del socket Unix:** L'opzione `allowUnixSockets` può concedere l'accesso a potenti servizi di sistema. Ad esempio, consentire `/var/run/docker.sock` concede effettivamente l'accesso completo al sistema host tramite l'API Docker, bypassando l'isolamento della sandbox. Consenti solo i socket Unix strettamente necessari e comprendi le implicazioni di sicurezza di ciascuno.

2862</Warning>

2863 

2864### `SandboxNetworkConfig`

2865 

2866Configurazione specifica della rete per la modalità sandbox.

2867 

2868```typescript theme={null}

2869type SandboxNetworkConfig = {

2870 allowedDomains?: string[];

2871 deniedDomains?: string[];

2872 allowManagedDomainsOnly?: boolean;

2873 allowLocalBinding?: boolean;

2874 allowUnixSockets?: string[];

2875 allowAllUnixSockets?: boolean;

2876 httpProxyPort?: number;

2877 socksProxyPort?: number;

2878};

2879```

2880 

2881| Proprietà | Tipo | Predefinito | Descrizione |

2882| :------------------------ | :--------- | :---------- | :----------------------------------------------------------------------------------------------------- |

2883| `allowedDomains` | `string[]` | `[]` | Nomi di dominio a cui i processi in sandbox possono accedere |

2884| `deniedDomains` | `string[]` | `[]` | Nomi di dominio a cui i processi in sandbox non possono accedere. Ha la precedenza su `allowedDomains` |

2885| `allowManagedDomainsOnly` | `boolean` | `false` | Limita l'accesso di rete solo ai domini in `allowedDomains` |

2886| `allowLocalBinding` | `boolean` | `false` | Consenti ai processi di associarsi alle porte locali (ad esempio, per i server di sviluppo) |

2887| `allowUnixSockets` | `string[]` | `[]` | Percorsi dei socket Unix a cui i processi possono accedere (ad esempio, socket Docker) |

2888| `allowAllUnixSockets` | `boolean` | `false` | Consenti l'accesso a tutti i socket Unix |

2889| `httpProxyPort` | `number` | `undefined` | Porta del proxy HTTP per le richieste di rete |

2890| `socksProxyPort` | `number` | `undefined` | Porta del proxy SOCKS per le richieste di rete |

2891 

2892<Note>

2893 Il proxy sandbox integrato applica `allowedDomains` in base al nome host richiesto e non termina o ispeziona il traffico TLS, quindi tecniche come il [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) possono potenzialmente bypassarlo. Vedi [Limitazioni di sicurezza del sandboxing](/it/sandboxing#security-limitations) per i dettagli e [Distribuzione sicura](/it/agent-sdk/secure-deployment#traffic-forwarding) per configurare un proxy che termina TLS.

2894</Note>

2895 

2896### `SandboxFilesystemConfig`

2897 

2898Configurazione specifica del filesystem per la modalità sandbox.

2899 

2900```typescript theme={null}

2901type SandboxFilesystemConfig = {

2902 allowWrite?: string[];

2903 denyWrite?: string[];

2904 denyRead?: string[];

2905};

2906```

2907 

2908| Proprietà | Tipo | Predefinito | Descrizione |

2909| :----------- | :--------- | :---------- | :--------------------------------------------------------------- |

2910| `allowWrite` | `string[]` | `[]` | Pattern di percorso file per consentire l'accesso in scrittura a |

2911| `denyWrite` | `string[]` | `[]` | Pattern di percorso file per negare l'accesso in scrittura a |

2912| `denyRead` | `string[]` | `[]` | Pattern di percorso file per negare l'accesso in lettura a |

2913 

2914### Fallback dei permessi per i comandi senza sandbox

2915 

2916Quando `allowUnsandboxedCommands` è abilitato, il modello può richiedere di eseguire comandi al di fuori della sandbox impostando `dangerouslyDisableSandbox: true` nell'input del tool. Queste richieste ricadono nel sistema di permessi esistente, il che significa che il tuo handler `canUseTool` viene invocato, permettendoti di implementare la logica di autorizzazione personalizzata.

2917 

2918<Note>

2919 **`excludedCommands` vs `allowUnsandboxedCommands`:**

2920 

2921 * `excludedCommands`: Un elenco statico di comandi che sempre bypassano la sandbox automaticamente (ad esempio, `['docker']`). Il modello non ha controllo su questo.

2922 * `allowUnsandboxedCommands`: Consenti al modello di decidere in fase di esecuzione se richiedere l'esecuzione senza sandbox impostando `dangerouslyDisableSandbox: true` nell'input del tool.

2923</Note>

2924 

2925```typescript theme={null}

2926import { query } from "@anthropic-ai/claude-agent-sdk";

2927 

2928for await (const message of query({

2929 prompt: "Deploy my application",

2930 options: {

2931 sandbox: {

2932 enabled: true,

2933 allowUnsandboxedCommands: true // Il modello può richiedere l'esecuzione senza sandbox

2934 },

2935 permissionMode: "default",

2936 canUseTool: async (tool, input) => {

2937 // Controlla se il modello sta richiedendo di bypassare la sandbox

2938 if (tool === "Bash" && input.dangerouslyDisableSandbox) {

2939 // Il modello sta richiedendo di eseguire questo comando al di fuori della sandbox

2940 console.log(`Unsandboxed command requested: ${input.command}`);

2941 

2942 if (isCommandAuthorized(input.command)) {

2943 return { behavior: "allow" as const, updatedInput: input };

2944 }

2945 return {

2946 behavior: "deny" as const,

2947 message: "Command not authorized for unsandboxed execution"

2948 };

2949 }

2950 return { behavior: "allow" as const, updatedInput: input };

2951 }

2952 }

2953})) {

2954 if ("result" in message) console.log(message.result);

2955}

2956```

2957 

2958Questo pattern ti consente di:

2959 

2960* **Controllare le richieste del modello:** Registra quando il modello richiede l'esecuzione senza sandbox

2961* **Implementare allowlist:** Consenti solo comandi specifici di essere eseguiti senza sandbox

2962* **Aggiungere flussi di lavoro di approvazione:** Richiedi l'autorizzazione esplicita per le operazioni privilegiate

2963 

2964<Warning>

2965 I comandi in esecuzione con `dangerouslyDisableSandbox: true` hanno accesso completo al sistema. Assicurati che il tuo handler `canUseTool` convalidi queste richieste attentamente.

2966 

2967 Se `permissionMode` è impostato su `bypassPermissions` e `allowUnsandboxedCommands` è abilitato, il modello può autonomamente eseguire comandi al di fuori della sandbox senza alcun prompt di approvazione. Questa combinazione consente effettivamente al modello di sfuggire all'isolamento della sandbox silenziosamente.

2968</Warning>

2969 

2970## Vedi anche

2971 

2972* [Panoramica dell'SDK](/it/agent-sdk/overview) - Concetti generali dell'SDK

2973* [Riferimento Python SDK](/it/agent-sdk/python) - Documentazione dell'SDK Python

2974* [Riferimento CLI](/it/cli-reference) - Interfaccia della riga di comando

2975* [Flussi di lavoro comuni](/it/common-workflows) - Guide passo dopo passo

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# Interfaccia TypeScript SDK V2 (anteprima)

6 

7> Anteprima dell'SDK Agent TypeScript V2 semplificato, con pattern send/stream basati su sessione per conversazioni multi-turno.

8 

9<Warning>

10 L'interfaccia V2 è un'**anteprima instabile**. Le API potrebbero cambiare in base al feedback prima di diventare stabili. Alcune funzionalità come il forking della sessione sono disponibili solo nell'[SDK V1](/it/agent-sdk/typescript).

11</Warning>

12 

13L'SDK Agent TypeScript V2 di Claude rimuove la necessità di generatori asincroni e coordinamento yield. Questo rende le conversazioni multi-turno più semplici; invece di gestire lo stato del generatore tra i turni, ogni turno è un ciclo `send()`/`stream()` separato. La superficie API si riduce a tre concetti:

14 

15* `createSession()` / `resumeSession()`: Avviare o continuare una conversazione

16* `session.send()`: Inviare un messaggio

17* `session.stream()`: Ottenere la risposta

18 

19## Installazione

20 

21L'interfaccia V2 è inclusa nel pacchetto SDK esistente:

22 

23```bash theme={null}

24npm install @anthropic-ai/claude-agent-sdk

25```

26 

27<Note>

28 L'SDK raggruppa un binario Claude Code nativo per la vostra piattaforma come dipendenza opzionale, quindi non è necessario installare Claude Code separatamente.

29</Note>

30 

31## Avvio rapido

32 

33### Prompt singolo

34 

35Per semplici query a turno singolo dove non è necessario mantenere una sessione, utilizzare `unstable_v2_prompt()`. Questo esempio invia una domanda matematica e registra la risposta:

36 

37```typescript theme={null}

38import { unstable_v2_prompt } from "@anthropic-ai/claude-agent-sdk";

39 

40const result = await unstable_v2_prompt("What is 2 + 2?", {

41 model: "claude-opus-4-7"

42});

43if (result.subtype === "success") {

44 console.log(result.result);

45}

46```

47 

48<details>

49 <summary>Vedere la stessa operazione in V1</summary>

50 

51 ```typescript theme={null}

52 import { query } from "@anthropic-ai/claude-agent-sdk";

53 

54 const q = query({

55 prompt: "What is 2 + 2?",

56 options: { model: "claude-opus-4-7" }

57 });

58 

59 for await (const msg of q) {

60 if (msg.type === "result" && msg.subtype === "success") {

61 console.log(msg.result);

62 }

63 }

64 ```

65</details>

66 

67### Sessione di base

68 

69Per interazioni oltre un singolo prompt, creare una sessione. V2 separa l'invio e lo streaming in passaggi distinti:

70 

71* `send()` invia il vostro messaggio

72* `stream()` trasmette la risposta

73 

74Questa separazione esplicita rende più facile aggiungere logica tra i turni (come elaborare le risposte prima di inviare i follow-up).

75 

76L'esempio seguente crea una sessione, invia "Hello!" a Claude e stampa la risposta di testo. Utilizza [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management) (TypeScript 5.2+) per chiudere automaticamente la sessione quando il blocco esce. Potete anche chiamare `session.close()` manualmente.

77 

78```typescript theme={null}

79import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

80 

81await using session = unstable_v2_createSession({

82 model: "claude-opus-4-7"

83});

84 

85await session.send("Hello!");

86for await (const msg of session.stream()) {

87 // Filter for assistant messages to get human-readable output

88 if (msg.type === "assistant") {

89 const text = msg.message.content

90 .filter((block) => block.type === "text")

91 .map((block) => block.text)

92 .join("");

93 console.log(text);

94 }

95}

96```

97 

98<details>

99 <summary>Vedere la stessa operazione in V1</summary>

100 

101 In V1, sia l'input che l'output fluiscono attraverso un singolo generatore asincrono. Per un prompt di base questo appare simile, ma aggiungere logica multi-turno richiede di ristrutturare per utilizzare un generatore di input.

102 

103 ```typescript theme={null}

104 import { query } from "@anthropic-ai/claude-agent-sdk";

105 

106 const q = query({

107 prompt: "Hello!",

108 options: { model: "claude-opus-4-7" }

109 });

110 

111 for await (const msg of q) {

112 if (msg.type === "assistant") {

113 const text = msg.message.content

114 .filter((block) => block.type === "text")

115 .map((block) => block.text)

116 .join("");

117 console.log(text);

118 }

119 }

120 ```

121</details>

122 

123### Conversazione multi-turno

124 

125Le sessioni mantengono il contesto attraverso più scambi. Per continuare una conversazione, chiamare `send()` di nuovo sulla stessa sessione. Claude ricorda i turni precedenti.

126 

127Questo esempio pone una domanda matematica, quindi pone un follow-up che fa riferimento alla risposta precedente:

128 

129```typescript theme={null}

130import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

131 

132await using session = unstable_v2_createSession({

133 model: "claude-opus-4-7"

134});

135 

136// Turn 1

137await session.send("What is 5 + 3?");

138for await (const msg of session.stream()) {

139 // Filter for assistant messages to get human-readable output

140 if (msg.type === "assistant") {

141 const text = msg.message.content

142 .filter((block) => block.type === "text")

143 .map((block) => block.text)

144 .join("");

145 console.log(text);

146 }

147}

148 

149// Turn 2

150await session.send("Multiply that by 2");

151for await (const msg of session.stream()) {

152 if (msg.type === "assistant") {

153 const text = msg.message.content

154 .filter((block) => block.type === "text")

155 .map((block) => block.text)

156 .join("");

157 console.log(text);

158 }

159}

160```

161 

162<details>

163 <summary>Vedere la stessa operazione in V1</summary>

164 

165 ```typescript theme={null}

166 import { query } from "@anthropic-ai/claude-agent-sdk";

167 

168 // Must create an async iterable to feed messages

169 async function* createInputStream() {

170 yield {

171 type: "user",

172 session_id: "",

173 message: { role: "user", content: [{ type: "text", text: "What is 5 + 3?" }] },

174 parent_tool_use_id: null

175 };

176 // Must coordinate when to yield next message

177 yield {

178 type: "user",

179 session_id: "",

180 message: { role: "user", content: [{ type: "text", text: "Multiply by 2" }] },

181 parent_tool_use_id: null

182 };

183 }

184 

185 const q = query({

186 prompt: createInputStream(),

187 options: { model: "claude-opus-4-7" }

188 });

189 

190 for await (const msg of q) {

191 if (msg.type === "assistant") {

192 const text = msg.message.content

193 .filter((block) => block.type === "text")

194 .map((block) => block.text)

195 .join("");

196 console.log(text);

197 }

198 }

199 ```

200</details>

201 

202### Ripresa della sessione

203 

204Se avete un ID di sessione da un'interazione precedente, potete riprenderla in seguito. Questo è utile per flussi di lavoro di lunga durata o quando è necessario persistere le conversazioni tra i riavvii dell'applicazione.

205 

206Questo esempio crea una sessione, memorizza il suo ID, la chiude, quindi riprende la conversazione:

207 

208```typescript theme={null}

209import {

210 unstable_v2_createSession,

211 unstable_v2_resumeSession,

212 type SDKMessage

213} from "@anthropic-ai/claude-agent-sdk";

214 

215// Helper to extract text from assistant messages

216function getAssistantText(msg: SDKMessage): string | null {

217 if (msg.type !== "assistant") return null;

218 return msg.message.content

219 .filter((block) => block.type === "text")

220 .map((block) => block.text)

221 .join("");

222}

223 

224// Create initial session and have a conversation

225const session = unstable_v2_createSession({

226 model: "claude-opus-4-7"

227});

228 

229await session.send("Remember this number: 42");

230 

231// Get the session ID from any received message

232let sessionId: string | undefined;

233for await (const msg of session.stream()) {

234 sessionId = msg.session_id;

235 const text = getAssistantText(msg);

236 if (text) console.log("Initial response:", text);

237}

238 

239console.log("Session ID:", sessionId);

240session.close();

241 

242// Later: resume the session using the stored ID

243await using resumedSession = unstable_v2_resumeSession(sessionId!, {

244 model: "claude-opus-4-7"

245});

246 

247await resumedSession.send("What number did I ask you to remember?");

248for await (const msg of resumedSession.stream()) {

249 const text = getAssistantText(msg);

250 if (text) console.log("Resumed response:", text);

251}

252```

253 

254<details>

255 <summary>Vedere la stessa operazione in V1</summary>

256 

257 ```typescript theme={null}

258 import { query } from "@anthropic-ai/claude-agent-sdk";

259 

260 // Create initial session

261 const initialQuery = query({

262 prompt: "Remember this number: 42",

263 options: { model: "claude-opus-4-7" }

264 });

265 

266 // Get session ID from any message

267 let sessionId: string | undefined;

268 for await (const msg of initialQuery) {

269 sessionId = msg.session_id;

270 if (msg.type === "assistant") {

271 const text = msg.message.content

272 .filter((block) => block.type === "text")

273 .map((block) => block.text)

274 .join("");

275 console.log("Initial response:", text);

276 }

277 }

278 

279 console.log("Session ID:", sessionId);

280 

281 // Later: resume the session

282 const resumedQuery = query({

283 prompt: "What number did I ask you to remember?",

284 options: {

285 model: "claude-opus-4-7",

286 resume: sessionId

287 }

288 });

289 

290 for await (const msg of resumedQuery) {

291 if (msg.type === "assistant") {

292 const text = msg.message.content

293 .filter((block) => block.type === "text")

294 .map((block) => block.text)

295 .join("");

296 console.log("Resumed response:", text);

297 }

298 }

299 ```

300</details>

301 

302### Pulizia

303 

304Le sessioni possono essere chiuse manualmente o automaticamente utilizzando [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management), una funzionalità di TypeScript 5.2+ per la pulizia automatica delle risorse. Se state utilizzando una versione precedente di TypeScript o riscontrate problemi di compatibilità, utilizzate invece la pulizia manuale.

305 

306**Pulizia automatica (TypeScript 5.2+):**

307 

308```typescript theme={null}

309import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

310 

311await using session = unstable_v2_createSession({

312 model: "claude-opus-4-7"

313});

314// Session closes automatically when the block exits

315```

316 

317**Pulizia manuale:**

318 

319```typescript theme={null}

320import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

321 

322const session = unstable_v2_createSession({

323 model: "claude-opus-4-7"

324});

325// ... use the session ...

326session.close();

327```

328 

329## Riferimento API

330 

331### `unstable_v2_createSession()`

332 

333Crea una nuova sessione per conversazioni multi-turno.

334 

335```typescript theme={null}

336function unstable_v2_createSession(options: {

337 model: string;

338 // Additional options supported

339}): SDKSession;

340```

341 

342### `unstable_v2_resumeSession()`

343 

344Riprende una sessione esistente per ID.

345 

346```typescript theme={null}

347function unstable_v2_resumeSession(

348 sessionId: string,

349 options: {

350 model: string;

351 // Additional options supported

352 }

353): SDKSession;

354```

355 

356### `unstable_v2_prompt()`

357 

358Funzione di convenienza one-shot per query a turno singolo.

359 

360```typescript theme={null}

361function unstable_v2_prompt(

362 prompt: string,

363 options: {

364 model: string;

365 // Additional options supported

366 }

367): Promise<SDKResultMessage>;

368```

369 

370### Interfaccia SDKSession

371 

372```typescript theme={null}

373interface SDKSession {

374 readonly sessionId: string;

375 send(message: string | SDKUserMessage): Promise<void>;

376 stream(): AsyncGenerator<SDKMessage, void>;

377 close(): void;

378}

379```

380 

381## Disponibilità delle funzionalità

382 

383Non tutte le funzionalità V1 sono ancora disponibili in V2. Le seguenti richiedono l'utilizzo dell'[SDK V1](/it/agent-sdk/typescript):

384 

385* Forking della sessione (opzione `forkSession`)

386* Alcuni pattern di input streaming avanzati

387 

388## Feedback

389 

390Condividete il vostro feedback sull'interfaccia V2 prima che diventi stabile. Segnalate problemi e suggerimenti tramite [GitHub Issues](https://github.com/anthropics/claude-code/issues).

391 

392## Vedere anche

393 

394* [Riferimento SDK TypeScript (V1)](/it/agent-sdk/typescript) - Documentazione completa dell'SDK V1

395* [Panoramica SDK](/it/agent-sdk/overview) - Concetti generali dell'SDK

396* [Esempi V2 su GitHub](https://github.com/anthropics/claude-agent-sdk-demos/tree/main/hello-world-v2) - Esempi di codice funzionanti

agent-teams.md +424 −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# Orchestrare team di sessioni Claude Code

6 

7> Coordinare più istanze di Claude Code che lavorano insieme come un team, con attività condivise, messaggistica tra agenti e gestione centralizzata.

8 

9<Warning>

10 I team di agenti sono sperimentali e disabilitati per impostazione predefinita. Abilitateli aggiungendo `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` al vostro [settings.json](/it/settings) o all'ambiente. I team di agenti hanno [limitazioni note](#limitations) relative alla ripresa della sessione, al coordinamento delle attività e al comportamento di arresto.

11</Warning>

12 

13I team di agenti vi permettono di coordinare più istanze di Claude Code che lavorano insieme. Una sessione agisce come il team lead, coordinando il lavoro, assegnando attività e sintetizzando i risultati. I compagni di team lavorano indipendentemente, ognuno nel proprio context window, e comunicano direttamente tra loro.

14 

15A differenza dei [subagents](/it/sub-agents), che vengono eseguiti all'interno di una singola sessione e possono solo riferire al main agent, potete anche interagire direttamente con i singoli compagni di team senza passare attraverso il lead.

16 

17<Note>

18 I team di agenti richiedono Claude Code v2.1.32 o successivo. Controllate la vostra versione con `claude --version`.

19</Note>

20 

21Questa pagina copre:

22 

23* [Quando utilizzare i team di agenti](#when-to-use-agent-teams), inclusi i migliori casi d'uso e come si confrontano con i subagents

24* [Avviare un team](#start-your-first-agent-team)

25* [Controllare i compagni di team](#control-your-agent-team), incluse le modalità di visualizzazione, l'assegnazione delle attività e la delega

26* [Best practice per il lavoro parallelo](#best-practices)

27 

28## Quando utilizzare i team di agenti

29 

30I team di agenti sono più efficaci per attività in cui l'esplorazione parallela aggiunge valore reale. Consultate gli [esempi di casi d'uso](#use-case-examples) per scenari completi. I casi d'uso più forti sono:

31 

32* **Ricerca e revisione**: più compagni di team possono investigare diversi aspetti di un problema simultaneamente, quindi condividere e mettere in discussione i risultati reciproci

33* **Nuovi moduli o funzionalità**: i compagni di team possono possedere ciascuno un pezzo separato senza interferire l'uno con l'altro

34* **Debug con ipotesi concorrenti**: i compagni di team testano diverse teorie in parallelo e convergono sulla risposta più velocemente

35* **Coordinamento tra livelli**: modifiche che si estendono su frontend, backend e test, ciascuno posseduto da un diverso compagno di team

36 

37I team di agenti aggiungono overhead di coordinamento e utilizzano significativamente più token di una singola sessione. Funzionano meglio quando i compagni di team possono operare indipendentemente. Per attività sequenziali, modifiche dello stesso file o lavoro con molte dipendenze, una singola sessione o i [subagents](/it/sub-agents) sono più efficaci.

38 

39### Confronto con i subagents

40 

41Sia i team di agenti che i [subagents](/it/sub-agents) vi permettono di parallelizzare il lavoro, ma operano diversamente. Scegliete in base al fatto che i vostri worker debbano comunicare tra loro:

42 

43<Frame caption="I subagents riportano solo i risultati al main agent e non si parlano mai. Nei team di agenti, i compagni di team condividono un elenco di attività, rivendicano il lavoro e comunicano direttamente tra loro.">

44 <img src="https://mintcdn.com/claude-code/nsvRFSDNfpSU5nT7/images/subagents-vs-agent-teams-light.png?fit=max&auto=format&n=nsvRFSDNfpSU5nT7&q=85&s=2f8db9b4f3705dd3ab931fbe2d96e42a" className="dark:hidden" alt="Diagramma che confronta le architetture di subagent e team di agenti. I subagents vengono generati dal main agent, svolgono il lavoro e riportano i risultati. I team di agenti si coordinano attraverso un elenco di attività condiviso, con i compagni di team che comunicano direttamente tra loro." width="4245" height="1615" data-path="images/subagents-vs-agent-teams-light.png" />

45 

46 <img src="https://mintcdn.com/claude-code/nsvRFSDNfpSU5nT7/images/subagents-vs-agent-teams-dark.png?fit=max&auto=format&n=nsvRFSDNfpSU5nT7&q=85&s=d573a037540f2ada6a9ae7d8285b46fd" className="hidden dark:block" alt="Diagramma che confronta le architetture di subagent e team di agenti. I subagents vengono generati dal main agent, svolgono il lavoro e riportano i risultati. I team di agenti si coordinano attraverso un elenco di attività condiviso, con i compagni di team che comunicano direttamente tra loro." width="4245" height="1615" data-path="images/subagents-vs-agent-teams-dark.png" />

47</Frame>

48 

49| | Subagents | Team di agenti |

50| :----------------- | :--------------------------------------------------------------- | :------------------------------------------------------------ |

51| **Context** | Context window proprio; i risultati tornano al chiamante | Context window proprio; completamente indipendente |

52| **Comunicazione** | Riportano i risultati solo al main agent | I compagni di team si messaggiano direttamente |

53| **Coordinamento** | Il main agent gestisce tutto il lavoro | Elenco di attività condiviso con auto-coordinamento |

54| **Migliore per** | Attività focalizzate dove conta solo il risultato | Lavoro complesso che richiede discussione e collaborazione |

55| **Costo in token** | Inferiore: i risultati sono sintetizzati nel contesto principale | Superiore: ogni compagno di team è un'istanza Claude separata |

56 

57Utilizzate i subagents quando avete bisogno di worker veloci e focalizzati che riportino indietro. Utilizzate i team di agenti quando i compagni di team devono condividere i risultati, mettersi in discussione e coordinarsi autonomamente.

58 

59## Abilitare i team di agenti

60 

61I team di agenti sono disabilitati per impostazione predefinita. Abilitateli impostando la variabile di ambiente `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` a `1`, sia nell'ambiente della shell che tramite [settings.json](/it/settings):

62 

63```json settings.json theme={null}

64{

65 "env": {

66 "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"

67 }

68}

69```

70 

71## Avviare il vostro primo team di agenti

72 

73Dopo aver abilitato i team di agenti, dite a Claude di creare un team di agenti e descrivete il compito e la struttura del team che desiderate in linguaggio naturale. Claude crea il team, genera i compagni di team e coordina il lavoro in base al vostro prompt.

74 

75Questo esempio funziona bene perché i tre ruoli sono indipendenti e possono esplorare il problema senza aspettarsi l'uno l'altro:

76 

77```text theme={null}

78Sto progettando uno strumento CLI che aiuta gli sviluppatori a tracciare i commenti TODO

79nel loro codebase. Crea un team di agenti per esplorare questo da diversi angoli: un

80compagno di team su UX, uno su architettura tecnica, uno che gioca l'avvocato del diavolo.

81```

82 

83Da lì, Claude crea un team con un [elenco di attività condiviso](/it/interactive-mode#task-list), genera compagni di team per ogni prospettiva, li fa esplorare il problema, sintetizza i risultati e tenta di [pulire il team](#clean-up-the-team) al termine.

84 

85Il terminale del lead elenca tutti i compagni di team e su cosa stanno lavorando. Utilizzate Shift+Down per scorrere i compagni di team e messaggiarli direttamente. Dopo l'ultimo compagno di team, Shift+Down torna al lead.

86 

87Se desiderate che ogni compagno di team sia in un riquadro diviso proprio, consultate [Scegliere una modalità di visualizzazione](#choose-a-display-mode).

88 

89## Controllare il vostro team di agenti

90 

91Dite al lead cosa desiderate in linguaggio naturale. Gestisce il coordinamento del team, l'assegnazione delle attività e la delega in base alle vostre istruzioni.

92 

93### Scegliere una modalità di visualizzazione

94 

95I team di agenti supportano due modalità di visualizzazione:

96 

97* **In-process**: tutti i compagni di team vengono eseguiti all'interno del vostro terminale principale. Utilizzate Shift+Down per scorrere i compagni di team e digitate per messaggiarli direttamente. Funziona in qualsiasi terminale, nessuna configurazione extra richiesta.

98* **Split panes**: ogni compagno di team ottiene il proprio riquadro. Potete vedere l'output di tutti contemporaneamente e fare clic su un riquadro per interagire direttamente. Richiede tmux o iTerm2.

99 

100<Note>

101 `tmux` ha limitazioni note su certi sistemi operativi e tradizionalmente funziona meglio su macOS. Utilizzare `tmux -CC` in iTerm2 è il punto di ingresso suggerito in `tmux`.

102</Note>

103 

104L'impostazione predefinita è `"auto"`, che utilizza split panes se state già eseguendo all'interno di una sessione tmux, e in-process altrimenti. L'impostazione `"tmux"` abilita la modalità split-pane e rileva automaticamente se utilizzare tmux o iTerm2 in base al vostro terminale. Per sovrascrivere, impostate [`teammateMode`](/it/settings#available-settings) in `~/.claude/settings.json`:

105 

106```json theme={null}

107{

108 "teammateMode": "in-process"

109}

110```

111 

112Per forzare la modalità in-process per una singola sessione, passatela come flag:

113 

114```bash theme={null}

115claude --teammate-mode in-process

116```

117 

118La modalità split-pane richiede [tmux](https://github.com/tmux/tmux/wiki) o iTerm2 con la CLI [`it2`](https://github.com/mkusaka/it2). Per installare manualmente:

119 

120* **tmux**: installate tramite il gestore di pacchetti del vostro sistema. Consultate il [wiki di tmux](https://github.com/tmux/tmux/wiki/Installing) per istruzioni specifiche della piattaforma.

121* **iTerm2**: installate la CLI [`it2`](https://github.com/mkusaka/it2), quindi abilitate l'API Python in **iTerm2 → Settings → General → Magic → Enable Python API**.

122 

123### Specificare compagni di team e modelli

124 

125Claude decide il numero di compagni di team da generare in base al vostro compito, oppure potete specificare esattamente quello che desiderate:

126 

127```text theme={null}

128Crea un team con 4 compagni di team per refactorizzare questi moduli in parallelo.

129Usa Sonnet per ogni compagno di team.

130```

131 

132### Richiedere l'approvazione del piano per i compagni di team

133 

134Per compiti complessi o rischiosi, potete richiedere ai compagni di team di pianificare prima di implementare. Il compagno di team lavora in modalità piano di sola lettura fino a quando il lead approva il loro approccio:

135 

136```text theme={null}

137Genera un compagno di team architetto per refactorizzare il modulo di autenticazione.

138Richiedi l'approvazione del piano prima che apportino modifiche.

139```

140 

141Quando un compagno di team finisce di pianificare, invia una richiesta di approvazione del piano al lead. Il lead esamina il piano e lo approva o lo rifiuta con feedback. Se rifiutato, il compagno di team rimane in modalità piano, rivede in base al feedback e lo riinvia. Una volta approvato, il compagno di team esce dalla modalità piano e inizia l'implementazione.

142 

143Il lead prende decisioni di approvazione autonomamente. Per influenzare il giudizio del lead, fornitegli criteri nel vostro prompt, come "approva solo i piani che includono la copertura dei test" o "rifiuta i piani che modificano lo schema del database".

144 

145### Parlare direttamente con i compagni di team

146 

147Ogni compagno di team è una sessione Claude Code completa e indipendente. Potete messaggiare qualsiasi compagno di team direttamente per fornire istruzioni aggiuntive, fare domande di follow-up o reindirizzare il loro approccio.

148 

149* **Modalità in-process**: utilizzate Shift+Down per scorrere i compagni di team, quindi digitate per inviare loro un messaggio. Premete Invio per visualizzare la sessione di un compagno di team, quindi Escape per interrompere il loro turno attuale. Premete Ctrl+T per attivare/disattivare l'elenco delle attività.

150* **Modalità split-pane**: fate clic nel riquadro di un compagno di team per interagire direttamente con la sua sessione. Ogni compagno di team ha una visualizzazione completa del proprio terminale.

151 

152### Assegnare e rivendicare attività

153 

154L'elenco di attività condiviso coordina il lavoro nel team. Il lead crea attività e i compagni di team le elaborano. Le attività hanno tre stati: in sospeso, in corso e completate. Le attività possono anche dipendere da altre attività: un'attività in sospeso con dipendenze non risolte non può essere rivendicata fino a quando quelle dipendenze non sono completate.

155 

156Il lead può assegnare attività esplicitamente, oppure i compagni di team possono auto-rivendicare:

157 

158* **Il lead assegna**: dite al lead quale attività assegnare a quale compagno di team

159* **Auto-rivendicazione**: dopo aver completato un'attività, un compagno di team raccoglie la prossima attività non assegnata e non bloccata da solo

160 

161La rivendicazione delle attività utilizza il file locking per prevenire race condition quando più compagni di team tentano di rivendicare la stessa attività simultaneamente.

162 

163### Spegnere i compagni di team

164 

165Per terminare gracefully la sessione di un compagno di team:

166 

167```text theme={null}

168Chiedi al compagno di team ricercatore di spegnersi

169```

170 

171Il lead invia una richiesta di arresto. Il compagno di team può approvare, uscendo gracefully, o rifiutare con una spiegazione.

172 

173### Pulire il team

174 

175Quando avete finito, chiedete al lead di pulire:

176 

177```text theme={null}

178Pulisci il team

179```

180 

181Questo rimuove le risorse del team condivise. Quando il lead esegue la pulizia, controlla i compagni di team attivi e fallisce se ce ne sono ancora in esecuzione, quindi spegneteli prima.

182 

183<Warning>

184 Utilizzate sempre il lead per pulire. I compagni di team non dovrebbero eseguire la pulizia perché il loro contesto di team potrebbe non risolversi correttamente, lasciando potenzialmente le risorse in uno stato incoerente.

185</Warning>

186 

187### Applicare quality gate con hooks

188 

189Utilizzate [hooks](/it/hooks) per applicare regole quando i compagni di team finiscono il lavoro o le attività vengono create o completate:

190 

191* [`TeammateIdle`](/it/hooks#teammateidle): viene eseguito quando un compagno di team sta per andare inattivo. Uscite con codice 2 per inviare feedback e mantenere il compagno di team al lavoro.

192* [`TaskCreated`](/it/hooks#taskcreated): viene eseguito quando un'attività sta per essere creata. Uscite con codice 2 per prevenire la creazione e inviare feedback.

193* [`TaskCompleted`](/it/hooks#taskcompleted): viene eseguito quando un'attività sta per essere contrassegnata come completata. Uscite con codice 2 per prevenire il completamento e inviare feedback.

194 

195## Come funzionano i team di agenti

196 

197Questa sezione copre l'architettura e la meccanica dietro i team di agenti. Se desiderate iniziare a utilizzarli, consultate [Controllare il vostro team di agenti](#control-your-agent-team) sopra.

198 

199### Come Claude avvia i team di agenti

200 

201Ci sono due modi in cui i team di agenti vengono avviati:

202 

203* **Voi richiedete un team**: date a Claude un compito che beneficia dal lavoro parallelo e chiedete esplicitamente un team di agenti. Claude ne crea uno in base alle vostre istruzioni.

204* **Claude propone un team**: se Claude determina che il vostro compito beneficerebbe dal lavoro parallelo, potrebbe suggerire di creare un team. Voi confermate prima che proceda.

205 

206In entrambi i casi, rimanete in controllo. Claude non creerà un team senza la vostra approvazione.

207 

208### Architettura

209 

210Un team di agenti consiste di:

211 

212| Componente | Ruolo |

213| :--------------------- | :-------------------------------------------------------------------------------------------------- |

214| **Team lead** | La sessione Claude Code principale che crea il team, genera i compagni di team e coordina il lavoro |

215| **Compagni di team** | Istanze Claude Code separate che lavorano ciascuna su attività assegnate |

216| **Elenco di attività** | Elenco condiviso di elementi di lavoro che i compagni di team rivendicano e completano |

217| **Mailbox** | Sistema di messaggistica per la comunicazione tra agenti |

218 

219Consultate [Scegliere una modalità di visualizzazione](#choose-a-display-mode) per le opzioni di configurazione della visualizzazione. I messaggi dei compagni di team arrivano al lead automaticamente.

220 

221Il sistema gestisce le dipendenze delle attività automaticamente. Quando un compagno di team completa un'attività da cui altre attività dipendono, le attività bloccate si sbloccano senza intervento manuale.

222 

223I team e le attività sono archiviati localmente:

224 

225* **Configurazione del team**: `~/.claude/teams/{team-name}/config.json`

226* **Elenco di attività**: `~/.claude/tasks/{team-name}/`

227 

228Claude Code genera entrambi automaticamente quando create un team e li aggiorna mentre i compagni di team si uniscono, vanno inattivi o se ne vanno. La configurazione del team contiene lo stato di runtime come gli ID di sessione e gli ID dei riquadri tmux, quindi non modificatela manualmente o pre-autorizzatela: le vostre modifiche vengono sovrascritte al prossimo aggiornamento dello stato.

229 

230Per definire ruoli di compagni di team riutilizzabili, utilizzate invece [definizioni di subagent](#use-subagent-definitions-for-teammates).

231 

232La configurazione del team contiene un array `members` con il nome di ogni compagno di team, l'ID dell'agente e il tipo di agente. I compagni di team possono leggere questo file per scoprire altri membri del team.

233 

234Non esiste un equivalente a livello di progetto della configurazione del team. Un file come `.claude/teams/teams.json` nella vostra directory di progetto non è riconosciuto come configurazione; Claude lo tratta come un file ordinario.

235 

236### Utilizzare definizioni di subagent per i compagni di team

237 

238Quando generate un compagno di team, potete fare riferimento a un tipo di [subagent](/it/sub-agents) da qualsiasi [ambito di subagent](/it/sub-agents#choose-the-subagent-scope): progetto, utente, plugin o definito da CLI. Questo vi permette di definire un ruolo una volta, come un security-reviewer o test-runner, e riutilizzarlo sia come subagent delegato che come compagno di team di un team di agenti.

239 

240Per utilizzare una definizione di subagent, menzionatela per nome quando chiedete a Claude di generare il compagno di team:

241 

242```text theme={null}

243Genera un compagno di team utilizzando il tipo di agente security-reviewer per controllare il modulo di autenticazione.

244```

245 

246Il compagno di team onora i `tools` allowlist e il `model` di quella definizione, e il corpo della definizione viene aggiunto al prompt di sistema del compagno di team come istruzioni aggiuntive piuttosto che sostituirlo. Gli strumenti di coordinamento del team come `SendMessage` e gli strumenti di gestione delle attività sono sempre disponibili per un compagno di team anche quando `tools` limita altri strumenti.

247 

248<Note>

249 I campi frontmatter `skills` e `mcpServers` in una definizione di subagent non vengono applicati quando quella definizione viene eseguita come compagno di team. I compagni di team caricano skills e MCP servers dalle vostre impostazioni di progetto e utente, come una sessione regolare.

250</Note>

251 

252### Permessi

253 

254I compagni di team iniziano con le impostazioni di permesso del lead. Se il lead viene eseguito con `--dangerously-skip-permissions`, lo fanno anche tutti i compagni di team. Dopo la generazione, potete cambiare le modalità dei singoli compagni di team, ma non potete impostare modalità per compagno di team al momento della generazione.

255 

256### Context e comunicazione

257 

258Ogni compagno di team ha il proprio context window. Quando generato, un compagno di team carica lo stesso contesto di progetto di una sessione regolare: CLAUDE.md, MCP servers e skills. Riceve anche il prompt di generazione dal lead. La cronologia della conversazione del lead non viene trasferita.

259 

260**Come i compagni di team condividono le informazioni:**

261 

262* **Consegna automatica dei messaggi**: quando i compagni di team inviano messaggi, vengono consegnati automaticamente ai destinatari. Il lead non ha bisogno di eseguire il polling per gli aggiornamenti.

263* **Notifiche di inattività**: quando un compagno di team finisce e si ferma, notifica automaticamente il lead.

264* **Elenco di attività condiviso**: tutti gli agenti possono vedere lo stato delle attività e rivendicare il lavoro disponibile.

265* **Messaggistica dei compagni di team**: invia un messaggio a un compagno di team specifico per nome. Per raggiungere tutti, inviate un messaggio per destinatario.

266 

267Il lead assegna a ogni compagno di team un nome quando lo genera, e qualsiasi compagno di team può messaggiare qualsiasi altro per quel nome. Per ottenere nomi prevedibili che potete referenziare nei prompt successivi, dite al lead come chiamare ogni compagno di team nella vostra istruzione di generazione.

268 

269### Utilizzo dei token

270 

271I team di agenti utilizzano significativamente più token di una singola sessione. Ogni compagno di team ha il proprio context window e l'utilizzo dei token si scala con il numero di compagni di team attivi. Per ricerca, revisione e lavoro su nuove funzionalità, i token extra di solito valgono la pena. Per compiti di routine, una singola sessione è più conveniente. Consultate i [costi dei token dei team di agenti](/it/costs#agent-team-token-costs) per la guida all'utilizzo.

272 

273## Esempi di casi d'uso

274 

275Questi esempi mostrano come i team di agenti gestiscono compiti in cui l'esplorazione parallela aggiunge valore.

276 

277### Eseguire una revisione del codice parallela

278 

279Un singolo revisore tende a gravitare verso un tipo di problema alla volta. Dividere i criteri di revisione in domini indipendenti significa che la sicurezza, le prestazioni e la copertura dei test ricevono tutti un'attenzione approfondita simultaneamente. Il prompt assegna a ogni compagno di team una lente distinta in modo che non si sovrappongano:

280 

281```text theme={null}

282Crea un team di agenti per revisionare la PR #142. Genera tre revisori:

283- Uno focalizzato sulle implicazioni di sicurezza

284- Uno che controlla l'impatto sulle prestazioni

285- Uno che convalida la copertura dei test

286Che ognuno esamini e riporti i risultati.

287```

288 

289Ogni revisore lavora dalla stessa PR ma applica un filtro diverso. Il lead sintetizza i risultati tra tutti e tre dopo che finiscono.

290 

291### Investigare con ipotesi concorrenti

292 

293Quando la causa principale è poco chiara, un singolo agente tende a trovare una spiegazione plausibile e smettere di cercare. Il prompt combatte questo rendendo i compagni di team esplicitamente avversari: il lavoro di ognuno non è solo investigare la propria teoria ma sfidare le altre.

294 

295```text theme={null}

296Gli utenti segnalano che l'app esce dopo un messaggio invece di rimanere connessa.

297Genera 5 compagni di team agenti per investigare diverse ipotesi. Fate loro parlare

298tra loro per cercare di confutare le teorie reciproche, come un dibattito

299scientifico. Aggiornate il documento dei risultati con qualsiasi consenso emerga.

300```

301 

302La struttura del dibattito è il meccanismo chiave qui. L'investigazione sequenziale soffre di ancoraggio: una volta che una teoria è stata esplorata, l'investigazione successiva è distorta verso di essa.

303 

304Con più investigatori indipendenti che attivamente cercano di confutarsi a vicenda, la teoria che sopravvive è molto più probabile che sia la causa principale effettiva.

305 

306## Best practice

307 

308### Fornire ai compagni di team contesto sufficiente

309 

310I compagni di team caricano il contesto del progetto automaticamente, inclusi CLAUDE.md, MCP servers e skills, ma non ereditano la cronologia della conversazione del lead. Consultate [Context e comunicazione](#context-and-communication) per i dettagli. Includete i dettagli specifici dell'attività nel prompt di generazione:

311 

312```text theme={null}

313Genera un compagno di team revisore di sicurezza con il prompt: "Esamina il modulo di autenticazione

314in src/auth/ per vulnerabilità di sicurezza. Concentrati sulla gestione dei token, sulla

315gestione della sessione e sulla convalida dell'input. L'app utilizza token JWT archiviati in

316cookie httpOnly. Segnala eventuali problemi con valutazioni di gravità."

317```

318 

319### Scegliere una dimensione del team appropriata

320 

321Non c'è un limite rigido al numero di compagni di team, ma si applicano vincoli pratici:

322 

323* **I costi dei token si scalano linearmente**: ogni compagno di team ha il proprio context window e consuma token indipendentemente. Consultate i [costi dei token dei team di agenti](/it/costs#agent-team-token-costs) per i dettagli.

324* **L'overhead di coordinamento aumenta**: più compagni di team significa più comunicazione, coordinamento delle attività e potenziale per conflitti

325* **Rendimenti decrescenti**: oltre un certo punto, i compagni di team aggiuntivi non accelerano il lavoro proporzionalmente

326 

327Iniziate con 3-5 compagni di team per la maggior parte dei flussi di lavoro. Questo bilancia il lavoro parallelo con il coordinamento gestibile. Gli esempi in questa guida utilizzano 3-5 compagni di team perché quell'intervallo funziona bene in diversi tipi di attività.

328 

329Avere 5-6 [attività](/it/agent-teams#architecture) per compagno di team mantiene tutti produttivi senza eccessivo context switching. Se avete 15 attività indipendenti, 3 compagni di team è un buon punto di partenza.

330 

331Scalate solo quando il lavoro beneficia genuinamente dall'avere compagni di team che lavorano simultaneamente. Tre compagni di team focalizzati spesso superano cinque dispersi.

332 

333### Dimensionare le attività appropriatamente

334 

335* **Troppo piccole**: l'overhead di coordinamento supera il beneficio

336* **Troppo grandi**: i compagni di team lavorano troppo a lungo senza check-in, aumentando il rischio di sforzo sprecato

337* **Giuste**: unità auto-contenute che producono un deliverable chiaro, come una funzione, un file di test o una revisione

338 

339<Tip>

340 Il lead suddivide il lavoro in attività e le assegna ai compagni di team automaticamente. Se non sta creando abbastanza attività, chiedetegli di dividere il lavoro in pezzi più piccoli. Avere 5-6 attività per compagno di team mantiene tutti produttivi e permette al lead di riassegnare il lavoro se qualcuno rimane bloccato.

341</Tip>

342 

343### Aspettare che i compagni di team finiscano

344 

345A volte il lead inizia a implementare le attività stesso invece di aspettare i compagni di team. Se notate questo:

346 

347```text theme={null}

348Aspetta che i tuoi compagni di team completino le loro attività prima di procedere

349```

350 

351### Iniziare con ricerca e revisione

352 

353Se siete nuovi ai team di agenti, iniziate con compiti che hanno confini chiari e non richiedono di scrivere codice: revisionare una PR, ricercare una libreria o investigare un bug. Questi compiti mostrano il valore dell'esplorazione parallela senza le sfide di coordinamento che vengono con l'implementazione parallela.

354 

355### Evitare conflitti di file

356 

357Due compagni di team che modificano lo stesso file porta a sovrascritture. Suddividete il lavoro in modo che ogni compagno di team possieda un set diverso di file.

358 

359### Monitorare e sterzare

360 

361Controllate il progresso dei compagni di team, reindirizzate gli approcci che non funzionano e sintetizzate i risultati man mano che arrivano. Lasciare un team senza supervisione per troppo tempo aumenta il rischio di sforzo sprecato.

362 

363## Troubleshooting

364 

365### I compagni di team non appaiono

366 

367Se i compagni di team non appaiono dopo aver chiesto a Claude di creare un team:

368 

369* In modalità in-process, i compagni di team potrebbero già essere in esecuzione ma non visibili. Premete Shift+Down per scorrere i compagni di team attivi.

370* Controllate che il compito che avete dato a Claude fosse abbastanza complesso da giustificare un team. Claude decide se generare compagni di team in base al compito.

371* Se avete esplicitamente richiesto split panes, assicuratevi che tmux sia installato e disponibile nel vostro PATH:

372 ```bash theme={null}

373 which tmux

374 ```

375* Per iTerm2, verificate che la CLI `it2` sia installata e che l'API Python sia abilitata nelle preferenze di iTerm2.

376 

377### Troppi prompt di permesso

378 

379Le richieste di permesso dei compagni di team si propagano al lead, il che può creare attrito. Pre-approvate le operazioni comuni nelle vostre [impostazioni di permesso](/it/permissions) prima di generare i compagni di team per ridurre le interruzioni.

380 

381### I compagni di team si fermano su errori

382 

383I compagni di team possono fermarsi dopo aver incontrato errori invece di recuperare. Controllate il loro output utilizzando Shift+Down in modalità in-process o facendo clic sul riquadro in modalità split, quindi:

384 

385* Date loro istruzioni aggiuntive direttamente

386* Generate un compagno di team sostitutivo per continuare il lavoro

387 

388### Il lead si spegne prima che il lavoro sia finito

389 

390Il lead potrebbe decidere che il team è finito prima che tutte le attività siano effettivamente completate. Se questo accade, ditegli di continuare. Potete anche dire al lead di aspettare che i compagni di team finiscano prima di procedere se inizia a fare lavoro invece di delegare.

391 

392### Sessioni tmux orfane

393 

394Se una sessione tmux persiste dopo che il team finisce, potrebbe non essere stata completamente pulita. Elencate le sessioni e uccidete quella creata dal team:

395 

396```bash theme={null}

397tmux ls

398tmux kill-session -t <session-name>

399```

400 

401## Limitazioni

402 

403I team di agenti sono sperimentali. Le limitazioni attuali di cui essere consapevoli:

404 

405* **Nessuna ripresa della sessione con compagni di team in-process**: `/resume` e `/rewind` non ripristinano i compagni di team in-process. Dopo aver ripreso una sessione, il lead potrebbe tentare di messaggiare compagni di team che non esistono più. Se questo accade, dite al lead di generare nuovi compagni di team.

406* **Lo stato dell'attività può ritardare**: i compagni di team a volte non riescono a contrassegnare le attività come completate, il che blocca le attività dipendenti. Se un'attività sembra bloccata, controllate se il lavoro è effettivamente fatto e aggiornate lo stato dell'attività manualmente o dite al lead di spingere il compagno di team.

407* **L'arresto può essere lento**: i compagni di team finiscono la loro richiesta attuale o la chiamata dello strumento prima di spegnersi, il che può richiedere tempo.

408* **Un team per sessione**: un lead può gestire solo un team alla volta. Pulite il team attuale prima di iniziarne uno nuovo.

409* **Nessun team annidato**: i compagni di team non possono generare i loro propri team o compagni di team. Solo il lead può gestire il team.

410* **Il lead è fisso**: la sessione che crea il team è il lead per tutta la sua durata. Non potete promuovere un compagno di team a lead o trasferire la leadership.

411* **Permessi impostati al momento della generazione**: tutti i compagni di team iniziano con la modalità di permesso del lead. Potete cambiare le modalità dei singoli compagni di team dopo la generazione, ma non potete impostare modalità per compagno di team al momento della generazione.

412* **Split panes richiedono tmux o iTerm2**: la modalità in-process predefinita funziona in qualsiasi terminale. La modalità split-pane non è supportata nel terminale integrato di VS Code, Windows Terminal o Ghostty.

413 

414<Tip>

415 **`CLAUDE.md` funziona normalmente**: i compagni di team leggono i file `CLAUDE.md` dalla loro directory di lavoro. Utilizzate questo per fornire una guida specifica del progetto a tutti i compagni di team.

416</Tip>

417 

418## Prossimi passi

419 

420Esplorate approcci correlati per il lavoro parallelo e la delega:

421 

422* **Delega leggera**: i [subagents](/it/sub-agents) generano agenti helper per ricerca o verifica all'interno della vostra sessione, migliore per compiti che non hanno bisogno di coordinamento tra agenti

423* **Sessioni parallele manuali**: i [Git worktrees](/it/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) vi permettono di eseguire più sessioni Claude Code voi stessi senza coordinamento automatico del team

424* **Confrontare gli approcci**: consultate il confronto [subagent vs agent team](/it/features-overview#compare-similar-features) per una suddivisione fianco a fianco

amazon-bedrock.md +589 −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# Claude Code su Amazon Bedrock

6 

7> Scopri come configurare Claude Code tramite Amazon Bedrock, inclusa la configurazione, la configurazione IAM e la risoluzione dei problemi.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="bedrock" />} />

190 

191## Prerequisiti

192 

193Prima di configurare Claude Code con Bedrock, assicurati di avere:

194 

195* Un account AWS con accesso a Bedrock abilitato

196* Accesso ai modelli Claude desiderati (ad esempio, Claude Sonnet 4.6) in Bedrock

197* AWS CLI installato e configurato (facoltativo - necessario solo se non hai un altro meccanismo per ottenere le credenziali)

198* Autorizzazioni IAM appropriate

199 

200Per accedere con le tue credenziali Bedrock, segui [Accedi con Bedrock](#sign-in-with-bedrock) di seguito. Per distribuire Claude Code in un team, utilizza i passaggi di [configurazione manuale](#set-up-manually) e [fissa le versioni del tuo modello](#4-pin-model-versions) prima del rollout.

201 

202## Accedi con Bedrock

203 

204Se hai credenziali AWS e desideri iniziare a utilizzare Claude Code tramite Bedrock, la procedura guidata di accesso ti guida attraverso i passaggi. Completi i prerequisiti lato AWS una volta per account; la procedura guidata gestisce il lato Claude Code.

205 

206<Steps>

207 <Step title="Abilita i modelli Anthropic nel tuo account AWS">

208 Nella [console di Amazon Bedrock](https://console.aws.amazon.com/bedrock/), apri il catalogo dei modelli, seleziona un modello Anthropic e invia il modulo del caso d'uso. L'accesso viene concesso immediatamente dopo l'invio. Vedi [Invia i dettagli del caso d'uso](#1-submit-use-case-details) per AWS Organizations e [Configurazione IAM](#iam-configuration) per le autorizzazioni di cui il tuo ruolo ha bisogno.

209 </Step>

210 

211 <Step title="Avvia Claude Code e scegli Bedrock">

212 Esegui `claude`. Al prompt di accesso, seleziona **3rd-party platform**, quindi **Amazon Bedrock**.

213 </Step>

214 

215 <Step title="Segui i prompt della procedura guidata">

216 Scegli come autenticarti ad AWS: un profilo AWS rilevato dalla tua directory `~/.aws`, una chiave API Bedrock, una chiave di accesso e un segreto, o credenziali già nel tuo ambiente. La procedura guidata rileva la tua regione, verifica quali modelli Claude il tuo account può invocare, e ti consente di fissarli. Salva il risultato nel blocco `env` del tuo [file di impostazioni utente](/it/settings), quindi non è necessario esportare variabili di ambiente da solo.

217 </Step>

218</Steps>

219 

220Dopo aver effettuato l'accesso, esegui `/setup-bedrock` in qualsiasi momento per riaprire la procedura guidata e modificare le tue credenziali, regione o fissaggi di modello.

221 

222## Configurazione manuale

223 

224Per configurare Bedrock tramite variabili di ambiente invece della procedura guidata, ad esempio in CI o in un rollout aziendale con script, segui i passaggi di seguito.

225 

226### 1. Invia i dettagli del caso d'uso

227 

228I nuovi utenti dei modelli Anthropic devono inviare i dettagli del caso d'uso prima di invocare un modello. Questa operazione viene eseguita una sola volta per account AWS.

229 

2301. Assicurati di avere le giuste autorizzazioni IAM descritte di seguito

2312. Accedi alla [console di Amazon Bedrock](https://console.aws.amazon.com/bedrock/)

2323. Seleziona un modello Anthropic dal **catalogo dei modelli**

2334. Completa il modulo del caso d'uso. L'accesso viene concesso immediatamente dopo l'invio.

234 

235Se utilizzi AWS Organizations, puoi inviare il modulo una sola volta dall'account di gestione utilizzando l'API [`PutUseCaseForModelAccess`](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html). Questa chiamata richiede l'autorizzazione IAM `bedrock:PutUseCaseForModelAccess`. L'approvazione si estende agli account figlio automaticamente.

236 

237### 2. Configura le credenziali AWS

238 

239Claude Code utilizza la catena di credenziali predefinita di AWS SDK. Configura le tue credenziali utilizzando uno di questi metodi:

240 

241**Opzione A: Configurazione AWS CLI**

242 

243```bash theme={null}

244aws configure

245```

246 

247**Opzione B: Variabili di ambiente (chiave di accesso)**

248 

249```bash theme={null}

250export AWS_ACCESS_KEY_ID=your-access-key-id

251export AWS_SECRET_ACCESS_KEY=your-secret-access-key

252export AWS_SESSION_TOKEN=your-session-token

253```

254 

255**Opzione C: Variabili di ambiente (profilo SSO)**

256 

257```bash theme={null}

258aws sso login --profile=<your-profile-name>

259 

260export AWS_PROFILE=your-profile-name

261```

262 

263**Opzione D: Credenziali della console di gestione AWS**

264 

265```bash theme={null}

266aws login

267```

268 

269[Scopri di più](https://docs.aws.amazon.com/signin/latest/userguide/command-line-sign-in.html) su `aws login`.

270 

271**Opzione E: Chiavi API Bedrock**

272 

273```bash theme={null}

274export AWS_BEARER_TOKEN_BEDROCK=your-bedrock-api-key

275```

276 

277Le chiavi API Bedrock forniscono un metodo di autenticazione più semplice senza la necessità di credenziali AWS complete. [Scopri di più sulle chiavi API Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/).

278 

279#### Configurazione avanzata delle credenziali

280 

281Claude Code supporta l'aggiornamento automatico delle credenziali per AWS SSO e provider di identità aziendali. Aggiungi queste impostazioni al file di impostazioni di Claude Code (vedi [Impostazioni](/it/settings) per i percorsi dei file).

282 

283Quando Claude Code rileva che le tue credenziali AWS sono scadute (sia localmente in base al loro timestamp che quando Bedrock restituisce un errore di credenziale), eseguirà automaticamente i tuoi comandi `awsAuthRefresh` e/o `awsCredentialExport` configurati per ottenere nuove credenziali prima di riprovare la richiesta.

284 

285##### Configurazione di esempio

286 

287```json theme={null}

288{

289 "awsAuthRefresh": "aws sso login --profile myprofile",

290 "env": {

291 "AWS_PROFILE": "myprofile"

292 }

293}

294```

295 

296##### Impostazioni di configurazione spiegate

297 

298**`awsAuthRefresh`**: Usa questo per i comandi che modificano la directory `.aws`, come l'aggiornamento delle credenziali, della cache SSO o dei file di configurazione. L'output del comando viene visualizzato all'utente, ma l'input interattivo non è supportato. Funziona bene per i flussi SSO basati su browser in cui la CLI visualizza un URL o un codice e completi l'autenticazione nel browser.

299 

300**`awsCredentialExport`**: Usa questo solo se non puoi modificare `.aws` e devi restituire direttamente le credenziali. L'output viene acquisito silenziosamente e non mostrato all'utente. Il comando deve restituire JSON in questo formato:

301 

302```json theme={null}

303{

304 "Credentials": {

305 "AccessKeyId": "value",

306 "SecretAccessKey": "value",

307 "SessionToken": "value"

308 }

309}

310```

311 

312### 3. Configura Claude Code

313 

314Imposta le seguenti variabili di ambiente per abilitare Bedrock:

315 

316```bash theme={null}

317# Abilita integrazione Bedrock

318export CLAUDE_CODE_USE_BEDROCK=1

319export AWS_REGION=us-east-1 # o la tua regione preferita

320 

321# Facoltativo: Sovrascrivi la regione per il modello piccolo/veloce (Haiku).

322# Si applica anche a Bedrock Mantle.

323export ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION=us-west-2

324 

325# Facoltativo: Sovrascrivi l'URL dell'endpoint Bedrock per endpoint personalizzati o gateway

326# export ANTHROPIC_BEDROCK_BASE_URL=https://bedrock-runtime.us-east-1.amazonaws.com

327```

328 

329Quando abiliti Bedrock per Claude Code, tieni presente quanto segue:

330 

331* `AWS_REGION` è una variabile di ambiente obbligatoria. Claude Code non legge dal file di configurazione `.aws` per questa impostazione.

332* Quando si utilizza Bedrock, i comandi `/login` e `/logout` sono disabilitati poiché l'autenticazione viene gestita tramite credenziali AWS.

333* Puoi utilizzare file di impostazioni per variabili di ambiente come `AWS_PROFILE` che non desideri perdere in altri processi. Vedi [Impostazioni](/it/settings) per ulteriori informazioni.

334 

335### 4. Fissa le versioni del modello

336 

337<Warning>

338 Fissa versioni specifiche del modello quando distribuisci a più utenti. Senza fissaggio, alias di modello come `sonnet` e `opus` si risolvono nella versione più recente, che potrebbe non essere ancora disponibile nel tuo account Bedrock quando Anthropic rilascia un aggiornamento. Claude Code [ritorna](#startup-model-checks) alla versione precedente all'avvio quando la versione più recente non è disponibile, ma il fissaggio ti consente di controllare quando i tuoi utenti passano a un nuovo modello.

339</Warning>

340 

341Imposta queste variabili di ambiente su ID di modello Bedrock specifici.

342 

343Senza `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` su Bedrock si risolve in Opus 4.6. Impostalo sull'ID di Opus 4.7 per utilizzare il modello più recente:

344 

345```bash theme={null}

346export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'

347export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-6'

348export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

349```

350 

351Queste variabili utilizzano ID di profili di inferenza tra regioni (con il prefisso `us.`). Se utilizzi un prefisso di regione diverso o profili di inferenza dell'applicazione, regola di conseguenza. Per gli ID di modello attuali e legacy, vedi [Panoramica dei modelli](https://platform.claude.com/docs/en/about-claude/models/overview). Vedi [Configurazione del modello](/it/model-config#pin-models-for-third-party-deployments) per l'elenco completo delle variabili di ambiente.

352 

353Claude Code utilizza questi modelli predefiniti quando non sono impostate variabili di fissaggio:

354 

355| Tipo di modello | Valore predefinito |

356| :--------------------- | :--------------------------------------------- |

357| Modello primario | `us.anthropic.claude-sonnet-4-5-20250929-v1:0` |

358| Modello piccolo/veloce | `us.anthropic.claude-haiku-4-5-20251001-v1:0` |

359 

360Per personalizzare ulteriormente i modelli, utilizza uno di questi metodi:

361 

362```bash theme={null}

363# Utilizzo dell'ID del profilo di inferenza

364export ANTHROPIC_MODEL='global.anthropic.claude-sonnet-4-6'

365export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

366 

367# Utilizzo dell'ARN del profilo di inferenza dell'applicazione

368export ANTHROPIC_MODEL='arn:aws:bedrock:us-east-2:your-account-id:application-inference-profile/your-model-id'

369 

370# Facoltativo: Disabilita il caching dei prompt se necessario

371export DISABLE_PROMPT_CACHING=1

372 

373# Facoltativo: Richiedi una TTL della cache dei prompt di 1 ora invece del valore predefinito di 5 minuti

374export ENABLE_PROMPT_CACHING_1H=1

375```

376 

377<Note>[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) potrebbe non essere disponibile in tutte le regioni. Le scritture della cache con una TTL di 1 ora vengono fatturate a una tariffa più alta rispetto alle scritture di 5 minuti.</Note>

378 

379#### Mappa ogni versione del modello a un profilo di inferenza

380 

381Le variabili di ambiente `ANTHROPIC_DEFAULT_*_MODEL` configurano un profilo di inferenza per famiglia di modelli. Se la tua organizzazione ha bisogno di esporre diverse versioni della stessa famiglia nel selettore `/model`, ciascuna instradato al suo ARN del profilo di inferenza dell'applicazione, utilizza invece l'impostazione `modelOverrides` nel tuo [file di impostazioni](/it/settings#settings-files).

382 

383Questo esempio mappa quattro versioni di Opus a ARN distinti in modo che gli utenti possano passare da uno all'altro senza aggirare i profili di inferenza della tua organizzazione:

384 

385```json theme={null}

386{

387 "modelOverrides": {

388 "claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-47-prod",

389 "claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",

390 "claude-opus-4-5-20251101": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-45-prod",

391 "claude-opus-4-1-20250805": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-41-prod"

392 }

393}

394```

395 

396Quando un utente seleziona una di queste versioni in `/model`, Claude Code chiama Bedrock con l'ARN mappato. Le versioni senza un override tornano all'ID del modello Bedrock integrato o a qualsiasi profilo di inferenza corrispondente scoperto all'avvio. Vedi [Sovrascrivi ID di modello per versione](/it/model-config#override-model-ids-per-version) per i dettagli su come gli override interagiscono con `availableModels` e altre impostazioni del modello.

397 

398## Controlli del modello all'avvio

399 

400Quando Claude Code si avvia con Bedrock configurato, verifica che i modelli che intende utilizzare siano accessibili nel tuo account. Questo controllo richiede Claude Code v2.1.94 o successivo.

401 

402Se hai fissato una versione del modello più vecchia rispetto al valore predefinito corrente di Claude Code, e il tuo account può invocare la versione più recente, Claude Code ti chiede di aggiornare il fissaggio. Accettare scrive il nuovo ID del modello nel tuo [file di impostazioni utente](/it/settings) e riavvia Claude Code. Rifiutare viene ricordato fino al prossimo cambio di versione predefinita. I fissaggi che puntano a un [ARN del profilo di inferenza dell'applicazione](#map-each-model-version-to-an-inference-profile) vengono saltati, poiché sono gestiti dal tuo amministratore.

403 

404Se non hai fissato un modello e il valore predefinito corrente non è disponibile nel tuo account, Claude Code ritorna alla versione precedente per la sessione corrente e mostra un avviso. Il fallback non è persistente. Abilita il modello più recente nel tuo account Bedrock o [fissa una versione](#4-pin-model-versions) per rendere la scelta permanente.

405 

406## Configurazione IAM

407 

408Crea una policy IAM con le autorizzazioni richieste per Claude Code:

409 

410```json theme={null}

411{

412 "Version": "2012-10-17",

413 "Statement": [

414 {

415 "Sid": "AllowModelAndInferenceProfileAccess",

416 "Effect": "Allow",

417 "Action": [

418 "bedrock:InvokeModel",

419 "bedrock:InvokeModelWithResponseStream",

420 "bedrock:ListInferenceProfiles",

421 "bedrock:GetInferenceProfile"

422 ],

423 "Resource": [

424 "arn:aws:bedrock:*:*:inference-profile/*",

425 "arn:aws:bedrock:*:*:application-inference-profile/*",

426 "arn:aws:bedrock:*:*:foundation-model/*"

427 ]

428 },

429 {

430 "Sid": "AllowMarketplaceSubscription",

431 "Effect": "Allow",

432 "Action": [

433 "aws-marketplace:ViewSubscriptions",

434 "aws-marketplace:Subscribe"

435 ],

436 "Resource": "*",

437 "Condition": {

438 "StringEquals": {

439 "aws:CalledViaLast": "bedrock.amazonaws.com"

440 }

441 }

442 }

443 ]

444}

445```

446 

447Per autorizzazioni più restrittive, puoi limitare la Resource a ARN di profili di inferenza specifici.

448 

449`bedrock:GetInferenceProfile` consente a Claude Code di risolvere un [ARN del profilo di inferenza dell'applicazione](#map-each-model-version-to-an-inference-profile) al suo modello di fondazione di supporto, che viene utilizzato per selezionare la forma di richiesta corretta per quel modello.

450 

451Se il token non dispone di questa autorizzazione, Claude Code si recupera automaticamente ritentando una volta con la forma alternativa, quindi le richieste hanno comunque successo ma ogni nuovo modello aggiunge un round-trip aggiuntivo. Concedere l'autorizzazione evita il retry. Questo si applica più spesso alle distribuzioni `AWS_BEARER_TOKEN_BEDROCK`, dove la policy del token è tipicamente più ristretta di un ruolo IAM completo.

452 

453Per i dettagli, vedi [Documentazione IAM di Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html).

454 

455<Note>

456 Crea un account AWS dedicato per Claude Code per semplificare il tracciamento dei costi e il controllo degli accessi.

457</Note>

458 

459## Finestra di contesto da 1M token

460 

461Claude Opus 4.7, Opus 4.6 e Sonnet 4.6 supportano la [finestra di contesto da 1M token](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) su Amazon Bedrock. Claude Code abilita automaticamente la finestra di contesto estesa quando selezioni una variante di modello da 1M.

462 

463La [procedura guidata di configurazione](#sign-in-with-bedrock) offre un'opzione di contesto da 1M quando fissa i modelli. Per abilitarla per un modello fissato manualmente, aggiungi `[1m]` all'ID del modello. Vedi [Fissa i modelli per distribuzioni di terze parti](/it/model-config#pin-models-for-third-party-deployments) per i dettagli.

464 

465## AWS Guardrails

466 

467[Amazon Bedrock Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) ti consente di implementare il filtro dei contenuti per Claude Code. Crea un Guardrail nella [console di Amazon Bedrock](https://console.aws.amazon.com/bedrock/), pubblica una versione, quindi aggiungi le intestazioni Guardrail al tuo [file di impostazioni](/it/settings). Abilita l'inferenza tra regioni sul tuo Guardrail se stai utilizzando profili di inferenza tra regioni.

468 

469Configurazione di esempio:

470 

471```json theme={null}

472{

473 "env": {

474 "ANTHROPIC_CUSTOM_HEADERS": "X-Amzn-Bedrock-GuardrailIdentifier: your-guardrail-id\nX-Amzn-Bedrock-GuardrailVersion: 1"

475 }

476}

477```

478 

479## Utilizza l'endpoint Mantle

480 

481Mantle è un endpoint di Amazon Bedrock che serve i modelli Claude attraverso la forma API nativa di Anthropic piuttosto che l'API Invoke di Bedrock. Utilizza le stesse credenziali AWS, autorizzazioni IAM e configurazione `awsAuthRefresh` descritte in precedenza in questa pagina.

482 

483<Note>

484 Mantle richiede Claude Code v2.1.94 o successivo. Esegui `claude --version` per verificare.

485</Note>

486 

487### Abilita Mantle

488 

489Con le credenziali AWS già configurate, imposta `CLAUDE_CODE_USE_MANTLE` per instradare le richieste all'endpoint Mantle:

490 

491```bash theme={null}

492export CLAUDE_CODE_USE_MANTLE=1

493export AWS_REGION=us-east-1

494```

495 

496Claude Code costruisce l'URL dell'endpoint da `AWS_REGION`. Per sovrascriverlo per un endpoint personalizzato o gateway, imposta `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`.

497 

498Esegui `/status` all'interno di Claude Code per confermare. La riga del provider mostra `Amazon Bedrock (Mantle)` quando Mantle è attivo.

499 

500### Seleziona un modello Mantle

501 

502Mantle utilizza ID di modello con prefisso `anthropic.` e senza suffisso di versione, ad esempio `anthropic.claude-haiku-4-5`. I modelli disponibili per il tuo account dipendono da ciò che la tua organizzazione ha ricevuto; gli ID di modello aggiuntivi sono elencati nei tuoi materiali di onboarding da AWS. Contatta il tuo team di account AWS per richiedere l'accesso ai modelli consentiti.

503 

504Imposta il modello con il flag `--model` o con `/model` all'interno di Claude Code:

505 

506```bash theme={null}

507claude --model anthropic.claude-haiku-4-5

508```

509 

510### Esegui Mantle insieme all'API Invoke

511 

512I modelli disponibili per te su Mantle potrebbero non includere ogni modello che utilizzi oggi. Impostare sia `CLAUDE_CODE_USE_BEDROCK` che `CLAUDE_CODE_USE_MANTLE` consente a Claude Code di chiamare entrambi gli endpoint dalla stessa sessione. Gli ID di modello che corrispondono al formato Mantle vengono instradati a Mantle, e tutti gli altri ID di modello vanno all'API Invoke di Bedrock.

513 

514```bash theme={null}

515export CLAUDE_CODE_USE_BEDROCK=1

516export CLAUDE_CODE_USE_MANTLE=1

517```

518 

519Per visualizzare un modello Mantle nel selettore `/model`, elenca il suo ID in `availableModels` nel tuo [file di impostazioni](/it/settings). Questa impostazione limita anche il selettore alle voci elencate, quindi includi ogni alias che desideri mantenere disponibile:

520 

521```json theme={null}

522{

523 "availableModels": ["opus", "sonnet", "haiku", "anthropic.claude-haiku-4-5"]

524}

525```

526 

527Le voci con il prefisso `anthropic.` vengono aggiunte come opzioni del selettore personalizzato e instradate a Mantle. Sostituisci `anthropic.claude-haiku-4-5` con l'ID del modello che il tuo account ha ricevuto. Vedi [Limita la selezione del modello](/it/model-config#restrict-model-selection) per come `availableModels` interagisce con altre impostazioni del modello.

528 

529Quando entrambi i provider sono attivi, `/status` mostra `Amazon Bedrock + Amazon Bedrock (Mantle)`.

530 

531### Instrada Mantle attraverso un gateway

532 

533Se la tua organizzazione instrada il traffico del modello attraverso un [gateway LLM](/it/llm-gateway) centralizzato che inietta le credenziali AWS lato server, disabilita l'autenticazione lato client in modo che Claude Code invii richieste senza firme SigV4 o intestazioni `x-api-key`:

534 

535```bash theme={null}

536export CLAUDE_CODE_USE_MANTLE=1

537export CLAUDE_CODE_SKIP_MANTLE_AUTH=1

538export ANTHROPIC_BEDROCK_MANTLE_BASE_URL=https://your-gateway.example.com

539```

540 

541### Variabili di ambiente Mantle

542 

543Queste variabili sono specifiche dell'endpoint Mantle. Vedi [Variabili di ambiente](/it/env-vars) per l'elenco completo.

544 

545| Variabile | Scopo |

546| :-------------------------------------- | :----------------------------------------------------------------------------------- |

547| `CLAUDE_CODE_USE_MANTLE` | Abilita l'endpoint Mantle. Imposta su `1` o `true`. |

548| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Sovrascrivi l'URL dell'endpoint Mantle predefinito |

549| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Salta l'autenticazione lato client per configurazioni proxy |

550| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Sovrascrivi la regione AWS per il modello della classe Haiku (condiviso con Bedrock) |

551 

552## Risoluzione dei problemi

553 

554### Loop di autenticazione con SSO e proxy aziendali

555 

556Se le schede del browser si aprono ripetutamente quando si utilizza AWS SSO, rimuovi l'impostazione `awsAuthRefresh` dal tuo [file di impostazioni](/it/settings). Questo può accadere quando le VPN aziendali o i proxy di ispezione TLS interrompono il flusso del browser SSO. Claude Code tratta la connessione interrotta come un errore di autenticazione, riesegue `awsAuthRefresh` e si ripete indefinitamente.

557 

558Se il tuo ambiente di rete interferisce con i flussi SSO automatici basati su browser, utilizza `aws sso login` manualmente prima di avviare Claude Code invece di affidarti a `awsAuthRefresh`.

559 

560### Problemi di regione

561 

562Se riscontri problemi di regione:

563 

564* Controlla la disponibilità del modello: `aws bedrock list-inference-profiles --region your-region`

565* Passa a una regione supportata: `export AWS_REGION=us-east-1`

566* Considera l'utilizzo di profili di inferenza per l'accesso tra regioni

567 

568Se ricevi un errore "on-demand throughput isn't supported":

569 

570* Specifica il modello come ID di [profilo di inferenza](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)

571 

572Claude Code utilizza l'API Bedrock [Invoke](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) e non supporta l'API Converse.

573 

574### Errori dell'endpoint Mantle

575 

576Se `/status` non mostra `Amazon Bedrock (Mantle)` dopo aver impostato `CLAUDE_CODE_USE_MANTLE`, la variabile non sta raggiungendo il processo. Conferma che sia esportata nella shell in cui hai lanciato `claude`, o impostala nel blocco `env` del tuo [file di impostazioni](/it/settings).

577 

578Un `403` dall'endpoint Mantle con credenziali valide significa che il tuo account AWS non ha ricevuto l'accesso al modello che hai richiesto. Contatta il tuo team di account AWS per richiedere l'accesso.

579 

580Un `400` che nomina l'ID del modello significa che quel modello non è servito su Mantle. Mantle ha il suo proprio lineup di modelli separato dal catalogo Bedrock standard, quindi gli ID del profilo di inferenza come `us.anthropic.claude-sonnet-4-6` non funzioneranno. Utilizza un ID nel formato Mantle, o abilita [entrambi gli endpoint](#run-mantle-alongside-the-invoke-api) in modo che Claude Code instrada ogni richiesta all'endpoint in cui il modello è disponibile.

581 

582## Risorse aggiuntive

583 

584* [Documentazione di Bedrock](https://docs.aws.amazon.com/bedrock/)

585* [Prezzi di Bedrock](https://aws.amazon.com/bedrock/pricing/)

586* [Profili di inferenza di Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)

587* [Burndown dei token di Bedrock e quote](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas-token-burndown.html)

588* [Claude Code su Amazon Bedrock: Guida di configurazione rapida](https://community.aws/content/2tXkZKrZzlrlu0KfH8gST5Dkppq/claude-code-on-amazon-bedrock-quick-setup-guide)

589* [Implementazione del monitoraggio di Claude Code (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md)

analytics.md +224 −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# Traccia l'utilizzo del team con l'analittica

6 

7> Visualizza le metriche di utilizzo di Claude Code, traccia l'adozione e misura la velocità di ingegneria nel dashboard di analittica.

8 

9Claude Code fornisce dashboard di analittica per aiutare le organizzazioni a comprendere i modelli di utilizzo degli sviluppatori, tracciare le metriche di contributo e misurare come Claude Code influisce sulla velocità di ingegneria. Accedi al dashboard per il tuo piano:

10 

11| Piano | URL Dashboard | Include | Leggi di più |

12| ----------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |

13| Claude for Teams / Enterprise | [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code) | Metriche di utilizzo, metriche di contributo con integrazione GitHub, leaderboard, esportazione dati | [Dettagli](#access-analytics-for-teams-and-enterprise) |

14| API (Claude Console) | [platform.claude.com/claude-code](https://platform.claude.com/claude-code) | Metriche di utilizzo, tracciamento della spesa, approfondimenti del team | [Dettagli](#access-analytics-for-api-customers) |

15 

16## Access analytics for Teams and Enterprise

17 

18Accedi a [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code). Gli amministratori e i proprietari possono visualizzare il dashboard.

19 

20Il dashboard di Teams e Enterprise include:

21 

22* **Metriche di utilizzo**: righe di codice accettate, tasso di accettazione dei suggerimenti, utenti attivi giornalieri e sessioni

23* **Metriche di contributo**: PR e righe di codice spedite con assistenza di Claude Code, con [integrazione GitHub](#enable-contribution-metrics)

24* **Leaderboard**: i principali contributori classificati per utilizzo di Claude Code

25* **Esportazione dati**: scarica i dati di contributo come CSV per report personalizzati

26 

27### Enable contribution metrics

28 

29<Note>

30 Le metriche di contributo sono in beta pubblica e disponibili sui piani Claude for Teams e Claude for Enterprise. Queste metriche coprono solo gli utenti all'interno della tua organizzazione claude.ai. L'utilizzo tramite l'API Claude Console o integrazioni di terze parti non è incluso.

31</Note>

32 

33I dati di utilizzo e adozione sono disponibili per tutti gli account Claude for Teams e Claude for Enterprise. Le metriche di contributo richiedono una configurazione aggiuntiva per connettere la tua organizzazione GitHub.

34 

35Hai bisogno del ruolo di proprietario per configurare le impostazioni di analittica. Un amministratore GitHub deve installare l'app GitHub.

36 

37<Warning>

38 Le metriche di contributo non sono disponibili per le organizzazioni con [Zero Data Retention](/it/zero-data-retention) abilitato. Il dashboard di analittica mostrerà solo le metriche di utilizzo.

39</Warning>

40 

41<Steps>

42 <Step title="Installa l'app GitHub">

43 Un amministratore GitHub installa l'app Claude GitHub sull'account GitHub della tua organizzazione su [github.com/apps/claude](https://github.com/apps/claude).

44 </Step>

45 

46 <Step title="Abilita l'analittica di Claude Code">

47 Un proprietario Claude accede a [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) e abilita la funzione di analittica di Claude Code.

48 </Step>

49 

50 <Step title="Abilita l'analittica di GitHub">

51 Sulla stessa pagina, abilita l'interruttore "GitHub analytics".

52 </Step>

53 

54 <Step title="Autentica con GitHub">

55 Completa il flusso di autenticazione GitHub e seleziona quali organizzazioni GitHub includere nell'analisi.

56 </Step>

57</Steps>

58 

59I dati in genere appaiono entro 24 ore dopo l'abilitazione, con aggiornamenti giornalieri. Se non appaiono dati, potresti visualizzare uno di questi messaggi:

60 

61* **"GitHub app required"**: installa l'app GitHub per visualizzare le metriche di contributo

62* **"Data processing in progress"**: torna tra qualche giorno e conferma che l'app GitHub è installata se i dati non appaiono

63 

64Le metriche di contributo supportano GitHub Cloud e GitHub Enterprise Server.

65 

66### Review summary metrics

67 

68<Note>

69 Queste metriche sono deliberatamente conservative e rappresentano una sottostima dell'impatto effettivo di Claude Code. Solo le righe e i PR dove c'è un'alta confidenza nel coinvolgimento di Claude Code vengono conteggiati.

70</Note>

71 

72Il dashboard visualizza queste metriche di riepilogo in alto:

73 

74* **PRs with CC**: conteggio totale delle pull request unite che contengono almeno una riga di codice scritta con Claude Code

75* **Lines of code with CC**: righe totali di codice in tutti i PR uniti che sono stati scritti con assistenza di Claude Code. Solo le "righe effettive" vengono conteggiate: righe con più di 3 caratteri dopo la normalizzazione, escludendo righe vuote e righe con solo parentesi o punteggiatura banale.

76* **PRs with Claude Code (%)**: percentuale di tutti i PR uniti che contengono codice assistito da Claude Code

77* **Suggestion accept rate**: percentuale di volte in cui gli utenti accettano i suggerimenti di modifica del codice di Claude Code, incluso l'utilizzo degli strumenti Edit, Write e NotebookEdit

78* **Lines of code accepted**: righe totali di codice scritte da Claude Code che gli utenti hanno accettato nelle loro sessioni. Questo esclude i suggerimenti rifiutati e non traccia le eliminazioni successive.

79 

80### Explore the charts

81 

82Il dashboard include diversi grafici per visualizzare le tendenze nel tempo.

83 

84#### Track adoption

85 

86Il grafico di adozione mostra le tendenze di utilizzo giornaliero:

87 

88* **users**: utenti attivi giornalieri

89* **sessions**: numero di sessioni attive di Claude Code al giorno

90 

91#### Measure PRs per user

92 

93Questo grafico visualizza l'attività dei singoli sviluppatori nel tempo:

94 

95* **PRs per user**: numero totale di PR uniti al giorno diviso per utenti attivi giornalieri

96* **users**: utenti attivi giornalieri

97 

98Usa questo per comprendere come la produttività individuale cambia man mano che aumenta l'adozione di Claude Code.

99 

100#### View pull requests breakdown

101 

102Il grafico Pull requests mostra una suddivisione giornaliera dei PR uniti:

103 

104* **PRs with CC**: pull request contenenti codice assistito da Claude Code

105* **PRs without CC**: pull request senza codice assistito da Claude Code

106 

107Attiva la visualizzazione **Lines of code** per vedere la stessa suddivisione per righe di codice anziché per conteggio di PR.

108 

109#### Find top contributors

110 

111La leaderboard mostra i 10 utenti principali classificati per volume di contributo. Attiva tra:

112 

113* **Pull requests**: mostra PR con Claude Code rispetto a tutti i PR per ogni utente

114* **Lines of code**: mostra righe con Claude Code rispetto a tutte le righe per ogni utente

115 

116Fai clic su **Export all users** per scaricare i dati di contributo completi per tutti gli utenti come file CSV. L'esportazione include tutti gli utenti, non solo i 10 principali visualizzati.

117 

118### PR attribution

119 

120Quando le metriche di contributo sono abilitate, Claude Code analizza le pull request unite per determinare quale codice è stato scritto con assistenza di Claude Code. Questo viene fatto abbinando l'attività della sessione di Claude Code al codice in ogni PR.

121 

122#### Tagging criteria

123 

124I PR sono etichettati come "with Claude Code" se contengono almeno una riga di codice scritta durante una sessione di Claude Code. Il sistema utilizza un abbinamento conservativo: solo il codice dove c'è un'alta confidenza nel coinvolgimento di Claude Code viene conteggiato come assistito.

125 

126#### Attribution process

127 

128Quando una pull request viene unita:

129 

1301. Le righe aggiunte vengono estratte dal diff del PR

1312. Le sessioni di Claude Code che hanno modificato i file corrispondenti entro una finestra temporale vengono identificate

1323. Le righe del PR vengono abbinate all'output di Claude Code utilizzando più strategie

1334. Le metriche vengono calcolate per le righe assistite da AI e le righe totali

134 

135Prima del confronto, le righe vengono normalizzate: gli spazi bianchi vengono eliminati, gli spazi multipli vengono compressi, le virgolette vengono standardizzate e il testo viene convertito in minuscolo.

136 

137Le pull request unite contenenti righe assistite da Claude Code sono etichettate come `claude-code-assisted` in GitHub.

138 

139#### Time window

140 

141Le sessioni da 21 giorni prima a 2 giorni dopo la data di unione del PR vengono considerate per l'abbinamento dell'attribuzione.

142 

143#### Excluded files

144 

145Alcuni file vengono automaticamente esclusi dall'analisi perché sono generati automaticamente:

146 

147* File di blocco: package-lock.json, yarn.lock, Cargo.lock e simili

148* Codice generato: output Protobuf, artefatti di build, file minificati

149* Directory di build: dist/, build/, node\_modules/, target/

150* Fixture di test: snapshot, cassette, dati mock

151* Righe superiori a 1.000 caratteri, che probabilmente sono minificate o generate

152 

153#### Attribution notes

154 

155Tieni presenti questi dettagli aggiuntivi quando interpreti i dati di attribuzione:

156 

157* Il codice sostanzialmente riscritto dagli sviluppatori, con una differenza superiore al 20%, non viene attribuito a Claude Code

158* Le sessioni al di fuori della finestra di 21 giorni non vengono considerate

159* L'algoritmo non considera il ramo di origine o di destinazione del PR quando esegue l'attribuzione

160 

161### Get the most from analytics

162 

163Usa le metriche di contributo per dimostrare il ROI, identificare i modelli di adozione e trovare i membri del team che possono aiutare gli altri a iniziare.

164 

165#### Monitor adoption

166 

167Traccia il grafico di adozione e i conteggi degli utenti per identificare:

168 

169* Utenti attivi che possono condividere le migliori pratiche

170* Tendenze di adozione complessiva nella tua organizzazione

171* Cali nell'utilizzo che potrebbero indicare attrito o problemi

172 

173#### Measure ROI

174 

175Le metriche di contributo aiutano a rispondere a "Vale la pena investire in questo strumento?" con dati dal tuo codebase:

176 

177* Traccia i cambiamenti nei PR per utente nel tempo man mano che aumenta l'adozione

178* Confronta i PR e le righe di codice spedite con e senza Claude Code

179* Usa insieme alle [metriche DORA](https://dora.dev/), alla velocità dello sprint o ad altri KPI di ingegneria per comprendere i cambiamenti derivanti dall'adozione di Claude Code

180 

181#### Identify power users

182 

183La leaderboard ti aiuta a trovare i membri del team con un'elevata adozione di Claude Code che possono:

184 

185* Condividere tecniche di prompt e flussi di lavoro con il team

186* Fornire feedback su ciò che funziona bene

187* Aiutare a integrare i nuovi utenti

188 

189#### Access data programmatically

190 

191Per interrogare questi dati tramite GitHub, cerca i PR etichettati con `claude-code-assisted`.

192 

193## Access analytics for API customers

194 

195I clienti API che utilizzano Claude Console possono accedere all'analittica su [platform.claude.com/claude-code](https://platform.claude.com/claude-code). Hai bisogno dell'autorizzazione UsageView per accedere al dashboard, che viene concessa ai ruoli Developer, Billing, Admin, Owner e Primary Owner.

196 

197<Note>

198 Le metriche di contributo con integrazione GitHub non sono attualmente disponibili per i clienti API. Il dashboard della console mostra solo le metriche di utilizzo e spesa.

199</Note>

200 

201Il dashboard della console visualizza:

202 

203* **Lines of code accepted**: righe totali di codice scritte da Claude Code che gli utenti hanno accettato nelle loro sessioni. Questo esclude i suggerimenti rifiutati e non traccia le eliminazioni successive.

204* **Suggestion accept rate**: percentuale di volte in cui gli utenti accettano l'utilizzo dello strumento di modifica del codice, inclusi gli strumenti Edit, Write e NotebookEdit.

205* **Activity**: utenti attivi giornalieri e sessioni mostrate su un grafico.

206* **Spend**: costi API giornalieri in dollari insieme al conteggio degli utenti.

207 

208### View team insights

209 

210La tabella di approfondimenti del team mostra le metriche per utente:

211 

212* **Members**: tutti gli utenti che si sono autenticati a Claude Code. Gli utenti con chiave API vengono visualizzati per identificatore di chiave, gli utenti OAuth vengono visualizzati per indirizzo email.

213* **Spend this month**: costi API totali per utente per il mese corrente.

214* **Lines this month**: totale per utente delle righe di codice accettate per il mese corrente.

215 

216<Note>

217 Le cifre di spesa nel dashboard della console sono stime a scopo di analittica. Per i costi effettivi, consulta la tua pagina di fatturazione.

218</Note>

219 

220## Related resources

221 

222* [Monitoring with OpenTelemetry](/it/monitoring-usage): esporta metriche e eventi in tempo reale al tuo stack di osservabilità

223* [Manage costs effectively](/it/costs): imposta limiti di spesa e ottimizza l'utilizzo dei token

224* [Permissions](/it/permissions): configura ruoli e autorizzazioni

authentication.md +155 −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# Autenticazione

6 

7> Accedi a Claude Code e configura l'autenticazione per singoli utenti, team e organizzazioni.

8 

9Claude Code supporta molteplici metodi di autenticazione a seconda della Vostra configurazione. I singoli utenti possono accedere con un account Claude.ai, mentre i team possono utilizzare Claude for Teams o Enterprise, la Claude Console, o un provider cloud come Amazon Bedrock, Google Vertex AI, o Microsoft Foundry.

10 

11## Accedi a Claude Code

12 

13Dopo aver [installato Claude Code](/it/setup#install-claude-code), eseguite `claude` nel vostro terminale. Al primo avvio, Claude Code apre una finestra del browser per consentirvi di accedere.

14 

15Se il browser non si apre automaticamente, premete `c` per copiare l'URL di accesso negli appunti, quindi incollatelo nel vostro browser.

16 

17Se il vostro browser mostra un codice di accesso invece di reindirizzarvi dopo aver effettuato l'accesso, incollatelo nel terminale al prompt `Paste code here if prompted`. Questo accade quando il browser non riesce a raggiungere il server di callback locale di Claude Code, il che è comune in WSL2, sessioni SSH e container.

18 

19Potete autenticarvi con uno di questi tipi di account:

20 

21* **Sottoscrizione Claude Pro o Max**: accedete con il vostro account Claude.ai. Sottoscrivete su [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max).

22* **Claude for Teams o Enterprise**: accedete con l'account Claude.ai che l'amministratore del vostro team vi ha invitato a utilizzare.

23* **Claude Console**: accedete con le vostre credenziali Console. L'amministratore deve avervi [invitato](#claude-console-authentication) prima.

24* **Provider cloud**: se la vostra organizzazione utilizza [Amazon Bedrock](/it/amazon-bedrock), [Google Vertex AI](/it/google-vertex-ai), o [Microsoft Foundry](/it/microsoft-foundry), impostate le variabili di ambiente richieste prima di eseguire `claude`. Non è necessario alcun accesso tramite browser.

25 

26Per disconnettervi e autenticarvi di nuovo, digitate `/logout` al prompt di Claude Code.

27 

28Se avete difficoltà ad accedere, consultate la sezione [risoluzione dei problemi di autenticazione](/it/troubleshoot-install#login-and-authentication).

29 

30## Configurare l'autenticazione del team

31 

32Per team e organizzazioni, potete configurare l'accesso a Claude Code in uno di questi modi:

33 

34* [Claude for Teams o Enterprise](#claude-for-teams-or-enterprise), consigliato per la maggior parte dei team

35* [Claude Console](#claude-console-authentication)

36* [Amazon Bedrock](/it/amazon-bedrock)

37* [Google Vertex AI](/it/google-vertex-ai)

38* [Microsoft Foundry](/it/microsoft-foundry)

39 

40### Claude for Teams o Enterprise

41 

42[Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams#team-&-enterprise) e [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise) offrono la migliore esperienza per le organizzazioni che utilizzano Claude Code. I membri del team ottengono accesso sia a Claude Code che a Claude sul web con fatturazione centralizzata e gestione del team.

43 

44* **Claude for Teams**: piano self-service con funzionalità di collaborazione, strumenti di amministrazione e gestione della fatturazione. Ideale per team più piccoli.

45* **Claude for Enterprise**: aggiunge SSO, domain capture, autorizzazioni basate su ruoli, API di conformità e impostazioni di policy gestite per configurazioni Claude Code a livello organizzativo. Ideale per organizzazioni più grandi con requisiti di sicurezza e conformità.

46 

47<Steps>

48 <Step title="Sottoscrivete">

49 Sottoscrivete a [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams_step#team-&-enterprise) o contattate il team di vendita per [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise_step).

50 </Step>

51 

52 <Step title="Invitate i membri del team">

53 Invitate i membri del team dalla dashboard di amministrazione.

54 </Step>

55 

56 <Step title="Installate e accedete">

57 I membri del team installano Claude Code e accedono con i loro account Claude.ai.

58 </Step>

59</Steps>

60 

61### Autenticazione Claude Console

62 

63Per le organizzazioni che preferiscono la fatturazione basata su API, potete configurare l'accesso tramite la Claude Console.

64 

65<Steps>

66 <Step title="Creare o utilizzare un account Console">

67 Utilizzate il Vostro account Claude Console esistente o createne uno nuovo.

68 </Step>

69 

70 <Step title="Aggiungere utenti">

71 Potete aggiungere utenti tramite uno dei due metodi:

72 

73 * Invitate utenti in massa dalla Console: Settings -> Members -> Invite

74 * [Configurate SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)

75 </Step>

76 

77 <Step title="Assegnare ruoli">

78 Quando invitate utenti, assegnate uno dei seguenti:

79 

80 * **Ruolo Claude Code**: gli utenti possono solo creare chiavi API Claude Code

81 * **Ruolo Developer**: gli utenti possono creare qualsiasi tipo di chiave API

82 </Step>

83 

84 <Step title="Gli utenti completano la configurazione">

85 Ogni utente invitato deve:

86 

87 * Accettare l'invito Console

88 * [Controllare i requisiti di sistema](/it/setup#system-requirements)

89 * [Installare Claude Code](/it/setup#install-claude-code)

90 * Accedere con le credenziali dell'account Console

91 </Step>

92</Steps>

93 

94### Autenticazione del provider cloud

95 

96Per i team che utilizzano Amazon Bedrock, Google Vertex AI, o Microsoft Foundry:

97 

98<Steps>

99 <Step title="Seguire la configurazione del provider">

100 Seguite la [documentazione Bedrock](/it/amazon-bedrock), la [documentazione Vertex](/it/google-vertex-ai), o la [documentazione Microsoft Foundry](/it/microsoft-foundry).

101 </Step>

102 

103 <Step title="Distribuire la configurazione">

104 Distribuite le variabili di ambiente e le istruzioni per generare credenziali cloud ai Vostri utenti. Leggete di più su come [gestire la configurazione qui](/it/settings).

105 </Step>

106 

107 <Step title="Installare Claude Code">

108 Gli utenti possono [installare Claude Code](/it/setup#install-claude-code).

109 </Step>

110</Steps>

111 

112## Gestione delle credenziali

113 

114Claude Code gestisce in modo sicuro le Vostre credenziali di autenticazione:

115 

116* **Posizione di archiviazione**: su macOS, le credenziali sono archiviate nel Keychain macOS crittografato. Su Linux e Windows, le credenziali sono archiviate in `~/.claude/.credentials.json`, o sotto `$CLAUDE_CONFIG_DIR` se quella variabile è impostata. Su Linux, il file viene scritto con modalità `0600`; su Windows, eredita i controlli di accesso della directory del profilo utente.

117* **Tipi di autenticazione supportati**: credenziali Claude.ai, credenziali API Claude, Azure Auth, Bedrock Auth, e Vertex Auth.

118* **Script di credenziali personalizzati**: l'impostazione [`apiKeyHelper`](/it/settings#available-settings) può essere configurata per eseguire uno script shell che restituisce una chiave API.

119* **Intervalli di aggiornamento**: per impostazione predefinita, `apiKeyHelper` viene chiamato dopo 5 minuti o in risposta a HTTP 401. Impostate la variabile di ambiente `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` per intervalli di aggiornamento personalizzati.

120* **Avviso di helper lento**: se `apiKeyHelper` impiega più di 10 secondi per restituire una chiave, Claude Code visualizza un avviso nella barra del prompt mostrando il tempo trascorso. Se vedete questo avviso regolarmente, verificate se lo script di credenziali può essere ottimizzato.

121 

122`apiKeyHelper`, `ANTHROPIC_API_KEY`, e `ANTHROPIC_AUTH_TOKEN` si applicano solo alle sessioni CLI del terminale. Claude Desktop e le sessioni remote utilizzano esclusivamente OAuth e non chiamano `apiKeyHelper` né leggono variabili di ambiente della chiave API.

123 

124### Precedenza di autenticazione

125 

126Quando sono presenti più credenziali, Claude Code ne sceglie una in questo ordine:

127 

1281. Credenziali del provider cloud, quando `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, o `CLAUDE_CODE_USE_FOUNDRY` è impostato. Consultate [integrazioni di terze parti](/it/third-party-integrations) per la configurazione.

1292. Variabile di ambiente `ANTHROPIC_AUTH_TOKEN`. Inviata come header `Authorization: Bearer`. Utilizzatela quando si instrada attraverso un [gateway LLM o proxy](/it/llm-gateway) che si autentica con bearer token anziché chiavi API Anthropic.

1303. Variabile di ambiente `ANTHROPIC_API_KEY`. Inviata come header `X-Api-Key`. Utilizzatela per l'accesso diretto all'API Anthropic con una chiave dalla [Claude Console](https://platform.claude.com). In modalità interattiva, vi viene chiesto una volta di approvare o rifiutare la chiave, e la Vostra scelta viene ricordata. Per cambiarla in seguito, utilizzate l'interruttore "Use custom API key" in `/config`. In modalità non interattiva (`-p`), la chiave viene sempre utilizzata quando presente.

1314. Output dello script [`apiKeyHelper`](/it/settings#available-settings). Utilizzatelo per credenziali dinamiche o rotanti, come token di breve durata recuperati da un vault.

1325. Variabile di ambiente `CLAUDE_CODE_OAUTH_TOKEN`. Un token OAuth di lunga durata generato da [`claude setup-token`](#generate-a-long-lived-token). Utilizzatelo per pipeline CI e script dove l'accesso tramite browser non è disponibile.

1336. Credenziali OAuth di sottoscrizione da `/login`. Questo è il valore predefinito per gli utenti Claude Pro, Max, Team, ed Enterprise.

134 

135Se avete una sottoscrizione Claude attiva ma avete anche `ANTHROPIC_API_KEY` impostato nel Vostro ambiente, la chiave API ha la precedenza una volta approvata. Questo può causare errori di autenticazione se la chiave appartiene a un'organizzazione disabilitata o scaduta. Eseguite `unset ANTHROPIC_API_KEY` per tornare alla Vostra sottoscrizione, e controllate `/status` per confermare quale metodo è attivo.

136 

137[Claude Code sul Web](/it/claude-code-on-the-web) utilizza sempre le Vostre credenziali di sottoscrizione. `ANTHROPIC_API_KEY` e `ANTHROPIC_AUTH_TOKEN` nell'ambiente sandbox non le sovrascrivono.

138 

139### Generare un token di lunga durata

140 

141Per pipeline CI, script, o altri ambienti dove l'accesso interattivo tramite browser non è disponibile, generate un token OAuth di un anno con `claude setup-token`:

142 

143```bash theme={null}

144claude setup-token

145```

146 

147Il comando vi guida attraverso l'autorizzazione OAuth e stampa un token nel terminale. Non salva il token da nessuna parte; copiatelo e impostatelo come variabile di ambiente `CLAUDE_CODE_OAUTH_TOKEN` ovunque vogliate autenticarvi:

148 

149```bash theme={null}

150export CLAUDE_CODE_OAUTH_TOKEN=your-token

151```

152 

153Questo token si autentica con la Vostra sottoscrizione Claude e richiede un piano Pro, Max, Team, o Enterprise. È limitato solo all'inferenza e non può stabilire sessioni di [Remote Control](/it/remote-control).

154 

155[Bare mode](/it/headless#start-faster-with-bare-mode) non legge `CLAUDE_CODE_OAUTH_TOKEN`. Se il Vostro script passa `--bare`, autenticatevi con `ANTHROPIC_API_KEY` o un `apiKeyHelper` invece.

auto-mode-config.md +178 −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# Configurare la modalità auto

6 

7> Comunica al classificatore della modalità auto quali repository, bucket e domini la tua organizzazione ritiene affidabili. Imposta il contesto dell'ambiente, sostituisci le regole di blocco e autorizzazione predefinite e ispeziona la tua configurazione effettiva con i sottocomandi CLI della modalità auto.

8 

9[Auto mode](/it/permission-modes#eliminate-prompts-with-auto-mode) consente a Claude Code di funzionare senza prompt di autorizzazione instradando ogni chiamata di strumento attraverso un classificatore che blocca qualsiasi cosa irreversibile, distruttiva o rivolta al di fuori del tuo ambiente. Utilizza il blocco di impostazioni `autoMode` per comunicare al classificatore quali repository, bucket e domini la tua organizzazione ritiene affidabili, in modo che smetta di bloccare le operazioni interne di routine.

10 

11<Note>

12 Auto mode è disponibile sui piani Max, Team, Enterprise e API tramite l'API Anthropic. Non è disponibile su Pro o su Bedrock, Vertex o Foundry. Se Claude Code segnala che la modalità auto non è disponibile per il tuo account, controlla i [requisiti completi](/it/permission-modes#eliminate-prompts-with-auto-mode), che coprono anche i modelli supportati e l'abilitazione dell'amministratore sui piani Team ed Enterprise.

13</Note>

14 

15Immediatamente disponibile, il classificatore si fida solo della directory di lavoro e dei remote configurati del repository corrente. Azioni come il push verso l'organizzazione di controllo del codice sorgente della tua azienda o la scrittura in un bucket cloud del team vengono bloccate finché non le aggiungi a `autoMode.environment`.

16 

17Per informazioni su come abilitare la modalità auto e cosa blocca per impostazione predefinita, consulta [Permission modes](/it/permission-modes#eliminate-prompts-with-auto-mode). Questa pagina è il riferimento di configurazione.

18 

19Questa pagina spiega come:

20 

21* [Scegliere dove impostare le regole](#where-the-classifier-reads-configuration) in CLAUDE.md, impostazioni utente e impostazioni gestite

22* [Definire l'infrastruttura affidabile](#define-trusted-infrastructure) con `autoMode.environment`

23* [Sostituire le regole di blocco e autorizzazione](#override-the-block-and-allow-rules) quando i valori predefiniti non si adattano alla tua pipeline

24* [Ispezionare la tua configurazione effettiva](#inspect-the-defaults-and-your-effective-config) con i sottocomandi `claude auto-mode`

25* [Esaminare i rifiuti](#review-denials) in modo da sapere cosa aggiungere successivamente

26 

27## Where the classifier reads configuration

28 

29Il classificatore legge lo stesso contenuto [CLAUDE.md](/it/memory) che Claude stesso carica, quindi un'istruzione come "non forzare mai il push" nel CLAUDE.md del tuo progetto guida sia Claude che il classificatore contemporaneamente. Inizia da lì per le convenzioni del progetto e le regole comportamentali.

30 

31Per le regole che si applicano tra i progetti, come l'infrastruttura affidabile o le regole di negazione a livello di organizzazione, utilizza il blocco di impostazioni `autoMode`. Il classificatore legge `autoMode` dai seguenti ambiti:

32 

33| Ambito | File | Utilizzare per |

34| :---------------------------- | :---------------------------------------------- | :------------------------------------------------------------- |

35| Un sviluppatore | `~/.claude/settings.json` | Infrastruttura affidabile personale |

36| Un progetto, uno sviluppatore | `.claude/settings.local.json` | Bucket o servizi affidabili per progetto, gitignored |

37| A livello di organizzazione | [Managed settings](/it/server-managed-settings) | Infrastruttura affidabile distribuita a tutti gli sviluppatori |

38| Flag `--settings` o Agent SDK | JSON inline | Override per invocazione per l'automazione |

39 

40Il classificatore non legge `autoMode` dalle impostazioni di progetto condivise in `.claude/settings.json`, quindi un repository archiviato non può iniettare le proprie regole di autorizzazione.

41 

42Le voci di ogni ambito vengono combinate. Uno sviluppatore può estendere `environment`, `allow` e `soft_deny` con voci personali ma non può rimuovere le voci fornite dalle impostazioni gestite. Poiché le regole di autorizzazione agiscono come eccezioni alle regole di blocco all'interno del classificatore, una voce `allow` aggiunta da uno sviluppatore può sostituire una voce `soft_deny` dell'organizzazione: la combinazione è additiva, non un confine di politica rigida.

43 

44<Note>

45 Il classificatore è una seconda porta che si esegue dopo il [sistema di autorizzazioni](/it/permissions). Per le azioni che non devono mai essere eseguite indipendentemente dall'intento dell'utente o dalla configurazione del classificatore, utilizza `permissions.deny` nelle impostazioni gestite, che blocca l'azione prima che il classificatore venga consultato e non può essere ignorato.

46</Note>

47 

48## Definire l'infrastruttura affidabile

49 

50Per la maggior parte delle organizzazioni, `autoMode.environment` è l'unico campo che devi impostare. Comunica al classificatore quali repository, bucket e domini sono affidabili: il classificatore lo utilizza per decidere cosa significa "esterno", quindi qualsiasi destinazione non elencata è un potenziale bersaglio di esfiltrazione.

51 

52L'elenco di ambiente predefinito si fida del repository di lavoro e dei suoi remote configurati. Per aggiungere le tue voci insieme a quel valore predefinito, includi la stringa letterale `"$defaults"` nell'array. Le voci predefinite vengono inserite in quella posizione, quindi le tue voci personalizzate possono andare prima o dopo di esse.

53 

54```json theme={null}

55{

56 "autoMode": {

57 "environment": [

58 "$defaults",

59 "Source control: github.example.com/acme-corp and all repos under it",

60 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

61 "Trusted internal domains: *.corp.example.com, api.internal.example.com",

62 "Key internal services: Jenkins at ci.example.com, Artifactory at artifacts.example.com"

63 ]

64 }

65}

66```

67 

68Le voci sono prosa, non regex o pattern di strumenti. Il classificatore le legge come regole in linguaggio naturale. Scrivile come descriveresti la tua infrastruttura a un nuovo ingegnere. Una sezione di ambiente completa copre:

69 

70* **Organizzazione**: il nome della tua azienda e per cosa Claude Code viene utilizzato principalmente, come sviluppo software, automazione dell'infrastruttura o ingegneria dei dati

71* **Controllo del codice sorgente**: ogni organizzazione GitHub, GitLab o Bitbucket verso cui i tuoi sviluppatori eseguono il push

72* **Provider cloud e bucket affidabili**: nomi di bucket o prefissi che Claude dovrebbe essere in grado di leggere e scrivere

73* **Domini interni affidabili**: nomi host per API, dashboard e servizi all'interno della tua rete, come `*.internal.example.com`

74* **Servizi interni chiave**: CI, registri di artefatti, indici di pacchetti interni, strumenti di gestione degli incidenti

75* **Contesto aggiuntivo**: vincoli del settore regolamentato, infrastruttura multi-tenant o requisiti di conformità che influiscono su ciò che il classificatore dovrebbe trattare come rischioso

76 

77Un modello di partenza utile: compila i campi tra parentesi e rimuovi le righe che non si applicano.

78 

79```json theme={null}

80{

81 "autoMode": {

82 "environment": [

83 "$defaults",

84 "Organization: {COMPANY_NAME}. Primary use: {PRIMARY_USE_CASE, e.g. software development, infrastructure automation}",

85 "Source control: {SOURCE_CONTROL, e.g. GitHub org github.example.com/acme-corp}",

86 "Cloud provider(s): {CLOUD_PROVIDERS, e.g. AWS, GCP, Azure}",

87 "Trusted cloud buckets: {TRUSTED_BUCKETS, e.g. s3://acme-builds, gs://acme-datasets}",

88 "Trusted internal domains: {TRUSTED_DOMAINS, e.g. *.internal.example.com, api.example.com}",

89 "Key internal services: {SERVICES, e.g. Jenkins at ci.example.com, Artifactory at artifacts.example.com}",

90 "Additional context: {EXTRA, e.g. regulated industry, multi-tenant infrastructure, compliance requirements}"

91 ]

92 }

93}

94```

95 

96Più contesto specifico fornisci, meglio il classificatore può distinguere le operazioni interne di routine dai tentativi di esfiltrazione.

97 

98Non è necessario compilare tutto in una volta. Un rollout ragionevole: inizia con i valori predefiniti e aggiungi l'organizzazione di controllo del codice sorgente e i servizi interni chiave, che risolvono i falsi positivi più comuni come il push verso i tuoi repository. Aggiungi successivamente i domini affidabili e i bucket cloud. Compila il resto man mano che emergono i blocchi.

99 

100## Sostituisci le regole di blocco e autorizzazione

101 

102Due campi aggiuntivi ti permettono di sostituire gli elenchi di regole incorporati del classificatore: `autoMode.soft_deny` controlla cosa viene bloccato e `autoMode.allow` controlla quali eccezioni si applicano. Ognuno è un array di descrizioni in prosa, lette come regole in linguaggio naturale. Non esiste un campo `autoMode.deny`; per bloccare duramente un'azione indipendentemente dall'intento, utilizza [`permissions.deny`](/it/permissions), che viene eseguito prima del classificatore.

103 

104All'interno del classificatore, la precedenza funziona in tre livelli:

105 

106* Le regole `soft_deny` bloccano per prime

107* Le regole `allow` quindi sostituiscono i blocchi corrispondenti come eccezioni

108* L'intento esplicito dell'utente sostituisce entrambi: se il messaggio dell'utente descrive direttamente e specificamente l'azione esatta che Claude sta per intraprendere, il classificatore la consente anche quando una regola `soft_deny` corrisponde

109 

110Le richieste generali non contano come intento esplicito. Chiedere a Claude di "pulire il repository" non autorizza il force-push, ma chiedere a Claude di "force-push questo ramo" sì.

111 

112Per allentare, aggiungi a `allow` quando il classificatore contrassegna ripetutamente un pattern di routine che le eccezioni predefinite non coprono. Per stringere, aggiungi a `soft_deny` per i rischi specifici del tuo ambiente che i valori predefiniti non coprono. Per mantenere le regole incorporate mentre aggiungi le tue, includi la stringa letterale `"$defaults"` nell'array. Le regole predefinite vengono inserite in quella posizione, quindi le tue regole personalizzate possono andare prima o dopo di esse, e continui a ereditare gli aggiornamenti mentre l'elenco incorporato cambia tra le versioni.

113 

114```json theme={null}

115{

116 "autoMode": {

117 "environment": [

118 "$defaults",

119 "Source control: github.example.com/acme-corp and all repos under it"

120 ],

121 "allow": [

122 "$defaults",

123 "Deploying to the staging namespace is allowed: staging is isolated from production and resets nightly",

124 "Writing to s3://acme-scratch/ is allowed: ephemeral bucket with a 7-day lifecycle policy"

125 ],

126 "soft_deny": [

127 "$defaults",

128 "Never run database migrations outside the migrations CLI, even against dev databases",

129 "Never modify files under infra/terraform/prod/: production infrastructure changes go through the review workflow"

130 ]

131 }

132}

133```

134 

135<Danger>

136 L'impostazione di uno qualsiasi di `environment`, `allow` o `soft_deny` senza `"$defaults"` sostituisce l'intero elenco predefinito per quella sezione. Se imposti `soft_deny` con una singola voce e ometti `"$defaults"`, ogni regola di blocco incorporata viene scartata: force push, esfiltrazione di dati, `curl | bash`, distribuzioni di produzione e tutte le altre regole di blocco predefinite diventano consentite. Ometti `"$defaults"` solo quando intendi assumere la piena proprietà dell'elenco. In tal caso, esegui `claude auto-mode defaults` per stampare le regole incorporate, copiale nel tuo file di impostazioni, quindi esamina ogni regola rispetto alla tua pipeline e tolleranza al rischio.

137</Danger>

138 

139Ogni sezione viene valutata indipendentemente, quindi l'impostazione di `environment` da sola lascia intatti gli elenchi predefiniti `allow` e `soft_deny`.

140 

141## Ispeziona i valori predefiniti e la tua configurazione effettiva

142 

143Tre sottocomandi CLI ti aiutano a ispezionare e convalidare la tua configurazione.

144 

145Stampa le regole `environment`, `allow` e `soft_deny` incorporate come JSON:

146 

147```bash theme={null}

148claude auto-mode defaults

149```

150 

151Stampa ciò che il classificatore effettivamente utilizza come JSON, con le tue impostazioni applicate dove impostate e valori predefiniti altrimenti:

152 

153```bash theme={null}

154claude auto-mode config

155```

156 

157Ottieni feedback AI sulle tue regole `allow` e `soft_deny` personalizzate:

158 

159```bash theme={null}

160claude auto-mode critique

161```

162 

163Esegui `claude auto-mode config` dopo aver salvato le tue impostazioni per confermare che le regole effettive sono quelle che ti aspetti, con `"$defaults"` espanso al suo posto. Se hai scritto regole personalizzate, `claude auto-mode critique` le esamina e contrassegna le voci che sono ambigue, ridondanti o probabilmente causeranno falsi positivi. Se hai bisogno di rimuovere o riscrivere una regola incorporata piuttosto che aggiungerne una accanto ad essa, salva l'output di `claude auto-mode defaults` in un file, modifica gli elenchi e incolla il risultato nel tuo file di impostazioni al posto di `"$defaults"`.

164 

165## Review denials

166 

167Quando la modalità auto nega una chiamata di strumento, il rifiuto viene registrato in `/permissions` nella scheda Recently denied. Premi `r` su un'azione negata per contrassegnarla per il retry: quando esci dalla finestra di dialogo, Claude Code invia un messaggio al modello dicendogli che può riprovare quella chiamata di strumento e riprende la conversazione.

168 

169I rifiuti ripetuti per la stessa destinazione di solito significano che il classificatore manca di contesto. Aggiungi quella destinazione a `autoMode.environment`, quindi esegui `claude auto-mode config` per confermare che ha avuto effetto.

170 

171Per reagire ai rifiuti a livello di programmazione, utilizza l'[hook `PermissionDenied`](/it/hooks#permissiondenied).

172 

173## See also

174 

175* [Permission modes](/it/permission-modes#eliminate-prompts-with-auto-mode): cos'è la modalità auto, cosa blocca per impostazione predefinita e come abilitarla

176* [Managed settings](/it/server-managed-settings): distribuisci la configurazione `autoMode` in tutta la tua organizzazione

177* [Permissions](/it/permissions): regole di autorizzazione, richiesta e negazione che si applicano prima dell'esecuzione del classificatore

178* [Settings](/it/settings): il riferimento completo delle impostazioni, inclusa la chiave `autoMode`

best-practices.md +583 −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# Best Practices per Claude Code

6 

7> Suggerimenti e modelli per ottenere il massimo da Claude Code, dalla configurazione dell'ambiente al ridimensionamento tra sessioni parallele.

8 

9Claude Code è un ambiente di codifica agenziale. A differenza di un chatbot che risponde alle domande e aspetta, Claude Code può leggere i vostri file, eseguire comandi, apportare modifiche e lavorare autonomamente attraverso i problemi mentre voi guardate, reindirizzate o vi allontanate completamente.

10 

11Questo cambia il modo in cui lavorate. Invece di scrivere il codice voi stessi e chiedere a Claude di rivederlo, descrivete quello che volete e Claude capisce come costruirlo. Claude esplora, pianifica e implementa.

12 

13Ma questa autonomia comporta comunque una curva di apprendimento. Claude lavora all'interno di determinati vincoli che dovete comprendere.

14 

15Questa guida copre i modelli che si sono dimostrati efficaci nei team interni di Anthropic e per gli ingegneri che utilizzano Claude Code in vari codebase, linguaggi e ambienti. Per sapere come funziona il ciclo agenziale sotto il cofano, consultate [How Claude Code works](/it/how-claude-code-works).

16 

17***

18 

19La maggior parte delle best practice si basa su un vincolo: la finestra di contesto di Claude si riempie rapidamente e le prestazioni si degradano man mano che si riempie.

20 

21La finestra di contesto di Claude contiene l'intera conversazione, inclusi ogni messaggio, ogni file che Claude legge e ogni output di comando. Tuttavia, può riempirsi rapidamente. Una singola sessione di debug o esplorazione del codebase potrebbe generare e consumare decine di migliaia di token.

22 

23Questo è importante perché le prestazioni dell'LLM si degradano man mano che il contesto si riempie. Quando la finestra di contesto sta per riempirsi, Claude potrebbe iniziare a "dimenticare" le istruzioni precedenti o fare più errori. La finestra di contesto è la risorsa più importante da gestire. Per vedere come una sessione si riempie nella pratica, [guardate una procedura dettagliata interattiva](/it/context-window) di quello che si carica all'avvio e quanto costa ogni lettura di file. Monitorate continuamente l'utilizzo del contesto con una [custom status line](/it/statusline) e consultate [Reduce token usage](/it/costs#reduce-token-usage) per strategie su come ridurre l'utilizzo dei token.

24 

25***

26 

27## Fornite a Claude un modo per verificare il suo lavoro

28 

29<Tip>

30 Includete test, screenshot o output previsti in modo che Claude possa verificare se stesso. Questa è la cosa singola con il massimo effetto leva che potete fare.

31</Tip>

32 

33Claude funziona drammaticamente meglio quando può verificare il suo lavoro, come eseguire test, confrontare screenshot e convalidare output.

34 

35Senza criteri di successo chiari, potrebbe produrre qualcosa che sembra giusto ma in realtà non funziona. Voi diventate l'unico ciclo di feedback e ogni errore richiede la vostra attenzione.

36 

37| Strategia | Prima | Dopo |

38| ---------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

39| **Fornire criteri di verifica** | *"implementare una funzione che convalida gli indirizzi email"* | *"scrivere una funzione validateEmail. esempi di casi di test: [user@example.com](mailto:user@example.com) è true, invalid è false, [user@.com](mailto:user@.com) è false. eseguire i test dopo l'implementazione"* |

40| **Verificare visivamente i cambiamenti dell'interfaccia utente** | *"rendere il dashboard più bello"* | *"\[incollare screenshot] implementare questo design. fare uno screenshot del risultato e confrontarlo con l'originale. elencare le differenze e correggerle"* |

41| **Affrontare le cause radici, non i sintomi** | *"la build sta fallendo"* | *"la build fallisce con questo errore: \[incollare errore]. correggerlo e verificare che la build abbia successo. affrontare la causa radice, non sopprimere l'errore"* |

42 

43I cambiamenti dell'interfaccia utente possono essere verificati utilizzando l'[estensione Claude in Chrome](/it/chrome). Apre nuove schede nel vostro browser, testa l'interfaccia utente e itera fino a quando il codice non funziona.

44 

45La vostra verifica può anche essere una suite di test, un linter o un comando Bash che controlla l'output. Investite nel rendere la vostra verifica solida.

46 

47***

48 

49## Esplorate prima, poi pianificate, poi codificate

50 

51<Tip>

52 Separate la ricerca e la pianificazione dall'implementazione per evitare di risolvere il problema sbagliato.

53</Tip>

54 

55Lasciare che Claude salti direttamente alla codifica può produrre codice che risolve il problema sbagliato. Utilizzate [Plan Mode](/it/common-workflows#use-plan-mode-for-safe-code-analysis) per separare l'esplorazione dall'esecuzione.

56 

57Il flusso di lavoro consigliato ha quattro fasi:

58 

59<Steps>

60 <Step title="Esplora">

61 Entra in Plan Mode. Claude legge i file e risponde alle domande senza apportare modifiche.

62 

63 ```txt claude (Plan Mode) theme={null}

64 read /src/auth and understand how we handle sessions and login.

65 also look at how we manage environment variables for secrets.

66 ```

67 </Step>

68 

69 <Step title="Pianifica">

70 Chiedi a Claude di creare un piano di implementazione dettagliato.

71 

72 ```txt claude (Plan Mode) theme={null}

73 I want to add Google OAuth. What files need to change?

74 What's the session flow? Create a plan.

75 ```

76 

77 Premi `Ctrl+G` per aprire il piano nel vostro editor di testo per la modifica diretta prima che Claude proceda.

78 </Step>

79 

80 <Step title="Implementa">

81 Torna alla Normal Mode e lascia che Claude codifichi, verificando rispetto al suo piano.

82 

83 ```txt claude (Normal Mode) theme={null}

84 implement the OAuth flow from your plan. write tests for the

85 callback handler, run the test suite and fix any failures.

86 ```

87 </Step>

88 

89 <Step title="Commit">

90 Chiedi a Claude di eseguire il commit con un messaggio descrittivo e creare una PR.

91 

92 ```txt claude (Normal Mode) theme={null}

93 commit with a descriptive message and open a PR

94 ```

95 </Step>

96</Steps>

97 

98<Callout>

99 Plan Mode è utile, ma aggiunge anche overhead.

100 

101 Per attività in cui l'ambito è chiaro e la correzione è piccola (come correggere un errore di battitura, aggiungere una riga di log o rinominare una variabile) chiedete a Claude di farlo direttamente.

102 

103 La pianificazione è più utile quando siete incerti sull'approccio, quando il cambiamento modifica più file o quando non siete familiari con il codice da modificare. Se potete descrivere il diff in una frase, saltate il piano.

104</Callout>

105 

106***

107 

108## Fornite contesto specifico nei vostri prompt

109 

110<Tip>

111 Più precise sono le vostre istruzioni, meno correzioni vi serviranno.

112</Tip>

113 

114Claude può dedurre l'intento, ma non può leggere la mente. Fate riferimento a file specifici, menzionate i vincoli e indicate i modelli di esempio.

115 

116| Strategia | Prima | Dopo |

117| -------------------------------------------------------------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

118| **Definire l'ambito del compito.** Specificate quale file, quale scenario e le preferenze di test. | *"aggiungere test per foo.py"* | *"scrivere un test per foo.py che copra il caso limite in cui l'utente è disconnesso. evitare i mock."* |

119| **Puntare alle fonti.** Indirizzate Claude alla fonte che può rispondere a una domanda. | *"perché ExecutionFactory ha un'API così strana?"* | *"guardare la cronologia git di ExecutionFactory e riassumere come la sua API è arrivata a essere così"* |

120| **Fare riferimento ai modelli esistenti.** Puntate Claude ai modelli nel vostro codebase. | *"aggiungere un widget calendario"* | *"guardare come i widget esistenti sono implementati nella home page per comprendere i modelli. HotDogWidget.php è un buon esempio. seguire il modello per implementare un nuovo widget calendario che consenta all'utente di selezionare un mese e paginare avanti/indietro per scegliere un anno. costruire da zero senza librerie diverse da quelle già utilizzate nel codebase."* |

121| **Descrivere il sintomo.** Fornite il sintomo, la probabile posizione e come appare "risolto". | *"correggere il bug di login"* | *"gli utenti segnalano che il login fallisce dopo il timeout della sessione. controllare il flusso di autenticazione in src/auth/, in particolare l'aggiornamento del token. scrivere un test fallito che riproduce il problema, quindi correggerlo"* |

122 

123I prompt vaghi possono essere utili quando state esplorando e potete permettervi di correggere il corso. Un prompt come `"cosa migliorereste in questo file?"` può evidenziare cose a cui non avreste pensato di chiedere.

124 

125### Fornire contenuti ricchi

126 

127<Tip>

128 Utilizzate `@` per fare riferimento ai file, incollate screenshot/immagini o inviate i dati direttamente.

129</Tip>

130 

131Potete fornire dati ricchi a Claude in diversi modi:

132 

133* **Fare riferimento ai file con `@`** invece di descrivere dove vive il codice. Claude legge il file prima di rispondere.

134* **Incollare le immagini direttamente**. Copiate/incollate o trascinate le immagini nel prompt.

135* **Fornire URL** per la documentazione e i riferimenti API. Utilizzate `/permissions` per aggiungere alla whitelist i domini utilizzati di frequente.

136* **Inviare i dati tramite pipe** eseguendo `cat error.log | claude` per inviare il contenuto del file direttamente.

137* **Lasciare che Claude recuperi quello di cui ha bisogno**. Dite a Claude di estrarre il contesto stesso utilizzando comandi Bash, strumenti MCP o leggendo i file.

138 

139***

140 

141## Configurate il vostro ambiente

142 

143Alcuni passaggi di configurazione rendono Claude Code significativamente più efficace in tutte le vostre sessioni. Per una panoramica completa delle funzionalità dell'estensione e di quando utilizzare ciascuna, consultate [Extend Claude Code](/it/features-overview).

144 

145### Scrivete un CLAUDE.md efficace

146 

147<Tip>

148 Eseguite `/init` per generare un file CLAUDE.md iniziale basato sulla struttura del vostro progetto attuale, quindi affinate nel tempo.

149</Tip>

150 

151CLAUDE.md è un file speciale che Claude legge all'inizio di ogni conversazione. Includete comandi Bash, stile del codice e regole del flusso di lavoro. Questo fornisce a Claude un contesto persistente che non può dedurre dal solo codice.

152 

153Il comando `/init` analizza il vostro codebase per rilevare sistemi di build, framework di test e modelli di codice, fornendovi una base solida da affinare.

154 

155Non esiste un formato obbligatorio per i file CLAUDE.md, ma manteneteli brevi e leggibili. Ad esempio:

156 

157```markdown CLAUDE.md theme={null}

158# Code style

159- Use ES modules (import/export) syntax, not CommonJS (require)

160- Destructure imports when possible (eg. import { foo } from 'bar')

161 

162# Workflow

163- Be sure to typecheck when you're done making a series of code changes

164- Prefer running single tests, and not the whole test suite, for performance

165```

166 

167CLAUDE.md viene caricato ogni sessione, quindi includete solo le cose che si applicano ampiamente. Per la conoscenza del dominio o i flussi di lavoro che sono rilevanti solo a volte, utilizzate [skills](/it/skills) invece. Claude li carica su richiesta senza gonfiare ogni conversazione.

168 

169Mantenetelo conciso. Per ogni riga, chiedetevi: *"Rimuovere questo causerebbe a Claude di fare errori?"* Se no, tagliatelo. I file CLAUDE.md gonfi causano a Claude di ignorare le vostre istruzioni effettive!

170 

171| ✅ Includere | ❌ Escludere |

172| ------------------------------------------------------------------ | --------------------------------------------------------------------- |

173| Comandi Bash che Claude non può indovinare | Qualsiasi cosa Claude possa capire leggendo il codice |

174| Regole di stile del codice che differiscono dai valori predefiniti | Convenzioni linguistiche standard che Claude già conosce |

175| Istruzioni di test e runner di test preferiti | Documentazione API dettagliata (collegare alla documentazione invece) |

176| Etichetta del repository (denominazione dei rami, convenzioni PR) | Informazioni che cambiano frequentemente |

177| Decisioni architettoniche specifiche del vostro progetto | Spiegazioni lunghe o tutorial |

178| Stranezze dell'ambiente di sviluppo (variabili env richieste) | Descrizioni file per file del codebase |

179| Gotcha comuni o comportamenti non ovvi | Pratiche auto-evidenti come "scrivere codice pulito" |

180 

181Se Claude continua a fare qualcosa che non volete nonostante abbia una regola contro di essa, il file è probabilmente troppo lungo e la regola si sta perdendo. Se Claude vi fa domande che sono risposte in CLAUDE.md, la formulazione potrebbe essere ambigua. Trattate CLAUDE.md come codice: rivederlo quando le cose vanno male, potarlo regolarmente e testate i cambiamenti osservando se il comportamento di Claude effettivamente cambia.

182 

183Potete sintonizzare le istruzioni aggiungendo enfasi (ad es. "IMPORTANTE" o "DOVETE") per migliorare l'aderenza. Controllate CLAUDE.md in git in modo che il vostro team possa contribuire. Il file aumenta di valore nel tempo.

184 

185I file CLAUDE.md possono importare file aggiuntivi utilizzando la sintassi `@path/to/import`:

186 

187```markdown CLAUDE.md theme={null}

188See @README.md for project overview and @package.json for available npm commands.

189 

190# Additional Instructions

191- Git workflow: @docs/git-instructions.md

192- Personal overrides: @~/.claude/my-project-instructions.md

193```

194 

195Potete posizionare i file CLAUDE.md in diversi percorsi:

196 

197* **Cartella home (`~/.claude/CLAUDE.md`)**: si applica a tutte le sessioni Claude

198* **Radice del progetto (`./CLAUDE.md`)**: controllare in git per condividere con il vostro team

199* **Radice del progetto (`./CLAUDE.local.md`)**: note personali specifiche del progetto; aggiungete questo file al vostro `.gitignore` in modo che non sia condiviso con il vostro team

200* **Directory padre**: utile per monorepo dove sia `root/CLAUDE.md` che `root/foo/CLAUDE.md` vengono estratti automaticamente

201* **Directory figlie**: Claude estrae i file CLAUDE.md figlio su richiesta quando lavora con i file in quelle directory

202 

203### Configurate i permessi

204 

205<Tip>

206 Utilizzate [auto mode](/it/permission-modes#eliminate-prompts-with-auto-mode) per lasciare che un classificatore gestisca le approvazioni, `/permissions` per aggiungere alla whitelist comandi specifici, o `/sandbox` per l'isolamento a livello di sistema operativo. Ciascuno riduce le interruzioni mantenendovi il controllo.

207</Tip>

208 

209Per impostazione predefinita, Claude Code richiede il permesso per azioni che potrebbero modificare il vostro sistema: scritture di file, comandi Bash, strumenti MCP, ecc. Questo è sicuro ma tedioso. Dopo la decima approvazione non state davvero revisionando più, state solo cliccando. Ci sono tre modi per ridurre queste interruzioni:

210 

211* **Auto mode**: un modello classificatore separato esamina i comandi e blocca solo quello che sembra rischioso: escalation di ambito, infrastruttura sconosciuta o azioni guidate da contenuti ostili. Migliore quando fidate della direzione generale di un'attività ma non volete cliccare attraverso ogni passaggio

212* **Whitelist di permessi**: consentire strumenti specifici che sapete essere sicuri, come `npm run lint` o `git commit`

213* **Sandboxing**: abilitare l'isolamento a livello di sistema operativo che limita l'accesso al filesystem e alla rete, consentendo a Claude di lavorare più liberamente all'interno di confini definiti

214 

215Leggete di più su [permission modes](/it/permission-modes), [permission rules](/it/permissions) e [sandboxing](/it/sandboxing).

216 

217### Utilizzate gli strumenti CLI

218 

219<Tip>

220 Dite a Claude Code di utilizzare strumenti CLI come `gh`, `aws`, `gcloud` e `sentry-cli` quando interagite con servizi esterni.

221</Tip>

222 

223Gli strumenti CLI sono il modo più efficiente in termini di contesto per interagire con servizi esterni. Se utilizzate GitHub, installate la CLI `gh`. Claude sa come usarla per creare problemi, aprire pull request e leggere commenti. Senza `gh`, Claude può comunque utilizzare l'API GitHub, ma le richieste non autenticate spesso raggiungono i limiti di velocità.

224 

225Claude è anche efficace nell'imparare strumenti CLI che non conosce già. Provate prompt come `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`

226 

227### Connettete i server MCP

228 

229<Tip>

230 Eseguite `claude mcp add` per connettere strumenti esterni come Notion, Figma o il vostro database.

231</Tip>

232 

233Con i [server MCP](/it/mcp), potete chiedere a Claude di implementare funzionalità da tracker di problemi, interrogare database, analizzare dati di monitoraggio, integrare design da Figma e automatizzare flussi di lavoro.

234 

235### Configurate gli hook

236 

237<Tip>

238 Utilizzate gli hook per azioni che devono accadere ogni volta senza eccezioni.

239</Tip>

240 

241Gli [hook](/it/hooks-guide) eseguono script automaticamente in punti specifici del flusso di lavoro di Claude. A differenza delle istruzioni CLAUDE.md che sono consultive, gli hook sono deterministici e garantiscono che l'azione accada.

242 

243Claude può scrivere hook per voi. Provate prompt come *"Write a hook that runs eslint after every file edit"* o *"Write a hook that blocks writes to the migrations folder."* Modificate `.claude/settings.json` direttamente per configurare gli hook manualmente e eseguite `/hooks` per sfogliare quello che è configurato.

244 

245### Createte skill

246 

247<Tip>

248 Create file `SKILL.md` in `.claude/skills/` per fornire a Claude conoscenza del dominio e flussi di lavoro riutilizzabili.

249</Tip>

250 

251Le [skill](/it/skills) estendono la conoscenza di Claude con informazioni specifiche del vostro progetto, team o dominio. Claude le applica automaticamente quando rilevanti, o potete invocarle direttamente con `/skill-name`.

252 

253Create una skill aggiungendo una directory con un `SKILL.md` a `.claude/skills/`:

254 

255```markdown .claude/skills/api-conventions/SKILL.md theme={null}

256---

257name: api-conventions

258description: REST API design conventions for our services

259---

260# API Conventions

261- Use kebab-case for URL paths

262- Use camelCase for JSON properties

263- Always include pagination for list endpoints

264- Version APIs in the URL path (/v1/, /v2/)

265```

266 

267Le skill possono anche definire flussi di lavoro ripetibili che invocate direttamente:

268 

269```markdown .claude/skills/fix-issue/SKILL.md theme={null}

270---

271name: fix-issue

272description: Fix a GitHub issue

273disable-model-invocation: true

274---

275Analyze and fix the GitHub issue: $ARGUMENTS.

276 

2771. Use `gh issue view` to get the issue details

2782. Understand the problem described in the issue

2793. Search the codebase for relevant files

2804. Implement the necessary changes to fix the issue

2815. Write and run tests to verify the fix

2826. Ensure code passes linting and type checking

2837. Create a descriptive commit message

2848. Push and create a PR

285```

286 

287Eseguite `/fix-issue 1234` per invocarlo. Utilizzate `disable-model-invocation: true` per flussi di lavoro con effetti collaterali che volete attivare manualmente.

288 

289### Create subagent personalizzati

290 

291<Tip>

292 Definite assistenti specializzati in `.claude/agents/` che Claude può delegare per attività isolate.

293</Tip>

294 

295I [subagent](/it/sub-agents) vengono eseguiti nel loro contesto con il loro set di strumenti consentiti. Sono utili per attività che leggono molti file o necessitano di focus specializzato senza ingombrare la vostra conversazione principale.

296 

297```markdown .claude/agents/security-reviewer.md theme={null}

298---

299name: security-reviewer

300description: Reviews code for security vulnerabilities

301tools: Read, Grep, Glob, Bash

302model: opus

303---

304You are a senior security engineer. Review code for:

305- Injection vulnerabilities (SQL, XSS, command injection)

306- Authentication and authorization flaws

307- Secrets or credentials in code

308- Insecure data handling

309 

310Provide specific line references and suggested fixes.

311```

312 

313Dite a Claude di utilizzare i subagent esplicitamente: *"Use a subagent to review this code for security issues."*

314 

315### Installate i plugin

316 

317<Tip>

318 Eseguite `/plugin` per sfogliare il marketplace. I plugin aggiungono skill, strumenti e integrazioni senza configurazione.

319</Tip>

320 

321I [plugin](/it/plugins) raggruppano skill, hook, subagent e server MCP in una singola unità installabile dalla comunità e da Anthropic. Se lavorate con un linguaggio tipizzato, installate un [plugin di code intelligence](/it/discover-plugins#code-intelligence) per fornire a Claude la navigazione precisa dei simboli e il rilevamento automatico degli errori dopo le modifiche.

322 

323Per una guida sulla scelta tra skill, subagent, hook e MCP, consultate [Extend Claude Code](/it/features-overview#match-features-to-your-goal).

324 

325***

326 

327## Comunicate efficacemente

328 

329Il modo in cui comunicate con Claude Code ha un impatto significativo sulla qualità dei risultati.

330 

331### Fate domande sul codebase

332 

333<Tip>

334 Fate a Claude domande che fareste a un ingegnere senior.

335</Tip>

336 

337Quando vi onboarding a un nuovo codebase, utilizzate Claude Code per l'apprendimento e l'esplorazione. Potete fare a Claude lo stesso tipo di domande che fareste a un altro ingegnere:

338 

339* Come funziona il logging?

340* Come faccio a creare un nuovo endpoint API?

341* Cosa fa `async move { ... }` sulla riga 134 di `foo.rs`?

342* Quali casi limite gestisce `CustomerOnboardingFlowImpl`?

343* Perché questo codice chiama `foo()` invece di `bar()` sulla riga 333?

344 

345Utilizzare Claude Code in questo modo è un flusso di lavoro di onboarding efficace, migliorando il tempo di ramp-up e riducendo il carico su altri ingegneri. Non è richiesto alcun prompt speciale: fate le domande direttamente.

346 

347### Lasciate che Claude vi intervisti

348 

349<Tip>

350 Per funzionalità più grandi, fate intervistare Claude prima. Iniziate con un prompt minimo e chiedete a Claude di intervistarvi utilizzando lo strumento `AskUserQuestion`.

351</Tip>

352 

353Claude fa domande su cose che potreste non aver ancora considerato, inclusa l'implementazione tecnica, l'interfaccia utente/esperienza utente, i casi limite e i compromessi.

354 

355```text theme={null}

356I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.

357 

358Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.

359 

360Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.

361```

362 

363Una volta completata la specifica, avviate una nuova sessione per eseguirla. La nuova sessione ha un contesto pulito focalizzato interamente sull'implementazione e avete una specifica scritta a cui fare riferimento.

364 

365***

366 

367## Gestite la vostra sessione

368 

369Le conversazioni sono persistenti e reversibili. Utilizzate questo a vostro vantaggio!

370 

371### Correggete il corso presto e spesso

372 

373<Tip>

374 Correggete Claude non appena notate che sta andando fuori strada.

375</Tip>

376 

377I migliori risultati provengono da cicli di feedback stretti. Sebbene Claude occasionalmente risolva i problemi perfettamente al primo tentativo, correggerlo rapidamente generalmente produce soluzioni migliori più velocemente.

378 

379* **`Esc`**: fermate Claude a metà azione con il tasto `Esc`. Il contesto viene preservato, quindi potete reindirizzare.

380* **`Esc + Esc` o `/rewind`**: premete `Esc` due volte o eseguite `/rewind` per aprire il menu di rewind e ripristinare la conversazione e lo stato del codice precedenti, o riassumere da un messaggio selezionato.

381* **`"Undo that"`**: fate in modo che Claude ripristini le sue modifiche.

382* **`/clear`**: ripristinate il contesto tra attività non correlate. Le sessioni lunghe con contesto irrilevante possono ridurre le prestazioni.

383 

384Se avete corretto Claude più di due volte sullo stesso problema in una sessione, il contesto è ingombrato di approcci falliti. Eseguite `/clear` e iniziate di nuovo con un prompt più specifico che incorpori quello che avete imparato. Una sessione pulita con un prompt migliore quasi sempre supera una sessione lunga con correzioni accumulate.

385 

386### Gestite il contesto aggressivamente

387 

388<Tip>

389 Eseguite `/clear` tra attività non correlate per ripristinare il contesto.

390</Tip>

391 

392Claude Code compatta automaticamente la cronologia della conversazione quando vi avvicinate ai limiti del contesto, il che preserva il codice e le decisioni importanti mentre libera spazio.

393 

394Durante le sessioni lunghe, la finestra di contesto di Claude può riempirsi di conversazioni irrilevanti, contenuti di file e comandi. Questo può ridurre le prestazioni e talvolta distrarre Claude.

395 

396* Utilizzate `/clear` frequentemente tra le attività per ripristinare completamente la finestra di contesto

397* Quando la compattazione automatica si attiva, Claude riassume quello che conta di più, inclusi i modelli di codice, gli stati dei file e le decisioni chiave

398* Per un maggiore controllo, eseguite `/compact <instructions>`, come `/compact Focus on the API changes`

399* Per compattare solo parte della conversazione, utilizzate `Esc + Esc` o `/rewind`, selezionate un checkpoint di messaggio e scegliete **Summarize from here**. Questo condensa i messaggi da quel punto in poi mantenendo il contesto precedente intatto.

400* Personalizzate il comportamento di compattazione in CLAUDE.md con istruzioni come `"When compacting, always preserve the full list of modified files and any test commands"` per assicurare che il contesto critico sopravviva alla riassunzione

401* Per domande rapide che non devono rimanere nel contesto, utilizzate [`/btw`](/it/interactive-mode#side-questions-with-%2Fbtw). La risposta appare in un overlay dismissibile e non entra mai nella cronologia della conversazione, quindi potete controllare un dettaglio senza far crescere il contesto.

402 

403### Utilizzate i subagent per l'investigazione

404 

405<Tip>

406 Delegate la ricerca con `"use subagents to investigate X"`. Esplorano in un contesto separato, mantenendo la vostra conversazione principale pulita per l'implementazione.

407</Tip>

408 

409Poiché il contesto è il vostro vincolo fondamentale, i subagent sono uno degli strumenti più potenti disponibili. Quando Claude ricerca un codebase legge molti file, tutti i quali consumano il vostro contesto. I subagent vengono eseguiti in finestre di contesto separate e riportano riassunti:

410 

411```text theme={null}

412Use subagents to investigate how our authentication system handles token

413refresh, and whether we have any existing OAuth utilities I should reuse.

414```

415 

416Il subagent esplora il codebase, legge i file rilevanti e riporta i risultati, il tutto senza ingombrare la vostra conversazione principale.

417 

418Potete anche utilizzare i subagent per la verifica dopo che Claude implementa qualcosa:

419 

420```text theme={null}

421use a subagent to review this code for edge cases

422```

423 

424### Riavvolgete con i checkpoint

425 

426<Tip>

427 Ogni azione che Claude fa crea un checkpoint. Potete ripristinare la conversazione, il codice o entrambi a qualsiasi checkpoint precedente.

428</Tip>

429 

430Claude crea automaticamente checkpoint prima delle modifiche. Premete il doppio tasto Escape o eseguite `/rewind` per aprire il menu di rewind. Potete ripristinare solo la conversazione, ripristinare solo il codice, ripristinare entrambi o riassumere da un messaggio selezionato. Consultate [Checkpointing](/it/checkpointing) per i dettagli.

431 

432Invece di pianificare attentamente ogni mossa, potete dire a Claude di provare qualcosa di rischioso. Se non funziona, riavvolgete e provate un approccio diverso. I checkpoint persistono tra le sessioni, quindi potete chiudere il vostro terminale e comunque riavvolgere in seguito.

433 

434<Warning>

435 I checkpoint tracciano solo le modifiche apportate *da Claude*, non i processi esterni. Questo non è un sostituto per git.

436</Warning>

437 

438### Riprendete le conversazioni

439 

440<Tip>

441 Eseguite `claude --continue` per riprendere da dove avete lasciato, o `--resume` per scegliere tra le sessioni recenti.

442</Tip>

443 

444Claude Code salva le conversazioni localmente. Quando un'attività si estende su più sessioni, non dovete rispiegare il contesto:

445 

446```bash theme={null}

447claude --continue # Resume the most recent conversation

448claude --resume # Select from recent conversations

449```

450 

451Utilizzate `/rename` per dare alle sessioni nomi descrittivi come `"oauth-migration"` o `"debugging-memory-leak"` in modo da poterle trovare in seguito. Trattate le sessioni come rami: diversi flussi di lavoro possono avere contesti separati e persistenti.

452 

453***

454 

455## Automatizzate e ridimensionate

456 

457Una volta che siete efficaci con un Claude, moltiplicate il vostro output con sessioni parallele, modalità non interattiva e modelli di fan-out.

458 

459Tutto finora presuppone un umano, un Claude e una conversazione. Ma Claude Code si ridimensiona orizzontalmente. Le tecniche in questa sezione mostrano come potete fare di più.

460 

461### Eseguite la modalità non interattiva

462 

463<Tip>

464 Utilizzate `claude -p "prompt"` in CI, pre-commit hook o script. Aggiungete `--output-format stream-json` per l'output JSON in streaming.

465</Tip>

466 

467Con `claude -p "your prompt"`, potete eseguire Claude in modo non interattivo, senza una sessione. La modalità non interattiva è il modo in cui integrate Claude nelle pipeline CI, pre-commit hook o qualsiasi flusso di lavoro automatizzato. I formati di output vi permettono di analizzare i risultati a livello di programmazione: testo semplice, JSON o JSON in streaming.

468 

469```bash theme={null}

470# One-off queries

471claude -p "Explain what this project does"

472 

473# Structured output for scripts

474claude -p "List all API endpoints" --output-format json

475 

476# Streaming for real-time processing

477claude -p "Analyze this log file" --output-format stream-json

478```

479 

480### Eseguite più sessioni Claude

481 

482<Tip>

483 Eseguite più sessioni Claude in parallelo per accelerare lo sviluppo, eseguire esperimenti isolati o avviare flussi di lavoro complessi.

484</Tip>

485 

486Ci sono tre modi principali per eseguire sessioni parallele:

487 

488* [App desktop Claude Code](/it/desktop#work-in-parallel-with-sessions): Gestite più sessioni locali visivamente. Ogni sessione ottiene il suo worktree isolato.

489* [Claude Code sul web](/it/claude-code-on-the-web): Eseguite su infrastruttura cloud sicura di Anthropic in VM isolate.

490* [Team di agenti](/it/agent-teams): Coordinamento automatizzato di più sessioni con attività condivise, messaggistica e un team lead.

491 

492Oltre a parallelizzare il lavoro, più sessioni consentono flussi di lavoro focalizzati sulla qualità. Un contesto fresco migliora la revisione del codice poiché Claude non sarà distorto verso il codice che ha appena scritto.

493 

494Ad esempio, utilizzate un modello Writer/Reviewer:

495 

496| Sessione A (Writer) | Sessione B (Reviewer) |

497| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

498| `Implement a rate limiter for our API endpoints` | |

499| | `Review the rate limiter implementation in @src/middleware/rateLimiter.ts. Look for edge cases, race conditions, and consistency with our existing middleware patterns.` |

500| `Here's the review feedback: [Session B output]. Address these issues.` | |

501 

502Potete fare qualcosa di simile con i test: fate scrivere i test a un Claude, poi a un altro scrivere il codice per passarli.

503 

504### Fan out tra i file

505 

506<Tip>

507 Eseguite un ciclo attraverso le attività chiamando `claude -p` per ciascuna. Utilizzate `--allowedTools` per limitare i permessi per le operazioni batch.

508</Tip>

509 

510Per migrazioni o analisi su larga scala, potete distribuire il lavoro tra molte invocazioni parallele di Claude:

511 

512<Steps>

513 <Step title="Generare un elenco di attività">

514 Fate in modo che Claude elenchi tutti i file che devono essere migrati (ad es. `list all 2,000 Python files that need migrating`)

515 </Step>

516 

517 <Step title="Scrivere uno script per eseguire un ciclo attraverso l'elenco">

518 ```bash theme={null}

519 for file in $(cat files.txt); do

520 claude -p "Migrate $file from React to Vue. Return OK or FAIL." \

521 --allowedTools "Edit,Bash(git commit *)"

522 done

523 ```

524 </Step>

525 

526 <Step title="Testare su pochi file, quindi eseguire su larga scala">

527 Affinate il vostro prompt in base a quello che va male con i primi 2-3 file, quindi eseguite sull'intero set. Il flag `--allowedTools` limita quello che Claude può fare, il che è importante quando state eseguendo senza supervisione.

528 </Step>

529</Steps>

530 

531Potete anche integrare Claude nelle pipeline di elaborazione/dati esistenti:

532 

533```bash theme={null}

534claude -p "<your prompt>" --output-format json | your_command

535```

536 

537Utilizzate `--verbose` per il debug durante lo sviluppo e spegnetelo in produzione.

538 

539### Eseguite autonomamente con auto mode

540 

541Per l'esecuzione ininterrotta con controlli di sicurezza in background, utilizzate [auto mode](/it/permission-modes#eliminate-prompts-with-auto-mode). Un modello classificatore esamina i comandi prima che vengono eseguiti, bloccando l'escalation di ambito, l'infrastruttura sconosciuta e le azioni guidate da contenuti ostili mentre consente al lavoro di routine di procedere senza prompt.

542 

543```bash theme={null}

544claude --permission-mode auto -p "fix all lint errors"

545```

546 

547Per esecuzioni non interattive con il flag `-p`, auto mode interrompe se il classificatore blocca ripetutamente le azioni, poiché non c'è un utente a cui ricorrere. Consultate [when auto mode falls back](/it/permission-modes#when-auto-mode-falls-back) per le soglie.

548 

549***

550 

551## Evitate i modelli di fallimento comuni

552 

553Questi sono errori comuni. Riconoscerli presto fa risparmiare tempo:

554 

555* **La sessione del lavandino della cucina.** Iniziate con un'attività, poi chiedete a Claude qualcosa di non correlato, poi tornate alla prima attività. Il contesto è pieno di informazioni irrilevanti.

556 > **Correzione**: `/clear` tra attività non correlate.

557* **Correggere più volte.** Claude fa qualcosa di sbagliato, lo correggete, è ancora sbagliato, lo correggete di nuovo. Il contesto è inquinato da approcci falliti.

558 > **Correzione**: Dopo due correzioni fallite, `/clear` e scrivete un prompt iniziale migliore che incorpori quello che avete imparato.

559* **Il CLAUDE.md eccessivamente specificato.** Se il vostro CLAUDE.md è troppo lungo, Claude ignora metà di esso perché le regole importanti si perdono nel rumore.

560 > **Correzione**: Potate spietatamente. Se Claude fa già qualcosa di corretto senza l'istruzione, eliminatelo o convertitelo in un hook.

561* **Il divario tra fiducia e verifica.** Claude produce un'implementazione plausibile che non gestisce i casi limite.

562 > **Correzione**: Fornite sempre la verifica (test, script, screenshot). Se non potete verificarlo, non lo spedite.

563* **L'esplorazione infinita.** Chiedete a Claude di "investigare" qualcosa senza limitarlo. Claude legge centinaia di file, riempiendo il contesto.

564 > **Correzione**: Limitate le investigazioni strettamente o utilizzate i subagent in modo che l'esplorazione non consumi il vostro contesto principale.

565 

566***

567 

568## Sviluppate la vostra intuizione

569 

570I modelli in questa guida non sono scolpiti nella pietra. Sono punti di partenza che funzionano bene in generale, ma potrebbero non essere ottimali per ogni situazione.

571 

572A volte *dovreste* lasciare che il contesto si accumuli perché siete immersi in un problema complesso e la cronologia è preziosa. A volte dovreste saltare la pianificazione e lasciare che Claude lo capisca perché l'attività è esplorativa. A volte un prompt vago è esattamente giusto perché volete vedere come Claude interpreta il problema prima di limitarlo.

573 

574Prestate attenzione a quello che funziona. Quando Claude produce un output eccellente, notate quello che avete fatto: la struttura del prompt, il contesto che avete fornito, la modalità in cui siete stati. Quando Claude fatica, chiedetevi perché. Il contesto era troppo rumoroso? Il prompt troppo vago? L'attività troppo grande per un passaggio?

575 

576Nel tempo, svilupperete un'intuizione che nessuna guida può catturare. Saprete quando essere specifici e quando essere aperti, quando pianificare e quando esplorare, quando cancellare il contesto e quando lasciarlo accumulare.

577 

578## Risorse correlate

579 

580* [How Claude Code works](/it/how-claude-code-works): il ciclo agenziale, gli strumenti e la gestione del contesto

581* [Extend Claude Code](/it/features-overview): skill, hook, MCP, subagent e plugin

582* [Common workflows](/it/common-workflows): ricette passo dopo passo per debug, test, PR e altro

583* [CLAUDE.md](/it/memory): archiviare le convenzioni del progetto e il contesto persistente

champion-kit.md +195 −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# Champion kit

6 

7> Una guida pratica per gli ingegneri che promuovono Claude Code internamente: cosa condividere, come rispondere alle domande e come aumentare l'adozione nel tuo team.

8 

9Questa pagina è per i singoli ingegneri che stanno già utilizzando Claude Code e vogliono aiutare il loro team ad adottarlo. Copre cosa condividere, come rispondere alle domande che riceverai, una guida di trenta giorni e risposte alle preoccupazioni comuni.

10 

11L'adozione di uno strumento per sviluppatori raramente avviene a causa di un annuncio di rollout. Avviene perché qualcuno nel team inizia a utilizzare lo strumento bene, ne parla apertamente e rende facile per gli altri seguire. Il lavoro che svolgi come champion ha un effetto sproporzionato: ogni esempio che condividi accorcia la curva di apprendimento per gli ingegneri che verranno dopo di te, e ogni domanda che rispondi pubblicamente trasforma l'esperienza di una persona in qualcosa su cui l'intero team può costruire. Stai agendo come un moltiplicatore per il tuo team, non come un help desk, e questa guida è strutturata per mantenere il ruolo sostenibile su questi termini.

12 

13## Il ruolo di champion

14 

15Il ruolo consiste in tre comportamenti che si rafforzano a vicenda.

16 

17| Comportamento | Come appare nella pratica | Perché è importante |

18| -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

19| Condividi quello che scopri | Pubblica i prompt, gli screenshot e le piccole vittorie dal tuo lavoro nei luoghi che il tuo team già legge, come un canale di ingegneria, un thread di standup o una descrizione di pull request. | Gli esempi tratti dal tuo codebase sono più persuasivi di qualsiasi documentazione esterna, perché i colleghi possono vedere esattamente come lo strumento si applica ai problemi che condividono con te. |

20| Sii la persona che le persone chiedono | Quando un collega ti chiede come hai realizzato qualcosa, rispondi con il prompt effettivo che hai utilizzato in modo che possano applicarlo direttamente al loro compito. | Un esempio concreto e eseguibile rimuove il divario tra la curiosità e un primo utilizzo riuscito, che è dove la maggior parte degli sforzi di adozione si blocca. |

21| Fai crescere il cerchio | Stabilisci un piccolo numero di abitudini ricorrenti leggere, come un canale dedicato o un thread settimanale, in modo che lo slancio continui anche quando la tua attenzione è altrove. | L'adozione che dipende da una sola persona è fragile. L'adozione che è portata da abitudini condivise continua a crescere da sola. |

22 

23La maggior parte di questo si adatta naturalmente al lavoro che stai già facendo. La differenza è una piccola quantità di intenzione aggiuntiva su dove vengono pubblicate le tue scoperte e come i tuoi insegnamenti si diffondono.

24 

25### Quanto dovrebbe costarti

26 

27Stabilisci aspettative con te stesso e con il tuo lead. Le attività di seguito sono intese per adattarsi a una normale settimana lavorativa, e il ruolo dovrebbe rimanere un moltiplicatore del tuo lavoro esistente piuttosto che una responsabilità di supporto aggiuntiva.

28 

29| Attività | Tempo per settimana | Guida |

30| ----------------------------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------- |

31| Pubblicazione di vittorie e prompt | Circa 15 minuti | Cattura questi al momento con uno screenshot e una o due frasi; evita di trasformarli in articoli formali. |

32| Rispondere alle domande in un canale condiviso | Circa 20 minuti | Rispondi pubblicamente una volta, quindi collega a quella risposta quando la domanda si ripete. |

33| Ospitare un thread settimanale di show-and-tell | Circa 5 minuti | Tu pubblichi il prompt di apertura; il team fornisce il contenuto. |

34| Pairing o walkthrough opzionali | Da 0 a 30 minuti | Riservalo ai colleghi che sono veramente bloccati e offri il link [Quickstart](/it/quickstart) prima di programmare il tempo. |

35 

36## Condividi quello che scopri

37 

38La tua esperienza personale è il materiale più persuasivo che i tuoi colleghi incontreranno, perché è specifico per il codebase, i flussi di lavoro e i problemi che condividete tutti. La documentazione dice alle persone cosa è possibile; i tuoi post mostrano loro cosa sta effettivamente funzionando nel tuo ambiente.

39 

40### Cosa vale la pena condividere

41 

42I post più utili descrivono una tecnica che un collega può riutilizzare domani piuttosto che un risultato che è già completo. Le tecniche si compongono mentre si diffondono attraverso un team; gli aggiornamenti di stato no.

43 

44Esempi di tecniche riutilizzabili:

45 

46* "Ho imparato che @-menzionare una directory funziona. Puntandola a `@src/components/` e chiedendo quali mancavano di test, ho scoperto due che avevo trascurato."

47* "Plan mode (`Shift+Tab`) mostra esattamente quali file verranno toccati prima di qualsiasi modifica, ecco perché sono a mio agio nell'usarlo su codice condiviso."

48* "Ho configurato un hook Stop in modo da ricevere una notifica desktop quando un'attività lunga si completa. La configurazione è nel thread."

49* "Eseguire `/init` genera un `CLAUDE.md` dal repository in modo che l'assistente smetta di chiedere di nuovo delle nostre convenzioni."

50 

51### Dove condividerlo

52 

53Pubblica ovunque il tuo team già legge. L'obiettivo è posizionare gli esempi nel percorso del lavoro normale piuttosto che creare una destinazione.

54 

55| Posizione | Più adatta per | Formato consigliato |

56| ------------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |

57| Un canale `#claude-code` o di ingegneria generale | Scoperte, prompt e momenti "oggi ho imparato" | Uno screenshot accompagnato da una o due frasi di contesto |

58| Descrizioni di pull request | Dimostrare l'approccio su codice reale che i revisori stanno già leggendo | Una singola riga come "Claude e io abbiamo fatto questo refactor; felice di spiegare l'approccio." |

59| Standup o aggiornamenti scritti settimanali | Normalizzare l'utilizzo con lead e manager skip-level | Una frase che descrive un risultato concreto |

60| Wiki del team o documentazione interna | Modelli durevoli, skill personalizzate e esempi di `CLAUDE.md` | Una breve pagina, collegata dal topic del canale in modo che rimanga scopribile |

61 

62### Il formato che funziona

63 

64Uno screenshot accompagnato da una singola riga di contesto, o una breve descrizione prima e dopo, è generalmente il livello di dettaglio giusto. Mantieni ogni post abbastanza breve che qualcuno che scorre ancora assorba il punto. Un lungo articolo tende ad essere salvato per dopo e dimenticato, mentre un breve post con uno screenshot tende ad essere copiato e provato.

65 

66I post di esempio di seguito illustrano il tono e la lunghezza; adattali piuttosto che copiarli verbatim.

67 

68```text theme={null}

69Ho imparato oggi che @-menzionare una directory funziona. L'ho puntata a

70@src/components/ e ho chiesto quali componenti mancavano di test, e ha

71scoperto due che avevo dimenticato.

72```

73 

74```text theme={null}

75Ho configurato un hook Stop in modo da ricevere una notifica desktop quando

76un'attività lunga si completa. Ho iniziato un refactor, mi sono allontanato

77e sono stato notificato quando è finito. La configurazione è nel thread.

78```

79 

80```text theme={null}

81Plan mode è il motivo per cui sono a mio agio nell'usare questo su codice

82che conta. Premi Shift+Tab finché non vedi "plan"; mostra esattamente quali

83file intende toccare prima di cambiare qualcosa.

84```

85 

86## Sii la persona che le persone chiedono

87 

88Una volta che hai condiviso alcuni esempi, seguiranno le domande. Questo è dove il ruolo di champion ha la maggiore leva, perché una buona risposta a una persona spesso sblocca diversi altri che stanno guardando lo stesso canale.

89 

90### Rispondi con un prompt piuttosto che con una spiegazione

91 

92Quando un collega ti chiede come hai realizzato qualcosa, la risposta più utile è il prompt che hai effettivamente utilizzato. Impareranno di più eseguendo quel prompt contro il loro problema che da qualsiasi descrizione che potresti scrivere, e dà loro qualcosa su cui possono agire immediatamente.

93 

94```text theme={null}

95Collega: Come hai fatto a trovare quella race condition?

96 

97Champion: Ho chiesto, "Il test in @tests/scheduler.test.ts è instabile, scopri

98il motivo," e ha tracciato due promise non unite nello scheduler. Prova la

99stessa formulazione sul tuo test.

100```

101 

102### Punta alla funzione piuttosto che alla documentazione

103 

104Una risposta come "Prova plan mode, premi `Shift+Tab` finché non lo vedi" è più utile al momento che un link alla documentazione. Se la persona ha bisogno di più profondità in seguito la troverà da sola; adesso ha bisogno della singola cosa che la sblocca.

105 

106### Domande che probabilmente sentirai

107 

108| Domanda | Risposta suggerita | Risorsa di follow-up |

109| ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |

110| "Su cosa dovrei provarlo per primo?" | Consiglia un compito reale ma contenuto, idealmente un bug o una chore che la persona ha rimandato perché è noioso piuttosto che difficile. | [Common workflows](/it/common-workflows) |

111| "Come faccio a fidarmi di lui con il mio codice?" | Introduci plan mode: premendo `Shift+Tab` si entra, Claude propone esattamente cosa intende cambiare, e nulla viene modificato fino all'approvazione dell'utente. | [Permissions](/it/permissions) |

112| "Vale la pena lo sforzo di configurazione?" | L'installazione richiede circa due minuti, viene eseguita nel terminale e non richiede alcuna estensione IDE. Eseguire `/init` una volta è sufficiente per iniziare a lavorare. | [Quickstart](/it/quickstart) |

113| "Ha prodotto un risultato errato." | Incoraggiali a fornire il fallimento a Claude. Incollare il messaggio di errore o il test fallito è molto più efficace che riformulare la richiesta originale. | [Common workflows](/it/common-workflows) |

114| "Non comprende le convenzioni del nostro codebase." | Suggerisci di eseguire `/init` per generare un file `CLAUDE.md`, quindi aggiungi le convenzioni del team, i comandi di test e qualsiasi directory che dovrebbe essere evitata. | [Memory](/it/memory) |

115| "È solo autocomplete?" | Offri una breve dimostrazione in cui Claude spiega un file sconosciuto, traccia un bug tra i servizi o bozza un piano di migrazione. Questi compiti richiedono il ragionamento attraverso il repository piuttosto che il completamento di una singola riga. | Una dimostrazione dal vivo di due minuti |

116| "Che dire della sicurezza e della gestione dei dati?" | Rimanda questa domanda al tuo amministratore. La politica di distribuzione e gestione dei dati della tua organizzazione è già configurata, e i champion non dovrebbero improvvisare questa risposta. | [Security](/it/security) · [Data usage](/it/data-usage) |

117 

118## Fai crescere il cerchio

119 

120L'obiettivo non è costruire un programma o possedere un rollout. È stabilire un piccolo numero di abitudini leggere che consentono allo slancio di continuare dopo che hai smesso di guidarlo attivamente. Quando le domande nel canale vengono risposte da persone diverse da te, il ruolo ha fatto il suo lavoro.

121 

122### Modelli che tendono a funzionare

123 

124| Modello | Come eseguirlo | Sforzo richiesto |

125| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |

126| Un canale dedicato | Crea un canale `#claude-code` (o un thread ricorrente in uno esistente), fissa il link [Quickstart](/it/quickstart) e un forte esempio, e rispondi alle domande pubblicamente in modo che ogni risposta avvantaggi tutti coloro che stanno guardando. | Circa cinque minuti per configurare, quindi ambiente |

127| Un thread settimanale di show-and-tell | Ogni venerdì, pubblica "Con cosa ti ha aiutato Claude questa settimana?" Non è richiesta alcuna preparazione, diapositive o riunione; screenshot e brevi descrizioni sono sufficienti. | Circa due minuti per settimana |

128| Condividi una skill personalizzata | Pubblica il tuo file `.claude/skills/<name>/SKILL.md` più utile, ad esempio una skill `/ship` che esegue test e lint prima di eseguire il commit, con una descrizione di una riga. Poiché le skill sono Markdown semplice, i colleghi possono adottarle immediatamente. | Circa cinque minuti per skill |

129| Genera una guida di configurazione dal tuo utilizzo | Esegui `/team-onboarding` in un progetto su cui hai trascorso tempo reale. Claude scansiona le tue sessioni recenti, i comandi e i server MCP, quindi produce una guida che un nuovo compagno di squadra può incollare come primo messaggio per riprodurre la tua configurazione. Fissala nel canale. | Circa due minuti |

130| Pair su un primo compito | Offri una singola sessione di pairing di quindici minuti a chiunque stia iniziando. Un risultato riuscito sul loro codice è più persuasivo di qualsiasi presentazione. | Circa quindici minuti per persona |

131| Identifica il prossimo champion | Il collega che ti fa più domande è solitamente pronto ad assumere questo ruolo. Inoltri loro questa pagina e dividi le responsabilità del canale tra voi. | Trascurabile |

132 

133### Guida di trenta giorni

134 

135Se un piano vago è utile, la sequenza di seguito riflette cosa tende a funzionare nella maggior parte dei team. Adatta liberamente al tuo contesto.

136 

137<Steps>

138 <Step title="Settimana 1: Semina il canale">

139 Crea il canale, fissa [Quickstart](/it/quickstart) e pubblica due o tre dei tuoi esempi con i prompt inclusi.

140 

141 **Segnale che sta funzionando:** alcuni colleghi reagiscono o rispondono, e almeno una domanda viene posta nel canale.

142 </Step>

143 

144 <Step title="Settimana 2: Inizia il ritmo">

145 Inizia il thread settimanale di show-and-tell, rispondi a ogni domanda pubblicamente e condividi una skill personalizzata o uno snippet di `CLAUDE.md`.

146 

147 **Segnale che sta funzionando:** qualcuno diverso da te pubblica un esempio del proprio.

148 </Step>

149 

150 <Step title="Settimana 3: Pair e consolida">

151 Offri due o tre brevi sessioni di pairing e consolida le domande e le risposte più comuni in un messaggio FAQ fissato.

152 

153 **Segnale che sta funzionando:** vedi un utilizzo ripetuto, con gli stessi colleghi che ritornano piuttosto che provare una volta e fermarsi.

154 </Step>

155 

156 <Step title="Settimana 4: Passa il testimone">

157 Identifica un secondo champion e condividi un breve riassunto di cosa sta funzionando e cosa no con il tuo lead o amministratore.

158 

159 **Segnale che sta funzionando:** le domande nel canale vengono risposte da persone diverse da te.

160 </Step>

161</Steps>

162 

163### Quando qualcuno vuole approfondire

164 

165Sei l'introduzione calorosa piuttosto che il programma di onboarding. Quando un collega passa da "dovrei provare questo" a "come divento efficace con questo," indirizzalo alle pagine [Quickstart](/it/quickstart) e [Common workflows](/it/common-workflows). Contengono brevi sezioni che coprono le funzioni che sono genuinamente utili ma difficili da scoprire da soli.

166 

167## Rispondi alle preoccupazioni comuni

168 

169Lo scetticismo sano è previsto; gli ingegneri dovrebbero essere cauti riguardo agli strumenti che toccano il loro codice. La risposta più efficace è raramente discutere il caso generale. Invece, riconosci la preoccupazione, offri un breve reframe e proponi una dimostrazione concreta sul codice della persona. La maggior parte delle preoccupazioni viene risolta da una singola esperienza riuscita.

170 

171| Preoccupazione | Risposta suggerita | Evidenza da offrire |

172| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |

173| "Sono più veloce senza di esso." | È probabile che sia vero per il codice che la persona scrive abitualmente. Suggerisci di provarlo sul lavoro che tendono a evitare: file legacy, servizi sconosciuti o scaffolding di test, dove la leva è più alta. | Cronometra un compito noioso in entrambi i modi e confronta. |

174| "Non mi fido dell'IA per toccare il codice di produzione." | Accorda che nessun cambiamento dovrebbe arrivare senza essere letto. Plan mode combinato con la normale revisione diff significa che nulla viene applicato che l'ingegnere non ha ispezionato, lo stesso standard di qualsiasi pull request. | Dimostra plan mode su un file reale. |

175| "Renderà gli ingegneri junior più deboli." | Usato bene, è un efficace spiegatore. Incoraggia gli ingegneri junior a chiedere a Claude di spiegare un file e i suoi siti di chiamata prima di chiedere di cambiare qualcosa. | Esegui "Spiega @file e dove viene chiamato da" insieme. |

176| "Ho provato una volta e ha allucinato." | Questo è solitamente un problema di contesto piuttosto che un problema di modello. @-menzionare i file rilevanti, eseguire `/init` e fornire l'output di errore effettivo di solito lo risolve. | Riesegui il loro prompt originale con il contesto `@` appropriato. |

177| "Non abbiamo tempo per imparare un altro strumento." | Claude Code è un comando di terminale piuttosto che una piattaforma. Se non restituisce valore nella prima sessione, è ragionevole metterlo da parte. | Un'installazione di due minuti seguita da un bug reale. |

178 

179## Foglio di riferimento rapido

180 

181Le tecniche di seguito sono quelle che in modo più affidabile spostano qualcuno da una prima prova all'uso quotidiano. Fissa questa tabella in un canale o condividila da sola.

182 

183| Tecnica | Come applicarla |

184| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

185| Fornisci il contesto giusto | Usa riferimenti `@file` o `@directory/`, o incolla direttamente l'output di errore o log. Fornire il contesto rilevante è più efficace che un prompt elaborato. |

186| Rivedi il piano prima della modifica | Premi `Shift+Tab` per entrare in plan mode. Claude descriverà i cambiamenti previsti per la tua approvazione prima di eseguirli. |

187| Insegnagli il tuo repository | Esegui `/init` per generare un file `CLAUDE.md`, quindi aggiungi le tue convenzioni, i comandi di test e qualsiasi directory che non dovrebbe essere modificata. Vedi [Memory](/it/memory). |

188| Riutilizza un flusso di lavoro | Salva un file `SKILL.md` in `.claude/skills/<name>/` per creare una skill `/name` che l'intero team può utilizzare. Vedi [Skills](/it/skills). |

189| Rimani informato durante i compiti lunghi | Configura un hook Stop per ricevere una notifica desktop quando un'attività di lunga durata si completa. Vedi [Hooks](/it/hooks-guide). |

190| Recupera da un risultato errato | Piuttosto che riformulare la richiesta, incolla il test fallito o la traccia dello stack a Claude e chiedile di affrontare quel fallimento specifico. |

191| Mantieni le modifiche chirurgiche | Chiedi un diff, o specifica "cambia solo X." Claude rispetta l'ambito quando l'ambito è dichiarato. |

192 

193<Tip>

194 Claude Code viene aggiornato frequentemente. Verifica i dettagli specifici della versione rispetto alla [pagina iniziale della documentazione](/it/overview) prima di distribuire questo materiale internamente.

195</Tip>

channels.md +357 −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# Invia eventi in una sessione in esecuzione con i canali

6 

7> Utilizza i canali per inviare messaggi, avvisi e webhook nella tua sessione Claude Code da un server MCP. Inoltra i risultati CI, i messaggi di chat e gli eventi di monitoraggio in modo che Claude possa reagire mentre sei assente.

8 

9<Note>

10 I canali sono in [anteprima di ricerca](#research-preview) e richiedono Claude Code v2.1.80 o versione successiva. Richiedono l'accesso a claude.ai. L'autenticazione tramite console e chiave API non è supportata. Le organizzazioni Team ed Enterprise devono [abilitarli esplicitamente](#enterprise-controls).

11</Note>

12 

13Un canale è un server MCP che invia eventi nella tua sessione Claude Code in esecuzione, in modo che Claude possa reagire alle cose che accadono mentre non sei al terminale. I canali possono essere bidirezionali: Claude legge l'evento e risponde attraverso lo stesso canale, come un ponte di chat. Gli eventi arrivano solo mentre la sessione è aperta, quindi per una configurazione sempre attiva esegui Claude in un processo in background o in un terminale persistente.

14 

15A differenza delle integrazioni che avviano una nuova sessione cloud o attendono di essere interrogate, l'evento arriva nella sessione che hai già aperto: vedi [come si confrontano i canali](#how-channels-compare).

16 

17Installi un canale come plugin e lo configuri con le tue credenziali. Telegram, Discord e iMessage sono inclusi nell'anteprima di ricerca.

18 

19Quando Claude risponde attraverso un canale, vedi il messaggio in arrivo nel tuo terminale ma non il testo della risposta. Il terminale mostra la chiamata dello strumento e una conferma (come "inviato"), e la risposta effettiva appare sull'altra piattaforma.

20 

21Questa pagina copre:

22 

23* [Canali supportati](#supported-channels): configurazione di Telegram, Discord e iMessage

24* [Installa ed esegui un canale](#quickstart) con fakechat, una demo localhost

25* [Chi può inviare messaggi](#security): allowlist dei mittenti e come si accoppia

26* [Abilita i canali per la tua organizzazione](#enterprise-controls) su Team ed Enterprise

27* [Come si confrontano i canali](#how-channels-compare) con sessioni web, Slack, MCP e Remote Control

28 

29Per creare il tuo canale, vedi il [riferimento Canali](/it/channels-reference).

30 

31## Canali supportati

32 

33Ogni canale supportato è un plugin che richiede [Bun](https://bun.sh). Per una demo pratica del flusso del plugin prima di connettere una piattaforma reale, prova la [guida rapida fakechat](#quickstart).

34 

35<Tabs>

36 <Tab title="Telegram">

37 Visualizza il [codice sorgente del plugin Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram) completo.

38 

39 <Steps>

40 <Step title="Crea un bot Telegram">

41 Apri [BotFather](https://t.me/BotFather) in Telegram e invia `/newbot`. Dagli un nome visualizzato e un nome utente univoco che termina con `bot`. Copia il token che BotFather restituisce.

42 </Step>

43 

44 <Step title="Installa il plugin">

45 In Claude Code, esegui:

46 

47 ```

48 /plugin install telegram@claude-plugins-official

49 ```

50 

51 Se Claude Code segnala che il plugin non si trova in alcun marketplace, il tuo marketplace è mancante o obsoleto. Esegui `/plugin marketplace update claude-plugins-official` per aggiornarlo, oppure `/plugin marketplace add anthropics/claude-plugins-official` se non l'hai ancora aggiunto. Quindi riprova l'installazione.

52 

53 Dopo l'installazione, esegui `/reload-plugins` per attivare il comando di configurazione del plugin.

54 </Step>

55 

56 <Step title="Configura il tuo token">

57 Esegui il comando di configurazione con il token da BotFather:

58 

59 ```

60 /telegram:configure <token>

61 ```

62 

63 Questo lo salva in `~/.claude/channels/telegram/.env`. Puoi anche impostare `TELEGRAM_BOT_TOKEN` nel tuo ambiente shell prima di avviare Claude Code.

64 </Step>

65 

66 <Step title="Riavvia con i canali abilitati">

67 Esci da Claude Code e riavvia con il flag del canale. Questo avvia il plugin Telegram, che inizia a eseguire il polling dei messaggi dal tuo bot:

68 

69 ```bash theme={null}

70 claude --channels plugin:telegram@claude-plugins-official

71 ```

72 </Step>

73 

74 <Step title="Accoppia il tuo account">

75 Apri Telegram e invia qualsiasi messaggio al tuo bot. Il bot risponde con un codice di accoppiamento.

76 

77 <Note>Se il tuo bot non risponde, assicurati che Claude Code sia in esecuzione con `--channels` dal passaggio precedente. Il bot può rispondere solo mentre il canale è attivo.</Note>

78 

79 Torna in Claude Code ed esegui:

80 

81 ```

82 /telegram:access pair <code>

83 ```

84 

85 Quindi blocca l'accesso in modo che solo il tuo account possa inviare messaggi:

86 

87 ```

88 /telegram:access policy allowlist

89 ```

90 </Step>

91 </Steps>

92 </Tab>

93 

94 <Tab title="Discord">

95 Visualizza il [codice sorgente del plugin Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) completo.

96 

97 <Steps>

98 <Step title="Crea un bot Discord">

99 Vai al [Discord Developer Portal](https://discord.com/developers/applications), fai clic su **New Application** e assegnagli un nome. Nella sezione **Bot**, crea un nome utente, quindi fai clic su **Reset Token** e copia il token.

100 </Step>

101 

102 <Step title="Abilita Message Content Intent">

103 Nelle impostazioni del tuo bot, scorri fino a **Privileged Gateway Intents** e abilita **Message Content Intent**.

104 </Step>

105 

106 <Step title="Invita il bot al tuo server">

107 Vai a **OAuth2 > URL Generator**. Seleziona l'ambito `bot` e abilita questi permessi:

108 

109 * View Channels

110 * Send Messages

111 * Send Messages in Threads

112 * Read Message History

113 * Attach Files

114 * Add Reactions

115 

116 Apri l'URL generato per aggiungere il bot al tuo server.

117 </Step>

118 

119 <Step title="Installa il plugin">

120 In Claude Code, esegui:

121 

122 ```

123 /plugin install discord@claude-plugins-official

124 ```

125 

126 Se Claude Code segnala che il plugin non si trova in alcun marketplace, il tuo marketplace è mancante o obsoleto. Esegui `/plugin marketplace update claude-plugins-official` per aggiornarlo, oppure `/plugin marketplace add anthropics/claude-plugins-official` se non l'hai ancora aggiunto. Quindi riprova l'installazione.

127 

128 Dopo l'installazione, esegui `/reload-plugins` per attivare il comando di configurazione del plugin.

129 </Step>

130 

131 <Step title="Configura il tuo token">

132 Esegui il comando di configurazione con il token del bot che hai copiato:

133 

134 ```

135 /discord:configure <token>

136 ```

137 

138 Questo lo salva in `~/.claude/channels/discord/.env`. Puoi anche impostare `DISCORD_BOT_TOKEN` nel tuo ambiente shell prima di avviare Claude Code.

139 </Step>

140 

141 <Step title="Riavvia con i canali abilitati">

142 Esci da Claude Code e riavvia con il flag del canale. Questo connette il plugin Discord in modo che il tuo bot possa ricevere e rispondere ai messaggi:

143 

144 ```bash theme={null}

145 claude --channels plugin:discord@claude-plugins-official

146 ```

147 </Step>

148 

149 <Step title="Accoppia il tuo account">

150 Invia un messaggio privato al tuo bot su Discord. Il bot risponde con un codice di accoppiamento.

151 

152 <Note>Se il tuo bot non risponde, assicurati che Claude Code sia in esecuzione con `--channels` dal passaggio precedente. Il bot può rispondere solo mentre il canale è attivo.</Note>

153 

154 Torna in Claude Code ed esegui:

155 

156 ```

157 /discord:access pair <code>

158 ```

159 

160 Quindi blocca l'accesso in modo che solo il tuo account possa inviare messaggi:

161 

162 ```

163 /discord:access policy allowlist

164 ```

165 </Step>

166 </Steps>

167 </Tab>

168 

169 <Tab title="iMessage">

170 Visualizza il [codice sorgente del plugin iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) completo.

171 

172 Il canale iMessage legge il tuo database Messaggi direttamente e invia risposte tramite AppleScript. Richiede macOS e non ha bisogno di token bot o servizio esterno.

173 

174 <Steps>

175 <Step title="Concedi accesso completo al disco">

176 Il database Messaggi in `~/Library/Messages/chat.db` è protetto da macOS. La prima volta che il server lo legge, macOS richiede l'accesso: fai clic su **Allow**. Il prompt nomina qualsiasi app abbia avviato Bun, come Terminal, iTerm o il tuo IDE.

177 

178 Se il prompt non appare o hai fatto clic su Don't Allow, concedi l'accesso manualmente in **System Settings > Privacy & Security > Full Disk Access** e aggiungi il tuo terminale. Senza questo, il server esce immediatamente con `authorization denied`.

179 </Step>

180 

181 <Step title="Installa il plugin">

182 In Claude Code, esegui:

183 

184 ```

185 /plugin install imessage@claude-plugins-official

186 ```

187 

188 Se Claude Code segnala che il plugin non si trova in alcun marketplace, il tuo marketplace è mancante o obsoleto. Esegui `/plugin marketplace update claude-plugins-official` per aggiornarlo, oppure `/plugin marketplace add anthropics/claude-plugins-official` se non l'hai ancora aggiunto. Quindi riprova l'installazione.

189 </Step>

190 

191 <Step title="Riavvia con i canali abilitati">

192 Esci da Claude Code e riavvia con il flag del canale:

193 

194 ```bash theme={null}

195 claude --channels plugin:imessage@claude-plugins-official

196 ```

197 </Step>

198 

199 <Step title="Invia un messaggio a te stesso">

200 Apri Messaggi su qualsiasi dispositivo connesso al tuo Apple ID e invia un messaggio a te stesso. Raggiunge Claude immediatamente: l'auto-chat bypassa il controllo di accesso senza configurazione.

201 

202 <Note>La prima risposta che Claude invia attiva un prompt di automazione macOS che chiede se il tuo terminale può controllare Messaggi. Fai clic su **OK**.</Note>

203 </Step>

204 

205 <Step title="Consenti altri mittenti">

206 Per impostazione predefinita, solo i tuoi messaggi passano. Per consentire a un altro contatto di raggiungere Claude, aggiungi il suo handle:

207 

208 ```

209 /imessage:access allow +15551234567

210 ```

211 

212 Gli handle sono numeri di telefono nel formato `+country` o email Apple ID come `user@example.com`.

213 </Step>

214 </Steps>

215 </Tab>

216</Tabs>

217 

218Puoi anche [creare il tuo canale](/it/channels-reference) per sistemi che non hanno ancora un plugin.

219 

220## Guida rapida

221 

222Fakechat è un canale demo ufficialmente supportato che esegue un'interfaccia di chat su localhost, senza nulla da autenticare e nessun servizio esterno da configurare.

223 

224Una volta installato e abilitato fakechat, puoi digitare nel browser e il messaggio arriva nella tua sessione Claude Code. Claude risponde e la risposta appare di nuovo nel browser. Dopo aver testato l'interfaccia fakechat, prova [Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram), [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) o [iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage).

225 

226Per provare la demo fakechat, avrai bisogno di:

227 

228* Claude Code [installato e autenticato](/it/quickstart#step-1-install-claude-code) con un account claude.ai

229* [Bun](https://bun.sh) installato. I plugin di canale pre-costruiti sono script Bun. Controlla con `bun --version`; se fallisce, [installa Bun](https://bun.sh/docs/installation).

230* **Utenti Team/Enterprise**: l'amministratore della tua organizzazione deve [abilitare i canali](#enterprise-controls) nelle impostazioni gestite

231 

232<Steps>

233 <Step title="Installa il plugin del canale fakechat">

234 Avvia una sessione Claude Code ed esegui il comando di installazione:

235 

236 ```text theme={null}

237 /plugin install fakechat@claude-plugins-official

238 ```

239 

240 Se Claude Code segnala che il plugin non si trova in alcun marketplace, il tuo marketplace è mancante o obsoleto. Esegui `/plugin marketplace update claude-plugins-official` per aggiornarlo, oppure `/plugin marketplace add anthropics/claude-plugins-official` se non l'hai ancora aggiunto. Quindi riprova l'installazione.

241 </Step>

242 

243 <Step title="Riavvia con il canale abilitato">

244 Esci da Claude Code, quindi riavvia con `--channels` e passa il plugin fakechat che hai installato:

245 

246 ```bash theme={null}

247 claude --channels plugin:fakechat@claude-plugins-official

248 ```

249 

250 Il server fakechat si avvia automaticamente.

251 

252 <Tip>

253 Puoi passare più plugin a `--channels`, separati da spazi.

254 </Tip>

255 </Step>

256 

257 <Step title="Invia un messaggio">

258 Apri l'interfaccia fakechat su [http://localhost:8787](http://localhost:8787) e digita un messaggio:

259 

260 ```text theme={null}

261 hey, what's in my working directory?

262 ```

263 

264 Il messaggio arriva nella tua sessione Claude Code come evento `<channel source="fakechat">`. Claude lo legge, fa il lavoro e chiama lo strumento `reply` di fakechat. La risposta appare nell'interfaccia di chat.

265 </Step>

266</Steps>

267 

268Se Claude incontra un prompt di permesso mentre sei lontano dal terminale, la sessione si mette in pausa fino a quando non rispondi. I server di canale che dichiarano la [capacità di inoltro dei permessi](/it/channels-reference#relay-permission-prompts) possono inoltrarti questi prompt in modo che tu possa approvare o negare da remoto. Per l'uso incustodito, [`--dangerously-skip-permissions`](/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) bypassa completamente i prompt, ma usalo solo in ambienti di cui ti fidi.

269 

270## Sicurezza

271 

272Ogni plugin di canale approvato mantiene un allowlist dei mittenti: solo gli ID che hai aggiunto possono inviare messaggi e tutti gli altri vengono silenziosamente scartati.

273 

274Telegram e Discord avviano l'elenco mediante accoppiamento:

275 

2761. Trova il tuo bot in Telegram o Discord e invigli qualsiasi messaggio

2772. Il bot risponde con un codice di accoppiamento

2783. Nella tua sessione Claude Code, approva il codice quando richiesto

2794. Il tuo ID mittente viene aggiunto all'allowlist

280 

281iMessage funziona diversamente: inviarti messaggi bypassa automaticamente il gate, e aggiungi altri contatti per handle con `/imessage:access allow`.

282 

283Oltre a ciò, controlli quali server sono abilitati ogni sessione con `--channels`, e su piani Team ed Enterprise la tua organizzazione controlla la disponibilità con [`channelsEnabled`](#enterprise-controls).

284 

285Essere in `.mcp.json` non è sufficiente per inviare messaggi: un server deve anche essere nominato in `--channels`.

286 

287L'allowlist controlla anche l'[inoltro dei permessi](/it/channels-reference#relay-permission-prompts) se il canale lo dichiara. Chiunque possa rispondere attraverso il canale può approvare o negare l'uso dello strumento nella tua sessione, quindi allowlist solo i mittenti di cui ti fidi con questa autorità.

288 

289## Controlli Enterprise

290 

291Su piani Team ed Enterprise, i canali sono disabilitati per impostazione predefinita. Gli amministratori controllano la disponibilità attraverso due [impostazioni gestite](/it/settings) che gli utenti non possono ignorare:

292 

293| Impostazione | Scopo | Quando non configurato |

294| :---------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------- |

295| `channelsEnabled` | Interruttore principale. Deve essere `true` affinché qualsiasi canale consegni messaggi. Impostato tramite l'interruttore della [console Admin di claude.ai](https://claude.ai/admin-settings/claude-code) o direttamente nelle impostazioni gestite. Blocca tutti i canali incluso il flag di sviluppo quando disattivato. | Canali bloccati |

296| `allowedChannelPlugins` | Quali plugin possono registrarsi una volta abilitati i canali. Sostituisce l'elenco mantenuto da Anthropic quando impostato. Si applica solo quando `channelsEnabled` è `true`. | Si applica l'elenco predefinito di Anthropic |

297 

298Gli utenti Pro e Max senza un'organizzazione saltano completamente questi controlli: i canali sono disponibili e gli utenti optano per sessione con `--channels`.

299 

300### Abilita i canali per la tua organizzazione

301 

302Gli amministratori possono abilitare i canali da [**claude.ai → Admin settings → Claude Code → Channels**](https://claude.ai/admin-settings/claude-code), oppure impostando `channelsEnabled` su `true` nelle impostazioni gestite.

303 

304Una volta abilitati, gli utenti della tua organizzazione possono usare `--channels` per optare i server di canale in sessioni individuali. Se l'impostazione è disabilitata o non impostata, il server MCP si connette comunque e i suoi strumenti funzionano, ma i messaggi del canale non arriveranno. Un avviso di avvio dice all'utente di far abilitare l'impostazione a un amministratore.

305 

306### Limita quali plugin di canale possono essere eseguiti

307 

308Per impostazione predefinita, qualsiasi plugin nell'elenco di allowlist mantenuto da Anthropic può registrarsi come canale. Gli amministratori su piani Team ed Enterprise possono sostituire quell'allowlist con il loro impostando `allowedChannelPlugins` nelle impostazioni gestite. Usalo per limitare quali plugin ufficiali sono consentiti, approvare canali dal tuo marketplace interno, o entrambi. Ogni voce nomina un plugin e il marketplace da cui proviene:

309 

310```json theme={null}

311{

312 "channelsEnabled": true,

313 "allowedChannelPlugins": [

314 { "marketplace": "claude-plugins-official", "plugin": "telegram" },

315 { "marketplace": "claude-plugins-official", "plugin": "discord" },

316 { "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" }

317 ]

318}

319```

320 

321Quando `allowedChannelPlugins` è impostato, sostituisce completamente l'allowlist di Anthropic: solo i plugin elencati possono registrarsi. Lascialo non impostato per tornare all'allowlist predefinito di Anthropic. Un array vuoto blocca tutti i plugin di canale dall'allowlist, ma `--dangerously-load-development-channels` può comunque bypassarlo per i test locali. Per bloccare completamente i canali incluso il flag di sviluppo, lascia invece `channelsEnabled` non impostato.

322 

323Questa impostazione richiede `channelsEnabled: true`. Se un utente passa un plugin a `--channels` che non è nel tuo elenco, Claude Code si avvia normalmente ma il canale non si registra, e l'avviso di avvio spiega che il plugin non è nell'elenco approvato dell'organizzazione.

324 

325## Anteprima di ricerca

326 

327I canali sono una funzione di anteprima di ricerca. La disponibilità viene implementata gradualmente e la sintassi del flag `--channels` e il contratto del protocollo possono cambiare in base al feedback.

328 

329Durante l'anteprima, `--channels` accetta solo plugin da un allowlist mantenuto da Anthropic, o dall'allowlist della tua organizzazione se un amministratore ha impostato [`allowedChannelPlugins`](#restrict-which-channel-plugins-can-run). I plugin di canale in [claude-plugins-official](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) sono l'insieme approvato predefinito. Se passi qualcosa che non è nell'allowlist effettivo, Claude Code si avvia normalmente ma il canale non si registra, e l'avviso di avvio ti dice perché.

330 

331Per testare un canale che stai costruendo, usa `--dangerously-load-development-channels`. Vedi [Test durante l'anteprima di ricerca](/it/channels-reference#test-during-the-research-preview) per informazioni sul test di canali personalizzati che costruisci.

332 

333Segnala problemi o feedback nel [repository GitHub di Claude Code](https://github.com/anthropics/claude-code/issues).

334 

335## Come si confrontano i canali

336 

337Diverse funzioni di Claude Code si connettono a sistemi al di fuori del terminale, ognuna adatta a un diverso tipo di lavoro:

338 

339| Funzione | Cosa fa | Buono per |

340| ------------------------------------------------- | -------------------------------------------------------------------------- | ----------------------------------------------------------------------- |

341| [Claude Code sul web](/it/claude-code-on-the-web) | Esegue attività in una nuova sandbox cloud, clonata da GitHub | Delegare lavoro asincrono autonomo su cui torni in seguito |

342| [Claude in Slack](/it/slack) | Avvia una sessione web da una menzione `@Claude` in un canale o thread | Avviare attività direttamente dal contesto della conversazione del team |

343| Server [MCP](/it/mcp) standard | Claude lo interroga durante un'attività; nulla viene inviato alla sessione | Dare a Claude accesso on-demand per leggere o interrogare un sistema |

344| [Remote Control](/it/remote-control) | Guidi la tua sessione locale da claude.ai o dall'app mobile Claude | Guidare una sessione in corso mentre sei lontano dalla tua scrivania |

345 

346I canali colmano il divario in quell'elenco inviando eventi da fonti non-Claude nella tua sessione locale già in esecuzione.

347 

348* **Ponte di chat**: chiedi a Claude qualcosa dal tuo telefono tramite Telegram, Discord o iMessage, e la risposta torna nella stessa chat mentre il lavoro viene eseguito sulla tua macchina contro i tuoi file reali.

349* **[Ricevitore webhook](/it/channels-reference#example-build-a-webhook-receiver)**: un webhook da CI, il tuo error tracker, una pipeline di deploy o altro servizio esterno arriva dove Claude ha già i tuoi file aperti e ricorda cosa stavi debuggando.

350 

351## Passaggi successivi

352 

353Una volta che hai un canale in esecuzione, esplora queste funzioni correlate:

354 

355* [Crea il tuo canale](/it/channels-reference) per sistemi che non hanno ancora plugin

356* [Remote Control](/it/remote-control) per guidare una sessione locale dal tuo telefono invece di inoltrarvi eventi

357* [Attività pianificate](/it/scheduled-tasks) per eseguire il polling su un timer invece di reagire a eventi inviati

channels-reference.md +749 −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# Riferimento dei canali

6 

7> Crea un server MCP che invia webhook, avvisi e messaggi di chat in una sessione di Claude Code. Riferimento per il contratto del canale: dichiarazione di capacità, eventi di notifica, strumenti di risposta, gating del mittente e inoltro delle autorizzazioni.

8 

9<Note>

10 I canali sono in [anteprima di ricerca](/it/channels#research-preview) e richiedono Claude Code v2.1.80 o successivo. Richiedono l'accesso a claude.ai. L'autenticazione tramite console e chiave API non è supportata. Le organizzazioni Team ed Enterprise devono [abilitarli esplicitamente](/it/channels#enterprise-controls).

11</Note>

12 

13Un canale è un server MCP che invia eventi in una sessione di Claude Code in modo che Claude possa reagire a cose che accadono al di fuori del terminale.

14 

15Puoi creare un canale unidirezionale o bidirezionale. I canali unidirezionali inoltrano avvisi, webhook o eventi di monitoraggio per cui Claude può agire. I canali bidirezionali come i bridge di chat [espongono anche uno strumento di risposta](#expose-a-reply-tool) in modo che Claude possa inviare messaggi indietro. Un canale con un percorso mittente affidabile può anche optare per [inoltro delle richieste di autorizzazione](#relay-permission-prompts) in modo da poter approvare o negare l'uso dello strumento da remoto.

16 

17Questa pagina copre:

18 

19* [Panoramica](#overview): come funzionano i canali

20* [Cosa ti serve](#what-you-need): requisiti e passaggi generali

21* [Esempio: crea un ricevitore webhook](#example-build-a-webhook-receiver): una procedura dettagliata minima unidirezionale

22* [Opzioni del server](#server-options): i campi del costruttore

23* [Formato di notifica](#notification-format): il payload dell'evento

24* [Esponi uno strumento di risposta](#expose-a-reply-tool): consenti a Claude di inviare messaggi indietro

25* [Gating dei messaggi in entrata](#gate-inbound-messages): controlli del mittente per prevenire l'iniezione di prompt

26* [Inoltro delle richieste di autorizzazione](#relay-permission-prompts): inoltra i prompt di approvazione dello strumento ai canali remoti

27 

28Per utilizzare un canale esistente invece di crearne uno, vedi [Canali](/it/channels). Telegram, Discord, iMessage e fakechat sono inclusi nell'anteprima di ricerca.

29 

30## Panoramica

31 

32Un canale è un server [MCP](https://modelcontextprotocol.io) che viene eseguito sulla stessa macchina di Claude Code. Claude Code lo genera come un sottoprocesso e comunica tramite stdio. Il tuo server di canale è il ponte tra i sistemi esterni e la sessione di Claude Code:

33 

34* **Piattaforme di chat** (Telegram, Discord): il tuo plugin viene eseguito localmente e interroga l'API della piattaforma per i nuovi messaggi. Quando qualcuno invia un DM al tuo bot, il plugin riceve il messaggio e lo inoltra a Claude. Nessun URL da esporre.

35* **Webhook** (CI, monitoraggio): il tuo server ascolta su una porta HTTP locale. I sistemi esterni POST a quella porta e il tuo server invia il payload a Claude.

36 

37<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/it/images/channel-architecture.svg" alt="Diagramma dell'architettura che mostra i sistemi esterni che si connettono al tuo server di canale locale, che comunica con Claude Code tramite stdio" />

38 

39## Cosa ti serve

40 

41L'unico requisito difficile è il pacchetto [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk) e un runtime compatibile con Node.js. [Bun](https://bun.sh), [Node](https://nodejs.org) e [Deno](https://deno.com) funzionano tutti. I plugin precostruiti nell'anteprima di ricerca utilizzano Bun, ma il tuo canale non deve necessariamente.

42 

43Il tuo server deve:

44 

451. Dichiarare la capacità `claude/channel` in modo che Claude Code registri un listener di notifica

462. Emettere eventi `notifications/claude/channel` quando accade qualcosa

473. Connettersi tramite [trasporto stdio](https://modelcontextprotocol.io/docs/concepts/transports#standard-io) (Claude Code genera il tuo server come un sottoprocesso)

48 

49Le sezioni [Opzioni del server](#server-options) e [Formato di notifica](#notification-format) coprono ciascuna di queste in dettaglio. Vedi [Esempio: crea un ricevitore webhook](#example-build-a-webhook-receiver) per una procedura dettagliata completa.

50 

51Durante l'anteprima di ricerca, i canali personalizzati non sono nella [lista di approvazione](/it/channels#supported-channels). Usa `--dangerously-load-development-channels` per testare localmente. Vedi [Test durante l'anteprima di ricerca](#test-during-the-research-preview) per i dettagli.

52 

53## Esempio: crea un ricevitore webhook

54 

55Questa procedura dettagliata crea un server a file singolo che ascolta le richieste HTTP e le inoltra nella tua sessione di Claude Code. Alla fine, qualsiasi cosa possa inviare un HTTP POST, come una pipeline CI, un avviso di monitoraggio o un comando `curl`, può inviare eventi a Claude.

56 

57Questo esempio utilizza [Bun](https://bun.sh) come runtime per il suo server HTTP integrato e il supporto di TypeScript. Puoi utilizzare [Node](https://nodejs.org) o [Deno](https://deno.com) invece; l'unico requisito è l'[SDK MCP](https://www.npmjs.com/package/@modelcontextprotocol/sdk).

58 

59<Steps>

60 <Step title="Crea il progetto">

61 Crea una nuova directory e installa l'SDK MCP:

62 

63 ```bash theme={null}

64 mkdir webhook-channel && cd webhook-channel

65 bun add @modelcontextprotocol/sdk

66 ```

67 </Step>

68 

69 <Step title="Scrivi il server di canale">

70 Crea un file chiamato `webhook.ts`. Questo è l'intero server di canale: si connette a Claude Code tramite stdio e ascolta i POST HTTP sulla porta 8788. Quando arriva una richiesta, invia il corpo a Claude come evento di canale.

71 

72 ```ts title="webhook.ts" theme={null}

73 #!/usr/bin/env bun

74 import { Server } from '@modelcontextprotocol/sdk/server/index.js'

75 import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

76 

77 // Crea il server MCP e dichiaralo come canale

78 const mcp = new Server(

79 { name: 'webhook', version: '0.0.1' },

80 {

81 // questa chiave è ciò che lo rende un canale — Claude Code registra un listener per essa

82 capabilities: { experimental: { 'claude/channel': {} } },

83 // aggiunto al prompt di sistema di Claude in modo che sappia come gestire questi eventi

84 instructions: 'Gli eventi dal canale webhook arrivano come <channel source="webhook" ...>. Sono unidirezionali: leggili e agisci, nessuna risposta prevista.',

85 },

86 )

87 

88 // Connettiti a Claude Code tramite stdio (Claude Code genera questo processo)

89 await mcp.connect(new StdioServerTransport())

90 

91 // Avvia un server HTTP che inoltra ogni POST a Claude

92 Bun.serve({

93 port: 8788, // qualsiasi porta aperta funziona

94 // solo localhost: nulla al di fuori di questa macchina può POST

95 hostname: '127.0.0.1',

96 async fetch(req) {

97 const body = await req.text()

98 await mcp.notification({

99 method: 'notifications/claude/channel',

100 params: {

101 content: body, // diventa il corpo del tag <channel>

102 // ogni chiave diventa un attributo del tag, ad es. <channel path="/" method="POST">

103 meta: { path: new URL(req.url).pathname, method: req.method },

104 },

105 })

106 return new Response('ok')

107 },

108 })

109 ```

110 

111 Il file fa tre cose in ordine:

112 

113 * **Configurazione del server**: crea il server MCP con `claude/channel` nelle sue capacità, che è ciò che dice a Claude Code che questo è un canale. La stringa [`instructions`](#server-options) va nel prompt di sistema di Claude: dì a Claude quali eventi aspettarsi, se rispondere e come instradare le risposte se dovrebbe.

114 * **Connessione stdio**: si connette a Claude Code tramite stdin/stdout. Questo è standard per qualsiasi [server MCP](https://modelcontextprotocol.io/docs/concepts/transports#standard-io): Claude Code lo genera come un sottoprocesso.

115 * **Listener HTTP**: avvia un server web locale sulla porta 8788. Ogni corpo POST viene inoltrato a Claude come evento di canale tramite `mcp.notification()`. Il `content` diventa il corpo dell'evento e ogni voce `meta` diventa un attributo sul tag `<channel>`. Il listener ha bisogno dell'accesso all'istanza `mcp`, quindi viene eseguito nello stesso processo. Potresti dividerlo in moduli separati per un progetto più grande.

116 </Step>

117 

118 <Step title="Registra il tuo server con Claude Code">

119 Aggiungi il server alla tua configurazione MCP in modo che Claude Code sappia come avviarlo. Per un `.mcp.json` a livello di progetto nella stessa directory, usa un percorso relativo. Per la configurazione a livello di utente in `~/.claude.json`, usa il percorso assoluto completo in modo che il server possa essere trovato da qualsiasi progetto:

120 

121 ```json title=".mcp.json" theme={null}

122 {

123 "mcpServers": {

124 "webhook": { "command": "bun", "args": ["./webhook.ts"] }

125 }

126 }

127 ```

128 

129 Claude Code legge la tua configurazione MCP all'avvio e genera ogni server come un sottoprocesso.

130 </Step>

131 

132 <Step title="Testalo">

133 Durante l'anteprima di ricerca, i canali personalizzati non sono nella lista di approvazione, quindi avvia Claude Code con il flag di sviluppo:

134 

135 ```bash theme={null}

136 claude --dangerously-load-development-channels server:webhook

137 ```

138 

139 Quando Claude Code si avvia, legge la tua configurazione MCP, genera il tuo `webhook.ts` come un sottoprocesso e il listener HTTP si avvia automaticamente sulla porta che hai configurato (8788 in questo esempio). Non è necessario eseguire il server da solo.

140 

141 Se vedi "bloccato dalla politica dell'organizzazione", il tuo amministratore Team o Enterprise deve prima [abilitare i canali](/it/channels#enterprise-controls).

142 

143 In un terminale separato, simula un webhook inviando un HTTP POST con un messaggio al tuo server. Questo esempio invia un avviso di errore CI alla porta 8788 (o qualsiasi porta tu abbia configurato):

144 

145 ```bash theme={null}

146 curl -X POST localhost:8788 -d "build failed on main: https://ci.example.com/run/1234"

147 ```

148 

149 Il payload arriva nella tua sessione di Claude Code come un tag `<channel>`:

150 

151 ```text theme={null}

152 <channel source="webhook" path="/" method="POST">build failed on main: https://ci.example.com/run/1234</channel>

153 ```

154 

155 Nel tuo terminale di Claude Code, vedrai Claude ricevere il messaggio e iniziare a rispondere: leggendo file, eseguendo comandi o qualsiasi cosa il messaggio richieda. Questo è un canale unidirezionale, quindi Claude agisce nella tua sessione ma non invia nulla indietro tramite il webhook. Per aggiungere risposte, vedi [Esponi uno strumento di risposta](#expose-a-reply-tool).

156 

157 Se l'evento non arriva, la diagnosi dipende da ciò che `curl` ha restituito:

158 

159 * **`curl` ha successo ma nulla raggiunge Claude**: esegui `/mcp` nella tua sessione per controllare lo stato del server. "Impossibile connettersi" di solito significa un errore di dipendenza o importazione nel tuo file server; controlla il log di debug in `~/.claude/debug/<session-id>.txt` per la traccia stderr.

160 * **`curl` fallisce con "connessione rifiutata"**: la porta non è ancora associata o un processo stantio da un'esecuzione precedente la sta mantenendo. `lsof -i :<port>` mostra cosa sta ascoltando; `kill` il processo stantio prima di riavviare la tua sessione.

161 </Step>

162</Steps>

163 

164Il [server fakechat](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat) estende questo modello con un'interfaccia web, allegati di file e uno strumento di risposta per chat bidirezionale.

165 

166## Test durante l'anteprima di ricerca

167 

168Durante l'anteprima di ricerca, ogni canale deve essere nella [lista di approvazione approvata](/it/channels#research-preview) per registrarsi. Il flag di sviluppo bypassa la lista di approvazione per voci specifiche dopo un prompt di conferma. Questo esempio mostra entrambi i tipi di voce:

169 

170```bash theme={null}

171# Test di un plugin che stai sviluppando

172claude --dangerously-load-development-channels plugin:yourplugin@yourmarketplace

173 

174# Test di un server .mcp.json nudo (nessun wrapper di plugin ancora)

175claude --dangerously-load-development-channels server:webhook

176```

177 

178Il bypass è per voce. Combinare questo flag con `--channels` non estende il bypass alle voci `--channels`. Durante l'anteprima di ricerca, la lista di approvazione approvata è curata da Anthropic, quindi il tuo canale rimane sul flag di sviluppo mentre lo costruisci e lo testi.

179 

180<Note>

181 Questo flag salta solo la lista di approvazione. La politica organizzativa `channelsEnabled` si applica comunque. Non usarla per eseguire canali da fonti non attendibili.

182</Note>

183 

184## Opzioni del server

185 

186Un canale imposta queste opzioni nel costruttore [`Server`](https://modelcontextprotocol.io/docs/concepts/servers). I campi `instructions` e `capabilities.tools` sono [MCP standard](https://modelcontextprotocol.io/docs/concepts/servers); `capabilities.experimental['claude/channel']` e `capabilities.experimental['claude/channel/permission']` sono le aggiunte specifiche del canale:

187 

188| Campo | Tipo | Descrizione |

189| :------------------------------------------------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

190| `capabilities.experimental['claude/channel']` | `object` | Obbligatorio. Sempre `{}`. La presenza registra il listener di notifica. |

191| `capabilities.experimental['claude/channel/permission']` | `object` | Facoltativo. Sempre `{}`. Dichiara che questo canale può ricevere richieste di inoltro delle autorizzazioni. Quando dichiarato, Claude Code inoltra i prompt di approvazione dello strumento al tuo canale in modo da poter approvare o negare da remoto. Vedi [Inoltro delle richieste di autorizzazione](#relay-permission-prompts). |

192| `capabilities.tools` | `object` | Solo bidirezionale. Sempre `{}`. Capacità dello strumento MCP standard. Vedi [Esponi uno strumento di risposta](#expose-a-reply-tool). |

193| `instructions` | `string` | Consigliato. Aggiunto al prompt di sistema di Claude. Dì a Claude quali eventi aspettarsi, cosa significano gli attributi del tag `<channel>`, se rispondere e, se sì, quale strumento usare e quale attributo passare indietro (come `chat_id`). |

194 

195Per creare un canale unidirezionale, ometti `capabilities.tools`. Questo esempio mostra una configurazione bidirezionale con la capacità del canale, gli strumenti e le istruzioni impostate:

196 

197```ts theme={null}

198import { Server } from '@modelcontextprotocol/sdk/server/index.js'

199 

200const mcp = new Server(

201 { name: 'your-channel', version: '0.0.1' },

202 {

203 capabilities: {

204 experimental: { 'claude/channel': {} }, // registra il listener del canale

205 tools: {}, // ometti per canali unidirezionali

206 },

207 // aggiunto al prompt di sistema di Claude in modo che sappia come gestire i tuoi eventi

208 instructions: 'I messaggi arrivano come <channel source="your-channel" ...>. Rispondi con lo strumento di risposta.',

209 },

210)

211```

212 

213Per inviare un evento, chiama `mcp.notification()` con il metodo `notifications/claude/channel`. I parametri sono nella sezione successiva.

214 

215## Formato di notifica

216 

217Il tuo server emette `notifications/claude/channel` con due parametri:

218 

219| Campo | Tipo | Descrizione |

220| :-------- | :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

221| `content` | `string` | Il corpo dell'evento. Consegnato come il corpo del tag `<channel>`. |

222| `meta` | `Record<string, string>` | Facoltativo. Ogni voce diventa un attributo sul tag `<channel>` per il contesto di instradamento come ID chat, nome del mittente o gravità dell'avviso. Le chiavi devono essere identificatori: solo lettere, cifre e sottolineature. Le chiavi contenenti trattini o altri caratteri vengono silenziosamente eliminate. |

223 

224Il tuo server invia gli eventi chiamando `mcp.notification()` sull'istanza `Server`. Questo esempio invia un avviso di errore CI con due chiavi meta:

225 

226```ts theme={null}

227await mcp.notification({

228 method: 'notifications/claude/channel',

229 params: {

230 content: 'build failed on main: https://ci.example.com/run/1234',

231 meta: { severity: 'high', run_id: '1234' },

232 },

233})

234```

235 

236L'evento arriva nel contesto di Claude avvolto in un tag `<channel>`. L'attributo `source` viene impostato automaticamente dal nome configurato del tuo server:

237 

238```text theme={null}

239<channel source="your-channel" severity="high" run_id="1234">

240build failed on main: https://ci.example.com/run/1234

241</channel>

242```

243 

244## Esponi uno strumento di risposta

245 

246Se il tuo canale è bidirezionale, come un bridge di chat piuttosto che un inoltro di avvisi, esponi uno [strumento MCP](https://modelcontextprotocol.io/docs/concepts/tools) standard che Claude può chiamare per inviare messaggi indietro. Nulla della registrazione dello strumento è specifico del canale. Uno strumento di risposta ha tre componenti:

247 

2481. Una voce `tools: {}` nelle capacità del tuo costruttore `Server` in modo che Claude Code scopra lo strumento

2492. Handler dello strumento che definiscono lo schema dello strumento e implementano la logica di invio

2503. Una stringa `instructions` nel tuo costruttore `Server` che dice a Claude quando e come chiamare lo strumento

251 

252Per aggiungere questi al [ricevitore webhook sopra](#example-build-a-webhook-receiver):

253 

254<Steps>

255 <Step title="Abilita la scoperta dello strumento">

256 Nel tuo costruttore `Server` in `webhook.ts`, aggiungi `tools: {}` alle capacità in modo che Claude Code sappia che il tuo server offre strumenti:

257 

258 ```ts theme={null}

259 capabilities: {

260 experimental: { 'claude/channel': {} },

261 tools: {}, // abilita la scoperta dello strumento

262 },

263 ```

264 </Step>

265 

266 <Step title="Registra lo strumento di risposta">

267 Aggiungi quanto segue a `webhook.ts`. L'`import` va in cima al file con i tuoi altri import; i due handler vanno tra il costruttore `Server` e `mcp.connect()`. Questo registra uno strumento `reply` che Claude può chiamare con un `chat_id` e `text`:

268 

269 ```ts theme={null}

270 // Aggiungi questo import in cima a webhook.ts

271 import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

272 

273 // Claude interroga questo all'avvio per scoprire quali strumenti offre il tuo server

274 mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

275 tools: [{

276 name: 'reply',

277 description: 'Invia un messaggio indietro su questo canale',

278 // inputSchema dice a Claude quali argomenti passare

279 inputSchema: {

280 type: 'object',

281 properties: {

282 chat_id: { type: 'string', description: 'La conversazione in cui rispondere' },

283 text: { type: 'string', description: 'Il messaggio da inviare' },

284 },

285 required: ['chat_id', 'text'],

286 },

287 }],

288 }))

289 

290 // Claude chiama questo quando vuole invocare uno strumento

291 mcp.setRequestHandler(CallToolRequestSchema, async req => {

292 if (req.params.name === 'reply') {

293 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

294 // send() è il tuo outbound: POST alla tua piattaforma di chat, o per il test locale

295 // il broadcast SSE mostrato nell'esempio completo di seguito.

296 send(`Reply to ${chat_id}: ${text}`)

297 return { content: [{ type: 'text', text: 'sent' }] }

298 }

299 throw new Error(`unknown tool: ${req.params.name}`)

300 })

301 ```

302 </Step>

303 

304 <Step title="Aggiorna le istruzioni">

305 Aggiorna la stringa `instructions` nel tuo costruttore `Server` in modo che Claude sappia di instradare le risposte indietro tramite lo strumento. Questo esempio dice a Claude di passare `chat_id` dal tag in entrata:

306 

307 ```ts theme={null}

308 instructions: 'I messaggi arrivano come <channel source="webhook" chat_id="...">. Rispondi con lo strumento di risposta, passando il chat_id dal tag.'

309 ```

310 </Step>

311</Steps>

312 

313Ecco il `webhook.ts` completo con supporto bidirezionale. Le risposte in uscita vengono trasmesse su `GET /events` utilizzando [Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) (SSE), quindi `curl -N localhost:8788/events` può guardarle dal vivo; la chat in entrata arriva su `POST /`:

314 

315```ts title="Full webhook.ts with reply tool' expandable theme={null}

316#!/usr/bin/env bun

317import { Server } from '@modelcontextprotocol/sdk/server/index.js'

318import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

319import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

320 

321// --- Outbound: scrivi su qualsiasi listener curl -N su /events ---

322// Un vero bridge farebbe POST alla tua piattaforma di chat invece.

323const listeners = new Set<(chunk: string) => void>()

324function send(text: string) {

325 const chunk = text.split('\n').map(l => `data: ${l}\n`).join('') + '\n'

326 for (const emit of listeners) emit(chunk)

327}

328 

329const mcp = new Server(

330 { name: 'webhook', version: '0.0.1' },

331 {

332 capabilities: {

333 experimental: { 'claude/channel': {} },

334 tools: {},

335 },

336 instructions: 'I messaggi arrivano come <channel source="webhook" chat_id="...">. Rispondi con lo strumento di risposta, passando il chat_id dal tag.',

337 },

338)

339 

340mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

341 tools: [{

342 name: 'reply',

343 description: 'Invia un messaggio indietro su questo canale',

344 inputSchema: {

345 type: 'object',

346 properties: {

347 chat_id: { type: 'string', description: 'La conversazione in cui rispondere' },

348 text: { type: 'string', description: 'Il messaggio da inviare' },

349 },

350 required: ['chat_id', 'text'],

351 },

352 }],

353}))

354 

355mcp.setRequestHandler(CallToolRequestSchema, async req => {

356 if (req.params.name === 'reply') {

357 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

358 send(`Reply to ${chat_id}: ${text}`)

359 return { content: [{ type: 'text', text: 'sent' }] }

360 }

361 throw new Error(`unknown tool: ${req.params.name}`)

362})

363 

364await mcp.connect(new StdioServerTransport())

365 

366let nextId = 1

367Bun.serve({

368 port: 8788,

369 hostname: '127.0.0.1',

370 idleTimeout: 0, // non chiudere i flussi SSE inattivi

371 async fetch(req) {

372 const url = new URL(req.url)

373 

374 // GET /events: flusso SSE in modo che curl -N possa guardare le risposte di Claude dal vivo

375 if (req.method === 'GET' && url.pathname === '/events') {

376 const stream = new ReadableStream({

377 start(ctrl) {

378 ctrl.enqueue(': connected\n\n') // in modo che curl mostri qualcosa immediatamente

379 const emit = (chunk: string) => ctrl.enqueue(chunk)

380 listeners.add(emit)

381 req.signal.addEventListener('abort', () => listeners.delete(emit))

382 },

383 })

384 return new Response(stream, {

385 headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache' },

386 })

387 }

388 

389 // POST: inoltra a Claude come evento di canale

390 const body = await req.text()

391 const chat_id = String(nextId++)

392 await mcp.notification({

393 method: 'notifications/claude/channel',

394 params: {

395 content: body,

396 meta: { chat_id, path: url.pathname, method: req.method },

397 },

398 })

399 return new Response('ok')

400 },

401})

402```

403 

404Il [server fakechat](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat) mostra un esempio più completo con allegati di file e modifica dei messaggi.

405 

406## Gating dei messaggi in entrata

407 

408Un canale senza gating è un vettore di iniezione di prompt. Chiunque possa raggiungere il tuo endpoint può mettere testo davanti a Claude. Un canale che ascolta una piattaforma di chat o un endpoint pubblico ha bisogno di un vero controllo del mittente prima di emettere qualsiasi cosa.

409 

410Controlla il mittente rispetto a una lista di approvazione prima di chiamare `mcp.notification()`. Questo esempio elimina qualsiasi messaggio da un mittente non nel set:

411 

412```ts theme={null}

413const allowed = new Set(loadAllowlist()) // dal tuo access.json o equivalente

414 

415// dentro il tuo gestore di messaggi, prima di emettere:

416if (!allowed.has(message.from.id)) { // mittente, non stanza

417 return // elimina silenziosamente

418}

419await mcp.notification({ ... })

420```

421 

422Gating sull'identità del mittente, non sull'identità della chat o della stanza: `message.from.id` nell'esempio, non `message.chat.id`. Nelle chat di gruppo, questi differiscono e il gating sulla stanza permetterebbe a chiunque in un gruppo approvato di iniettare messaggi nella sessione.

423 

424I canali [Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram) e [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) fanno il gating su una lista di approvazione del mittente allo stesso modo. Avviano la lista tramite accoppiamento: l'utente invia un DM al bot, il bot risponde con un codice di accoppiamento, l'utente lo approva nella sua sessione di Claude Code e il suo ID della piattaforma viene aggiunto. Vedi entrambe le implementazioni per il flusso di accoppiamento completo. Il canale [iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) adotta un approccio diverso: rileva gli indirizzi dell'utente dal database dei Messaggi all'avvio e li lascia passare automaticamente, con altri mittenti aggiunti per handle.

425 

426## Inoltro delle richieste di autorizzazione

427 

428<Note>

429 L'inoltro delle autorizzazioni richiede Claude Code v2.1.81 o successivo. Le versioni precedenti ignorano la capacità `claude/channel/permission`.

430</Note>

431 

432Quando Claude chiama uno strumento che ha bisogno di approvazione, la finestra di dialogo del terminale locale si apre e la sessione attende. Un canale bidirezionale può optare per ricevere lo stesso prompt in parallelo e inoltrarlo a te su un altro dispositivo. Entrambi rimangono attivi: puoi rispondere nel terminale o sul tuo telefono e Claude Code applica qualsiasi risposta arrivi per prima e chiude l'altra.

433 

434L'inoltro copre le approvazioni di uso dello strumento come `Bash`, `Write` e `Edit`. La fiducia del progetto e i dialoghi di consenso del server MCP non vengono inoltrati; quelli appaiono solo nel terminale locale.

435 

436### Come funziona l'inoltro

437 

438Quando si apre un prompt di autorizzazione, il ciclo di inoltro ha quattro passaggi:

439 

4401. Claude Code genera un breve ID di richiesta e notifica il tuo server

4412. Il tuo server inoltra il prompt e l'ID alla tua app di chat

4423. L'utente remoto risponde con un sì o no e quell'ID

4434. Il tuo gestore in entrata analizza la risposta in un verdetto e Claude Code lo applica solo se l'ID corrisponde a una richiesta aperta

444 

445La finestra di dialogo del terminale locale rimane aperta durante tutto questo. Se qualcuno al terminale risponde prima che il verdetto remoto arrivi, quella risposta viene applicata invece e la richiesta remota in sospeso viene eliminata.

446 

447<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/it/images/channel-permission-relay.svg" alt="Diagramma di sequenza: Claude Code invia una notifica permission_request al server del canale, il server formatta e invia il prompt all'app di chat, l'umano risponde con un verdetto e il server analizza quella risposta in una notifica di autorizzazione indietro a Claude Code" />

448 

449### Campi della richiesta di autorizzazione

450 

451La notifica in uscita da Claude Code è `notifications/claude/channel/permission_request`. Come la [notifica del canale](#notification-format), il trasporto è MCP standard ma il metodo e lo schema sono estensioni di Claude Code. L'oggetto `params` ha quattro campi stringa che il tuo server formatta nel prompt in uscita:

452 

453| Campo | Descrizione |

454| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

455| `request_id` | Cinque lettere minuscole tratte da `a`-`z` senza `l`, quindi non legge mai come `1` o `I` quando digitato su un telefono. Includilo nel tuo prompt in uscita in modo che possa essere ripetuto nella risposta. Claude Code accetta solo un verdetto che porta un ID che ha emesso. La finestra di dialogo del terminale locale non visualizza questo ID, quindi il tuo gestore in uscita è l'unico modo per apprenderlo. |

456| `tool_name` | Nome dello strumento che Claude vuole usare, ad esempio `Bash` o `Write`. |

457| `description` | Riepilogo leggibile di cosa fa questa specifica chiamata dello strumento, lo stesso testo che la finestra di dialogo del terminale locale mostra. Per una chiamata Bash questo è la descrizione di Claude del comando, o il comando stesso se nessuno è stato fornito. |

458| `input_preview` | Gli argomenti dello strumento come stringa JSON, troncati a 200 caratteri. Per Bash questo è il comando; per Write è il percorso del file e un prefisso del contenuto. Omettilo dal tuo prompt se hai solo spazio per un messaggio di una riga. Il tuo server decide cosa mostrare. |

459 

460Il verdetto che il tuo server rimanda è `notifications/claude/channel/permission` con due campi: `request_id` che ripete l'ID sopra e `behavior` impostato su `'allow'` o `'deny'`. Allow consente alla chiamata dello strumento di procedere; deny la rifiuta, lo stesso che rispondere No nella finestra di dialogo locale. Nessun verdetto influisce sulle chiamate future.

461 

462### Aggiungi inoltro a un bridge di chat

463 

464L'aggiunta dell'inoltro delle autorizzazioni a un canale bidirezionale richiede tre componenti:

465 

4661. Una voce `claude/channel/permission: {}` sotto le capacità `experimental` nel tuo costruttore `Server` in modo che Claude Code sappia di inoltrare i prompt

4672. Un gestore di notifica per `notifications/claude/channel/permission_request` che formatta il prompt e lo invia tramite l'API della tua piattaforma

4683. Un controllo nel tuo gestore di messaggi in entrata che riconosce `yes <id>` o `no <id>` e emette una notifica di verdetto `notifications/claude/channel/permission` invece di inoltrare il testo a Claude

469 

470Dichiara la capacità solo se il tuo canale [autentica il mittente](#gate-inbound-messages), perché chiunque possa rispondere tramite il tuo canale può approvare o negare l'uso dello strumento nella tua sessione.

471 

472Per aggiungere questi a un bridge di chat bidirezionale come quello assemblato in [Esponi uno strumento di risposta](#expose-a-reply-tool):

473 

474<Steps>

475 <Step title="Dichiara la capacità di autorizzazione">

476 Nel tuo costruttore `Server`, aggiungi `claude/channel/permission: {}` accanto a `claude/channel` sotto `experimental`:

477 

478 ```ts theme={null}

479 capabilities: {

480 experimental: {

481 'claude/channel': {},

482 'claude/channel/permission': {}, // opta per l'inoltro delle autorizzazioni

483 },

484 tools: {},

485 },

486 ```

487 </Step>

488 

489 <Step title="Gestisci la richiesta in entrata">

490 Registra un gestore di notifica tra il tuo costruttore `Server` e `mcp.connect()`. Claude Code lo chiama con i [quattro campi di richiesta](#permission-request-fields) quando si apre una finestra di dialogo di autorizzazione. Il tuo gestore formatta il prompt per la tua piattaforma e include istruzioni per rispondere con l'ID:

491 

492 ```ts theme={null}

493 import { z } from 'zod'

494 

495 // setNotificationHandler instrada per z.literal sul campo method,

496 // quindi questo schema è sia il validatore che la chiave di dispatch

497 const PermissionRequestSchema = z.object({

498 method: z.literal('notifications/claude/channel/permission_request'),

499 params: z.object({

500 request_id: z.string(), // cinque lettere minuscole, includi verbatim nel tuo prompt

501 tool_name: z.string(), // ad es. "Bash", "Write"

502 description: z.string(), // riepilogo leggibile di questa chiamata

503 input_preview: z.string(), // argomenti dello strumento come JSON, troncati a ~200 caratteri

504 }),

505 })

506 

507 mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {

508 // send() è il tuo outbound: POST alla tua piattaforma di chat, o per il test locale

509 // il broadcast SSE mostrato nell'esempio completo di seguito.

510 send(

511 `Claude vuole eseguire ${params.tool_name}: ${params.description}\n\n` +

512 // l'ID nell'istruzione è ciò che il tuo gestore in entrata analizza nel Passaggio 3

513 `Rispondi "yes ${params.request_id}" o "no ${params.request_id}"`,

514 )

515 })

516 ```

517 </Step>

518 

519 <Step title="Intercetta il verdetto nel tuo gestore in entrata">

520 Il tuo gestore in entrata è il ciclo o il callback che riceve messaggi dalla tua piattaforma: lo stesso posto dove [fai il gating sul mittente](#gate-inbound-messages) e emetti `notifications/claude/channel` per inoltrare la chat a Claude. Aggiungi un controllo prima della chiamata di inoltro della chat che riconosce il formato del verdetto e emette la notifica di autorizzazione invece.

521 

522 L'espressione regolare corrisponde al formato dell'ID che Claude Code genera: cinque lettere, mai `l`. Il flag `/i` tollera l'autocorrezione del telefono che capitalizza la risposta; minuscola l'ID catturato prima di inviarlo indietro.

523 

524 ```ts theme={null}

525 // corrisponde a "y abcde", "yes abcde", "n abcde", "no abcde"

526 // [a-km-z] è l'alfabeto dell'ID che Claude Code usa (minuscolo, salta 'l')

527 // /i tollera l'autocorrezione del telefono; minuscola la cattura prima di inviare

528 const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i

529 

530 async function onInbound(message: PlatformMessage) {

531 if (!allowed.has(message.from.id)) return // fai il gating sul mittente per primo

532 

533 const m = PERMISSION_REPLY_RE.exec(message.text)

534 if (m) {

535 // m[1] è la parola del verdetto, m[2] è l'ID della richiesta

536 // emetti la notifica del verdetto indietro a Claude Code invece della chat

537 await mcp.notification({

538 method: 'notifications/claude/channel/permission',

539 params: {

540 request_id: m[2].toLowerCase(), // normalizza nel caso di autocorrezione maiuscola

541 behavior: m[1].toLowerCase().startsWith('y') ? 'allow' : 'deny',

542 },

543 })

544 return // gestito come verdetto, non inoltrare anche come chat

545 }

546 

547 // non corrisponde al formato del verdetto: passa al percorso della chat normale

548 await mcp.notification({

549 method: 'notifications/claude/channel',

550 params: { content: message.text, meta: { chat_id: String(message.chat.id) } },

551 })

552 }

553 ```

554 </Step>

555</Steps>

556 

557Claude Code mantiene anche la finestra di dialogo del terminale locale aperta, quindi puoi rispondere in entrambi i posti e la prima risposta ad arrivare viene applicata. Una risposta remota che non corrisponde esattamente al formato previsto fallisce in uno di due modi e in entrambi i casi la finestra di dialogo rimane aperta:

558 

559* **Formato diverso**: l'espressione regolare del tuo gestore in entrata non corrisponde, quindi testo come `approve it` o `yes` senza un ID passa come messaggio normale a Claude.

560* **Formato corretto, ID sbagliato**: il tuo server emette un verdetto, ma Claude Code non trova nessuna richiesta aperta con quell'ID e lo elimina silenziosamente.

561 

562### Esempio completo

563 

564Il `webhook.ts` assemblato di seguito combina tutte e tre le estensioni da questa pagina: lo strumento di risposta, il gating del mittente e l'inoltro delle autorizzazioni. Se stai iniziando qui, avrai anche bisogno della [configurazione del progetto e della voce `.mcp.json`](#example-build-a-webhook-receiver) dalla procedura dettagliata iniziale.

565 

566Per rendere entrambe le direzioni testabili da curl, il listener HTTP serve due percorsi:

567 

568* **`GET /events`**: mantiene aperto un flusso SSE e invia ogni messaggio in uscita come una riga `data:`, quindi `curl -N` può guardare le risposte di Claude e i prompt di autorizzazione arrivare dal vivo.

569* **`POST /`**: il lato in entrata, lo stesso gestore di prima, ora con il controllo del formato del verdetto inserito prima del ramo di inoltro della chat.

570 

571```ts title="Full webhook.ts with permission relay' expandable theme={null}

572#!/usr/bin/env bun

573import { Server } from '@modelcontextprotocol/sdk/server/index.js'

574import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

575import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

576import { z } from 'zod'

577 

578// --- Outbound: scrivi su qualsiasi listener curl -N su /events ---

579// Un vero bridge farebbe POST alla tua piattaforma di chat invece.

580const listeners = new Set<(chunk: string) => void>()

581function send(text: string) {

582 const chunk = text.split('\n').map(l => `data: ${l}\n`).join('') + '\n'

583 for (const emit of listeners) emit(chunk)

584}

585 

586// Lista di approvazione del mittente. Per la procedura dettagliata locale confidiamo nel singolo valore dell'intestazione X-Sender

587// "dev"; un vero bridge controllerebbe l'ID utente della piattaforma.

588const allowed = new Set(['dev'])

589 

590const mcp = new Server(

591 { name: 'webhook', version: '0.0.1' },

592 {

593 capabilities: {

594 experimental: {

595 'claude/channel': {},

596 'claude/channel/permission': {}, // opta per l'inoltro delle autorizzazioni

597 },

598 tools: {},

599 },

600 instructions:

601 'I messaggi arrivano come <channel source="webhook" chat_id="...">. ' +

602 'Rispondi con lo strumento di risposta, passando il chat_id dal tag.',

603 },

604)

605 

606// --- strumento di risposta: Claude chiama questo per inviare un messaggio indietro ---

607mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

608 tools: [{

609 name: 'reply',

610 description: 'Invia un messaggio indietro su questo canale',

611 inputSchema: {

612 type: 'object',

613 properties: {

614 chat_id: { type: 'string', description: 'La conversazione in cui rispondere' },

615 text: { type: 'string', description: 'Il messaggio da inviare' },

616 },

617 required: ['chat_id', 'text'],

618 },

619 }],

620}))

621 

622mcp.setRequestHandler(CallToolRequestSchema, async req => {

623 if (req.params.name === 'reply') {

624 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

625 send(`Reply to ${chat_id}: ${text}`)

626 return { content: [{ type: 'text', text: 'sent' }] }

627 }

628 throw new Error(`unknown tool: ${req.params.name}`)

629})

630 

631// --- inoltro delle autorizzazioni: Claude Code (non Claude) chiama questo quando si apre una finestra di dialogo

632const PermissionRequestSchema = z.object({

633 method: z.literal('notifications/claude/channel/permission_request'),

634 params: z.object({

635 request_id: z.string(),

636 tool_name: z.string(),

637 description: z.string(),

638 input_preview: z.string(),

639 }),

640})

641 

642mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {

643 send(

644 `Claude vuole eseguire ${params.tool_name}: ${params.description}\n\n` +

645 `Rispondi "yes ${params.request_id}" o "no ${params.request_id}"`,

646 )

647})

648 

649await mcp.connect(new StdioServerTransport())

650 

651// --- HTTP su :8788: GET /events trasmette in uscita, POST instrada in entrata ---

652const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i

653let nextId = 1

654 

655Bun.serve({

656 port: 8788,

657 hostname: '127.0.0.1',

658 idleTimeout: 0, // non chiudere i flussi SSE inattivi

659 async fetch(req) {

660 const url = new URL(req.url)

661 

662 // GET /events: flusso SSE in modo che curl -N possa guardare risposte e prompt dal vivo

663 if (req.method === 'GET' && url.pathname === '/events') {

664 const stream = new ReadableStream({

665 start(ctrl) {

666 ctrl.enqueue(': connected\n\n') // in modo che curl mostri qualcosa immediatamente

667 const emit = (chunk: string) => ctrl.enqueue(chunk)

668 listeners.add(emit)

669 req.signal.addEventListener('abort', () => listeners.delete(emit))

670 },

671 })

672 return new Response(stream, {

673 headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache' },

674 })

675 }

676 

677 // tutto il resto è in entrata: fai il gating sul mittente per primo

678 const body = await req.text()

679 const sender = req.headers.get('X-Sender') ?? ''

680 if (!allowed.has(sender)) return new Response('forbidden', { status: 403 })

681 

682 // controlla il formato del verdetto prima di trattare come chat

683 const m = PERMISSION_REPLY_RE.exec(body)

684 if (m) {

685 await mcp.notification({

686 method: 'notifications/claude/channel/permission',

687 params: {

688 request_id: m[2].toLowerCase(),

689 behavior: m[1].toLowerCase().startsWith('y') ? 'allow' : 'deny',

690 },

691 })

692 return new Response('verdict recorded')

693 }

694 

695 // chat normale: inoltra a Claude come evento di canale

696 const chat_id = String(nextId++)

697 await mcp.notification({

698 method: 'notifications/claude/channel',

699 params: { content: body, meta: { chat_id, path: url.pathname } },

700 })

701 return new Response('ok')

702 },

703})

704```

705 

706Testa il percorso del verdetto in tre terminali. Il primo è la tua sessione di Claude Code, avviata con il [flag di sviluppo](#test-during-the-research-preview) in modo che generi `webhook.ts`:

707 

708```bash theme={null}

709claude --dangerously-load-development-channels server:webhook

710```

711 

712Nel secondo, trasmetti il lato in uscita in modo da poter vedere le risposte di Claude e i prompt di autorizzazione mentre arrivano:

713 

714```bash theme={null}

715curl -N localhost:8788/events

716```

717 

718Nel terzo, invia un messaggio che farà sì che Claude tenti di eseguire un comando:

719 

720```bash theme={null}

721curl -d "list the files in this directory" -H "X-Sender: dev" localhost:8788

722```

723 

724La finestra di dialogo di autorizzazione locale si apre nel tuo terminale di Claude Code. Un momento dopo il prompt appare nel flusso `/events`, incluso l'ID di cinque lettere. Approvalo dal lato remoto:

725 

726```bash theme={null}

727curl -d "yes <id>" -H "X-Sender: dev" localhost:8788

728```

729 

730La finestra di dialogo locale si chiude e lo strumento viene eseguito. La risposta di Claude torna tramite lo strumento `reply` e atterra anche nel flusso.

731 

732I tre pezzi specifici del canale in questo file:

733 

734* **Capacità** nel costruttore `Server`: `claude/channel` registra il listener di notifica, `claude/channel/permission` opta per l'inoltro delle autorizzazioni, `tools` consente a Claude di scoprire lo strumento di risposta.

735* **Percorsi in uscita**: il gestore dello strumento `reply` è ciò che Claude chiama per le risposte conversazionali; il gestore di notifica `PermissionRequestSchema` è ciò che Claude Code chiama quando si apre una finestra di dialogo di autorizzazione. Entrambi chiamano `send()` per trasmettere su `/events`, ma vengono attivati da parti diverse del sistema.

736* **Gestore HTTP**: `GET /events` mantiene aperto un flusso SSE in modo che curl possa guardare l'uscita dal vivo; `POST` è in entrata, gated sull'intestazione `X-Sender`. Un corpo `yes <id>` o `no <id>` va a Claude Code come notifica di verdetto e non raggiunge mai Claude; qualsiasi altra cosa viene inoltrata a Claude come evento di canale.

737 

738## Pacchetto come plugin

739 

740Per rendere il tuo canale installabile e condivisibile, avvolgilo in un [plugin](/it/plugins) e pubblicalo in un [marketplace](/it/plugin-marketplaces). Gli utenti lo installano con `/plugin install`, quindi lo abilitano per sessione con `--channels plugin:<name>@<marketplace>`.

741 

742Un canale pubblicato nel tuo marketplace ha ancora bisogno di `--dangerously-load-development-channels` per essere eseguito, poiché non è nella [lista di approvazione](/it/channels#supported-channels). Per aggiungerlo, [invialo al marketplace ufficiale](/it/plugins#submit-your-plugin-to-the-official-marketplace). I plugin di canale passano attraverso la revisione della sicurezza prima di essere approvati. Nei piani Team ed Enterprise, un amministratore può invece includere il tuo plugin nella lista [`allowedChannelPlugins`](/it/channels#restrict-which-channel-plugins-can-run) dell'organizzazione, che sostituisce la lista di approvazione predefinita di Anthropic.

743 

744## Vedi anche

745 

746* [Canali](/it/channels) per installare e utilizzare Telegram, Discord, iMessage o la demo fakechat, e per abilitare i canali per un'organizzazione Team o Enterprise

747* [Implementazioni di canali funzionanti](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) per il codice del server completo con flussi di accoppiamento, strumenti di risposta e allegati di file

748* [MCP](/it/mcp) per il protocollo sottostante che i server di canale implementano

749* [Plugin](/it/plugins) per pacchettizzare il tuo canale in modo che gli utenti possano installarlo con `/plugin install`

checkpointing.md +89 −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# Checkpointing

6 

7> Traccia, riavvolgi e riassumi le modifiche e la conversazione di Claude per gestire lo stato della sessione.

8 

9Claude Code traccia automaticamente le modifiche ai file di Claude mentre lavori, permettendoti di annullare rapidamente le modifiche e tornare a stati precedenti se qualcosa non va come previsto.

10 

11## Come funziona il checkpointing

12 

13Mentre lavori con Claude, il checkpointing cattura automaticamente lo stato del tuo codice prima di ogni modifica. Questa rete di sicurezza ti permette di affrontare compiti ambiziosi e su larga scala sapendo che puoi sempre tornare a uno stato di codice precedente.

14 

15### Tracciamento automatico

16 

17Claude Code traccia tutti i cambiamenti effettuati dai suoi strumenti di modifica dei file:

18 

19* Ogni prompt dell'utente crea un nuovo checkpoint

20* I checkpoint persistono tra le sessioni, quindi puoi accedervi nelle conversazioni riprese

21* Puliti automaticamente insieme alle sessioni dopo 30 giorni (configurabile)

22 

23### Riavvolgi e riassumi

24 

25Premi `Esc` due volte (`Esc` + `Esc`) o usa il comando `/rewind` per aprire il menu di riavvolgimento. Un elenco scorrevole mostra ciascuno dei tuoi prompt dalla sessione. Seleziona il punto su cui desideri agire, quindi scegli un'azione:

26 

27* **Ripristina codice e conversazione**: ripristina sia il codice che la conversazione a quel punto

28* **Ripristina conversazione**: riavvolgi al messaggio mantenendo il codice attuale

29* **Ripristina codice**: ripristina le modifiche ai file mantenendo la conversazione

30* **Riassumi da qui**: comprimi la conversazione da questo punto in avanti in un riassunto, liberando spazio nella context window

31* **Annulla**: torna all'elenco dei messaggi senza apportare modifiche

32 

33Dopo aver ripristinato la conversazione o aver riassunto, il prompt originale dal messaggio selezionato viene ripristinato nel campo di input in modo che tu possa reinviarlo o modificarlo.

34 

35#### Ripristina vs. riassumi

36 

37Le tre opzioni di ripristino ripristinano lo stato: annullano le modifiche al codice, la cronologia della conversazione o entrambi. "Riassumi da qui" funziona diversamente:

38 

39* I messaggi prima del messaggio selezionato rimangono intatti

40* Il messaggio selezionato e tutti i messaggi successivi vengono sostituiti con un riassunto compatto generato dall'IA

41* Nessun file su disco viene modificato

42* I messaggi originali vengono conservati nella trascrizione della sessione, quindi Claude può fare riferimento ai dettagli se necessario

43 

44Questo è simile a `/compact`, ma mirato: invece di riassumere l'intera conversazione, mantieni il contesto iniziale in dettaglio completo e comprimi solo le parti che stanno usando spazio. Puoi digitare istruzioni facoltative per guidare su cosa si concentra il riassunto.

45 

46<Note>

47 Riassumi ti mantiene nella stessa sessione e comprime il contesto. Se desideri creare un ramo e provare un approccio diverso preservando la sessione originale intatta, usa [fork](/it/how-claude-code-works#resume-or-fork-sessions) invece (`claude --continue --fork-session`).

48</Note>

49 

50## Casi d'uso comuni

51 

52I checkpoint sono particolarmente utili quando:

53 

54* **Esplorare alternative**: prova diversi approcci di implementazione senza perdere il tuo punto di partenza

55* **Recuperare da errori**: annulla rapidamente le modifiche che hanno introdotto bug o rotto la funzionalità

56* **Iterare sulle funzionalità**: sperimenta variazioni sapendo che puoi tornare a stati funzionanti

57* **Liberare spazio di contesto**: riassumi una sessione di debug dettagliata dal punto intermedio in avanti, mantenendo le tue istruzioni iniziali intatte

58 

59## Limitazioni

60 

61### Le modifiche dei comandi Bash non vengono tracciate

62 

63Il checkpointing non traccia i file modificati dai comandi bash. Ad esempio, se Claude Code esegue:

64 

65```bash theme={null}

66rm file.txt

67mv old.txt new.txt

68cp source.txt dest.txt

69```

70 

71Queste modifiche ai file non possono essere annullate tramite riavvolgimento. Solo le modifiche dirette ai file effettuate attraverso gli strumenti di modifica dei file di Claude vengono tracciate.

72 

73### Le modifiche esterne non vengono tracciate

74 

75Il checkpointing traccia solo i file che sono stati modificati nella sessione corrente. Le modifiche manuali che effettui ai file al di fuori di Claude Code e le modifiche da altre sessioni concorrenti normalmente non vengono acquisite, a meno che non modifichino gli stessi file della sessione corrente.

76 

77### Non è un sostituto del controllo della versione

78 

79I checkpoint sono progettati per il recupero rapido a livello di sessione. Per la cronologia permanente della versione e la collaborazione:

80 

81* Continua a utilizzare il controllo della versione (ad es. Git) per commit, rami e cronologia a lungo termine

82* I checkpoint completano ma non sostituiscono il controllo della versione appropriato

83* Pensa ai checkpoint come "annulla locale" e Git come "cronologia permanente"

84 

85## Vedi anche

86 

87* [Modalità interattiva](/it/interactive-mode) - Scorciatoie da tastiera e controlli della sessione

88* [Comandi integrati](/it/commands) - Accesso ai checkpoint usando `/rewind`

89* [Riferimento CLI](/it/cli-reference) - Opzioni della riga di comando

chrome.md +232 −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 Claude Code con Chrome (beta)

6 

7> Connetti Claude Code al tuo browser Chrome per testare app web, eseguire il debug con i log della console, automatizzare la compilazione di moduli ed estrarre dati dalle pagine web.

8 

9Claude Code si integra con l'[estensione Claude in Chrome](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) per darti capacità di automazione del browser dalla CLI o dall'[estensione VS Code](/it/vs-code#automate-browser-tasks-with-chrome). Costruisci il tuo codice, quindi testa ed esegui il debug nel browser senza cambiare contesto.

10 

11Claude apre nuove schede per le attività del browser e condivide lo stato di accesso del tuo browser, quindi può accedere a qualsiasi sito in cui sei già connesso. Le azioni del browser vengono eseguite in una finestra Chrome visibile in tempo reale. Quando Claude incontra una pagina di accesso o un CAPTCHA, si ferma e ti chiede di gestirlo manualmente.

12 

13<Note>

14 L'integrazione con Chrome è in beta e attualmente funziona con Google Chrome e Microsoft Edge. Non è ancora supportata su Brave, Arc o altri browser basati su Chromium. Anche WSL (Windows Subsystem for Linux) non è supportato.

15</Note>

16 

17## Capacità

18 

19Con Chrome connesso, puoi concatenare azioni del browser con attività di codifica in un singolo flusso di lavoro:

20 

21* **Debug in tempo reale**: leggi gli errori della console e lo stato del DOM direttamente, quindi correggi il codice che li ha causati

22* **Verifica del design**: costruisci un'interfaccia utente da un mock di Figma, quindi aprila nel browser per verificare che corrisponda

23* **Test di app web**: testa la convalida dei moduli, verifica la presenza di regressioni visive o verifica i flussi utente

24* **App web autenticate**: interagisci con Google Docs, Gmail, Notion o qualsiasi app in cui sei connesso senza connettori API

25* **Estrazione di dati**: estrai informazioni strutturate dalle pagine web e salvale localmente

26* **Automazione delle attività**: automatizza le attività ripetitive del browser come l'immissione di dati, la compilazione di moduli o i flussi di lavoro multi-sito

27* **Registrazione della sessione**: registra le interazioni del browser come GIF per documentare o condividere ciò che è accaduto

28 

29## Prerequisiti

30 

31Prima di utilizzare Claude Code con Chrome, hai bisogno di:

32 

33* Browser [Google Chrome](https://www.google.com/chrome/) o [Microsoft Edge](https://www.microsoft.com/edge)

34* Estensione [Claude in Chrome](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) versione 1.0.36 o superiore, disponibile nel Chrome Web Store per entrambi i browser

35* [Claude Code](/it/quickstart#step-1-install-claude-code) versione 2.0.73 o superiore

36* Un piano Anthropic diretto (Pro, Max, Team o Enterprise)

37 

38<Note>

39 L'integrazione con Chrome non è disponibile tramite provider di terze parti come Amazon Bedrock, Google Cloud Vertex AI o Microsoft Foundry. Se accedi a Claude esclusivamente tramite un provider di terze parti, hai bisogno di un account claude.ai separato per utilizzare questa funzione.

40</Note>

41 

42## Inizia nella CLI

43 

44<Steps>

45 <Step title="Avvia Claude Code con Chrome">

46 Avvia Claude Code con il flag `--chrome`:

47 

48 ```bash theme={null}

49 claude --chrome

50 ```

51 

52 Puoi anche abilitare Chrome da una sessione esistente eseguendo `/chrome`.

53 </Step>

54 

55 <Step title="Chiedi a Claude di usare il browser">

56 Questo esempio naviga verso una pagina, interagisce con essa e segnala ciò che trova, tutto dal tuo terminale o editor:

57 

58 ```text theme={null}

59 Go to code.claude.com/docs, click on the search box,

60 type "hooks", and tell me what results appear

61 ```

62 </Step>

63</Steps>

64 

65Esegui `/chrome` in qualsiasi momento per verificare lo stato della connessione, gestire le autorizzazioni o riconnettere l'estensione.

66 

67Per VS Code, vedi [automazione del browser in VS Code](/it/vs-code#automate-browser-tasks-with-chrome).

68 

69### Abilita Chrome per impostazione predefinita

70 

71Per evitare di passare `--chrome` ogni sessione, esegui `/chrome` e seleziona "Enabled by default".

72 

73Nell'[estensione VS Code](/it/vs-code#automate-browser-tasks-with-chrome), Chrome è disponibile ogni volta che l'estensione Chrome è installata. Non è necessario alcun flag aggiuntivo.

74 

75<Note>

76 L'abilitazione di Chrome per impostazione predefinita nella CLI aumenta l'utilizzo del contesto poiché gli strumenti del browser vengono sempre caricati. Se noti un aumento del consumo di contesto, disabilita questa impostazione e utilizza `--chrome` solo quando necessario.

77</Note>

78 

79### Gestisci le autorizzazioni del sito

80 

81Le autorizzazioni a livello di sito vengono ereditate dall'estensione Chrome. Gestisci le autorizzazioni nelle impostazioni dell'estensione Chrome per controllare quali siti Claude può navigare, fare clic e digitare.

82 

83## Flussi di lavoro di esempio

84 

85Questi esempi mostrano i modi comuni per combinare azioni del browser con attività di codifica. Esegui `/mcp` e seleziona `claude-in-chrome` per vedere l'elenco completo degli strumenti del browser disponibili.

86 

87### Testa un'applicazione web locale

88 

89Quando sviluppi un'app web, chiedi a Claude di verificare che le tue modifiche funzionino correttamente:

90 

91```text theme={null}

92I just updated the login form validation. Can you open localhost:3000,

93try submitting the form with invalid data, and check if the error

94messages appear correctly?

95```

96 

97Claude naviga verso il tuo server locale, interagisce con il modulo e segnala ciò che osserva.

98 

99### Debug con i log della console

100 

101Claude può leggere l'output della console per aiutare a diagnosticare i problemi. Dì a Claude quali modelli cercare piuttosto che chiedere tutto l'output della console, poiché i log possono essere dettagliati:

102 

103```text theme={null}

104Open the dashboard page and check the console for any errors when

105the page loads.

106```

107 

108Claude legge i messaggi della console e può filtrare per modelli specifici o tipi di errore.

109 

110### Automatizza la compilazione dei moduli

111 

112Velocizza le attività ripetitive di immissione dati:

113 

114```text theme={null}

115I have a spreadsheet of customer contacts in contacts.csv. For each row,

116go to the CRM at crm.example.com, click "Add Contact", and fill in the

117name, email, and phone fields.

118```

119 

120Claude legge il tuo file locale, naviga nell'interfaccia web e immette i dati per ogni record.

121 

122### Bozza di contenuto in Google Docs

123 

124Usa Claude per scrivere direttamente nei tuoi documenti senza configurazione API:

125 

126```text theme={null}

127Draft a project update based on the recent commits and add it to my

128Google Doc at docs.google.com/document/d/abc123

129```

130 

131Claude apre il documento, fa clic nell'editor e digita il contenuto. Questo funziona con qualsiasi app web in cui sei connesso: Gmail, Notion, Sheets e altro.

132 

133### Estrai dati dalle pagine web

134 

135Estrai informazioni strutturate dai siti web:

136 

137```text theme={null}

138Go to the product listings page and extract the name, price, and

139availability for each item. Save the results as a CSV file.

140```

141 

142Claude naviga verso la pagina, legge il contenuto e compila i dati in un formato strutturato.

143 

144### Esegui flussi di lavoro multi-sito

145 

146Coordina le attività su più siti web:

147 

148```text theme={null}

149Check my calendar for meetings tomorrow, then for each meeting with

150an external attendee, look up their company website and add a note

151about what they do.

152```

153 

154Claude lavora su più schede per raccogliere informazioni e completare il flusso di lavoro.

155 

156### Registra una GIF demo

157 

158Crea registrazioni condivisibili delle interazioni del browser:

159 

160```text theme={null}

161Record a GIF showing how to complete the checkout flow, from adding

162an item to the cart through to the confirmation page.

163```

164 

165Claude registra la sequenza di interazione e la salva come file GIF.

166 

167## Troubleshooting

168 

169### Estensione non rilevata

170 

171Se Claude Code mostra "Chrome extension not detected":

172 

1731. Verifica che l'estensione Chrome sia installata e abilitata in `chrome://extensions`

1742. Verifica che Claude Code sia aggiornato eseguendo `claude --version`

1753. Verifica che Chrome sia in esecuzione

1764. Esegui `/chrome` e seleziona "Reconnect extension" per ristabilire la connessione

1775. Se il problema persiste, riavvia sia Claude Code che Chrome

178 

179La prima volta che abiliti l'integrazione con Chrome, Claude Code installa un file di configurazione dell'host di messaggistica nativa. Chrome legge questo file all'avvio, quindi se l'estensione non viene rilevata al primo tentativo, riavvia Chrome per raccogliere la nuova configurazione.

180 

181Se la connessione continua a non funzionare, verifica che il file di configurazione dell'host esista in:

182 

183Per Chrome:

184 

185* **macOS**: `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

186* **Linux**: `~/.config/google-chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

187* **Windows**: controlla `HKCU\Software\Google\Chrome\NativeMessagingHosts\` nel Registro di Windows

188 

189Per Edge:

190 

191* **macOS**: `~/Library/Application Support/Microsoft Edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

192* **Linux**: `~/.config/microsoft-edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

193* **Windows**: controlla `HKCU\Software\Microsoft\Edge\NativeMessagingHosts\` nel Registro di Windows

194 

195### Browser non risponde

196 

197Se i comandi del browser di Claude smettono di funzionare:

198 

1991. Verifica se una finestra di dialogo modale (avviso, conferma, prompt) sta bloccando la pagina. Le finestre di dialogo JavaScript bloccano gli eventi del browser e impediscono a Claude di ricevere comandi. Chiudi manualmente la finestra di dialogo, quindi dì a Claude di continuare.

2002. Chiedi a Claude di creare una nuova scheda e riprovare

2013. Riavvia l'estensione Chrome disabilitandola e riabilitandola in `chrome://extensions`

202 

203### La connessione si interrompe durante le sessioni lunghe

204 

205Il service worker dell'estensione Chrome può diventare inattivo durante le sessioni estese, il che interrompe la connessione. Se gli strumenti del browser smettono di funzionare dopo un periodo di inattività, esegui `/chrome` e seleziona "Reconnect extension".

206 

207### Problemi specifici di Windows

208 

209Su Windows, potresti riscontrare:

210 

211* **Conflitti di named pipe (EADDRINUSE)**: se un altro processo sta utilizzando la stessa named pipe, riavvia Claude Code. Chiudi tutte le altre sessioni di Claude Code che potrebbero utilizzare Chrome.

212* **Errori dell'host di messaggistica nativa**: se l'host di messaggistica nativa si arresta in modo anomalo all'avvio, prova a reinstallare Claude Code per rigenerare la configurazione dell'host.

213 

214### Messaggi di errore comuni

215 

216Questi sono gli errori più frequentemente riscontrati e come risolverli:

217 

218| Errore | Causa | Soluzione |

219| ------------------------------------ | --------------------------------------------------------------- | ----------------------------------------------------------------------- |

220| "Browser extension is not connected" | L'host di messaggistica nativa non può raggiungere l'estensione | Riavvia Chrome e Claude Code, quindi esegui `/chrome` per riconnetterti |

221| "Extension not detected" | L'estensione Chrome non è installata o è disabilitata | Installa o abilita l'estensione in `chrome://extensions` |

222| "No tab available" | Claude ha tentato di agire prima che una scheda fosse pronta | Chiedi a Claude di creare una nuova scheda e riprovare |

223| "Receiving end does not exist" | Il service worker dell'estensione è diventato inattivo | Esegui `/chrome` e seleziona "Reconnect extension" |

224 

225## Vedi anche

226 

227* [Uso del computer](/it/computer-use): controlla le app macOS native quando un'attività non può essere eseguita in un browser

228* [Usa Claude Code in VS Code](/it/vs-code#automate-browser-tasks-with-chrome): automazione del browser nell'estensione VS Code

229* [Riferimento CLI](/it/cli-reference): flag della riga di comando incluso `--chrome`

230* [Flussi di lavoro comuni](/it/common-workflows): altri modi per utilizzare Claude Code

231* [Dati e privacy](/it/data-usage): come Claude Code gestisce i tuoi dati

232* [Introduzione a Claude in Chrome](https://support.claude.com/en/articles/12012173-getting-started-with-claude-in-chrome): documentazione completa per l'estensione Chrome, incluse scorciatoie, pianificazione e autorizzazioni

claude-code-on-the-web.md +773 −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 Claude Code sul web

6 

7> Configura ambienti cloud, script di configurazione, accesso alla rete e Docker nella sandbox di Anthropic. Sposta le sessioni tra web e terminale con `--remote` e `--teleport`.

8 

9<Note>

10 Claude Code sul web è in anteprima di ricerca per gli utenti Pro, Max e Team, e per gli utenti Enterprise con posti premium o posti Chat + Claude Code.

11</Note>

12 

13Claude Code sul web esegue attività su infrastruttura cloud gestita da Anthropic su [claude.ai/code](https://claude.ai/code). Le sessioni persistono anche se chiudi il browser e puoi monitorarle dall'app mobile Claude.

14 

15<Tip>

16 Nuovo a Claude Code sul web? Inizia con [Guida introduttiva](/it/web-quickstart) per connettere il tuo account GitHub e inviare il tuo primo compito.

17</Tip>

18 

19Questa pagina copre:

20 

21* [Opzioni di autenticazione GitHub](#github-authentication-options): due modi per connettere GitHub

22* [L'ambiente cloud](#the-cloud-environment): quale configurazione viene trasferita, quali strumenti sono installati e come configurare gli ambienti

23* [Script di configurazione](#setup-scripts) e gestione delle dipendenze

24* [Accesso alla rete](#network-access): livelli, proxy e l'elenco di consentiti predefinito

25* [Sposta attività tra web e terminale](#move-tasks-between-web-and-terminal) con `--remote` e `--teleport`

26* [Lavora con le sessioni](#work-with-sessions): revisione, condivisione, archiviazione, eliminazione

27* [Correzione automatica delle pull request](#auto-fix-pull-requests): rispondi automaticamente ai fallimenti CI e ai commenti di revisione

28* [Sicurezza e isolamento](#security-and-isolation): come le sessioni sono isolate

29* [Limitazioni](#limitations): limiti di velocità e restrizioni della piattaforma

30 

31## Opzioni di autenticazione GitHub

32 

33Le sessioni cloud hanno bisogno di accesso ai tuoi repository GitHub per clonare il codice e inviare i rami. Puoi concedere l'accesso in due modi:

34 

35| Metodo | Come funziona | Migliore per |

36| :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------- |

37| **GitHub App** | Installa l'app Claude GitHub su repository specifici durante l'[onboarding web](/it/web-quickstart). L'accesso è limitato per repository. | Team che desiderano un'autorizzazione esplicita per repository |

38| **`/web-setup`** | Esegui `/web-setup` nel tuo terminale per sincronizzare il tuo token CLI `gh` locale al tuo account Claude. L'accesso corrisponde a quello che il tuo token `gh` può vedere. | Sviluppatori individuali che già usano `gh` |

39 

40Entrambi i metodi funzionano. [`/schedule`](/it/routines) verifica entrambe le forme di accesso e ti chiede di eseguire `/web-setup` se nessuna è configurata. Vedi [Connetti dal tuo terminale](/it/web-quickstart#connect-from-your-terminal) per la procedura dettagliata di `/web-setup`.

41 

42L'app GitHub è richiesta per [Auto-fix](#auto-fix-pull-requests), che utilizza l'app per ricevere webhook PR. Se ti connetti con `/web-setup` e successivamente desideri Auto-fix, installa l'app su quei repository.

43 

44Gli amministratori di Team e Enterprise possono disabilitare `/web-setup` con l'interruttore Quick web setup su [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

45 

46<Note>

47 Le organizzazioni con [Zero Data Retention](/it/zero-data-retention) abilitato non possono utilizzare `/web-setup` o altre funzionalità di sessione cloud.

48</Note>

49 

50## L'ambiente cloud

51 

52Ogni sessione viene eseguita in una VM gestita da Anthropic appena creata con il tuo repository clonato. Questa sezione copre cosa è disponibile quando una sessione inizia e come personalizzarlo.

53 

54### Cosa è disponibile nelle sessioni cloud

55 

56Le sessioni cloud iniziano da un clone appena creato del tuo repository. Qualsiasi cosa sottoposta a commit nel repository è disponibile. Qualsiasi cosa che hai installato o configurato solo sulla tua macchina non lo è.

57 

58| | Disponibile nelle sessioni cloud | Perché |

59| :------------------------------------------------------------------------------ | :------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

60| Il tuo `CLAUDE.md` del repository | Sì | Parte del clone |

61| I tuoi hook `.claude/settings.json` del repository | Sì | Parte del clone |

62| I tuoi server MCP `.mcp.json` del repository | Sì | Parte del clone |

63| Le tue `.claude/rules/` del repository | Sì | Parte del clone |

64| Le tue `.claude/skills/`, `.claude/agents/`, `.claude/commands/` del repository | Sì | Parte del clone |

65| Plugin dichiarati in `.claude/settings.json` | Sì | Installati all'inizio della sessione dal [marketplace](/it/plugin-marketplaces) che hai dichiarato. Richiede accesso alla rete per raggiungere la fonte del marketplace |

66| Il tuo `~/.claude/CLAUDE.md` utente | No | Vive sulla tua macchina, non nel repository |

67| Plugin abilitati solo nelle tue impostazioni utente | No | L'`enabledPlugins` con ambito utente vive in `~/.claude/settings.json`. Dichiarali invece in `.claude/settings.json` del repository |

68| Server MCP che hai aggiunto con `claude mcp add` | No | Quelli scrivono nella tua configurazione utente locale, non nel repository. Dichiara il server in [`.mcp.json`](/it/mcp#project-scope) invece |

69| Token API statici e credenziali | No | Non esiste ancora un archivio di segreti dedicato. Vedi sotto |

70| Autenticazione interattiva come AWS SSO | No | Non supportato. SSO richiede un login basato su browser che non può essere eseguito in una sessione cloud |

71 

72Per rendere la configurazione disponibile nelle sessioni cloud, eseguine il commit nel repository. Un archivio di segreti dedicato non è ancora disponibile. Sia le variabili di ambiente che gli script di configurazione sono archiviati nella configurazione dell'ambiente, visibili a chiunque possa modificare quell'ambiente. Se hai bisogno di segreti in una sessione cloud, aggiungili come variabili di ambiente con quella visibilità in mente.

73 

74### Strumenti installati

75 

76Le sessioni cloud vengono fornite con runtime di linguaggio comuni, strumenti di compilazione e database preinstallati. La tabella seguente riassume cosa è incluso per categoria.

77 

78| Categoria | Incluso |

79| :----------- | :--------------------------------------------------------------------------------- |

80| **Python** | Python 3.x con pip, poetry, uv, black, mypy, pytest, ruff |

81| **Node.js** | 20, 21 e 22 tramite nvm, con npm, yarn, pnpm, bun¹, eslint, prettier, chromedriver |

82| **Ruby** | 3.1, 3.2, 3.3 con gem, bundler, rbenv |

83| **PHP** | 8.4 con Composer |

84| **Java** | OpenJDK 21 con Maven e Gradle |

85| **Go** | ultima versione stabile con supporto dei moduli |

86| **Rust** | rustc e cargo |

87| **C/C++** | GCC, Clang, cmake, ninja, conan |

88| **Docker** | docker, dockerd, docker compose |

89| **Database** | PostgreSQL 16, Redis 7.0 |

90| **Utilità** | git, jq, yq, ripgrep, tmux, vim, nano |

91 

92¹ Bun è installato ma ha [problemi di compatibilità proxy](#install-dependencies-with-a-sessionstart-hook) noti per il recupero dei pacchetti.

93 

94Per le versioni esatte, chiedi a Claude di eseguire `check-tools` in una sessione cloud. Questo comando esiste solo nelle sessioni cloud.

95 

96### Lavora con i problemi e le pull request di GitHub

97 

98Le sessioni cloud includono strumenti GitHub integrati che consentono a Claude di leggere i problemi, elencare le pull request, recuperare i diff e pubblicare commenti senza alcuna configurazione. Questi strumenti si autenticano tramite il [proxy GitHub](#github-proxy) utilizzando il metodo che hai configurato in [Opzioni di autenticazione GitHub](#github-authentication-options), quindi il tuo token non entra mai nel contenitore.

99 

100La CLI `gh` non è preinstallata. Se hai bisogno di un comando `gh` che gli strumenti integrati non coprono, come `gh release` o `gh workflow run`, installalo e autenticalo tu stesso:

101 

102<Steps>

103 <Step title="Installa gh nel tuo script di configurazione">

104 Aggiungi `apt update && apt install -y gh` al tuo [script di configurazione](#setup-scripts).

105 </Step>

106 

107 <Step title="Fornisci un token">

108 Aggiungi una variabile di ambiente `GH_TOKEN` alle tue [impostazioni dell'ambiente](#configure-your-environment) con un token di accesso personale GitHub. `gh` legge `GH_TOKEN` automaticamente, quindi non è necessario alcun passaggio `gh auth login`.

109 </Step>

110</Steps>

111 

112### Collega gli artefatti di nuovo alla sessione

113 

114Ogni sessione cloud ha un URL di trascrizione su claude.ai e la sessione può leggere il suo ID dalla variabile di ambiente `CLAUDE_CODE_REMOTE_SESSION_ID`. Usa questo per mettere un link tracciabile nei corpi PR, nei messaggi di commit, nei post Slack o nei report generati in modo che un revisore possa aprire l'esecuzione che li ha prodotti.

115 

116Chiedi a Claude di costruire il link dalla variabile di ambiente. Il seguente comando stampa l'URL:

117 

118```bash theme={null}

119echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID}"

120```

121 

122### Esegui test, avvia servizi e aggiungi pacchetti

123 

124Claude esegue i test come parte del lavoro su un compito. Chiedilo nel tuo prompt, come "correggi i test falliti in `tests/`" o "esegui pytest dopo ogni modifica." I test runner come pytest, jest e cargo test funzionano subito poiché sono preinstallati.

125 

126PostgreSQL e Redis sono preinstallati ma non in esecuzione per impostazione predefinita. Avvia ognuno durante la sessione:

127 

128```bash theme={null}

129service postgresql start

130```

131 

132```bash theme={null}

133service redis-server start

134```

135 

136Docker è disponibile per l'esecuzione di servizi containerizzati. Chiedi a Claude di eseguire `docker compose up` per avviare i servizi del tuo progetto. L'accesso alla rete per il pull delle immagini segue il [livello di accesso](#access-levels) del tuo ambiente e i [Trusted defaults](#default-allowed-domains) includono Docker Hub e altri registri comuni.

137 

138Se le tue immagini sono grandi o lente da estrarre, aggiungi `docker compose pull` o `docker compose build` al tuo [script di configurazione](#setup-scripts). Le immagini estratte vengono salvate nell'[ambiente memorizzato nella cache](#environment-caching), quindi ogni nuova sessione le ha su disco. La cache memorizza solo i file, non i processi in esecuzione, quindi Claude avvia comunque i contenitori ogni sessione.

139 

140Per aggiungere pacchetti che non sono preinstallati, usa uno [script di configurazione](#setup-scripts). L'output dello script è [memorizzato nella cache](#environment-caching), quindi i pacchetti che installi lì sono disponibili all'inizio di ogni sessione senza reinstallare ogni volta. Puoi anche chiedere a Claude di installare pacchetti durante la sessione, ma quelle installazioni non persistono tra le sessioni.

141 

142### Limiti di risorse

143 

144Le sessioni cloud vengono eseguite con limiti di risorse approssimativi che possono cambiare nel tempo:

145 

146* 4 vCPU

147* 16 GB di RAM

148* 30 GB di disco

149 

150I compiti che richiedono significativamente più memoria, come grandi lavori di compilazione o test ad alta intensità di memoria, potrebbero fallire o essere terminati. Per carichi di lavoro oltre questi limiti, usa [Remote Control](/it/remote-control) per eseguire Claude Code sul tuo hardware.

151 

152### Configura il tuo ambiente

153 

154Gli ambienti controllano l'[accesso alla rete](#network-access), le variabili di ambiente e lo [script di configurazione](#setup-scripts) che viene eseguito prima che una sessione inizi. Vedi [Strumenti installati](#installed-tools) per cosa è disponibile senza alcuna configurazione. Puoi gestire gli ambienti dall'interfaccia web o dal terminale:

155 

156| Azione | Come |

157| :------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

158| Aggiungi un ambiente | Seleziona l'ambiente attuale per aprire il selettore, quindi seleziona **Aggiungi ambiente**. La finestra di dialogo include nome, livello di accesso alla rete, variabili di ambiente e script di configurazione. |

159| Modifica un ambiente | Seleziona l'icona delle impostazioni a destra del nome dell'ambiente. |

160| Archivia un ambiente | Apri l'ambiente per la modifica e seleziona **Archivia**. Gli ambienti archiviati sono nascosti dal selettore ma le sessioni esistenti continuano a essere eseguite. |

161| Imposta il predefinito per `--remote` | Esegui `/remote-env` nel tuo terminale. Se hai un singolo ambiente, questo comando mostra la tua configurazione attuale. `/remote-env` seleziona solo il predefinito; aggiungi, modifica e archivia gli ambienti dall'interfaccia web. |

162 

163Le variabili di ambiente usano il formato `.env` con una coppia `KEY=value` per riga. Non racchiudere i valori tra virgolette, poiché le virgolette vengono archiviate come parte del valore.

164 

165```text theme={null}

166NODE_ENV=development

167LOG_LEVEL=debug

168DATABASE_URL=postgres://localhost:5432/myapp

169```

170 

171## Script di configurazione

172 

173Uno script di configurazione è uno script Bash che viene eseguito quando inizia una nuova sessione cloud, prima che Claude Code si avvii. Usa gli script di configurazione per installare dipendenze, configurare strumenti o recuperare qualsiasi cosa di cui la sessione ha bisogno che non sia preinstallata.

174 

175Gli script vengono eseguiti come root su Ubuntu 24.04, quindi `apt install` e la maggior parte dei gestori di pacchetti di linguaggio funzionano.

176 

177Per aggiungere uno script di configurazione, apri la finestra di dialogo delle impostazioni dell'ambiente e inserisci il tuo script nel campo **Script di configurazione**.

178 

179Questo esempio installa la CLI `gh`, che non è preinstallata:

180 

181```bash theme={null}

182#!/bin/bash

183apt update && apt install -y gh

184```

185 

186Se lo script esce con un codice diverso da zero, la sessione non si avvia. Aggiungi `|| true` ai comandi non critici per evitare di bloccare la sessione su un'installazione intermittente fallita.

187 

188<Note>

189 Gli script di configurazione che installano pacchetti hanno bisogno di accesso alla rete per raggiungere i registri. L'accesso alla rete predefinito **Trusted** consente connessioni ai [domini di pacchetti comuni](#default-allowed-domains) inclusi npm, PyPI, RubyGems e crates.io. Gli script non riusciranno a installare pacchetti se il tuo ambiente usa l'accesso alla rete **None**.

190</Note>

191 

192### Memorizzazione nella cache dell'ambiente

193 

194Lo script di configurazione viene eseguito la prima volta che avvii una sessione in un ambiente. Dopo il completamento, Anthropic crea uno snapshot del file system e riutilizza quello snapshot come punto di partenza per le sessioni successive. Le nuove sessioni iniziano con le tue dipendenze, strumenti e immagini Docker già su disco e il passaggio dello script di configurazione viene saltato. Questo mantiene l'avvio veloce anche quando lo script installa grandi toolchain o estrae immagini di contenitori.

195 

196La cache acquisisce i file, non i processi in esecuzione. Qualsiasi cosa che lo script di configurazione scrive su disco viene trasferita. I servizi o i contenitori che avvia non lo fanno, quindi avvia quelli per sessione chiedendo a Claude o con un [hook SessionStart](#setup-scripts-vs-sessionstart-hooks).

197 

198Lo script di configurazione viene eseguito di nuovo per ricostruire la cache quando modifichi lo script di configurazione dell'ambiente o gli host di rete consentiti e quando la cache raggiunge la sua scadenza dopo circa sette giorni. Riprendere una sessione esistente non esegue mai di nuovo lo script di configurazione.

199 

200Non è necessario abilitare la memorizzazione nella cache o gestire gli snapshot tu stesso.

201 

202### Script di configurazione vs. hook SessionStart

203 

204Usa uno script di configurazione per installare cose di cui il cloud ha bisogno ma il tuo laptop ha già, come un runtime di linguaggio o uno strumento CLI. Usa un [hook SessionStart](/it/hooks#sessionstart) per la configurazione del progetto che dovrebbe essere eseguita ovunque, cloud e locale, come `npm install`.

205 

206Entrambi vengono eseguiti all'inizio di una sessione, ma appartengono a posti diversi:

207 

208| | Script di configurazione | Hook SessionStart |

209| -------------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |

210| Allegato a | L'ambiente cloud | Il tuo repository |

211| Configurato in | Interfaccia utente dell'ambiente cloud | `.claude/settings.json` nel tuo repository |

212| Viene eseguito | Prima che Claude Code si avvii, quando non è disponibile alcun [ambiente memorizzato nella cache](#environment-caching) | Dopo che Claude Code si avvia, su ogni sessione incluse quelle riprese |

213| Ambito | Solo ambienti cloud | Sia locale che cloud |

214 

215Gli hook SessionStart possono anche essere definiti nel tuo `~/.claude/settings.json` a livello di utente localmente, ma le impostazioni a livello di utente non vengono trasferite alle sessioni cloud. Nel cloud, vengono eseguiti solo gli hook sottoposti a commit nel repository.

216 

217### Installa le dipendenze con un hook SessionStart

218 

219Per installare le dipendenze solo nelle sessioni cloud, aggiungi un hook SessionStart al `.claude/settings.json` del tuo repository:

220 

221```json theme={null}

222{

223 "hooks": {

224 "SessionStart": [

225 {

226 "matcher": "startup|resume",

227 "hooks": [

228 {

229 "type": "command",

230 "command": "\"$CLAUDE_PROJECT_DIR\"/scripts/install_pkgs.sh"

231 }

232 ]

233 }

234 ]

235 }

236}

237```

238 

239Crea lo script in `scripts/install_pkgs.sh` e rendilo eseguibile con `chmod +x`. La variabile di ambiente `CLAUDE_CODE_REMOTE` è impostata su `true` nelle sessioni cloud, quindi puoi usarla per saltare l'esecuzione locale:

240 

241```bash theme={null}

242#!/bin/bash

243 

244if [ "$CLAUDE_CODE_REMOTE" != "true" ]; then

245 exit 0

246fi

247 

248npm install

249pip install -r requirements.txt

250exit 0

251```

252 

253Gli hook SessionStart hanno alcune limitazioni nelle sessioni cloud:

254 

255* **Nessun ambito solo cloud**: gli hook vengono eseguiti sia nelle sessioni locali che cloud. Per saltare l'esecuzione locale, controlla la variabile di ambiente `CLAUDE_CODE_REMOTE` come mostrato sopra.

256* **Richiede accesso alla rete**: i comandi di installazione hanno bisogno di raggiungere i registri di pacchetti. Se il tuo ambiente usa l'accesso alla rete **None**, questi hook falliranno. L'[elenco di consentiti predefinito](#default-allowed-domains) sotto **Trusted** copre npm, PyPI, RubyGems e crates.io.

257* **Compatibilità proxy**: tutto il traffico in uscita passa attraverso un [proxy di sicurezza](#security-proxy). Alcuni gestori di pacchetti non funzionano correttamente con questo proxy. Bun è un esempio noto.

258* **Aggiunge latenza di avvio**: gli hook vengono eseguiti ogni volta che una sessione si avvia o riprende, a differenza degli script di configurazione che beneficiano della [memorizzazione nella cache dell'ambiente](#environment-caching). Mantieni gli script di installazione veloci controllando se le dipendenze sono già presenti prima di reinstallarle.

259 

260Per persistere le variabili di ambiente per i comandi Bash successivi, scrivi nel file in `$CLAUDE_ENV_FILE`. Vedi [Hook SessionStart](/it/hooks#sessionstart) per i dettagli.

261 

262La sostituzione dell'immagine di base con la tua immagine Docker non è ancora supportata. Usa uno script di configurazione per installare quello di cui hai bisogno sopra l'[immagine fornita](#installed-tools) o esegui la tua immagine come contenitore insieme a Claude con `docker compose`.

263 

264## Accesso alla rete

265 

266L'accesso alla rete controlla le connessioni in uscita dall'ambiente cloud. Ogni ambiente specifica un livello di accesso e puoi estenderlo con domini personalizzati consentiti. Il predefinito è **Trusted**, che consente i registri di pacchetti e altri [domini consentiti](#default-allowed-domains).

267 

268### Livelli di accesso

269 

270Scegli un livello di accesso quando crei o modifichi un ambiente:

271 

272| Livello | Connessioni in uscita |

273| :---------- | :------------------------------------------------------------------------------------------- |

274| **None** | Nessun accesso alla rete in uscita |

275| **Trusted** | [Domini consentiti](#default-allowed-domains) solo: registri di pacchetti, GitHub, SDK cloud |

276| **Full** | Qualsiasi dominio |

277| **Custom** | Il tuo elenco di consentiti, opzionalmente inclusi i predefiniti |

278 

279Le operazioni GitHub usano un [proxy separato](#github-proxy) che è indipendente da questa impostazione.

280 

281### Consenti domini specifici

282 

283Per consentire domini che non sono nell'elenco Trusted, seleziona **Custom** nelle impostazioni di accesso alla rete dell'ambiente. Appare un campo **Domini consentiti**. Inserisci un dominio per riga:

284 

285```text theme={null}

286api.example.com

287*.internal.example.com

288registry.example.com

289```

290 

291Usa `*.` per la corrispondenza dei sottodomini con caratteri jolly. Seleziona **Includi anche l'elenco predefinito di gestori di pacchetti comuni** per mantenere i [domini Trusted](#default-allowed-domains) insieme alle tue voci personalizzate, o lascialo deselezionato per consentire solo quello che elenchi.

292 

293### Proxy GitHub

294 

295Per motivi di sicurezza, tutte le operazioni GitHub passano attraverso un servizio proxy dedicato che gestisce in modo trasparente tutte le interazioni git. All'interno della sandbox, il client git si autentica utilizzando una credenziale con ambito personalizzato. Questo proxy:

296 

297* Gestisce l'autenticazione GitHub in modo sicuro: il client git utilizza una credenziale con ambito all'interno della sandbox, che il proxy verifica e traduce nel tuo token di autenticazione GitHub effettivo

298* Limita le operazioni git push al ramo di lavoro attuale per motivi di sicurezza

299* Abilita il clonaggio, il recupero e le operazioni PR mantenendo i confini di sicurezza

300 

301### Proxy di sicurezza

302 

303Gli ambienti vengono eseguiti dietro un proxy di rete HTTP/HTTPS per motivi di sicurezza e prevenzione degli abusi. Tutto il traffico Internet in uscita passa attraverso questo proxy, che fornisce:

304 

305* Protezione contro richieste dannose

306* Limitazione della velocità e prevenzione degli abusi

307* Filtro dei contenuti per una sicurezza migliorata

308 

309### Domini consentiti predefiniti

310 

311Quando si utilizza l'accesso alla rete **Trusted**, i seguenti domini sono consentiti per impostazione predefinita. I domini contrassegnati con `*` indicano la corrispondenza dei sottodomini con caratteri jolly, quindi `*.gcr.io` consente qualsiasi sottodominio di `gcr.io`.

312 

313<AccordionGroup>

314 <Accordion title="Servizi Anthropic">

315 * api.anthropic.com

316 * statsig.anthropic.com

317 * docs.claude.com

318 * platform.claude.com

319 * code.claude.com

320 * claude.ai

321 </Accordion>

322 

323 <Accordion title="Controllo versione">

324 * github.com

325 * [www.github.com](http://www.github.com)

326 * api.github.com

327 * npm.pkg.github.com

328 * raw\.githubusercontent.com

329 * pkg-npm.githubusercontent.com

330 * objects.githubusercontent.com

331 * release-assets.githubusercontent.com

332 * codeload.github.com

333 * avatars.githubusercontent.com

334 * camo.githubusercontent.com

335 * gist.github.com

336 * gitlab.com

337 * [www.gitlab.com](http://www.gitlab.com)

338 * registry.gitlab.com

339 * bitbucket.org

340 * [www.bitbucket.org](http://www.bitbucket.org)

341 * api.bitbucket.org

342 </Accordion>

343 

344 <Accordion title="Registri di container">

345 * registry-1.docker.io

346 * auth.docker.io

347 * index.docker.io

348 * hub.docker.com

349 * [www.docker.com](http://www.docker.com)

350 * production.cloudflare.docker.com

351 * download.docker.com

352 * gcr.io

353 * \*.gcr.io

354 * ghcr.io

355 * mcr.microsoft.com

356 * \*.data.mcr.microsoft.com

357 * public.ecr.aws

358 </Accordion>

359 

360 <Accordion title="Piattaforme cloud">

361 * cloud.google.com

362 * accounts.google.com

363 * gcloud.google.com

364 * \*.googleapis.com

365 * storage.googleapis.com

366 * compute.googleapis.com

367 * container.googleapis.com

368 * azure.com

369 * portal.azure.com

370 * microsoft.com

371 * [www.microsoft.com](http://www.microsoft.com)

372 * \*.microsoftonline.com

373 * packages.microsoft.com

374 * dotnet.microsoft.com

375 * dot.net

376 * visualstudio.com

377 * dev.azure.com

378 * \*.amazonaws.com

379 * \*.api.aws

380 * oracle.com

381 * [www.oracle.com](http://www.oracle.com)

382 * java.com

383 * [www.java.com](http://www.java.com)

384 * java.net

385 * [www.java.net](http://www.java.net)

386 * download.oracle.com

387 * yum.oracle.com

388 </Accordion>

389 

390 <Accordion title="Gestori di pacchetti JavaScript e Node">

391 * registry.npmjs.org

392 * [www.npmjs.com](http://www.npmjs.com)

393 * [www.npmjs.org](http://www.npmjs.org)

394 * npmjs.com

395 * npmjs.org

396 * yarnpkg.com

397 * registry.yarnpkg.com

398 </Accordion>

399 

400 <Accordion title="Gestori di pacchetti Python">

401 * pypi.org

402 * [www.pypi.org](http://www.pypi.org)

403 * files.pythonhosted.org

404 * pythonhosted.org

405 * test.pypi.org

406 * pypi.python.org

407 * pypa.io

408 * [www.pypa.io](http://www.pypa.io)

409 </Accordion>

410 

411 <Accordion title="Gestori di pacchetti Ruby">

412 * rubygems.org

413 * [www.rubygems.org](http://www.rubygems.org)

414 * api.rubygems.org

415 * index.rubygems.org

416 * ruby-lang.org

417 * [www.ruby-lang.org](http://www.ruby-lang.org)

418 * rubyforge.org

419 * [www.rubyforge.org](http://www.rubyforge.org)

420 * rubyonrails.org

421 * [www.rubyonrails.org](http://www.rubyonrails.org)

422 * rvm.io

423 * get.rvm.io

424 </Accordion>

425 

426 <Accordion title="Gestori di pacchetti Rust">

427 * crates.io

428 * [www.crates.io](http://www.crates.io)

429 * index.crates.io

430 * static.crates.io

431 * rustup.rs

432 * static.rust-lang.org

433 * [www.rust-lang.org](http://www.rust-lang.org)

434 </Accordion>

435 

436 <Accordion title="Gestori di pacchetti Go">

437 * proxy.golang.org

438 * sum.golang.org

439 * index.golang.org

440 * golang.org

441 * [www.golang.org](http://www.golang.org)

442 * goproxy.io

443 * pkg.go.dev

444 </Accordion>

445 

446 <Accordion title="Gestori di pacchetti JVM">

447 * maven.org

448 * repo.maven.org

449 * central.maven.org

450 * repo1.maven.org

451 * repo.maven.apache.org

452 * jcenter.bintray.com

453 * gradle.org

454 * [www.gradle.org](http://www.gradle.org)

455 * services.gradle.org

456 * plugins.gradle.org

457 * kotlinlang.org

458 * [www.kotlinlang.org](http://www.kotlinlang.org)

459 * spring.io

460 * repo.spring.io

461 </Accordion>

462 

463 <Accordion title="Altri gestori di pacchetti">

464 * packagist.org (PHP Composer)

465 * [www.packagist.org](http://www.packagist.org)

466 * repo.packagist.org

467 * nuget.org (.NET NuGet)

468 * [www.nuget.org](http://www.nuget.org)

469 * api.nuget.org

470 * pub.dev (Dart/Flutter)

471 * api.pub.dev

472 * hex.pm (Elixir/Erlang)

473 * [www.hex.pm](http://www.hex.pm)

474 * cpan.org (Perl CPAN)

475 * [www.cpan.org](http://www.cpan.org)

476 * metacpan.org

477 * [www.metacpan.org](http://www.metacpan.org)

478 * api.metacpan.org

479 * cocoapods.org (iOS/macOS)

480 * [www.cocoapods.org](http://www.cocoapods.org)

481 * cdn.cocoapods.org

482 * haskell.org

483 * [www.haskell.org](http://www.haskell.org)

484 * hackage.haskell.org

485 * swift.org

486 * [www.swift.org](http://www.swift.org)

487 </Accordion>

488 

489 <Accordion title="Distribuzioni Linux">

490 * archive.ubuntu.com

491 * security.ubuntu.com

492 * ubuntu.com

493 * [www.ubuntu.com](http://www.ubuntu.com)

494 * \*.ubuntu.com

495 * ppa.launchpad.net

496 * launchpad.net

497 * [www.launchpad.net](http://www.launchpad.net)

498 * \*.nixos.org

499 </Accordion>

500 

501 <Accordion title="Strumenti di sviluppo e piattaforme">

502 * dl.k8s.io (Kubernetes)

503 * pkgs.k8s.io

504 * k8s.io

505 * [www.k8s.io](http://www.k8s.io)

506 * releases.hashicorp.com (HashiCorp)

507 * apt.releases.hashicorp.com

508 * rpm.releases.hashicorp.com

509 * archive.releases.hashicorp.com

510 * hashicorp.com

511 * [www.hashicorp.com](http://www.hashicorp.com)

512 * repo.anaconda.com (Anaconda/Conda)

513 * conda.anaconda.org

514 * anaconda.org

515 * [www.anaconda.com](http://www.anaconda.com)

516 * anaconda.com

517 * continuum.io

518 * apache.org (Apache)

519 * [www.apache.org](http://www.apache.org)

520 * archive.apache.org

521 * downloads.apache.org

522 * eclipse.org (Eclipse)

523 * [www.eclipse.org](http://www.eclipse.org)

524 * download.eclipse.org

525 * nodejs.org (Node.js)

526 * [www.nodejs.org](http://www.nodejs.org)

527 * developer.apple.com

528 * developer.android.com

529 * pkg.stainless.com

530 * binaries.prisma.sh

531 </Accordion>

532 

533 <Accordion title="Servizi cloud e monitoraggio">

534 * statsig.com

535 * [www.statsig.com](http://www.statsig.com)

536 * api.statsig.com

537 * sentry.io

538 * \*.sentry.io

539 * downloads.sentry-cdn.com

540 * http-intake.logs.datadoghq.com

541 * \*.datadoghq.com

542 * \*.datadoghq.eu

543 * api.honeycomb.io

544 </Accordion>

545 

546 <Accordion title="Distribuzione di contenuti e mirror">

547 * sourceforge.net

548 * \*.sourceforge.net

549 * packagecloud.io

550 * \*.packagecloud.io

551 * fonts.googleapis.com

552 * fonts.gstatic.com

553 </Accordion>

554 

555 <Accordion title="Schema e configurazione">

556 * json-schema.org

557 * [www.json-schema.org](http://www.json-schema.org)

558 * json.schemastore.org

559 * [www.schemastore.org](http://www.schemastore.org)

560 </Accordion>

561 

562 <Accordion title="Model Context Protocol">

563 * \*.modelcontextprotocol.io

564 </Accordion>

565</AccordionGroup>

566 

567## Sposta attività tra web e terminale

568 

569Questi flussi di lavoro richiedono la [CLI Claude Code](/it/quickstart) connessa allo stesso account claude.ai. Puoi avviare nuove sessioni cloud dal tuo terminale o estrarre sessioni cloud nel tuo terminale per continuare localmente. Le sessioni cloud persistono anche se chiudi il tuo laptop e puoi monitorarle da qualsiasi luogo inclusa l'app mobile Claude.

570 

571<Note>

572 Dalla CLI, l'handoff della sessione è unidirezionale: puoi estrarre sessioni cloud nel tuo terminale con `--teleport`, ma non puoi inviare una sessione terminale esistente al web. Il flag `--remote` crea una nuova sessione cloud per il tuo repository attuale. L'[app Desktop](/it/desktop#continue-in-another-surface) fornisce un menu Continua in che può inviare una sessione locale al web.

573</Note>

574 

575### Dal terminale al web

576 

577Avvia una sessione cloud dalla riga di comando con il flag `--remote`:

578 

579```bash theme={null}

580claude --remote "Fix the authentication bug in src/auth/login.ts"

581```

582 

583Questo crea una nuova sessione cloud su claude.ai. La sessione clona il remoto GitHub della tua directory attuale al tuo ramo attuale, quindi esegui il push prima se hai commit locali, poiché la VM clona da GitHub piuttosto che dalla tua macchina. `--remote` funziona con un singolo repository alla volta. L'attività viene eseguita nel cloud mentre continui a lavorare localmente.

584 

585<Note>

586 `--remote` crea sessioni cloud. `--remote-control` non è correlato: espone una sessione CLI locale per il monitoraggio dal web. Vedi [Remote Control](/it/remote-control).

587</Note>

588 

589Usa `/tasks` nella CLI Claude Code per controllare l'avanzamento, o apri la sessione su claude.ai o l'app mobile Claude per interagire direttamente. Da lì puoi guidare Claude, fornire feedback o rispondere a domande proprio come in qualsiasi altra conversazione.

590 

591#### Suggerimenti per attività cloud

592 

593**Pianifica localmente, esegui da remoto**: per attività complesse, avvia Claude in plan mode per collaborare sull'approccio, quindi invia il lavoro al cloud:

594 

595```bash theme={null}

596claude --permission-mode plan

597```

598 

599In plan mode, Claude legge i file, esegue comandi per esplorare e propone un piano senza modificare il codice sorgente. Una volta soddisfatto, salva il piano nel repository, esegui il commit e il push in modo che la VM cloud possa clonarlo. Quindi avvia una sessione cloud per l'esecuzione autonoma:

600 

601```bash theme={null}

602claude --remote "Execute the migration plan in docs/migration-plan.md"

603```

604 

605Questo modello ti dà il controllo sulla strategia mentre consente a Claude di eseguire autonomamente nel cloud.

606 

607**Pianifica nel cloud con ultraplan**: per elaborare e rivedere il piano stesso in una sessione web, usa [ultraplan](/it/ultraplan). Claude genera il piano su Claude Code sul web mentre continui a lavorare, quindi commenti le sezioni nel tuo browser e scegli di eseguire da remoto o inviare il piano di nuovo al tuo terminale.

608 

609**Esegui attività in parallelo**: ogni comando `--remote` crea la sua propria sessione cloud che viene eseguita indipendentemente. Puoi avviare più attività e verranno tutte eseguite simultaneamente in sessioni separate:

610 

611```bash theme={null}

612claude --remote "Fix the flaky test in auth.spec.ts"

613claude --remote "Update the API documentation"

614claude --remote "Refactor the logger to use structured output"

615```

616 

617Monitora tutte le sessioni con `/tasks` nella CLI Claude Code. Quando una sessione si completa, puoi creare una PR dall'interfaccia web o [teletrasportare](#from-web-to-terminal) la sessione nel tuo terminale per continuare a lavorare.

618 

619#### Invia repository locali senza GitHub

620 

621Quando esegui `claude --remote` da un repository che non è connesso a GitHub, Claude Code raggruppa il tuo repository locale e lo carica direttamente nella sessione cloud. Il bundle include la tua cronologia completa del repository su tutti i rami, più eventuali modifiche non sottoposte a commit ai file tracciati.

622 

623Questo fallback si attiva automaticamente quando l'accesso a GitHub non è disponibile. Per forzarlo anche quando GitHub è connesso, imposta `CCR_FORCE_BUNDLE=1`:

624 

625```bash theme={null}

626CCR_FORCE_BUNDLE=1 claude --remote "Run the test suite and fix any failures"

627```

628 

629I repository raggruppati devono soddisfare questi limiti:

630 

631* La directory deve essere un repository git con almeno un commit

632* Il repository raggruppato deve essere inferiore a 100 MB. I repository più grandi ricadono nel raggruppamento solo del ramo attuale, quindi in uno snapshot squashed singolo dell'albero di lavoro e falliscono solo se lo snapshot è ancora troppo grande

633* I file non tracciati non sono inclusi; esegui `git add` sui file che desideri che la sessione cloud veda

634* Le sessioni create da un bundle non possono eseguire il push di nuovo a un remoto a meno che tu non abbia anche [autenticazione GitHub](#github-authentication-options) configurata

635 

636### Dal web al terminale

637 

638Estrai una sessione cloud nel tuo terminale usando uno di questi:

639 

640* **Usando `--teleport`**: dalla riga di comando, esegui `claude --teleport` per un selettore di sessione interattivo, o `claude --teleport <session-id>` per riprendere una sessione specifica direttamente. Se hai modifiche non sottoposte a commit, ti verrà chiesto di archiviarle prima.

641* **Usando `/teleport`**: all'interno di una sessione CLI esistente, esegui `/teleport` (o `/tp`) per aprire lo stesso selettore di sessione senza riavviare Claude Code.

642* **Da `/tasks`**: esegui `/tasks` per vedere le tue sessioni in background, quindi premi `t` per teletrasportarti in una

643* **Dall'interfaccia web**: seleziona **Apri in CLI** per copiare un comando che puoi incollare nel tuo terminale

644 

645Quando teletrasporti una sessione, Claude verifica che sei nel repository corretto, recupera e controlla il ramo dalla sessione cloud e carica la cronologia completa della conversazione nel tuo terminale.

646 

647`--teleport` è distinto da `--resume`. `--resume` riapre una conversazione dalla cronologia locale di questa macchina e non elenca le sessioni cloud; `--teleport` estrae una sessione cloud e il suo ramo.

648 

649#### Requisiti per il teletrasporto

650 

651Il teletrasporto verifica questi requisiti prima di riprendere una sessione. Se un requisito non è soddisfatto, vedrai un errore o ti verrà chiesto di risolvere il problema.

652 

653| Requisito | Dettagli |

654| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |

655| Stato git pulito | La tua directory di lavoro non deve avere modifiche non sottoposte a commit. Il teletrasporto ti chiede di archiviare le modifiche se necessario. |

656| Repository corretto | Devi eseguire `--teleport` da un checkout dello stesso repository, non da un fork. |

657| Ramo disponibile | Il ramo dalla sessione cloud deve essere stato inviato al remoto. Il teletrasporto lo recupera e lo controlla automaticamente. |

658| Stesso account | Devi essere autenticato allo stesso account claude.ai utilizzato nella sessione cloud. |

659 

660#### `--teleport` non è disponibile

661 

662Il teletrasporto richiede l'autenticazione dell'abbonamento claude.ai. Se sei autenticato tramite chiave API, Bedrock, Vertex AI o Microsoft Foundry, esegui `/login` per accedere con il tuo account claude.ai. Se sei già connesso tramite claude.ai e `--teleport` non è ancora disponibile, la tua organizzazione potrebbe aver disabilitato le sessioni cloud.

663 

664## Lavora con le sessioni

665 

666Le sessioni appaiono nella barra laterale su claude.ai/code. Da lì puoi rivedere le modifiche, condividere con i compagni di squadra, archiviare il lavoro completato o eliminare le sessioni in modo permanente.

667 

668### Gestisci il contesto

669 

670Le sessioni cloud supportano [comandi integrati](/it/commands) che producono output di testo. I comandi che aprono un selettore di terminale interattivo, come `/model` o `/config`, non sono disponibili.

671 

672Per la gestione del contesto in particolare:

673 

674| Comando | Funziona nelle sessioni cloud | Note |

675| :--------- | :---------------------------- | :----------------------------------------------------------------------------------------------------------------------------- |

676| `/compact` | Sì | Riassume la conversazione per liberare il contesto. Accetta istruzioni di focus opzionali come `/compact keep the test output` |

677| `/context` | Sì | Mostra cosa è attualmente nella finestra di contesto |

678| `/clear` | No | Avvia una nuova sessione dalla barra laterale |

679 

680L'auto-compattazione viene eseguita automaticamente quando la finestra di contesto si avvicina alla capacità, come nella CLI. Per attivarla prima, imposta [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/it/env-vars) nelle tue [variabili di ambiente](#configure-your-environment). Ad esempio, `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70` compatta al 70% della capacità invece del \~95% predefinito. Per modificare la dimensione della finestra effettiva per i calcoli di compattazione, usa [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/it/env-vars).

681 

682I [subagent](/it/sub-agents) funzionano allo stesso modo che fanno localmente. Claude può generarli con lo strumento Task per scaricare la ricerca o il lavoro parallelo in una finestra di contesto separata, mantenendo la conversazione principale più leggera. I subagent definiti in `.claude/agents/` del tuo repository vengono raccolti automaticamente. I [team di agenti](/it/agent-teams) sono disabilitati per impostazione predefinita ma possono essere abilitati aggiungendo `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` alle tue [variabili di ambiente](#configure-your-environment).

683 

684### Rivedi le modifiche

685 

686Ogni sessione mostra un indicatore diff con righe aggiunte e rimosse, come `+42 -18`. Selezionalo per aprire la vista diff, lascia commenti in linea su righe specifiche e inviali a Claude con il tuo prossimo messaggio. Vedi [Rivedi e itera](/it/web-quickstart#review-and-iterate) per la procedura dettagliata completa inclusa la creazione di PR. Per fare in modo che Claude monitori la PR per i fallimenti CI e i commenti di revisione automaticamente, vedi [Correzione automatica delle pull request](#auto-fix-pull-requests).

687 

688### Condividi sessioni

689 

690Per condividere una sessione, attiva/disattiva la sua visibilità in base ai tipi di account di seguito. Dopo di che, condividi il link della sessione così com'è. I destinatari vedono lo stato più recente quando aprono il link, ma la loro vista non si aggiorna in tempo reale.

691 

692#### Condividi da un account Enterprise o Team

693 

694Per gli account Enterprise e Team, le due opzioni di visibilità sono **Private** e **Team**. La visibilità Team rende la sessione visibile agli altri membri della tua organizzazione claude.ai. La verifica dell'accesso al repository è abilitata per impostazione predefinita, in base all'account GitHub connesso all'account del destinatario. Il nome visualizzato del tuo account è visibile a tutti i destinatari con accesso. Le sessioni [Claude in Slack](/it/slack) vengono condivise automaticamente con visibilità Team.

695 

696#### Condividi da un account Max o Pro

697 

698Per gli account Max e Pro, le due opzioni di visibilità sono **Private** e **Public**. La visibilità Public rende la sessione visibile a qualsiasi utente connesso a claude.ai.

699 

700Controlla la tua sessione per contenuti sensibili prima di condividere. Le sessioni possono contenere codice e credenziali da repository GitHub privati. La verifica dell'accesso al repository non è abilitata per impostazione predefinita.

701 

702Per richiedere ai destinatari di avere accesso al repository o per nascondere il tuo nome dalle sessioni condivise, vai a Impostazioni > Claude Code > Impostazioni di condivisione.

703 

704### Archivia sessioni

705 

706Puoi archiviare le sessioni per mantenere organizzato il tuo elenco di sessioni. Le sessioni archiviate sono nascoste dall'elenco di sessioni predefinito ma possono essere visualizzate filtrando le sessioni archiviate.

707 

708Per archiviare una sessione, passa il mouse sulla sessione nella barra laterale e seleziona l'icona di archiviazione.

709 

710### Elimina sessioni

711 

712L'eliminazione di una sessione rimuove permanentemente la sessione e i suoi dati. Questa azione non può essere annullata. Puoi eliminare una sessione in due modi:

713 

714* **Dalla barra laterale**: filtra le sessioni archiviate, quindi passa il mouse sulla sessione che desideri eliminare e seleziona l'icona di eliminazione

715* **Dal menu della sessione**: apri una sessione, seleziona il menu a discesa accanto al titolo della sessione e seleziona **Elimina**

716 

717Ti verrà chiesto di confermare prima che una sessione venga eliminata.

718 

719## Correzione automatica delle pull request

720 

721Claude può monitorare una pull request e rispondere automaticamente ai fallimenti CI e ai commenti di revisione. Claude si iscrive all'attività GitHub sulla PR e, quando un controllo fallisce o un revisore lascia un commento, Claude indaga e invia una correzione se una è chiara.

722 

723<Note>

724 Auto-fix richiede che l'app Claude GitHub sia installata nel tuo repository. Se non l'hai già fatto, installala dalla [pagina dell'app GitHub](https://github.com/apps/claude) o quando richiesto durante la [configurazione](/it/web-quickstart#connect-github-and-create-an-environment).

725</Note>

726 

727Ci sono alcuni modi per attivare auto-fix a seconda da dove proviene la PR e quale dispositivo stai utilizzando:

728 

729* **PR create in Claude Code sul web**: apri la barra di stato CI e seleziona **Auto-fix**

730* **Dal tuo terminale**: esegui [`/autofix-pr`](/it/commands) mentre sei sul ramo della PR. Claude Code rileva la PR aperta con `gh`, genera una sessione web e attiva auto-fix in un passaggio

731* **Dall'app mobile**: dì a Claude di correggere automaticamente la PR, ad esempio "guarda questa PR e correggi eventuali fallimenti CI o commenti di revisione"

732* **Qualsiasi PR esistente**: incolla l'URL della PR in una sessione e dì a Claude di correggerla automaticamente

733 

734### Come Claude risponde all'attività PR

735 

736Quando auto-fix è attivo, Claude riceve eventi GitHub per la PR inclusi nuovi commenti di revisione e fallimenti di controllo CI. Per ogni evento, Claude indaga e decide come procedere:

737 

738* **Correzioni chiare**: se Claude è sicuro di una correzione e non entra in conflitto con le istruzioni precedenti, Claude apporta la modifica, la invia e spiega cosa è stato fatto nella sessione

739* **Richieste ambigue**: se il commento di un revisore potrebbe essere interpretato in più modi o coinvolge qualcosa di architettonicamente significativo, Claude ti chiede prima di agire

740* **Eventi duplicati o senza azione**: se un evento è un duplicato o non richiede modifiche, Claude lo annota nella sessione e continua

741 

742Claude potrebbe rispondere ai thread di commenti di revisione su GitHub come parte della loro risoluzione. Queste risposte vengono pubblicate utilizzando il tuo account GitHub, quindi appaiono sotto il tuo nome utente, ma ogni risposta è etichettata come proveniente da Claude Code in modo che i revisori sappiano che è stata scritta dall'agente e non da te direttamente.

743 

744<Warning>

745 Se il tuo repository utilizza automazione attivata da commenti come Atlantis, Terraform Cloud o GitHub Actions personalizzate che vengono eseguite su eventi `issue_comment`, tieni presente che le risposte di Claude possono attivare questi flussi di lavoro. Rivedi l'automazione del tuo repository prima di abilitare auto-fix e considera di disabilitare auto-fix per i repository in cui un commento PR può distribuire infrastruttura o eseguire operazioni privilegiate.

746</Warning>

747 

748## Sicurezza e isolamento

749 

750Ogni sessione cloud è separata dalla tua macchina e dalle altre sessioni attraverso diversi livelli:

751 

752* **Macchine virtuali isolate**: ogni sessione viene eseguita in una VM isolata gestita da Anthropic

753* **Controlli di accesso alla rete**: l'accesso alla rete è limitato per impostazione predefinita e può essere disabilitato. Quando viene eseguito con l'accesso alla rete disabilitato, Claude Code può comunque comunicare con l'API Anthropic, che potrebbe consentire ai dati di uscire dalla VM.

754* **Protezione delle credenziali**: le credenziali sensibili come le credenziali git o le chiavi di firma non sono mai all'interno della sandbox con Claude Code. L'autenticazione viene gestita tramite un proxy sicuro utilizzando credenziali con ambito.

755* **Analisi sicura**: il codice viene analizzato e modificato all'interno di VM isolate prima di creare PR

756 

757## Limitazioni

758 

759Prima di fare affidamento sulle sessioni cloud per un flusso di lavoro, tieni conto di questi vincoli:

760 

761* **Limiti di velocità**: Claude Code sul web condivide i limiti di velocità con tutti gli altri utilizzi di Claude e Claude Code all'interno del tuo account. L'esecuzione di più attività in parallelo consumerà più limiti di velocità proporzionalmente. Non esiste alcun addebito di calcolo separato per la VM cloud.

762* **Autenticazione del repository**: puoi spostare le sessioni da web a locale solo quando sei autenticato allo stesso account

763* **Restrizioni della piattaforma**: il clonaggio del repository e la creazione di pull request richiedono GitHub. Le istanze self-hosted di [GitHub Enterprise Server](/it/github-enterprise-server) sono supportate per i piani Team e Enterprise. GitLab, Bitbucket e altri repository non GitHub possono essere inviati alle sessioni cloud come [bundle locale](#send-local-repositories-without-github), ma la sessione non può eseguire il push dei risultati di nuovo al remoto

764 

765## Risorse correlate

766 

767* [Ultraplan](/it/ultraplan): elabora un piano in una sessione cloud e revisionalo nel tuo browser

768* [Ultrareview](/it/ultrareview): esegui una profonda revisione del codice multi-agente in una sandbox cloud

769* [Routines](/it/routines): automatizza il lavoro su una pianificazione, tramite chiamata API o in risposta agli eventi GitHub

770* [Configurazione degli hook](/it/hooks): esegui script agli eventi del ciclo di vita della sessione

771* [Riferimento delle impostazioni](/it/settings): tutte le opzioni di configurazione

772* [Sicurezza](/it/security): garanzie di isolamento e gestione dei dati

773* [Utilizzo dei dati](/it/data-usage): cosa Anthropic conserva dalle sessioni cloud

claude-directory.md +1583 −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# Esplora la directory .claude

6 

7> Dove Claude Code legge CLAUDE.md, settings.json, hooks, skills, commands, subagents, rules e auto memory. Esplora la directory .claude nel tuo progetto e ~/.claude nella tua home directory.

8 

9export const ClaudeExplorer = () => {

10 const A = useMemo(() => ({href, children}) => <a href={href} style={{

11 color: 'var(--ce-accent)',

12 textDecoration: 'none',

13 borderBottom: '1px dotted var(--ce-accent)'

14 }}>{children}</a>, []);

15 const C = useMemo(() => ({children}) => <code style={{

16 fontFamily: 'var(--ce-mono)',

17 fontSize: '0.92em',

18 padding: '1px 4px',

19 borderRadius: '3px',

20 background: 'var(--ce-surface)',

21 border: '0.5px solid var(--ce-border-subtle)'

22 }}>{children}</code>, []);

23 const commandsNote = useMemo(() => <>Commands and skills are now the same mechanism. For new workflows, use <A href="/en/skills">skills/</A> instead: same <C>/name</C> invocation, plus you can bundle supporting files.</>, []);

24 const FILE_TREE = useMemo(() => ({

25 project: {

26 label: 'your-project/',

27 children: [{

28 id: 'claude-md',

29 label: 'CLAUDE.md',

30 type: 'file',

31 icon: 'md',

32 color: '#6A9BCC',

33 badge: 'committed',

34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/en/skills">skill</A> or a path-scoped <A href="/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions

40 

41## Commands

42- Build: \`npm run build\`

43- Test: \`npm test\`

44- Lint: \`npm run lint\`

45 

46## Stack

47- TypeScript with strict mode

48- React 19, functional components only

49 

50## Rules

51- Named exports, never default exports

52- Tests live next to source: \`foo.ts\` -> \`foo.test.ts\`

53- All API routes return \`{ data, error }\` shape`,

54 docsLink: '/en/memory'

55 }, {

56 id: 'mcp-json',

57 label: '.mcp.json',

58 type: 'file',

59 icon: 'json',

60 color: '#9B7BC4',

61 badge: 'committed',

62 oneLiner: 'Project-scoped MCP servers, shared with your team',

63 when: <>Servers connect when the session begins. Tool schemas are deferred by default and load on demand via <A href="/en/mcp#scale-with-mcp-tool-search">tool search</A></>,

64 description: <>Configures Model Context Protocol (MCP) servers that give Claude access to external tools: databases, APIs, browsers, and more. This file holds the project-scoped servers your whole team uses. Personal servers you want to keep to yourself go in <C>~/.claude.json</C> instead.</>,

65 tips: [<>Use environment variable references for secrets: <C>{'${GITHUB_TOKEN}'}</C></>, <>Lives at the project root, not inside <C>.claude/</C></>, <>For servers only you need, run <C>claude mcp add --scope user</C>. This writes to <C>~/.claude.json</C> instead of <C>.mcp.json</C></>],

66 exampleIntro: <>This example configures the GitHub MCP server so Claude can read issues and open pull requests. The <C>{'${GITHUB_TOKEN}'}</C> reference is read from your shell environment when Claude Code starts the server, so the token never lands in the file.</>,

67 example: `{

68 "mcpServers": {

69 "github": {

70 "command": "npx",

71 "args": ["-y", "@modelcontextprotocol/server-github"],

72 "env": {

73 "GITHUB_TOKEN": "\${GITHUB_TOKEN}"

74 }

75 }

76 }

77}`,

78 docsLink: '/en/mcp'

79 }, {

80 id: 'worktreeinclude',

81 label: '.worktreeinclude',

82 type: 'file',

83 icon: 'md',

84 color: '#8FA876',

85 badge: 'committed',

86 oneLiner: 'Gitignored files to copy into new worktrees',

87 when: <>Read when Claude creates a git worktree via <C>--worktree</C>, the <C>EnterWorktree</C> tool, or subagent <C>isolation: worktree</C></>,

88 description: <>Lists gitignored files to copy from your main repository into each new worktree. Worktrees are fresh checkouts, so untracked files like <C>.env</C> are missing by default. Patterns here use <C>.gitignore</C> syntax. Only files that match a pattern and are also gitignored get copied, so tracked files are never duplicated.</>,

89 tips: [<>Lives at the project root, not inside <C>.claude/</C></>, <>Git-only: if you configure a <A href="/en/hooks#worktreecreate">WorktreeCreate hook</A> for a different VCS, this file is not read. Copy files inside your hook script instead</>, <>Also applies to parallel sessions in the <A href="/en/desktop#work-in-parallel-with-sessions">desktop app</A></>],

90 exampleIntro: 'This example copies your local environment files and a secrets config into every worktree Claude creates. Comments start with # and blank lines are ignored, same as .gitignore.',

91 example: `# Local environment

92.env

93.env.local

94 

95# API credentials

96config/secrets.json`,

97 docsLink: '/en/worktrees#copy-gitignored-files-into-worktrees'

98 }, {

99 id: 'dot-claude',

100 label: '.claude/',

101 type: 'folder',

102 icon: 'folder',

103 color: 'var(--ce-accent)',

104 oneLiner: 'Project-level configuration, rules, and extensions',

105 description: 'Everything Claude Code reads that is specific to this project. If you use git, commit most files here so your team shares them; a few, like settings.local.json, are automatically gitignored. Each file badge shows which.',

106 children: [{

107 id: 'settings-json',

108 label: 'settings.json',

109 type: 'file',

110 icon: 'json',

111 color: 'var(--ce-text-3)',

112 badge: 'committed',

113 oneLiner: 'Permissions, hooks, and configuration',

114 when: <>Overrides global <C>~/.claude/settings.json</C>. Local settings, CLI flags, and managed settings override this</>,

115 description: 'Settings that Claude Code applies directly. Permissions control which commands and tools Claude can use; hooks run your scripts at specific points in a session. Unlike CLAUDE.md, which Claude reads as guidance, these are enforced whether Claude follows them or not.',

116 contains: [<><A href="/en/permissions">permissions</A>: allow, deny, or prompt before Claude uses specific tools or commands</>, <><A href="/en/hooks">hooks</A>: run your own scripts on events like before a tool call or after a file edit</>, <><A href="/en/statusline">statusLine</A>: customize the line shown at the bottom while Claude works</>, <><A href="/en/settings#available-settings">model</A>: pick a default model for this project</>, <><A href="/en/settings#environment-variables">env</A>: environment variables set in every session</>, <><A href="/en/output-styles">outputStyle</A>: select a custom system-prompt style from output-styles/</>],

117 tips: [<>Bash permission patterns support wildcards: <C>Bash(npm test *)</C> matches any command starting with <C>npm test</C></>, <>Array settings like <C>permissions.allow</C> combine across all scopes; scalar settings like <C>model</C> use the most specific value</>],

118 exampleIntro: <>This example allows <C>npm test</C> and <C>npm run</C> commands without prompting, blocks <C>rm -rf</C>, and runs Prettier on files after Claude edits or writes them.</>,

119 example: `{

120 "permissions": {

121 "allow": [

122 "Bash(npm test *)",

123 "Bash(npm run *)"

124 ],

125 "deny": [

126 "Bash(rm -rf *)"

127 ]

128 },

129 "hooks": {

130 "PostToolUse": [{

131 "matcher": "Edit|Write",

132 "hooks": [{

133 "type": "command",

134 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

135 }]

136 }]

137 }

138}`,

139 docsLink: '/en/settings'

140 }, {

141 id: 'settings-local-json',

142 label: 'settings.local.json',

143 type: 'file',

144 icon: 'json',

145 color: 'var(--ce-text-3)',

146 badge: 'gitignored',

147 oneLiner: 'Your personal settings overrides for this project',

148 when: 'Highest of the user-editable settings files; CLI flags and managed settings still take precedence',

149 description: 'Personal settings that take precedence over the project defaults. Same JSON format as settings.json, but not committed. Use this when you need different permissions or defaults than the team config.',

150 tips: [<>Same schema as settings.json. Array settings like <C>permissions.allow</C> combine across scopes; scalar settings like <C>model</C> use the local value</>, <>Claude Code adds this file to <C>~/.config/git/ignore</C> the first time it writes one. If you use a custom <C>core.excludesFile</C>, add the pattern there too. To share the ignore rule with your team, also add it to the project <C>.gitignore</C></>],

151 exampleIntro: 'This example adds Docker permissions on top of whatever the team settings.json allows.',

152 example: `{

153 "permissions": {

154 "allow": [

155 "Bash(docker *)"

156 ]

157 }

158}`,

159 docsLink: '/en/settings'

160 }, {

161 id: 'rules',

162 label: 'rules/',

163 type: 'folder',

164 icon: 'folder',

165 color: '#9B7BC4',

166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',

167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/en/hooks">hooks</A> or <A href="/en/permissions">permissions</A>.</>],

169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],

170 docsLink: '/en/memory#organize-rules-with-claude/rules/',

171 children: [{

172 id: 'rule-testing',

173 label: 'testing.md',

174 type: 'file',

175 icon: 'md',

176 color: '#9B7BC4',

177 badge: 'committed',

178 oneLiner: 'Test conventions scoped to test files',

179 when: <>Loaded when Claude reads a file matching the <C>paths:</C> globs below</>,

180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,

181 example: `---

182paths:

183 - "**/*.test.ts"

184 - "**/*.test.tsx"

185---

186 

187# Testing Rules

188 

189- Use descriptive test names: "should [expected] when [condition]"

190- Mock external dependencies, not internal modules

191- Clean up side effects in afterEach`

192 }, {

193 id: 'rule-api',

194 label: 'api-design.md',

195 type: 'file',

196 icon: 'md',

197 color: '#9B7BC4',

198 badge: 'committed',

199 oneLiner: 'API conventions scoped to backend code',

200 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,

201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is editing API routes.</>,

202 example: `---

203paths:

204 - "src/api/**/*.ts"

205---

206 

207# API Design Rules

208 

209- All endpoints must validate input with Zod schemas

210- Return shape: { data: T } | { error: string }

211- Rate limit all public endpoints`

212 }]

213 }, {

214 id: 'skills',

215 label: 'skills/',

216 type: 'folder',

217 icon: 'folder',

218 color: '#D4A843',

219 oneLiner: 'Reusable prompts you or Claude invoke by name',

220 when: <>Invoked with <C>/skill-name</C> or when Claude matches the task to a skill</>,

221 description: <>Each skill is a folder with a SKILL.md file plus any supporting files it needs. By default, both you and Claude can invoke a skill. Use frontmatter to control that: <C>disable-model-invocation: true</C> for user-only workflows like <C>/deploy</C>, or <C>user-invocable: false</C> to hide from the <C>/</C> menu while Claude can still invoke it.</>,

222 tips: [<>Skills accept arguments: <C>/deploy staging</C> passes "staging" as <C>$ARGUMENTS</C>. Use <C>$0</C>, <C>$1</C>, and so on for positional access</>, <>The <C>description</C> frontmatter determines when Claude auto-invokes the skill</>, 'Bundle reference docs alongside SKILL.md. Claude knows the skill directory path and can read supporting files when you mention them'],

223 docsLink: '/en/skills',

224 children: [{

225 id: 'skill-review',

226 label: 'security-review/',

227 type: 'folder',

228 icon: 'folder',

229 color: '#D4A843',

230 oneLiner: 'A skill bundling SKILL.md with supporting files',

231 children: [{

232 id: 'skill-review-md',

233 label: 'SKILL.md',

234 type: 'file',

235 icon: 'md',

236 color: '#D4A843',

237 badge: 'committed',

238 oneLiner: 'Entrypoint: trigger, invocability, instructions',

239 when: <>User types <C>/security-review &lt;target&gt;</C>; Claude cannot auto-invoke this skill</>,

240 description: [<>This skill uses <C>disable-model-invocation: true</C> so only you can trigger it; Claude never invokes it on its own.</>, <>The <C>!`...`</C> line runs a shell command and injects its output into the prompt. <C>$ARGUMENTS</C> substitutes whatever you typed after the skill name. Claude sees the skill directory path, so mentioning a bundled file like checklist.md lets Claude read it.</>],

241 example: `---

242description: Reviews code changes for security vulnerabilities, authentication gaps, and injection risks

243disable-model-invocation: true

244argument-hint: <branch-or-path>

245---

246 

247## Diff to review

248 

249!\`git diff $ARGUMENTS\`

250 

251Audit the changes above for:

252 

2531. Injection vulnerabilities (SQL, XSS, command)

2542. Authentication and authorization gaps

2553. Hardcoded secrets or credentials

256 

257Use checklist.md in this skill directory for the full review checklist.

258 

259Report findings with severity ratings and remediation steps.`

260 }, {

261 id: 'skill-checklist',

262 label: 'checklist.md',

263 type: 'file',

264 icon: 'md',

265 color: '#D4A843',

266 badge: 'committed',

267 oneLiner: 'Supporting file bundled with the skill',

268 when: 'Claude reads it on demand while running the skill',

269 description: <>Skills can bundle any supporting files: reference docs, templates, scripts. The skill directory path is prepended to SKILL.md, so Claude can read bundled files by name. For scripts in bash injection commands, use the <C>{'${CLAUDE_SKILL_DIR}'}</C> placeholder.</>,

270 example: `# Security Review Checklist

271 

272## Input Validation

273- [ ] All user input sanitized before DB queries

274- [ ] File upload MIME types validated

275- [ ] Path traversal prevented on file operations

276 

277## Authentication

278- [ ] JWT tokens expire after 24 hours

279- [ ] API keys stored in environment variables

280- [ ] Passwords hashed with bcrypt or argon2`

281 }]

282 }]

283 }, {

284 id: 'commands',

285 label: 'commands/',

286 type: 'folder',

287 icon: 'folder',

288 color: '#788C5D',

289 oneLiner: <>Single-file prompts invoked with <C>/name</C></>,

290 note: commandsNote,

291 when: <>User types <C>/command-name</C></>,

292 description: <>A file at <C>commands/deploy.md</C> creates <C>/deploy</C> the same way a skill at <C>skills/deploy/SKILL.md</C> does, and both can be auto-invoked by Claude. Skills use a directory with SKILL.md, letting you bundle reference docs, templates, or scripts alongside the prompt.</>,

293 tips: [<>Use <C>$ARGUMENTS</C> in the file to accept parameters: <C>/fix-issue 123</C></>, 'If a skill and command share a name, the skill takes precedence', 'New commands should usually be skills instead; commands remain supported'],

294 docsLink: '/en/skills',

295 children: [{

296 id: 'cmd-example',

297 label: 'fix-issue.md',

298 type: 'file',

299 icon: 'md',

300 color: '#788C5D',

301 badge: 'committed',

302 oneLiner: <>Invoked as <C>/fix-issue &lt;number&gt;</C></>,

303 note: commandsNote,

304 description: [<>An example command for fixing a GitHub issue. Type <C>/fix-issue 123</C> and the <C>!`...`</C> line runs <C>gh issue view 123</C> in your shell, injecting the output into the prompt before Claude sees it.</>, <><C>$ARGUMENTS</C> substitutes whatever you typed after the command name. For positional access, use <C>$0</C> <C>$1</C> and so on.</>],

305 example: `---

306argument-hint: <issue-number>

307---

308 

309!\`gh issue view $ARGUMENTS\`

310 

311Investigate and fix the issue above.

312 

3131. Trace the bug to its root cause

3142. Implement the fix

3153. Write or update tests

3164. Summarize what you changed and why`

317 }]

318 }, {

319 id: 'output-styles',

320 label: 'output-styles/',

321 type: 'folder',

322 icon: 'folder',

323 color: '#5AA7A7',

324 oneLiner: 'Project-scoped output styles, if your team shares any',

325 when: 'Applied at session start when selected via the outputStyle setting',

326 description: <>Output styles are usually personal, so most live in <C>~/.claude/output-styles/</C>. Put one here if your team shares a style, like a review mode everyone uses. See <A href="#ce-global-output-styles">the Global tab</A> for the full explanation and example.</>,

327 docsLink: '/en/output-styles',

328 children: []

329 }, {

330 id: 'agents',

331 label: 'agents/',

332 type: 'folder',

333 icon: 'folder',

334 color: '#C46686',

335 oneLiner: 'Specialized subagents with their own context window',

336 when: 'Runs in its own context window when you or Claude invoke it',

337 description: 'Each markdown file defines a subagent with its own system prompt, tool access, and optionally its own model. Subagents run in a fresh context window, keeping the main conversation clean. Useful for parallel work or isolated tasks.',

338 tips: ['Each agent gets a fresh context window, separate from your main session', <>Restrict tool access per agent with the <C>tools:</C> frontmatter field</>, 'Type @ and pick an agent from the autocomplete to delegate directly'],

339 docsLink: '/en/sub-agents',

340 children: [{

341 id: 'agent-reviewer',

342 label: 'code-reviewer.md',

343 type: 'file',

344 icon: 'md',

345 color: '#C46686',

346 badge: 'committed',

347 oneLiner: 'Subagent for isolated code review',

348 when: 'Claude spawns it for review tasks, or you @-mention it from the autocomplete',

349 description: <>An example subagent restricted to read-only tools. The <C>description</C> frontmatter tells Claude when to delegate to it automatically; <C>tools:</C> limits it to Read, Grep, and Glob so it can inspect code but never edit. The body becomes the subagent's system prompt.</>,

350 example: `---

351name: code-reviewer

352description: Reviews code for correctness, security, and maintainability

353tools: Read, Grep, Glob

354---

355 

356You are a senior code reviewer. Review for:

357 

3581. Correctness: logic errors, edge cases, null handling

3592. Security: injection, auth bypass, data exposure

3603. Maintainability: naming, complexity, duplication

361 

362Every finding must include a concrete fix.`

363 }]

364 }, {

365 id: 'agent-memory',

366 label: 'agent-memory/',

367 type: 'folder',

368 icon: 'folder',

369 color: '#C46686',

370 badge: 'committed',

371 autogen: true,

372 oneLiner: 'Subagent persistent memory, separate from your main session auto memory',

373 when: 'First 200 lines (capped at 25KB) of MEMORY.md loaded into the subagent system prompt when it runs',

374 description: <>Subagents with <C>memory: project</C> in their frontmatter get a dedicated memory directory here. This is distinct from your <A href="/en/memory#auto-memory">main session auto memory</A> at <C>~/.claude/projects/</C>: each subagent reads and writes its own MEMORY.md, not yours.</>,

375 tips: [<>Only created for subagents that set the <C>memory:</C> frontmatter field</>, <>This directory holds project-scoped subagent memory, meant to be shared with your team. To keep memory out of version control use <C>memory: local</C>, which writes to <C>.claude/agent-memory-local/</C> instead. For cross-project memory use <C>memory: user</C>, which writes to <C>~/.claude/agent-memory/</C></>, <>The main session auto memory is a different feature; see <C>~/.claude/projects/</C> in the Global tab</>],

376 docsLink: '/en/sub-agents#enable-persistent-memory',

377 children: [{

378 id: 'agent-memory-sub',

379 label: '<agent-name>/',

380 type: 'folder',

381 icon: 'folder',

382 color: '#C46686',

383 autogen: true,

384 children: [{

385 id: 'agent-memory-md',

386 label: 'MEMORY.md',

387 type: 'file',

388 icon: 'md',

389 color: '#C46686',

390 badge: 'committed',

391 autogen: true,

392 oneLiner: 'The subagent writes and maintains this file automatically',

393 when: 'Loaded into the subagent system prompt when the subagent starts',

394 description: <>Works the same as your <A href="/en/memory#auto-memory">main auto memory</A>: the subagent creates and updates this file itself. You do not write it. The subagent reads it at the start of each task and writes back what it learns.</>,

395 example: `# code-reviewer memory

396 

397## Patterns seen

398- Project uses custom Result<T, E> type, not exceptions

399- Auth middleware expects Bearer token in Authorization header

400- Tests use factory functions in test/factories/

401 

402## Recurring issues

403- Missing null checks on API responses (src/api/*)

404- Unhandled promise rejections in background jobs`

405 }]

406 }]

407 }]

408 }]

409 },

410 global: {

411 label: '~/',

412 children: [{

413 id: 'claude-json',

414 label: '.claude.json',

415 type: 'file',

416 icon: 'json',

417 color: 'var(--ce-text-3)',

418 badge: 'local',

419 oneLiner: 'App state and UI preferences',

420 when: <>Read at session start for your preferences and MCP servers. Claude Code writes back to it when you change settings in <C>/config</C> or approve trust prompts</>,

421 description: <>Holds state that does not belong in settings.json: theme, OAuth session, per-project trust decisions, your personal MCP servers, and UI toggles. Mostly managed through <C>/config</C> rather than editing directly.</>,

422 tips: [<>IDE toggles like <C>autoConnectIde</C> and <C>externalEditorContext</C> live here, not in settings.json</>, <>The <C>projects</C> key tracks per-project state like trust-dialog acceptance and last-session metrics. Permission rules you approve in-session go to <C>.claude/settings.local.json</C> instead</>, <>MCP servers here are yours only: user scope applies across all projects, local scope is per-project but not committed. Team-shared servers go in <C>.mcp.json</C> at the project root instead</>],

423 example: `{

424 "autoConnectIde": true,

425 "externalEditorContext": true,

426 "mcpServers": {

427 "my-tools": {

428 "command": "npx",

429 "args": ["-y", "@example/mcp-server"]

430 }

431 }

432}`,

433 docsLink: '/en/settings#global-config-settings'

434 }, {

435 id: 'global-dot-claude',

436 label: '.claude/',

437 type: 'folder',

438 icon: 'folder',

439 color: 'var(--ce-accent)',

440 oneLiner: 'Your personal configuration across all projects',

441 description: 'The global counterpart to your project .claude/ directory. Files here apply to every project you work in and are never committed to any repository.',

442 children: [{

443 id: 'global-claude-md',

444 label: 'CLAUDE.md',

445 type: 'file',

446 icon: 'md',

447 color: '#6A9BCC',

448 badge: 'local',

449 oneLiner: 'Personal preferences across every project',

450 when: 'Loaded at the start of every session, in every project',

451 description: 'Your global instruction file. Loaded alongside the project CLAUDE.md at session start, so both are in context together. When instructions conflict, project-level instructions take priority. Keep this to preferences that apply everywhere: response style, commit format, personal conventions.',

452 tips: ['Keep it short since it loads into context for every project, alongside that project\'s own CLAUDE.md', 'Good for response style, commit format, and personal conventions'],

453 example: `# Global preferences

454 

455- Keep explanations concise

456- Use conventional commit format

457- Show the terminal command to verify changes

458- Prefer composition over inheritance`,

459 docsLink: '/en/memory'

460 }, {

461 id: 'global-settings',

462 label: 'settings.json',

463 type: 'file',

464 icon: 'json',

465 color: 'var(--ce-text-3)',

466 badge: 'local',

467 oneLiner: 'Default settings for all projects',

468 when: 'Your defaults. Project and local settings.json override any keys you also set there',

469 description: [<>Same keys as project <C>settings.json</C>: permissions, hooks, model, environment variables, and the rest. Put settings here that you want in every project, like permissions you always allow, a preferred model, or a notification hook that runs regardless of which project you're in.</>, <>Settings follow a precedence order: project <C>settings.json</C> overrides any matching keys you set here. This is different from CLAUDE.md, where global and project files are both loaded into context rather than merged key by key.</>],

470 example: `{

471 "permissions": {

472 "allow": [

473 "Bash(git log *)",

474 "Bash(git diff *)"

475 ]

476 }

477}`,

478 docsLink: '/en/settings'

479 }, {

480 id: 'keybindings',

481 label: 'keybindings.json',

482 type: 'file',

483 icon: 'json',

484 color: 'var(--ce-text-3)',

485 badge: 'local',

486 oneLiner: 'Custom keyboard shortcuts',

487 when: 'Read at session start and hot-reloaded when you edit the file',

488 description: <>Rebind keyboard shortcuts in the interactive CLI. Run <C>/keybindings</C> to create or open this file with a schema reference. Ctrl+C, Ctrl+D, Ctrl+M, and Caps Lock are reserved and cannot be rebound.</>,

489 exampleIntro: <>This example binds <C>Ctrl+E</C> to open your external editor and unbinds <C>Ctrl+U</C> by setting it to <C>null</C>. The <C>context</C> field scopes bindings to a specific part of the CLI, here the main chat input.</>,

490 example: `{

491 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

492 "$docs": "https://code.claude.com/docs/en/keybindings",

493 "bindings": [

494 {

495 "context": "Chat",

496 "bindings": {

497 "ctrl+e": "chat:externalEditor",

498 "ctrl+u": null

499 }

500 }

501 ]

502}`,

503 docsLink: '/en/keybindings'

504 }, {

505 id: 'themes',

506 label: 'themes/',

507 type: 'folder',

508 icon: 'folder',

509 color: '#5AA7A7',

510 oneLiner: 'Custom color themes',

511 when: <>Read at session start and hot-reloaded when files change. Listed in <C>/theme</C></>,

512 description: <>Each <C>.json</C> file defines a custom color theme: a built-in <C>base</C> preset plus an <C>overrides</C> map of color tokens. Create one interactively with <C>/theme</C> or write the JSON by hand. Selecting a custom theme stores <C>custom:&lt;slug&gt;</C> as your theme preference.</>,

513 example: `{

514 "name": "Dracula",

515 "base": "dark",

516 "overrides": {

517 "claude": "#bd93f9",

518 "error": "#ff5555",

519 "success": "#50fa7b"

520 }

521}`,

522 docsLink: '/en/terminal-config#create-a-custom-theme',

523 children: []

524 }, {

525 id: 'global-projects',

526 label: 'projects/',

527 type: 'folder',

528 icon: 'folder',

529 color: '#E8A45C',

530 autogen: true,

531 oneLiner: "Auto memory: Claude's notes to itself, per project",

532 when: 'MEMORY.md loaded at session start; topic files read on demand',

533 description: 'Auto memory lets Claude accumulate knowledge across sessions without you writing anything. Claude saves notes as it works: build commands, debugging insights, architecture notes. Each project gets its own memory directory keyed by the repository path.',

534 tips: [<>On by default. Toggle with <C>/memory</C> or <C>autoMemoryEnabled</C> in settings</>, 'MEMORY.md is the index loaded each session. The first 200 lines, or 25KB, whichever comes first, are read', 'Topic files like debugging.md are read on demand, not at startup', 'These are plain markdown. Edit or delete them anytime'],

535 docsLink: '/en/memory#auto-memory',

536 children: [{

537 id: 'memory-dir',

538 label: '<project>/memory/',

539 type: 'folder',

540 icon: 'folder',

541 color: '#E8A45C',

542 autogen: true,

543 oneLiner: "Claude's accumulated knowledge for one project",

544 children: [{

545 id: 'memory-md',

546 label: 'MEMORY.md',

547 type: 'file',

548 icon: 'md',

549 color: '#E8A45C',

550 badge: 'local',

551 autogen: true,

552 oneLiner: 'Claude writes and maintains this file automatically',

553 when: 'First 200 lines (capped at 25KB) loaded at session start',

554 description: 'Claude creates and updates this file as it works; you do not write it yourself. It acts as an index that Claude reads at the start of every session, pointing to topic files for detail. You can edit or delete it, but Claude will keep updating it.',

555 example: `# Memory Index

556 

557## Project

558- [build-and-test.md](build-and-test.md): npm run build (~45s), Vitest, dev server on 3001

559- [architecture.md](architecture.md): API client singleton, refresh-token auth

560 

561## Reference

562- [debugging.md](debugging.md): auth token rotation and DB connection troubleshooting`,

563 docsLink: '/en/memory'

564 }, {

565 id: 'memory-topic',

566 label: 'debugging.md',

567 type: 'file',

568 icon: 'md',

569 color: '#E8A45C',

570 badge: 'local',

571 autogen: true,

572 oneLiner: 'Topic notes Claude writes when MEMORY.md gets long',

573 when: 'Claude reads this when a related task comes up',

574 description: 'An example of a topic file Claude creates when MEMORY.md grows too long. Claude picks the filename based on what it splits out: debugging.md, architecture.md, build-commands.md, or similar. You never create these yourself. Claude reads a topic file back only when the current task relates to it.',

575 example: `---

576name: Debugging patterns

577description: Auth token rotation and database connection troubleshooting for this project

578type: reference

579---

580 

581## Auth Token Issues

582- Refresh token rotation: old token invalidated immediately

583- If 401 after refresh: check clock skew between client and server

584 

585## Database Connection Drops

586- Connection pool: max 10 in dev, 50 in prod

587- Always check \`docker compose ps\` first`

588 }]

589 }]

590 }, {

591 id: 'global-rules',

592 label: 'rules/',

593 type: 'folder',

594 icon: 'folder',

595 color: '#9B7BC4',

596 oneLiner: 'User-level rules that apply to every project',

597 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

598 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',

599 docsLink: '/en/memory#organize-rules-with-claude/rules/',

600 children: []

601 }, {

602 id: 'global-skills',

603 label: 'skills/',

604 type: 'folder',

605 icon: 'folder',

606 color: '#D4A843',

607 oneLiner: 'Personal skills available in every project',

608 when: <>Invoked with <C>/skill-name</C> in any project</>,

609 description: 'Skills you built for yourself that work everywhere. Same structure as project skills: each is a folder with SKILL.md, scoped to your user account instead of a single project.',

610 docsLink: '/en/skills',

611 children: []

612 }, {

613 id: 'global-commands',

614 label: 'commands/',

615 type: 'folder',

616 icon: 'folder',

617 color: '#788C5D',

618 oneLiner: 'Personal single-file commands available in every project',

619 note: commandsNote,

620 when: <>User types <C>/command-name</C> in any project</>,

621 description: 'Same as project commands/ but scoped to your user account. Each markdown file becomes a command available everywhere.',

622 docsLink: '/en/skills',

623 children: []

624 }, {

625 id: 'global-output-styles',

626 label: 'output-styles/',

627 type: 'folder',

628 icon: 'folder',

629 color: '#5AA7A7',

630 oneLiner: 'Custom system-prompt sections that adjust how Claude works',

631 when: 'Applied at session start when selected via the outputStyle setting',

632 description: [<>Each markdown file defines an output style: a section appended to the system prompt that, by default, also drops the built-in software-engineering task instructions. Use this to adapt Claude Code for uses beyond coding, or to add teaching or review modes.</>, <>Select a built-in or custom style with <C>/config</C> or the <C>outputStyle</C> key in settings. Styles here are available in every project; project-level styles with the same name take precedence.</>],

633 tips: ['Built-in styles Explanatory and Learning are included with Claude Code; custom styles go here', <>Set <C>keep-coding-instructions: true</C> in frontmatter to keep the default task instructions alongside your additions</>, 'Changes take effect on the next session since the system prompt is fixed at startup for caching'],

634 docsLink: '/en/output-styles',

635 children: [{

636 id: 'output-style-example',

637 label: 'teaching.md',

638 type: 'file',

639 icon: 'md',

640 color: '#5AA7A7',

641 badge: 'local',

642 oneLiner: 'Example style that adds explanations and leaves small changes for you',

643 when: <>Active when <C>outputStyle</C> in settings is set to <C>teaching</C></>,

644 description: <>This style appends instructions to the system prompt: Claude adds a "Why this approach" note after each task and leaves TODO(human) markers for changes under 10 lines instead of writing them itself. Select it by setting <C>outputStyle</C> to the filename without .md, or to the <C>name</C> field if you set one in frontmatter.</>,

645 example: `---

646description: Explains reasoning and asks you to implement small pieces

647keep-coding-instructions: true

648---

649 

650After completing each task, add a brief "Why this approach" note

651explaining the key design decision.

652 

653When a change is under 10 lines, ask the user to implement it

654themselves by leaving a TODO(human) marker instead of writing it.`

655 }]

656 }, {

657 id: 'global-agents',

658 label: 'agents/',

659 type: 'folder',

660 icon: 'folder',

661 color: '#C46686',

662 oneLiner: 'Personal subagents available in every project',

663 when: 'Claude delegates or you @-mention in any project',

664 description: 'Subagents defined here are available across all your projects. Same format as project agents.',

665 docsLink: '/en/sub-agents',

666 children: []

667 }, {

668 id: 'global-agent-memory',

669 label: 'agent-memory/',

670 type: 'folder',

671 icon: 'folder',

672 color: '#C46686',

673 autogen: true,

674 oneLiner: <>Persistent memory for subagents with <C>memory: user</C></>,

675 when: 'Loaded into the subagent system prompt when the subagent starts',

676 description: <>Subagents with <C>memory: user</C> in their frontmatter store knowledge here that persists across all projects. For project-scoped subagent memory, see <C>.claude/agent-memory/</C> instead.</>,

677 docsLink: '/en/sub-agents#enable-persistent-memory',

678 children: []

679 }]

680 }]

681 }

682 }), []);

683 const BADGE_STYLES = useMemo(() => ({

684 committed: {

685 bg: 'rgba(85,138,66,0.08)',

686 color: 'var(--ce-badge-committed)',

687 border: 'rgba(85,138,66,0.15)',

688 label: 'committed'

689 },

690 gitignored: {

691 bg: 'rgba(217,119,87,0.06)',

692 color: 'var(--ce-badge-gitignored)',

693 border: 'rgba(217,119,87,0.15)',

694 label: 'gitignored'

695 },

696 local: {

697 bg: 'rgba(115,114,108,0.06)',

698 color: 'var(--ce-badge-local)',

699 border: 'rgba(115,114,108,0.12)',

700 label: 'local only'

701 },

702 autogen: {

703 bg: 'rgba(232,164,92,0.1)',

704 color: 'var(--ce-badge-autogen)',

705 border: 'rgba(232,164,92,0.2)',

706 label: 'Claude writes'

707 }

708 }), []);

709 const allNodes = useMemo(() => {

710 const flatten = (nodes, acc, path, parentId) => {

711 for (const node of nodes) {

712 const nextPath = [...path, node.label];

713 acc[node.id] = {

714 ...node,

715 path: nextPath,

716 parentId

717 };

718 if (node.children) flatten(node.children, acc, nextPath, node.id);

719 }

720 return acc;

721 };

722 const project = flatten(FILE_TREE.project.children, {}, [FILE_TREE.project.label]);

723 const global = flatten(FILE_TREE.global.children, {}, [FILE_TREE.global.label]);

724 for (const id in project) project[id].root = 'project';

725 for (const id in global) global[id].root = 'global';

726 return {

727 ...project,

728 ...global

729 };

730 }, [FILE_TREE]);

731 const allFolderIds = useMemo(() => Object.keys(allNodes).filter(id => allNodes[id].type === 'folder'), [allNodes]);

732 const DEFAULT_EXPANDED = ['dot-claude', 'rules', 'skills', 'skill-review', 'commands', 'agents', 'agent-memory', 'agent-memory-sub', 'global-dot-claude', 'global-output-styles', 'global-projects', 'memory-dir'];

733 const [mounted, setMounted] = useState(false);

734 const [activeRoot, setActiveRoot] = useState('project');

735 const [selectedId, setSelectedId] = useState('claude-md');

736 const [expandedFolders, setExpandedFolders] = useState(() => new Set(DEFAULT_EXPANDED));

737 const [forceMobile, setForceMobile] = useState(false);

738 const [copiedId, setCopiedId] = useState(null);

739 const [isFullscreen, setIsFullscreen] = useState(false);

740 const copyTimeoutRef = useRef(null);

741 const rootRef = useRef(null);

742 useEffect(() => {

743 setMounted(true);

744 const applyHash = scroll => {

745 const hash = window.location.hash.slice(1);

746 if (!hash.startsWith('ce-')) return;

747 const id = hash.slice(3);

748 const node = allNodes[id];

749 if (!node) return;

750 setActiveRoot(node.root);

751 setSelectedId(id);

752 setExpandedFolders(new Set(allFolderIds));

753 if (scroll && rootRef.current) rootRef.current.scrollIntoView({

754 behavior: 'smooth',

755 block: 'start'

756 });

757 };

758 applyHash(false);

759 const onHashChange = () => applyHash(true);

760 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

761 window.addEventListener('hashchange', onHashChange);

762 document.addEventListener('fullscreenchange', onFsChange);

763 return () => {

764 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

765 window.removeEventListener('hashchange', onHashChange);

766 document.removeEventListener('fullscreenchange', onFsChange);

767 };

768 }, []);

769 useEffect(() => {

770 if (!mounted || !rootRef.current) return;

771 const hash = window.location.hash.slice(1);

772 if (hash.startsWith('ce-') && allNodes[hash.slice(3)]) {

773 rootRef.current.scrollIntoView({

774 behavior: 'smooth',

775 block: 'start'

776 });

777 }

778 }, [mounted]);

779 if (!mounted) return null;

780 const selected = allNodes[selectedId];

781 const tree = FILE_TREE[activeRoot];

782 const isCopied = copiedId === selected.id;

783 const toggleFolder = id => {

784 const next = new Set(expandedFolders);

785 next.has(id) ? next.delete(id) : next.add(id);

786 setExpandedFolders(next);

787 };

788 const switchRoot = root => {

789 if (root === activeRoot) return;

790 setActiveRoot(root);

791 const firstId = FILE_TREE[root].children[0].id;

792 setSelectedId(firstId);

793 try {

794 history.replaceState(null, '', '#ce-' + firstId);

795 } catch (e) {}

796 };

797 const toggleFullscreen = () => {

798 if (!rootRef.current) return;

799 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

800 };

801 const selectNode = n => {

802 setSelectedId(n.id);

803 if (n.type === 'folder' && !expandedFolders.has(n.id)) toggleFolder(n.id);

804 try {

805 history.replaceState(null, '', '#ce-' + n.id);

806 } catch (e) {}

807 };

808 const iconBtn = {

809 width: 28,

810 flexShrink: 0,

811 borderRadius: '6px',

812 border: 'none',

813 cursor: 'pointer',

814 background: 'transparent',

815 color: 'var(--ce-text-4)',

816 display: 'flex',

817 alignItems: 'center',

818 justifyContent: 'center'

819 };

820 const visibleFolderIds = allFolderIds.filter(id => allNodes[id].root === activeRoot);

821 const allExpanded = visibleFolderIds.every(id => expandedFolders.has(id));

822 const toggleAllFolders = () => {

823 const next = new Set(expandedFolders);

824 visibleFolderIds.forEach(id => allExpanded ? next.delete(id) : next.add(id));

825 setExpandedFolders(next);

826 };

827 const onTreeKeyDown = e => {

828 if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(e.key)) return;

829 const visible = [];

830 const walk = nodes => {

831 for (const n of nodes) {

832 visible.push(n.id);

833 if (n.children && expandedFolders.has(n.id)) walk(n.children);

834 }

835 };

836 walk(tree.children);

837 const i = visible.indexOf(selectedId);

838 if (i === -1) return;

839 e.preventDefault();

840 if (e.key === 'ArrowDown' && i < visible.length - 1) selectNode(allNodes[visible[i + 1]]); else if (e.key === 'ArrowUp' && i > 0) selectNode(allNodes[visible[i - 1]]); else if (e.key === 'ArrowRight' && selected.type === 'folder') {

841 if (!expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.children && selected.children.length) selectNode(allNodes[selected.children[0].id]);

842 } else if (e.key === 'ArrowLeft') {

843 if (selected.type === 'folder' && expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.parentId) selectNode(allNodes[selected.parentId]);

844 }

845 };

846 const copyExample = (id, text) => {

847 const done = () => {

848 setCopiedId(id);

849 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

850 copyTimeoutRef.current = setTimeout(() => setCopiedId(null), 2000);

851 };

852 const fallback = () => {

853 const ta = document.createElement('textarea');

854 ta.value = text;

855 ta.style.position = 'fixed';

856 ta.style.opacity = '0';

857 document.body.appendChild(ta);

858 ta.select();

859 try {

860 if (document.execCommand('copy')) done();

861 } catch (e) {}

862 document.body.removeChild(ta);

863 };

864 if (navigator.clipboard) {

865 navigator.clipboard.writeText(text).then(done, fallback);

866 } else {

867 fallback();

868 }

869 };

870 const renderIcon = (icon, color, size) => {

871 const sz = size || 14;

872 if (icon === 'folder') {

873 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

874 <path d="M1.5 3.5a1 1 0 0 1 1-1h2.6l1 1.2h5.4a1 1 0 0 1 1 1v5.8a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V3.5z" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

875 </svg>;

876 }

877 if (icon === 'json') {

878 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

879 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

880 <text x="7" y="9" fontSize="6" fontFamily="monospace" fill={color} textAnchor="middle" fontWeight="700">{'{}'}</text>

881 </svg>;

882 }

883 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

884 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

885 <line x1="4.5" y1="5" x2="9.5" y2="5" stroke={color} strokeWidth="1" />

886 <line x1="4.5" y1="7" x2="9.5" y2="7" stroke={color} strokeWidth="1" />

887 <line x1="4.5" y1="9" x2="8" y2="9" stroke={color} strokeWidth="1" />

888 </svg>;

889 };

890 const renderNode = (node, depth) => {

891 const isFolder = node.type === 'folder';

892 const isExpanded = expandedFolders.has(node.id);

893 const isSelected = selectedId === node.id;

894 return <div key={node.id}>

895 <button role="treeitem" tabIndex={-1} onClick={() => selectNode(node)} aria-selected={isSelected} aria-expanded={isFolder ? isExpanded : undefined} style={{

896 display: 'flex',

897 alignItems: 'center',

898 gap: '5px',

899 width: '100%',

900 padding: `4px 8px 4px ${8 + depth * 16}px`,

901 background: isSelected ? 'var(--ce-accent-bg)' : 'transparent',

902 borderTop: 'none',

903 borderRight: 'none',

904 borderBottom: 'none',

905 borderLeft: isSelected ? '2px solid var(--ce-accent)' : '2px solid transparent',

906 outline: 'none',

907 cursor: 'pointer',

908 textAlign: 'left',

909 fontFamily: 'var(--ce-mono)',

910 fontSize: '13.5px',

911 color: isSelected ? 'var(--ce-accent)' : 'var(--ce-text-2)',

912 fontWeight: isSelected ? 550 : 400,

913 transition: 'all 0.1s'

914 }}>

915 {isFolder ? <span onClick={e => {

916 e.stopPropagation();

917 toggleFolder(node.id);

918 }} style={{

919 fontSize: '14px',

920 color: 'var(--ce-text-4)',

921 width: '20px',

922 height: '20px',

923 display: 'inline-flex',

924 alignItems: 'center',

925 justifyContent: 'center',

926 cursor: 'pointer',

927 borderRadius: '4px',

928 marginLeft: '-6px',

929 flexShrink: 0

930 }} onMouseEnter={e => {

931 e.currentTarget.style.background = 'var(--ce-arrow-hover)';

932 e.currentTarget.style.color = 'var(--ce-text-2)';

933 }} onMouseLeave={e => {

934 e.currentTarget.style.background = 'transparent';

935 e.currentTarget.style.color = 'var(--ce-text-4)';

936 }}>{isExpanded ? '▾' : '▸'}</span> : <span style={{

937 width: '14px',

938 flexShrink: 0

939 }} />}

940 {renderIcon(node.icon, node.color)}

941 <span style={{

942 flex: 1,

943 overflow: 'hidden',

944 textOverflow: 'ellipsis',

945 whiteSpace: 'nowrap'

946 }}>{node.label}</span>

947 {node.badge && BADGE_STYLES[node.badge] && <span title={BADGE_STYLES[node.badge].label} style={{

948 width: 6,

949 height: 6,

950 borderRadius: '50%',

951 background: BADGE_STYLES[node.badge].color,

952 flexShrink: 0,

953 opacity: 0.7

954 }} />}

955 </button>

956 {isFolder && isExpanded && node.children && <div role="group">{node.children.map(child => renderNode(child, depth + 1))}</div>}

957 </div>;

958 };

959 return <>

960 <style>{`

961 .ce-root {

962 --ce-mono: var(--font-mono, ui-monospace, monospace);

963 --ce-accent: #D97757;

964 --ce-accent-bg: rgba(217,119,87,0.06);

965 --ce-accent-border: rgba(217,119,87,0.12);

966 --ce-bg: #fff;

967 --ce-surface: #FAFAF7;

968 --ce-surface-hover: #F0EEE6;

969 --ce-border: #E8E6DC;

970 --ce-border-subtle: #F0EEE6;

971 --ce-text: #141413;

972 --ce-text-2: #5E5D59;

973 --ce-text-3: #73726C;

974 --ce-text-4: #9C9A92;

975 --ce-text-5: #B8B6AE;

976 --ce-sep: #D1CFC5;

977 --ce-code-header: #F5F4ED;

978 --ce-code-bg: #1A1918;

979 --ce-arrow-hover: rgba(0,0,0,0.08);

980 --ce-badge-committed: #3d6b2e;

981 --ce-badge-gitignored: #b85c3a;

982 --ce-badge-local: #5e5d59;

983 --ce-badge-autogen: #b07520;

984 --ce-when-text: #4a7fb5;

985 }

986 .dark .ce-root {

987 --ce-bg: #1a1918;

988 --ce-surface: #232221;

989 --ce-surface-hover: #2e2d2b;

990 --ce-border: #3a3936;

991 --ce-border-subtle: #2e2d2b;

992 --ce-text: #e8e6dc;

993 --ce-text-2: #c4c2b8;

994 --ce-text-3: #9c9a92;

995 --ce-text-4: #73726c;

996 --ce-text-5: #5e5d59;

997 --ce-sep: #4a4946;

998 --ce-code-header: #2e2d2b;

999 --ce-code-bg: #0d0d0c;

1000 --ce-arrow-hover: rgba(255,255,255,0.08);

1001 --ce-badge-committed: #6fa85c;

1002 --ce-badge-gitignored: #e08a60;

1003 --ce-badge-local: #9c9a92;

1004 --ce-badge-autogen: #e8a45c;

1005 --ce-when-text: #8bb4e0;

1006 }

1007 .ce-mobile-fallback { display: none; border: 1px solid rgba(0,0,0,0.1); background: rgba(0,0,0,0.03); }

1008 .dark .ce-mobile-fallback { border-color: rgba(255,255,255,0.15); background: rgba(255,255,255,0.04); }

1009 @media (max-width: 700px) {

1010 .ce-root:not(.ce-force) { display: none !important; }

1011 .ce-mobile-fallback { display: block; }

1012 }

1013 `}</style>

1014 {!forceMobile && <div className="ce-mobile-fallback" style={{

1015 padding: '14px 16px',

1016 borderRadius: '8px',

1017 fontSize: '14px'

1018 }}>

1019 The interactive explorer works best on a larger screen. See the <a href="#file-reference" style={{

1020 color: '#D97757'

1021 }}>file reference table</a> below, or <button onClick={() => setForceMobile(true)} style={{

1022 border: 'none',

1023 background: 'none',

1024 padding: 0,

1025 color: '#D97757',

1026 textDecoration: 'underline',

1027 cursor: 'pointer',

1028 font: 'inherit'

1029 }}>show the explorer anyway</button>.

1030 </div>}

1031 <div ref={rootRef} className={forceMobile ? 'ce-root ce-force' : 'ce-root'} style={{

1032 borderRadius: isFullscreen ? 0 : '12px',

1033 border: '1px solid var(--ce-border)',

1034 background: 'var(--ce-bg)',

1035 display: 'flex',

1036 alignItems: 'stretch',

1037 overflow: 'hidden',

1038 fontFamily: 'var(--font-sans, -apple-system, sans-serif)',

1039 ...isFullscreen && ({

1040 height: '100vh'

1041 })

1042 }}>

1043 {}

1044 <div style={{

1045 width: 'min(240px, 35%)',

1046 minWidth: '180px',

1047 flexShrink: 0,

1048 borderRight: '1px solid var(--ce-border-subtle)',

1049 background: 'var(--ce-surface)',

1050 display: 'flex',

1051 flexDirection: 'column'

1052 }}>

1053 <div style={{

1054 padding: '8px 8px 4px',

1055 borderBottom: '1px solid var(--ce-border-subtle)',

1056 display: 'flex',

1057 gap: '4px'

1058 }}>

1059 {['project', 'global'].map(root => <button key={root} onClick={() => switchRoot(root)} style={{

1060 flex: 1,

1061 padding: '6px 0',

1062 borderRadius: '6px',

1063 border: 'none',

1064 cursor: 'pointer',

1065 fontFamily: 'var(--ce-mono)',

1066 fontSize: '11.5px',

1067 background: activeRoot === root ? 'var(--ce-accent-bg)' : 'transparent',

1068 color: activeRoot === root ? 'var(--ce-accent)' : 'var(--ce-text-4)',

1069 fontWeight: activeRoot === root ? 600 : 430

1070 }}>

1071 {root === 'project' ? 'Project' : 'Global (~/)'}

1072 </button>)}

1073 <button onClick={toggleAllFolders} title={allExpanded ? 'Collapse all' : 'Expand all'} style={{

1074 ...iconBtn,

1075 fontSize: 11

1076 }}>

1077 {allExpanded ? '⊟' : '⊞'}

1078 </button>

1079 <button onClick={toggleFullscreen} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} style={{

1080 ...iconBtn,

1081 fontSize: 13

1082 }}>

1083 {isFullscreen ? '⤡' : '⛶'}

1084 </button>

1085 </div>

1086 <div role="tree" aria-label="Configuration files" tabIndex={0} onKeyDown={onTreeKeyDown} style={{

1087 padding: '6px 0',

1088 overflowY: 'auto',

1089 flex: 1,

1090 outline: 'none'

1091 }}>

1092 {tree.children.map(node => renderNode(node, 0))}

1093 </div>

1094 </div>

1095 

1096 {}

1097 <div style={{

1098 flex: 1,

1099 minWidth: 0,

1100 padding: '20px 24px',

1101 minHeight: '400px',

1102 overflowY: 'auto'

1103 }}>

1104 <span aria-live="polite" style={{

1105 position: 'absolute',

1106 width: 1,

1107 height: 1,

1108 overflow: 'hidden',

1109 clip: 'rect(0 0 0 0)'

1110 }}>{selected.label} selected</span>

1111 {}

1112 <div style={{

1113 fontFamily: 'var(--ce-mono)',

1114 fontSize: '11px',

1115 color: 'var(--ce-text-4)',

1116 marginBottom: '10px',

1117 cursor: 'default'

1118 }}>

1119 {selected.path.map((seg, i) => <span key={i}>

1120 <span style={{

1121 color: i === selected.path.length - 1 ? 'var(--ce-accent)' : 'var(--ce-text-4)'

1122 }}>{seg.replace(/\/$/, '')}</span>

1123 {i < selected.path.length - 1 && <span style={{

1124 color: 'var(--ce-sep)'

1125 }}> / </span>}

1126 </span>)}

1127 </div>

1128 

1129 {}

1130 <div style={{

1131 display: 'flex',

1132 alignItems: 'flex-start',

1133 gap: '10px',

1134 marginBottom: '10px'

1135 }}>

1136 <span style={{

1137 flexShrink: 0,

1138 display: 'flex'

1139 }}>{renderIcon(selected.icon, selected.color, 24)}</span>

1140 <div style={{

1141 flex: 1,

1142 minWidth: 0

1143 }}>

1144 <div style={{

1145 fontSize: '22px',

1146 fontWeight: 600,

1147 color: 'var(--ce-text)',

1148 letterSpacing: '-0.3px',

1149 lineHeight: '26px'

1150 }}>{selected.label}</div>

1151 {selected.oneLiner && <div style={{

1152 fontSize: '15px',

1153 color: 'var(--ce-text-3)',

1154 marginTop: '3px'

1155 }}>{selected.oneLiner}</div>}

1156 </div>

1157 <div style={{

1158 display: 'flex',

1159 gap: '4px',

1160 flexShrink: 0

1161 }}>

1162 {[selected.autogen && 'autogen', selected.badge].filter(Boolean).map(k => {

1163 const s = BADGE_STYLES[k];

1164 if (!s) return null;

1165 return <span key={k} style={{

1166 fontFamily: 'var(--ce-mono)',

1167 fontSize: '10px',

1168 fontWeight: 600,

1169 textTransform: 'uppercase',

1170 letterSpacing: '0.3px',

1171 padding: '2px 6px',

1172 borderRadius: '4px',

1173 background: s.bg,

1174 color: s.color,

1175 border: `0.5px solid ${s.border}`

1176 }}>{s.label}</span>;

1177 })}

1178 </div>

1179 </div>

1180 

1181 {}

1182 {selected.note && <div style={{

1183 padding: '10px 12px',

1184 borderRadius: '8px',

1185 marginBottom: '14px',

1186 background: 'rgba(217,119,87,0.06)',

1187 border: '1px solid rgba(217,119,87,0.2)',

1188 borderLeft: '3px solid var(--ce-accent)',

1189 fontSize: '15px',

1190 color: 'var(--ce-text-2)',

1191 lineHeight: 1.6

1192 }}>

1193 {selected.note}

1194 </div>}

1195 

1196 {}

1197 {selected.when && <div style={{

1198 padding: '8px 12px',

1199 borderRadius: '6px',

1200 background: 'rgba(106,155,204,0.06)',

1201 border: '0.5px solid rgba(106,155,204,0.12)',

1202 fontSize: '15px',

1203 color: 'var(--ce-when-text)',

1204 marginBottom: '16px'

1205 }}>

1206 <div style={{

1207 fontSize: '10px',

1208 fontWeight: 700,

1209 textTransform: 'uppercase',

1210 letterSpacing: '0.4px',

1211 opacity: 0.65,

1212 marginBottom: '3px'

1213 }}>When it loads</div>

1214 <div style={{

1215 fontWeight: 500

1216 }}>{selected.when}</div>

1217 </div>}

1218 

1219 {}

1220 {selected.description && <div style={{

1221 fontSize: '16px',

1222 color: 'var(--ce-text-2)',

1223 lineHeight: 1.65,

1224 marginBottom: '16px'

1225 }}>

1226 {Array.isArray(selected.description) ? selected.description.map((para, i) => <div key={i} style={{

1227 marginBottom: i < selected.description.length - 1 ? '12px' : 0

1228 }}>{para}</div>) : selected.description}

1229 </div>}

1230 

1231 {}

1232 {selected.contains && selected.contains.length > 0 && <div style={{

1233 marginBottom: '16px'

1234 }}>

1235 <div style={{

1236 fontSize: '11px',

1237 fontWeight: 700,

1238 color: 'var(--ce-text-4)',

1239 textTransform: 'uppercase',

1240 letterSpacing: '0.4px',

1241 marginBottom: '8px'

1242 }}>Common keys</div>

1243 {selected.contains.map((item, i) => <div key={i} style={{

1244 display: 'flex',

1245 gap: '7px',

1246 fontSize: '15px',

1247 color: 'var(--ce-text-2)',

1248 lineHeight: 1.5,

1249 marginBottom: '5px'

1250 }}>

1251 <span style={{

1252 fontSize: '7px',

1253 color: 'var(--ce-text-4)',

1254 marginTop: '6px'

1255 }}>●</span>

1256 <span>{item}</span>

1257 </div>)}

1258 </div>}

1259 

1260 {}

1261 {selected.tips && selected.tips.length > 0 && <div style={{

1262 padding: '12px 14px',

1263 borderRadius: '8px',

1264 background: 'var(--ce-surface)',

1265 border: '1px solid var(--ce-border-subtle)',

1266 marginBottom: '16px'

1267 }}>

1268 <div style={{

1269 fontSize: '11px',

1270 fontWeight: 700,

1271 color: 'var(--ce-accent)',

1272 textTransform: 'uppercase',

1273 letterSpacing: '0.4px',

1274 marginBottom: '6px'

1275 }}>Tips</div>

1276 {selected.tips.map((tip, i) => <div key={i} style={{

1277 display: 'flex',

1278 gap: '7px',

1279 fontSize: '14.5px',

1280 color: 'var(--ce-text-2)',

1281 marginBottom: i < selected.tips.length - 1 ? '5px' : 0

1282 }}>

1283 <span style={{

1284 fontSize: '7px',

1285 color: 'var(--ce-accent)',

1286 marginTop: '6px'

1287 }}>●</span>

1288 <span>{tip}</span>

1289 </div>)}

1290 </div>}

1291 

1292 {}

1293 {selected.example && <div style={{

1294 marginBottom: '16px'

1295 }}>

1296 {selected.exampleIntro && <div style={{

1297 fontSize: '15px',

1298 color: 'var(--ce-text-2)',

1299 lineHeight: 1.6,

1300 marginBottom: '10px'

1301 }}>

1302 {selected.exampleIntro}

1303 </div>}

1304 <div style={{

1305 display: 'flex',

1306 justifyContent: 'space-between',

1307 alignItems: 'center',

1308 padding: '6px 10px',

1309 background: 'var(--ce-code-header)',

1310 border: '1px solid var(--ce-border)',

1311 borderRadius: '8px 8px 0 0'

1312 }}>

1313 <span style={{

1314 fontFamily: 'var(--ce-mono)',

1315 fontSize: '11px',

1316 fontWeight: 600,

1317 color: 'var(--ce-text-3)'

1318 }}>{selected.label}</span>

1319 <button onClick={() => copyExample(selected.id, selected.example)} style={{

1320 padding: '3px 8px',

1321 borderRadius: '4px',

1322 fontSize: '11px',

1323 fontWeight: 600,

1324 cursor: 'pointer',

1325 transition: 'all 0.15s',

1326 background: isCopied ? 'rgba(85,138,66,0.08)' : 'var(--ce-code-header)',

1327 border: isCopied ? '0.5px solid rgba(85,138,66,0.2)' : '0.5px solid var(--ce-border)',

1328 color: isCopied ? '#558A42' : 'var(--ce-text-3)'

1329 }}>

1330 {isCopied ? '✓ Copied' : 'Copy'}

1331 </button>

1332 </div>

1333 <pre style={{

1334 margin: 0,

1335 padding: '12px 14px',

1336 background: 'var(--ce-code-bg)',

1337 color: '#E8E6DC',

1338 fontFamily: 'var(--ce-mono)',

1339 fontSize: '13px',

1340 lineHeight: 1.65,

1341 borderRadius: '0 0 8px 8px',

1342 overflowX: 'auto',

1343 whiteSpace: 'pre'

1344 }}>{selected.example}</pre>

1345 </div>}

1346 

1347 {}

1348 {selected.docsLink && <a href={selected.docsLink} style={{

1349 display: 'inline-flex',

1350 padding: '5px 12px',

1351 borderRadius: '6px',

1352 background: 'var(--ce-accent-bg)',

1353 border: '1px solid var(--ce-accent-border)',

1354 color: 'var(--ce-accent)',

1355 fontSize: '12px',

1356 fontWeight: 600,

1357 textDecoration: 'none'

1358 }}>Full docs →</a>}

1359 

1360 {}

1361 {selected.children && selected.children.length > 0 && <div style={{

1362 marginTop: '20px'

1363 }}>

1364 <div style={{

1365 fontSize: '11px',

1366 fontWeight: 700,

1367 color: 'var(--ce-text-4)',

1368 textTransform: 'uppercase',

1369 letterSpacing: '0.4px',

1370 marginBottom: '8px'

1371 }}>Contents</div>

1372 <div style={{

1373 display: 'flex',

1374 flexDirection: 'column',

1375 gap: '4px'

1376 }}>

1377 {selected.children.map(child => <button key={child.id} onClick={() => selectNode(child)} style={{

1378 display: 'flex',

1379 alignItems: 'center',

1380 gap: '8px',

1381 padding: '6px 8px',

1382 width: '100%',

1383 background: 'var(--ce-surface)',

1384 borderRadius: '6px',

1385 border: 'none',

1386 cursor: 'pointer',

1387 textAlign: 'left',

1388 transition: 'background 0.1s'

1389 }} onMouseEnter={e => e.currentTarget.style.background = 'var(--ce-surface-hover)'} onMouseLeave={e => e.currentTarget.style.background = 'var(--ce-surface)'}>

1390 {renderIcon(child.icon, child.color, 13)}

1391 <span style={{

1392 fontFamily: 'var(--ce-mono)',

1393 fontSize: '12px',

1394 color: 'var(--ce-text-2)'

1395 }}>{child.label}</span>

1396 {child.oneLiner && <span style={{

1397 fontSize: '11px',

1398 color: 'var(--ce-text-4)',

1399 overflow: 'hidden',

1400 textOverflow: 'ellipsis',

1401 whiteSpace: 'nowrap'

1402 }}>{child.oneLiner}</span>}

1403 </button>)}

1404 </div>

1405 </div>}

1406 </div>

1407 </div>

1408 </>;

1409};

1410 

1411Claude Code legge istruzioni, impostazioni, skills, subagents e memoria dalla tua directory di progetto e da `~/.claude` nella tua home directory. Esegui il commit dei file di progetto su git per condividerli con il tuo team; i file in `~/.claude` sono configurazioni personali che si applicano a tutti i tuoi progetti.

1412 

1413Su Windows, `~/.claude` si risolve in `%USERPROFILE%\.claude`. Se imposti [`CLAUDE_CONFIG_DIR`](/it/env-vars), ogni percorso `~/.claude` in questa pagina si trova invece in quella directory.

1414 

1415La maggior parte degli utenti modifica solo `CLAUDE.md` e `settings.json`. Il resto della directory è facoltativo: aggiungi skills, rules o subagents secondo le tue necessità.

1416 

1417## Esplora la directory

1418 

1419Fai clic sui file nell'albero per vedere cosa fa ciascuno, quando si carica e un esempio.

1420 

1421<ClaudeExplorer />

1422 

1423## Cosa non è mostrato

1424 

1425L'explorer copre i file che crei e modifichi. Alcuni file correlati si trovano altrove:

1426 

1427| File | Posizione | Scopo |

1428| ----------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1429| `managed-settings.json` | A livello di sistema, varia in base al sistema operativo | Impostazioni applicate dall'azienda che non puoi ignorare. Vedi [impostazioni gestite dal server](/it/server-managed-settings). |

1430| `CLAUDE.local.md` | Radice del progetto | Le tue preferenze private per questo progetto, caricate insieme a CLAUDE.md. Crealo manualmente e aggiungilo a `.gitignore`. |

1431| Plugin installati | `~/.claude/plugins` | Marketplace clonati, versioni plugin installate e dati per plugin, gestiti dai comandi `claude plugin`. Le versioni orfane vengono eliminate 7 giorni dopo un aggiornamento o disinstallazione del plugin. Vedi [plugin caching](/it/plugins-reference#plugin-caching-and-file-resolution). |

1432 

1433`~/.claude` contiene anche dati che Claude Code scrive mentre lavori: trascrizioni, cronologia dei prompt, snapshot dei file, cache e log. Vedi [dati dell'applicazione](#application-data) di seguito.

1434 

1435## Scegli il file giusto

1436 

1437Diversi tipi di personalizzazione si trovano in file diversi. Usa questa tabella per trovare dove appartiene una modifica.

1438 

1439| Vuoi | Modifica | Ambito | Riferimento |

1440| :---------------------------------------------------------- | :-------------------------------------- | :----------------- | :------------------------------------------------- |

1441| Dare a Claude il contesto del progetto e le convenzioni | `CLAUDE.md` | progetto o globale | [Memory](/it/memory) |

1442| Consentire o bloccare specifiche chiamate di strumenti | `settings.json` `permissions` o `hooks` | progetto o globale | [Permissions](/it/permissions), [Hooks](/it/hooks) |

1443| Eseguire uno script prima o dopo le chiamate di strumenti | `settings.json` `hooks` | progetto o globale | [Hooks](/it/hooks) |

1444| Impostare variabili di ambiente per la sessione | `settings.json` `env` | progetto o globale | [Settings](/it/settings#available-settings) |

1445| Mantenere gli override personali fuori da git | `settings.local.json` | solo progetto | [Settings scopes](/it/settings#settings-files) |

1446| Aggiungere un prompt o una capacità che invochi con `/name` | `skills/<name>/SKILL.md` | progetto o globale | [Skills](/it/skills) |

1447| Definire un subagent specializzato con i suoi strumenti | `agents/*.md` | progetto o globale | [Subagents](/it/sub-agents) |

1448| Connettere strumenti esterni su MCP | `.mcp.json` | solo progetto | [MCP](/it/mcp) |

1449| Cambiare il modo in cui Claude formatta le risposte | `output-styles/*.md` | progetto o globale | [Output styles](/it/output-styles) |

1450 

1451## Riferimento dei file

1452 

1453Questa tabella elenca ogni file che l'explorer copre. I file con ambito di progetto si trovano nel tuo repository sotto `.claude/` (o alla radice per `CLAUDE.md`, `.mcp.json` e `.worktreeinclude`). I file con ambito globale si trovano in `~/.claude/` e si applicano a tutti i progetti.

1454 

1455<Note>

1456 Diverse cose possono ignorare quello che metti in questi file:

1457 

1458 * Le [impostazioni gestite](/it/server-managed-settings) distribuite dalla tua organizzazione hanno la precedenza su tutto

1459 * I flag CLI come `--permission-mode` o `--settings` ignorano `settings.json` per quella sessione

1460 * Alcune variabili di ambiente hanno la precedenza sulla loro impostazione equivalente, ma questo varia: controlla il [riferimento delle variabili di ambiente](/it/env-vars) per ciascuna

1461 

1462 Vedi [precedenza delle impostazioni](/it/settings#settings-precedence) per l'ordine completo.

1463</Note>

1464 

1465Fai clic su un nome di file per aprire quel nodo nell'explorer sopra.

1466 

1467| File | Ambito | Commit | Cosa fa | Riferimento |

1468| --------------------------------------------------- | ------------------ | ------ | ----------------------------------------------------------------------------- | -------------------------------------------------------------------- |

1469| [`CLAUDE.md`](#ce-claude-md) | Progetto e globale | ✓ | Istruzioni caricate ogni sessione | [Memory](/it/memory) |

1470| [`rules/*.md`](#ce-rules) | Progetto e globale | ✓ | Istruzioni con ambito di argomento, facoltativamente controllate dal percorso | [Rules](/it/memory#organize-rules-with-claude/rules/) |

1471| [`settings.json`](#ce-settings-json) | Progetto e globale | ✓ | Permessi, hooks, variabili di ambiente, impostazioni predefinite del modello | [Settings](/it/settings) |

1472| [`settings.local.json`](#ce-settings-local-json) | Solo progetto | | I tuoi override personali, auto-gitignored | [Settings scopes](/it/settings#settings-files) |

1473| [`.mcp.json`](#ce-mcp-json) | Solo progetto | ✓ | Server MCP condivisi dal team | [MCP scopes](/it/mcp#mcp-installation-scopes) |

1474| [`.worktreeinclude`](#ce-worktreeinclude) | Solo progetto | ✓ | File ignorati da git da copiare nei nuovi worktrees | [Worktrees](/it/common-workflows#copy-gitignored-files-to-worktrees) |

1475| [`skills/<name>/SKILL.md`](#ce-skills) | Progetto e globale | ✓ | Prompt riutilizzabili invocati con `/name` o auto-invocati | [Skills](/it/skills) |

1476| [`commands/*.md`](#ce-commands) | Progetto e globale | ✓ | Prompt a file singolo; stesso meccanismo delle skills | [Skills](/it/skills) |

1477| [`output-styles/*.md`](#ce-output-styles) | Progetto e globale | ✓ | Sezioni di prompt di sistema personalizzate | [Output styles](/it/output-styles) |

1478| [`agents/*.md`](#ce-agents) | Progetto e globale | ✓ | Definizioni di subagent con il loro prompt e strumenti | [Subagents](/it/sub-agents) |

1479| [`agent-memory/<name>/`](#ce-agent-memory) | Progetto e globale | ✓ | Memoria persistente per i subagents | [Persistent memory](/it/sub-agents#enable-persistent-memory) |

1480| [`~/.claude.json`](#ce-claude-json) | Solo globale | | Stato dell'app, OAuth, toggle dell'interfaccia utente, server MCP personali | [Global config](/it/settings#global-config-settings) |

1481| [`projects/<project>/memory/`](#ce-global-projects) | Solo globale | | Auto memory: note di Claude a se stesso tra le sessioni | [Auto memory](/it/memory#auto-memory) |

1482| [`keybindings.json`](#ce-keybindings) | Solo globale | | Scorciatoie da tastiera personalizzate | [Keybindings](/it/keybindings) |

1483| [`themes/*.json`](#ce-themes) | Solo globale | | Temi di colore personalizzati | [Custom themes](/it/terminal-config#create-a-custom-theme) |

1484 

1485## Risolvi i problemi di configurazione

1486 

1487Se un'impostazione, un hook o un file non sta avendo effetto, vedi [Debug della tua configurazione](/it/debug-your-config) per i comandi di ispezione e una tabella di ricerca per sintomi.

1488 

1489## Dati dell'applicazione

1490 

1491Oltre alla configurazione che crei, `~/.claude` contiene dati che Claude Code scrive durante le sessioni. Questi file sono in testo semplice. Qualsiasi cosa che passa attraverso uno strumento finisce in una trascrizione su disco: contenuti di file, output di comandi, testo incollato.

1492 

1493### Puliti automaticamente

1494 

1495I file nei percorsi di seguito vengono eliminati all'avvio una volta che sono più vecchi di [`cleanupPeriodDays`](/it/settings#available-settings). L'impostazione predefinita è 30 giorni.

1496 

1497| Percorso sotto `~/.claude/` | Contenuti |

1498| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |

1499| `projects/<project>/<session>.jsonl` | Trascrizione della conversazione completa: ogni messaggio, chiamata di strumento e risultato dello strumento |

1500| `projects/<project>/<session>/tool-results/` | Output di strumenti di grandi dimensioni versati in file separati |

1501| `file-history/<session>/` | Snapshot pre-modifica dei file che Claude ha modificato, utilizzati per il [ripristino del checkpoint](/it/checkpointing) |

1502| `plans/` | File di piano scritti durante la [plan mode](/it/permission-modes#analyze-before-you-edit-with-plan-mode) |

1503| `debug/` | Log di debug per sessione, scritti solo quando inizi con `--debug` o esegui `/debug` |

1504| `paste-cache/`, `image-cache/` | Contenuti di incollamenti di grandi dimensioni e immagini allegate |

1505| `session-env/` | Metadati di ambiente per sessione |

1506| `tasks/` | Elenchi di attività per sessione scritti dagli strumenti di attività |

1507| `shell-snapshots/` | Ambiente shell acquisito utilizzato dallo strumento Bash. Rimosso all'uscita pulita. La pulizia cancella qualsiasi cosa rimasta dopo un arresto anomalo. |

1508| `backups/` | Copie con timestamp di `~/.claude.json` prese prima delle migrazioni di configurazione |

1509 

1510### Mantenuti fino a quando non li elimini

1511 

1512I seguenti percorsi non sono coperti dalla pulizia automatica e persistono indefinitamente.

1513 

1514| Percorso sotto `~/.claude/` | Contenuti |

1515| --------------------------- | --------------------------------------------------------------------------------------------------------------- |

1516| `history.jsonl` | Ogni prompt che hai digitato, con timestamp e percorso del progetto. Utilizzato per il richiamo con freccia su. |

1517| `stats-cache.json` | Conteggi aggregati di token e costi mostrati da `/cost` |

1518| `todos/` | Elenchi di attività legacy per sessione. Non più scritti dalle versioni correnti; sicuro da eliminare. |

1519 

1520Altri piccoli file di cache e lock appaiono a seconda delle funzioni che utilizzi e sono sicuri da eliminare.

1521 

1522### Archiviazione in testo semplice

1523 

1524Le trascrizioni e la cronologia non sono crittografate a riposo. I permessi dei file del sistema operativo sono l'unica protezione. Se uno strumento legge un file `.env` o un comando stampa una credenziale, quel valore viene scritto in `projects/<project>/<session>.jsonl`. Per ridurre l'esposizione:

1525 

1526* Abbassa `cleanupPeriodDays` per accorciare il tempo in cui le trascrizioni vengono conservate

1527* Imposta la variabile di ambiente [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/it/env-vars) per saltare la scrittura di trascrizioni e cronologia dei prompt in qualsiasi modalità. In modalità non interattiva, puoi invece passare `--no-session-persistence` insieme a `-p`, o impostare `persistSession: false` in Agent SDK.

1528* Usa le [regole di permesso](/it/permissions) per negare le letture dei file di credenziali

1529 

1530### Cancella dati locali

1531 

1532Esegui `claude project purge` per eliminare lo stato che Claude Code mantiene per un progetto:

1533 

1534* Trascrizioni e memoria automatica sotto `projects/`

1535* Voci per sessione `tasks/`, `debug/` e `file-history/`

1536* Righe di prompt corrispondenti in `history.jsonl`

1537* La voce del progetto in `~/.claude.json`

1538 

1539Il comando stampa il piano di eliminazione completo e chiede conferma prima di rimuovere qualsiasi cosa.

1540 

1541Visualizza l'anteprima del piano senza eliminare nulla:

1542 

1543```bash theme={null}

1544claude project purge ~/work/my-repo --dry-run

1545```

1546 

1547Elimina con un singolo prompt di conferma:

1548 

1549```bash theme={null}

1550claude project purge ~/work/my-repo

1551```

1552 

1553Ometti il percorso per scegliere un progetto da un elenco interattivo.

1554 

1555Salta il prompt di conferma per l'uso negli script:

1556 

1557```bash theme={null}

1558claude project purge ~/work/my-repo --yes

1559```

1560 

1561Passa `--all` invece di un percorso per eliminare lo stato per ogni progetto contemporaneamente, il che elimina `history.jsonl` completamente piuttosto che filtrarlo. Passa `-i` per scorrere il piano di eliminazione un elemento alla volta.

1562 

1563Il comando lascia `shell-snapshots/` e `backups/` da soli perché non sono limitati al progetto, e avverte su di essi nell'output del piano. Esce con stato 1 se nessuno stato corrisponde al percorso specificato.

1564 

1565Puoi anche eliminare manualmente uno qualsiasi dei percorsi di dati dell'applicazione sopra. Le nuove sessioni non sono interessate. La tabella di seguito mostra cosa perdi per le sessioni passate.

1566 

1567| Elimina | Perdi |

1568| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |

1569| `~/.claude/projects/` | Ripresa, continuazione e rewind per le sessioni passate |

1570| `~/.claude/history.jsonl` | Richiamo del prompt con freccia su |

1571| `~/.claude/file-history/` | Ripristino del checkpoint per le sessioni passate |

1572| `~/.claude/stats-cache.json` | Totali storici mostrati da `/cost` |

1573| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/paste-cache/`, `~/.claude/image-cache/`, `~/.claude/session-env/`, `~/.claude/tasks/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Nulla di visibile all'utente |

1574| `~/.claude/todos/` | Nulla. Directory legacy non scritta dalle versioni correnti. |

1575 

1576Non eliminare `~/.claude.json`, `~/.claude/settings.json` o `~/.claude/plugins/`: contengono la tua autenticazione, preferenze e plugin installati.

1577 

1578## Risorse correlate

1579 

1580* [Gestisci la memoria di Claude](/it/memory): scrivi e organizza CLAUDE.md, rules e auto memory

1581* [Configura le impostazioni](/it/settings): imposta permessi, hooks, variabili di ambiente e impostazioni predefinite del modello

1582* [Crea skills](/it/skills): costruisci prompt e flussi di lavoro riutilizzabili

1583* [Configura i subagents](/it/sub-agents): definisci agenti specializzati con il loro contesto

cli-reference.md +129 −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# Riferimento CLI

6 

7> Riferimento completo per l'interfaccia da riga di comando di Claude Code, inclusi comandi e flag.

8 

9## Comandi CLI

10 

11Puoi avviare sessioni, inviare contenuti tramite pipe, riprendere conversazioni e gestire gli aggiornamenti con questi comandi:

12 

13| Comando | Descrizione | Esempio |

14| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |

15| `claude` | Avvia sessione interattiva | `claude` |

16| `claude "query"` | Avvia sessione interattiva con prompt iniziale | `claude "explain this project"` |

17| `claude -p "query"` | Esegui query tramite SDK, quindi esci | `claude -p "explain this function"` |

18| `cat file \| claude -p "query"` | Elabora contenuto inviato tramite pipe | `cat logs.txt \| claude -p "explain"` |

19| `claude -c` | Continua la conversazione più recente nella directory corrente | `claude -c` |

20| `claude -c -p "query"` | Continua tramite SDK | `claude -c -p "Check for type errors"` |

21| `claude -r "<session>" "query"` | Riprendi sessione per ID o nome | `claude -r "auth-refactor" "Finish this PR"` |

22| `claude update` | Aggiorna alla versione più recente | `claude update` |

23| `claude install [version]` | Installa o reinstalla il binario nativo. Accetta una versione come `2.1.118`, oppure `stable` o `latest`. Vedi [Installa una versione specifica](/it/setup#install-a-specific-version) | `claude install stable` |

24| `claude auth login` | Accedi al tuo account Anthropic. Usa `--email` per pre-compilare il tuo indirizzo email, `--sso` per forzare l'autenticazione SSO e `--console` per accedere con Anthropic Console per la fatturazione dell'utilizzo dell'API invece di un abbonamento Claude | `claude auth login --console` |

25| `claude auth logout` | Esci dal tuo account Anthropic | `claude auth logout` |

26| `claude auth status` | Mostra lo stato di autenticazione come JSON. Usa `--text` per output leggibile dall'uomo. Esce con codice 0 se connesso, 1 se no | `claude auth status` |

27| `claude agents` | Elenca tutti i [subagents](/it/sub-agents) configurati, raggruppati per fonte | `claude agents` |

28| `claude auto-mode defaults` | Stampa le regole del classificatore [auto mode](/it/permission-modes#eliminate-prompts-with-auto-mode) integrate come JSON. Usa `claude auto-mode config` per visualizzare la tua configurazione effettiva con le impostazioni applicate | `claude auto-mode defaults > rules.json` |

29| `claude mcp` | Configura server Model Context Protocol (MCP) | Vedi la [documentazione MCP di Claude Code](/it/mcp). |

30| `claude plugin` | Gestisci i [plugins](/it/plugins) di Claude Code. Alias: `claude plugins`. Vedi il [riferimento plugin](/it/plugins-reference#cli-commands-reference) per i sottocomandi | `claude plugin install code-review@claude-plugins-official` |

31| `claude project purge [path]` | Elimina tutto lo stato locale di Claude Code per un progetto: trascrizioni, elenchi di attività, log di debug, cronologia delle modifiche ai file, righe della cronologia dei prompt e la voce del progetto in `~/.claude.json`. Ometti `[path]` per scegliere da un elenco interattivo. Flag: `--dry-run` per visualizzare un'anteprima, `-y`/`--yes` per saltare la conferma, `-i`/`--interactive` per confermare ogni elemento, `--all` per ogni progetto. Vedi [Cancella dati locali](/it/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |

32| `claude remote-control` | Avvia un server [Remote Control](/it/remote-control) per controllare Claude Code da Claude.ai o dall'app Claude. Viene eseguito in modalità server (nessuna sessione interattiva locale). Vedi [Flag modalità server](/it/remote-control#start-a-remote-control-session) | `claude remote-control --name "My Project"` |

33| `claude setup-token` | Genera un token OAuth di lunga durata per CI e script. Stampa il token nel terminale senza salvarlo. Richiede un abbonamento Claude. Vedi [Genera un token di lunga durata](/it/authentication#generate-a-long-lived-token) | `claude setup-token` |

34| `claude ultrareview [target]` | Esegui [ultrareview](/it/ultrareview#run-ultrareview-non-interactively) in modo non interattivo. Stampa i risultati su stdout e esce con 0 in caso di successo o 1 in caso di errore. Usa `--json` per il payload grezzo e `--timeout <minutes>` per sovrascrivere il valore predefinito di 30 minuti | `claude ultrareview 1234 --json` |

35 

36Se digiti male un sottocomando, Claude Code suggerisce la corrispondenza più vicina e esce senza avviare una sessione. Ad esempio, `claude udpate` stampa `Did you mean claude update?`.

37 

38## Flag CLI

39 

40Personalizza il comportamento di Claude Code con questi flag da riga di comando. `claude --help` non elenca ogni flag, quindi l'assenza di un flag da `--help` non significa che non sia disponibile.

41 

42| Flag | Descrizione | Esempio |

43| :---------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- |

44| `--add-dir` | Aggiungi directory di lavoro aggiuntive per Claude per leggere e modificare file. Concede l'accesso ai file; la maggior parte della configurazione `.claude/` [non viene scoperta](/it/permissions#additional-directories-grant-file-access-not-configuration) da queste directory. Convalida che ogni percorso esista come directory | `claude --add-dir ../apps ../lib` |

45| `--agent` | Specifica un agent per la sessione corrente (sostituisce l'impostazione `agent`) | `claude --agent my-custom-agent` |

46| `--agents` | Definisci subagents personalizzati dinamicamente tramite JSON. Utilizza gli stessi nomi di campo del [frontmatter](/it/sub-agents#supported-frontmatter-fields) dei subagents, più un campo `prompt` per le istruzioni dell'agent | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

47| `--allow-dangerously-skip-permissions` | Aggiungi `bypassPermissions` al ciclo della modalità `Shift+Tab` senza iniziare in essa. Ti consente di iniziare in una modalità diversa come `plan` e passare a `bypassPermissions` in seguito. Vedi [modalità di autorizzazione](/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |

48| `--allowedTools` | Strumenti che si eseguono senza richiedere l'autorizzazione. Vedi [sintassi delle regole di autorizzazione](/it/settings#permission-rule-syntax) per la corrispondenza dei pattern. Per limitare quali strumenti sono disponibili, usa `--tools` invece | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

49| `--append-system-prompt` | Aggiungi testo personalizzato alla fine del prompt di sistema predefinito | `claude --append-system-prompt "Always use TypeScript"` |

50| `--append-system-prompt-file` | Carica testo di prompt di sistema aggiuntivo da un file e aggiungi al prompt predefinito | `claude --append-system-prompt-file ./extra-rules.txt` |

51| `--bare` | Modalità minima: salta l'auto-discovery di hooks, skills, plugins, server MCP, memoria automatica e CLAUDE.md in modo che le chiamate con script si avviino più velocemente. Claude ha accesso a strumenti Bash, lettura file e modifica file. Imposta [`CLAUDE_CODE_SIMPLE`](/it/env-vars). Vedi [modalità bare](/it/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |

52| `--betas` | Intestazioni beta da includere nelle richieste API (solo utenti con chiave API) | `claude --betas interleaved-thinking` |

53| `--channels` | (Anteprima di ricerca) Server MCP le cui notifiche di [channel](/it/channels) Claude dovrebbe ascoltare in questa sessione. Elenco separato da spazi di voci `plugin:<name>@<marketplace>`. Richiede autenticazione Claude.ai | `claude --channels plugin:my-notifier@my-marketplace` |

54| `--chrome` | Abilita [integrazione browser Chrome](/it/chrome) per l'automazione web e i test | `claude --chrome` |

55| `--continue`, `-c` | Carica la conversazione più recente nella directory corrente. Include sessioni che hanno aggiunto questa directory con `/add-dir` | `claude --continue` |

56| `--dangerously-load-development-channels` | Abilita [channels](/it/channels-reference#test-during-the-research-preview) che non sono nell'elenco di approvazione, per lo sviluppo locale. Accetta voci `plugin:<name>@<marketplace>` e `server:<name>`. Richiede conferma | `claude --dangerously-load-development-channels server:webhook` |

57| `--dangerously-skip-permissions` | Salta i prompt di autorizzazione. Equivalente a `--permission-mode bypassPermissions`. Vedi [modalità di autorizzazione](/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) per quello che questo fa e non fa saltare | `claude --dangerously-skip-permissions` |

58| `--debug` | Abilita la modalità debug con filtro di categoria opzionale (ad esempio, `"api,hooks"` o `"!statsig,!file"`) | `claude --debug "api,mcp"` |

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

60| `--disable-slash-commands` | Disabilita tutti gli skills e i comandi per questa sessione | `claude --disable-slash-commands` |

61| `--disallowedTools` | Strumenti che vengono rimossi dal contesto del modello e non possono essere utilizzati | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

62| `--effort` | Imposta il [livello di sforzo](/it/model-config#adjust-effort-level) per la sessione corrente. Opzioni: `low`, `medium`, `high`, `xhigh`, `max`; i livelli disponibili dipendono dal modello. Limitato alla sessione e non persiste nelle impostazioni | `claude --effort high` |

63| `--enable-auto-mode` | {/* max-version: 2.1.110 */}Rimosso in v2.1.111. Auto mode è ora nel ciclo `Shift+Tab` per impostazione predefinita; usa `--permission-mode auto` per iniziare in esso | `claude --permission-mode auto` |

64| `--exclude-dynamic-system-prompt-sections` | Sposta le sezioni per macchina dal prompt di sistema (directory di lavoro, informazioni sull'ambiente, percorsi di memoria, stato git) nel primo messaggio dell'utente. Migliora il riutilizzo della prompt-cache tra diversi utenti e macchine che eseguono lo stesso compito. Si applica solo con il prompt di sistema predefinito; ignorato quando `--system-prompt` o `--system-prompt-file` è impostato. Usa con `-p` per carichi di lavoro con script e multi-utente | `claude -p --exclude-dynamic-system-prompt-sections "query"` |

65| `--fallback-model` | Abilita il fallback automatico al modello specificato quando il modello predefinito è sovraccarico (solo modalità print) | `claude -p --fallback-model sonnet "query"` |

66| `--fork-session` | Quando riprendi, crea un nuovo ID di sessione invece di riutilizzare l'originale (usa con `--resume` o `--continue`) | `claude --resume abc123 --fork-session` |

67| `--from-pr` | Riprendi sessioni collegate a una specifica pull request. Accetta un numero di PR, un URL di GitHub o GitHub Enterprise PR, un URL di merge request di GitLab o un URL di pull request di Bitbucket. Le sessioni vengono collegate automaticamente quando Claude crea la pull request | `claude --from-pr 123` |

68| `--ide` | Connettiti automaticamente all'IDE all'avvio se esattamente un IDE valido è disponibile | `claude --ide` |

69| `--init` | Esegui hook di [Setup](/it/hooks#setup) con il matcher `init` prima della sessione (solo modalità print) | `claude -p --init "query"` |

70| `--init-only` | Esegui hook di [Setup](/it/hooks#setup) e `SessionStart`, quindi esci senza avviare una conversazione | `claude --init-only` |

71| `--include-hook-events` | Includi tutti gli eventi del ciclo di vita degli hook nel flusso di output. Richiede `--output-format stream-json` | `claude -p --output-format stream-json --include-hook-events "query"` |

72| `--include-partial-messages` | Includi eventi di streaming parziali nell'output. Richiede `--print` e `--output-format stream-json` | `claude -p --output-format stream-json --include-partial-messages "query"` |

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

74| `--json-schema` | Ottieni output JSON convalidato corrispondente a uno JSON Schema dopo che l'agent completa il suo flusso di lavoro (solo modalità print, vedi [structured outputs](/it/agent-sdk/structured-outputs)) | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |

75| `--maintenance` | Esegui hook di [Setup](/it/hooks#setup) con il matcher `maintenance` prima della sessione (solo modalità print) | `claude -p --maintenance "query"` |

76| `--max-budget-usd` | Importo massimo in dollari da spendere nelle chiamate API prima di fermarsi (solo modalità print) | `claude -p --max-budget-usd 5.00 "query"` |

77| `--max-turns` | Limita il numero di turni agentici (solo modalità print). Esce con un errore quando il limite viene raggiunto. Nessun limite per impostazione predefinita | `claude -p --max-turns 3 "query"` |

78| `--mcp-config` | Carica server MCP da file JSON o stringhe (separati da spazi) | `claude --mcp-config ./mcp.json` |

79| `--model` | Imposta il modello per la sessione corrente con un alias per il modello più recente (`sonnet` o `opus`) o il nome completo di un modello | `claude --model claude-sonnet-4-6` |

80| `--name`, `-n` | Imposta un nome visualizzato per la sessione, mostrato in `/resume` e nel titolo del terminale. Puoi riprendere una sessione denominata con `claude --resume <name>`. <br /><br />[`/rename`](/it/commands) cambia il nome durante la sessione e lo mostra anche nella barra del prompt | `claude -n "my-feature-work"` |

81| `--no-chrome` | Disabilita [integrazione browser Chrome](/it/chrome) per questa sessione | `claude --no-chrome` |

82| `--no-session-persistence` | Disabilita la persistenza della sessione in modo che le sessioni non vengano salvate su disco e non possano essere riprese (solo modalità print) | `claude -p --no-session-persistence "query"` |

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

84| `--permission-mode` | Inizia in una [modalità di autorizzazione](/it/permission-modes) specificata. Accetta `default`, `acceptEdits`, `plan`, `auto`, `dontAsk` o `bypassPermissions`. Sostituisce `defaultMode` dai file di impostazioni | `claude --permission-mode plan` |

85| `--permission-prompt-tool` | Specifica uno strumento MCP per gestire i prompt di autorizzazione in modalità non interattiva | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

86| `--plugin-dir` | Carica plugin da una directory per questa sessione solo. Ogni flag accetta un percorso. Ripeti il flag per più directory: `--plugin-dir A --plugin-dir B` | `claude --plugin-dir ./my-plugins` |

87| `--print`, `-p` | Stampa la risposta senza modalità interattiva (vedi [documentazione Agent SDK](/it/agent-sdk/overview) per i dettagli di utilizzo programmatico) | `claude -p "query"` |

88| `--remote` | Crea una nuova [sessione web](/it/claude-code-on-the-web) su claude.ai con la descrizione dell'attività fornita | `claude --remote "Fix the login bug"` |

89| `--remote-control`, `--rc` | Avvia una sessione interattiva con [Remote Control](/it/remote-control#start-a-remote-control-session) abilitato in modo da poterla controllare anche da claude.ai o dall'app Claude. Facoltativamente passa un nome per la sessione | `claude --remote-control "My Project"` |

90| `--remote-control-session-name-prefix <prefix>` | Prefisso per i nomi di sessione [Remote Control](/it/remote-control) generati automaticamente quando non è impostato alcun nome esplicito. 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` |

91| `--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 --replay-user-messages` |

92| `--resume`, `-r` | Riprendi una sessione specifica per ID o nome, o mostra un selettore interattivo per scegliere una sessione. Include sessioni che hanno aggiunto questa directory con `/add-dir` | `claude --resume auth-refactor` |

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

94| `--setting-sources` | Elenco separato da virgole delle fonti di impostazioni da caricare (`user`, `project`, `local`) | `claude --setting-sources user,project` |

95| `--settings` | Percorso di un file JSON di impostazioni o una stringa JSON da cui caricare impostazioni aggiuntive | `claude --settings ./settings.json` |

96| `--strict-mcp-config` | Usa solo server MCP da `--mcp-config`, ignorando tutte le altre configurazioni MCP | `claude --strict-mcp-config --mcp-config ./mcp.json` |

97| `--system-prompt` | Sostituisci l'intero prompt di sistema con testo personalizzato | `claude --system-prompt "You are a Python expert"` |

98| `--system-prompt-file` | Carica il prompt di sistema da un file, sostituendo il prompt predefinito | `claude --system-prompt-file ./custom-prompt.txt` |

99| `--teleport` | Riprendi una [sessione web](/it/claude-code-on-the-web) nel tuo terminale locale | `claude --teleport` |

100| `--teammate-mode` | Imposta come i compagni di squadra del [team di agent](/it/agent-teams) vengono visualizzati: `auto` (predefinito), `in-process` o `tmux`. Vedi [Scegli una modalità di visualizzazione](/it/agent-teams#choose-a-display-mode) | `claude --teammate-mode in-process` |

101| `--tmux` | Crea una sessione tmux per il worktree. Richiede `--worktree`. Utilizza i riquadri nativi di iTerm2 quando disponibili; passa `--tmux=classic` per tmux tradizionale | `claude -w feature-auth --tmux` |

102| `--tools` | Limita quali strumenti integrati Claude può utilizzare. Usa `""` per disabilitare tutti, `"default"` per tutti, o nomi di strumenti come `"Bash,Edit,Read"` | `claude --tools "Bash,Edit,Read"` |

103| `--verbose` | Abilita la registrazione dettagliata, mostra l'output completo turno per turno | `claude --verbose` |

104| `--version`, `-v` | Restituisce il numero di versione | `claude -v` |

105| `--worktree`, `-w` | Avvia Claude in un [git worktree](/it/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) isolato in `<repo>/.claude/worktrees/<name>`. Se non viene fornito alcun nome, uno viene generato automaticamente | `claude -w feature-auth` |

106 

107### Flag del prompt di sistema

108 

109Claude Code fornisce quattro flag per personalizzare il prompt di sistema. Tutti e quattro funzionano sia in modalità interattiva che non interattiva.

110 

111| Flag | Comportamento | Esempio |

112| :---------------------------- | :--------------------------------------------------- | :------------------------------------------------------ |

113| `--system-prompt` | Sostituisce l'intero prompt predefinito | `claude --system-prompt "You are a Python expert"` |

114| `--system-prompt-file` | Sostituisce con il contenuto del file | `claude --system-prompt-file ./prompts/review.txt` |

115| `--append-system-prompt` | Aggiunge al prompt predefinito | `claude --append-system-prompt "Always use TypeScript"` |

116| `--append-system-prompt-file` | Aggiunge il contenuto del file al prompt predefinito | `claude --append-system-prompt-file ./style-rules.txt` |

117 

118`--system-prompt` e `--system-prompt-file` si escludono a vicenda. I flag di aggiunta possono essere combinati con uno qualsiasi dei flag di sostituzione.

119 

120Per la maggior parte dei casi d'uso, usa un flag di aggiunta. L'aggiunta preserva le capacità integrate di Claude Code mentre aggiunge i tuoi requisiti. Usa un flag di sostituzione solo quando hai bisogno del controllo completo sul prompt di sistema.

121 

122## Vedi anche

123 

124* [Estensione Chrome](/it/chrome) - Automazione del browser e test web

125* [Modalità interattiva](/it/interactive-mode) - Scorciatoie, modalità di input e funzionalità interattive

126* [Guida di avvio rapido](/it/quickstart) - Introduzione a Claude Code

127* [Flussi di lavoro comuni](/it/common-workflows) - Flussi di lavoro e pattern avanzati

128* [Impostazioni](/it/settings) - Opzioni di configurazione

129* [Documentazione Agent SDK](/it/agent-sdk/overview) - Utilizzo programmatico e integrazioni

code-review.md +279 −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# Code Review

6 

7> Configura revisioni automatiche dei PR che rilevano errori logici, vulnerabilità di sicurezza e regressioni utilizzando l'analisi multi-agente dell'intero codebase

8 

9<Note>

10 Code Review è in anteprima di ricerca, disponibile per gli abbonamenti [Team e Enterprise](https://claude.ai/admin-settings/claude-code). Non è disponibile per le organizzazioni con [Zero Data Retention](/it/zero-data-retention) abilitato.

11</Note>

12 

13Code Review analizza i tuoi pull request su GitHub e pubblica i risultati come commenti inline sulle righe di codice dove ha trovato problemi. Una flotta di agenti specializzati esamina i cambiamenti del codice nel contesto dell'intero codebase, cercando errori logici, vulnerabilità di sicurezza, edge case interrotti e regressioni sottili.

14 

15I risultati sono contrassegnati per gravità e non approvano o bloccano il tuo PR, quindi i flussi di lavoro di revisione esistenti rimangono intatti. Puoi regolare cosa Claude segnala aggiungendo un file `CLAUDE.md` o `REVIEW.md` al tuo repository.

16 

17Per eseguire Claude nella tua infrastruttura CI invece di questo servizio gestito, vedi [GitHub Actions](/it/github-actions) o [GitLab CI/CD](/it/gitlab-ci-cd). Per i repository su un'istanza GitHub self-hosted, vedi [GitHub Enterprise Server](/it/github-enterprise-server).

18 

19Questa pagina copre:

20 

21* [Come funzionano le revisioni](#how-reviews-work)

22* [Configurazione](#set-up-code-review)

23* [Attivazione manuale delle revisioni](#manually-trigger-reviews) con `@claude review` e `@claude review once`

24* [Personalizzazione delle revisioni](#customize-reviews) con `CLAUDE.md` e `REVIEW.md`

25* [Prezzi](#pricing)

26* [Risoluzione dei problemi](#troubleshooting) esecuzioni non riuscite e commenti mancanti

27 

28## Come funzionano le revisioni

29 

30Una volta che un amministratore [abilita Code Review](#set-up-code-review) per la tua organizzazione, le revisioni si attivano quando un PR si apre, ad ogni push, o quando richiesto manualmente, a seconda del comportamento configurato del repository. Commentando `@claude review` [avvia le revisioni su un PR](#manually-trigger-reviews) in qualsiasi modalità.

31 

32Quando una revisione viene eseguita, più agenti analizzano il diff e il codice circostante in parallelo sull'infrastruttura Anthropic. Ogni agente cerca una classe diversa di problema, quindi un passaggio di verifica controlla i candidati rispetto al comportamento effettivo del codice per filtrare i falsi positivi. I risultati vengono deduplicati, classificati per gravità e pubblicati come commenti inline sulle righe specifiche dove sono stati trovati i problemi, con un riepilogo nel corpo della revisione. Se non vengono trovati problemi, Claude pubblica un breve commento di conferma sul PR.

33 

34Le revisioni si scalano in costo con la dimensione e la complessità del PR, completandosi in media in 20 minuti. Gli amministratori possono monitorare l'attività di revisione e la spesa tramite il [dashboard di analisi](#view-usage).

35 

36### Livelli di gravità

37 

38Ogni risultato è contrassegnato con un livello di gravità:

39 

40| Marcatore | Gravità | Significato |

41| :-------- | :------------ | :-------------------------------------------------------------------- |

42| 🔴 | Importante | Un bug che dovrebbe essere corretto prima del merge |

43| 🟡 | Nit | Un problema minore, vale la pena correggerlo ma non bloccante |

44| 🟣 | Pre-esistente | Un bug che esiste nel codebase ma non è stato introdotto da questo PR |

45 

46I risultati includono una sezione di ragionamento esteso comprimibile che puoi espandere per capire perché Claude ha segnalato il problema e come ha verificato il problema.

47 

48### Valutare e rispondere ai risultati

49 

50Ogni commento di revisione da Claude arriva con 👍 e 👎 già allegati, quindi entrambi i pulsanti appaiono nell'interfaccia utente di GitHub per una valutazione con un clic. Fai clic su 👍 se il risultato era utile o 👎 se era sbagliato o rumoroso. Anthropic raccoglie i conteggi delle reazioni dopo il merge del PR e li utilizza per ottimizzare il revisore. Le reazioni non attivano una re-revisione o cambiano nulla sul PR.

51 

52Rispondere a un commento inline non richiede a Claude di rispondere o aggiornare il PR. Per agire su un risultato, correggi il codice e fai un push. Se il PR è sottoscritto alle revisioni attivate da push, l'esecuzione successiva risolve il thread quando il problema è corretto. Per richiedere una revisione nuova senza fare un push, commenta `@claude review once` come [commento PR di primo livello](#manually-trigger-reviews).

53 

54### Output del check run

55 

56Oltre ai commenti di revisione inline, ogni revisione popola il check run **Claude Code Review** che appare insieme ai tuoi check CI. Espandi il suo link **Details** per vedere un riepilogo di ogni risultato in un unico posto, ordinato per gravità:

57 

58| Gravità | File:Riga | Problema |

59| ------------- | ------------------------- | --------------------------------------------------------------------------------------------- |

60| 🔴 Importante | `src/auth/session.ts:142` | L'aggiornamento del token corre in parallelo con il logout, lasciando sessioni stantie attive |

61| 🟡 Nit | `src/auth/session.ts:88` | `parseExpiry` restituisce silenziosamente 0 su input malformato |

62 

63Ogni risultato appare anche come un'annotazione nella scheda **Files changed**, contrassegnato direttamente sulle righe diff rilevanti. I risultati importanti vengono visualizzati con un marcatore rosso, i nit con un avviso giallo e i bug pre-esistenti con un avviso grigio. Le annotazioni e la tabella di gravità vengono scritte nel check run indipendentemente dai commenti di revisione inline, quindi rimangono disponibili anche se GitHub rifiuta un commento inline su una riga che si è spostata.

64 

65Il check run si completa sempre con una conclusione neutra, quindi non blocca mai il merge attraverso le regole di protezione del ramo. Se vuoi bloccare i merge sui risultati di Code Review, leggi il breakdown della gravità dall'output del check run nel tuo CI. L'ultima riga del testo Details è un commento leggibile da macchina che il tuo flusso di lavoro può analizzare con `gh` e jq:

66 

67```bash theme={null}

68gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID \

69 --jq '.output.text | split("bughunter-severity: ")[1] | split(" -->")[0] | fromjson'

70```

71 

72Questo restituisce un oggetto JSON con conteggi per gravità, ad esempio `{"normal": 2, "nit": 1, "pre_existing": 0}`. La chiave `normal` contiene il conteggio dei risultati Importanti; un valore diverso da zero significa che Claude ha trovato almeno un bug che vale la pena correggere prima del merge.

73 

74### Cosa controlla Code Review

75 

76Per impostazione predefinita, Code Review si concentra sulla correttezza: bug che interromperebbero la produzione, non preferenze di formattazione o copertura di test mancante. Puoi espandere cosa controlla [aggiungendo file di guida](#customize-reviews) al tuo repository.

77 

78## Configura Code Review

79 

80Un amministratore abilita Code Review una volta per l'organizzazione e seleziona quali repository includere.

81 

82<Steps>

83 <Step title="Apri le impostazioni di amministrazione di Claude Code">

84 Vai a [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) e trova la sezione Code Review. Hai bisogno dell'accesso amministratore alla tua organizzazione Claude e del permesso di installare GitHub App nella tua organizzazione GitHub.

85 </Step>

86 

87 <Step title="Avvia la configurazione">

88 Fai clic su **Setup**. Questo inizia il flusso di installazione dell'app GitHub.

89 </Step>

90 

91 <Step title="Installa l'app GitHub di Claude">

92 Segui i prompt per installare l'app GitHub di Claude nella tua organizzazione GitHub. L'app richiede questi permessi del repository:

93 

94 * **Contents**: lettura e scrittura

95 * **Issues**: lettura e scrittura

96 * **Pull requests**: lettura e scrittura

97 

98 Code Review utilizza l'accesso in lettura ai contenuti e l'accesso in scrittura ai pull request. L'insieme di permessi più ampio supporta anche [GitHub Actions](/it/github-actions) se lo abiliti in seguito.

99 </Step>

100 

101 <Step title="Seleziona i repository">

102 Scegli quali repository abilitare per Code Review. Se non vedi un repository, assicurati di aver dato all'app GitHub di Claude l'accesso durante l'installazione. Puoi aggiungere altri repository in seguito.

103 </Step>

104 

105 <Step title="Imposta i trigger di revisione per repository">

106 Dopo il completamento della configurazione, la sezione Code Review mostra i tuoi repository in una tabella. Per ogni repository, utilizza il dropdown **Review Behavior** per scegliere quando vengono eseguite le revisioni:

107 

108 * **Once after PR creation**: la revisione viene eseguita una volta quando un PR viene aperto o contrassegnato come pronto per la revisione

109 * **After every push**: la revisione viene eseguita ad ogni push al ramo PR, catturando nuovi problemi mentre il PR si evolve e risolvendo automaticamente i thread quando correggi i problemi segnalati

110 * **Manual**: le revisioni iniziano solo quando qualcuno [commenta `@claude review` o `@claude review once` su un PR](#manually-trigger-reviews); `@claude review` sottoscrive anche il PR alle revisioni su push successivi

111 

112 La revisione ad ogni push esegue il maggior numero di revisioni e costa di più. La modalità manuale è utile per i repository ad alto traffico dove vuoi optare per PR specifici nella revisione, o per iniziare a revisionare i tuoi PR solo quando sono pronti.

113 </Step>

114</Steps>

115 

116La tabella dei repository mostra anche il costo medio per revisione per ogni repository in base all'attività recente. Utilizza il menu delle azioni della riga per attivare o disattivare Code Review per repository, o per rimuovere completamente un repository.

117 

118Per verificare la configurazione, apri un PR di test. Se hai scelto un trigger automatico, un check run denominato **Claude Code Review** appare entro pochi minuti. Se hai scelto Manual, commenta `@claude review` sul PR per avviare la prima revisione. Se non appare alcun check run, conferma che il repository è elencato nelle tue impostazioni di amministrazione e che l'app GitHub di Claude ha accesso ad esso.

119 

120## Attiva manualmente le revisioni

121 

122Due comandi di commento avviano una revisione su richiesta. Entrambi funzionano indipendentemente dal trigger configurato del repository, quindi puoi usarli per optare per PR specifici nella revisione in modalità Manual o per ottenere una re-revisione immediata in altre modalità.

123 

124| Comando | Cosa fa |

125| :-------------------- | :--------------------------------------------------------------------------------------------- |

126| `@claude review` | Avvia una revisione e sottoscrive il PR alle revisioni attivate da push da quel momento in poi |

127| `@claude review once` | Avvia una singola revisione senza sottoscrivere il PR ai push futuri |

128 

129Usa `@claude review once` quando vuoi feedback sullo stato attuale di un PR ma non vuoi che ogni push successivo comporti una revisione. Questo è utile per i PR di lunga durata con push frequenti, o quando vuoi un secondo parere una tantum senza cambiare il comportamento di revisione del PR.

130 

131Affinché uno dei due comandi attivi una revisione:

132 

133* Postalo come commento PR di primo livello, non come commento inline su una riga diff

134* Metti il comando all'inizio del commento, con `once` sulla stessa riga se stai usando la forma one-shot

135* Devi avere accesso come proprietario, membro o collaboratore al repository

136* Il PR deve essere aperto

137 

138A differenza dei trigger automatici, i trigger manuali vengono eseguiti su PR bozza, poiché una richiesta esplicita segnala che vuoi la revisione ora indipendentemente dallo stato di bozza.

139 

140Se una revisione è già in esecuzione su quel PR, la richiesta viene messa in coda fino al completamento della revisione in corso. Puoi monitorare l'avanzamento tramite il check run sul PR.

141 

142## Personalizza le revisioni

143 

144Code Review legge due file dal tuo repository per guidare cosa segnala. Differiscono nel modo in cui influenzano fortemente la revisione:

145 

146* **`CLAUDE.md`**: istruzioni di progetto condivise che Claude Code utilizza per tutti i compiti, non solo le revisioni. Code Review lo legge come contesto di progetto e segnala le violazioni appena introdotte come nit.

147* **`REVIEW.md`**: istruzioni solo per la revisione, iniettate direttamente in ogni agente nella pipeline di revisione come priorità più alta. Usalo per cambiare cosa viene segnalato, a quale gravità e come vengono segnalati i risultati.

148 

149### CLAUDE.md

150 

151Code Review legge i file `CLAUDE.md` del tuo repository e tratta le violazioni appena introdotte come risultati a [livello di nit](#severity-levels). Questo funziona bidirezionalmente: se il tuo PR cambia il codice in un modo che rende una dichiarazione `CLAUDE.md` obsoleta, Claude segnala che i documenti devono essere aggiornati anche loro.

152 

153Claude legge i file `CLAUDE.md` a ogni livello della gerarchia di directory, quindi le regole nel `CLAUDE.md` di una sottodirectory si applicano solo ai file sotto quel percorso. Vedi la [documentazione della memoria](/it/memory) per ulteriori informazioni su come funziona `CLAUDE.md`.

154 

155Per una guida specifica della revisione che non vuoi applicata alle sessioni generali di Claude Code, usa [`REVIEW.md`](#review-md) invece.

156 

157### REVIEW\.md

158 

159`REVIEW.md` è un file alla radice del tuo repository che sostituisce il modo in cui Code Review si comporta sul tuo repository. I suoi contenuti vengono iniettati nel prompt di sistema di ogni agente nella pipeline di revisione come blocco di istruzioni con priorità più alta, prevalendo sulla guida di revisione predefinita.

160 

161Poiché viene incollato verbatim, `REVIEW.md` è istruzioni semplici: la [sintassi `@` import](/it/memory#import-additional-files) non viene espansa e i file referenziati non vengono letti nel prompt. Metti le regole che vuoi applicate direttamente nel file.

162 

163#### Cosa puoi regolare

164 

165`REVIEW.md` è markdown freeform, quindi qualsiasi cosa tu possa esprimere come istruzione di revisione è in ambito. I modelli di seguito hanno il maggior impatto nella pratica.

166 

167**Gravità**: ridefinisci cosa significa 🔴 Importante per il tuo repository. La calibrazione predefinita è mirata al codice di produzione; un repository di documenti, un repository di configurazione o un prototipo potrebbe volere una definizione molto più ristretta. Dichiara esplicitamente quali classi di risultato sono Importanti e quali sono Nit al massimo. Puoi anche escalare nell'altra direzione, ad esempio trattando qualsiasi violazione di `CLAUDE.md` come Importante piuttosto che il nit predefinito.

168 

169**Volume di nit**: limita quanti commenti 🟡 Nit una singola revisione pubblica. La prosa e i file di configurazione possono essere lucidati per sempre. Un limite come "segnala al massimo cinque nit, menziona il resto come conteggio nel riepilogo" mantiene le revisioni attuabili.

170 

171**Regole di salto**: elenca percorsi, modelli di ramo e categorie di risultati dove Claude non dovrebbe pubblicare risultati. I candidati comuni sono codice generato, lockfile, dipendenze vendute e rami creati da macchine, insieme a qualsiasi cosa il tuo CI già applica come linting o controllo ortografico. Per i percorsi che meritano una revisione ma non un controllo completo, imposta un bar più alto invece di saltare completamente: "in `scripts/`, segnala solo se quasi certo e grave."

172 

173**Controlli specifici del repository**: aggiungi regole che vuoi segnalate su ogni PR, come "le nuove rotte API devono avere un test di integrazione." Poiché `REVIEW.md` viene iniettato come priorità più alta, questi atterrano più affidabilmente rispetto alle stesse regole in un lungo `CLAUDE.md`.

174 

175**Bar di verifica**: richiedi prove prima che una classe di risultato sia pubblicata. Ad esempio, "i reclami di comportamento hanno bisogno di una citazione `file:line` nella fonte, non un'inferenza dalla denominazione" riduce i falsi positivi che altrimenti costerebbero all'autore un round trip.

176 

177**Convergenza di re-revisione**: dichiara a Claude come comportarsi quando un PR è già stato revisionato. Una regola come "dopo la prima revisione, sopprimere i nuovi nit e pubblicare solo i risultati Importanti" impedisce a una correzione di una riga di raggiungere il round sette solo per lo stile.

178 

179**Forma di riepilogo**: chiedi al corpo della revisione di aprirsi con un conteggio di una riga come `2 fattuale, 4 stile`, e di iniziare con "nessun problema fattuale" quando è il caso. L'autore vuole conoscere la forma del lavoro prima dei dettagli.

180 

181#### Esempio

182 

183Questo `REVIEW.md` ricalibrare la gravità per un servizio backend, limita i nit, salta i file generati e aggiunge controlli specifici del repository.

184 

185```markdown theme={null}

186# Istruzioni di revisione

187 

188## Cosa significa Importante qui

189 

190Riserva Importante per i risultati che interromperebbero il comportamento, perderebbero dati,

191o bloccherebbero un rollback: logica scorretta, query di database non scoped, PII

192nei log o nei messaggi di errore, e migrazioni che non sono retrocompatibili.

193Lo stile, la denominazione e i suggerimenti di refactoring sono Nit al massimo.

194 

195## Limita i nit

196 

197Segnala al massimo cinque Nit per revisione. Se ne hai trovati di più, dichiara "più N

198elementi simili" nel riepilogo invece di pubblicarli inline. Se

199tutto quello che hai trovato è un Nit, inizia il riepilogo con "Nessun problema bloccante."

200 

201## Non segnalare

202 

203- Qualsiasi cosa il CI già applica: lint, formattazione, errori di tipo

204- File generati sotto `src/gen/` e qualsiasi file `*.lock`

205- Codice solo per test che intenzionalmente viola le regole di produzione

206 

207## Controlla sempre

208 

209- Le nuove rotte API hanno un test di integrazione

210- Le righe di log non includono indirizzi email, ID utente o corpi di richiesta

211- Le query di database sono scoped al tenant del chiamante

212```

213 

214#### Mantienilo focalizzato

215 

216La lunghezza ha un costo: un lungo `REVIEW.md` diluisce le regole che contano di più. Mantienilo alle istruzioni che cambiano il comportamento di revisione, e lascia il contesto di progetto generale in `CLAUDE.md`.

217 

218## Visualizza l'utilizzo

219 

220Vai a [claude.ai/analytics/code-review](https://claude.ai/analytics/code-review) per vedere l'attività di Code Review in tutta la tua organizzazione. Il dashboard mostra:

221 

222| Sezione | Cosa mostra |

223| :------------------- | :--------------------------------------------------------------------------------------------------------------------------- |

224| PRs reviewed | Conteggio giornaliero dei pull request revisionati nell'intervallo di tempo selezionato |

225| Cost weekly | Spesa settimanale su Code Review |

226| Feedback | Conteggio dei commenti di revisione che sono stati risolti automaticamente perché uno sviluppatore ha affrontato il problema |

227| Repository breakdown | Conteggi per repository dei PR revisionati e dei commenti risolti |

228 

229La tabella dei repository nelle impostazioni di amministrazione mostra anche il costo medio per revisione per ogni repository. Le cifre di costo del dashboard sono stime per il monitoraggio dell'attività; per la spesa accurata della fattura, fai riferimento alla tua fattura Anthropic.

230 

231## Prezzi

232 

233Code Review viene fatturato in base all'utilizzo dei token. Ogni revisione costa in media \$15-25, scalando con la dimensione del PR, la complessità del codebase e quanti problemi richiedono verifica. L'utilizzo di Code Review viene fatturato separatamente tramite [extra usage](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) e non conta rispetto all'utilizzo incluso nel tuo piano.

234 

235Il trigger di revisione che scegli influisce sul costo totale:

236 

237* **Once after PR creation**: viene eseguito una volta per PR

238* **After every push**: viene eseguito ad ogni push, moltiplicando il costo per il numero di push

239* **Manual**: nessuna revisione fino a quando qualcuno non commenta `@claude review` su un PR

240 

241In qualsiasi modalità, commentando `@claude review` [opta il PR nelle revisioni attivate da push](#manually-trigger-reviews), quindi il costo aggiuntivo si accumula per push dopo quel commento. Per eseguire una singola revisione senza sottoscrivere ai push futuri, commenta `@claude review once` invece.

242 

243I costi appaiono sulla tua fattura Anthropic indipendentemente dal fatto che la tua organizzazione utilizzi Amazon Bedrock o Google Vertex AI per altre funzionalità di Claude Code. Per impostare un limite di spesa mensile per Code Review, vai a [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) e configura il limite per il servizio Claude Code Review.

244 

245Monitora la spesa tramite il grafico dei costi settimanali in [analytics](#view-usage) o la colonna del costo medio per repository nelle impostazioni di amministrazione.

246 

247## Risoluzione dei problemi

248 

249Le esecuzioni di revisione sono best-effort. Un'esecuzione non riuscita non blocca mai il tuo PR, ma non si ritenta nemmeno automaticamente. Questa sezione copre come recuperare da un'esecuzione non riuscita e dove cercare quando il check run segnala problemi che non riesci a trovare.

250 

251### Riattiva una revisione non riuscita o scaduta

252 

253Quando l'infrastruttura di revisione incontra un errore interno o supera il limite di tempo, il check run si completa con un titolo di **Code review encountered an error** o **Code review timed out**. La conclusione è ancora neutra, quindi nulla blocca il tuo merge, ma non vengono pubblicati risultati.

254 

255Per eseguire di nuovo la revisione, commenta `@claude review once` sul PR. Questo avvia una revisione nuova senza sottoscrivere il PR ai push futuri. Se il PR è già sottoscritto alle revisioni attivate da push, fare un push di un nuovo commit avvia anche una nuova revisione.

256 

257Il pulsante **Re-run** nella scheda Checks di GitHub non riattiva Code Review. Usa il comando di commento o un nuovo push invece.

258 

259### La revisione non è stata eseguita e il PR mostra un messaggio di limite di spesa

260 

261Quando il limite di spesa mensile dell'organizzazione viene raggiunto, Code Review pubblica un singolo commento sul PR spiegando che la revisione è stata saltata. Le revisioni riprendono automaticamente all'inizio del prossimo periodo di fatturazione, o immediatamente quando un amministratore aumenta il limite a [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage).

262 

263### Trova problemi che non vengono visualizzati come commenti inline

264 

265Se il titolo del check run dice che sono stati trovati problemi ma non vedi commenti di revisione inline sul diff, cerca in questi altri luoghi dove vengono visualizzati i risultati:

266 

267* **Check run Details**: fai clic su **Details** accanto al check Claude Code Review nella scheda Checks. La tabella di gravità elenca ogni risultato con il suo file, riga e riepilogo indipendentemente dal fatto che il commento inline sia stato accettato.

268* **Files changed annotations**: apri la scheda **Files changed** sul PR. I risultati vengono visualizzati come annotazioni allegate direttamente alle righe diff, separate dai commenti di revisione.

269* **Review body**: se hai fatto un push al PR mentre una revisione era in esecuzione, alcuni risultati potrebbero fare riferimento a righe che non esistono più nel diff attuale. Questi appaiono sotto un'intestazione **Additional findings** nel testo del corpo della revisione piuttosto che come commenti inline.

270 

271## Risorse correlate

272 

273Code Review è progettato per funzionare insieme al resto di Claude Code. Se vuoi eseguire revisioni localmente prima di aprire un PR, hai bisogno di una configurazione self-hosted, o vuoi approfondire come `CLAUDE.md` modella il comportamento di Claude in tutti gli strumenti, queste pagine sono buoni prossimi passi:

274 

275* [Plugins](/it/discover-plugins): sfoglia il marketplace dei plugin, incluso un plugin `code-review` per eseguire revisioni on-demand localmente prima di fare push

276* [GitHub Actions](/it/github-actions): esegui Claude nei tuoi flussi di lavoro GitHub Actions per l'automazione personalizzata oltre la revisione del codice

277* [GitLab CI/CD](/it/gitlab-ci-cd): integrazione Claude self-hosted per le pipeline GitLab

278* [Memory](/it/memory): come funzionano i file `CLAUDE.md` in Claude Code

279* [Analytics](/it/analytics): traccia l'utilizzo di Claude Code oltre la revisione del codice

commands.md +113 −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# Comandi

6 

7> Riferimento completo per i comandi disponibili in Claude Code, inclusi i comandi integrati e le skill integrate.

8 

9I comandi controllano Claude Code dall'interno di una sessione. Forniscono un modo rapido per cambiare modelli, gestire i permessi, cancellare il contesto, eseguire un flusso di lavoro e altro ancora.

10 

11Digita `/` per visualizzare ogni comando disponibile per te, oppure digita `/` seguito da lettere per filtrare.

12 

13La tabella sottostante elenca tutti i comandi inclusi in Claude Code. Le voci contrassegnate come **[Skill](/it/skills#bundled-skills)** sono skill integrate. Utilizzano lo stesso meccanismo delle skill che scrivi tu stesso: un prompt consegnato a Claude, che Claude può anche invocare automaticamente quando rilevante. Tutto il resto è un comando integrato il cui comportamento è codificato nella CLI. Per aggiungere i tuoi comandi, vedi [skills](/it/skills).

14 

15Non ogni comando appare per ogni utente. La disponibilità dipende dalla tua piattaforma, dal piano e dall'ambiente. Ad esempio, `/desktop` appare solo su macOS e Windows, e `/upgrade` appare solo sui piani Pro e Max.

16 

17Nella tabella sottostante, `<arg>` indica un argomento obbligatorio e `[arg]` indica uno facoltativo.

18 

19| Comando | Scopo |

20| :---------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

21| `/add-dir <path>` | Aggiungi una directory di lavoro per l'accesso ai file durante la sessione corrente. La maggior parte della configurazione `.claude/` [non viene rilevata](/it/permissions#additional-directories-grant-file-access-not-configuration) dalla directory aggiunta. Puoi successivamente riprendere la sessione dalla directory aggiunta con `--continue` o `--resume` |

22| `/agents` | Gestisci le configurazioni [agent](/it/sub-agents) |

23| `/autofix-pr [prompt]` | Avvia una sessione [Claude Code sul web](/it/claude-code-on-the-web#auto-fix-pull-requests) che monitora il PR del ramo corrente e invia correzioni quando la CI fallisce o i revisori lasciano commenti. Rileva il PR aperto dal ramo in cui sei posizionato con `gh pr view`; per monitorare un PR diverso, prima controlla il suo ramo. Per impostazione predefinita, la sessione remota viene istruita a correggere ogni fallimento della CI e commento di revisione; passa un prompt per darle istruzioni diverse, ad esempio `/autofix-pr only fix lint and type errors`. Richiede la CLI `gh` e l'accesso a [Claude Code sul web](/it/claude-code-on-the-web#who-can-use-claude-code-on-the-web) |

24| `/batch <instruction>` | **[Skill](/it/skills#bundled-skills).** Orchestra modifiche su larga scala in un codebase in parallelo. Ricerca il codebase, scompone il lavoro in 5-30 unità indipendenti e presenta un piano. Una volta approvato, avvia un agente in background per unità in un [git worktree](/it/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) isolato. Ogni agente implementa la sua unità, esegue i test e apre una pull request. Richiede un repository git. Esempio: `/batch migrate src/ from Solid to React` |

25| `/branch [name]` | Crea un ramo della conversazione corrente a questo punto. Ti sposta nel ramo e preserva l'originale, al quale puoi tornare con `/resume`. Alias: `/fork`. Quando [`CLAUDE_CODE_FORK_SUBAGENT`](/it/env-vars) è impostato, `/fork` invece avvia un [subagent con fork](/it/sub-agents#fork-the-current-conversation) e non è più un alias per questo comando |

26| `/btw <question>` | Fai una rapida [domanda laterale](/it/interactive-mode#side-questions-with-%2Fbtw) senza aggiungerla alla conversazione |

27| `/chrome` | Configura le impostazioni di [Claude in Chrome](/it/chrome) |

28| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/it/skills#bundled-skills).** Carica il materiale di riferimento dell'API Claude per il linguaggio del tuo progetto (Python, TypeScript, Java, Go, Ruby, C#, PHP o cURL) e il riferimento degli Agenti Gestiti. Copre l'uso degli strumenti, lo streaming, i batch, gli output strutturati e le insidie comuni. Si attiva anche automaticamente quando il tuo codice importa `anthropic` o `@anthropic-ai/sdk`. Esegui `/claude-api migrate` per aggiornare il codice dell'API Claude esistente a un modello più recente: Claude chiede quali file scansionare e quale modello scegliere come destinazione, quindi aggiorna gli ID del modello, la configurazione del thinking e altri parametri che sono cambiati tra le versioni. Esegui `/claude-api managed-agents-onboard` per una procedura guidata interattiva che crea un nuovo Agente Gestito da zero |

29| `/clear` | Avvia una nuova conversazione con contesto vuoto. La conversazione precedente rimane disponibile in `/resume`. Per liberare il contesto continuando la stessa conversazione, usa `/compact` invece. Alias: `/reset`, `/new` |

30| `/color [color\|default]` | Imposta il colore della barra dei prompt per la sessione corrente. Colori disponibili: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Usa `default` per ripristinare. Quando [Remote Control](/it/remote-control) è connesso, il colore si sincronizza con claude.ai/code |

31| `/compact [instructions]` | Libera il contesto riassumendo la conversazione finora. Facoltativamente passa istruzioni di focus per il riassunto. Vedi [come la compattazione gestisce regole, skill e file di memoria](/it/context-window#what-survives-compaction) |

32| `/config` | Apri l'interfaccia [Impostazioni](/it/settings) per regolare il tema, il modello, lo [stile di output](/it/output-styles) e altre preferenze. Alias: `/settings` |

33| `/context` | Visualizza l'utilizzo del contesto corrente come una griglia colorata. Mostra suggerimenti di ottimizzazione per gli strumenti pesanti di contesto, gonfiore della memoria e avvisi di capacità |

34| `/copy [N]` | Copia l'ultima risposta dell'assistente negli appunti. Passa un numero `N` per copiare la N-esima risposta più recente: `/copy 2` copia la penultima. Quando sono presenti blocchi di codice, mostra un selettore interattivo per selezionare singoli blocchi o la risposta completa. Premi `w` nel selettore per scrivere la selezione in un file invece che negli appunti, il che è utile tramite SSH |

35| `/cost` | Alias per `/usage` |

36| `/debug [description]` | **[Skill](/it/skills#bundled-skills).** Abilita la registrazione del debug per la sessione corrente e risolvi i problemi leggendo il log di debug della sessione. La registrazione del debug è disattivata per impostazione predefinita a meno che tu non abbia avviato con `claude --debug`, quindi eseguire `/debug` a metà sessione inizia a catturare i log da quel momento in poi. Facoltativamente descrivi il problema per focalizzare l'analisi |

37| `/desktop` | Continua la sessione corrente nell'app Claude Code Desktop. Solo macOS e Windows. Alias: `/app` |

38| `/diff` | Apri un visualizzatore diff interattivo che mostra le modifiche non sottoposte a commit e i diff per turno. Usa le frecce sinistra/destra per passare tra il diff git corrente e i singoli turni di Claude, e su/giù per sfogliare i file |

39| `/doctor` | Diagnostica e verifica l'installazione e le impostazioni di Claude Code. I risultati vengono visualizzati con icone di stato. Premi `f` per fare in modo che Claude corregga eventuali problemi segnalati |

40| `/effort [level\|auto]` | Imposta il [livello di sforzo](/it/model-config#adjust-effort-level) del modello. Accetta `low`, `medium`, `high`, `xhigh` o `max`; i livelli disponibili dipendono dal modello e `max` è solo per la sessione. `auto` ripristina il valore predefinito del modello. Senza un argomento, apre un cursore interattivo; usa le frecce sinistra e destra per scegliere un livello e `Enter` per applicare. Ha effetto immediato senza aspettare il completamento della risposta corrente |

41| `/exit` | Esci dalla CLI. Alias: `/quit` |

42| `/export [filename]` | Esporta la conversazione corrente come testo semplice. Con un nome file, scrive direttamente in quel file. Senza, apre una finestra di dialogo per copiare negli appunti o salvare in un file |

43| `/extra-usage` | Configura l'utilizzo extra per continuare a lavorare quando vengono raggiunti i limiti di velocità |

44| `/fast [on\|off]` | Attiva o disattiva la [modalità veloce](/it/fast-mode) |

45| `/feedback [report]` | Invia feedback su Claude Code. Alias: `/bug` |

46| `/fewer-permission-prompts` | **[Skill](/it/skills#bundled-skills).** Scansiona i tuoi trascritti per le comuni chiamate Bash e MCP tool di sola lettura, quindi aggiungi una lista di autorizzazione prioritaria al progetto `.claude/settings.json` per ridurre i prompt di permesso |

47| `/focus` | Attiva/disattiva la vista focus, che mostra solo il tuo ultimo prompt, un riassunto di una riga della chiamata dello strumento con diffstat di modifica e la risposta finale. La selezione persiste tra le sessioni. Disponibile solo nel [rendering a schermo intero](/it/fullscreen) |

48| `/heapdump` | Scrivi uno snapshot dell'heap JavaScript e una ripartizione della memoria su `~/Desktop`, o la tua home directory su Linux senza una cartella Desktop, per diagnosticare l'utilizzo elevato della memoria. Vedi [risoluzione dei problemi](/it/troubleshooting#high-cpu-or-memory-usage) |

49| `/help` | Mostra la guida e i comandi disponibili |

50| `/hooks` | Visualizza le configurazioni [hook](/it/hooks) per gli eventi degli strumenti |

51| `/ide` | Gestisci le integrazioni IDE e mostra lo stato |

52| `/init` | Inizializza il progetto con una guida `CLAUDE.md`. Imposta `CLAUDE_CODE_NEW_INIT=1` per un flusso interattivo che ti guida anche attraverso skill, hook e file di memoria personale |

53| `/insights` | Genera un rapporto che analizza le tue sessioni di Claude Code, incluse le aree del progetto, i modelli di interazione e i punti di attrito |

54| `/install-github-app` | Configura l'app [Claude GitHub Actions](/it/github-actions) per un repository. Ti guida attraverso la selezione di un repo e la configurazione dell'integrazione |

55| `/install-slack-app` | Installa l'app Claude Slack. Apre un browser per completare il flusso OAuth |

56| `/keybindings` | Apri o crea il tuo file di configurazione delle scorciatoie da tastiera |

57| `/login` | Accedi al tuo account Anthropic |

58| `/logout` | Esci dal tuo account Anthropic |

59| `/loop [interval] [prompt]` | **[Skill](/it/skills#bundled-skills).** Esegui un prompt ripetutamente mentre la sessione rimane aperta. Ometti l'intervallo e Claude si auto-paced tra le iterazioni. Ometti il prompt e Claude esegue un controllo di manutenzione autonomo, o il prompt in `.claude/loop.md` se presente. Esempio: `/loop 5m check if the deploy finished`. Vedi [Esegui prompt su una pianificazione](/it/scheduled-tasks). Alias: `/proactive` |

60| `/mcp` | Gestisci le connessioni ai server MCP e l'autenticazione OAuth |

61| `/memory` | Modifica i file di memoria `CLAUDE.md`, abilita o disabilita la [memoria automatica](/it/memory#auto-memory) e visualizza le voci di memoria automatica |

62| `/mobile` | Mostra il codice QR per scaricare l'app mobile Claude. Alias: `/ios`, `/android` |

63| `/model [model]` | Seleziona o cambia il modello di IA. Per i modelli che lo supportano, usa le frecce sinistra/destra per [regolare il livello di sforzo](/it/model-config#adjust-effort-level). Senza un argomento, apre un selettore che chiede conferma quando la conversazione ha output precedente, poiché la risposta successiva rilegge la cronologia completa senza contesto memorizzato nella cache. Una volta confermato, il cambio si applica senza aspettare il completamento della risposta corrente |

64| `/passes` | Condividi una settimana gratuita di Claude Code con gli amici. Visibile solo se il tuo account è idoneo |

65| `/permissions` | Gestisci le regole di autorizzazione, richiesta e negazione per i permessi degli strumenti. Apri una finestra di dialogo interattiva dove puoi visualizzare le regole per ambito, aggiungere o rimuovere regole, gestire le directory di lavoro e rivedere le [negazioni automatiche della modalità recente](/it/auto-mode-config#review-denials). Alias: `/allowed-tools` |

66| `/plan [description]` | Entra direttamente in Plan Mode dal prompt. Passa una descrizione opzionale per entrare in Plan Mode e iniziare immediatamente con quel compito, ad esempio `/plan fix the auth bug` |

67| `/plugin` | Gestisci i [plugins](/it/plugins) di Claude Code |

68| `/powerup` | Scopri le funzionalità di Claude Code attraverso lezioni interattive rapide con demo animate |

69| `/pr-comments [PR]` | {/* max-version: 2.1.90 */}Rimosso in v2.1.91. Chiedi direttamente a Claude di visualizzare i commenti della pull request. Nelle versioni precedenti, recupera e visualizza i commenti da una pull request di GitHub; rileva automaticamente il PR per il ramo corrente, oppure passa un URL o un numero di PR. Richiede la CLI `gh` |

70| `/privacy-settings` | Visualizza e aggiorna le tue impostazioni di privacy. Disponibile solo per gli abbonati ai piani Pro e Max |

71| `/recap` | Genera un riassunto di una riga della sessione corrente su richiesta. Vedi [Recap della sessione](/it/interactive-mode#session-recap) per il recap automatico che appare dopo che sei stato assente |

72| `/release-notes` | Visualizza il changelog in un selettore di versione interattivo. Seleziona una versione specifica per visualizzare le sue note di rilascio, o scegli di mostrare tutte le versioni |

73| `/reload-plugins` | Ricarica tutti i [plugins](/it/plugins) attivi per applicare le modifiche in sospeso senza riavviare. Segnala i conteggi per ogni componente ricaricato e contrassegna eventuali errori di caricamento |

74| `/remote-control` | Rendi questa sessione disponibile per il [controllo remoto](/it/remote-control) da claude.ai. Alias: `/rc` |

75| `/remote-env` | Configura l'ambiente remoto predefinito per le [sessioni web avviate con `--remote`](/it/claude-code-on-the-web#configure-your-environment) |

76| `/rename [name]` | Rinomina la sessione corrente e mostra il nome sulla barra dei prompt. Senza un nome, ne genera uno automaticamente dalla cronologia della conversazione |

77| `/resume [session]` | Riprendi una conversazione per ID o nome, oppure apri il selettore di sessione. Alias: `/continue` |

78| `/review [PR]` | Rivedi una pull request localmente nella tua sessione corrente. Per una revisione più profonda basata su cloud, vedi [`/ultrareview`](/it/ultrareview) |

79| `/rewind` | Riavvolgi la conversazione e/o il codice a un punto precedente, o riassumi da un messaggio selezionato. Vedi [checkpointing](/it/checkpointing). Alias: `/checkpoint`, `/undo` |

80| `/sandbox` | Attiva/disattiva la [modalità sandbox](/it/sandboxing). Disponibile solo su piattaforme supportate |

81| `/schedule [description]` | Crea, aggiorna, elenca o esegui [routine](/it/routines). Claude ti guida attraverso la configurazione in modo conversazionale. Alias: `/routines` |

82| `/security-review` | Analizza le modifiche in sospeso sul ramo corrente per le vulnerabilità di sicurezza. Esamina il diff git e identifica i rischi come iniezione, problemi di autenticazione ed esposizione dei dati |

83| `/setup-bedrock` | Configura l'autenticazione [Amazon Bedrock](/it/amazon-bedrock), la regione e i pin del modello attraverso una procedura guidata interattiva. Visibile solo quando `CLAUDE_CODE_USE_BEDROCK=1` è impostato. Gli utenti di Bedrock per la prima volta possono anche accedere a questa procedura guidata dalla schermata di accesso |

84| `/setup-vertex` | Configura l'autenticazione [Google Vertex AI](/it/google-vertex-ai), il progetto, la regione e i pin del modello attraverso una procedura guidata interattiva. Visibile solo quando `CLAUDE_CODE_USE_VERTEX=1` è impostato. Gli utenti di Vertex AI per la prima volta possono anche accedere a questa procedura guidata dalla schermata di accesso |

85| `/simplify [focus]` | **[Skill](/it/skills#bundled-skills).** Rivedi i tuoi file modificati di recente per il riutilizzo del codice, la qualità e i problemi di efficienza, quindi correggili. Avvia tre agenti di revisione in parallelo, aggrega i loro risultati e applica le correzioni. Passa il testo per focalizzarti su preoccupazioni specifiche: `/simplify focus on memory efficiency` |

86| `/skills` | Elenca le [skills](/it/skills) disponibili. Premi `t` per ordinare per conteggio dei token |

87| `/stats` | Alias per `/usage`. Si apre nella scheda Stats |

88| `/status` | Apri l'interfaccia Impostazioni (scheda Stato) che mostra versione, modello, account e connettività. Funziona mentre Claude sta rispondendo, senza aspettare il completamento della risposta corrente |

89| `/statusline` | Configura la [linea di stato](/it/statusline) di Claude Code. Descrivi cosa desideri, oppure esegui senza argomenti per auto-configurare dal tuo prompt della shell |

90| `/stickers` | Ordina gli adesivi di Claude Code |

91| `/tasks` | Elenca e gestisci le attività in background. Disponibile anche come `/bashes` |

92| `/team-onboarding` | Genera una guida di onboarding del team dalla tua cronologia di utilizzo di Claude Code. Claude analizza le tue sessioni, comandi e utilizzo del server MCP degli ultimi 30 giorni e produce una guida markdown che un collega può incollare come primo messaggio per configurarsi rapidamente |

93| `/teleport` | Estrai una sessione [Claude Code sul web](/it/claude-code-on-the-web#from-web-to-terminal) in questo terminale: apre un selettore, quindi recupera il ramo e la conversazione. Disponibile anche come `/tp`. Richiede un abbonamento a claude.ai |

94| `/terminal-setup` | Configura le scorciatoie da tastiera del terminale per Shift+Enter e altri tasti di scelta rapida. Visibile solo nei terminali che lo richiedono, come VS Code, Cursor, Windsurf, Alacritty o Zed |

95| `/theme` | Cambia il tema del colore. Include un'opzione `auto` che segue la modalità scura o chiara del tuo terminale, varianti chiare e scure, temi accessibili ai daltonici (daltonizzati), temi ANSI che utilizzano la tavolozza dei colori del tuo terminale e qualsiasi [tema personalizzato](/it/terminal-config#create-a-custom-theme) da `~/.claude/themes/` o plugin. Seleziona **New custom theme…** per crearne uno |

96| `/tui [default\|fullscreen]` | Imposta il renderer dell'interfaccia utente del terminale e riavvia in esso con la tua conversazione intatta. `fullscreen` abilita il [renderer alt-screen senza sfarfallio](/it/fullscreen). Senza un argomento, stampa il renderer attivo |

97| `/ultraplan <prompt>` | Elabora un piano in una sessione [ultraplan](/it/ultraplan), revisionalo nel tuo browser, quindi esegui in remoto o rimandalo al tuo terminale |

98| `/ultrareview [PR]` | Esegui una revisione del codice profonda e multi-agente in una sandbox cloud con [ultrareview](/it/ultrareview). Include 3 esecuzioni gratuite su Pro e Max fino al 5 maggio 2026, quindi richiede [utilizzo extra](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

99| `/upgrade` | Apri la pagina di upgrade per passare a un livello di piano superiore |

100| `/usage` | Mostra il costo della sessione, i limiti di utilizzo del piano e le statistiche di attività. Vedi la [guida al tracciamento dei costi](/it/costs#using-the-%2Fusage-command) per i dettagli specifici dell'abbonamento. `/cost` e `/stats` sono alias |

101| `/vim` | {/* max-version: 2.1.91 */}Rimosso in v2.1.92. Per alternare tra le modalità di modifica Vim e Normale, usa `/config` → Editor mode |

102| `/voice [hold\|tap\|off]` | Attiva/disattiva la [dettatura vocale](/it/voice-dictation), o abilitala in una modalità specifica. Richiede un account Claude.ai |

103| `/web-setup` | Connetti il tuo account GitHub a [Claude Code sul web](/it/web-quickstart#connect-from-your-terminal) utilizzando le credenziali della CLI `gh` locale. `/schedule` richiede questo automaticamente se GitHub non è connesso |

104 

105## MCP prompts

106 

107I server MCP possono esporre prompt che appaiono come comandi. Questi utilizzano il formato `/mcp__<server>__<prompt>` e vengono rilevati dinamicamente dai server connessi. Vedi [MCP prompts](/it/mcp#use-mcp-prompts-as-commands) per i dettagli.

108 

109## Vedi anche

110 

111* [Skills](/it/skills): crea i tuoi comandi

112* [Modalità interattiva](/it/interactive-mode): scorciatoie da tastiera, modalità Vim e cronologia dei comandi

113* [Riferimento CLI](/it/cli-reference): flag di avvio

common-workflows.md +1030 −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# Flussi di lavoro comuni

6 

7> Guide passo dopo passo per esplorare basi di codice, correggere bug, effettuare refactoring, testare e altri compiti quotidiani con Claude Code.

8 

9Questa pagina copre flussi di lavoro pratici per lo sviluppo quotidiano: esplorare codice non familiare, eseguire il debug, effettuare refactoring, scrivere test, creare PR e gestire sessioni. Ogni sezione include prompt di esempio che puoi adattare ai tuoi progetti. Per modelli e suggerimenti di livello superiore, vedi [Best practices](/it/best-practices).

10 

11## Comprendere nuove basi di codice

12 

13### Ottenere una rapida panoramica della base di codice

14 

15Supponiamo che tu abbia appena aderito a un nuovo progetto e debba comprendere rapidamente la sua struttura.

16 

17<Steps>

18 <Step title="Navigare alla directory radice del progetto">

19 ```bash theme={null}

20 cd /path/to/project

21 ```

22 </Step>

23 

24 <Step title="Avviare Claude Code">

25 ```bash theme={null}

26 claude

27 ```

28 </Step>

29 

30 <Step title="Chiedere una panoramica di alto livello">

31 ```text theme={null}

32 give me an overview of this codebase

33 ```

34 </Step>

35 

36 <Step title="Approfondire componenti specifici">

37 ```text theme={null}

38 explain the main architecture patterns used here

39 ```

40 

41 ```text theme={null}

42 what are the key data models?

43 ```

44 

45 ```text theme={null}

46 how is authentication handled?

47 ```

48 </Step>

49</Steps>

50 

51<Tip>

52 Suggerimenti:

53 

54 * Inizia con domande ampie, quindi restringi a aree specifiche

55 * Chiedi informazioni sulle convenzioni di codifica e sui modelli utilizzati nel progetto

56 * Richiedi un glossario di termini specifici del progetto

57</Tip>

58 

59### Trovare codice rilevante

60 

61Supponiamo che tu debba individuare il codice relativo a una funzionalità o funzione specifica.

62 

63<Steps>

64 <Step title="Chiedere a Claude di trovare file rilevanti">

65 ```text theme={null}

66 find the files that handle user authentication

67 ```

68 </Step>

69 

70 <Step title="Ottenere contesto su come i componenti interagiscono">

71 ```text theme={null}

72 how do these authentication files work together?

73 ```

74 </Step>

75 

76 <Step title="Comprendere il flusso di esecuzione">

77 ```text theme={null}

78 trace the login process from front-end to database

79 ```

80 </Step>

81</Steps>

82 

83<Tip>

84 Suggerimenti:

85 

86 * Sii specifico su ciò che stai cercando

87 * Usa il linguaggio del dominio dal progetto

88 * Installa un [plugin di code intelligence](/it/discover-plugins#code-intelligence) per il tuo linguaggio per dare a Claude una navigazione precisa "go to definition" e "find references"

89</Tip>

90 

91***

92 

93## Correggere bug in modo efficiente

94 

95Supponiamo che tu abbia riscontrato un messaggio di errore e debba trovare e correggere la sua fonte.

96 

97<Steps>

98 <Step title="Condividere l'errore con Claude">

99 ```text theme={null}

100 I'm seeing an error when I run npm test

101 ```

102 </Step>

103 

104 <Step title="Chiedere raccomandazioni per la correzione">

105 ```text theme={null}

106 suggest a few ways to fix the @ts-ignore in user.ts

107 ```

108 </Step>

109 

110 <Step title="Applicare la correzione">

111 ```text theme={null}

112 update user.ts to add the null check you suggested

113 ```

114 </Step>

115</Steps>

116 

117<Tip>

118 Suggerimenti:

119 

120 * Comunica a Claude il comando per riprodurre il problema e ottenere una stack trace

121 * Menziona eventuali passaggi per riprodurre l'errore

122 * Fai sapere a Claude se l'errore è intermittente o coerente

123</Tip>

124 

125***

126 

127## Effettuare refactoring del codice

128 

129Supponiamo che tu debba aggiornare il codice precedente per utilizzare modelli e pratiche moderne.

130 

131<Steps>

132 <Step title="Identificare il codice legacy per il refactoring">

133 ```text theme={null}

134 find deprecated API usage in our codebase

135 ```

136 </Step>

137 

138 <Step title="Ottenere raccomandazioni per il refactoring">

139 ```text theme={null}

140 suggest how to refactor utils.js to use modern JavaScript features

141 ```

142 </Step>

143 

144 <Step title="Applicare le modifiche in modo sicuro">

145 ```text theme={null}

146 refactor utils.js to use ES2024 features while maintaining the same behavior

147 ```

148 </Step>

149 

150 <Step title="Verificare il refactoring">

151 ```text theme={null}

152 run tests for the refactored code

153 ```

154 </Step>

155</Steps>

156 

157<Tip>

158 Suggerimenti:

159 

160 * Chiedi a Claude di spiegare i vantaggi dell'approccio moderno

161 * Richiedi che le modifiche mantengano la compatibilità all'indietro quando necessario

162 * Effettua il refactoring in piccoli incrementi testabili

163</Tip>

164 

165***

166 

167## Utilizzare subagent specializzati

168 

169Supponiamo che tu voglia utilizzare subagent AI specializzati per gestire attività specifiche in modo più efficace.

170 

171<Steps>

172 <Step title="Visualizzare i subagent disponibili">

173 ```text theme={null}

174 /agents

175 ```

176 

177 Questo mostra tutti i subagent disponibili e ti consente di crearne di nuovi.

178 </Step>

179 

180 <Step title="Utilizzare i subagent automaticamente">

181 Claude Code delega automaticamente le attività appropriate ai subagent specializzati:

182 

183 ```text theme={null}

184 review my recent code changes for security issues

185 ```

186 

187 ```text theme={null}

188 run all tests and fix any failures

189 ```

190 </Step>

191 

192 <Step title="Richiedere esplicitamente subagent specifici">

193 ```text theme={null}

194 use the code-reviewer subagent to check the auth module

195 ```

196 

197 ```text theme={null}

198 have the debugger subagent investigate why users can't log in

199 ```

200 </Step>

201 

202 <Step title="Creare subagent personalizzati per il tuo flusso di lavoro">

203 ```text theme={null}

204 /agents

205 ```

206 

207 Quindi seleziona "Create New subagent" e segui i prompt per definire:

208 

209 * Un identificatore univoco che descrive lo scopo del subagent (ad esempio, `code-reviewer`, `api-designer`).

210 * Quando Claude dovrebbe utilizzare questo agente

211 * Quali strumenti può accedere

212 * Un prompt di sistema che descrive il ruolo e il comportamento dell'agente

213 </Step>

214</Steps>

215 

216<Tip>

217 Suggerimenti:

218 

219 * Crea subagent specifici del progetto in `.claude/agents/` per la condivisione del team

220 * Usa campi `description` descrittivi per abilitare la delegazione automatica

221 * Limita l'accesso agli strumenti a ciò di cui ogni subagent ha effettivamente bisogno

222 * Controlla la [documentazione dei subagent](/it/sub-agents) per esempi dettagliati

223</Tip>

224 

225***

226 

227## Utilizzare Plan Mode per l'analisi sicura del codice

228 

229Plan Mode istruisce Claude a creare un piano analizzando la base di codice con operazioni di sola lettura, perfetto per esplorare basi di codice, pianificare modifiche complesse o rivedere il codice in modo sicuro. In Plan Mode, Claude utilizza [`AskUserQuestion`](/it/tools-reference) per raccogliere requisiti e chiarire i tuoi obiettivi prima di proporre un piano.

230 

231### Quando utilizzare Plan Mode

232 

233* **Implementazione multi-step**: Quando la tua funzionalità richiede di apportare modifiche a molti file

234* **Esplorazione del codice**: Quando desideri ricercare a fondo la base di codice prima di modificare qualsiasi cosa

235* **Sviluppo interattivo**: Quando desideri iterare sulla direzione con Claude

236 

237### Come utilizzare Plan Mode

238 

239**Attivare Plan Mode durante una sessione**

240 

241Puoi passare a Plan Mode durante una sessione utilizzando **Shift+Tab** per scorrere le modalità di autorizzazione.

242 

243Se sei in Normal Mode, **Shift+Tab** passa prima a Auto-Accept Mode, indicato da `⏵⏵ accept edits on` nella parte inferiore del terminale. Un successivo **Shift+Tab** passerà a Plan Mode, indicato da `⏸ plan mode on`.

244 

245**Avviare una nuova sessione in Plan Mode**

246 

247Per avviare una nuova sessione in Plan Mode, usa il flag `--permission-mode plan`:

248 

249```bash theme={null}

250claude --permission-mode plan

251```

252 

253**Eseguire query "headless" in Plan Mode**

254 

255Puoi anche eseguire una query in Plan Mode direttamente con `-p` (cioè in ["headless mode"](/it/headless)):

256 

257```bash theme={null}

258claude --permission-mode plan -p "Analyze the authentication system and suggest improvements"

259```

260 

261### Esempio: Pianificazione di un refactoring complesso

262 

263```bash theme={null}

264claude --permission-mode plan

265```

266 

267```text theme={null}

268I need to refactor our authentication system to use OAuth2. Create a detailed migration plan.

269```

270 

271Claude analizza l'implementazione attuale e crea un piano completo. Affina con follow-up:

272 

273```text theme={null}

274What about backward compatibility?

275```

276 

277```text theme={null}

278How should we handle database migration?

279```

280 

281<Tip>Premi `Ctrl+G` per aprire il piano nel tuo editor di testo predefinito, dove puoi modificarlo direttamente prima che Claude proceda.</Tip>

282 

283Quando accetti un piano, Claude denomina automaticamente la sessione dal contenuto del piano. Il nome appare sulla barra del prompt e nel selettore di sessione. Se hai già impostato un nome con `--name` o `/rename`, accettare un piano non lo sovrascriverà.

284 

285### Configurare Plan Mode come predefinito

286 

287```json theme={null}

288// .claude/settings.json

289{

290 "permissions": {

291 "defaultMode": "plan"

292 }

293}

294```

295 

296Vedi la [documentazione delle impostazioni](/it/settings#available-settings) per ulteriori opzioni di configurazione.

297 

298***

299 

300## Lavorare con i test

301 

302Supponiamo che tu debba aggiungere test per il codice non coperto.

303 

304<Steps>

305 <Step title="Identificare il codice non testato">

306 ```text theme={null}

307 find functions in NotificationsService.swift that are not covered by tests

308 ```

309 </Step>

310 

311 <Step title="Generare lo scaffolding dei test">

312 ```text theme={null}

313 add tests for the notification service

314 ```

315 </Step>

316 

317 <Step title="Aggiungere casi di test significativi">

318 ```text theme={null}

319 add test cases for edge conditions in the notification service

320 ```

321 </Step>

322 

323 <Step title="Eseguire e verificare i test">

324 ```text theme={null}

325 run the new tests and fix any failures

326 ```

327 </Step>

328</Steps>

329 

330Claude può generare test che seguono i modelli e le convenzioni esistenti del tuo progetto. Quando chiedi test, sii specifico sul comportamento che desideri verificare. Claude esamina i tuoi file di test esistenti per abbinare lo stile, i framework e i modelli di asserzione già in uso.

331 

332Per una copertura completa, chiedi a Claude di identificare i casi limite che potresti aver perso. Claude può analizzare i tuoi percorsi di codice e suggerire test per condizioni di errore, valori limite e input inaspettati che sono facili da trascurare.

333 

334***

335 

336## Creare pull request

337 

338Puoi creare pull request chiedendo direttamente a Claude ("create a pr for my changes"), oppure guidare Claude attraverso i passaggi:

339 

340<Steps>

341 <Step title="Riassumere le tue modifiche">

342 ```text theme={null}

343 summarize the changes I've made to the authentication module

344 ```

345 </Step>

346 

347 <Step title="Generare una pull request">

348 ```text theme={null}

349 create a pr

350 ```

351 </Step>

352 

353 <Step title="Rivedere e affinare">

354 ```text theme={null}

355 enhance the PR description with more context about the security improvements

356 ```

357 </Step>

358</Steps>

359 

360Quando crei una PR utilizzando `gh pr create`, la sessione viene automaticamente collegata a quella PR. Puoi riprenderla in seguito con `claude --from-pr <number>`.

361 

362<Tip>

363 Rivedi la PR generata da Claude prima di inviarla e chiedi a Claude di evidenziare i rischi potenziali o le considerazioni.

364</Tip>

365 

366## Gestire la documentazione

367 

368Supponiamo che tu debba aggiungere o aggiornare la documentazione per il tuo codice.

369 

370<Steps>

371 <Step title="Identificare il codice non documentato">

372 ```text theme={null}

373 find functions without proper JSDoc comments in the auth module

374 ```

375 </Step>

376 

377 <Step title="Generare la documentazione">

378 ```text theme={null}

379 add JSDoc comments to the undocumented functions in auth.js

380 ```

381 </Step>

382 

383 <Step title="Rivedere e migliorare">

384 ```text theme={null}

385 improve the generated documentation with more context and examples

386 ```

387 </Step>

388 

389 <Step title="Verificare la documentazione">

390 ```text theme={null}

391 check if the documentation follows our project standards

392 ```

393 </Step>

394</Steps>

395 

396<Tip>

397 Suggerimenti:

398 

399 * Specifica lo stile di documentazione che desideri (JSDoc, docstrings, ecc.)

400 * Chiedi esempi nella documentazione

401 * Richiedi documentazione per API pubbliche, interfacce e logica complessa

402</Tip>

403 

404***

405 

406## Lavorare in note e cartelle non di codice

407 

408Claude Code funziona in qualsiasi directory. Eseguilo all'interno di un vault di note, una cartella di documentazione o qualsiasi raccolta di file markdown per cercare, modificare e riorganizzare il contenuto nello stesso modo in cui faresti con il codice.

409 

410La directory `.claude/` e `CLAUDE.md` si trovano insieme alle directory di configurazione di altri strumenti senza conflitti. Claude legge i file freschi ad ogni chiamata dello strumento, quindi vede le modifiche che fai in un'altra applicazione la prossima volta che legge quel file.

411 

412***

413 

414## Lavorare con le immagini

415 

416Supponiamo che tu debba lavorare con immagini nella tua base di codice e desideri l'aiuto di Claude nell'analizzare il contenuto dell'immagine.

417 

418<Steps>

419 <Step title="Aggiungere un'immagine alla conversazione">

420 Puoi utilizzare uno di questi metodi:

421 

422 1. Trascina e rilascia un'immagine nella finestra di Claude Code

423 2. Copia un'immagine e incollala nella CLI con ctrl+v (Non usare cmd+v)

424 3. Fornisci un percorso di immagine a Claude. Ad esempio, "Analyze this image: /path/to/your/image.png"

425 </Step>

426 

427 <Step title="Chiedere a Claude di analizzare l'immagine">

428 ```text theme={null}

429 What does this image show?

430 ```

431 

432 ```text theme={null}

433 Describe the UI elements in this screenshot

434 ```

435 

436 ```text theme={null}

437 Are there any problematic elements in this diagram?

438 ```

439 </Step>

440 

441 <Step title="Utilizzare le immagini per il contesto">

442 ```text theme={null}

443 Here's a screenshot of the error. What's causing it?

444 ```

445 

446 ```text theme={null}

447 This is our current database schema. How should we modify it for the new feature?

448 ```

449 </Step>

450 

451 <Step title="Ottenere suggerimenti di codice dal contenuto visivo">

452 ```text theme={null}

453 Generate CSS to match this design mockup

454 ```

455 

456 ```text theme={null}

457 What HTML structure would recreate this component?

458 ```

459 </Step>

460</Steps>

461 

462<Tip>

463 Suggerimenti:

464 

465 * Usa le immagini quando le descrizioni di testo sarebbero poco chiare o ingombranti

466 * Includi screenshot di errori, design dell'interfaccia utente o diagrammi per un contesto migliore

467 * Puoi lavorare con più immagini in una conversazione

468 * L'analisi delle immagini funziona con diagrammi, screenshot, mockup e altro

469 * Quando Claude fa riferimento a immagini (ad esempio, `[Image #1]`), `Cmd+Click` (Mac) o `Ctrl+Click` (Windows/Linux) il collegamento per aprire l'immagine nel tuo visualizzatore predefinito

470</Tip>

471 

472***

473 

474## Fare riferimento a file e directory

475 

476Usa @ per includere rapidamente file o directory senza aspettare che Claude li legga.

477 

478<Steps>

479 <Step title="Fare riferimento a un singolo file">

480 ```text theme={null}

481 Explain the logic in @src/utils/auth.js

482 ```

483 

484 Questo include il contenuto completo del file nella conversazione.

485 </Step>

486 

487 <Step title="Fare riferimento a una directory">

488 ```text theme={null}

489 What's the structure of @src/components?

490 ```

491 

492 Questo fornisce un elenco di directory con informazioni sui file.

493 </Step>

494 

495 <Step title="Fare riferimento alle risorse MCP">

496 ```text theme={null}

497 Show me the data from @github:repos/owner/repo/issues

498 ```

499 

500 Questo recupera i dati dai server MCP connessi utilizzando il formato @server:resource. Vedi [risorse MCP](/it/mcp#use-mcp-resources) per i dettagli.

501 </Step>

502</Steps>

503 

504<Tip>

505 Suggerimenti:

506 

507 * I percorsi dei file possono essere relativi o assoluti

508 * I riferimenti ai file @ aggiungono `CLAUDE.md` nella directory del file e nelle directory padre al contesto

509 * I riferimenti alle directory mostrano elenchi di file, non contenuti

510 * Puoi fare riferimento a più file in un singolo messaggio (ad esempio, "@file1.js and @file2.js")

511</Tip>

512 

513***

514 

515## Utilizzare il pensiero esteso (Thinking Mode)

516 

517[Extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) è abilitato per impostazione predefinita, dando a Claude lo spazio per ragionare attraverso problemi complessi passo dopo passo prima di rispondere. Questo ragionamento è visibile in modalità verbose, che puoi attivare con `Ctrl+O`. Durante il pensiero esteso, lo spinner mostra suggerimenti di progresso inline come "still thinking" e "almost done thinking" per indicare che Claude sta lavorando attivamente.

518 

519Inoltre, i [modelli che supportano lo sforzo](/it/model-config#adjust-effort-level) utilizzano il ragionamento adattivo: invece di un budget di token di pensiero fisso, il modello decide dinamicamente se e quanto pensare in base alla tua impostazione di livello di sforzo e al compito in questione. Il ragionamento adattivo consente a Claude di rispondere più velocemente ai prompt di routine e di riservare un pensiero più profondo ai passaggi che ne traggono beneficio.

520 

521Extended thinking è particolarmente prezioso per decisioni architettoniche complesse, bug impegnativi, pianificazione dell'implementazione multi-step e valutazione dei compromessi tra diversi approcci.

522 

523<Note>

524 Frasi come "think", "think hard" e "think more" sono interpretate come istruzioni di prompt regolari e non allocano token di pensiero.

525</Note>

526 

527### Configurare Thinking Mode

528 

529Il pensiero è abilitato per impostazione predefinita, ma puoi regolarlo o disabilitarlo.

530 

531| Ambito | Come configurare | Dettagli |

532| --------------------------------------------- | ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

533| **Livello di sforzo** | Esegui `/effort`, regola in `/model`, o imposta [`CLAUDE_CODE_EFFORT_LEVEL`](/it/env-vars) | Controlla la profondità del pensiero su [modelli supportati](/it/model-config#adjust-effort-level) |

534| **Parola chiave `ultrathink`** | Includi "ultrathink" in qualsiasi punto del tuo prompt | Aggiunge un'istruzione in-context che dice al modello di ragionare di più su quel turno. Non cambia il livello di sforzo stesso; vedi [Regola il livello di sforzo](/it/model-config#adjust-effort-level) per questo |

535| **Scorciatoia di attivazione/disattivazione** | Premi `Option+T` (macOS) o `Alt+T` (Windows/Linux) | Attiva/disattiva il pensiero per la sessione corrente (tutti i modelli). Potrebbe richiedere la [configurazione del terminale](/it/terminal-config) per abilitare le scorciatoie da tastiera Option |

536| **Predefinito globale** | Usa `/config` per attivare/disattivare Thinking Mode | Imposta il tuo predefinito in tutti i progetti (tutti i modelli).<br />Salvato come `alwaysThinkingEnabled` in `~/.claude/settings.json` |

537| **Limitare il budget dei token** | Imposta la variabile di ambiente [`MAX_THINKING_TOKENS`](/it/env-vars) | Limita il budget di pensiero a un numero specifico di token. Su modelli con ragionamento adattivo, solo `0` si applica a meno che il ragionamento adattivo non sia disabilitato. Esempio: `export MAX_THINKING_TOKENS=10000` |

538 

539Per visualizzare il processo di pensiero di Claude, premi `Ctrl+O` per attivare la modalità verbose e vedi il ragionamento interno visualizzato come testo grigio in corsivo.

540 

541### Come funziona il pensiero esteso

542 

543Extended thinking controlla quanto ragionamento interno Claude esegue prima di rispondere. Più pensiero fornisce più spazio per esplorare soluzioni, analizzare casi limite e autocorreggersi gli errori.

544 

545Su [modelli che supportano lo sforzo](/it/model-config#adjust-effort-level), il pensiero utilizza il ragionamento adattivo: il modello alloca dinamicamente i token di pensiero in base al livello di sforzo che selezioni. Questo è il modo consigliato per sintonizzare il compromesso tra velocità e profondità di ragionamento. Se desideri che Claude pensi più o meno spesso di quanto il tuo livello di sforzo produrrebbe altrimenti, puoi anche dirlo direttamente nel tuo prompt o in `CLAUDE.md`.

546 

547Con modelli più vecchi, il pensiero utilizza un budget fisso di token prelevato dalla tua allocazione di output. Il budget varia in base al modello; vedi [`MAX_THINKING_TOKENS`](/it/env-vars) per i massimali per modello. Puoi limitare il budget con quella variabile di ambiente, o disabilitare completamente il pensiero tramite `/config` o l'attivazione/disattivazione `Option+T`/`Alt+T`.

548 

549Su modelli con ragionamento adattivo, `MAX_THINKING_TOKENS` si applica solo quando impostato su `0` per disabilitare il pensiero, o quando `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` ripristina il modello al budget fisso. `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` si applica solo a Opus 4.6 e Sonnet 4.6. Opus 4.7 utilizza sempre il ragionamento adattivo e non supporta un budget di pensiero fisso. Vedi [variabili di ambiente](/it/env-vars).

550 

551<Warning>

552 Ti viene addebitato per tutti i token di pensiero utilizzati anche quando i riassunti di pensiero sono redatti. In modalità interattiva, il pensiero appare come uno stub compresso per impostazione predefinita. Imposta `showThinkingSummaries: true` in `settings.json` per mostrare riassunti completi.

553</Warning>

554 

555***

556 

557## Riprendere conversazioni precedenti

558 

559Quando avvii Claude Code, puoi riprendere una sessione precedente:

560 

561* `claude --continue` continua la conversazione più recente nella directory corrente

562* `claude --resume` apre un selettore di conversazione o riprende per nome

563* `claude --from-pr 123` riprende le sessioni collegate a una pull request specifica

564 

565Da una sessione attiva, usa `/resume` per passare a una conversazione diversa.

566 

567Quando la sessione selezionata è vecchia e abbastanza grande che rileggere la richiederebbe una quota sostanziale dei tuoi limiti di utilizzo, `--resume`, `--continue` e `/resume` offrono di riprendere da un riassunto invece di caricare la trascrizione completa. Questo prompt non è disponibile su Amazon Bedrock, Google Cloud Vertex AI o Microsoft Foundry.

568 

569Le sessioni vengono archiviate per directory di progetto. Per impostazione predefinita, il selettore `/resume` mostra le sessioni interattive dal worktree corrente, con scorciatoie da tastiera per ampliare l'elenco ad altri worktree o progetti, cercare, visualizzare l'anteprima e rinominare. Vedi [Utilizzare il selettore di sessione](#use-the-session-picker) di seguito per il riferimento completo delle scorciatoie.

570 

571Quando selezioni una sessione da un altro worktree dello stesso repository, Claude Code la riprende direttamente senza richiedere di cambiare directory prima. Selezionare una sessione da un progetto non correlato copia un comando `cd` e resume negli appunti.

572 

573La ripresa per nome si risolve nel repository corrente e nei suoi worktree. Sia `claude --resume <name>` che `/resume <name>` cercano una corrispondenza esatta e la riprendono direttamente, anche se la sessione si trova in un worktree diverso.

574 

575Quando il nome è ambiguo, `claude --resume <name>` apre il selettore con il nome pre-compilato come termine di ricerca. `/resume <name>` da una sessione attiva segnala un errore, quindi esegui `/resume` senza argomenti per aprire il selettore e scegliere.

576 

577Le sessioni create da `claude -p` o da invocazioni SDK non appaiono nel selettore, ma puoi comunque riprenderne una passando il suo ID di sessione direttamente a `claude --resume <session-id>`.

578 

579### Denominare le tue sessioni

580 

581Dai alle sessioni nomi descrittivi per trovarle in seguito. Questa è una best practice quando lavori su più attività o funzionalità.

582 

583<Steps>

584 <Step title="Denominare la sessione">

585 Denomina una sessione all'avvio con `-n`:

586 

587 ```bash theme={null}

588 claude -n auth-refactor

589 ```

590 

591 Oppure usa `/rename` durante una sessione, che mostra anche il nome sulla barra del prompt:

592 

593 ```text theme={null}

594 /rename auth-refactor

595 ```

596 

597 Puoi anche rinominare qualsiasi sessione dal selettore: esegui `/resume`, naviga a una sessione e premi `Ctrl+R`.

598 </Step>

599 

600 <Step title="Riprendere per nome in seguito">

601 Dalla riga di comando:

602 

603 ```bash theme={null}

604 claude --resume auth-refactor

605 ```

606 

607 O da una sessione attiva:

608 

609 ```text theme={null}

610 /resume auth-refactor

611 ```

612 </Step>

613</Steps>

614 

615### Utilizzare il selettore di sessione

616 

617Il comando `/resume` (o `claude --resume` senza argomenti) apre un selettore di sessione interattivo con queste funzionalità:

618 

619**Scorciatoie da tastiera nel selettore:**

620 

621| Scorciatoia | Azione |

622| :------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

623| `↑` / `↓` | Navigare tra le sessioni |

624| `→` / `←` | Espandere o comprimere le sessioni raggruppate |

625| `Enter` | Selezionare e riprendere la sessione evidenziata |

626| `Space` | Visualizzare l'anteprima del contenuto della sessione. `Ctrl+V` funziona anche su terminali che non lo catturano come incolla |

627| `Ctrl+R` | Rinominare la sessione evidenziata |

628| `/` o qualsiasi carattere stampabile diverso da `Space` | Entrare in modalità di ricerca e filtrare le sessioni |

629| `Ctrl+A` | Mostrare le sessioni da tutti i progetti su questa macchina. Premi di nuovo per ripristinare il repository corrente |

630| `Ctrl+W` | Mostrare le sessioni da tutti i worktree del repository corrente. Premi di nuovo per ripristinare il worktree corrente. Mostrato solo in repository con più worktree |

631| `Ctrl+B` | Filtrare le sessioni dal tuo ramo git corrente. Premi di nuovo per mostrare le sessioni da tutti i rami |

632| `Esc` | Uscire dal selettore o dalla modalità di ricerca |

633 

634**Organizzazione della sessione:**

635 

636Il selettore visualizza le sessioni con metadati utili:

637 

638* Nome della sessione se impostato, altrimenti il riassunto della conversazione o il primo prompt dell'utente

639* Tempo trascorso dall'ultima attività

640* Conteggio dei messaggi

641* Ramo Git (se applicabile)

642* Percorso del progetto, mostrato dopo l'ampliamento a tutti i progetti con `Ctrl+A`

643 

644Le sessioni fork (create con `/branch`, `/rewind`, o `--fork-session`) sono raggruppate insieme sotto la loro sessione radice, rendendo più facile trovare conversazioni correlate.

645 

646<Tip>

647 Suggerimenti:

648 

649 * **Denominare le sessioni in anticipo**: Usa `/rename` quando inizi a lavorare su un'attività distinta: è molto più facile trovare "payment-integration" che "explain this function" in seguito

650 * Usa `--continue` per un accesso rapido alla tua conversazione più recente nella directory corrente

651 * Usa `--resume session-name` quando sai quale sessione ti serve

652 * Usa `--resume` (senza un nome) quando hai bisogno di sfogliare e selezionare

653 * Per gli script, usa `claude --continue --print "prompt"` per riprendere in modalità non interattiva

654 * Premi `Space` nel selettore per visualizzare l'anteprima di una sessione prima di riprenderla

655 * La conversazione ripresa inizia con lo stesso modello e configurazione dell'originale

656 

657 Come funziona:

658 

659 1. **Archiviazione della conversazione**: Tutte le conversazioni vengono salvate automaticamente localmente con la loro cronologia completa dei messaggi

660 2. **Deserializzazione dei messaggi**: Quando si riprende, l'intera cronologia dei messaggi viene ripristinata per mantenere il contesto

661 3. **Stato dello strumento**: L'utilizzo dello strumento e i risultati della conversazione precedente vengono preservati

662 4. **Ripristino del contesto**: La conversazione riprende con tutto il contesto precedente intatto

663</Tip>

664 

665***

666 

667## Eseguire sessioni parallele di Claude Code con Git worktrees

668 

669Quando lavori su più attività contemporaneamente, hai bisogno che ogni sessione di Claude abbia la sua copia della base di codice in modo che le modifiche non si scontrino. I worktree Git risolvono questo creando directory di lavoro separate che hanno ciascuna i propri file e ramo, mentre condividono la stessa cronologia del repository e le connessioni remote. Ciò significa che puoi avere Claude che lavora su una funzionalità in un worktree mentre corregge un bug in un altro, senza che nessuna sessione interferisca con l'altra.

670 

671Usa il flag `--worktree` (`-w`) per creare un worktree isolato e avviare Claude in esso. Il valore che passi diventa il nome della directory del worktree e il nome del ramo:

672 

673```bash theme={null}

674# Avviare Claude in un worktree denominato "feature-auth"

675# Crea .claude/worktrees/feature-auth/ con un nuovo ramo

676claude --worktree feature-auth

677 

678# Avviare un'altra sessione in un worktree separato

679claude --worktree bugfix-123

680```

681 

682Se ometti il nome, Claude ne genera uno casuale automaticamente:

683 

684```bash theme={null}

685# Genera automaticamente un nome come "bright-running-fox"

686claude --worktree

687```

688 

689I worktree vengono creati in `<repo>/.claude/worktrees/<name>` e si diramano dal ramo remoto predefinito, che è dove `origin/HEAD` punta. Il ramo del worktree è denominato `worktree-<name>`.

690 

691Il ramo di base non è configurabile tramite un flag o un'impostazione di Claude Code. `origin/HEAD` è un riferimento archiviato nella tua directory `.git` locale che Git ha impostato una volta quando hai clonato. Se il ramo predefinito del repository cambia successivamente su GitHub o GitLab, il tuo `origin/HEAD` locale continua a puntare a quello vecchio, e i worktree si diramano da lì. Per risincronizzare il tuo riferimento locale con quello che il remoto considera attualmente il suo predefinito:

692 

693```bash theme={null}

694git remote set-head origin -a

695```

696 

697Questo è un comando Git standard che aggiorna solo la tua directory `.git` locale. Nulla sul server remoto cambia. Se desideri che i worktree si basino su un ramo specifico piuttosto che sul predefinito del remoto, impostalo esplicitamente con `git remote set-head origin your-branch-name`.

698 

699Per il controllo completo su come vengono creati i worktree, inclusa la scelta di una base diversa per invocazione, configura un [hook WorktreeCreate](/it/hooks#worktreecreate). L'hook sostituisce completamente la logica predefinita di `git worktree` di Claude Code, quindi puoi recuperare e diramati da qualsiasi ref di cui hai bisogno.

700 

701Puoi anche chiedere a Claude di "work in a worktree" o "start a worktree" durante una sessione, e creerà uno automaticamente.

702 

703### Worktree dei subagent

704 

705I subagent possono anche utilizzare l'isolamento del worktree per lavorare in parallelo senza conflitti. Chiedi a Claude di "use worktrees for your agents" o configuralo in un [subagent personalizzato](/it/sub-agents#supported-frontmatter-fields) aggiungendo `isolation: worktree` al frontmatter dell'agente. Ogni subagent ottiene il suo worktree che viene automaticamente pulito quando il subagent finisce senza modifiche.

706 

707### Pulizia del worktree

708 

709Quando esci da una sessione di worktree, Claude gestisce la pulizia in base al fatto che tu abbia apportato modifiche:

710 

711* **Nessuna modifica**: il worktree e il suo ramo vengono rimossi automaticamente

712* **Modifiche o commit esistenti**: Claude ti chiede se mantenere o rimuovere il worktree. Mantenere preserva la directory e il ramo in modo da poter tornare in seguito. Rimuovere elimina la directory del worktree e il suo ramo, scartando tutte le modifiche non sottoposte a commit e i commit

713 

714I worktree dei subagent orfani da un crash o da un'esecuzione parallela interrotta vengono rimossi automaticamente all'avvio una volta che sono più vecchi della tua impostazione [`cleanupPeriodDays`](/it/settings#available-settings), a condizione che non abbiano modifiche non sottoposte a commit, nessun file non tracciato e nessun commit non sottoposto a push. I worktree che crei con `--worktree` non vengono mai rimossi da questa pulizia.

715 

716Per pulire i worktree al di fuori di una sessione di Claude, usa la [gestione manuale del worktree](#manage-worktrees-manually).

717 

718<Tip>

719 Aggiungi `.claude/worktrees/` al tuo `.gitignore` per evitare che il contenuto del worktree appaia come file non tracciati nel tuo repository principale.

720</Tip>

721 

722### Copiare file ignorati da git nei worktree

723 

724I worktree Git sono checkout freschi, quindi non includono file non tracciati come `.env` o `.env.local` dal tuo repository principale. Per copiare automaticamente questi file quando Claude crea un worktree, aggiungi un file `.worktreeinclude` alla radice del tuo progetto.

725 

726Il file utilizza la sintassi `.gitignore` per elencare quali file copiare. Solo i file che corrispondono a un modello e sono anche ignorati da git vengono copiati, quindi i file tracciati non vengono mai duplicati.

727 

728```text .worktreeinclude theme={null}

729.env

730.env.local

731config/secrets.json

732```

733 

734Questo si applica ai worktree creati con `--worktree`, ai worktree dei subagent e alle sessioni parallele nell'[app desktop](/it/desktop#work-in-parallel-with-sessions).

735 

736### Gestire i worktree manualmente

737 

738Per un maggiore controllo sulla posizione del worktree e sulla configurazione del ramo, crea i worktree direttamente con Git. Questo è utile quando hai bisogno di controllare un ramo esistente specifico o posizionare il worktree al di fuori del repository.

739 

740```bash theme={null}

741# Creare un worktree con un nuovo ramo

742git worktree add ../project-feature-a -b feature-a

743 

744# Creare un worktree con un ramo esistente

745git worktree add ../project-bugfix bugfix-123

746 

747# Avviare Claude nel worktree

748cd ../project-feature-a && claude

749 

750# Pulire al termine

751git worktree list

752git worktree remove ../project-feature-a

753```

754 

755Scopri di più nella [documentazione ufficiale di Git worktree](https://git-scm.com/docs/git-worktree).

756 

757<Tip>

758 Ricorda di inizializzare il tuo ambiente di sviluppo in ogni nuovo worktree secondo la configurazione del tuo progetto. A seconda del tuo stack, questo potrebbe includere l'esecuzione dell'installazione delle dipendenze (`npm install`, `yarn`), la configurazione di ambienti virtuali o il seguire il processo di configurazione standard del tuo progetto.

759</Tip>

760 

761### Controllo della versione non git

762 

763L'isolamento del worktree funziona con git per impostazione predefinita. Per altri sistemi di controllo della versione come SVN, Perforce o Mercurial, configura gli hook [WorktreeCreate e WorktreeRemove](/it/hooks#worktreecreate) per fornire logica personalizzata di creazione e pulizia del worktree. Quando configurati, questi hook sostituiscono il comportamento git predefinito quando usi `--worktree`, quindi [`.worktreeinclude`](#copy-gitignored-files-to-worktrees) non viene elaborato. Copia qualsiasi file di configurazione locale all'interno dello script del tuo hook.

764 

765Per il coordinamento automatizzato di sessioni parallele con attività condivise e messaggistica, vedi [team di agenti](/it/agent-teams).

766 

767***

768 

769## Ricevere notifiche quando Claude ha bisogno della tua attenzione

770 

771Quando avvii un'attività a lunga esecuzione e passi a un'altra finestra, puoi configurare notifiche desktop in modo da sapere quando Claude finisce o ha bisogno del tuo input. Questo utilizza l'evento `Notification` [hook](/it/hooks-guide#get-notified-when-claude-needs-input), che si attiva ogni volta che Claude è in attesa di autorizzazione, inattivo e pronto per un nuovo prompt, o completando l'autenticazione.

772 

773<Steps>

774 <Step title="Aggiungere l'hook alle tue impostazioni">

775 Apri `~/.claude/settings.json` e aggiungi un hook `Notification` che chiama il comando di notifica nativa della tua piattaforma:

776 

777 <Tabs>

778 <Tab title="macOS">

779 ```json theme={null}

780 {

781 "hooks": {

782 "Notification": [

783 {

784 "matcher": "",

785 "hooks": [

786 {

787 "type": "command",

788 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

789 }

790 ]

791 }

792 ]

793 }

794 }

795 ```

796 </Tab>

797 

798 <Tab title="Linux">

799 ```json theme={null}

800 {

801 "hooks": {

802 "Notification": [

803 {

804 "matcher": "",

805 "hooks": [

806 {

807 "type": "command",

808 "command": "notify-send 'Claude Code' 'Claude Code needs your attention'"

809 }

810 ]

811 }

812 ]

813 }

814 }

815 ```

816 </Tab>

817 

818 <Tab title="Windows">

819 ```json theme={null}

820 {

821 "hooks": {

822 "Notification": [

823 {

824 "matcher": "",

825 "hooks": [

826 {

827 "type": "command",

828 "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""

829 }

830 ]

831 }

832 ]

833 }

834 }

835 ```

836 </Tab>

837 </Tabs>

838 

839 Se il tuo file di impostazioni ha già una chiave `hooks`, unisci la voce `Notification` in essa piuttosto che sovrascrivere. Puoi anche chiedere a Claude di scrivere l'hook per te descrivendo ciò che desideri nella CLI.

840 </Step>

841 

842 <Step title="Facoltativamente restringere il matcher">

843 Per impostazione predefinita l'hook si attiva su tutti i tipi di notifica. Per attivarsi solo per eventi specifici, imposta il campo `matcher` su uno di questi valori:

844 

845 | Matcher | Si attiva quando |

846 | :--------------------- | :----------------------------------------------------------- |

847 | `permission_prompt` | Claude ha bisogno che tu approvi un utilizzo dello strumento |

848 | `idle_prompt` | Claude ha finito ed è in attesa del tuo prossimo prompt |

849 | `auth_success` | L'autenticazione si completa |

850 | `elicitation_dialog` | Un server MCP apre un modulo di elicitazione |

851 | `elicitation_complete` | Un modulo di elicitazione MCP viene inviato o chiuso |

852 | `elicitation_response` | Una risposta di elicitazione MCP viene inviata al server |

853 </Step>

854 

855 <Step title="Verificare l'hook">

856 Digita `/hooks` e seleziona `Notification` per confermare che l'hook appare. Selezionarlo mostra il comando che verrà eseguito. Per testarlo end-to-end, chiedi a Claude di eseguire un comando che richiede autorizzazione e passa a un'altra finestra, oppure chiedi a Claude di attivare una notifica direttamente.

857 </Step>

858</Steps>

859 

860Per lo schema completo dell'evento e i tipi di notifica, vedi il [riferimento Notification](/it/hooks#notification).

861 

862***

863 

864## Utilizzare Claude come utilità di tipo unix

865 

866### Aggiungere Claude al tuo processo di verifica

867 

868Supponiamo che tu voglia utilizzare Claude Code come linter o revisore del codice.

869 

870**Aggiungere Claude al tuo script di build:**

871 

872```json theme={null}

873// package.json

874{

875 ...

876 "scripts": {

877 ...

878 "lint:claude": "claude -p 'you are a linter. please look at the changes vs. main and report any issues related to typos. report the filename and line number on one line, and a description of the issue on the second line. do not return any other text.'"

879 }

880}

881```

882 

883<Tip>

884 Suggerimenti:

885 

886 * Usa Claude per la revisione automatica del codice nella tua pipeline CI/CD

887 * Personalizza il prompt per verificare i problemi specifici rilevanti per il tuo progetto

888 * Considera di creare più script per diversi tipi di verifica

889</Tip>

890 

891### Pipe in, pipe out

892 

893Supponiamo che tu voglia inviare dati a Claude e ottenere dati in un formato strutturato.

894 

895**Inviare dati attraverso Claude:**

896 

897```bash theme={null}

898cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt

899```

900 

901<Tip>

902 Suggerimenti:

903 

904 * Usa i pipe per integrare Claude negli script shell esistenti

905 * Combina con altri strumenti Unix per flussi di lavoro potenti

906 * Considera di utilizzare `--output-format` per output strutturato

907</Tip>

908 

909### Controllare il formato di output

910 

911Supponiamo che tu abbia bisogno dell'output di Claude in un formato specifico, specialmente quando integri Claude Code in script o altri strumenti.

912 

913<Steps>

914 <Step title="Utilizzare il formato testo (predefinito)">

915 ```bash theme={null}

916 cat data.txt | claude -p 'summarize this data' --output-format text > summary.txt

917 ```

918 

919 Questo restituisce solo la risposta di testo semplice di Claude (comportamento predefinito).

920 </Step>

921 

922 <Step title="Utilizzare il formato JSON">

923 ```bash theme={null}

924 cat code.py | claude -p 'analyze this code for bugs' --output-format json > analysis.json

925 ```

926 

927 Questo restituisce un array JSON di messaggi con metadati inclusi costo e durata.

928 </Step>

929 

930 <Step title="Utilizzare il formato JSON in streaming">

931 ```bash theme={null}

932 cat log.txt | claude -p 'parse this log file for errors' --output-format stream-json

933 ```

934 

935 Questo restituisce una serie di oggetti JSON in tempo reale mentre Claude elabora la richiesta. Ogni messaggio è un oggetto JSON valido, ma l'intero output non è JSON valido se concatenato.

936 </Step>

937</Steps>

938 

939<Tip>

940 Suggerimenti:

941 

942 * Usa `--output-format text` per integrazioni semplici dove hai solo bisogno della risposta di Claude

943 * Usa `--output-format json` quando hai bisogno del registro completo della conversazione

944 * Usa `--output-format stream-json` per l'output in tempo reale di ogni turno di conversazione

945</Tip>

946 

947***

948 

949## Eseguire Claude su una pianificazione

950 

951Supponiamo che tu voglia che Claude gestisca un'attività automaticamente su base ricorrente, come rivedere le PR aperte ogni mattina, controllare le dipendenze settimanalmente o verificare i fallimenti di CI durante la notte.

952 

953Scegli un'opzione di pianificazione in base a dove desideri che l'attività venga eseguita:

954 

955| Opzione | Dove viene eseguita | Migliore per |

956| :---------------------------------------------------------- | :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

957| [Routines](/it/routines) | Infrastruttura gestita da Anthropic | Attività che dovrebbero essere eseguite anche quando il tuo computer è spento. Possono anche attivarsi su chiamate API o eventi GitHub oltre a una pianificazione. Configura su [claude.ai/code/routines](https://claude.ai/code/routines). |

958| [Attività pianificate desktop](/it/desktop-scheduled-tasks) | La tua macchina, tramite l'app desktop | Attività che hanno bisogno di accesso diretto a file locali, strumenti o modifiche non sottoposte a commit. |

959| [GitHub Actions](/it/github-actions) | La tua pipeline CI | Attività legate a eventi del repository come PR aperte, o pianificazioni cron che dovrebbero vivere insieme alla tua configurazione del flusso di lavoro. |

960| [`/loop`](/it/scheduled-tasks) | La sessione CLI corrente | Polling rapido mentre una sessione è aperta. Le attività si fermano quando inizi una nuova conversazione; `--resume` e `--continue` ripristinano quelle non scadute. |

961 

962<Tip>

963 Quando scrivi prompt per attività pianificate, sii esplicito su cosa significhi il successo e cosa fare con i risultati. L'attività viene eseguita autonomamente, quindi non può fare domande di chiarimento. Ad esempio: "Review open PRs labeled `needs-review`, leave inline comments on any issues, and post a summary in the `#eng-reviews` Slack channel."

964</Tip>

965 

966***

967 

968## Chiedere a Claude delle sue capacità

969 

970Claude ha accesso integrato alla sua documentazione e può rispondere a domande sulle sue stesse funzionalità e limitazioni.

971 

972### Domande di esempio

973 

974```text theme={null}

975can Claude Code create pull requests?

976```

977 

978```text theme={null}

979how does Claude Code handle permissions?

980```

981 

982```text theme={null}

983what skills are available?

984```

985 

986```text theme={null}

987how do I use MCP with Claude Code?

988```

989 

990```text theme={null}

991how do I configure Claude Code for Amazon Bedrock?

992```

993 

994```text theme={null}

995what are the limitations of Claude Code?

996```

997 

998<Note>

999 Claude fornisce risposte basate sulla documentazione a queste domande. Per dimostrazioni pratiche, esegui `/powerup` per lezioni interattive con demo animate, o fai riferimento alle sezioni di flusso di lavoro specifiche sopra.

1000</Note>

1001 

1002<Tip>

1003 Suggerimenti:

1004 

1005 * Claude ha sempre accesso alla documentazione più recente di Claude Code, indipendentemente dalla versione che stai utilizzando

1006 * Fai domande specifiche per ottenere risposte dettagliate

1007 * Claude può spiegare funzionalità complesse come integrazione MCP, configurazioni aziendali e flussi di lavoro avanzati

1008</Tip>

1009 

1010***

1011 

1012## Passaggi successivi

1013 

1014<CardGroup cols={2}>

1015 <Card title="Best practices" icon="lightbulb" href="/it/best-practices">

1016 Modelli per ottenere il massimo da Claude Code

1017 </Card>

1018 

1019 <Card title="Come funziona Claude Code" icon="gear" href="/it/how-claude-code-works">

1020 Comprendi il ciclo agentico e la gestione del contesto

1021 </Card>

1022 

1023 <Card title="Estendere Claude Code" icon="puzzle-piece" href="/it/features-overview">

1024 Aggiungi skills, hooks, MCP, subagent e plugin

1025 </Card>

1026 

1027 <Card title="Implementazione di riferimento" icon="code" href="https://github.com/anthropics/claude-code/tree/main/.devcontainer">

1028 Clona l'implementazione di riferimento del contenitore di sviluppo

1029 </Card>

1030</CardGroup>

communications-kit.md +557 −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# Kit di comunicazione

6 

7> Annunci di lancio, messaggi di campagna a goccia e risposte FAQ per il rollout di Claude Code nella vostra organizzazione di ingegneria.

8 

9Questa pagina è per gli amministratori e i responsabili dell'ingegneria che stanno implementando Claude Code in un team. Fornisce annunci di lancio pronti per la copia, una campagna di drip di suggerimenti e trucchi, e risposte FAQ in una riga per le domande che vi verranno poste più frequentemente.

10 

11<Note>

12 Trattate tutto qui come bozza, non come copia definitiva. Riscrivete ogni messaggio con la voce della vostra organizzazione, sostituite i compiti di esempio con bug e moduli reali dal vostro codebase, e sostituite i `[segnaposti tra parentesi]` prima di inviare. Gli annunci che guidano l'adozione sono quelli che sembrano scritti da qualcuno della vostra azienda.

13</Note>

14 

15## Comunicazioni di lancio

16 

17Un annuncio in due formati, più due varianti opzionali. Scegliete quello che si adatta meglio al vostro rollout e riscrivete da lì.

18 

19### Prima di inviare

20 

21Completate questa checklist prima che l'annuncio esca. Ogni elemento chiude un divario che altrimenti si trasforma in un thread di supporto nel giorno del lancio.

22 

23| Elemento | Perché è importante |

24| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

25| Canale `#claude-code` creato e collegato nel messaggio | Dà alle domande un unico posto dove arrivare |

26| Comando di installazione testato su almeno una macchina nel vostro ambiente | Cattura i problemi di proxy o firewall prima che tutti li colpiscano contemporaneamente |

27| Link di sicurezza e gestione dei dati pronto ([Data usage](/it/data-usage) o l'equivalente interno) | "Dove va il mio codice?" sarà la prima risposta |

28| Un compito concreto scelto, un bug reale o un file nel vostro codebase | Gli esempi generici non convertono; "correggi il test instabile in `auth_test.go`" sì |

29| Un proprietario nominato per il canale per le prime 48 ore | Le domande senza risposta nel giorno del lancio uccidono lo slancio |

30| Un sponsor della C-suite in linea per inviare o co-firmare l'annuncio | I lanci inviati da un dirigente vedono costantemente tassi di adozione più elevati nella prima settimana rispetto a quelli inviati da un amministratore o da un team di strumenti |

31 

32### L'annuncio

33 

34Usate questo come messaggio di rollout standard a livello di organizzazione. Spiega cos'è Claude Code, fornisce un percorso di installazione di due minuti, dà ai lettori un compito concreto da provare e risponde a "dove va il mio codice?" prima che qualcuno debba chiedere.

35 

36<Tabs>

37 <Tab title="Email">

38 ```text theme={null}

39 Subject: Claude Code è live per [Engineering / vostro team]

40 

41 Team,

42 

43 A partire da oggi avete accesso a Claude Code, un agente di codifica AI che

44 funziona nel vostro terminale, legge il vostro codebase effettivo e lavora

45 attraverso compiti reali da capo a fondo: debug, refactor, test, PR. Non è

46 autocomplete e non è una finestra di chat. Modifica file, esegue i vostri

47 comandi e chiede il permesso prima di fare qualcosa di rischioso.

48 

49 Iniziate in due minuti:

50 

51 curl -fsSL https://claude.ai/install.sh | bash

52 cd <your-repo>

53 claude

54 

55 Poi eseguite /init una volta. Claude legge il vostro progetto e scrive un

56 CLAUDE.md con i vostri comandi di build e convenzioni, così smettete di

57 re-spiegare le basi.

58 

59 Poi provate uno di questi nel repo in cui siete già:

60 

61 - "Il test in [file] è instabile. Scopri perché e correggilo"

62 - "Spiegami come [module] gestisce [X]"

63 - "Guarda il mio diff funzionante e dimmi cosa è rischioso prima che lo

64 spinga"

65 

66 Dove va il vostro codice: Claude Code funziona nel vostro terminale e parla

67 direttamente all'API di Anthropic, senza server di terze parti nel loop.

68 Chiede prima di modificare file o eseguire comandi. Secondo il nostro

69 accordo Enterprise, Anthropic non utilizza il vostro codice o i vostri

70 prompt per addestrare i suoi modelli.

71 Dettagli: https://code.claude.com/docs/it/data-usage

72 https://code.claude.com/docs/it/security

73 

74 Dove andare con le domande: #claude-code. [Owner name] lo sta monitorando

75 questa settimana.

76 

77 - [Name]

78 

79 P.S. Preferite il vostro editor? C'è un'estensione VS Code e un plugin

80 JetBrains. Lo stesso agente, nessun terminale richiesto.

81 ```

82 </Tab>

83 

84 <Tab title="Slack o Teams">

85 ```markdown theme={null}

86 🚀 *Claude Code è live per [team]*

87 

88 Agente di codifica AI, funziona nel vostro terminale, legge il vostro repo,

89 fa lavoro reale: bug, refactor, test, PR. Chiede prima di toccare qualcosa.

90 

91 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` → `claude`

92 

93 *Prima cosa da provare* → esegui `/init`, poi: "il test in [file] è

94 instabile, scopri perché e correggilo."

95 

96 🔒 Funziona nel vostro terminale, parla solo all'API di Anthropic. Secondo

97 il vostro piano Enterprise il vostro codice e i vostri prompt non vengono

98 utilizzati per addestrare i modelli.

99 Data usage → https://code.claude.com/docs/it/data-usage

100 

101 📚 Quickstart · VS Code · Corso gratuito di 1 ora

102 https://code.claude.com/docs/it/quickstart

103 https://code.claude.com/docs/it/vs-code

104 https://anthropic.skilljar.com/claude-code-in-action

105 

106 Domande → questo thread. [Owner] è il responsabile.

107 ```

108 </Tab>

109</Tabs>

110 

111### Variante sponsor esecutivo

112 

113Inviate questo dal vostro dirigente sponsor, come il CTO, CIO o SVP Engineering, con il loro nome e dal loro account. I lanci che escono con il nome di un dirigente vedono costantemente tassi di apertura più elevati e attivazione più veloce nella prima settimana rispetto allo stesso messaggio da un amministratore o da un team di strumenti. Segnala una priorità aziendale piuttosto che un esperimento opzionale.

114 

115Questa versione è deliberatamente ridotta a una richiesta: installatelo ed eseguitelo su un compito reale. Il lavoro del dirigente è far atterrare la richiesta; l'annuncio standard e `#claude-code` gestiscono il come.

116 

117<Tabs>

118 <Tab title="Email">

119 ```text theme={null}

120 Subject: Una cosa che vorrei che ogni ingegnere provasse questa settimana

121 

122 Team,

123 

124 Abbiamo attivato Claude Code per tutto l'ingegneria. È un agente AI che

125 funziona direttamente nel vostro terminale, sul vostro codebase effettivo,

126 e i risultati iniziali dei team che lo stanno già utilizzando sono

127 abbastanza forti che voglio che tutti lo usino questa settimana.

128 

129 Vi chiedo dieci minuti:

130 

131 curl -fsSL https://claude.ai/install.sh | bash

132 cd <your-repo>

133 claude

134 

135 Poi dategli un compito reale: il bug che state rimandando, o "spiegami come

136 funziona [module]".

137 

138 Questa è tutta la richiesta. [Owner name] e il team sono in #claude-code

139 per qualsiasi cosa incontriate lungo il percorso.

140 

141 - [Exec Name]

142 [Title]

143 ```

144 </Tab>

145 

146 <Tab title="Slack o Teams">

147 ```markdown theme={null}

148 📣 *Da [Exec Name]: una cosa da provare questa settimana*

149 

150 Abbiamo attivato *Claude Code* per tutto l'ingegneria. I risultati iniziali

151 sono abbastanza forti che sto chiedendo a tutti di dargli dieci minuti su

152 lavoro reale questa settimana.

153 

154 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` →

155 `claude` → dategli un compito reale.

156 

157 Questo è tutto. Domande → #claude-code.

158 ```

159 </Tab>

160</Tabs>

161 

162### Variante gruppo pilota

163 

164Usate per un rollout in fasi. Inviate solo al gruppo pilota.

165 

166```text theme={null}

167Subject: Siete nel pilota di Claude Code

168 

169[Name / team],

170 

171Siete nella prima ondata di Claude Code presso [company]. Abbiamo scelto

172questo gruppo perché lo metterete su problemi reali e ci direte la verità

173al riguardo.

174 

175La richiesta: usatelo su almeno un compito reale questa settimana, poi

176lasciate una nota in #claude-code-pilot coprendo cosa ha funzionato, cosa

177era fastidioso e cosa vi ha sorpreso. Questo feedback decide come lo

178implementiamo a tutti gli altri.

179 

180[Continuate con "Iniziate in due minuti" dall'annuncio standard]

181 

182Una cosa extra per i piloti: al vostro primo cambio multi-file, premete

183Shift+Tab finché non vedete "plan". Claude esporrà esattamente cosa intende

184fare prima di toccare un file. È il modo più veloce per calibrare quanto

185fidarsi.

186```

187 

188### DM di reclutamento di campioni

189 

190Dopo il lancio, inviate un DM alle due o tre persone più attive in

191`#claude-code`.

192 

193```text theme={null}

194Ehi [name], i tuoi post su #claude-code stanno facendo più per l'adozione

195del mio annuncio. Un paio di persone mi hanno detto che il tuo [thread /

196screenshot] era il motivo per cui l'hanno effettivamente provato.

197 

198Vuoi renderlo semi-ufficiale? Poco sforzo: principalmente continua a

199postare quello che stai postando, più il primo accesso alle nuove funzioni

200e una linea diretta al team di Anthropic. Posso condividere un breve

201playbook se sei interessato.

202```

203 

204## Campagna di suggerimenti e trucchi

205 

206Messaggi Slack o Teams pronti per incollare progettati per guidare l'attivazione delle funzioni dopo il lancio. Ognuno segue lo stesso schema: un gancio, il payoff, un prompt "provalo ora" e un link alla documentazione. Distribuiteli uno o due a settimana in `#claude-code`, o scegliete la manciata che corrisponde ai gap del vostro team. Stanno da soli senza ordine richiesto.

207 

208Copiate il corpo del messaggio da ogni blocco direttamente in Slack o Teams. Sostituite i `[segnaposti tra parentesi]` prima di inviare.

209 

210### Iniziare

211 

212**Scegliere il modello giusto**

213 

214```markdown theme={null}

215🎯 *Suggerimento: Abbina il modello al momento*

216 

217Usare Opus per correggere un errore di battitura brucia il calcolo. Usare

218Haiku per un refactor di 12 file è chiedere un rifacimento.

219 

220Claude Code funziona sugli stessi modelli dell'app Claude, e potete

221cambiare a metà sessione. *Sonnet* è il cavallo da lavoro predefinito per

222il lavoro di funzionalità quotidiana, bug, test e revisioni. Raggiungete

223*Opus* su refactor su larga scala, debug complicati o qualsiasi cosa ad

224alto rischio. Scendete a *Haiku* per domande rapide, formattazione e

225modifiche meccaniche dove la velocità vince.

226 

227*Provalo ora:* digitate `/model` e scegliete Sonnet se non l'avete già

228fatto. È il default giusto per la maggior parte dei compiti.

229 

230📖 Configurazione del modello → https://code.claude.com/docs/it/model-config

231```

232 

233| Modello | Migliore per |

234| ------- | ---------------------------------------------------------------------------------------------------------------------- |

235| Opus | Refactor su larga scala, debug complessi, decisioni architettoniche, cambiamenti ad alto rischio |

236| Sonnet | Lavoro di funzionalità quotidiana, correzioni di bug, test, documentazione, revisione del codice. Default consigliato. |

237| Haiku | Domande rapide, formattazione, modifiche meccaniche, iterazione rapida |

238 

239**Vittorie rapide da provare per prime**

240 

241```markdown theme={null}

242🚀 *Suggerimento: Tre cose da provare nei vostri primi 10 minuti*

243 

244Installato Claude Code ma non siete sicuri di cosa effettivamente chiedere?

245Iniziate con le cose che vi hanno infastidito tutta la settimana.

246 

247 - Correggete qualcosa di fastidioso: "il test in [file] è instabile,

248 scopri perché"

249 - Orientatevi nel codice che non avete scritto: "spiegami come funziona

250 [module]"

251 - Sanity-check prima di spingere: "guarda il mio diff funzionante e

252 dimmi cosa sembra rischioso"

253 

254Nessuno di questi ha bisogno di setup. Basta `cd` nel vostro repo ed

255eseguite `claude`.

256 

257*Provalo ora:* scegliete il bug che state evitando e incollate il messaggio

258di errore.

259 

260📖 Quickstart → https://code.claude.com/docs/it/quickstart

261```

262 

263### Memoria del progetto

264 

265**`/init` e CLAUDE.md**

266 

267```markdown theme={null}

268📁 *Suggerimento: Smettete di re-spiegare il vostro repo ogni sessione*

269 

270Dire a Claude "usiamo pnpm, non npm" per la quinta volta? C'è una soluzione

271una tantum.

272 

273Eseguite `/init` una volta per repo. Claude legge la struttura del vostro

274progetto e scrive un file CLAUDE.md con i vostri comandi di build,

275architettura e convenzioni. Ogni sessione futura in quel repo inizia da

276questo file automaticamente. Mantenetelo sotto due schermate. È un foglio

277di aiuto, non documentazione.

278 

279*Provalo ora:* aprite il vostro repo principale, eseguite `claude`, digitate

280`/init`. Trenta secondi, ripaga ogni sessione dopo.

281 

282📖 CLAUDE.md e memoria del progetto → https://code.claude.com/docs/it/memory

283```

284 

285**Riferimenti @**

286 

287```markdown theme={null}

288📎 *Suggerimento: Smettete di incollare i contenuti dei file nella chat*

289 

290Copiare 200 righe di un componente nel vostro prompt in modo che Claude

291possa "vederlo"? Non dovete.

292 

293Digitate `@` poi un percorso di file. Claude tira il file direttamente nel

294contesto. Funziona anche per intere directory.

295 

296> gli stili in @src/components/Button.tsx sembrano sbagliati, controlla

297> contro @docs/design-system.md

298 

299*Provalo ora:* digitate `@` poi Tab. L'autocomplete vi mostra ogni file a

300portata.

301 

302📖 Riferimento ai file → https://code.claude.com/docs/it/common-workflows

303```

304 

305### Controllo e sicurezza

306 

307**Modalità di permesso**

308 

309```markdown theme={null}

310🛡️ *Suggerimento: Un tasto tra "guarda ma non toccare" e "fallo e basta"*

311 

312A volte volete che Claude chieda prima di ogni modifica. A volte volete

313solo che lo faccia. Non dovreste dover scegliere uno per sempre.

314 

315*Shift+Tab* cicla attraverso quanto guinzaglio Claude ottiene: *default*

316chiede prima di cose rischiose, *acceptEdits* lascia fluire le modifiche

317ai file e i comandi comuni del filesystem mentre controlla ancora prima di

318altri comandi shell, e *plan* propone cambiamenti per la vostra approvazione

319prima che qualcosa sia toccato. La modalità Plan è il costruttore di

320fiducia, quindi iniziate da lì per qualsiasi cosa che tocchi più file.

321 

322*Provalo ora:* al vostro prossimo refactor, premete Shift+Tab finché non

323vedete "plan", poi descrivete il cambiamento. Otterrete una proposta

324completa prima che un singolo file si muova.

325 

326📖 Modalità di permesso → https://code.claude.com/docs/it/permissions

327```

328 

329**Checkpointing e `/rewind`**

330 

331```markdown theme={null}

332⏪ *Suggerimento: C'è un pulsante di annullamento per l'intera conversazione*

333 

334Claude è andato nella direzione sbagliata tre turni fa e ora lo state

335districando? Non dovete aggiustare in avanti.

336 

337`/rewind` torna a un punto precedente nella conversazione, inclusi i

338cambiamenti ai file che Claude ha fatto lungo il percorso. Il checkpointing

339è automatico; non dovete impostare nulla.

340 

341*Provalo ora:* premete *Esc* due volte per aprire il menu di rewind, o

342digitate `/rewind`. Scegliete il punto prima che le cose andassero di

343traverso.

344 

345📖 Checkpointing → https://code.claude.com/docs/it/checkpointing

346```

347 

348### Connettete i vostri strumenti

349 

350**Connettori MCP**

351 

352```markdown theme={null}

353🔌 *Suggerimento: Lasciate che Claude legga il vostro issue tracker così

354non dovete incollare i ticket*

355 

356Incollare i ticket Jira nel terminale sembra un passo indietro. Lo è.

357 

358Un file di configurazione (`.mcp.json` alla radice del vostro progetto)

359collega Claude a GitHub, Jira, Linear, o qualsiasi tracker usiate. Poi

360"qual è il problema di priorità più alta assegnato a me?" e "vai avanti e

361correggilo" accadono nella stessa conversazione.

362 

363*Provalo ora:* chiedete a Claude "configura un connettore MCP per

364[GitHub/Jira/Linear] in questo repo". Scriverà la configurazione per voi.

365 

366📖 Connettori MCP → https://code.claude.com/docs/it/mcp

367```

368 

369### Automatizzate i vostri flussi di lavoro

370 

371**Skills**

372 

373```markdown theme={null}

374⚡ *Suggerimento: Trasformate quel prompt che continuate a riscrivere in un

375comando*

376 

377Digitato "riassumi quello su cui ho lavorato oggi da git log, formattalo per

378standup" tre volte questa settimana? Questo è un comando slash in attesa di

379accadere.

380 

381Un file SKILL.md in `.claude/skills/<name>/` diventa un prompt riutilizzabile;

382digitate `/<name>` per eseguirlo. Fatene uno la seconda volta che digitate

383un prompt multi-step che avete digitato prima. Percorso più facile: chiedete

384a Claude di farlo per voi.

385 

386*Provalo ora:* digitate "fammi uno skill /standup che riassume quello su cui

387ho lavorato oggi da git log", poi eseguite `/standup` domani mattina.

388 

389📖 Skills → https://code.claude.com/docs/it/skills

390```

391 

392**Hooks**

393 

394```markdown theme={null}

395🔔 *Suggerimento: Ricevete una notifica quando il vostro refactor finisce*

396 

397Seduti alla vostra scrivania a guardare Claude lavorare attraverso un

398compito lungo? Avete cose migliori da fare per questi otto minuti.

399 

400Gli hooks sono comandi shell che si attivano su eventi di Claude Code. Un

401hook Stop che invia una notifica desktop significa che potete avviare un

402refactor lungo, allontanarvi e ricevere una notifica nel momento in cui è

403finito.

404 

405*Provalo ora:* chiedete a Claude "aggiungi un hook Stop che invia una

406notifica desktop quando finisci". Scriverà lo script e lo collegherà.

407 

408📖 Guida agli hooks → https://code.claude.com/docs/it/hooks-guide

409```

410 

411### Sviluppo giorno per giorno

412 

413**Screenshot e immagini**

414 

415```markdown theme={null}

416📸 *Suggerimento: Smettete di descrivere la finestra di dialogo di errore.

417Mostratela.*

418 

419Digitare "c'è una scatola rossa che dice qualcosa su un riferimento nullo e

420sta puntando alla riga 47-ish"? Fate uno screenshot.

421 

422Trascinate uno screenshot direttamente nel terminale e Claude lo vede:

423finestre di dialogo di errore, mockup UI, foto di lavagna, esportazioni

424Figma. *Ctrl+V* incolla dagli appunti (usate Ctrl+V anche su macOS, non

425Cmd+V).

426 

427*Provalo ora:* la prossima volta che qualcosa di visivo si rompe, fate uno

428screenshot e incollatelo direttamente nel prompt. Poi digitate semplicemente

429"cosa c'è di sbagliato qui?"

430 

431📖 Lavorare con le immagini → https://code.claude.com/docs/it/common-workflows

432```

433 

434**Flussi di lavoro Git**

435 

436```markdown theme={null}

437🌿 *Suggerimento: Passate tutta la cerimonia git*

438 

439La correzione ha richiesto 5 minuti. Il messaggio di commit, il ramo e la

440descrizione PR ne hanno richiesti 15. Quel rapporto è sbagliato.

441 

442Claude gestisce l'intero flusso git: commit con messaggi convenzionali,

443rami, PR con riepiloghi appropriati. Una richiesta: "correggi l'off-by-one,

444commit con un messaggio di commit convenzionale e apri una PR." Rivedete il

445lavoro di qualcun altro? Incollate l'URL della PR e chiedete a Claude di

446spiegarvi il diff.

447 

448*Provalo ora:* dopo la vostra prossima correzione, invece di passare al

449vostro client git, digitate semplicemente "commit questo con un buon

450messaggio e apri una PR".

451 

452📖 Creazione di pull request → https://code.claude.com/docs/it/common-workflows

453```

454 

455### Condividete e scalate

456 

457**Plugins**

458 

459```markdown theme={null}

460📦 *Suggerimento: Qualcuno probabilmente ha già costruito quella skill*

461 

462Stai per spendere un'ora a costruire un comando `/deploy`? Controlla se

463esiste già.

464 

465Le skills vengono raggruppate e condivise come plugin. `/plugin` sfoglia

466cosa è disponibile e installa in un passaggio. Cinque minuti di sfogliamento

467possono risparmiare un'ora di costruzione.

468 

469*Provalo ora:* digitate `/plugin` e scorrete. Troverete almeno una cosa che

470non sapevate di volere.

471 

472📖 Plugins → https://code.claude.com/docs/it/plugins

473```

474 

475### Sicurezza e amministrazione

476 

477**Architettura di sicurezza**

478 

479```markdown theme={null}

480🔐 *Suggerimento: La risposta a "è sicuro?" per la prossima volta che vi

481viene chiesto*

482 

483Qualcuno nel vostro team chiederà "aspetta, dove va il mio codice?" Ecco la

484versione breve che potete incollare.

485 

486Permission-first per design. Ogni modifica di file, comando shell e chiamata

487esterna è controllata dalla vostra approvazione. La CLI funziona nel vostro

488terminale e parla direttamente all'API di Anthropic, senza server di terze

489parti, e supporta sandboxing opzionale a livello di OS per i comandi shell.

490Secondo il vostro piano Enterprise, Anthropic non utilizza il vostro codice

491o i vostri prompt per addestrare i suoi modelli.

492 

493*Provalo ora:* salvate questi due link per la prossima volta che la domanda

494viene posta. Rispondono alla maggior parte delle domande di revisione della

495sicurezza.

496 

497📖 https://code.claude.com/docs/it/security

498📖 https://code.claude.com/docs/it/data-usage

499```

500 

501**Best practice**

502 

503```markdown theme={null}

504✅ *Suggerimento: Le 4 abitudini che separano "l'ho provato una volta" da

505"lo uso quotidianamente"*

506 

507La maggior parte delle persone che rimbalzano da Claude Code ne hanno

508saltata una. La maggior parte delle persone che rimangono le hanno fatte

509tutte quattro nella prima settimana.

510 

511 - Iniziate in modalità plan per qualsiasi cosa che tocchi più file

512 - Eseguite /init presto; il contesto si compone

513 - Rivedete i diff prima di fare il commit; Claude può essere

514 confidentemente sbagliato

515 - Verificate i cambiamenti che toccano percorsi critici; trattate come

516 un junior acuto, non un oracolo

517 

518*Provalo ora:* se ne avete fatto solo uno o due, scegliete quello che state

519perdendo e fatelo al vostro prossimo compito. Pubblicate cosa è cambiato in

520#claude-code.

521 

522📖 Best practice → https://code.claude.com/docs/it/best-practices

523```

524 

525## Riferimento rapido

526 

527### Risposte FAQ

528 

529Risposte in una riga per le domande che vi verranno poste più frequentemente.

530 

531| Domanda | Risposta |

532| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

533| "Funziona in VS Code?" | Sì. C'è un'estensione VS Code e un plugin JetBrains con le stesse funzioni, incorporati nel vostro editor. [VS Code →](/it/vs-code) |

534| "Devo configurare qualcosa prima?" | No. Installate, poi eseguite `claude` in qualsiasi repo. Eseguite `/init` una volta e siete a posto. [Quickstart →](/it/quickstart) |

535| "Dove va il mio codice?" | La CLI funziona nel vostro terminale e invia il contesto all'API di Anthropic per l'inferenza, senza server di terze parti. Secondo il vostro piano Enterprise, il vostro codice e i vostri prompt non vengono utilizzati per addestrare i modelli. [Data usage →](/it/data-usage) |

536| "Può vedere il mio intero repo?" | Legge quello a cui gli date accesso. Le letture di file all'interno della vostra directory di lavoro non richiedono prompt; i prompt di permesso controllano le modifiche, i comandi shell e qualsiasi cosa al di fuori di quella directory. [Permissions →](/it/permissions) |

537| "Come è diverso da Copilot?" | Copilot completa le righe. Claude Code è un agente che legge file, esegue comandi e fa modifiche multi-file. [Overview →](/it/overview) |

538| "Cosa dovrei provare per primo?" | Un bug che state rimandando perché è tedioso. "Il test in \[file] è instabile, scopri perché." [Quickstart →](/it/quickstart) |

539 

540### Modelli di prompt

541 

542Condividete questi prompt iniziali con gli ingegneri che hanno installato ma non sono sicuri di cosa chiedere. Ognuno è formulato nel modo in cui verrebbe digitato in una sessione reale; sostituite i pezzi tra parentesi con file dal vostro repo.

543 

544| Compito | Prompt |

545| -------------------------- | ---------------------------------------------------------------------------------- |

546| Correggere un bug | "i test in \[file] stanno fallendo, scopri perché e correggili" |

547| Comprendere il codice | "spiegami come funziona \[module], poi dimmi dov'è il punto di ingresso" |

548| Refactor sicuro | "refactor \[module] a \[goal], usa la modalità plan così posso rivedere prima" |

549| Scrivere test | "scrivi test per \[file] che coprano i casi limite intorno a \[scenario]" |

550| Revisione prima del commit | "guarda il mio diff funzionante e dimmi cosa sembra rischioso" |

551| Aprire una PR | "correggi \[issue], scrivi un commit convenzionale e apri una PR con un riassunto" |

552| Fare una skill | "fammi uno skill /ship che esegue test e lint prima del commit" |

553| Debug di uno stack trace | "ecco lo stack trace, trova la causa principale, non limitarti a coprirla" |

554 

555<Tip>

556 Claude Code viene spedito frequentemente. Verificate i dettagli specifici della versione rispetto alla [pagina iniziale della documentazione](/it/overview) prima di distribuire internamente.

557</Tip>

computer-use.md +207 −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# Consenti a Claude di usare il tuo computer dalla CLI

6 

7> Abilita computer use in Claude Code CLI affinché Claude possa aprire app, fare clic, digitare e vedere il tuo schermo su macOS. Testa app native, esegui il debug di problemi visivi e automatizza strumenti solo GUI senza lasciare il tuo terminale.

8 

9<Note>

10 {/* plan-availability: feature=computer-use plans=pro,max */}

11 

12 Computer use è un'anteprima di ricerca su macOS che richiede un piano Pro o Max. Non è disponibile nei piani Team o Enterprise. Richiede Claude Code v2.1.85 o successivo e una sessione interattiva, quindi non è disponibile in modalità non interattiva con il flag `-p`.

13</Note>

14 

15Computer use consente a Claude di aprire app, controllare il tuo schermo e lavorare sulla tua macchina come faresti tu. Dalla CLI, Claude può compilare un'app Swift, avviarla, fare clic su ogni pulsante e acquisire uno screenshot del risultato, il tutto nella stessa conversazione in cui ha scritto il codice.

16 

17Questa pagina spiega come funziona computer use nella CLI. Per l'app Desktop, vedi [computer use in Desktop](/it/desktop#let-claude-use-your-computer).

18 

19## Cosa puoi fare con computer use

20 

21Computer use gestisce attività che richiedono una GUI: qualsiasi cosa che normalmente dovresti lasciare il terminale e fare manualmente.

22 

23* **Compila e convalida app native**: chiedi a Claude di compilare un'app menu bar di macOS. Claude scrive lo Swift, lo compila, avvia l'app e fa clic su ogni controllo per verificare che funzioni prima che tu la apra.

24* **Test UI end-to-end**: punta Claude a un'app Electron locale e dì "testa il flusso di onboarding." Claude apre l'app, fa clic attraverso l'iscrizione e acquisisce uno screenshot di ogni passaggio. Nessuna configurazione Playwright, nessun test harness.

25* **Esegui il debug di problemi visivi e di layout**: dì a Claude "il modale si taglia su finestre piccole." Claude ridimensiona la finestra, riproduce il bug, acquisisce uno screenshot, corregge il CSS e verifica la correzione. Claude vede quello che vedi tu.

26* **Guida strumenti solo GUI**: interagisci con strumenti di progettazione, pannelli di controllo hardware, iOS Simulator o app proprietarie che non hanno CLI o API.

27 

28## Quando si applica computer use

29 

30Claude ha diversi modi per interagire con un'app o un servizio. Computer use è il più ampio e lento, quindi Claude prova prima lo strumento più preciso:

31 

32* Se hai un [server MCP](/it/mcp) per il servizio, Claude lo usa.

33* Se l'attività è un comando shell, Claude usa Bash.

34* Se l'attività è lavoro nel browser e hai [Claude in Chrome](/it/chrome) configurato, Claude lo usa.

35* Se nessuno di questi si applica, Claude usa computer use.

36 

37Il controllo dello schermo è riservato a cose che nient'altro può raggiungere: app native, simulatori e strumenti senza API.

38 

39## Abilita computer use

40 

41Computer use è disponibile come server MCP integrato chiamato `computer-use`. È disabilitato per impostazione predefinita finché non lo abiliti.

42 

43<Steps>

44 <Step title="Apri il menu MCP">

45 In una sessione interattiva di Claude Code, esegui:

46 

47 ```text theme={null}

48 /mcp

49 ```

50 

51 Trova `computer-use` nell'elenco dei server. Viene mostrato come disabilitato.

52 </Step>

53 

54 <Step title="Abilita il server">

55 Seleziona `computer-use` e scegli **Enable**. L'impostazione persiste per progetto, quindi lo fai una sola volta per ogni progetto in cui desideri computer use.

56 </Step>

57 

58 <Step title="Concedi le autorizzazioni di macOS">

59 La prima volta che Claude tenta di usare il tuo computer, vedrai un prompt per concedere due autorizzazioni di macOS:

60 

61 * **Accessibility**: consente a Claude di fare clic, digitare e scorrere

62 * **Screen Recording**: consente a Claude di vedere cosa c'è sullo schermo

63 

64 Il prompt include link per aprire il riquadro Impostazioni di sistema pertinente. Concedi entrambi, quindi seleziona **Try again** nel prompt. macOS potrebbe richiedere il riavvio di Claude Code dopo aver concesso Screen Recording.

65 </Step>

66</Steps>

67 

68Dopo la configurazione, chiedi a Claude di fare qualcosa che necessita della GUI:

69 

70```text theme={null}

71Build the app target, launch it, and click through each tab to make

72sure nothing crashes. Screenshot any error states you find.

73```

74 

75## Approva app per sessione

76 

77L'abilitazione del server `computer-use` non concede a Claude l'accesso a ogni app sulla tua macchina. La prima volta che Claude ha bisogno di un'app specifica in una sessione, nel tuo terminale appare un prompt che mostra:

78 

79* Quali app Claude vuole controllare

80* Eventuali autorizzazioni aggiuntive richieste, come l'accesso agli appunti

81* Quante altre app saranno nascoste mentre Claude lavora

82 

83Scegli **Allow for this session** o **Deny**. Le approvazioni durano per la sessione corrente. Puoi approvare più app contemporaneamente quando Claude le richiede insieme.

84 

85Le app con ampia portata mostrano un avviso aggiuntivo nel prompt in modo che tu sappia cosa concedere:

86 

87| Avviso | Si applica a |

88| :---------------------------------------- | :----------------------------------------------------- |

89| Equivalente all'accesso shell | Terminal, iTerm, VS Code, Warp e altri terminali e IDE |

90| Può leggere o scrivere qualsiasi file | Finder |

91| Può modificare le impostazioni di sistema | System Settings |

92 

93Queste app non sono bloccate. L'avviso ti consente di decidere se l'attività giustifica quel livello di accesso.

94 

95Il livello di controllo di Claude varia anche per categoria di app: i browser e le piattaforme di trading sono di sola visualizzazione, i terminali e gli IDE sono di sola clic e tutto il resto ottiene il controllo completo. Vedi [app permissions in Desktop](/it/desktop#app-permissions) per la suddivisione completa dei livelli.

96 

97## Come Claude lavora sul tuo schermo

98 

99Comprendere il flusso ti aiuta ad anticipare cosa farà Claude e come intervenire.

100 

101### Una sessione alla volta

102 

103Computer use mantiene un blocco a livello di macchina mentre è attivo. Se un'altra sessione di Claude Code sta già usando il tuo computer, i nuovi tentativi falliscono con un messaggio che ti dice quale sessione tiene il blocco. Termina o esci da quella sessione per primo.

104 

105### Le app sono nascoste mentre Claude lavora

106 

107Quando Claude inizia a controllare il tuo schermo, altre app visibili vengono nascoste in modo che Claude interagisca solo con le app approvate. La finestra del tuo terminale rimane visibile ed è esclusa dagli screenshot, quindi puoi guardare la sessione e Claude non vede mai il suo stesso output.

108 

109Quando Claude termina il turno, le app nascoste vengono ripristinate automaticamente.

110 

111### Ferma in qualsiasi momento

112 

113Quando Claude acquisisce il blocco, appare una notifica di macOS: "Claude is using your computer · press Esc to stop." Premi `Esc` ovunque per interrompere immediatamente l'azione corrente, oppure premi `Ctrl+C` nel terminale. In entrambi i casi, Claude rilascia il blocco, mostra di nuovo le tue app e ti restituisce il controllo.

114 

115Una seconda notifica appare quando Claude ha finito.

116 

117## Sicurezza e il confine di fiducia

118 

119<Warning>

120 A differenza dello [strumento Bash in sandbox](/it/sandboxing), computer use viene eseguito sul tuo desktop effettivo con accesso alle app che approvi. Claude controlla ogni azione e segnala potenziali iniezioni di prompt dal contenuto sullo schermo, ma il confine di fiducia è diverso. Vedi la [guida alla sicurezza di computer use](https://support.claude.com/en/articles/14128542) per le best practice.

121</Warning>

122 

123I guardrail integrati riducono il rischio senza richiedere configurazione:

124 

125* **Approvazione per app**: Claude può controllare solo le app che hai approvato nella sessione corrente.

126* **Avvisi sentinel**: le app che concedono accesso shell, filesystem o impostazioni di sistema sono contrassegnate prima che tu le approvi.

127* **Terminale escluso dagli screenshot**: Claude non vede mai la finestra del tuo terminale, quindi i prompt sullo schermo nella tua sessione non possono retroalimentare il modello.

128* **Escape globale**: il tasto `Esc` interrompe computer use da qualsiasi luogo e la pressione del tasto viene consumata in modo che l'iniezione di prompt non possa usarla per chiudere i dialoghi.

129* **File di blocco**: solo una sessione può controllare la tua macchina alla volta.

130 

131## Flussi di lavoro di esempio

132 

133Questi esempi mostrano modi comuni per combinare computer use con attività di codifica.

134 

135### Convalida una build nativa

136 

137Dopo aver apportato modifiche a un'app macOS o iOS, chiedi a Claude di compilare e verificare in un unico passaggio:

138 

139```text theme={null}

140Build the MenuBarStats target, launch it, open the preferences window,

141and verify the interval slider updates the label. Screenshot the

142preferences window when you're done.

143```

144 

145Claude esegue `xcodebuild`, avvia l'app, interagisce con l'interfaccia utente e segnala quello che trova.

146 

147### Riproduci un bug di layout

148 

149Quando un bug visivo appare solo a determinate dimensioni di finestra, lascia che Claude lo trovi:

150 

151```text theme={null}

152The settings modal clips its footer on narrow windows. Resize the app

153window down until you can reproduce it, screenshot the clipped state,

154then check the CSS for the modal container.

155```

156 

157Claude ridimensiona la finestra, cattura lo stato rotto e legge i fogli di stile pertinenti.

158 

159### Testa un flusso di simulatore

160 

161Guida iOS Simulator senza scrivere XCTest:

162 

163```text theme={null}

164Open the iOS Simulator, launch the app, tap through the onboarding

165screens, and tell me if any screen takes more than a second to load.

166```

167 

168Claude controlla il simulatore nello stesso modo in cui lo faresti tu con un mouse.

169 

170## Differenze dall'app Desktop

171 

172Le superfici CLI e Desktop condividono lo stesso motore di computer use. Alcuni controlli specifici di Desktop non sono ancora nella CLI:

173 

174| Funzionalità | Desktop | CLI |

175| :--------------------------- | :----------------------------------------------------------------- | :------------------------------- |

176| Abilita | Attiva/disattiva in **Settings > General** (sotto **Desktop app**) | Abilita `computer-use` in `/mcp` |

177| Elenco app negate | Configurabile in Impostazioni | Non ancora disponibile |

178| Attiva/disattiva auto-unhide | Facoltativo | Sempre attivo |

179| Integrazione Dispatch | Le sessioni generate da Dispatch possono usare computer use | Non applicabile |

180 

181## Troubleshooting

182 

183### "Computer use is in use by another Claude session"

184 

185Un'altra sessione di Claude Code tiene il blocco. Termina l'attività in quella sessione o esci da essa. Se l'altra sessione si è bloccata, il blocco viene rilasciato automaticamente quando Claude rileva che il processo non è più in esecuzione.

186 

187### Il prompt delle autorizzazioni di macOS continua a riapparire

188 

189macOS a volte richiede un riavvio del processo richiedente dopo aver concesso Screen Recording. Esci completamente da Claude Code e avvia una nuova sessione. Se il prompt persiste, apri **System Settings > Privacy & Security > Screen Recording** e conferma che la tua app terminale è elencata e abilitata.

190 

191### `computer-use` non appare in `/mcp`

192 

193Il server appare solo su configurazioni idonee. Verifica che:

194 

195* Sei su macOS. Computer use non è disponibile su Linux o Windows.

196* Stai eseguendo Claude Code v2.1.85 o successivo. Esegui `claude --version` per verificare.

197* Sei su un piano Pro o Max. Esegui `/status` per confermare il tuo abbonamento.

198* Sei autenticato tramite claude.ai. Computer use non è disponibile con provider di terze parti come Amazon Bedrock, Google Cloud Vertex AI o Microsoft Foundry. Se accedi a Claude esclusivamente tramite un provider di terze parti, hai bisogno di un account claude.ai separato per usare questa funzionalità.

199* Sei in una sessione interattiva. Computer use non è disponibile in modalità non interattiva con il flag `-p`.

200 

201## Vedi anche

202 

203* [Computer use in Desktop](/it/desktop#let-claude-use-your-computer): la stessa funzionalità con una pagina di impostazioni grafica

204* [Claude in Chrome](/it/chrome): automazione del browser per attività basate sul web

205* [MCP](/it/mcp): connetti Claude a strumenti e API strutturati

206* [Sandboxing](/it/sandboxing): come lo strumento Bash di Claude isola l'accesso al filesystem e alla rete

207* [Guida alla sicurezza di computer use](https://support.claude.com/en/articles/14128542): best practice per l'uso sicuro di computer use

costs.md +203 −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# Gestisci i costi in modo efficace

6 

7> Traccia l'utilizzo dei token, imposta i limiti di spesa del team e riduci i costi di Claude Code con la gestione del contesto, la selezione del modello, le impostazioni del pensiero esteso e gli hook di pre-elaborazione.

8 

9Claude Code addebita il consumo di token API. Per i prezzi dei piani di abbonamento (Pro, Max, Team, Enterprise), vedi [claude.com/pricing](https://claude.com/pricing). I costi per sviluppatore variano notevolmente in base alla selezione del modello, alle dimensioni della codebase e ai modelli di utilizzo come l'esecuzione di più istanze o l'automazione.

10 

11Nelle distribuzioni aziendali, il costo medio è di circa \$13 per sviluppatore per giorno attivo e \$150-250 per sviluppatore al mese, con costi che rimangono al di sotto di \$30 per giorno attivo per il 90% degli utenti. Per stimare la spesa per il tuo team, inizia con un piccolo gruppo pilota e utilizza gli strumenti di tracciamento di seguito per stabilire una baseline prima di un rollout più ampio.

12 

13Questa pagina spiega come [tracciare i tuoi costi](#track-your-costs), [gestire i costi per i team](#managing-costs-for-teams) e [ridurre l'utilizzo dei token](#reduce-token-usage).

14 

15## Traccia i tuoi costi

16 

17### Utilizzo del comando `/usage`

18 

19<Note>

20 Il blocco Session in `/usage` mostra l'utilizzo dei token API ed è destinato agli utenti API. I sottoscrittori di Claude Max e Pro hanno l'utilizzo incluso nel loro abbonamento, quindi la cifra del costo della sessione non è rilevante per scopi di fatturazione. I sottoscrittori vedono barre di utilizzo del piano e statistiche di attività sulla stessa schermata.

21</Note>

22 

23Il comando `/usage` fornisce statistiche dettagliate sull'utilizzo dei token per la tua sessione attuale. La cifra in dollari è una stima calcolata localmente dai conteggi dei token e potrebbe differire dalla tua fattura effettiva. Per la fatturazione autorevole, vedi la pagina Usage nella [Claude Console](https://platform.claude.com/usage).

24 

25```text theme={null}

26Total cost: $0.55

27Total duration (API): 6m 19.7s

28Total duration (wall): 6h 33m 10.2s

29Total code changes: 0 lines added, 0 lines removed

30```

31 

32## Gestione dei costi per i team

33 

34Quando utilizzi Claude API, puoi [impostare i limiti di spesa dell'area di lavoro](https://platform.claude.com/docs/en/build-with-claude/workspaces#workspace-limits) sulla spesa totale dell'area di lavoro di Claude Code. Gli amministratori possono [visualizzare i rapporti di costo e utilizzo](https://platform.claude.com/docs/en/build-with-claude/workspaces#usage-and-cost-tracking) nella Console.

35 

36<Note>

37 Quando autentichi per la prima volta Claude Code con il tuo account Claude Console, viene creata automaticamente un'area di lavoro chiamata "Claude Code". Questa area di lavoro fornisce il tracciamento e la gestione centralizzati dei costi per tutto l'utilizzo di Claude Code nella tua organizzazione. Non puoi creare chiavi API per questa area di lavoro; è esclusivamente per l'autenticazione e l'utilizzo di Claude Code.

38 

39 Per le organizzazioni con limiti di velocità personalizzati, il traffico di Claude Code in questa area di lavoro conta verso i limiti di velocità API complessivi della tua organizzazione. Puoi impostare un [limite di velocità dell'area di lavoro](https://platform.claude.com/docs/en/api/rate-limits#setting-lower-limits-for-workspaces) sulla pagina Limits di questa area di lavoro nella Claude Console per limitare la quota di Claude Code e proteggere altri carichi di lavoro di produzione.

40</Note>

41 

42Su Bedrock, Vertex e Foundry, Claude Code non invia metriche dal tuo cloud. Per ottenere metriche di costo, diversi grandi enterprise hanno riferito di utilizzare [LiteLLM](/it/llm-gateway#litellm-configuration), uno strumento open-source che aiuta le aziende a [tracciare la spesa per chiave](https://docs.litellm.ai/docs/proxy/virtual_keys#tracking-spend). Questo progetto non è affiliato ad Anthropic e non è stato sottoposto a audit di sicurezza.

43 

44### Raccomandazioni sui limiti di velocità

45 

46Quando configuri Claude Code per i team, considera queste raccomandazioni Token Per Minuto (TPM) e Richieste Per Minuto (RPM) per utente in base alle dimensioni della tua organizzazione:

47 

48| Dimensione del team | TPM per utente | RPM per utente |

49| ------------------- | -------------- | -------------- |

50| 1-5 utenti | 200k-300k | 5-7 |

51| 5-20 utenti | 100k-150k | 2.5-3.5 |

52| 20-50 utenti | 50k-75k | 1.25-1.75 |

53| 50-100 utenti | 25k-35k | 0.62-0.87 |

54| 100-500 utenti | 15k-20k | 0.37-0.47 |

55| 500+ utenti | 10k-15k | 0.25-0.35 |

56 

57Ad esempio, se hai 200 utenti, potresti richiedere 20k TPM per ogni utente, o 4 milioni di TPM totali (200\*20.000 = 4 milioni).

58 

59Il TPM per utente diminuisce man mano che le dimensioni del team crescono perché meno utenti tendono a utilizzare Claude Code contemporaneamente nelle organizzazioni più grandi. Questi limiti di velocità si applicano a livello organizzativo, non per singolo utente, il che significa che i singoli utenti possono temporaneamente consumare più della loro quota calcolata quando altri non stanno utilizzando attivamente il servizio.

60 

61<Note>

62 Se prevedi scenari con utilizzo concorrente insolitamente elevato (come sessioni di formazione dal vivo con grandi gruppi), potresti aver bisogno di allocazioni TPM più elevate per utente.

63</Note>

64 

65### Costi dei token del team di agenti

66 

67I [team di agenti](/it/agent-teams) generano più istanze di Claude Code, ognuna con la propria finestra di contesto. L'utilizzo dei token si ridimensiona con il numero di compagni di squadra attivi e per quanto tempo ognuno viene eseguito.

68 

69Per mantenere i costi del team di agenti gestibili:

70 

71* Utilizza Sonnet per i compagni di squadra. Bilancia la capacità e il costo per i compiti di coordinamento.

72* Mantieni i team piccoli. Ogni compagno di squadra esegue la propria finestra di contesto, quindi l'utilizzo dei token è approssimativamente proporzionale alle dimensioni del team.

73* Mantieni i prompt di generazione focalizzati. I compagni di squadra caricano automaticamente CLAUDE.md, i server MCP e le skills, ma tutto nel prompt di generazione si aggiunge al loro contesto dall'inizio.

74* Pulisci i team quando il lavoro è terminato. I compagni di squadra attivi continuano a consumare token anche se inattivi.

75* I team di agenti sono disabilitati per impostazione predefinita. Imposta `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` nel tuo [settings.json](/it/settings) o nell'ambiente per abilitarli. Vedi [abilita i team di agenti](/it/agent-teams#enable-agent-teams).

76 

77## Riduci l'utilizzo dei token

78 

79I costi dei token si ridimensionano con la dimensione del contesto: più contesto Claude elabora, più token utilizzi. Claude Code ottimizza automaticamente i costi attraverso il prompt caching (che riduce i costi per il contenuto ripetuto come i prompt di sistema) e l'auto-compaction (che riassume la cronologia della conversazione quando ci si avvicina ai limiti del contesto).

80 

81Le seguenti strategie ti aiutano a mantenere il contesto piccolo e ridurre i costi per messaggio.

82 

83### Gestisci il contesto in modo proattivo

84 

85Utilizza `/usage` per controllare l'utilizzo attuale dei token, o [configura la tua linea di stato](/it/statusline#context-window-usage) per visualizzarla continuamente.

86 

87* **Cancella tra i compiti**: Utilizza `/clear` per ricominciare da capo quando passi a lavori non correlati. Il contesto obsoleto spreca token su ogni messaggio successivo. Utilizza `/rename` prima di cancellare in modo da poter trovare facilmente la sessione in seguito, quindi `/resume` per tornare ad essa.

88* **Aggiungi istruzioni di compaction personalizzate**: `/compact Focus on code samples and API usage` dice a Claude cosa preservare durante la sintesi.

89 

90Puoi anche personalizzare il comportamento della compaction nel tuo CLAUDE.md:

91 

92```markdown theme={null}

93# Compact instructions

94 

95When you are using compact, please focus on test output and code changes

96```

97 

98### Scegli il modello giusto

99 

100Sonnet gestisce bene la maggior parte dei compiti di codifica e costa meno di Opus. Riserva Opus per decisioni architettoniche complesse o ragionamento multi-step. Utilizza `/model` per cambiare modello a metà sessione, o imposta un valore predefinito in `/config`. Per semplici compiti subagent, specifica `model: haiku` nella tua [configurazione subagent](/it/sub-agents#choose-a-model).

101 

102### Riduci l'overhead del server MCP

103 

104Le definizioni degli strumenti MCP sono [rinviate per impostazione predefinita](/it/mcp#scale-with-mcp-tool-search), quindi solo i nomi degli strumenti entrano nel contesto finché Claude non utilizza uno strumento specifico. Esegui `/context` per vedere cosa sta consumando spazio.

105 

106* **Preferisci gli strumenti CLI quando disponibili**: Strumenti come `gh`, `aws`, `gcloud` e `sentry-cli` sono ancora più efficienti dal punto di vista del contesto rispetto ai server MCP perché non aggiungono alcun elenco di strumenti per strumento. Claude può eseguire comandi CLI direttamente.

107* **Disabilita i server inutilizzati**: Esegui `/mcp` per vedere i server configurati e disabilita quelli che non stai utilizzando attivamente.

108 

109### Installa plugin di intelligenza del codice per i linguaggi tipizzati

110 

111I [plugin di intelligenza del codice](/it/discover-plugins#code-intelligence) danno a Claude una navigazione precisa dei simboli invece della ricerca basata su testo, riducendo le letture di file non necessarie quando si esplora codice sconosciuto. Una singola chiamata "vai alla definizione" sostituisce quello che altrimenti potrebbe essere un grep seguito dalla lettura di più file candidati. I server di linguaggio installati segnalano anche gli errori di tipo automaticamente dopo le modifiche, quindi Claude cattura gli errori senza eseguire un compilatore.

112 

113### Offload dell'elaborazione agli hook e alle skills

114 

115Gli [hook](/it/hooks) personalizzati possono pre-elaborare i dati prima che Claude li veda. Invece di Claude che legge un file di log di 10.000 righe per trovare errori, un hook può cercare `ERROR` e restituire solo le righe corrispondenti, riducendo il contesto da decine di migliaia di token a centinaia.

116 

117Una [skill](/it/skills) può dare a Claude la conoscenza del dominio in modo che non debba esplorare. Ad esempio, una skill "codebase-overview" potrebbe descrivere l'architettura del tuo progetto, le directory chiave e le convenzioni di denominazione. Quando Claude invoca la skill, ottiene questo contesto immediatamente invece di spendere token leggendo più file per comprendere la struttura.

118 

119Ad esempio, questo hook PreToolUse filtra l'output del test per mostrare solo i fallimenti:

120 

121<Tabs>

122 <Tab title="settings.json">

123 Aggiungi questo al tuo [settings.json](/it/settings#settings-files) per eseguire l'hook prima di ogni comando Bash:

124 

125 ```json theme={null}

126 {

127 "hooks": {

128 "PreToolUse": [

129 {

130 "matcher": "Bash",

131 "hooks": [

132 {

133 "type": "command",

134 "command": "~/.claude/hooks/filter-test-output.sh"

135 }

136 ]

137 }

138 ]

139 }

140 }

141 ```

142 </Tab>

143 

144 <Tab title="filter-test-output.sh">

145 L'hook chiama questo script, che controlla se il comando è un test runner e lo modifica per mostrare solo i fallimenti:

146 

147 ```bash theme={null}

148 #!/bin/bash

149 input=$(cat)

150 cmd=$(echo "$input" | jq -r '.tool_input.command')

151 

152 # If running tests, filter to show only failures

153 if [[ "$cmd" =~ ^(npm test|pytest|go test) ]]; then

154 filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"

155 echo "{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"allow\",\"updatedInput\":{\"command\":\"$filtered_cmd\"}}}"

156 else

157 echo "{}"

158 fi

159 ```

160 </Tab>

161</Tabs>

162 

163### Sposta le istruzioni da CLAUDE.md alle skills

164 

165Il tuo file [CLAUDE.md](/it/memory) viene caricato nel contesto all'inizio della sessione. Se contiene istruzioni dettagliate per flussi di lavoro specifici (come revisioni PR o migrazioni di database), quei token sono presenti anche quando stai facendo lavori non correlati. Le [skills](/it/skills) si caricano su richiesta solo quando invocate, quindi spostare le istruzioni specializzate nelle skills mantiene il tuo contesto di base più piccolo. Mira a mantenere CLAUDE.md sotto 200 righe includendo solo gli elementi essenziali.

166 

167### Regola il pensiero esteso

168 

169Il pensiero esteso è abilitato per impostazione predefinita perché migliora significativamente le prestazioni su compiti complessi di pianificazione e ragionamento. I token di pensiero vengono fatturati come token di output, e il budget predefinito può essere decine di migliaia di token per richiesta a seconda del modello. Per compiti più semplici dove il ragionamento profondo non è necessario, puoi ridurre i costi abbassando il [livello di sforzo](/it/model-config#adjust-effort-level) con `/effort` o in `/model`, disabilitando il pensiero in `/config`, o abbassando il budget con `MAX_THINKING_TOKENS=8000`.

170 

171### Delega le operazioni dettagliate ai subagent

172 

173L'esecuzione di test, il recupero della documentazione o l'elaborazione di file di log possono consumare un contesto significativo. Delega questi ai [subagent](/it/sub-agents#isolate-high-volume-operations) in modo che l'output dettagliato rimanga nel contesto del subagent mentre solo un riassunto ritorna alla tua conversazione principale.

174 

175### Gestisci i costi del team di agenti

176 

177I team di agenti utilizzano approssimativamente 7 volte più token rispetto alle sessioni standard quando i compagni di squadra vengono eseguiti in plan mode, perché ogni compagno di squadra mantiene la propria finestra di contesto ed esegue come un'istanza Claude separata. Mantieni i compiti del team piccoli e autonomi per limitare l'utilizzo dei token per compagno di squadra. Vedi [team di agenti](/it/agent-teams) per i dettagli.

178 

179### Scrivi prompt specifici

180 

181Richieste vaghe come "migliora questa codebase" attivano una scansione ampia. Richieste specifiche come "aggiungi la convalida dell'input alla funzione di accesso in auth.ts" permettono a Claude di lavorare in modo efficiente con letture di file minime.

182 

183### Lavora in modo efficiente su compiti complessi

184 

185Per lavori più lunghi o complessi, queste abitudini aiutano a evitare token sprecati andando nella direzione sbagliata:

186 

187* **Utilizza plan mode per compiti complessi**: Premi Shift+Tab per entrare in [plan mode](/it/common-workflows#use-plan-mode-for-safe-code-analysis) prima dell'implementazione. Claude esplora la codebase e propone un approccio per la tua approvazione, prevenendo la rielaborazione costosa quando la direzione iniziale è sbagliata.

188* **Correggi la rotta presto**: Se Claude inizia a andare nella direzione sbagliata, premi Escape per fermarti immediatamente. Utilizza `/rewind` o doppio tocco Escape per ripristinare la conversazione e il codice a un checkpoint precedente.

189* **Fornisci target di verifica**: Includi casi di test, incolla screenshot o definisci l'output previsto nel tuo prompt. Quando Claude può verificare il suo lavoro, cattura i problemi prima che tu debba richiedere correzioni.

190* **Testa in modo incrementale**: Scrivi un file, testalo, quindi continua. Questo cattura i problemi presto quando sono economici da risolvere.

191 

192## Utilizzo dei token in background

193 

194Claude Code utilizza token per alcune funzionalità in background anche quando inattivo:

195 

196* **Sintesi della conversazione**: Processi in background che riassumono le conversazioni precedenti per la funzione `claude --resume`

197* **Elaborazione dei comandi**: Alcuni comandi come `/usage` possono generare richieste per controllare lo stato

198 

199Questi processi in background consumano una piccola quantità di token (in genere meno di \$0,04 per sessione) anche senza interazione attiva.

200 

201## Comprensione dei cambiamenti nel comportamento di Claude Code

202 

203Claude Code riceve regolarmente aggiornamenti che possono cambiare il funzionamento delle funzionalità, inclusa la segnalazione dei costi. Esegui `claude --version` per controllare la tua versione attuale. Per domande specifiche sulla fatturazione, contatta il supporto di Anthropic tramite il tuo [account Console](https://platform.claude.com/login).

data-usage.md +124 −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# Utilizzo dei dati

6 

7> Scopri le politiche di utilizzo dei dati di Anthropic per Claude

8 

9## Politiche sui dati

10 

11### Politica di addestramento dei dati

12 

13**Utenti consumer (piani Free, Pro e Max)**:

14Vi diamo la possibilità di consentire l'utilizzo dei vostri dati per migliorare i futuri modelli Claude. Addestreremo nuovi modelli utilizzando i dati degli account Free, Pro e Max quando questa impostazione è attiva (incluso quando utilizzate Claude Code da questi account).

15 

16**Utenti commerciali**: (piani Team ed Enterprise, API, piattaforme di terze parti e Claude Gov) mantengono le politiche esistenti: Anthropic non addestra modelli generativi utilizzando codice o prompt inviati a Claude Code secondo i termini commerciali, a meno che il cliente non abbia scelto di fornirci i propri dati per il miglioramento del modello (ad esempio, il [Development Partner Program](https://support.claude.com/en/articles/11174108-about-the-development-partner-program)).

17 

18### Development Partner Program

19 

20Se vi iscrivete esplicitamente a metodi per fornirci materiali su cui addestrare, come tramite il [Development Partner Program](https://support.claude.com/en/articles/11174108-about-the-development-partner-program), potremmo utilizzare tali materiali forniti per addestrare i nostri modelli. Un amministratore dell'organizzazione può iscriversi esplicitamente al Development Partner Program per la propria organizzazione. Si noti che questo programma è disponibile solo per l'API di Anthropic di prima parte e non per gli utenti di Bedrock o Vertex.

21 

22### Feedback utilizzando il comando `/feedback`

23 

24Se scegliete di inviarci feedback su Claude Code utilizzando il comando `/feedback`, potremmo utilizzare il vostro feedback per migliorare i nostri prodotti e servizi. I transcript condivisi tramite `/feedback` vengono conservati per 5 anni.

25 

26### Sondaggi sulla qualità della sessione

27 

28Quando vedete il prompt "Come sta andando Claude in questa sessione?" in Claude Code, rispondendo a questo sondaggio, inclusa la selezione di "Ignora", viene registrato solo il vostro voto. Non raccogliamo né archiviamo alcun transcript di conversazione, input, output o altri dati di sessione come parte del prompt di valutazione stesso. A differenza del feedback con pollice su/giù o dei report `/feedback`, questo sondaggio sulla qualità della sessione è una semplice metrica di soddisfazione del prodotto.

29 

30Dopo il prompt di valutazione, potete vedere una domanda di follow-up separata che chiede "Anthropic può guardare il transcript della vostra sessione per aiutarci a migliorare Claude Code?". Questo è un secondo passaggio facoltativo distinto dalla valutazione:

31 

32* **Sì**: carica il transcript della vostra conversazione, i transcript di qualsiasi subagent e il file di log della sessione non elaborato dal disco su Anthropic. I modelli di chiave API e token noti vengono oscurati prima del caricamento. Il codice sorgente, i contenuti dei file e altri contenuti della conversazione vengono caricati così come sono. I transcript condivisi vengono conservati fino a 6 mesi.

33* **No**: rifiuta senza inviare nulla

34* **Non chiedere più**: rifiuta e impedisce che questo follow-up appaia nelle sessioni future

35 

36Nulla viene caricato a meno che non selezioniate esplicitamente **Sì**. Le organizzazioni con [zero data retention](/it/zero-data-retention), o dove il feedback sui prodotti è disabilitato dalla politica dell'organizzazione, non vedono mai questo follow-up. Le vostre risposte a questo sondaggio, inclusi i transcript delle sessioni inviati dopo il prompt di valutazione, non influiscono sulle vostre preferenze di addestramento dei dati e non possono essere utilizzate per addestrare i nostri modelli di IA.

37 

38Per disabilitare questi sondaggi, impostate `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`. Il sondaggio viene anche disabilitato quando `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` è impostato. Per controllare la frequenza invece di disabilitare, impostate [`feedbackSurveyRate`](/it/settings#available-settings) nel vostro file di impostazioni su una probabilità tra `0` e `1`.

39 

40### Conservazione dei dati

41 

42Anthropic conserva i dati di Claude Code in base al tipo di account e alle preferenze dell'utente.

43 

44**Utenti consumer (piani Free, Pro e Max)**:

45 

46* Utenti che consentono l'utilizzo dei dati per il miglioramento del modello: periodo di conservazione di 5 anni per supportare lo sviluppo del modello e i miglioramenti della sicurezza

47* Utenti che non consentono l'utilizzo dei dati per il miglioramento del modello: periodo di conservazione di 30 giorni

48* Le impostazioni sulla privacy possono essere modificate in qualsiasi momento su [claude.ai/settings/data-privacy-controls](https://claude.ai/settings/data-privacy-controls).

49 

50**Utenti commerciali (Team, Enterprise e API)**:

51 

52* Standard: periodo di conservazione di 30 giorni

53* [Zero data retention](/it/zero-data-retention): disponibile per Claude Code su Claude for Enterprise. ZDR è abilitato su base per organizzazione; ogni nuova organizzazione deve avere ZDR abilitato separatamente dal vostro team di account

54* Caching locale: i client di Claude Code archiviano i transcript delle sessioni localmente in testo semplice sotto `~/.claude/projects/` per 30 giorni per impostazione predefinita per abilitare la ripresa della sessione. Regolate il periodo con `cleanupPeriodDays`. Consultate [application data](/it/claude-directory#application-data) per sapere cosa viene archiviato e come cancellarlo.

55 

56Potete eliminare le singole sessioni di Claude Code sul web in qualsiasi momento. L'eliminazione di una sessione rimuove permanentemente i dati dell'evento della sessione. Per istruzioni su come eliminare le sessioni, consultate [Eliminare le sessioni](/it/claude-code-on-the-web#delete-sessions).

57 

58Scopri di più sulle pratiche di conservazione dei dati nel nostro [Privacy Center](https://privacy.anthropic.com/).

59 

60Per i dettagli completi, consultate i nostri [Termini di servizio commerciali](https://www.anthropic.com/legal/commercial-terms) (per gli utenti Team, Enterprise e API) o [Termini consumer](https://www.anthropic.com/legal/consumer-terms) (per gli utenti Free, Pro e Max) e [Informativa sulla privacy](https://www.anthropic.com/legal/privacy).

61 

62## Accesso ai dati

63 

64Per tutti gli utenti di prima parte, potete scoprire di più su quali dati vengono registrati per [Claude Code locale](#local-claude-code-data-flow-and-dependencies) e [Claude Code remoto](#cloud-execution-data-flow-and-dependencies). Le sessioni di [Remote Control](/it/remote-control) seguono il flusso di dati locale poiché tutta l'esecuzione avviene sulla vostra macchina. Si noti che per Claude Code remoto, Claude accede al repository in cui avviate la vostra sessione di Claude Code. Claude non accede ai repository che avete collegato ma in cui non avete avviato una sessione.

65 

66## Claude Code locale: flusso di dati e dipendenze

67 

68Il diagramma sottostante mostra come Claude Code si connette ai servizi esterni durante l'installazione e il funzionamento normale. Le linee continue indicano connessioni richieste, mentre le linee tratteggiate rappresentano flussi di dati facoltativi o avviati dall'utente.

69 

70<img src="https://mintcdn.com/claude-code/YcBW2H7CArGcduPb/images/claude-code-data-flow.svg?fit=max&auto=format&n=YcBW2H7CArGcduPb&q=85&s=b600a89f84fc86f9ff7be00a466c0635" alt="Diagramma che mostra le connessioni esterne di Claude Code: install/update si connette al server di distribuzione e le richieste dell'utente si connettono ai servizi Anthropic inclusi Console auth, public-api e facoltativamente Statsig, Sentry e bug reporting" width="720" height="520" data-path="images/claude-code-data-flow.svg" />

71 

72Claude Code viene eseguito localmente. Per interagire con l'LLM, Claude Code invia dati sulla rete. Questi dati includono tutti i prompt dell'utente e gli output del modello, crittografati in transito tramite TLS 1.2+. Claude Code è compatibile con la maggior parte dei VPN e dei proxy LLM più diffusi.

73 

74La crittografia a riposo dipende dal vostro provider di modelli:

75 

76| Provider | Crittografia a riposo |

77| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |

78| Anthropic API | Crittografia del disco a livello di infrastruttura (AES-256). Abilitate [Zero Data Retention](/it/zero-data-retention) per nessuna persistenza lato server. |

79| Amazon Bedrock | AES-256 con chiavi gestite da AWS. Chiavi gestite dal cliente disponibili tramite AWS KMS. |

80| Google Cloud Vertex AI | Chiavi di crittografia gestite da Google. CMEK disponibile. |

81| Microsoft Foundry | Le richieste vengono instradate all'infrastruttura Anthropic con crittografia del disco AES-256. |

82 

83Claude Code è costruito sulle API di Anthropic. Per i dettagli sui controlli di sicurezza della nostra API, incluse le nostre procedure di registrazione dell'API, consultate gli artefatti di conformità offerti nel [Anthropic Trust Center](https://trust.anthropic.com).

84 

85### Esecuzione nel cloud: flusso di dati e dipendenze

86 

87Quando si utilizza [Claude Code sul web](/it/claude-code-on-the-web), le sessioni vengono eseguite in macchine virtuali gestite da Anthropic invece che localmente. Negli ambienti cloud:

88 

89* **Archiviazione di codice e dati:** Il vostro repository viene clonato su una VM isolata. Il codice e i dati della sessione sono soggetti alle politiche di conservazione e utilizzo per il vostro tipo di account (consultate la sezione Conservazione dei dati sopra)

90* **Credenziali:** L'autenticazione GitHub viene gestita tramite un proxy sicuro; le vostre credenziali GitHub non entrano mai nella sandbox

91* **Traffico di rete:** Tutto il traffico in uscita passa attraverso un proxy di sicurezza per la registrazione di audit e la prevenzione degli abusi

92* **Dati della sessione:** I prompt, le modifiche al codice e gli output seguono le stesse politiche sui dati dell'utilizzo locale di Claude Code

93 

94Per i dettagli sulla sicurezza dell'esecuzione nel cloud, consultate [Sicurezza](/it/security#cloud-execution-security).

95 

96## Servizi di telemetria

97 

98Claude Code si connette dalle macchine degli utenti al servizio Statsig per registrare metriche operative come latenza, affidabilità e modelli di utilizzo. Questa registrazione non include alcun codice o percorso di file. I dati vengono crittografati in transito utilizzando TLS e a riposo utilizzando la crittografia AES a 256 bit. Scopri di più nella [documentazione sulla sicurezza di Statsig](https://www.statsig.com/trust/security). Per rinunciare alla telemetria di Statsig, impostate la variabile di ambiente `DISABLE_TELEMETRY`.

99 

100Claude Code si connette dalle macchine degli utenti a Sentry per la registrazione degli errori operativi. I dati vengono crittografati in transito utilizzando TLS e a riposo utilizzando la crittografia AES a 256 bit. Scopri di più nella [documentazione sulla sicurezza di Sentry](https://sentry.io/security/). Per rinunciare alla registrazione degli errori, impostate la variabile di ambiente `DISABLE_ERROR_REPORTING`.

101 

102Quando gli utenti eseguono il comando `/feedback`, una copia della loro cronologia completa della conversazione incluso il codice viene inviata ad Anthropic. I dati vengono crittografati in transito via TLS. Facoltativamente, viene creato un problema GitHub nel repository pubblico. Per rinunciare, impostate la variabile di ambiente `DISABLE_FEEDBACK_COMMAND` su `1`.

103 

104## Comportamenti predefiniti per provider API

105 

106Per impostazione predefinita, la segnalazione degli errori, la telemetria e la segnalazione dei bug sono disabilitati quando si utilizza Bedrock, Vertex o Foundry. I sondaggi sulla qualità della sessione e il controllo di sicurezza del dominio WebFetch sono eccezioni e vengono eseguiti indipendentemente dal provider. Potete rinunciare a tutto il traffico non essenziale, inclusi i sondaggi, contemporaneamente impostando `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Questa variabile non influisce sul controllo WebFetch, che ha il suo proprio opt-out. Ecco i comportamenti predefiniti completi:

107 

108| Servizio | Claude API | Vertex API | Bedrock API | Foundry API |

109| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |

110| **Statsig (Metriche)** | Attivo per impostazione predefinita.<br />`DISABLE_TELEMETRY=1` per disabilitare. | Disattivo per impostazione predefinita.<br />`CLAUDE_CODE_USE_VERTEX` deve essere 1. | Disattivo per impostazione predefinita.<br />`CLAUDE_CODE_USE_BEDROCK` deve essere 1. | Disattivo per impostazione predefinita.<br />`CLAUDE_CODE_USE_FOUNDRY` deve essere 1. |

111| **Sentry (Errori)** | Attivo per impostazione predefinita.<br />`DISABLE_ERROR_REPORTING=1` per disabilitare. | Disattivo per impostazione predefinita.<br />`CLAUDE_CODE_USE_VERTEX` deve essere 1. | Disattivo per impostazione predefinita.<br />`CLAUDE_CODE_USE_BEDROCK` deve essere 1. | Disattivo per impostazione predefinita.<br />`CLAUDE_CODE_USE_FOUNDRY` deve essere 1. |

112| **Claude API (report `/feedback`)** | Attivo per impostazione predefinita.<br />`DISABLE_FEEDBACK_COMMAND=1` per disabilitare. | Disattivo per impostazione predefinita.<br />`CLAUDE_CODE_USE_VERTEX` deve essere 1. | Disattivo per impostazione predefinita.<br />`CLAUDE_CODE_USE_BEDROCK` deve essere 1. | Disattivo per impostazione predefinita.<br />`CLAUDE_CODE_USE_FOUNDRY` deve essere 1. |

113| **Sondaggi sulla qualità della sessione** | Attivo per impostazione predefinita.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` per disabilitare. | Attivo per impostazione predefinita.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` per disabilitare. | Attivo per impostazione predefinita.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` per disabilitare. | Attivo per impostazione predefinita.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` per disabilitare. |

114| **Controllo di sicurezza del dominio WebFetch** | Attivo per impostazione predefinita.<br />`skipWebFetchPreflight: true` in [settings](/it/settings) per disabilitare. | Attivo per impostazione predefinita.<br />`skipWebFetchPreflight: true` in [settings](/it/settings) per disabilitare. | Attivo per impostazione predefinita.<br />`skipWebFetchPreflight: true` in [settings](/it/settings) per disabilitare. | Attivo per impostazione predefinita.<br />`skipWebFetchPreflight: true` in [settings](/it/settings) per disabilitare. |

115 

116Tutte le variabili di ambiente possono essere controllate in `settings.json` (consultate [riferimento delle impostazioni](/it/settings)).

117 

118A partire dalla v2.1.126, quando una piattaforma host imposta `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`, le metriche Statsig sono attive per impostazione predefinita per Vertex, Bedrock e Foundry, e seguono l'opt-out standard `DISABLE_TELEMETRY`. La segnalazione degli errori Sentry e i report `/feedback` rimangono disattivi per impostazione predefinita su questi provider.

119 

120### Controllo di sicurezza del dominio WebFetch

121 

122Prima di recuperare un URL, lo strumento WebFetch invia il nome host richiesto a `api.anthropic.com` per verificarlo rispetto a un elenco di blocco della sicurezza mantenuto da Anthropic. Viene inviato solo il nome host, non l'URL completo, il percorso o il contenuto della pagina. I risultati vengono memorizzati nella cache per nome host per cinque minuti.

123 

124Questo controllo viene eseguito indipendentemente da quale provider di modelli utilizzate e non è influenzato da `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Se la vostra rete blocca `api.anthropic.com`, le richieste WebFetch non riescono finché non consentite il dominio o non impostate `skipWebFetchPreflight: true` in [settings](/it/settings). La disabilitazione del controllo significa che WebFetch tenta di recuperare qualsiasi URL senza consultare l'elenco di blocco, quindi combinatelo con le [regole di autorizzazione `WebFetch`](/it/permissions#webfetch) se dovete limitare quali domini Claude può raggiungere.

debug-your-config.md +97 −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# Esegui il debug della tua configurazione

6 

7> Diagnostica perché CLAUDE.md, impostazioni, hooks, server MCP o skills non hanno effetto. Usa /context, /doctor, /hooks e /mcp per vedere cosa è stato effettivamente caricato.

8 

9Quando Claude ignora un'istruzione o una funzione che hai configurato non appare, la causa è solitamente che il file non è stato caricato, è stato caricato da una posizione diversa da quella prevista, o un altro file l'ha sovrascritto. Questa guida mostra come ispezionare cosa Claude Code ha effettivamente caricato in modo da poter restringere quale situazione si applica.

10 

11Per problemi di installazione, autenticazione e connettività, consulta invece [Troubleshooting installation and login](/it/troubleshoot-install).

12 

13## Vedi cosa è stato caricato nel contesto

14 

15Il comando `/context` mostra tutto ciò che occupa la finestra di contesto per la sessione corrente, suddiviso per categoria: prompt di sistema, file di memoria, skills, strumenti MCP e messaggi di conversazione. Eseguilo per primo per confermare se i tuoi `CLAUDE.md`, regole o descrizioni di skill sono presenti.

16 

17Per dettagli su una categoria specifica, segui con il comando dedicato:

18 

19| Comando | Mostra |

20| :------------- | :----------------------------------------------------------------------------------------------- |

21| `/memory` | Quali file `CLAUDE.md` e rules sono stati caricati, più voci di memoria automatica |

22| `/skills` | Skills disponibili da fonti di progetto, utente e plugin |

23| `/agents` | Subagenti configurati e le loro impostazioni |

24| `/hooks` | Configurazioni di hook attive |

25| `/mcp` | Server MCP connessi e il loro stato |

26| `/permissions` | Regole di consentimento e negazione risolte attualmente in vigore |

27| `/doctor` | Diagnostica della configurazione: chiavi non valide, errori di schema, salute dell'installazione |

28| `/status` | Fonti di impostazioni attive, incluso se le impostazioni gestite sono in vigore |

29 

30Se un file di memoria manca da `/memory`, controlla la sua posizione rispetto a [come i file CLAUDE.md si caricano](/it/memory#how-claude-md-files-load). I file `CLAUDE.md` della sottodirectory si caricano su richiesta quando Claude legge un file in quella directory con lo strumento Read, non all'inizio della sessione.

31 

32Se `/memory` conferma che il file è stato caricato ma Claude ancora non segue una particolare istruzione, il problema è probabilmente come l'istruzione è scritta piuttosto che se è stata caricata. CLAUDE.md funziona bene per il tipo di guida che daresti a un nuovo collega, come convenzioni di progetto, comandi di compilazione e dove appartengono i file.

33 

34L'aderenza diminuisce quando un'istruzione è abbastanza vaga da poter essere interpretata in più modi, quando due file danno indicazioni conflittuali, o quando il file è cresciuto abbastanza che le singole regole ricevono meno attenzione. [Scrivi istruzioni efficaci](/it/memory#write-effective-instructions) copre i modelli di specificità, dimensione e struttura che mantengono l'aderenza alta.

35 

36<Note>

37 CLAUDE.md e permissions risolvono problemi diversi. CLAUDE.md dice a Claude come funziona il tuo progetto in modo che prenda buone decisioni. [Permissions](/it/permissions) e [hooks](/it/hooks) applicano limiti indipendentemente da ciò che Claude decide. Usa CLAUDE.md per "lo facciamo così qui". Usa permissions o hooks per confini di sicurezza e qualsiasi cosa che non deve mai accadere, dove hai bisogno di una garanzia invece di una guida.

38</Note>

39 

40## Controlla le impostazioni risolte

41 

42Le impostazioni si uniscono tra gli ambiti gestiti, utente, progetto e locale. Le impostazioni gestite vincono sempre quando presenti. Tra il resto, l'ambito più vicino sostituisce quello più ampio nell'ordine locale, poi progetto, poi utente. Alcune impostazioni possono anche essere impostate da flag della riga di comando o [variabili di ambiente](/it/env-vars), che agiscono come un altro livello di override. Quando un'impostazione non sembra applicarsi, il valore che hai impostato è solitamente sovrascritto da un altro ambito o da una variabile di ambiente.

43 

44Esegui `/doctor` per convalidare i tuoi file di configurazione e far emergere chiavi non valide o errori di schema. Esegui `/status` per vedere quali fonti di impostazioni sono attive, incluso se le impostazioni gestite sono in vigore. Per capire quale ambito vince per una data chiave, vedi [Come gli ambiti interagiscono](/it/settings#how-scopes-interact).

45 

46## Controlla i server MCP

47 

48Esegui `/mcp` per vedere ogni server configurato, il suo stato di connessione e se l'hai approvato per il progetto corrente. Un server può essere definito correttamente ma comunque non fornire strumenti per alcuni motivi comuni:

49 

50* I server con ambito di progetto in `.mcp.json` richiedono un'approvazione una tantum. Se il prompt è stato chiuso, il server rimane disabilitato fino a quando non lo approvi da `/mcp`.

51* Un server che non riesce ad avviarsi appare come non riuscito in `/mcp`. I percorsi di file relativi in `command` o `args` sono una causa frequente, poiché si risolvono rispetto alla directory da cui hai lanciato Claude Code piuttosto che alla posizione di `.mcp.json`.

52* Un server che appare come connesso ma elenca zero strumenti si è avviato correttamente ma non sta restituendo un elenco di strumenti. Seleziona **Reconnect** da `/mcp`. Se il conteggio rimane a zero, esegui `claude --debug mcp` per vedere l'output stderr del server.

53 

54Per i percorsi di configurazione e le regole di ambito, vedi [MCP](/it/mcp).

55 

56## Controlla gli hooks

57 

58Esegui `/hooks` per elencare ogni hook registrato per la sessione corrente, raggruppato per evento. Se un hook che hai definito non appare, non viene letto: gli hooks vanno sotto la chiave `"hooks"` in un file di impostazioni, non in un file autonomo.

59 

60Se l'hook appare ma non si attiva, il matcher è la causa usuale. Il campo `matcher` è una singola stringa che usa `|` per corrispondere a più nomi di strumenti, ad esempio `"Edit|Write"`. Un nome di strumento scritto male non riesce silenziosamente perché il matcher non corrisponde mai. Un valore di array è un errore di schema: Claude Code mostra un avviso di errore di impostazioni, `/doctor` segnala l'errore di convalida e la voce di hook viene eliminata in modo che non appaia in `/hooks`.

61 

62Le modifiche a `settings.json` hanno effetto nella sessione in esecuzione dopo un breve ritardo di stabilità del file. Non è necessario riavviare. Se `/hooks` mostra ancora la definizione precedente alcuni secondi dopo il salvataggio, esegui `/hooks` di nuovo per aggiornare la visualizzazione.

63 

64Se `/hooks` mostra l'hook ma comunque non si attiva, il passo successivo è guardare la valutazione dell'hook dal vivo. Avvia una sessione con `claude --debug hooks` e attiva la chiamata dello strumento. Il log di debug registra ogni evento, quali matcher sono stati controllati e il codice di uscita e l'output dell'hook. Vedi [Debug hooks](/it/hooks#debug-hooks) per il formato del log e [troubleshooting degli hooks](/it/hooks-guide#limitations-and-troubleshooting) per i modelli di errore comuni.

65 

66## Cause comuni

67 

68La maggior parte delle sorprese di configurazione risale a un piccolo insieme di regole di posizione e sintassi. Controlla questi prima di assumere un bug:

69 

70| Sintomo | Causa | Soluzione |

71| :------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

72| Hook non si attiva mai | `matcher` è un array JSON invece di una stringa | Usa una singola stringa con `\|` per corrispondere a più strumenti, ad esempio `"Edit\|Write"`. Vedi [matcher patterns](/it/hooks#matcher-patterns). |

73| Hook non si attiva mai | Il valore di `matcher` è minuscolo, ad esempio `"bash"` | La corrispondenza è sensibile alle maiuscole. I nomi degli strumenti sono capitalizzati: `Bash`, `Edit`, `Write`, `Read`. |

74| Hook non si attiva mai | Gli hooks sono in un file `.claude/hooks.json` autonomo | Non esiste un file di hooks autonomo. Definisci gli hooks sotto la chiave `"hooks"` in `settings.json`. Vedi [hook configuration](/it/hooks). |

75| Permissions, hooks o env impostati globalmente vengono ignorati | La configurazione è stata aggiunta a `~/.claude.json` | `~/.claude.json` contiene lo stato dell'app e gli interruttori dell'interfaccia utente. `permissions`, `hooks` e `env` appartengono a `~/.claude/settings.json`. Questi sono due file diversi. |

76| Un valore di `settings.json` sembra ignorato | La stessa chiave è impostata in `settings.local.json` | `settings.local.json` sostituisce `settings.json`, e entrambi sostituiscono `~/.claude/settings.json`. Vedi [settings precedence](/it/settings#how-scopes-interact). |

77| Skill non appare in `/skills` | Il file di skill è in `.claude/skills/name.md` invece che in una cartella | Usa una cartella con `SKILL.md` dentro: `.claude/skills/name/SKILL.md`. |

78| Skill appare in `/skills` ma Claude non la invoca mai | Skill ha `disable-model-invocation: true` nel suo frontmatter, o la sua descrizione non corrisponde a come formuli la richiesta | Controlla il badge in `/skills`: un'etichetta "user-only" significa che Claude non la attiverà da sola. Vedi [skill invocation](/it/skills). |

79| Le istruzioni di `CLAUDE.md` della sottodirectory sembrano ignorate | I file della sottodirectory si caricano su richiesta, non all'inizio della sessione | Si caricano quando Claude legge un file in quella directory con lo strumento Read, non al lancio e non quando scrive o crea file lì. Vedi [come i file CLAUDE.md si caricano](/it/memory#how-claude-md-files-load). |

80| Subagent ignora le istruzioni di `CLAUDE.md` | I subagenti non sempre ereditano la memoria del progetto | Metti le regole critiche nel corpo del file dell'agente, che diventa il prompt di sistema del subagente. Vedi [subagent configuration](/it/sub-agents). |

81| La logica di pulizia non viene mai eseguita alla fine della sessione | Nessun hook `SessionEnd` configurato | Aggiungi un hook `SessionEnd` in `settings.json`. Vedi l'[elenco degli eventi di hook](/it/hooks#hook-events). |

82| I server MCP in `.mcp.json` non si caricano mai | Il file è sotto `.claude/` o utilizza il formato di configurazione di Claude Desktop | La configurazione MCP del progetto va alla radice del repository come `.mcp.json`, non dentro `.claude/`. Vedi [MCP configuration](/it/mcp). |

83| Server MCP del progetto aggiunto ma non appare | Il prompt di approvazione una tantum è stato chiuso | I server con ambito di progetto richiedono approvazione. Esegui `/mcp` per vedere lo stato e approvare. |

84| Il server MCP non riesce ad avviarsi da alcune directory | `command` o `args` utilizza un percorso di file relativo | Usa percorsi assoluti per gli script locali. Gli eseguibili sul tuo `PATH` come `npx` o `uvx` funzionano così come sono. |

85| Il server MCP si avvia senza le variabili di ambiente previste | Le variabili sono in `settings.json` `env`, che non si propaga ai processi figlio MCP | Imposta invece `env` per server in `.mcp.json`. |

86| La regola di negazione `Bash(rm *)` non blocca `/bin/rm` o `find -delete` | Le regole di prefisso corrispondono alla stringa di comando letterale, non all'eseguibile sottostante | Aggiungi modelli espliciti per ogni variante, o usa un [PreToolUse hook](/it/hooks-guide) o la [sandbox](/it/sandboxing) per una garanzia difficile. |

87 

88## Risorse correlate

89 

90Per il riferimento completo su ogni superficie di configurazione, vedi la pagina dedicata:

91 

92* **[Riferimento della directory `.claude`](/it/claude-directory)**: ogni posizione del file di configurazione e cosa lo legge

93* **[Settings](/it/settings)**: ordine di precedenza e l'elenco completo delle chiavi

94* **[Riferimento degli hooks](/it/hooks)**: nomi degli eventi, payload e formato di output `--debug hooks`

95* **[MCP](/it/mcp)**: configurazione del server, approvazione e output `/mcp`

96* **[Risoluzione dei problemi di installazione e accesso](/it/troubleshoot-install)**: `command not found`, PATH e problemi di autenticazione

97* **[Risoluzione dei problemi](/it/troubleshooting)**: prestazioni, blocchi e problemi di ricerca

desktop.md +761 −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 Claude Code Desktop

6 

7> Sfrutta al massimo Claude Code Desktop: sessioni parallele con isolamento Git, layout dei pannelli drag-and-drop, terminale integrato e editor di file, chat laterali, utilizzo del computer, Dispatch sessioni dal tuo telefono, revisione visiva dei diff, anteprime delle app, monitoraggio dei PR, connettori e configurazione aziendale.

8 

9L'app Claude Desktop ha tre schede: **Chat** per le conversazioni, **Cowork** per [Dispatch e lavoro agentico più lungo](https://claude.com/product/cowork), e **Code** per lo sviluppo software. Questa pagina è il riferimento per la scheda Code.

10 

11<CardGroup cols={2}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon

14 </Card>

15 

16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors

18 </Card>

19</CardGroup>

20 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.

22 

23Dopo l'installazione, avvia Claude, accedi e fai clic sulla scheda **Code**. La prima volta che lo apri su Windows, hai bisogno di [Git for Windows](https://git-scm.com/downloads/win) installato; riavvia l'app dopo averlo installato. Per una procedura dettagliata della tua prima sessione, consulta la [guida introduttiva](/it/desktop-quickstart).

24 

25Nella scheda Code, ogni conversazione è una **sessione**: ha la sua propria cronologia chat, cartella di progetto e modifiche al codice, indipendente da qualsiasi altra sessione. La barra laterale elenca le tue sessioni e ti consente di eseguirne diverse in parallelo. All'interno di una sessione puoi:

26 

27* [Rivedere e commentare i diff](#review-changes-with-diff-view), quindi [monitorare il PR risultante attraverso CI](#monitor-pull-request-status)

28* [Visualizzare in anteprima la tua app in esecuzione](#preview-your-app) in un browser integrato mentre Claude verifica le sue stesse modifiche

29* [Organizzare i pannelli](#arrange-your-workspace) per la chat, diff, anteprima, terminale e editor di file uno accanto all'altro

30* Porre una [domanda laterale](#ask-a-side-question-without-derailing-the-session) che utilizza il contesto della sessione senza deviare da essa

31* [Connettere strumenti esterni](#connect-external-tools) come GitHub, Slack e Linear

32* Consentire a Claude di [aprire app e controllare il tuo schermo](#let-claude-use-your-computer)

33* Eseguire sulla tua macchina, nel [cloud](#run-long-running-tasks-remotely), o su [SSH](#ssh-sessions)

34 

35Per [lavoro ricorrente pianificato](/it/desktop-scheduled-tasks), [scorciatoie da tastiera](#keyboard-shortcuts), o [invio di attività dal tuo telefono](#sessions-from-dispatch), consulta le pagine e le sezioni collegate. Se utilizzi già il CLI basato su terminale, consulta il [confronto CLI](#coming-from-the-cli) per vedere cosa si trasferisce.

36 

37## Avvia una sessione

38 

39Prima di inviare il tuo primo messaggio, configura quattro cose nell'area del prompt:

40 

41* **Ambiente**: scegli dove Claude viene eseguito. Seleziona **Local** per la tua macchina, **Remote** per sessioni cloud ospitate da Anthropic, o una [**connessione SSH**](#ssh-sessions) per una macchina remota che gestisci. Vedi [configurazione dell'ambiente](#environment-configuration).

42* **Cartella del progetto**: seleziona la cartella o il repository su cui Claude lavora. Per le sessioni remote, puoi aggiungere [più repository](#run-long-running-tasks-remotely).

43* **Modello**: scegli un [modello](/it/model-config#available-models) dal menu a discesa accanto al pulsante di invio. Puoi cambiare questo durante la sessione.

44* **Modalità di autorizzazione**: scegli quanta autonomia ha Claude dal [selettore di modalità](#choose-a-permission-mode). Puoi cambiare questo durante la sessione.

45 

46Digita il tuo compito e premi **Invio** per iniziare. Ogni sessione traccia il suo proprio contesto e le modifiche in modo indipendente.

47 

48## Lavora con il codice

49 

50Dai a Claude il contesto giusto, controlla quanto fa da solo e rivedi cosa ha cambiato.

51 

52### Usa la casella del prompt

53 

54Digita quello che vuoi che Claude faccia e premi **Invio** per inviare. Claude legge i file del tuo progetto, apporta modifiche ed esegue comandi in base alla tua [modalità di autorizzazione](#choose-a-permission-mode). Puoi interrompere Claude in qualsiasi momento: fai clic sul pulsante di arresto o digita la tua correzione e premi **Invio**. Claude smette di fare quello che sta facendo e si adatta in base al tuo input.

55 

56Il pulsante **+** accanto alla casella del prompt ti dà accesso agli allegati di file, [skills](#use-skills), [connettori](#connect-external-tools) e [plugin](#install-plugins).

57 

58### Aggiungi file e contesto ai prompt

59 

60La casella del prompt supporta due modi per portare contesto esterno:

61 

62* **@mention file**: digita `@` seguito da un nome di file per aggiungere un file al contesto della conversazione. Claude può quindi leggere e fare riferimento a quel file. @mention non è disponibile nelle sessioni remote.

63* **Allega file**: allega immagini, PDF e altri file al tuo prompt usando il pulsante di allegato, o trascina e rilascia i file direttamente nel prompt. Questo è utile per condividere screenshot di bug, mockup di design o documenti di riferimento.

64 

65### Scegli una modalità di autorizzazione

66 

67Le modalità di autorizzazione controllano quanta autonomia ha Claude durante una sessione: se chiede prima di modificare file, eseguire comandi o entrambi. Puoi cambiare modalità in qualsiasi momento usando il selettore di modalità accanto al pulsante di invio. Inizia con Chiedi autorizzazioni per vedere esattamente cosa fa Claude, quindi passa a Accetta automaticamente modifiche o Plan mode man mano che acquisisci familiarità.

68 

69| Modalità | Chiave di impostazione | Comportamento |

70| ------------------------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

71| **Chiedi autorizzazioni** | `default` | Claude chiede prima di modificare file o eseguire comandi. Vedi un diff e puoi accettare o rifiutare ogni modifica. Consigliato per i nuovi utenti. |

72| **Accetta automaticamente modifiche** | `acceptEdits` | Claude accetta automaticamente le modifiche ai file e i comandi comuni del filesystem come `mkdir`, `touch` e `mv`, ma chiede comunque prima di eseguire altri comandi di terminale. Usa questo quando ti fidi delle modifiche ai file e vuoi un'iterazione più veloce. |

73| **Plan mode** | `plan` | Claude legge i file ed esegue comandi per esplorare, quindi propone un piano senza modificare il tuo codice sorgente. Buono per compiti complessi dove vuoi rivedere l'approccio prima. |

74| **Auto** | `auto` | Claude esegue tutte le azioni con controlli di sicurezza in background che verificano l'allineamento con la tua richiesta. Riduce i prompt di autorizzazione mantenendo la supervisione. Abilita in Impostazioni → Claude Code. Vedi [requisiti di disponibilità](#auto-mode-availability) di seguito. |

75| **Bypass permissions** | `bypassPermissions` | Claude viene eseguito senza alcun prompt di autorizzazione, equivalente a `--dangerously-skip-permissions` nella CLI. Abilita in Impostazioni → Claude Code sotto "Allow bypass permissions mode". Usa solo in container sandbox o VM. Gli amministratori aziendali possono disabilitare questa opzione. |

76 

77La modalità di autorizzazione `dontAsk` è disponibile solo nella [CLI](/it/permission-modes#allow-only-pre-approved-tools-with-dontask-mode).

78 

79<span id="auto-mode-availability" />

80 

81Auto mode è un'anteprima di ricerca disponibile su piani Max, Team, Enterprise e API. Non è disponibile su piani Pro o provider di terze parti. Su piani Team, Enterprise e API richiede Claude Sonnet 4.6, Opus 4.6 o Opus 4.7. Su piani Max richiede Claude Opus 4.7.

82 

83<Tip title="Best practice">

84 Inizia compiti complessi in Plan mode in modo che Claude mappi un approccio prima di apportare modifiche. Una volta approvato il piano, passa a Accetta automaticamente modifiche o Chiedi autorizzazioni per eseguirlo. Vedi [esplora prima, poi pianifica, poi codifica](/it/best-practices#explore-first-then-plan-then-code) per ulteriori informazioni su questo flusso di lavoro.

85</Tip>

86 

87Le sessioni remote supportano Accetta automaticamente modifiche e Plan mode. Chiedi autorizzazioni non è disponibile perché le sessioni remote accettano automaticamente le modifiche ai file per impostazione predefinita, e Bypass permissions non è disponibile perché l'ambiente remoto è già sandbox.

88 

89Gli amministratori aziendali possono limitare quali modalità di autorizzazione sono disponibili. Vedi [configurazione aziendale](#enterprise-configuration) per i dettagli.

90 

91### Anteprima della tua app

92 

93Claude può avviare un server di sviluppo e aprire un browser incorporato per verificare le sue modifiche. Questo funziona per app web frontend così come per server backend: Claude può testare endpoint API, visualizzare log del server e iterare su problemi che trova. Nella maggior parte dei casi, Claude avvia il server automaticamente dopo aver modificato i file del progetto. Puoi anche chiedere a Claude di visualizzare un'anteprima in qualsiasi momento. Per impostazione predefinita, Claude [verifica automaticamente](#auto-verify-changes) le modifiche dopo ogni edit.

94 

95Il pannello di anteprima può anche aprire file HTML statici, PDF, immagini e video dal tuo progetto. Fai clic su un percorso HTML, PDF, immagine o video nella chat per aprirlo in anteprima.

96 

97Dal pannello di anteprima, puoi:

98 

99* Interagire con la tua app in esecuzione direttamente nel browser incorporato

100* Guardare Claude verificare automaticamente le sue stesse modifiche: scatta screenshot, ispeziona il DOM, fa clic su elementi, compila moduli e corregge i problemi che trova

101* Avviare o arrestare server dal menu a discesa **Preview** nella barra degli strumenti della sessione

102* Persistere cookie e archiviazione locale tra i riavvii del server selezionando **Persist sessions** nel menu a discesa, in modo da non dover effettuare di nuovo l'accesso durante lo sviluppo

103* Modificare la configurazione del server o arrestare tutti i server contemporaneamente

104 

105Claude crea la configurazione iniziale del server in base al tuo progetto. Se la tua app utilizza un comando dev personalizzato, modifica `.claude/launch.json` per adattarlo alla tua configurazione. Vedi [Configura server di anteprima](#configure-preview-servers) per il riferimento completo.

106 

107Per cancellare i dati della sessione salvati, attiva/disattiva **Persist preview sessions** in Impostazioni → Claude Code. Per disabilitare completamente l'anteprima, attiva/disattiva **Preview** in Impostazioni → Claude Code.

108 

109### Rivedi le modifiche con la visualizzazione diff

110 

111Dopo che Claude apporta modifiche al tuo codice, la visualizzazione diff ti consente di rivedere le modifiche file per file prima di creare una pull request.

112 

113Quando Claude modifica i file, appare un indicatore di statistiche diff che mostra il numero di righe aggiunte e rimosse, come `+12 -1`. Fai clic su questo indicatore per aprire il visualizzatore diff, che visualizza un elenco di file a sinistra e le modifiche per ogni file a destra.

114 

115Per commentare righe specifiche, fai clic su qualsiasi riga nel diff per aprire una casella di commento. Digita il tuo feedback e premi **Invio** per aggiungere il commento. Dopo aver aggiunto commenti a più righe, invia tutti i commenti contemporaneamente:

116 

117* **macOS**: premi **Cmd+Invio**

118* **Windows**: premi **Ctrl+Invio**

119 

120Claude legge i tuoi commenti e apporta le modifiche richieste, che appaiono come un nuovo diff che puoi rivedere.

121 

122### Rivedi il tuo codice

123 

124Nella visualizzazione diff, fai clic su **Review code** nella barra degli strumenti in alto a destra per chiedere a Claude di valutare le modifiche prima di eseguire il commit. Claude esamina i diff attuali e lascia commenti direttamente nella visualizzazione diff. Puoi rispondere a qualsiasi commento o chiedere a Claude di rivedere.

125 

126La revisione si concentra su problemi ad alto segnale: errori di compilazione, errori logici definitivi, vulnerabilità di sicurezza e bug ovvi. Non contrassegna stile, formattazione, problemi preesistenti o qualsiasi cosa che un linter catturebbe.

127 

128### Monitora lo stato della pull request

129 

130Dopo aver aperto una pull request, una barra di stato CI appare nella sessione. Claude Code utilizza GitHub CLI per eseguire il polling dei risultati dei controlli e visualizzare i guasti.

131 

132* **Auto-fix**: quando abilitato, Claude tenta automaticamente di correggere i controlli CI non riusciti leggendo l'output del guasto e iterando.

133* **Auto-merge**: quando abilitato, Claude unisce il PR una volta che tutti i controlli passano. Il metodo di merge è squash. Auto-merge deve essere [abilitato nelle impostazioni del tuo repository GitHub](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository) affinché questo funzioni.

134 

135Usa gli interruttori **Auto-fix** e **Auto-merge** nella barra di stato CI per abilitare una delle due opzioni. Claude Code invia anche una notifica desktop quando CI termina. Per archiviare la sessione automaticamente una volta che il PR si unisce o si chiude, attiva [auto-archive](#work-in-parallel-with-sessions) in Impostazioni → Claude Code.

136 

137<Note>

138 Il monitoraggio dei PR richiede che [GitHub CLI (`gh`)](https://cli.github.com/) sia installato e autenticato sulla tua macchina. Se `gh` non è installato, Desktop ti chiede di installarlo la prima volta che tenti di creare un PR.

139</Note>

140 

141## Organizza l'area di lavoro

142 

143La scheda Code è costruita attorno a pannelli che puoi organizzare in qualsiasi layout: chat, diff, anteprima, terminale, file, plan, tasks e subagent. Trascina un pannello dal suo header per riposizionarlo, o trascina un bordo del pannello per ridimensionarlo. Premi **Cmd+\\** su macOS o **Ctrl+\\** su Windows per chiudere il pannello focalizzato. Apri pannelli aggiuntivi dal menu **Views** nella barra degli strumenti della sessione.

144 

145<Note>

146 Il layout del pannello, il terminale, l'editor di file e le modalità di visualizzazione in questa sezione richiedono Claude Desktop v1.2581.0 o successivo. Apri **Claude → Check for Updates** su macOS o **Help → Check for Updates** su Windows per aggiornare.

147</Note>

148 

149### Esegui comandi nel terminale

150 

151Il terminale integrato ti consente di eseguire comandi insieme alla tua sessione senza passare a un'altra app. Aprilo dal menu **Views** o premi **Ctrl+\`** su macOS o Windows. Il terminale si apre nella directory di lavoro della tua sessione e condivide lo stesso ambiente di Claude, quindi comandi come `npm test` o `git status` vedono gli stessi file che Claude sta modificando. Il terminale è disponibile solo nelle sessioni locali.

152 

153### Apri e modifica file

154 

155Fai clic su un percorso di file nella chat o nel visualizzatore diff per aprirlo nel pannello file. I percorsi HTML, PDF, immagine e video si aprono nel [pannello di anteprima](#preview-your-app) invece. Fai modifiche spot e fai clic su **Save** per scriverle di nuovo. Se il file è cambiato su disco da quando l'hai aperto, il pannello ti avverte e ti consente di sovrascrivere o scartare. Fai clic su **Discard** per ripristinare le tue modifiche, o fai clic sul percorso nell'header del pannello per copiare il percorso assoluto.

156 

157Il pannello file è disponibile nelle sessioni locali e SSH. Per le sessioni remote, chiedi a Claude di apportare la modifica.

158 

159### Apri file in altre app

160 

161Fai clic con il pulsante destro su qualsiasi percorso di file nella chat, nel visualizzatore diff o nel pannello file per aprire un menu di contesto:

162 

163* **Attach as context**: aggiungi il file al tuo prossimo prompt

164* **Open in**: apri il file in un editor installato come VS Code, Cursor o Zed

165* **Show in Finder** su macOS, **Show in Explorer** su Windows: apri la cartella contenente

166* **Copy path**: copia il percorso assoluto negli appunti

167 

168### Cambia modalità di visualizzazione

169 

170Le modalità di visualizzazione controllano quanti dettagli appaiono nella trascrizione della chat. Cambia modalità dal menu a discesa **Transcript view** accanto al pulsante di invio, o premi **Ctrl+O** su macOS o Windows per scorrere tra loro.

171 

172| Modalità | Cosa mostra |

173| ----------- | ------------------------------------------------------------------------------------ |

174| **Normal** | Chiamate di strumenti compresse in riepiloghi, con risposte di testo completo |

175| **Verbose** | Ogni chiamata di strumento, lettura di file e passaggio intermedio che Claude compie |

176| **Summary** | Solo le risposte finali di Claude e le modifiche che ha apportato |

177 

178Usa Verbose quando esegui il debug del motivo per cui Claude ha intrapreso una particolare azione. Usa Summary quando stai eseguendo più sessioni e vuoi scansionare i risultati rapidamente.

179 

180### Scorciatoie da tastiera

181 

182Premi **Cmd+/** su macOS o **Ctrl+/** su Windows per vedere tutte le scorciatoie disponibili nella scheda Code. Su Windows, usa **Ctrl** al posto di **Cmd** per le scorciatoie di seguito. Il ciclo della sessione, l'interruttore del terminale e l'interruttore della modalità di visualizzazione usano **Ctrl** su ogni piattaforma.

183 

184| Scorciatoia | Azione |

185| ------------------------------------- | --------------------------------------- |

186| `Cmd` `/` | Mostra scorciatoie da tastiera |

187| `Cmd` `N` | Nuova sessione |

188| `Cmd` `W` | Chiudi sessione |

189| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Sessione successiva o precedente |

190| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Sessione successiva o precedente |

191| `Esc` | Arresta la risposta di Claude |

192| `Cmd` `Shift` `D` | Attiva/disattiva pannello diff |

193| `Cmd` `Shift` `P` | Attiva/disattiva pannello di anteprima |

194| `Cmd` `Shift` `S` | Seleziona un elemento in anteprima |

195| `Ctrl` `` ` `` | Attiva/disattiva pannello terminale |

196| `Cmd` `\` | Chiudi pannello focalizzato |

197| `Cmd` `;` | Apri chat laterale |

198| `Ctrl` `O` | Scorrere le modalità di visualizzazione |

199| `Cmd` `Shift` `M` | Apri menu modalità di autorizzazione |

200| `Cmd` `Shift` `I` | Apri menu modello |

201| `Cmd` `Shift` `E` | Apri menu sforzo |

202| `1`–`9` | Seleziona elemento in un menu aperto |

203 

204Queste scorciatoie si applicano solo alla scheda Code. Le scorciatoie della [modalità interattiva](/it/interactive-mode#keyboard-shortcuts) basata su terminale, come `Shift+Tab` per scorrere le modalità, non si applicano in Desktop.

205 

206### Controlla l'utilizzo

207 

208Fai clic sull'anello di utilizzo accanto al selettore di modello per vedere l'utilizzo della finestra di contesto corrente e l'utilizzo del piano per il periodo. L'utilizzo del contesto è per sessione; l'utilizzo del piano è condiviso su tutte le tue superfici Claude Code.

209 

210## Lascia che Claude usi il tuo computer

211 

212L'utilizzo del computer consente a Claude di aprire le tue app, controllare lo schermo e lavorare direttamente sulla tua macchina come faresti tu. Chiedi a Claude di testare un'app nativa in un simulatore mobile, interagire con uno strumento desktop che non ha CLI, o automatizzare qualcosa che funziona solo tramite una GUI.

213 

214<Note>

215 L'utilizzo del computer è un'anteprima di ricerca su macOS e Windows che richiede un piano Pro o Max. Non è disponibile su piani Team o Enterprise. L'app Claude Desktop deve essere in esecuzione.

216</Note>

217 

218L'utilizzo del computer è disabilitato per impostazione predefinita. [Abilitalo in Impostazioni](#enable-computer-use) prima che Claude possa controllare lo schermo. Su macOS, devi anche concedere i permessi di Accessibilità e Registrazione dello schermo.

219 

220<Warning>

221 A differenza dello [strumento Bash sandbox](/it/sandboxing), l'utilizzo del computer viene eseguito sul tuo desktop effettivo con accesso a tutto ciò che approvi. Claude controlla ogni azione e contrassegna potenziali iniezioni di prompt dal contenuto sullo schermo, ma il limite di fiducia è diverso. Vedi la [guida alla sicurezza dell'utilizzo del computer](https://support.claude.com/en/articles/14128542) per le best practice.

222</Warning>

223 

224### Quando si applica l'utilizzo del computer

225 

226Claude ha diversi modi per interagire con un'app o un servizio, e l'utilizzo del computer è il più ampio e lento. Prova prima lo strumento più preciso:

227 

228* Se hai un [connettore](#connect-external-tools) per un servizio, Claude usa il connettore.

229* Se l'attività è un comando shell, Claude usa Bash.

230* Se l'attività è lavoro nel browser e hai [Claude in Chrome](/it/chrome) configurato, Claude usa quello.

231* Se nessuno di questi si applica, Claude usa l'utilizzo del computer.

232 

233I [livelli di accesso per app](#app-permissions) rafforzano questo: i browser sono limitati a sola visualizzazione, e i terminali e gli IDE a solo clic, indirizzando Claude verso lo strumento dedicato anche quando l'utilizzo del computer è attivo. Il controllo dello schermo è riservato a cose che nient'altro può raggiungere, come app native, pannelli di controllo hardware, simulatori mobili o strumenti proprietari senza un'API.

234 

235### Abilita l'utilizzo del computer

236 

237L'utilizzo del computer è disabilitato per impostazione predefinita. Se chiedi a Claude di fare qualcosa che ne ha bisogno mentre è disabilitato, Claude ti dice che potrebbe fare l'attività se abiliti l'utilizzo del computer in Impostazioni.

238 

239<Steps>

240 <Step title="Aggiorna l'app desktop">

241 Assicurati di avere l'ultima versione di Claude Desktop. Scarica o aggiorna su [claude.com/download](https://claude.com/download), quindi riavvia l'app.

242 </Step>

243 

244 <Step title="Attiva l'interruttore">

245 Nell'app desktop, vai a **Impostazioni > Generale** (sotto **App Desktop**). Trova l'interruttore **Utilizzo del computer** e attivalo. Su Windows, l'interruttore ha effetto immediatamente e la configurazione è completa. Su macOS, continua al passaggio successivo.

246 

247 Se non vedi l'interruttore, conferma che sei su macOS o Windows con un piano Pro o Max, quindi aggiorna e riavvia l'app.

248 </Step>

249 

250 <Step title="Concedi i permessi macOS">

251 Su macOS, concedi due permessi di sistema prima che l'interruttore abbia effetto:

252 

253 * **Accessibilità**: consente a Claude di fare clic, digitare e scorrere

254 * **Registrazione dello schermo**: consente a Claude di vedere cosa c'è sullo schermo

255 

256 La pagina Impostazioni mostra lo stato attuale di ogni permesso. Se uno è negato, fai clic sul badge per aprire il riquadro Impostazioni di sistema pertinente.

257 </Step>

258</Steps>

259 

260### Permessi delle app

261 

262La prima volta che Claude ha bisogno di usare un'app, appare un prompt nella tua sessione. Fai clic su **Allow for this session** o **Deny**. Le approvazioni durano per la sessione corrente, o 30 minuti nelle [sessioni generate da Dispatch](#sessions-from-dispatch).

263 

264Il prompt mostra anche quale livello di controllo Claude ottiene per quell'app. Questi livelli sono fissi per categoria di app e non possono essere modificati:

265 

266| Livello | Cosa può fare Claude | Si applica a |

267| :----------- | :-------------------------------------------------------------------- | :------------------------------ |

268| View only | Vedere l'app negli screenshot | Browser, piattaforme di trading |

269| Click only | Fare clic e scorrere, ma non digitare o usare scorciatoie da tastiera | Terminali, IDE |

270| Full control | Fare clic, digitare, trascinare e usare scorciatoie da tastiera | Tutto il resto |

271 

272Le app con ampia portata, come terminali, Finder o File Explorer, e Impostazioni di sistema o Impostazioni, mostrano un avviso aggiuntivo nel prompt in modo che tu sappia cosa approvare loro concede.

273 

274Puoi configurare due impostazioni in **Impostazioni > Generale** (sotto **App Desktop**):

275 

276* **Denied apps**: aggiungi app qui per rifiutarle senza chiedere. Claude potrebbe comunque influenzare un'app negata indirettamente tramite azioni in un'app consentita, ma non può interagire direttamente con l'app negata.

277* **Unhide apps when Claude finishes**: mentre Claude sta lavorando, le tue altre finestre sono nascoste in modo che interagisca solo con l'app approvata. Quando Claude finisce, le finestre nascoste vengono ripristinate a meno che non disattivi questa impostazione.

278 

279## Gestisci le sessioni

280 

281Ogni sessione è una conversazione indipendente con il suo proprio contesto e modifiche. Puoi eseguire più sessioni in parallelo, diramazioni di chat laterali, inviare il lavoro al cloud, o lasciare che Dispatch avvii sessioni per te dal tuo telefono.

282 

283### Lavora in parallelo con le sessioni

284 

285Fai clic su **+ New session** nella barra laterale, o premi **Cmd+N** su macOS o **Ctrl+N** su Windows, per lavorare su più compiti in parallelo. Premi **Ctrl+Tab** e **Ctrl+Shift+Tab** per scorrere le sessioni nella barra laterale. Per i repository Git, ogni sessione ottiene la sua copia isolata del tuo progetto usando [Git worktrees](/it/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), in modo che le modifiche in una sessione non influiscano su altre sessioni fino a quando non le esegui il commit.

286 

287I worktree sono archiviati in `<project-root>/.claude/worktrees/` per impostazione predefinita. Puoi cambiare questo in una directory personalizzata in Impostazioni → Claude Code sotto "Worktree location". Puoi anche impostare un prefisso di ramo che viene anteposto a ogni nome di ramo worktree, il che è utile per mantenere organizzati i rami creati da Claude. Per rimuovere un worktree quando hai finito, passa il mouse sulla sessione nella barra laterale e fai clic sull'icona di archivio. Per avere sessioni che si archiviano automaticamente quando il loro pull request si unisce o si chiude, attiva **Auto-archive after PR merge or close** in Impostazioni → Claude Code. Auto-archive si applica solo alle sessioni locali che hanno finito di funzionare.

288 

289Per includere file gitignored come `.env` nei nuovi worktree, crea un [file `.worktreeinclude`](/it/common-workflows#copy-gitignored-files-to-worktrees) nella radice del tuo progetto.

290 

291<Note>

292 L'isolamento della sessione richiede [Git](https://git-scm.com/downloads). La maggior parte dei Mac include Git per impostazione predefinita. Esegui `git --version` in Terminal per verificare. Su Windows, Git è richiesto affinché la scheda Code funzioni: [scarica Git per Windows](https://git-scm.com/downloads/win), installalo e riavvia l'app. Se riscontri errori Git, chiedi a Claude nella scheda [Cowork](https://claude.com/product/cowork) di aiutarti a risolvere i problemi della tua configurazione.

293</Note>

294 

295Usa i controlli in cima alla barra laterale per filtrare le sessioni per stato, progetto o ambiente, e per raggruppare le sessioni per progetto. Per rinominare una sessione, fai clic sul titolo della sessione nella barra degli strumenti in cima alla sessione attiva. Per controllare l'utilizzo del contesto, vedi [Controlla l'utilizzo](#check-usage). Quando il contesto si riempie, Claude riassume automaticamente la conversazione e continua a lavorare. Puoi anche digitare `/compact` per attivare la compattazione prima e liberare spazio di contesto. Vedi [la finestra di contesto](/it/how-claude-code-works#the-context-window) per i dettagli su come funziona la compattazione.

296 

297### Chiedi una domanda laterale senza deviare la sessione

298 

299Una chat laterale ti consente di chiedere a Claude una domanda che utilizza il contesto della tua sessione ma non aggiunge nulla di nuovo alla conversazione principale. Usala quando vuoi capire un pezzo di codice, verificare un'assunzione o esplorare un'idea senza sterzare la sessione fuori rotta.

300 

301Premi **Cmd+;** su macOS o **Ctrl+;** su Windows per aprire una chat laterale, o digita `/btw` nella casella del prompt. La chat laterale può leggere tutto nel thread principale fino a quel punto. Quando hai finito, chiudi la chat laterale e continua la sessione principale da dove l'hai lasciata. Le chat laterali sono disponibili nelle sessioni locali e SSH.

302 

303### Guarda le attività in background

304 

305Il pannello attività mostra il lavoro in background in esecuzione all'interno della sessione corrente: subagent, comandi shell in background e flussi di lavoro. Aprilo dal menu **Views** o trascinalo nel tuo layout.

306 

307Fai clic su qualsiasi voce per vedere il suo output nel pannello subagent o fermarlo. Per vedere cosa stanno facendo altre sessioni, usa la [barra laterale](#work-in-parallel-with-sessions).

308 

309### Esegui attività a lunga esecuzione in remoto

310 

311Per grandi refactor, suite di test, migrazioni o altre attività a lunga esecuzione, seleziona **Remote** invece di **Local** quando avvii una sessione. Le sessioni remote vengono eseguite sull'infrastruttura cloud di Anthropic e continuano anche se chiudi l'app o spegni il computer. Torna indietro in qualsiasi momento per vedere i progressi o indirizzare Claude in una direzione diversa. Puoi anche monitorare le sessioni remote da [claude.ai/code](https://claude.ai/code) o dall'app Claude iOS.

312 

313Le sessioni remote supportano anche più repository. Dopo aver selezionato un ambiente cloud, fai clic sul pulsante **+** accanto alla pillola del repo per aggiungere repository aggiuntivi alla sessione. Ogni repo ottiene il suo selettore di ramo. Questo è utile per compiti che si estendono su più codebase, come l'aggiornamento di una libreria condivisa e dei suoi consumatori.

314 

315Vedi [Claude Code sul web](/it/claude-code-on-the-web) per ulteriori informazioni su come funzionano le sessioni remote.

316 

317### Continua su un'altra superficie

318 

319Il menu **Continue in**, accessibile dall'icona VS Code in basso a destra della barra degli strumenti della sessione, ti consente di spostare la tua sessione su un'altra superficie:

320 

321* **Claude Code sul web**: invia la tua sessione locale per continuare l'esecuzione in remoto. Desktop esegue il push del tuo ramo, genera un riepilogo della conversazione e crea una nuova sessione remota con il contesto completo. Puoi quindi scegliere di archiviare la sessione locale o mantenerla. Questo richiede un albero di lavoro pulito e non è disponibile per le sessioni SSH.

322* **Il tuo IDE**: apre il tuo progetto in un IDE supportato nella directory di lavoro corrente.

323 

324### Sessioni da Dispatch

325 

326[Dispatch](https://support.claude.com/en/articles/13947068) è una conversazione persistente con Claude che vive nella scheda [Cowork](https://claude.com/product/cowork#dispatch-and-computer-use). Invii a Dispatch un'attività, e decide come gestirla.

327 

328Un'attività può finire come una sessione Code in due modi: chiedi direttamente una, come "apri una sessione Claude Code e correggi il bug di accesso", o Dispatch decide che l'attività è lavoro di sviluppo e ne genera una automaticamente. Le attività che tipicamente vengono indirizzate a Code includono correzione di bug, aggiornamento delle dipendenze, esecuzione di test o apertura di pull request. La ricerca, la modifica di documenti e il lavoro con fogli di calcolo rimangono in Cowork.

329 

330In entrambi i casi, la sessione Code appare nella barra laterale della scheda Code con un badge **Dispatch**. Ricevi una notifica push sul tuo telefono quando finisce o ha bisogno della tua approvazione.

331 

332Se hai [l'utilizzo del computer](#let-claude-use-your-computer) abilitato, le sessioni Code generate da Dispatch possono usarlo anche. Le approvazioni delle app in quelle sessioni scadono dopo 30 minuti e ripromptano, piuttosto che durare l'intera sessione come le sessioni Code regolari.

333 

334Per la configurazione, l'accoppiamento e le impostazioni di Dispatch, vedi l'[articolo di aiuto di Dispatch](https://support.claude.com/en/articles/13947068). Dispatch richiede un piano Pro o Max e non è disponibile su piani Team o Enterprise.

335 

336Dispatch è uno dei diversi modi per lavorare con Claude quando sei lontano dal tuo terminale. Vedi [Piattaforme e integrazioni](/it/platforms#work-when-you-are-away-from-your-terminal) per confrontarlo con Remote Control, Channels, Slack e attività pianificate.

337 

338## Estendi Claude Code

339 

340Connetti servizi esterni, aggiungi flussi di lavoro riutilizzabili, personalizza il comportamento di Claude e configura server di anteprima. Per gestire connettori, skills e plugin in un unico posto, fai clic su **Customize** nella barra laterale.

341 

342### Connetti strumenti esterni

343 

344Per le sessioni locali e [SSH](#ssh-sessions), fai clic sul pulsante **+** accanto alla casella del prompt e seleziona **Connectors** per aggiungere integrazioni come Google Calendar, Slack, GitHub, Linear, Notion e altri. Puoi aggiungere connettori prima o durante una sessione. Il pulsante **+** non è disponibile nelle sessioni remote, ma le [routine](/it/routines) configurano i connettori al momento della creazione della routine.

345 

346Per gestire o disconnettere i connettori, vai a Impostazioni → Connectors nell'app desktop, o seleziona **Manage connectors** dal menu Connectors nella casella del prompt.

347 

348Una volta connesso, Claude può leggere il tuo calendario, inviare messaggi, creare problemi e interagire direttamente con i tuoi strumenti. Puoi chiedere a Claude quali connettori sono configurati nella tua sessione.

349 

350I connettori sono [MCP servers](/it/mcp) con un flusso di configurazione grafico. Usali per l'integrazione rapida con i servizi supportati. Per le integrazioni non elencate in Connectors, aggiungi MCP servers manualmente tramite [file di impostazioni](/it/mcp#installing-mcp-servers). Puoi anche [creare connettori personalizzati](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).

351 

352### Usa skills

353 

354[Skills](/it/skills) estendono quello che Claude può fare. Claude le carica automaticamente quando rilevante, o puoi invocarne una direttamente: digita `/` nella casella del prompt o fai clic sul pulsante **+** e seleziona **Slash commands** per sfogliare cosa è disponibile. Questo include [comandi incorporati](/it/commands), le tue [skill personalizzate](/it/skills#create-your-first-skill), skill del progetto dal tuo codebase e skill da qualsiasi [plugin installato](/it/plugins). Selezionane uno e appare evidenziato nel campo di input. Digita il tuo compito dopo di esso e invia come al solito.

355 

356### Installa plugin

357 

358[Plugins](/it/plugins) sono pacchetti riutilizzabili che aggiungono skills, agent, hooks, MCP servers e configurazioni LSP a Claude Code. Puoi installare plugin dall'app desktop senza usare il terminale.

359 

360Per le sessioni locali e [SSH](#ssh-sessions), fai clic sul pulsante **+** accanto alla casella del prompt e seleziona **Plugins** per vedere i tuoi plugin installati e i loro skills. Per aggiungere un plugin, seleziona **Add plugin** dal sottomenu per aprire il browser dei plugin, che mostra i plugin disponibili dai tuoi [marketplace](/it/plugin-marketplaces) configurati incluso il marketplace ufficiale di Anthropic. Seleziona **Manage plugins** per abilitare, disabilitare o disinstallare plugin.

361 

362I plugin possono essere limitati al tuo account utente, a un progetto specifico o solo locali. Se la tua organizzazione gestisce i plugin centralmente, quei plugin sono disponibili nelle sessioni desktop nello stesso modo in cui lo sono nella CLI. I plugin non sono disponibili per le sessioni remote. Per il riferimento completo dei plugin inclusa la creazione dei tuoi plugin, vedi [plugin](/it/plugins).

363 

364### Configura server di anteprima

365 

366Claude rileva automaticamente la tua configurazione del server di sviluppo e archivia la configurazione in `.claude/launch.json` alla radice della cartella che hai selezionato quando hai avviato la sessione. Preview utilizza questa cartella come directory di lavoro, quindi se hai selezionato una cartella padre, le sottocartelle con i loro stessi server di sviluppo non verranno rilevate automaticamente. Per lavorare con il server di una sottocartella, avvia una sessione in quella cartella direttamente o aggiungi una configurazione manualmente.

367 

368Per personalizzare come il tuo server si avvia, ad esempio per usare `yarn dev` invece di `npm run dev` o per cambiare la porta, modifica il file manualmente o fai clic su **Edit configuration** nel menu a discesa Preview per aprirlo nel tuo editor di codice. Il file supporta JSON con commenti.

369 

370```json theme={null}

371{

372 "version": "0.0.1",

373 "configurations": [

374 {

375 "name": "my-app",

376 "runtimeExecutable": "npm",

377 "runtimeArgs": ["run", "dev"],

378 "port": 3000

379 }

380 ]

381}

382```

383 

384Puoi definire più configurazioni per eseguire server diversi dallo stesso progetto, come un frontend e un'API. Vedi gli [esempi](#examples) di seguito.

385 

386#### Auto-verify changes

387 

388Quando `autoVerify` è abilitato, Claude verifica automaticamente le modifiche al codice dopo aver modificato i file. Scatta screenshot, controlla gli errori e conferma che le modifiche funzionano prima di completare la sua risposta.

389 

390Auto-verify è abilitato per impostazione predefinita. Disabilitalo per progetto aggiungendo `"autoVerify": false` a `.claude/launch.json`, o attiva/disattivalo dal menu a discesa **Preview**.

391 

392```json theme={null}

393{

394 "version": "0.0.1",

395 "autoVerify": false,

396 "configurations": [...]

397}

398```

399 

400Quando disabilitato, gli strumenti di anteprima sono ancora disponibili e puoi chiedere a Claude di verificare in qualsiasi momento. Auto-verify lo rende automatico dopo ogni modifica.

401 

402#### Configuration fields

403 

404Ogni voce nell'array `configurations` accetta i seguenti campi:

405 

406| Campo | Tipo | Descrizione |

407| ------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

408| `name` | string | Un identificatore univoco per questo server |

409| `runtimeExecutable` | string | Il comando da eseguire, come `npm`, `yarn` o `node` |

410| `runtimeArgs` | string\[] | Argomenti passati a `runtimeExecutable`, come `["run", "dev"]` |

411| `port` | number | La porta su cui il tuo server ascolta. Predefinito a 3000 |

412| `cwd` | string | Directory di lavoro relativa alla radice del tuo progetto. Predefinito alla radice del progetto. Usa `${workspaceFolder}` per fare riferimento alla radice del progetto esplicitamente |

413| `env` | object | Variabili di ambiente aggiuntive come coppie chiave-valore, come `{ "NODE_ENV": "development" }`. Non mettere segreti qui poiché questo file viene eseguito il commit nel tuo repo. Per passare segreti al tuo server di sviluppo, impostali nell'[editor di ambiente locale](#local-sessions) invece. |

414| `autoPort` | boolean | Come gestire i conflitti di porta. Vedi di seguito |

415| `program` | string | Uno script da eseguire con `node`. Vedi [quando usare `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |

416| `args` | string\[] | Argomenti passati a `program`. Usato solo quando `program` è impostato |

417 

418##### When to use `program` vs `runtimeExecutable`

419 

420Usa `runtimeExecutable` con `runtimeArgs` per avviare un server di sviluppo tramite un gestore di pacchetti. Ad esempio, `"runtimeExecutable": "npm"` con `"runtimeArgs": ["run", "dev"]` esegue `npm run dev`.

421 

422Usa `program` quando hai uno script autonomo che vuoi eseguire con `node` direttamente. Ad esempio, `"program": "server.js"` esegue `node server.js`. Passa flag aggiuntivi con `args`.

423 

424#### Port conflicts

425 

426Il campo `autoPort` controlla cosa succede quando la tua porta preferita è già in uso:

427 

428* **`true`**: Claude trova e utilizza una porta libera automaticamente. Adatto per la maggior parte dei server di sviluppo.

429* **`false`**: Claude fallisce con un errore. Usa questo quando il tuo server deve usare una porta specifica, come per i callback OAuth o gli allowlist CORS.

430* **Non impostato (predefinito)**: Claude chiede se il server ha bisogno di quella porta esatta, quindi salva la tua risposta.

431 

432Quando Claude sceglie una porta diversa, passa la porta assegnata al tuo server tramite la variabile di ambiente `PORT`.

433 

434#### Examples

435 

436Queste configurazioni mostrano configurazioni comuni per diversi tipi di progetto:

437 

438<Tabs>

439 <Tab title="Next.js">

440 Questa configurazione esegue un'app Next.js usando Yarn sulla porta 3000:

441 

442 ```json theme={null}

443 {

444 "version": "0.0.1",

445 "configurations": [

446 {

447 "name": "web",

448 "runtimeExecutable": "yarn",

449 "runtimeArgs": ["dev"],

450 "port": 3000

451 }

452 ]

453 }

454 ```

455 </Tab>

456 

457 <Tab title="Multiple servers">

458 Per un monorepo con un frontend e un server API, definisci più configurazioni. Il frontend usa `autoPort: true` in modo che scelga una porta libera se 3000 è occupata, mentre il server API richiede la porta 8080 esattamente:

459 

460 ```json theme={null}

461 {

462 "version": "0.0.1",

463 "configurations": [

464 {

465 "name": "frontend",

466 "runtimeExecutable": "npm",

467 "runtimeArgs": ["run", "dev"],

468 "cwd": "apps/web",

469 "port": 3000,

470 "autoPort": true

471 },

472 {

473 "name": "api",

474 "runtimeExecutable": "npm",

475 "runtimeArgs": ["run", "start"],

476 "cwd": "server",

477 "port": 8080,

478 "env": { "NODE_ENV": "development" },

479 "autoPort": false

480 }

481 ]

482 }

483 ```

484 </Tab>

485 

486 <Tab title="Node.js script">

487 Per eseguire uno script Node.js direttamente invece di usare un comando del gestore di pacchetti, usa il campo `program`:

488 

489 ```json theme={null}

490 {

491 "version": "0.0.1",

492 "configurations": [

493 {

494 "name": "server",

495 "program": "server.js",

496 "args": ["--verbose"],

497 "port": 4000

498 }

499 ]

500 }

501 ```

502 </Tab>

503</Tabs>

504 

505## Configurazione dell'ambiente

506 

507L'ambiente che scegli quando [avvii una sessione](#start-a-session) determina dove Claude viene eseguito e come ti connetti:

508 

509* **Local**: viene eseguito sulla tua macchina con accesso diretto ai tuoi file

510* **Remote**: viene eseguito sull'infrastruttura cloud di Anthropic. Le sessioni continuano anche se chiudi l'app.

511* **SSH**: viene eseguito su una macchina remota a cui ti connetti tramite SSH, come i tuoi stessi server, VM cloud o dev container

512 

513### Local sessions

514 

515L'app desktop non sempre eredita il tuo ambiente shell completo. Su macOS, quando avvii l'app dal Dock o Finder, legge il tuo profilo shell, come `~/.zshrc` o `~/.bashrc`, per estrarre `PATH` e un insieme fisso di variabili Claude Code, ma altre variabili che esporti lì non vengono raccolte. Su Windows, l'app eredita variabili di ambiente utente e di sistema ma non legge i profili PowerShell.

516 

517Per impostare variabili di ambiente per le sessioni locali e i server di sviluppo su qualsiasi piattaforma, apri il menu a discesa dell'ambiente nella casella del prompt, passa il mouse su **Local** e fai clic sull'icona dell'ingranaggio per aprire l'editor di ambiente locale. Le variabili che salvi qui vengono archiviate crittografate sulla tua macchina e si applicano a ogni sessione locale e server di anteprima che avvii. Puoi anche aggiungere variabili alla chiave `env` nel tuo file `~/.claude/settings.json`, anche se queste raggiungono solo le sessioni Claude e non i server di sviluppo. Vedi [variabili di ambiente](/it/env-vars) per l'elenco completo delle variabili supportate.

518 

519[Extended thinking](/it/common-workflows#use-extended-thinking-thinking-mode) è abilitato per impostazione predefinita, il che migliora le prestazioni su compiti di ragionamento complesso ma utilizza token aggiuntivi. Per disabilitare completamente il thinking, imposta `MAX_THINKING_TOKENS` a `0` nell'editor di ambiente locale. Su modelli con [ragionamento adattivo](/it/model-config#adjust-effort-level), qualsiasi altro valore `MAX_THINKING_TOKENS` viene ignorato perché il ragionamento adattivo controlla la profondità del thinking. Su Opus 4.6 e Sonnet 4.6, imposta `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` a `1` per usare un budget di thinking fisso; Opus 4.7 usa sempre il ragionamento adattivo e non ha una modalità di budget fisso.

520 

521### Remote sessions

522 

523Le sessioni remote continuano in background anche se chiudi l'app. L'utilizzo conta verso i limiti del tuo [piano di abbonamento](/it/costs) senza costi di calcolo separati.

524 

525Puoi creare ambienti cloud personalizzati con diversi livelli di accesso alla rete e variabili di ambiente. Seleziona il menu a discesa dell'ambiente quando avvii una sessione remota e scegli **Add environment**. Vedi [l'ambiente cloud](/it/claude-code-on-the-web#the-cloud-environment) per i dettagli sulla configurazione dell'accesso alla rete e delle variabili di ambiente.

526 

527### SSH sessions

528 

529Le sessioni SSH ti consentono di eseguire Claude Code su una macchina remota mentre usi l'app desktop come tua interfaccia. Questo è utile per lavorare con codebase che vivono su VM cloud, dev container o server con hardware o dipendenze specifiche.

530 

531Per aggiungere una connessione SSH, fai clic sul menu a discesa dell'ambiente prima di avviare una sessione e seleziona **+ Add SSH connection**. La finestra di dialogo chiede:

532 

533* **Name**: un'etichetta amichevole per questa connessione

534* **SSH Host**: `user@hostname` o un host definito in `~/.ssh/config`

535* **SSH Port**: predefinito a 22 se lasciato vuoto, o utilizza la porta dal tuo SSH config

536* **Identity File**: percorso della tua chiave privata, come `~/.ssh/id_rsa`. Lascia vuoto per usare la chiave predefinita o il tuo SSH config.

537 

538Una volta aggiunta, la connessione appare nel menu a discesa dell'ambiente. Selezionala per avviare una sessione su quella macchina. Claude viene eseguito sulla macchina remota con accesso ai suoi file e strumenti.

539 

540La macchina remota deve eseguire Linux o macOS. L'app desktop installa Claude Code sulla macchina remota automaticamente la prima volta che ti connetti. Una volta connesso, le sessioni SSH supportano modalità di autorizzazione, connettori, plugin e MCP server.

541 

542#### Pre-configure SSH connections for your team

543 

544Gli amministratori possono distribuire connessioni SSH ai membri del team aggiungendo `sshConfigs` a un file di [impostazioni gestite](/it/settings#settings-precedence). Le connessioni definite in questo modo appaiono nel menu a discesa dell'ambiente di ogni utente automaticamente e vengono mostrate come gestite, quindi gli utenti possono selezionarle ma non possono modificarle o eliminarle nell'app.

545 

546L'esempio seguente pre-configura una singola connessione che si apre in `~/projects` sull'host remoto:

547 

548```json theme={null}

549{

550 "sshConfigs": [

551 {

552 "id": "shared-dev-vm",

553 "name": "Shared Dev VM",

554 "sshHost": "user@dev.example.com",

555 "sshPort": 22,

556 "sshIdentityFile": "~/.ssh/id_ed25519",

557 "startDirectory": "~/projects"

558 }

559 ]

560}

561```

562 

563Ogni voce richiede `id`, `name` e `sshHost`. I campi `sshPort`, `sshIdentityFile` e `startDirectory` sono facoltativi. Gli utenti possono anche aggiungere `sshConfigs` al loro `~/.claude/settings.json`, che è dove vengono archiviate le connessioni aggiunte tramite la finestra di dialogo.

564 

565## Configurazione aziendale

566 

567Le organizzazioni su piani Team o Enterprise possono gestire il comportamento dell'app desktop tramite controlli della console di amministrazione, file di impostazioni gestiti e criteri di gestione dei dispositivi.

568 

569### Controlli della console di amministrazione

570 

571Queste impostazioni sono configurate tramite la [console delle impostazioni di amministrazione](https://claude.ai/admin-settings/claude-code):

572 

573* **Code in the desktop**: controlla se gli utenti della tua organizzazione possono accedere a Claude Code nell'app desktop

574* **Code in the web**: abilita o disabilita le [sessioni web](/it/claude-code-on-the-web) per la tua organizzazione

575* **Remote Control**: abilita o disabilita [Remote Control](/it/remote-control) per la tua organizzazione

576* **Disable Bypass permissions mode**: impedisci agli utenti della tua organizzazione di abilitare la modalità bypass permissions

577 

578### Impostazioni gestite

579 

580Le impostazioni gestite sovrascrivono le impostazioni del progetto e dell'utente e si applicano quando Desktop genera sessioni CLI. Puoi impostare queste chiavi nel file [impostazioni gestite](/it/settings#settings-precedence) della tua organizzazione o inviarle in remoto tramite la console di amministrazione.

581 

582| Chiave | Descrizione |

583| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

584| `permissions.disableBypassPermissionsMode` | imposta su `"disable"` per impedire agli utenti di abilitare la modalità bypass permissions. |

585| `disableAutoMode` | imposta su `"disable"` per impedire agli utenti di abilitare la modalità [Auto](/it/permission-modes#eliminate-prompts-with-auto-mode). Rimuove Auto dal selettore di modalità. Accettato anche sotto `permissions`. |

586| `autoMode` | personalizza cosa il classificatore della modalità auto si fida e blocca in tutta la tua organizzazione. Vedi [Configura la modalità auto](/it/auto-mode-config). |

587| `sshConfigs` | pre-configura le [connessioni SSH](#pre-configure-ssh-connections-for-your-team) che appaiono nel menu a discesa dell'ambiente. Gli utenti non possono modificare o eliminare le connessioni gestite. |

588 

589Un file di impostazioni gestite distribuito su disco su ogni macchina si applica alle sessioni Desktop. Le impostazioni gestite inviate in remoto tramite la console di amministrazione attualmente raggiungono solo le sessioni CLI e IDE, quindi per le distribuzioni Desktop distribuisci il file tramite MDM o utilizza i [controlli della console di amministrazione](#admin-console-controls) sopra.

590 

591`permissions.disableBypassPermissionsMode` e `disableAutoMode` funzionano anche nelle impostazioni dell'utente e del progetto, ma metterli nelle impostazioni gestite impedisce agli utenti di sovrascriverli. `autoMode` viene letto dalle impostazioni dell'utente, `.claude/settings.local.json` e impostazioni gestite, ma non da `.claude/settings.json` controllato: un repo clonato non può iniettare le sue stesse regole del classificatore. Per l'elenco completo delle impostazioni solo gestite incluse `allowManagedPermissionRulesOnly` e `allowManagedHooksOnly`, vedi [impostazioni solo gestite](/it/permissions#managed-only-settings).

592 

593### Criteri di gestione dei dispositivi

594 

595I team IT possono gestire l'app desktop tramite MDM su macOS o criteri di gruppo su Windows. I criteri disponibili includono l'abilitazione o la disabilitazione della funzione Claude Code, il controllo degli aggiornamenti automatici e l'impostazione di un URL di distribuzione personalizzato.

596 

597* **macOS**: configura tramite il dominio di preferenza `com.anthropic.Claude` usando strumenti come Jamf o Kandji

598* **Windows**: configura tramite il registro in `SOFTWARE\Policies\Claude`

599 

600### Autenticazione e SSO

601 

602Le organizzazioni aziendali possono richiedere SSO per tutti gli utenti. Vedi [autenticazione](/it/authentication) per i dettagli a livello di piano e [Configurazione di SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso) per la configurazione SAML e OIDC.

603 

604### Gestione dei dati

605 

606Claude Code elabora il tuo codice localmente nelle sessioni locali o sull'infrastruttura cloud di Anthropic nelle sessioni remote. Le conversazioni e il contesto del codice vengono inviati all'API di Anthropic per l'elaborazione. Vedi [gestione dei dati](/it/data-usage) per i dettagli sulla conservazione dei dati, la privacy e la conformità.

607 

608### Distribuzione

609 

610Desktop può essere distribuito tramite strumenti di distribuzione aziendale:

611 

612* **macOS**: distribuisci tramite MDM come Jamf o Kandji usando il programma di installazione `.dmg`

613* **Windows**: distribuisci tramite pacchetto MSIX o programma di installazione `.exe`. Vedi [Distribuisci Claude Desktop per Windows](https://support.claude.com/en/articles/12622703-deploy-claude-desktop-for-windows) per le opzioni di distribuzione aziendale inclusa l'installazione silenziosa

614 

615Per la configurazione della rete come impostazioni proxy, allowlist del firewall e gateway LLM, vedi [configurazione della rete](/it/network-config).

616 

617Per il riferimento completo della configurazione aziendale, vedi la [guida alla configurazione aziendale](https://support.claude.com/en/articles/12622667-enterprise-configuration).

618 

619## Provieni dalla CLI?

620 

621Se usi già la CLI di Claude Code, Desktop esegue lo stesso motore sottostante con un'interfaccia grafica. Puoi eseguire entrambi contemporaneamente sulla stessa macchina, anche sullo stesso progetto. Ognuno mantiene una storia di sessione separata, ma condividono configurazione e memoria del progetto tramite file CLAUDE.md.

622 

623Per 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 solo su macOS e Windows.

624 

625<Tip>

626 Quando usare Desktop vs CLI: usa Desktop quando vuoi gestire sessioni parallele in una finestra, organizzare pannelli uno accanto all'altro, o rivedere le modifiche visivamente. Usa la CLI quando hai bisogno di scripting, automazione o preferisci un flusso di lavoro di terminale.

627</Tip>

628 

629### Equivalenti dei flag CLI

630 

631Questa tabella mostra l'equivalente dell'app desktop per i flag CLI comuni. I flag non elencati non hanno equivalente desktop perché sono progettati per scripting o automazione.

632 

633| CLI | Equivalente desktop |

634| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

635| `--model sonnet` | Menu a discesa del modello accanto al pulsante di invio |

636| `--resume`, `--continue` | Fai clic su una sessione nella barra laterale |

637| `--permission-mode` | Selettore di modalità accanto al pulsante di invio |

638| `--dangerously-skip-permissions` | Modalità Bypass permissions. Abilita in Impostazioni → Claude Code → "Allow bypass permissions mode". Gli amministratori aziendali possono disabilitare questa impostazione. |

639| `--add-dir` | Aggiungi più repo con il pulsante **+** nelle sessioni remote |

640| `--allowedTools`, `--disallowedTools` | Nessun equivalente per sessione. Le regole di autorizzazione nei [file di impostazioni](/it/settings) si applicano ancora. |

641| `--verbose` | Modalità di visualizzazione [Verbose](#switch-view-modes) nel menu a discesa della vista Transcript |

642| `--print`, `--output-format` | Non disponibile. Desktop è solo interattivo. |

643| `ANTHROPIC_MODEL` env var | Menu a discesa del modello accanto al pulsante di invio |

644| `MAX_THINKING_TOKENS` env var | Imposta nell'editor di ambiente locale. Vedi [configurazione dell'ambiente](#environment-configuration). |

645 

646### Configurazione condivisa

647 

648Desktop e CLI leggono gli stessi file di configurazione, quindi la tua configurazione viene trasferita:

649 

650* I file **[CLAUDE.md](/it/memory)** e `CLAUDE.local.md` nel tuo progetto vengono utilizzati da entrambi

651* I **[MCP servers](/it/mcp)** configurati in `~/.claude.json` o `.mcp.json` funzionano in entrambi

652* **[Hooks](/it/hooks)** e **[skills](/it/skills)** definiti nelle impostazioni si applicano a entrambi

653* **[Impostazioni](/it/settings)** in `~/.claude.json` e `~/.claude/settings.json` sono condivise. Le regole di autorizzazione, gli strumenti consentiti e altre impostazioni in `settings.json` si applicano alle sessioni Desktop.

654* **Modelli**: Sonnet, Opus e Haiku sono disponibili in entrambi. In Desktop, seleziona il modello dal menu a discesa accanto al pulsante di invio. Puoi cambiare il modello durante una sessione dal stesso menu a discesa.

655 

656<Note>

657 **MCP servers: app desktop chat vs Claude Code**: i MCP servers configurati per l'app desktop chat Claude in `claude_desktop_config.json` sono separati da Claude Code e non appariranno nella scheda Code. Per usare MCP servers in Claude Code, configurali in `~/.claude.json` o nel file `.mcp.json` del tuo progetto. Vedi [configurazione MCP](/it/mcp#installing-mcp-servers) per i dettagli.

658</Note>

659 

660### Confronto delle funzionalità

661 

662Questa tabella confronta le capacità principali tra CLI e Desktop. Per un elenco completo dei flag CLI, vedi il [riferimento CLI](/it/cli-reference).

663 

664| Funzionalità | CLI | Desktop |

665| ------------------------------------------------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

666| Modalità di autorizzazione | Tutte le modalità inclusa `dontAsk` | Chiedi autorizzazioni, Accetta automaticamente modifiche, Plan mode, Auto e Bypass permissions tramite Impostazioni |

667| `--dangerously-skip-permissions` | Flag CLI | Modalità Bypass permissions. Abilita in Impostazioni → Claude Code → "Allow bypass permissions mode" |

668| [Provider di terze parti](/it/third-party-integrations) | Bedrock, Vertex, Foundry | API di Anthropic per impostazione predefinita. Le distribuzioni aziendali possono configurare Vertex AI e provider gateway. Vedi la [guida alla configurazione aziendale](https://support.claude.com/en/articles/12622667-enterprise-configuration). |

669| [MCP servers](/it/mcp) | Configura nei file di impostazioni | UI Connectors per sessioni locali e SSH, o file di impostazioni |

670| [Plugins](/it/plugins) | Comando `/plugin` | UI gestore plugin |

671| @mention file | Basato su testo | Con autocomplete; sessioni locali e SSH solo |

672| Allegati di file | Non disponibile | Immagini, PDF |

673| Isolamento della sessione | Flag [`--worktree`](/it/cli-reference) | Worktree automatici |

674| Sessioni multiple | Terminali separati | Schede della barra laterale |

675| Attività ricorrenti | Cron job, pipeline CI | [Attività pianificate](/it/desktop-scheduled-tasks) |

676| Utilizzo del computer | [Abilita tramite `/mcp`](/it/computer-use) su macOS | [Controllo di app e schermo](#let-claude-use-your-computer) su macOS e Windows |

677| Integrazione Dispatch | Non disponibile | [Sessioni Dispatch](#sessions-from-dispatch) nella barra laterale |

678| Scripting e automazione | [`--print`](/it/cli-reference), [Agent SDK](/it/headless) | Non disponibile |

679 

680### Cosa non è disponibile in Desktop

681 

682Le seguenti funzionalità sono disponibili solo nella CLI o nell'estensione VS Code:

683 

684* **Provider di terze parti**: Desktop si connette all'API di Anthropic per impostazione predefinita. Le distribuzioni aziendali possono configurare Vertex AI e provider gateway tramite [impostazioni gestite](https://support.claude.com/en/articles/12622667-enterprise-configuration). Per Bedrock o Foundry, usa la [CLI](/it/quickstart).

685* **Linux**: l'app desktop è disponibile solo su macOS e Windows. Su Linux, usa la [CLI](/it/quickstart).

686* **Suggerimenti di codice inline**: Desktop non fornisce suggerimenti in stile autocomplete. Funziona tramite prompt conversazionali e modifiche di codice esplicite.

687* **Team di agent**: l'orchestrazione multi-agent è disponibile tramite la [CLI](/it/agent-teams) e [Agent SDK](/it/headless), non in Desktop.

688 

689## Troubleshooting

690 

691Le sezioni di seguito coprono i problemi specifici dell'app desktop. Per gli errori API di runtime che appaiono nella chat come `API Error: 500`, `529 Overloaded`, `429` o `Prompt is too long`, vedi il [riferimento degli errori](/it/errors). Questi errori e le loro correzioni sono gli stessi su CLI, desktop e web.

692 

693### Check your version

694 

695Per vedere quale versione dell'app desktop stai eseguendo:

696 

697* **macOS**: fai clic su **Claude** nella barra dei menu, quindi **About Claude**

698* **Windows**: fai clic su **Help**, quindi **About**

699 

700Fai clic sul numero di versione per copiarlo negli appunti.

701 

702### 403 or authentication errors in the Code tab

703 

704Se vedi `Error 403: Forbidden` o altri errori di autenticazione quando usi la scheda Code:

705 

7061. Esci e accedi di nuovo dal menu dell'app. Questo è il fix più comune.

7072. Verifica di avere un abbonamento a pagamento attivo: Pro, Max, Team o Enterprise.

7083. Se la CLI funziona ma Desktop no, esci completamente dall'app desktop, non solo chiudere la finestra, quindi riapri e accedi di nuovo.

7094. Controlla la tua connessione Internet e le impostazioni del proxy.

710 

711### Blank or stuck screen on launch

712 

713Se l'app si apre ma mostra una schermata vuota o non reattiva:

714 

7151. Riavvia l'app.

7162. Controlla gli aggiornamenti in sospeso. L'app si aggiorna automaticamente al lancio.

7173. Su Windows, controlla Event Viewer per i log di crash sotto **Windows Logs → Application**.

718 

719### "Failed to load session"

720 

721Se vedi `Failed to load session`, la cartella selezionata potrebbe non esistere più, un repository Git potrebbe richiedere Git LFS che non è installato, o i permessi dei file potrebbero impedire l'accesso. Prova a selezionare una cartella diversa o riavvia l'app.

722 

723### Session not finding installed tools

724 

725Se Claude non riesce a trovare strumenti come `npm`, `node` o altri comandi CLI, verifica che gli strumenti funzionino nel tuo terminale regolare, controlla che il tuo profilo shell configuri correttamente PATH e riavvia l'app desktop per ricaricare le variabili di ambiente.

726 

727### Git and Git LFS errors

728 

729Su Windows, Git è richiesto affinché la scheda Code avvii sessioni locali. Se vedi "Git is required," installa [Git per Windows](https://git-scm.com/downloads/win) e riavvia l'app.

730 

731Se vedi "Git LFS is required by this repository but is not installed," installa Git LFS da [git-lfs.com](https://git-lfs.com/), esegui `git lfs install` e riavvia l'app.

732 

733### MCP servers not working on Windows

734 

735Se gli interruttori del server MCP non rispondono o i server non riescono a connettersi su Windows, controlla che il server sia configurato correttamente nelle tue impostazioni, riavvia l'app, verifica che il processo del server sia in esecuzione in Task Manager e rivedi i log del server per gli errori di connessione.

736 

737### App won't quit

738 

739* **macOS**: premi Cmd+Q. Se l'app non risponde, usa Force Quit con Cmd+Option+Esc, seleziona Claude e fai clic su Force Quit.

740* **Windows**: usa Task Manager con Ctrl+Shift+Esc per terminare il processo Claude.

741 

742### Windows-specific issues

743 

744* **PATH not updated after install**: apri una nuova finestra di terminale. Gli aggiornamenti di PATH si applicano solo alle nuove sessioni di terminale.

745* **Concurrent installation error**: se vedi un errore su un'altra installazione in corso ma non ce n'è una, prova a eseguire il programma di installazione come Amministratore.

746 

747### "Branch doesn't exist yet" when opening in CLI

748 

749Le sessioni remote possono creare rami che non esistono sulla tua macchina locale. Fai clic sul nome del ramo nella barra degli strumenti della sessione per copiarlo, quindi recuperalo localmente:

750 

751```bash theme={null}

752git fetch origin <branch-name>

753git checkout <branch-name>

754```

755 

756### Still stuck?

757 

758* Cerca o segnala un bug su [GitHub Issues](https://github.com/anthropics/claude-code/issues)

759* Visita il [centro di supporto Claude](https://support.claude.com/)

760 

761Quando segnali un bug, includi la versione dell'app desktop, il tuo sistema operativo, il messaggio di errore esatto e i log pertinenti. Su macOS, controlla Console.app. Su Windows, controlla Event Viewer → Windows Logs → Application.

desktop-quickstart.md +129 −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# Iniziare con l'app desktop

6 

7> Installa Claude Code su desktop e avvia la tua prima sessione di codifica

8 

9L'app desktop ti offre Claude Code con un'interfaccia grafica costruita per eseguire più sessioni affiancate: una barra laterale per gestire il lavoro parallelo, un layout con trascinamento della selezione con terminale integrato e editor di file, revisione visiva dei diff, anteprima live dell'app, monitoraggio dei PR di GitHub con merge automatico e attività pianificate. Non è richiesto alcun terminale.

10 

11<CardGroup cols={2}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon

14 </Card>

15 

16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors

18 </Card>

19</CardGroup>

20 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.

22 

23<Note>

24 Claude Code richiede un [abbonamento Pro, Max, Team o Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_pricing).

25</Note>

26 

27Questa pagina illustra l'installazione dell'app e l'avvio della tua prima sessione. Se sei già configurato, consulta [Usa Claude Code Desktop](/it/desktop) per il riferimento completo.

28 

29L'app desktop ha tre schede:

30 

31* **Chat**: Conversazione generale senza accesso ai file, simile a claude.ai.

32* **Cowork**: Un agente autonomo in background che lavora su attività in una VM cloud con il suo ambiente. Può funzionare indipendentemente mentre tu fai altro.

33* **Code**: Un assistente di codifica interattivo con accesso diretto ai tuoi file locali. Rivedi e approvi ogni modifica in tempo reale.

34 

35Chat e Cowork sono trattati negli [articoli di supporto di Claude Desktop](https://support.claude.com/en/collections/16163169-claude-desktop). Questa pagina si concentra sulla scheda **Code**.

36 

37## Installa

38 

39<Steps>

40 <Step title="Installa e accedi">

41 Scarica il programma di installazione per la tua piattaforma dai link sopra ed eseguilo. Avvia Claude dalla cartella Applicazioni su macOS o dal menu Start su Windows, quindi accedi con il tuo account Anthropic.

42 </Step>

43 

44 <Step title="Apri la scheda Code">

45 Fai clic sulla scheda **Code** al centro in alto. Se facendo clic su Code ti viene chiesto di eseguire l'upgrade, devi prima [sottoscrivere un piano a pagamento](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_upgrade). Se ti viene chiesto di accedere online, completa l'accesso e riavvia l'app. Se vedi un errore 403, consulta [risoluzione dei problemi di autenticazione](/it/desktop#403-or-authentication-errors-in-the-code-tab).

46 </Step>

47</Steps>

48 

49L'app desktop include Claude Code. Non è necessario installare Node.js o la CLI separatamente. Per utilizzare `claude` dal terminale, installa la CLI separatamente. Consulta [Iniziare con la CLI](/it/quickstart).

50 

51## Avvia la tua prima sessione

52 

53Con la scheda Code aperta, scegli un progetto e dai a Claude qualcosa da fare.

54 

55<Steps>

56 <Step title="Scegli un ambiente e una cartella">

57 Seleziona **Local** per eseguire Claude sulla tua macchina utilizzando direttamente i tuoi file. Fai clic su **Select folder** e scegli la directory del tuo progetto.

58 

59 <Tip>

60 Inizia con un piccolo progetto che conosci bene. È il modo più veloce per vedere cosa può fare Claude Code. Su Windows, [Git](https://git-scm.com/downloads/win) deve essere installato affinché le sessioni locali funzionino. La maggior parte dei Mac include Git per impostazione predefinita.

61 </Tip>

62 

63 Puoi anche selezionare:

64 

65 * **Remote**: Esegui sessioni sull'infrastruttura cloud di Anthropic che continuano anche se chiudi l'app. Le sessioni remote utilizzano la stessa infrastruttura di [Claude Code sul web](/it/claude-code-on-the-web).

66 * **SSH**: Connettiti a una macchina remota tramite SSH (i tuoi server, VM cloud o dev container). Claude Code deve essere installato sulla macchina remota.

67 </Step>

68 

69 <Step title="Scegli un modello">

70 Seleziona un modello dal menu a discesa accanto al pulsante di invio. Consulta [modelli](/it/model-config#available-models) per un confronto tra Opus, Sonnet e Haiku. Puoi cambiare il modello in seguito dallo stesso menu a discesa.

71 </Step>

72 

73 <Step title="Dì a Claude cosa fare">

74 Digita cosa vuoi che Claude faccia:

75 

76 * `Find a TODO comment and fix it`

77 * `Add tests for the main function`

78 * `Create a CLAUDE.md with instructions for this codebase`

79 

80 Una [sessione](/it/desktop#work-in-parallel-with-sessions) è una conversazione con Claude sul tuo codice. Ogni sessione tiene traccia del suo contesto e delle sue modifiche, quindi puoi lavorare su più attività senza che si interferiscano a vicenda.

81 </Step>

82 

83 <Step title="Rivedi e accetta le modifiche">

84 Per impostazione predefinita, la scheda Code inizia in [modalità Chiedi autorizzazioni](/it/desktop#choose-a-permission-mode), dove Claude propone modifiche e attende la tua approvazione prima di applicarle. Vedrai:

85 

86 1. Una [visualizzazione diff](/it/desktop#review-changes-with-diff-view) che mostra esattamente cosa cambierà in ogni file

87 2. Pulsanti Accetta/Rifiuta per approvare o rifiutare ogni modifica

88 3. Aggiornamenti in tempo reale mentre Claude lavora sulla tua richiesta

89 

90 Se rifiuti una modifica, Claude ti chiederà come vorresti procedere diversamente. I tuoi file non vengono modificati finché non accetti.

91 </Step>

92</Steps>

93 

94## E adesso?

95 

96Hai fatto la tua prima modifica. Per il riferimento completo su tutto ciò che Desktop può fare, consulta [Usa Claude Code Desktop](/it/desktop). Ecco alcune cose da provare dopo.

97 

98**Interrompi e guida.** Puoi interrompere Claude in qualsiasi momento. Se sta andando nella direzione sbagliata, fai clic sul pulsante di arresto o digita la tua correzione e premi **Invio**. Claude smette di fare quello che sta facendo e si adatta in base al tuo input. Non devi aspettare che finisca o ricominciare da capo.

99 

100**Dai a Claude più contesto.** Digita `@filename` nella casella di prompt per inserire un file specifico nella conversazione, allega immagini e PDF utilizzando il pulsante di allegato, o trascina e rilascia i file direttamente nel prompt. Più contesto ha Claude, migliori sono i risultati. Consulta [Aggiungi file e contesto](/it/desktop#add-files-and-context-to-prompts).

101 

102**Usa skills per attività ripetibili.** Digita `/` o fai clic su **+** → **Slash commands** per sfogliare [comandi incorporati](/it/commands), [skills personalizzate](/it/skills) e skills di plugin. Le skills sono prompt riutilizzabili che puoi invocare quando ne hai bisogno, come liste di controllo per la revisione del codice o passaggi di distribuzione.

103 

104**Rivedi le modifiche prima di eseguire il commit.** Dopo che Claude modifica i file, appare un indicatore `+12 -1`. Fai clic su di esso per aprire la [visualizzazione diff](/it/desktop#review-changes-with-diff-view), rivedi le modifiche file per file e commenta righe specifiche. Claude legge i tuoi commenti e revisionali. Fai clic su **Review code** per far valutare a Claude i diff stessi e lasciare suggerimenti inline.

105 

106**Regola quanto controllo hai.** La tua [modalità di autorizzazione](/it/desktop#choose-a-permission-mode) controlla l'equilibrio. Chiedi autorizzazioni (predefinito) richiede approvazione prima di ogni modifica. Auto accept edits accetta automaticamente le modifiche ai file per un'iterazione più veloce. Plan mode consente a Claude di mappare un approccio senza toccare alcun file, il che è utile prima di un grande refactor.

107 

108**Aggiungi plugin per più funzionalità.** Fai clic sul pulsante **+** accanto alla casella di prompt e seleziona **Plugins** per sfogliare e installare [plugin](/it/desktop#install-plugins) che aggiungono skills, agenti, MCP servers e altro.

109 

110**Organizza il tuo spazio di lavoro.** Trascina i riquadri chat, diff, terminale, file e anteprima in qualsiasi layout desideri. Apri il terminale con **Ctrl+\`** per eseguire comandi insieme alla tua sessione, o fai clic su un percorso di file per aprirlo nel riquadro file. Consulta [Organizza il tuo spazio di lavoro](/it/desktop#arrange-your-workspace).

111 

112**Visualizza l'anteprima della tua app.** Fai clic sul menu a discesa **Preview** per eseguire il tuo dev server direttamente nel desktop. Claude può visualizzare l'app in esecuzione, testare gli endpoint, ispezionare i log e iterare su ciò che vede. Consulta [Visualizza l'anteprima della tua app](/it/desktop#preview-your-app).

113 

114**Traccia la tua pull request.** Dopo aver aperto un PR, Claude Code monitora i risultati dei controlli CI e può correggere automaticamente gli errori o unire il PR una volta che tutti i controlli passano. Consulta [Monitora lo stato della pull request](/it/desktop#monitor-pull-request-status).

115 

116**Metti Claude in programma.** Configura [attività pianificate](/it/desktop-scheduled-tasks) per eseguire Claude automaticamente su base ricorrente: una revisione del codice giornaliera ogni mattina, un audit delle dipendenze settimanale o un briefing che estrae dai tuoi strumenti connessi.

117 

118**Scala quando sei pronto.** Apri [sessioni parallele](/it/desktop#work-in-parallel-with-sessions) dalla barra laterale per lavorare su più attività contemporaneamente, ognuna nel suo Git worktree, e apri il [riquadro attività](/it/desktop#watch-background-tasks) per guardare i subagenti e i comandi in background che una sessione sta eseguendo. Apri una [chat laterale](/it/desktop#ask-a-side-question-without-derailing-the-session) per fare una domanda senza deviare il thread principale. Invia [lavoro di lunga durata al cloud](/it/desktop#run-long-running-tasks-remotely) in modo che continui anche se chiudi l'app, o [continua una sessione sul web o nel tuo IDE](/it/desktop#continue-in-another-surface) se un'attività richiede più tempo del previsto. [Connetti strumenti esterni](/it/desktop#extend-claude-code) come GitHub, Slack e Linear per riunire il tuo flusso di lavoro.

119 

120## Vieni dalla CLI?

121 

122Desktop esegue lo stesso motore della CLI con un'interfaccia grafica. Puoi eseguire entrambi contemporaneamente sullo stesso progetto e condividono la configurazione (file CLAUDE.md, MCP servers, hooks, skills e impostazioni). Per un confronto completo delle funzionalità, equivalenti di flag e cosa non è disponibile in Desktop, consulta [Confronto CLI](/it/desktop#coming-from-the-cli).

123 

124## Cosa c'è dopo

125 

126* [Usa Claude Code Desktop](/it/desktop): modalità di autorizzazione, sessioni parallele, visualizzazione diff, connettori e configurazione aziendale

127* [Risoluzione dei problemi](/it/desktop#troubleshooting): soluzioni a errori comuni e problemi di configurazione

128* [Best practice](/it/best-practices): suggerimenti per scrivere prompt efficaci e ottenere il massimo da Claude Code

129* [Flussi di lavoro comuni](/it/common-workflows): tutorial per il debug, il refactoring, i test e altro

devcontainer.md +194 −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# Contenitori di sviluppo

6 

7> Esegui Claude Code all'interno di un contenitore di sviluppo per ambienti coerenti e isolati in tutto il tuo team.

8 

9Un [contenitore di sviluppo](https://containers.dev/), o dev container, ti consente di definire un ambiente identico e isolato che ogni ingegnere del tuo team può eseguire. Con Claude Code installato in quel contenitore, i comandi che Claude esegue vengono eseguiti al suo interno piuttosto che sulla macchina host, mentre le modifiche ai file del tuo progetto vengono visualizzate nel tuo repository locale mentre lavori.

10 

11Questa pagina copre [l'installazione di Claude Code in un dev container](#add-claude-code-to-your-dev-container) e gli argomenti di configurazione che seguono. Ogni argomento è autonomo, quindi passa a quelli che corrispondono a ciò che devi configurare:

12 

13* [Mantieni l'autenticazione e le impostazioni tra i rebuild](#persist-authentication-and-settings-across-rebuilds)

14* [Applica la politica organizzativa](#enforce-organization-policy)

15* [Limita l'uscita di rete](#restrict-network-egress)

16* [Esegui senza prompt di autorizzazione](#run-without-permission-prompts)

17 

18<Warning>

19 Sebbene il dev container fornisca protezioni sostanziali, nessun sistema è completamente immune da tutti gli attacchi.

20 Quando eseguito con `--dangerously-skip-permissions`, i dev container non impediscono a un progetto dannoso di estrarre qualsiasi cosa accessibile all'interno del contenitore, incluse le credenziali di Claude Code archiviate in [`~/.claude`](/it/claude-directory).

21 Utilizza i dev container solo quando sviluppi con repository affidabili e monitora le attività di Claude.

22 Evita di montare segreti host come `~/.ssh` o file di credenziali cloud nel contenitore; preferisci token con ambito repository o di breve durata.

23</Warning>

24 

25<Accordion title="Come i dev container funzionano con il tuo editor">

26 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="Diagramma che mostra un editor sull'host che si connette a un dev container Docker. Claude Code, il terminale e gli strumenti di build vengono eseguiti all'interno del contenitore. Il repository host è bind-montato nel contenitore come workspace." width="640" height="300" data-path="images/devcontainer-architecture.svg" />

27 

28 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=ef00c8e25b1ea7a3a152895f1488831b" className="hidden dark:block" alt="Diagramma che mostra un editor sull'host che si connette a un dev container Docker. Claude Code, il terminale e gli strumenti di build vengono eseguiti all'interno del contenitore. Il repository host è bind-montato nel contenitore come workspace." width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />

29 

30 Un dev container viene eseguito come contenitore Docker, sia sulla tua macchina che su un host cloud come GitHub Codespaces. Un editor che supporta la specifica Dev Containers, come VS Code, GitHub Codespaces, un IDE JetBrains o Cursor, si connette a quel contenitore: navighi e modifichi i file nell'editor come al solito, ma il terminale integrato, i language server e gli strumenti di build vengono tutti eseguiti all'interno del contenitore piuttosto che sul tuo host. Gli editor senza supporto per dev container, come Vim semplice, non fanno parte di questo flusso di lavoro.

31 

32 Claude Code viene eseguito all'interno del contenitore, quindi vede gli stessi file, dipendenze e strumenti del resto della toolchain del tuo progetto. In VS Code puoi utilizzare il [pannello dell'estensione Claude Code](/it/vs-code) o eseguire `claude` nel terminale integrato; entrambi vengono eseguiti all'interno del contenitore e condividono la stessa configurazione `~/.claude`.

33</Accordion>

34 

35## Aggiungi Claude Code al tuo dev container

36 

37Claude Code si installa in qualsiasi dev container tramite la [Claude Code Dev Container Feature](https://github.com/anthropics/devcontainer-features/tree/main/src/claude-code).

38 

39Le impostazioni funzionano con qualsiasi strumento che supporti la specifica Dev Containers, come VS Code, GitHub Codespaces o IDE JetBrains. I passaggi seguenti utilizzano VS Code come esempio.

40 

41Quando apri il contenitore in VS Code o Codespaces, la feature aggiunge anche l'estensione Claude Code VS Code; altri editor ignorano quella parte.

42 

43<Tip>

44 Nuovo ai dev container? Il [tutorial VS Code Dev Containers](https://code.visualstudio.com/docs/devcontainers/tutorial) ti guida attraverso l'installazione di Docker, l'estensione e l'apertura del tuo primo contenitore. Per un esempio più completo e hardened con un firewall e volumi persistenti, vedi [Prova il contenitore di riferimento](#try-the-reference-container).

45</Tip>

46 

47<Steps>

48 <Step title="Crea o aggiorna devcontainer.json">

49 Salva quanto segue come `.devcontainer/devcontainer.json` nel tuo repository, o aggiungi il blocco `features` al tuo file esistente.

50 

51 Il tag della versione alla fine, come `:1.0`, fissa lo script di installazione della feature, non la versione di Claude Code. La feature installa l'ultimo Claude Code, e Claude Code si auto-aggiorna automaticamente all'interno del contenitore per impostazione predefinita.

52 

53 Per fissare la versione CLI o disabilitare l'auto-aggiornamento, vedi [Applica la politica organizzativa](#enforce-organization-policy).

54 

55 ```json .devcontainer/devcontainer.json theme={null}

56 {

57 "image": "mcr.microsoft.com/devcontainers/base:ubuntu",

58 "features": {

59 "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}

60 }

61 }

62 ```

63 

64 Sostituisci la riga `image` con l'immagine base del tuo progetto o rimuovila se il tuo file esistente utilizza un Dockerfile.

65 </Step>

66 

67 <Step title="Ricostruisci il contenitore">

68 Apri il Command Palette di VS Code con `Cmd+Shift+P` su Mac o `Ctrl+Shift+P` su Windows e Linux, ed esegui **Dev Containers: Rebuild Container**.

69 

70 Per altri strumenti, segui l'azione di rebuild di quello strumento: vedi [ricostruzione in GitHub Codespaces](https://docs.github.com/en/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace), la [CLI Dev Containers](https://github.com/devcontainers/cli), o la documentazione dev container del tuo IDE.

71 </Step>

72 

73 <Step title="Accedi a Claude Code">

74 Apri un terminale nel contenitore ricostruito ed esegui `claude`, quindi segui il prompt di autenticazione.

75 </Step>

76</Steps>

77 

78Quello che vedi al prompt di autenticazione dipende dal tuo provider:

79 

80* **Anthropic**: accedi tramite browser con il tuo account Claude o Anthropic Console

81* **[Amazon Bedrock, Google Vertex AI o Microsoft Foundry](/it/third-party-integrations)**: Claude Code utilizza le tue credenziali del provider cloud, senza prompt del browser

82 

83Per i provider cloud, passa le credenziali nel contenitore come variabili di ambiente tramite `containerEnv`, un segreto di Codespaces, o l'identità del carico di lavoro del tuo cloud piuttosto che montare file di credenziali dall'host. Vedi [Amazon Bedrock](/it/amazon-bedrock), [Google Vertex AI](/it/google-vertex-ai), o [Microsoft Foundry](/it/microsoft-foundry) per la catena di credenziali che Claude Code legge.

84 

85Vedi [Scegli il tuo provider API](/it/admin-setup#choose-your-api-provider) per decidere quale percorso si adatta alla tua organizzazione.

86 

87<Note>

88 Se l'accesso al browser si completa ma il callback non raggiunge mai il contenitore, copia il codice mostrato nel browser e incollalo al prompt `Paste code here if prompted` nel terminale. Questo può accadere quando l'inoltro delle porte dell'editor non instrada il callback localhost.

89</Note>

90 

91## Mantieni l'autenticazione e le impostazioni tra i rebuild

92 

93Per impostazione predefinita, la directory home del contenitore viene scartata al rebuild, quindi gli ingegneri devono accedere di nuovo ogni volta. Claude Code archivia il suo token di autenticazione, le impostazioni utente e la cronologia della sessione in [`~/.claude`](/it/claude-directory). Monta un volume denominato in quel percorso per mantenere questo stato tra i rebuild.

94 

95L'esempio seguente monta un volume nella directory home dell'utente `node`:

96 

97```json devcontainer.json theme={null}

98"mounts": [

99 "source=claude-code-config,target=/home/node/.claude,type=volume"

100]

101```

102 

103Sostituisci `/home/node` con la directory home del `remoteUser` del tuo contenitore. Se monti il volume in un luogo diverso da `~/.claude`, imposta [`CLAUDE_CONFIG_DIR`](/it/env-vars) al percorso di montaggio in modo che Claude Code legga e scriva lì.

104 

105Per isolare lo stato per progetto piuttosto che condividere un volume su tutti i repository, includi la variabile `${devcontainerId}` nel nome della sorgente. La [configurazione di riferimento](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) utilizza `source=claude-code-config-${devcontainerId}` per questo scopo.

106 

107In GitHub Codespaces, `~/.claude` persiste tra l'arresto e l'avvio di un codespace, ma viene comunque cancellato quando ricostruisci il contenitore, quindi il mount del volume sopra si applica anche lì. Per portare l'autenticazione tra i codespace, archivia `ANTHROPIC_API_KEY` o un `CLAUDE_CODE_OAUTH_TOKEN` da [`claude setup-token`](/it/authentication#generate-a-long-lived-token) come [segreto di Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces); Codespaces rende i segreti disponibili come variabili di ambiente all'interno del contenitore automaticamente.

108 

109## Applica la politica organizzativa

110 

111Un dev container è un luogo conveniente per applicare la politica organizzativa, perché la stessa immagine e configurazione vengono eseguite sulla macchina di ogni ingegnere.

112 

113Claude Code legge `/etc/claude-code/managed-settings.json` su Linux e lo applica con la massima precedenza nella [gerarchia delle impostazioni](/it/settings#how-scopes-interact), quindi i valori lì sovrascrivono qualsiasi cosa un ingegnere imposti in `~/.claude` o nella directory `.claude/` del progetto. Copia il file in posizione dal tuo Dockerfile:

114 

115```dockerfile Dockerfile theme={null}

116RUN mkdir -p /etc/claude-code

117COPY managed-settings.json /etc/claude-code/managed-settings.json

118```

119 

120Poiché il Dockerfile risiede nel repository, chiunque abbia accesso in scrittura può modificare o rimuovere questo passaggio. Per la politica che gli ingegneri non possono aggirare modificando i file del repository, fornisci le impostazioni gestite tramite [impostazioni gestite dal server](/it/server-managed-settings) o il tuo MDM. Vedi [file di impostazioni gestite](/it/settings#settings-files) per le chiavi disponibili e gli altri percorsi di consegna.

121 

122Per impostare [variabili di ambiente](/it/env-vars) che si applicano a ogni sessione di Claude Code nel contenitore, aggiungile a `containerEnv` nel tuo `devcontainer.json`. L'esempio seguente disattiva la telemetria e la segnalazione degli errori e impedisce a Claude Code di auto-aggiornarsi dopo l'installazione:

123 

124```json devcontainer.json theme={null}

125"containerEnv": {

126 "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",

127 "DISABLE_AUTOUPDATER": "1"

128}

129```

130 

131La Dev Container Feature installa sempre l'ultima versione di Claude Code. Per fissare una versione specifica di Claude Code per build riproducibili, installala dal tuo Dockerfile con `npm install -g @anthropic-ai/claude-code@X.Y.Z` invece di utilizzare la feature, e imposta `DISABLE_AUTOUPDATER` come mostrato sopra.

132 

133Per l'elenco completo dei controlli di politica incluse le regole di autorizzazione, le restrizioni degli strumenti e gli allowlist dei server MCP, vedi [Configura Claude Code per la tua organizzazione](/it/admin-setup).

134 

135Per rendere disponibili i [server MCP](/it/mcp) all'interno del contenitore, definiscili a [ambito di progetto](/it/mcp#mcp-installation-scopes) in un file `.mcp.json` alla radice del repository in modo che siano archiviati insieme alla configurazione del tuo dev container. Installa tutti i binari su cui i server stdio locali dipendono nel tuo Dockerfile, e aggiungi i domini dei server remoti al tuo allowlist di rete.

136 

137## Limita l'uscita di rete

138 

139Puoi limitare il traffico in uscita del contenitore solo ai domini di cui Claude Code ha bisogno. Vedi [Requisiti di accesso alla rete](/it/network-config#network-access-requirements) per i domini di inferenza e autenticazione, e [Servizi di telemetria](/it/data-usage#telemetry-services) per le connessioni opzionali di telemetria e segnalazione degli errori e come disabilitarle.

140 

141Il contenitore di riferimento include uno script [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) che blocca tutto il traffico in uscita tranne i domini di cui Claude Code e i tuoi strumenti di sviluppo hanno bisogno. L'esecuzione di un firewall all'interno di un contenitore richiede autorizzazioni extra, quindi il riferimento aggiunge le capacità `NET_ADMIN` e `NET_RAW` tramite `runArgs`. Lo script del firewall e queste capacità non sono richiesti per Claude Code stesso: puoi lasciarli fuori e affidarti ai tuoi controlli di rete.

142 

143## Esegui senza prompt di autorizzazione

144 

145Poiché il contenitore esegue Claude Code come utente non-root e confina l'esecuzione dei comandi al contenitore, puoi passare `--dangerously-skip-permissions` per l'operazione automatica. La CLI rifiuta questo flag quando lanciato come root, quindi conferma che `remoteUser` è impostato su un account non-root.

146 

147Saltare i prompt di autorizzazione rimuove la tua opportunità di rivedere le chiamate degli strumenti prima che vengono eseguite. Claude può comunque modificare qualsiasi file nel workspace bind-montato, che appare direttamente sul tuo host, e raggiungere qualsiasi cosa la politica di rete del contenitore consente. Abbina questo flag alle [restrizioni di uscita di rete](#restrict-network-egress) sopra per limitare ciò che una sessione bypassata può raggiungere.

148 

149Se desideri meno prompt senza disabilitare i controlli di sicurezza, considera invece la [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode), che ha un classificatore che rivede le azioni prima che vengono eseguite. Per impedire agli ingegneri di utilizzare `--dangerously-skip-permissions` del tutto, imposta `permissions.disableBypassPermissionsMode` su `"disable"` nelle [impostazioni gestite](/it/settings#permission-settings).

150 

151## Prova il contenitore di riferimento

152 

153Il repository [`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/.devcontainer) include un esempio di dev container che combina la CLI, il firewall di uscita, i volumi persistenti e una shell basata su Zsh. È fornito come esempio funzionante piuttosto che come immagine base mantenuta; usalo per vedere come i pezzi si incastrano insieme prima di applicarli alla tua configurazione.

154 

155<Steps>

156 <Step title="Installa i prerequisiti">

157 Installa VS Code e l'[estensione Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers).

158 </Step>

159 

160 <Step title="Clona il riferimento">

161 Clona il [repository Claude Code](https://github.com/anthropics/claude-code) e aprilo in VS Code.

162 </Step>

163 

164 <Step title="Riapri nel contenitore">

165 Quando richiesto, fai clic su **Reopen in Container**, o esegui **Dev Containers: Reopen in Container** dal Command Palette.

166 </Step>

167 

168 <Step title="Avvia Claude Code">

169 Una volta che il contenitore finisce di costruire, apri un terminale con `` Ctrl+` `` ed esegui `claude` per accedere e avviare la tua prima sessione.

170 </Step>

171</Steps>

172 

173Per utilizzare questa configurazione con il tuo progetto, copia la directory `.devcontainer/` nel tuo repository e adatta il Dockerfile per la tua toolchain, o torna a [Aggiungi Claude Code al tuo dev container](#add-claude-code-to-your-dev-container) per aggiungere solo la feature a una configurazione che hai già.

174 

175La configurazione di riferimento è composta da tre file. Nessuno di loro è richiesto quando aggiungi Claude Code al tuo dev container tramite la feature, ma mostrano un modo per combinare i pezzi.

176 

177| File | Scopo |

178| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |

179| [`devcontainer.json`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) | Mount dei volumi, capacità `runArgs`, estensioni VS Code e `containerEnv` |

180| [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/Dockerfile) | Immagine base, strumenti di sviluppo e l'installazione di Claude Code |

181| [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) | Blocca tutto il traffico di rete in uscita tranne i domini consentiti |

182 

183## Passaggi successivi

184 

185Una volta che Claude Code è in esecuzione nel tuo dev container, le pagine seguenti coprono il resto di un rollout organizzativo: scegliere un percorso di autenticazione, fornire politica gestita al di fuori del repository, monitorare l'utilizzo e comprendere cosa Claude Code archivia e invia.

186 

187* [Configura Claude Code per la tua organizzazione](/it/admin-setup): scegli un provider di autenticazione, decidi come la politica raggiunge i dispositivi e pianifica il rollout

188* [Impostazioni gestite dal server](/it/server-managed-settings): fornisci politica gestita dalla console admin di Claude.ai in modo che gli ingegneri non possano aggirarla modificando i file del repository

189* [Monitora l'utilizzo e l'attività di audit](/it/monitoring-usage): esporta metriche OpenTelemetry e rivedi cosa il tuo team sta eseguendo

190* [Requisiti di accesso alla rete](/it/network-config#network-access-requirements): l'elenco completo dei domini per proxy e firewall

191* [Servizi di telemetria e opt-out](/it/data-usage#telemetry-services): cosa Claude Code invia per impostazione predefinita e le variabili di ambiente che lo disabilitano

192* [Esplora la directory `.claude`](/it/claude-directory): cosa contiene il mount del volume, incluse credenziali, impostazioni e cronologia della sessione

193* [Modello di sicurezza](/it/security): come il sistema di autorizzazione di Claude Code, il sandboxing e le protezioni dall'iniezione di prompt si incastrano insieme

194* [Modalità di autorizzazione](/it/permission-modes): l'intera gamma dalla modalità piano alla modalità auto al bypass, e quando utilizzare ciascuna

discover-plugins.md +427 −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# Scopri e installa plugin precostruiti tramite marketplace

6 

7> Trova e installa plugin dai marketplace per estendere Claude Code con nuovi comandi, agenti e funzionalità.

8 

9I plugin estendono Claude Code con skills, agenti, hooks e MCP servers. I marketplace dei plugin sono cataloghi che vi aiutano a scoprire e installare queste estensioni senza doverle costruire da soli.

10 

11Cercate di creare e distribuire il vostro marketplace? Consultate [Creare e distribuire un marketplace di plugin](/it/plugin-marketplaces).

12 

13## Come funzionano i marketplace

14 

15Un marketplace è un catalogo di plugin che qualcun altro ha creato e condiviso. Utilizzare un marketplace è un processo in due fasi:

16 

17<Steps>

18 <Step title="Aggiungere il marketplace">

19 Questo registra il catalogo con Claude Code in modo che possiate sfogliare ciò che è disponibile. Nessun plugin viene installato ancora.

20 </Step>

21 

22 <Step title="Installare singoli plugin">

23 Sfogliate il catalogo e installate i plugin che desiderate.

24 </Step>

25</Steps>

26 

27Pensatelo come aggiungere un app store: aggiungere lo store vi dà accesso per sfogliare la sua collezione, ma voi scegliete comunque quali app scaricare individualmente.

28 

29## Marketplace ufficiale Anthropic

30 

31Il marketplace ufficiale Anthropic (`claude-plugins-official`) è automaticamente disponibile quando avviate Claude Code. Eseguite `/plugin` e andate alla scheda **Discover** per sfogliare ciò che è disponibile, oppure visualizzate il catalogo su [claude.com/plugins](https://claude.com/plugins).

32 

33Per installare un plugin dal marketplace ufficiale, utilizzate `/plugin install <name>@claude-plugins-official`. Ad esempio, per installare l'integrazione GitHub:

34 

35```shell theme={null}

36/plugin install github@claude-plugins-official

37```

38 

39<Note>

40 Il marketplace ufficiale è mantenuto da Anthropic. Per inviare un plugin al marketplace ufficiale, utilizzate uno dei moduli di invio in-app:

41 

42 * **Claude.ai**: [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

43 * **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

44 

45 Per distribuire plugin in modo indipendente, [create il vostro marketplace](/it/plugin-marketplaces) e condividetelo con gli utenti.

46</Note>

47 

48Il marketplace ufficiale include diverse categorie di plugin:

49 

50### Code intelligence

51 

52I plugin di code intelligence abilitano lo strumento LSP integrato di Claude Code, dando a Claude la capacità di saltare alle definizioni, trovare riferimenti e vedere errori di tipo immediatamente dopo le modifiche. Questi plugin configurano connessioni [Language Server Protocol](https://microsoft.github.io/language-server-protocol/), la stessa tecnologia che alimenta la code intelligence di VS Code.

53 

54Questi plugin richiedono che il binario del language server sia installato sul vostro sistema. Se avete già un language server installato, Claude potrebbe chiedervi di installare il plugin corrispondente quando aprite un progetto.

55 

56| Linguaggio | Plugin | Binario richiesto |

57| :--------- | :------------------ | :--------------------------- |

58| C/C++ | `clangd-lsp` | `clangd` |

59| C# | `csharp-lsp` | `csharp-ls` |

60| Go | `gopls-lsp` | `gopls` |

61| Java | `jdtls-lsp` | `jdtls` |

62| Kotlin | `kotlin-lsp` | `kotlin-language-server` |

63| Lua | `lua-lsp` | `lua-language-server` |

64| PHP | `php-lsp` | `intelephense` |

65| Python | `pyright-lsp` | `pyright-langserver` |

66| Rust | `rust-analyzer-lsp` | `rust-analyzer` |

67| Swift | `swift-lsp` | `sourcekit-lsp` |

68| TypeScript | `typescript-lsp` | `typescript-language-server` |

69 

70Potete anche [creare il vostro plugin LSP](/it/plugins-reference#lsp-servers) per altri linguaggi.

71 

72<Note>

73 Se vedete `Executable not found in $PATH` nella scheda `/plugin` Errors dopo aver installato un plugin, installate il binario richiesto dalla tabella sopra.

74</Note>

75 

76#### Cosa Claude guadagna dai plugin di code intelligence

77 

78Una volta che un plugin di code intelligence è installato e il suo binario del language server è disponibile, Claude guadagna due capacità:

79 

80* **Diagnostica automatica**: dopo ogni modifica di file che Claude fa, il language server analizza i cambiamenti e segnala errori e avvisi automaticamente. Claude vede errori di tipo, import mancanti e problemi di sintassi senza dover eseguire un compilatore o linter. Se Claude introduce un errore, lo nota e corregge il problema nello stesso turno. Questo non richiede alcuna configurazione oltre all'installazione del plugin. Potete vedere la diagnostica inline premendo **Ctrl+O** quando appare l'indicatore "diagnostics found".

81* **Navigazione del codice**: Claude può utilizzare il language server per saltare alle definizioni, trovare riferimenti, ottenere informazioni sul tipo al passaggio del mouse, elencare simboli, trovare implementazioni e tracciare gerarchie di chiamate. Queste operazioni danno a Claude una navigazione più precisa rispetto alla ricerca basata su grep, anche se la disponibilità può variare a seconda del linguaggio e dell'ambiente.

82 

83Se riscontrate problemi, consultate [Risoluzione dei problemi di code intelligence](#code-intelligence-issues).

84 

85### Integrazioni esterne

86 

87Questi plugin raggruppano [MCP servers](/it/mcp) preconfigurati in modo che possiate connettere Claude a servizi esterni senza configurazione manuale:

88 

89* **Controllo del codice sorgente**: `github`, `gitlab`

90* **Gestione dei progetti**: `atlassian` (Jira/Confluence), `asana`, `linear`, `notion`

91* **Design**: `figma`

92* **Infrastruttura**: `vercel`, `firebase`, `supabase`

93* **Comunicazione**: `slack`

94* **Monitoraggio**: `sentry`

95 

96### Flussi di lavoro di sviluppo

97 

98Plugin che aggiungono comandi e agenti per attività di sviluppo comuni:

99 

100* **commit-commands**: Flussi di lavoro di commit Git inclusi commit, push e creazione di PR

101* **pr-review-toolkit**: Agenti specializzati per la revisione delle pull request

102* **agent-sdk-dev**: Strumenti per la costruzione con Claude Agent SDK

103* **plugin-dev**: Toolkit per la creazione dei vostri plugin

104 

105### Stili di output

106 

107Personalizzate come Claude risponde:

108 

109* **explanatory-output-style**: Approfondimenti educativi sulle scelte di implementazione

110* **learning-output-style**: Modalità di apprendimento interattivo per la costruzione di competenze

111 

112## Provate: aggiungere il marketplace demo

113 

114Anthropic mantiene anche un [marketplace di plugin demo](https://github.com/anthropics/claude-code/tree/main/plugins) (`claude-code-plugins`) con plugin di esempio che mostrano cosa è possibile con il sistema di plugin. A differenza del marketplace ufficiale, dovete aggiungere questo manualmente.

115 

116<Steps>

117 <Step title="Aggiungere il marketplace">

118 Da Claude Code, eseguite il comando `plugin marketplace add` per il marketplace `anthropics/claude-code`:

119 

120 ```shell theme={null}

121 /plugin marketplace add anthropics/claude-code

122 ```

123 

124 Questo scarica il catalogo del marketplace e rende i suoi plugin disponibili per voi.

125 </Step>

126 

127 <Step title="Sfogliare i plugin disponibili">

128 Eseguite `/plugin` per aprire il gestore dei plugin. Questo apre un'interfaccia a schede con quattro schede che potete scorrere utilizzando **Tab** (o **Shift+Tab** per andare indietro):

129 

130 * **Discover**: sfogliate i plugin disponibili da tutti i vostri marketplace

131 * **Installed**: visualizzate e gestite i vostri plugin installati

132 * **Marketplaces**: aggiungete, rimuovete o aggiornate i vostri marketplace aggiunti

133 * **Errors**: visualizzate eventuali errori di caricamento dei plugin

134 

135 Andate alla scheda **Discover** per vedere i plugin dal marketplace che avete appena aggiunto.

136 </Step>

137 

138 <Step title="Installare un plugin">

139 Selezionate un plugin per visualizzare i suoi dettagli, quindi scegliete un ambito di installazione:

140 

141 * **User scope**: installate per voi stessi in tutti i progetti

142 * **Project scope**: installate per tutti i collaboratori su questo repository

143 * **Local scope**: installate per voi stessi solo in questo repository

144 

145 Ad esempio, selezionate **commit-commands** (un plugin che aggiunge comandi di flusso di lavoro git) e installatelo nel vostro ambito utente.

146 

147 Potete anche installare direttamente dalla riga di comando:

148 

149 ```shell theme={null}

150 /plugin install commit-commands@anthropics-claude-code

151 ```

152 

153 Consultate [Ambiti di configurazione](/it/settings#configuration-scopes) per saperne di più sugli ambiti.

154 </Step>

155 

156 <Step title="Utilizzare il vostro nuovo plugin">

157 Dopo l'installazione, eseguite `/reload-plugins` per attivare il plugin. I comandi dei plugin sono nello spazio dei nomi del nome del plugin, quindi **commit-commands** fornisce comandi come `/commit-commands:commit`.

158 

159 Provate eseguendo una modifica a un file e eseguendo:

160 

161 ```shell theme={null}

162 /commit-commands:commit

163 ```

164 

165 Questo mette in stage le vostre modifiche, genera un messaggio di commit e crea il commit.

166 

167 Ogni plugin funziona diversamente. Controllate la descrizione del plugin nella scheda **Discover** o la sua homepage per sapere quali comandi e funzionalità fornisce.

168 </Step>

169</Steps>

170 

171Il resto di questa guida copre tutti i modi in cui potete aggiungere marketplace, installare plugin e gestire la vostra configurazione.

172 

173## Aggiungere marketplace

174 

175Utilizzate il comando `/plugin marketplace add` per aggiungere marketplace da diverse fonti.

176 

177<Tip>

178 **Scorciatoie**: Potete utilizzare `/plugin market` invece di `/plugin marketplace` e `rm` invece di `remove`.

179</Tip>

180 

181* **Repository GitHub**: formato `owner/repo` (ad esempio, `anthropics/claude-code`)

182* **URL Git**: qualsiasi URL di repository git (GitLab, Bitbucket, self-hosted)

183* **Percorsi locali**: directory o percorsi diretti ai file `marketplace.json`

184* **URL remoti**: URL diretti ai file `marketplace.json` ospitati

185 

186### Aggiungere da GitHub

187 

188Aggiungete un repository GitHub che contiene un file `.claude-plugin/marketplace.json` utilizzando il formato `owner/repo`—dove `owner` è il nome utente GitHub o l'organizzazione e `repo` è il nome del repository.

189 

190Ad esempio, `anthropics/claude-code` si riferisce al repository `claude-code` di proprietà di `anthropics`:

191 

192```shell theme={null}

193/plugin marketplace add anthropics/claude-code

194```

195 

196### Aggiungere da altri host Git

197 

198Aggiungete qualsiasi repository git fornendo l'URL completo. Questo funziona con qualsiasi host Git, inclusi GitLab, Bitbucket e server self-hosted:

199 

200Utilizzando HTTPS:

201 

202```shell theme={null}

203/plugin marketplace add https://gitlab.com/company/plugins.git

204```

205 

206Utilizzando SSH:

207 

208```shell theme={null}

209/plugin marketplace add git@gitlab.com:company/plugins.git

210```

211 

212Per aggiungere un branch o tag specifico, aggiungete `#` seguito dal ref:

213 

214```shell theme={null}

215/plugin marketplace add https://gitlab.com/company/plugins.git#v1.0.0

216```

217 

218### Aggiungere da percorsi locali

219 

220Aggiungete una directory locale che contiene un file `.claude-plugin/marketplace.json`:

221 

222```shell theme={null}

223/plugin marketplace add ./my-marketplace

224```

225 

226Potete anche aggiungere un percorso diretto a un file `marketplace.json`:

227 

228```shell theme={null}

229/plugin marketplace add ./path/to/marketplace.json

230```

231 

232### Aggiungere da URL remoti

233 

234Aggiungete un file `marketplace.json` remoto tramite URL:

235 

236```shell theme={null}

237/plugin marketplace add https://example.com/marketplace.json

238```

239 

240<Note>

241 I marketplace basati su URL hanno alcune limitazioni rispetto ai marketplace basati su Git. Se riscontrate errori "path not found" durante l'installazione di plugin, consultate [Risoluzione dei problemi](/it/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).

242</Note>

243 

244## Installare plugin

245 

246Una volta aggiunti i marketplace, potete installare plugin direttamente (installa nell'ambito utente per impostazione predefinita):

247 

248```shell theme={null}

249/plugin install plugin-name@marketplace-name

250```

251 

252Per scegliere un [ambito di installazione](/it/settings#configuration-scopes) diverso, utilizzate l'interfaccia interattiva: eseguite `/plugin`, andate alla scheda **Discover** e premete **Enter** su un plugin. Vedrete opzioni per:

253 

254* **User scope** (predefinito): installate per voi stessi in tutti i progetti

255* **Project scope**: installate per tutti i collaboratori su questo repository (aggiunge a `.claude/settings.json`)

256* **Local scope**: installate per voi stessi solo in questo repository (non condiviso con i collaboratori)

257 

258Potete anche vedere plugin con ambito **managed**—questi sono installati dagli amministratori tramite [impostazioni gestite](/it/settings#settings-files) e non possono essere modificati.

259 

260Eseguite `/plugin` e andate alla scheda **Installed** per vedere i vostri plugin raggruppati per ambito.

261 

262<Warning>

263 Assicuratevi di fidarvi di un plugin prima di installarlo. Anthropic non controlla quali MCP server, file o altro software sono inclusi nei plugin e non può verificare che funzionino come previsto. Controllate la homepage di ogni plugin per ulteriori informazioni.

264</Warning>

265 

266## Gestire i plugin installati

267 

268Eseguite `/plugin` e andate alla scheda **Installed** per visualizzare, abilitare, disabilitare o disinstallare i vostri plugin. Digitate per filtrare l'elenco per nome o descrizione del plugin.

269 

270Potete anche gestire i plugin con comandi diretti.

271 

272Disabilitate un plugin senza disinstallarlo:

273 

274```shell theme={null}

275/plugin disable plugin-name@marketplace-name

276```

277 

278Riabilitate un plugin disabilitato:

279 

280```shell theme={null}

281/plugin enable plugin-name@marketplace-name

282```

283 

284Rimuovete completamente un plugin:

285 

286```shell theme={null}

287/plugin uninstall plugin-name@marketplace-name

288```

289 

290L'opzione `--scope` vi consente di indirizzare un ambito specifico con comandi CLI:

291 

292```shell theme={null}

293claude plugin install formatter@your-org --scope project

294claude plugin uninstall formatter@your-org --scope project

295```

296 

297### Applicare le modifiche dei plugin senza riavviare

298 

299Quando installate, abilitate o disabilitate plugin durante una sessione, eseguite `/reload-plugins` per raccogliere tutte le modifiche senza riavviare:

300 

301```shell theme={null}

302/reload-plugins

303```

304 

305Claude Code ricarica tutti i plugin attivi e mostra i conteggi per i plugin, le skills, gli agenti, gli hook, i server MCP dei plugin e i server LSP dei plugin.

306 

307## Gestire i marketplace

308 

309Potete gestire i marketplace tramite l'interfaccia interattiva `/plugin` o con comandi CLI.

310 

311### Utilizzare l'interfaccia interattiva

312 

313Eseguite `/plugin` e andate alla scheda **Marketplaces** per:

314 

315* Visualizzare tutti i vostri marketplace aggiunti con le loro fonti e stato

316* Aggiungere nuovi marketplace

317* Aggiornare gli elenchi dei marketplace per recuperare i plugin più recenti

318* Rimuovere i marketplace di cui non avete più bisogno

319 

320### Utilizzare comandi CLI

321 

322Potete anche gestire i marketplace con comandi diretti.

323 

324Elencate tutti i marketplace configurati:

325 

326```shell theme={null}

327/plugin marketplace list

328```

329 

330Aggiornate gli elenchi dei plugin da un marketplace:

331 

332```shell theme={null}

333/plugin marketplace update marketplace-name

334```

335 

336Rimuovete un marketplace:

337 

338```shell theme={null}

339/plugin marketplace remove marketplace-name

340```

341 

342<Warning>

343 La rimozione di un marketplace disinstallerà tutti i plugin che avete installato da esso.

344</Warning>

345 

346### Configurare gli aggiornamenti automatici

347 

348Claude Code può aggiornare automaticamente i marketplace e i loro plugin installati all'avvio. Quando l'aggiornamento automatico è abilitato per un marketplace, Claude Code aggiorna i dati del marketplace e aggiorna i plugin installati alle loro versioni più recenti. Se sono stati aggiornati plugin, vedrete una notifica che vi chiede di eseguire `/reload-plugins`.

349 

350Attivate/disattivate l'aggiornamento automatico per singoli marketplace tramite l'interfaccia utente:

351 

3521. Eseguite `/plugin` per aprire il gestore dei plugin

3532. Selezionate **Marketplaces**

3543. Scegliete un marketplace dall'elenco

3554. Selezionate **Enable auto-update** o **Disable auto-update**

356 

357I marketplace ufficiali Anthropic hanno l'aggiornamento automatico abilitato per impostazione predefinita. I marketplace di terze parti e di sviluppo locale hanno l'aggiornamento automatico disabilitato per impostazione predefinita.

358 

359Per disabilitare completamente tutti gli aggiornamenti automatici sia per Claude Code che per tutti i plugin, impostate la variabile di ambiente `DISABLE_AUTOUPDATER`. Consultate [Aggiornamenti automatici](/it/setup#auto-updates) per i dettagli.

360 

361Per mantenere gli aggiornamenti automatici dei plugin abilitati mentre disabilitate gli aggiornamenti di Claude Code, impostate `FORCE_AUTOUPDATE_PLUGINS=1` insieme a `DISABLE_AUTOUPDATER`:

362 

363```bash theme={null}

364export DISABLE_AUTOUPDATER=1

365export FORCE_AUTOUPDATE_PLUGINS=1

366```

367 

368Questo è utile quando volete gestire gli aggiornamenti di Claude Code manualmente ma ricevere comunque aggiornamenti automatici dei plugin.

369 

370## Configurare i marketplace del team

371 

372Gli amministratori del team possono configurare l'installazione automatica del marketplace per i progetti aggiungendo la configurazione del marketplace a `.claude/settings.json`. Quando i membri del team si fidano della cartella del repository, Claude Code li invita a installare questi marketplace e plugin.

373 

374Aggiungete `extraKnownMarketplaces` al file `.claude/settings.json` del vostro progetto:

375 

376```json theme={null}

377{

378 "extraKnownMarketplaces": {

379 "my-team-tools": {

380 "source": {

381 "source": "github",

382 "repo": "your-org/claude-plugins"

383 }

384 }

385 }

386}

387```

388 

389Per le opzioni di configurazione complete incluse `extraKnownMarketplaces` e `enabledPlugins`, consultate [Impostazioni dei plugin](/it/settings#plugin-settings).

390 

391## Sicurezza

392 

393I plugin e i marketplace sono componenti altamente affidabili che possono eseguire codice arbitrario sulla vostra macchina con i vostri privilegi utente. Installate solo plugin e aggiungete marketplace da fonti di cui vi fidate. Le organizzazioni possono limitare quali marketplace gli utenti sono autorizzati ad aggiungere utilizzando [restrizioni gestite dei marketplace](/it/plugin-marketplaces#managed-marketplace-restrictions).

394 

395## Risoluzione dei problemi

396 

397### Comando /plugin non riconosciuto

398 

399Se vedete "unknown command" o il comando `/plugin` non appare:

400 

4011. **Controllate la vostra versione**: Eseguite `claude --version` per vedere cosa è installato.

4022. **Aggiornate Claude Code**:

403 * **Homebrew**: `brew upgrade claude-code`

404 * **npm**: `npm update -g @anthropic-ai/claude-code`

405 * **Programma di installazione nativo**: Rieseguite il comando di installazione da [Setup](/it/setup)

4063. **Riavviate Claude Code**: Dopo l'aggiornamento, riavviate il vostro terminale ed eseguite `claude` di nuovo.

407 

408### Problemi comuni

409 

410* **Marketplace non caricato**: Verificate che l'URL sia accessibile e che `.claude-plugin/marketplace.json` esista nel percorso

411* **Errori di installazione dei plugin**: Controllate che gli URL di origine dei plugin siano accessibili e che i repository siano pubblici (o che abbiate accesso)

412* **File non trovati dopo l'installazione**: I plugin vengono copiati in una cache, quindi i percorsi che fanno riferimento a file al di fuori della directory del plugin non funzioneranno

413* **Le skill dei plugin non appaiono**: Cancellate la cache con `rm -rf ~/.claude/plugins/cache`, riavviate Claude Code e reinstallate il plugin.

414 

415Per la risoluzione dettagliata dei problemi con soluzioni, consultate [Risoluzione dei problemi](/it/plugin-marketplaces#troubleshooting) nella guida del marketplace. Per gli strumenti di debug, consultate [Strumenti di debug e sviluppo](/it/plugins-reference#debugging-and-development-tools).

416 

417### Problemi di code intelligence

418 

419* **Language server non avviato**: verificate che il binario sia installato e disponibile nel vostro `$PATH`. Controllate la scheda `/plugin` Errors per i dettagli.

420* **Utilizzo elevato della memoria**: i language server come `rust-analyzer` e `pyright` possono consumare memoria significativa su progetti di grandi dimensioni. Se riscontrate problemi di memoria, disabilitate il plugin con `/plugin disable <plugin-name>` e affidatevi invece agli strumenti di ricerca integrati di Claude.

421* **Diagnostica falsa positiva nei monorepo**: i language server possono segnalare errori di import non risolti per i pacchetti interni se l'area di lavoro non è configurata correttamente. Questi non influiscono sulla capacità di Claude di modificare il codice.

422 

423## Passaggi successivi

424 

425* **Costruite i vostri plugin**: Consultate [Plugin](/it/plugins) per creare skills, agenti e hook

426* **Create un marketplace**: Consultate [Creare un marketplace di plugin](/it/plugin-marketplaces) per distribuire plugin al vostro team o comunità

427* **Riferimento tecnico**: Consultate [Riferimento dei plugin](/it/plugins-reference) per le specifiche complete

env-vars.md +238 −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# Variabili d'ambiente

6 

7> Riferimento completo per le variabili d'ambiente che controllano il comportamento di Claude Code.

8 

9Claude Code supporta le seguenti variabili d'ambiente per controllare il suo comportamento. Impostale nella tua shell prima di avviare `claude`, oppure configurale in [`settings.json`](/it/settings#available-settings) sotto la chiave `env` per applicarle a ogni sessione o distribuirle nel tuo team.

10 

11| Variable | Purpose |

12| :------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

13| `ANTHROPIC_API_KEY` | Chiave API inviata come intestazione `X-Api-Key`. Quando impostata, questa chiave viene utilizzata al posto del tuo abbonamento Claude Pro, Max, Team o Enterprise anche se sei connesso. In modalità non interattiva (`-p`), la chiave viene sempre utilizzata quando presente. In modalità interattiva, ti viene chiesto di approvare la chiave una volta prima che sostituisca il tuo abbonamento. Per utilizzare il tuo abbonamento, esegui `unset ANTHROPIC_API_KEY` |

14| `ANTHROPIC_AUTH_TOKEN` | Valore personalizzato per l'intestazione `Authorization` (il valore che imposti qui sarà preceduto da `Bearer `) |

15| `ANTHROPIC_BASE_URL` | Sovrascrivi l'endpoint API per instradare le richieste attraverso un proxy o gateway. Quando impostato su un host non di prima parte, la [ricerca degli strumenti MCP](/it/mcp#scale-with-mcp-tool-search) è disabilitata per impostazione predefinita. Imposta `ENABLE_TOOL_SEARCH=true` se il tuo proxy inoltra i blocchi `tool_reference` |

16| `ANTHROPIC_BEDROCK_BASE_URL` | Sovrascrivi l'URL dell'endpoint Bedrock. Utilizza per endpoint Bedrock personalizzati o quando instrada attraverso un [gateway LLM](/it/llm-gateway). Vedi [Amazon Bedrock](/it/amazon-bedrock) |

17| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Sovrascrivi l'URL dell'endpoint Bedrock Mantle. Vedi [Endpoint Mantle](/it/amazon-bedrock#use-the-mantle-endpoint) |

18| `ANTHROPIC_BEDROCK_SERVICE_TIER` | Bedrock [service tier](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html) (`default`, `flex` o `priority`). Inviato come intestazione `X-Amzn-Bedrock-Service-Tier`. Vedi [Amazon Bedrock](/it/amazon-bedrock#service-tiers) |

19| `ANTHROPIC_BETAS` | Elenco separato da virgole di valori aggiuntivi dell'intestazione `anthropic-beta` da includere nelle richieste API. Claude Code invia già le intestazioni beta di cui ha bisogno; utilizza questo per aderire a un [beta API Anthropic](https://platform.claude.com/docs/en/api/beta-headers) prima che Claude Code aggiunga il supporto nativo. A differenza del [flag `--betas`](/it/cli-reference#cli-flags), che richiede l'autenticazione con chiave API, questa variabile funziona con tutti i metodi di autenticazione incluso l'abbonamento Claude.ai |

20| `ANTHROPIC_CUSTOM_HEADERS` | Intestazioni personalizzate da aggiungere alle richieste (formato `Name: Value`, separate da newline per più intestazioni) |

21| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID del modello da aggiungere come voce personalizzata nel selettore `/model`. Utilizza questo per rendere selezionabile un modello non standard o specifico del gateway senza sostituire gli alias integrati. Vedi [Configurazione del modello](/it/model-config#add-a-custom-model-option) |

22| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Descrizione di visualizzazione per la voce del modello personalizzato nel selettore `/model`. Per impostazione predefinita, `Custom model (<model-id>)` quando non impostato |

23| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nome di visualizzazione per la voce del modello personalizzato nel selettore `/model`. Per impostazione predefinita, l'ID del modello quando non impostato |

24| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Vedi [Configurazione del modello](/it/model-config#customize-pinned-model-display-and-capabilities) |

25| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Vedi [Configurazione del modello](/it/model-config#environment-variables) |

26| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Vedi [Configurazione del modello](/it/model-config#customize-pinned-model-display-and-capabilities) |

27| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Vedi [Configurazione del modello](/it/model-config#customize-pinned-model-display-and-capabilities) |

28| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | Vedi [Configurazione del modello](/it/model-config#customize-pinned-model-display-and-capabilities) |

29| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Vedi [Configurazione del modello](/it/model-config#environment-variables) |

30| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Vedi [Configurazione del modello](/it/model-config#customize-pinned-model-display-and-capabilities) |

31| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Vedi [Configurazione del modello](/it/model-config#customize-pinned-model-display-and-capabilities) |

32| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Vedi [Configurazione del modello](/it/model-config#customize-pinned-model-display-and-capabilities) |

33| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Vedi [Configurazione del modello](/it/model-config#environment-variables) |

34| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | Vedi [Configurazione del modello](/it/model-config#customize-pinned-model-display-and-capabilities) |

35| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | Vedi [Configurazione del modello](/it/model-config#customize-pinned-model-display-and-capabilities) |

36| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | Vedi [Configurazione del modello](/it/model-config#customize-pinned-model-display-and-capabilities) |

37| `ANTHROPIC_FOUNDRY_API_KEY` | Chiave API per l'autenticazione Microsoft Foundry (vedi [Microsoft Foundry](/it/microsoft-foundry)) |

38| `ANTHROPIC_FOUNDRY_BASE_URL` | URL base completo per la risorsa Foundry (ad esempio, `https://my-resource.services.ai.azure.com/anthropic`). Alternativa a `ANTHROPIC_FOUNDRY_RESOURCE` (vedi [Microsoft Foundry](/it/microsoft-foundry)) |

39| `ANTHROPIC_FOUNDRY_RESOURCE` | Nome della risorsa Foundry (ad esempio, `my-resource`). Obbligatorio se `ANTHROPIC_FOUNDRY_BASE_URL` non è impostato (vedi [Microsoft Foundry](/it/microsoft-foundry)) |

40| `ANTHROPIC_MODEL` | Nome dell'impostazione del modello da utilizzare (vedi [Configurazione del modello](/it/model-config#environment-variables)) |

41| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATO] Nome del [modello di classe Haiku per attività in background](/it/costs) |

42| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Sovrascrivi la regione AWS per il modello di classe Haiku quando utilizzi Bedrock o Bedrock Mantle |

43| `ANTHROPIC_VERTEX_BASE_URL` | Sovrascrivi l'URL dell'endpoint Vertex AI. Utilizza per endpoint Vertex personalizzati o quando instrada attraverso un [gateway LLM](/it/llm-gateway). Vedi [Google Vertex AI](/it/google-vertex-ai) |

44| `ANTHROPIC_VERTEX_PROJECT_ID` | ID progetto GCP per Vertex AI. Obbligatorio quando si utilizza [Google Vertex AI](/it/google-vertex-ai) |

45| `API_TIMEOUT_MS` | Timeout per le richieste API in millisecondi (predefinito: 600000, o 10 minuti; massimo: 2147483647). Aumenta questo valore quando le richieste scadono su reti lente o quando instrada attraverso un proxy. I valori superiori al massimo causano un overflow del timer sottostante e causano il fallimento immediato delle richieste |

46| `AWS_BEARER_TOKEN_BEDROCK` | Chiave API Bedrock per l'autenticazione (vedi [Chiavi API Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

47| `BASH_DEFAULT_TIMEOUT_MS` | Timeout predefinito per i comandi bash a lunga esecuzione (predefinito: 120000, o 2 minuti) |

48| `BASH_MAX_OUTPUT_LENGTH` | Numero massimo di caratteri negli output bash prima che vengano troncati al centro |

49| `BASH_MAX_TIMEOUT_MS` | Timeout massimo che il modello può impostare per i comandi bash a lunga esecuzione (predefinito: 600000, o 10 minuti) |

50| `CCR_FORCE_BUNDLE` | Imposta su `1` per forzare [`claude --remote`](/it/claude-code-on-the-web#send-local-repositories-without-github) a raggruppare e caricare il tuo repository locale anche quando l'accesso a GitHub è disponibile |

51| `CLAUDECODE` | Imposta su `1` negli ambienti shell che Claude Code genera (strumento Bash, sessioni tmux). Non impostato negli [hook](/it/hooks) o nei comandi della [linea di stato](/it/statusline). Utilizza per rilevare quando uno script è in esecuzione all'interno di una shell generata da Claude Code |

52| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Imposta su `1` per disabilitare tutti i tipi di [subagent](/it/sub-agents) integrati come Explore e Plan. Si applica solo in modalità non interattiva (il flag `-p`). Utile per gli utenti SDK che desiderano una lavagna pulita |

53| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Imposta su `1` per saltare il prefisso `mcp__<server>__` sui nomi degli strumenti dai server MCP creati da SDK. Gli strumenti utilizzano i loro nomi originali. Solo utilizzo SDK |

54| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Imposta la percentuale della capacità del contesto (1-100) a cui viene attivata la compattazione automatica. Per impostazione predefinita, la compattazione automatica si attiva a circa il 95% della capacità. Utilizza valori inferiori come `50` per compattare prima. I valori superiori alla soglia predefinita non hanno effetto. Si applica sia alle conversazioni principali che ai subagent. Questa percentuale si allinea con il campo `context_window.used_percentage` disponibile nella [linea di stato](/it/statusline) |

55| `CLAUDE_AUTO_BACKGROUND_TASKS` | Imposta su `1` per forzare l'abilitazione dello sfondo automatico delle attività di agenti a lunga esecuzione. Quando abilitato, i subagent vengono spostati in background dopo l'esecuzione per circa due minuti |

56| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Ritorna alla directory di lavoro originale dopo ogni comando Bash o PowerShell nella sessione principale |

57| `CLAUDE_CODE_ACCESSIBILITY` | Imposta su `1` per mantenere visibile il cursore del terminale nativo e disabilitare l'indicatore del cursore con testo invertito. Consente ai magnifier dello schermo come macOS Zoom di tracciare la posizione del cursore |

58| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Imposta su `1` per caricare i file di memoria dalle directory specificate con `--add-dir`. Carica `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` e `CLAUDE.local.md`. Per impostazione predefinita, le directory aggiuntive non caricano i file di memoria |

59| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Intervallo in millisecondi a cui le credenziali devono essere aggiornate (quando si utilizza [`apiKeyHelper`](/it/settings#available-settings)) |

60| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Imposta su `0` per omettere il blocco di attribuzione (versione client e impronta digitale del prompt) dall'inizio del prompt di sistema. Disabilitarlo migliora i tassi di hit della cache dei prompt quando si instrada attraverso un [gateway LLM](/it/llm-gateway). Il caching dell'API Anthropic non è interessato |

61| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Imposta la capacità del contesto in token utilizzata per i calcoli di compattazione automatica. Per impostazione predefinita, la finestra del contesto del modello: 200K per i modelli standard o 1M per i modelli con [contesto esteso](/it/model-config#extended-context). Utilizza un valore inferiore come `500000` su un modello 1M per trattare la finestra come 500K ai fini della compattazione. Il valore è limitato alla finestra del contesto effettiva del modello. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` viene applicato come percentuale di questo valore. L'impostazione di questa variabile disaccoppia la soglia di compattazione dalla `used_percentage` della linea di stato, che utilizza sempre la finestra del contesto completa del modello |

62| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Sovrascrivi la [connessione IDE](/it/vs-code) automatica. Per impostazione predefinita, Claude Code si connette automaticamente quando avviato all'interno del terminale integrato di un IDE supportato. Imposta su `false` per impedire questo. Imposta su `true` per forzare un tentativo di connessione quando l'auto-rilevamento fallisce, ad esempio quando tmux oscura il terminale padre |

63| `CLAUDE_CODE_CERT_STORE` | Elenco separato da virgole di fonti di certificati CA per le connessioni TLS. `bundled` è il set Mozilla CA fornito con Claude Code. `system` è l'archivio di fiducia del sistema operativo. Per impostazione predefinita è `bundled,system`. La distribuzione binaria nativa è richiesta per l'integrazione dell'archivio di sistema. Nel runtime Node.js, viene utilizzato solo il set raggruppato indipendentemente da questo valore |

64| `CLAUDE_CODE_CLIENT_CERT` | Percorso del file del certificato client per l'autenticazione mTLS |

65| `CLAUDE_CODE_CLIENT_KEY` | Percorso del file della chiave privata client per l'autenticazione mTLS |

66| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Passphrase per CLAUDE\_CODE\_CLIENT\_KEY crittografato (facoltativo) |

67| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Sovrascrivi il percorso del file di log di debug. Nonostante il nome, questo è un percorso di file, non una directory. Richiede che la modalità debug sia abilitata separatamente tramite `--debug` o `/debug`: l'impostazione di questa variabile da sola non abilita la registrazione. Il flag [`--debug-file`](/it/cli-reference#cli-flags) fa entrambi contemporaneamente. Per impostazione predefinita `~/.claude/debug/<session-id>.txt` |

68| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Livello di log minimo scritto nel file di log di debug. Valori: `verbose`, `debug` (predefinito), `info`, `warn`, `error`. Imposta su `verbose` per includere diagnostica ad alto volume come l'output completo del comando della linea di stato, o aumenta a `error` per ridurre il rumore |

69| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Imposta su `1` per disabilitare il supporto della [finestra del contesto 1M](/it/model-config#extended-context). Se impostato, le varianti del modello 1M non sono disponibili nel selettore di modelli. Utile per ambienti aziendali con requisiti di conformità |

70| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Imposta su `1` per disabilitare il [ragionamento adattivo](/it/model-config#adjust-effort-level) su Opus 4.6 e Sonnet 4.6 e tornare al budget di thinking fisso controllato da `MAX_THINKING_TOKENS`. {/* min-version: 2.1.111 */}Non ha effetto su Opus 4.7, che utilizza sempre il ragionamento adattivo |

71| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Imposta su `1` per disabilitare l'elaborazione degli allegati. Le menzioni di file con la sintassi `@` vengono inviate come testo semplice invece di essere espanse nel contenuto del file |

72| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Imposta su `1` per disabilitare la [memoria automatica](/it/memory#auto-memory). Imposta su `0` per forzare la memoria automatica durante il rollout graduale. Se disabilitato, Claude non crea o carica i file di memoria automatica |

73| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Imposta su `1` per disabilitare tutta la funzionalità di attività in background, incluso il parametro `run_in_background` su strumenti Bash e subagent, auto-backgrounding e la scorciatoia Ctrl+B |

74| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Imposta su `1` per impedire il caricamento di qualsiasi file di memoria CLAUDE.md nel contesto, inclusi i file di utente, progetto e memoria automatica |

75| `CLAUDE_CODE_DISABLE_CRON` | Imposta su `1` per disabilitare le [attività pianificate](/it/scheduled-tasks). La skill `/loop` e gli strumenti cron diventano non disponibili e tutte le attività già pianificate smettono di attivarsi, incluse le attività già in esecuzione a metà sessione |

76| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Imposta su `1` per rimuovere le intestazioni di richiesta `anthropic-beta` specifiche di Anthropic e i campi dello schema degli strumenti beta (come `defer_loading` e `eager_input_streaming`) dalle richieste API. Utilizza questo quando un gateway proxy rifiuta le richieste con errori come "Unexpected value(s) for the `anthropic-beta` header" o "Extra inputs are not permitted". I campi standard (`name`, `description`, `input_schema`, `cache_control`) vengono preservati. |

77| `CLAUDE_CODE_DISABLE_FAST_MODE` | Imposta su `1` per disabilitare la [modalità veloce](/it/fast-mode) |

78| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Imposta su `1` per disabilitare i sondaggi sulla qualità della sessione "Come sta andando Claude?". I sondaggi sono anche disabilitati quando `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` è impostato. Vedi [Sondaggi sulla qualità della sessione](/it/data-usage#session-quality-surveys) |

79| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Imposta su `1` per disabilitare il [checkpointing](/it/checkpointing) dei file. Il comando `/rewind` non sarà in grado di ripristinare le modifiche al codice |

80| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Imposta su `1` per rimuovere le istruzioni di workflow commit e PR integrate dal prompt di sistema di Claude. Utile quando si utilizzano le proprie skill di workflow git. Ha la precedenza sull'impostazione [`includeGitInstructions`](/it/settings#available-settings) se impostato |

81| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Imposta su `1` per impedire il remapping automatico di Opus 4.0 e 4.1 alla versione Opus corrente sull'API Anthropic. Utilizza quando desideri intenzionalmente fissare un modello più vecchio. Il remapping non viene eseguito su Bedrock, Vertex o Foundry |

82| `CLAUDE_CODE_DISABLE_MOUSE` | Imposta su `1` per disabilitare il tracciamento del mouse nel [rendering a schermo intero](/it/fullscreen). Lo scorrimento da tastiera con `PgUp` e `PgDn` funziona ancora. Utilizza questo per mantenere il comportamento nativo di copia al passaggio del mouse del tuo terminale |

83| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Equivalente all'impostazione di `DISABLE_AUTOUPDATER`, `DISABLE_FEEDBACK_COMMAND`, `DISABLE_ERROR_REPORTING` e `DISABLE_TELEMETRY` |

84| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Imposta su `1` per disabilitare il fallback non-streaming quando una richiesta di streaming fallisce a metà stream. Gli errori di streaming si propagano al livello di retry. Utile quando un proxy o gateway causa il fallback per produrre l'esecuzione duplicata dello strumento |

85| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Imposta su `1` per saltare l'aggiunta automatica del marketplace ufficiale dei plugin al primo avvio |

86| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Imposta su `1` per saltare il caricamento delle skill dalla directory delle skill gestite a livello di sistema. Utile per sessioni container o CI che non dovrebbero caricare skill fornite dall'operatore |

87| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Imposta su `1` per disabilitare gli aggiornamenti automatici del titolo del terminale in base al contesto della conversazione |

88| `CLAUDE_CODE_DISABLE_THINKING` | Imposta su `1` per disabilitare forzatamente il [thinking esteso](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) indipendentemente dal supporto del modello o da altre impostazioni. Più diretto di `MAX_THINKING_TOKENS=0` |

89| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Imposta su `1` per disabilitare lo scorrimento virtuale nel [rendering a schermo intero](/it/fullscreen) e renderizzare ogni messaggio nella trascrizione. Utilizza questo se lo scorrimento in modalità a schermo intero mostra regioni vuote dove dovrebbero apparire i messaggi |

90| `CLAUDE_CODE_EFFORT_LEVEL` | Imposta il livello di sforzo per i modelli supportati. Valori: `low`, `medium`, `high`, `xhigh`, `max` o `auto` per usare il valore predefinito del modello. I livelli disponibili dipendono dal modello. Ha la precedenza su `/effort` e sull'impostazione `effortLevel`. Vedi [Regola il livello di sforzo](/it/model-config#adjust-effort-level) |

91| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Sovrascrivi la disponibilità del [riepilogo della sessione](/it/interactive-mode#session-recap). Imposta su `0` per forzare i riepiloghi disattivati indipendentemente dall'interruttore `/config`. Imposta su `1` per forzare i riepiloghi attivati quando [`awaySummaryEnabled`](/it/settings#available-settings) è `false`. Ha la precedenza sull'impostazione e sull'interruttore `/config` |

92| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Imposta su `1` per aggiornare lo stato del plugin ai confini dei turni in [modalità non interattiva](/it/headless) dopo il completamento di un'installazione in background. Disattivato per impostazione predefinita perché l'aggiornamento cambia il prompt di sistema a metà sessione, il che invalida il [caching dei prompt](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) per quel turno |

93| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Imposta su `1` per forzare l'abilitazione dello streaming fine degli input degli strumenti. Senza questo, l'API memorizza completamente i parametri di input dello strumento prima di inviare gli eventi delta, il che può ritardare la visualizzazione su input di strumenti grandi. Solo API Anthropic: non ha effetto su Bedrock, Vertex o Foundry |

94| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Imposta su `false` per disabilitare i suggerimenti di prompt (l'interruttore "Prompt suggestions" in `/config`). Questi sono i suggerimenti predetti in grigio che appaiono nel tuo input di prompt dopo che Claude risponde. Vedi [Suggerimenti di prompt](/it/interactive-mode#prompt-suggestions) |

95| `CLAUDE_CODE_ENABLE_TASKS` | Imposta su `1` per abilitare il sistema di tracciamento delle attività in modalità non interattiva (il flag `-p`). Le attività sono abilitate per impostazione predefinita in modalità interattiva. Vedi [Elenco attività](/it/interactive-mode#task-list) |

96| `CLAUDE_CODE_ENABLE_TELEMETRY` | Imposta su `1` per abilitare la raccolta di dati OpenTelemetry per metriche e logging. Obbligatorio prima di configurare gli esportatori OTel. Vedi [Monitoraggio](/it/monitoring-usage) |

97| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tempo in millisecondi da attendere dopo che il loop di query diventa inattivo prima di uscire automaticamente. Utile per flussi di lavoro automatizzati e script che utilizzano la modalità SDK |

98| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Imposta su `1` per abilitare i [team di agenti](/it/agent-teams). I team di agenti sono sperimentali e disabilitati per impostazione predefinita |

99| `CLAUDE_CODE_EXTRA_BODY` | Oggetto JSON da unire al livello superiore di ogni corpo di richiesta API. Utile per passare parametri specifici del provider che Claude Code non espone direttamente |

100| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Sovrascrivi il limite di token predefinito per le letture di file. Utile quando è necessario leggere file più grandi per intero |

101| `CLAUDE_CODE_FORK_SUBAGENT` | Imposta su `1` per abilitare i [subagent biforcati](/it/sub-agents#fork-the-current-conversation). Un subagent biforcato eredita il contesto della conversazione completa dalla sessione principale invece di iniziare da zero. Se abilitato, `/fork` genera un subagent biforcato piuttosto che agire come alias per [`/branch`](/it/commands), e tutti gli spawn di subagent vengono eseguiti in background. Funziona in modalità interattiva e tramite SDK o `claude -p` |

102| `CLAUDE_CODE_GIT_BASH_PATH` | Solo Windows: percorso dell'eseguibile Git Bash (`bash.exe`). Utilizza quando Git Bash è installato ma non nel tuo PATH. Vedi [Configurazione di Windows](/it/setup#set-up-on-windows) |

103| `CLAUDE_CODE_GLOB_HIDDEN` | Imposta su `false` per escludere i dotfile dai risultati quando Claude richiama lo [strumento Glob](/it/tools-reference). Incluso per impostazione predefinita. Non influisce su `@` file autocomplete, `ls`, Grep o Read |

104| `CLAUDE_CODE_GLOB_NO_IGNORE` | Imposta su `false` per fare in modo che lo [strumento Glob](/it/tools-reference) rispetti i modelli `.gitignore`. Per impostazione predefinita, Glob restituisce tutti i file corrispondenti inclusi quelli gitignored. Non influisce su `@` file autocomplete, che ha la sua propria impostazione [`respectGitignore`](/it/settings#available-settings) |

105| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Timeout in secondi per la scoperta dei file dello strumento Glob. Per impostazione predefinita 20 secondi sulla maggior parte delle piattaforme e 60 secondi su WSL |

106| `CLAUDE_CODE_HIDE_CWD` | Imposta su `1` per nascondere la directory di lavoro nel logo di avvio. Utile per screenshare o registrazioni in cui il percorso espone il tuo nome utente del sistema operativo |

107| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Sovrascrivi l'indirizzo host utilizzato per connettersi all'estensione IDE. Per impostazione predefinita Claude Code rileva automaticamente l'indirizzo corretto, incluso il routing WSL-to-Windows |

108| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Salta l'installazione automatica delle estensioni IDE. Equivalente all'impostazione di [`autoInstallIdeExtension`](/it/settings#global-config-settings) su `false` |

109| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Imposta su `1` per saltare la convalida delle voci del file di blocco IDE durante la connessione. Utilizza quando l'auto-connessione non riesce a trovare il tuo IDE nonostante sia in esecuzione |

110| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Sovrascrivi la dimensione della finestra del contesto che Claude Code assume per il modello attivo. Ha effetto solo quando `DISABLE_COMPACT` è anche impostato. Utilizza questo quando instrada a un modello attraverso `ANTHROPIC_BASE_URL` la cui finestra del contesto non corrisponde alla dimensione integrata per il suo nome |

111| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Imposta il numero massimo di token di output per la maggior parte delle richieste. I valori predefiniti e massimi variano in base al modello; vedi [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). L'aumento di questo valore riduce la finestra del contesto effettiva disponibile prima che venga attivata la [compattazione automatica](/it/costs#reduce-token-usage). |

112| `CLAUDE_CODE_MAX_RETRIES` | Sovrascrivi il numero di volte per riprovare le richieste API non riuscite (predefinito: 10) |

113| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Numero massimo di strumenti di sola lettura e subagent che possono essere eseguiti in parallelo (predefinito: 10). Valori più alti aumentano il parallelismo ma consumano più risorse |

114| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Imposta su `1` per generare server MCP stdio con solo un ambiente di base sicuro più il `env` configurato del server, invece di ereditare l'ambiente della tua shell |

115| `CLAUDE_CODE_NEW_INIT` | Imposta su `1` per fare in modo che `/init` esegua un flusso di configurazione interattivo. Il flusso chiede quali file generare, inclusi CLAUDE.md, skill e hook, prima di esplorare la base di codice e scriverli. Senza questa variabile, `/init` genera un CLAUDE.md automaticamente senza chiedere. |

116| `CLAUDE_CODE_NO_FLICKER` | Imposta su `1` per abilitare il [rendering a schermo intero](/it/fullscreen), un'anteprima di ricerca che riduce lo sfarfallio e mantiene la memoria piatta nelle conversazioni lunghe. Equivalente all'impostazione [`tui`](/it/settings#available-settings); puoi anche passare con `/tui fullscreen` |

117| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Token di aggiornamento OAuth per l'autenticazione Claude.ai. Se impostato, `claude auth login` scambia questo token direttamente invece di aprire un browser. Richiede `CLAUDE_CODE_OAUTH_SCOPES`. Utile per il provisioning dell'autenticazione in ambienti automatizzati |

118| `CLAUDE_CODE_OAUTH_SCOPES` | Ambiti OAuth separati da spazi con cui è stato emesso il token di aggiornamento, come `"user:profile user:inference user:sessions:claude_code"`. Obbligatorio quando `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` è impostato |

119| `CLAUDE_CODE_OAUTH_TOKEN` | Token di accesso OAuth per l'autenticazione Claude.ai. Alternativa a `/login` per SDK e ambienti automatizzati. Ha la precedenza sulle credenziali archiviate nel portachiavi. Generane uno con [`claude setup-token`](/it/authentication#generate-a-long-lived-token) |

120| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Timeout in millisecondi per lo scaricamento dei span OpenTelemetry in sospeso (predefinito: 5000). Vedi [Monitoraggio](/it/monitoring-usage) |

121| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervallo per l'aggiornamento delle intestazioni OpenTelemetry dinamiche in millisecondi (predefinito: 1740000 / 29 minuti). Vedi [Intestazioni dinamiche](/it/monitoring-usage#dynamic-headers) |

122| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Timeout in millisecondi per l'esportatore OpenTelemetry per terminare all'arresto (predefinito: 2000). Aumenta se le metriche vengono eliminate all'uscita. Vedi [Monitoraggio](/it/monitoring-usage) |

123| `CLAUDE_CODE_PERFORCE_MODE` | Imposta su `1` per abilitare la protezione da scrittura consapevole di Perforce. Se impostato, Edit, Write e NotebookEdit falliscono con un suggerimento `p4 edit <file>` se il file di destinazione manca del bit di scrittura del proprietario, che Perforce cancella sui file sincronizzati fino a quando `p4 edit` non li apre. Questo impedisce a Claude Code di aggirare il tracciamento dei cambiamenti di Perforce |

124| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Sovrascrivi la directory radice dei plugin. Nonostante il nome, questo imposta la directory padre, non la cache stessa: i marketplace e la cache dei plugin si trovano in sottodirectory sotto questo percorso. Per impostazione predefinita `~/.claude/plugins` |

125| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout in millisecondi per le operazioni git durante l'installazione o l'aggiornamento dei plugin (predefinito: 120000). Aumenta questo valore per repository di grandi dimensioni o connessioni di rete lente. Vedi [Le operazioni Git scadono](/it/plugin-marketplaces#git-operations-time-out) |

126| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Imposta su `1` per mantenere la cache del marketplace esistente quando un `git pull` fallisce invece di cancellare e ri-clonare. Utile in ambienti offline o airgapped dove il ri-cloning fallirebbe allo stesso modo. Vedi [Gli aggiornamenti del marketplace falliscono in ambienti offline](/it/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |

127| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Percorso di una o più directory di seed plugin di sola lettura, separate da `:` su Unix o `;` su Windows. Utilizza questo per raggruppare una directory plugin pre-popolata in un'immagine container. Claude Code registra i marketplace da queste directory all'avvio e utilizza i plugin pre-memorizzati nella cache senza ri-clonare. Vedi [Pre-popola i plugin per i container](/it/plugin-marketplaces#pre-populate-plugins-for-containers) |

128| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Impostato da piattaforme host che incorporano Claude Code e gestiscono l'instradamento del provider di modelli per suo conto. Se impostato, la selezione del provider, l'endpoint e le variabili di autenticazione come `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` e `ANTHROPIC_API_KEY` nei file di impostazioni vengono ignorate in modo che le impostazioni dell'utente non possono sovrascrivere l'instradamento dell'host. Anche l'opt-out automatico della telemetria per Bedrock, Vertex e Foundry viene saltato, quindi la telemetria segue l'opt-out standard `DISABLE_TELEMETRY`. Vedi [Comportamenti predefiniti per provider API](/it/data-usage#default-behaviors-by-api-provider) |

129| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Imposta su `1` per consentire al proxy di eseguire la risoluzione DNS invece del chiamante. Opt-in per ambienti in cui il proxy deve gestire la risoluzione del nome host |

130| `CLAUDE_CODE_REMOTE` | Impostato automaticamente su `true` quando Claude Code è in esecuzione come una [sessione cloud](/it/claude-code-on-the-web). Leggi questo da un hook o script di configurazione per rilevare se sei in un ambiente cloud |

131| `CLAUDE_CODE_REMOTE_SESSION_ID` | Impostato automaticamente nelle [sessioni cloud](/it/claude-code-on-the-web) all'ID della sessione corrente. Leggi questo per costruire un collegamento alla trascrizione della sessione. Vedi [Collegare gli artefatti alla sessione](/it/claude-code-on-the-web#link-artifacts-back-to-the-session) |

132| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Imposta su `1` per riprendere automaticamente se la sessione precedente è terminata a metà turno. Utilizzato in modalità SDK in modo che il modello continui senza richiedere all'SDK di reinviare il prompt |

133| `CLAUDE_CODE_SCRIPT_CAPS` | Oggetto JSON che limita quante volte script specifici possono essere richiamati per sessione quando `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` è impostato. Le chiavi sono sottostringhe abbinate al testo del comando; i valori sono limiti di chiamate intere. Ad esempio, `{"deploy.sh": 2}` consente a `deploy.sh` di essere chiamato al massimo due volte. L'abbinamento è basato su sottostringhe quindi trucchi di espansione della shell come `./scripts/deploy.sh $(evil)` contano comunque rispetto al limite. Il fan-out di runtime tramite `xargs` o `find -exec` non viene rilevato; questo è un controllo di difesa in profondità |

134| `CLAUDE_CODE_SCROLL_SPEED` | Imposta il moltiplicatore di scorrimento della rotella del mouse nel [rendering a schermo intero](/it/fullscreen#mouse-wheel-scrolling). Accetta valori da 1 a 20. Imposta su `3` per corrispondere a `vim` se il tuo terminale invia un evento di rotella per tacca senza amplificazione |

135| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Sovrascrivi il budget di tempo in millisecondi per gli hook [SessionEnd](/it/hooks#sessionend). Si applica all'uscita della sessione, `/clear` e al cambio di sessioni tramite `/resume` interattivo. Per impostazione predefinita il budget è 1,5 secondi, aumentato automaticamente al massimo `timeout` per hook configurato nei file di impostazioni, fino a 60 secondi. I timeout sugli hook forniti dai plugin non aumentano il budget |

136| `CLAUDE_CODE_SHELL` | Sovrascrivi il rilevamento automatico della shell. Utile quando la tua shell di login differisce dalla tua shell di lavoro preferita (ad esempio, `bash` vs `zsh`) |

137| `CLAUDE_CODE_SHELL_PREFIX` | Prefisso del comando che avvolge i comandi shell che Claude Code genera: chiamate dello strumento Bash, comandi [hook](/it/hooks) e comandi di avvio del server MCP stdio. Utile per logging o auditing. Esempio: impostando `/path/to/logger.sh` esegue ogni comando come `/path/to/logger.sh <command>` |

138| `CLAUDE_CODE_SIMPLE` | Imposta su `1` per eseguire con un prompt di sistema minimo e solo gli strumenti Bash, lettura file e modifica file. Gli strumenti MCP da `--mcp-config` sono ancora disponibili. Disabilita l'auto-discovery di hook, skill, plugin, server MCP, memoria automatica e CLAUDE.md. Il flag CLI [`--bare`](/it/headless#start-faster-with-bare-mode) imposta questo |

139| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Imposta su `1` per utilizzare il prompt di sistema minimo e le descrizioni degli strumenti compresse su Opus 4.7. Non ha effetto su altri modelli. Il set di strumenti completo, hook, server MCP e scoperta CLAUDE.md rimangono abilitati |

140| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Salta l'autenticazione AWS per Bedrock (ad esempio, quando si utilizza un gateway LLM) |

141| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Salta l'autenticazione Azure per Microsoft Foundry (ad esempio, quando si utilizza un gateway LLM) |

142| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Salta l'autenticazione AWS per Bedrock Mantle (ad esempio, quando si utilizza un gateway LLM) |

143| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Imposta su `1` per saltare la scrittura della cronologia dei prompt e delle trascrizioni della sessione su disco. Le sessioni avviate con questa variabile impostata non appaiono in `--resume`, `--continue` o nella cronologia della freccia su. Utile per sessioni di script effimere |

144| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Salta l'autenticazione Google per Vertex (ad esempio, quando si utilizza un gateway LLM) |

145| `CLAUDE_CODE_SUBAGENT_MODEL` | Vedi [Configurazione del modello](/it/model-config) |

146| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Imposta su `1` per rimuovere le credenziali Anthropic e del provider cloud dagli ambienti dei sottoprocessi (strumento Bash, hook, server MCP stdio). Il processo Claude padre mantiene queste credenziali per le chiamate API, ma i processi figlio non possono leggerle, riducendo l'esposizione agli attacchi di prompt injection che tentano di esfiltare i segreti tramite l'espansione della shell. Su Linux, questo esegue anche i sottoprocessi Bash in uno spazio dei nomi PID isolato in modo che non possano leggere gli ambienti dei processi host tramite `/proc`; come effetto collaterale, `ps`, `pgrep` e `kill` non possono vedere o segnalare i processi host. `claude-code-action` imposta questo automaticamente quando `allowed_non_write_users` è configurato |

147| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Imposta su `1` in modalità non interattiva (il flag `-p`) per attendere il completamento dell'installazione del plugin prima della prima query. Senza questo, i plugin si installano in background e potrebbero non essere disponibili al primo turno. Combina con `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` per limitare l'attesa |

148| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Timeout in millisecondi per l'installazione sincrona del plugin. Se superato, Claude Code procede senza plugin e registra un errore. Nessun predefinito: senza questa variabile, l'installazione sincrona attende fino al completamento |

149| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Imposta su `false` per disabilitare l'evidenziazione della sintassi nell'output diff. Utile quando i colori interferiscono con la configurazione del tuo terminale |

150| `CLAUDE_CODE_TASK_LIST_ID` | Condividi un elenco di attività tra le sessioni. Imposta lo stesso ID in più istanze di Claude Code per coordinare un elenco di attività condiviso. Vedi [Elenco attività](/it/interactive-mode#task-list) |

151| `CLAUDE_CODE_TEAM_NAME` | Nome del team di agenti a cui appartiene questo compagno di squadra. Impostato automaticamente sui membri del [team di agenti](/it/agent-teams) |

152| `CLAUDE_CODE_TMPDIR` | Sovrascrivi la directory temporanea utilizzata per i file temporanei interni. Claude Code aggiunge `/claude-{uid}/` (Unix) o `/claude/` (Windows) a questo percorso. Predefinito: `/tmp` su macOS, `os.tmpdir()` su Linux/Windows |

153| `CLAUDE_CODE_TMUX_TRUECOLOR` | Imposta su `1` per consentire l'output truecolor a 24 bit all'interno di tmux. Per impostazione predefinita, Claude Code si limita a 256 colori quando `$TMUX` è impostato perché tmux non passa attraverso le sequenze di escape truecolor a meno che non sia configurato per farlo. Imposta questo dopo aver aggiunto `set -ga terminal-overrides ',*:Tc'` al tuo `~/.tmux.conf`. Vedi [Configurazione del terminale](/it/terminal-config) per altre impostazioni di tmux |

154| `CLAUDE_CODE_USE_BEDROCK` | Utilizza [Bedrock](/it/amazon-bedrock) |

155| `CLAUDE_CODE_USE_FOUNDRY` | Utilizza [Microsoft Foundry](/it/microsoft-foundry) |

156| `CLAUDE_CODE_USE_MANTLE` | Utilizza l'[endpoint Mantle](/it/amazon-bedrock#use-the-mantle-endpoint) di Bedrock |

157| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Imposta su `1` per scoprire comandi personalizzati, subagent e stili di output utilizzando le API di file Node.js invece di ripgrep. Imposta questo se il binario ripgrep raggruppato non è disponibile o bloccato nel tuo ambiente. Non influisce su Grep o strumenti di ricerca file |

158| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Controlla lo strumento PowerShell. Su Windows senza Git Bash, lo strumento è abilitato automaticamente; imposta su `0` per disabilitarlo. Su Windows con Git Bash installato, lo strumento è in rollout progressivo: imposta su `1` per aderire o `0` per rinunciare. Su Linux, macOS e WSL, imposta su `1` per abilitarlo, che richiede `pwsh` nel tuo `PATH`. Se abilitato su Windows, Claude può eseguire i comandi PowerShell nativamente invece di instradare attraverso Git Bash. Vedi [Strumento PowerShell](/it/tools-reference#powershell-tool) |

159| `CLAUDE_CODE_USE_VERTEX` | Utilizza [Vertex](/it/google-vertex-ai) |

160| `CLAUDE_CONFIG_DIR` | Sovrascrivi la directory di configurazione (predefinito: `~/.claude`). Tutte le impostazioni, le credenziali, la cronologia della sessione e i plugin sono archiviati sotto questo percorso. Utile per eseguire più account affiancati: ad esempio, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |

161| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Imposta su `1` per forzare l'abilitazione del watchdog di inattività a livello di byte, o imposta su `0` per forzare la disabilitazione. Se non impostato, il watchdog è abilitato per impostazione predefinita per le connessioni API Anthropic. Il byte watchdog interrompe una connessione quando nessun byte arriva sul filo per la durata impostata da `CLAUDE_STREAM_IDLE_TIMEOUT_MS`, con un minimo di 5 minuti, indipendente dal watchdog a livello di evento |

162| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Imposta su `1` per abilitare il watchdog di inattività dello streaming a livello di evento. Disattivato per impostazione predefinita. Per Bedrock, Vertex e Foundry, questo è l'unico watchdog di inattività disponibile. Configura il timeout con `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

163| `CLAUDE_ENV_FILE` | Percorso di uno script di shell i cui contenuti Claude Code esegue prima di ogni comando Bash nello stesso processo di shell, in modo che gli export nel file siano visibili al comando. Utilizza per persistere l'attivazione di virtualenv o conda tra i comandi. Anche popolato dinamicamente dagli hook [SessionStart](/it/hooks#persist-environment-variables), [Setup](/it/hooks#setup), [CwdChanged](/it/hooks#cwdchanged) e [FileChanged](/it/hooks#filechanged) |

164| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefisso per i nomi delle sessioni [Remote Control](/it/remote-control) generati automaticamente quando non viene fornito un nome esplicito. Per impostazione predefinita il nome host della tua macchina, producendo nomi come `myhost-graceful-unicorn`. Il flag CLI `--remote-control-session-name-prefix` imposta lo stesso valore per una singola invocazione |

165| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Timeout in millisecondi prima che il watchdog di inattività dello streaming chiuda una connessione bloccata. Predefinito e minimo `300000` (5 minuti) per il watchdog a livello di byte sull'API Anthropic; i valori inferiori vengono silenziosamente limitati per assorbire le pause di thinking esteso e il buffering del proxy. Per il watchdog a livello di evento: predefinito `90000` (90 secondi), nessun minimo. Per i provider di terze parti, richiede `CLAUDE_ENABLE_STREAM_WATCHDOG=1` |

166| `DISABLE_AUTOUPDATER` | Imposta su `1` per disabilitare gli aggiornamenti automatici in background. Il manuale `claude update` funziona ancora. Utilizza `DISABLE_UPDATES` per bloccare entrambi |

167| `DISABLE_AUTO_COMPACT` | Imposta su `1` per disabilitare la compattazione automatica quando ci si avvicina al limite del contesto. Il comando manuale `/compact` rimane disponibile. Utilizza quando desideri un controllo esplicito su quando si verifica la compattazione |

168| `DISABLE_COMPACT` | Imposta su `1` per disabilitare tutta la compattazione: sia la compattazione automatica che il comando manuale `/compact` |

169| `DISABLE_COST_WARNINGS` | Imposta su `1` per disabilitare i messaggi di avviso sui costi |

170| `DISABLE_DOCTOR_COMMAND` | Imposta su `1` per nascondere il comando `/doctor`. Utile per distribuzioni gestite in cui gli utenti non dovrebbero eseguire diagnostiche di installazione |

171| `DISABLE_ERROR_REPORTING` | Imposta su `1` per rinunciare alla segnalazione degli errori di Sentry |

172| `DISABLE_EXTRA_USAGE_COMMAND` | Imposta su `1` per nascondere il comando `/extra-usage` che consente agli utenti di acquistare utilizzo aggiuntivo oltre i limiti di velocità |

173| `DISABLE_FEEDBACK_COMMAND` | Imposta su `1` per disabilitare il comando `/feedback`. Il nome più vecchio `DISABLE_BUG_COMMAND` è anche accettato |

174| `DISABLE_GROWTHBOOK` | Imposta su `1` per disabilitare il recupero dei flag di funzionalità GrowthBook e utilizzare i valori predefiniti del codice per ogni flag. La registrazione degli eventi di telemetria rimane attiva a meno che `DISABLE_TELEMETRY` non sia anche impostato |

175| `DISABLE_INSTALLATION_CHECKS` | Imposta su `1` per disabilitare gli avvisi di installazione. Utilizza solo quando gestisci manualmente la posizione di installazione, poiché questo può mascherare i problemi con le installazioni standard |

176| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Imposta su `1` per nascondere il comando `/install-github-app`. Già nascosto quando si utilizzano provider di terze parti (Bedrock, Vertex o Foundry) |

177| `DISABLE_INTERLEAVED_THINKING` | Imposta su `1` per impedire l'invio dell'intestazione beta interleaved-thinking. Utile quando il tuo gateway LLM o provider non supporta il [thinking interleaved](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |

178| `DISABLE_LOGIN_COMMAND` | Imposta su `1` per nascondere il comando `/login`. Utile quando l'autenticazione è gestita esternamente tramite chiavi API o `apiKeyHelper` |

179| `DISABLE_LOGOUT_COMMAND` | Imposta su `1` per nascondere il comando `/logout` |

180| `DISABLE_PROMPT_CACHING` | Imposta su `1` per disabilitare il caching dei prompt per tutti i modelli (ha la precedenza sulle impostazioni per singolo modello) |

181| `DISABLE_PROMPT_CACHING_HAIKU` | Imposta su `1` per disabilitare il caching dei prompt per i modelli Haiku |

182| `DISABLE_PROMPT_CACHING_OPUS` | Imposta su `1` per disabilitare il caching dei prompt per i modelli Opus |

183| `DISABLE_PROMPT_CACHING_SONNET` | Imposta su `1` per disabilitare il caching dei prompt per i modelli Sonnet |

184| `DISABLE_TELEMETRY` | Imposta su `1` per rinunciare alla telemetria Statsig (nota che gli eventi Statsig non includono dati utente come codice, percorsi di file o comandi bash) |

185| `DISABLE_UPDATES` | Imposta su `1` per bloccare tutti gli aggiornamenti incluso il manuale `claude update` e `claude install`. Più rigoroso di `DISABLE_AUTOUPDATER`. Utilizza quando distribuisci Claude Code attraverso i tuoi canali e gli utenti non dovrebbero auto-aggiornarsi |

186| `DISABLE_UPGRADE_COMMAND` | Imposta su `1` per nascondere il comando `/upgrade` |

187| `ENABLE_CLAUDEAI_MCP_SERVERS` | Imposta su `false` per disabilitare i [server MCP claude.ai](/it/mcp#use-mcp-servers-from-claude-ai) in Claude Code. Abilitato per impostazione predefinita per gli utenti connessi |

188| `ENABLE_PROMPT_CACHING_1H` | Imposta su `1` per richiedere un TTL della cache dei prompt di 1 ora invece dei 5 minuti predefiniti. Destinato agli utenti di chiave API, [Bedrock](/it/amazon-bedrock), [Vertex](/it/google-vertex-ai) e [Foundry](/it/microsoft-foundry). Gli utenti di abbonamento ricevono automaticamente il TTL di 1 ora. Le scritture della cache di 1 ora vengono fatturate a una tariffa più elevata |

189| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecato. Utilizza `ENABLE_PROMPT_CACHING_1H` invece |

190| `ENABLE_TOOL_SEARCH` | Controlla la [ricerca degli strumenti MCP](/it/mcp#scale-with-mcp-tool-search). Non impostato: tutti gli strumenti MCP differiti per impostazione predefinita, ma caricati in primo piano su Vertex AI o quando `ANTHROPIC_BASE_URL` punta a un host non di prima parte. Valori: `true` (sempre differire inclusi i proxy e Vertex AI), `auto` (modalità soglia: carica in primo piano se gli strumenti si adattano entro il 10% del contesto), `auto:N` (soglia personalizzata, ad es. `auto:5` per il 5%), `false` (carica tutto in primo piano) |

191| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Imposta su qualsiasi valore non vuoto per attivare il fallback a [`--fallback-model`](/it/cli-reference#cli-flags) dopo errori di sovraccarico ripetuti su qualsiasi modello primario. Per impostazione predefinita, solo i modelli Opus attivano il fallback |

192| `FORCE_AUTOUPDATE_PLUGINS` | Imposta su `1` per forzare gli aggiornamenti automatici dei plugin anche quando l'auto-updater principale è disabilitato tramite `DISABLE_AUTOUPDATER` |

193| `FORCE_PROMPT_CACHING_5M` | Imposta su `1` per forzare il TTL della cache dei prompt di 5 minuti anche quando il TTL di 1 ora si applicherebbe altrimenti. Sostituisce `ENABLE_PROMPT_CACHING_1H` |

194| `HTTP_PROXY` | Specifica il server proxy HTTP per le connessioni di rete |

195| `HTTPS_PROXY` | Specifica il server proxy HTTPS per le connessioni di rete |

196| `IS_DEMO` | Imposta su `1` per abilitare la modalità demo: nasconde la tua email e il nome dell'organizzazione dall'intestazione e dall'output `/status`, e salta l'onboarding. Utile quando si trasmette in streaming o si registra una sessione |

197| `MAX_MCP_OUTPUT_TOKENS` | Numero massimo di token consentiti nelle risposte degli strumenti MCP. Claude Code visualizza un avviso quando l'output supera 10.000 token. Gli strumenti che dichiarano [`anthropic/maxResultSizeChars`](/it/mcp#raise-the-limit-for-a-specific-tool) utilizzano quel limite di caratteri per il contenuto di testo, ma il contenuto dell'immagine da questi strumenti è ancora soggetto a questa variabile (predefinito: 25000) |

198| `MAX_STRUCTURED_OUTPUT_RETRIES` | Numero di volte per riprovare quando la risposta del modello non supera la convalida rispetto a [`--json-schema`](/it/cli-reference#cli-flags) in modalità non interattiva (il flag `-p`). Per impostazione predefinita 5 |

199| `MAX_THINKING_TOKENS` | Sovrascrivi il budget del token di [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Il massimale è il [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) del modello meno uno. Imposta su `0` per disabilitare completamente il thinking. Sui modelli con [ragionamento adattivo](/it/model-config#adjust-effort-level), il budget viene ignorato a meno che il ragionamento adattivo non sia disabilitato tramite `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` |

200| `MCP_CLIENT_SECRET` | Segreto client OAuth per i server MCP che richiedono [credenziali preconfigurate](/it/mcp#use-pre-configured-oauth-credentials). Evita il prompt interattivo quando si aggiunge un server con `--client-secret` |

201| `MCP_CONNECTION_NONBLOCKING` | Imposta su `true` in modalità non interattiva (`-p`) per saltare completamente l'attesa della connessione MCP. Utile per pipeline con script in cui gli strumenti MCP non sono necessari. Senza questa variabile, la prima query attende fino a 5 secondi per le connessioni del server `--mcp-config` |

202| `MCP_OAUTH_CALLBACK_PORT` | Porta fissa per il callback di reindirizzamento OAuth, come alternativa a `--callback-port` quando si aggiunge un server MCP con [credenziali preconfigurate](/it/mcp#use-pre-configured-oauth-credentials) |

203| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Numero massimo di server MCP remoti (HTTP/SSE) da connettere in parallelo durante l'avvio (predefinito: 20) |

204| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Numero massimo di server MCP locali (stdio) da connettere in parallelo durante l'avvio (predefinito: 3) |

205| `MCP_TIMEOUT` | Timeout in millisecondi per l'avvio del server MCP (predefinito: 30000, o 30 secondi) |

206| `MCP_TOOL_TIMEOUT` | Timeout in millisecondi per l'esecuzione dello strumento MCP (predefinito: 100000000, circa 28 ore) |

207| `NO_PROXY` | Elenco di domini e IP a cui le richieste verranno emesse direttamente, bypassando il proxy |

208| `OTEL_LOG_RAW_API_BODIES` | Emetti il JSON della richiesta e della risposta dell'API Anthropic Messages come eventi di log `api_request_body` / `api_response_body`. Imposta su `1` per i corpi inline troncati a 60 KB, o `file:<dir>` per scrivere i corpi non troncati su disco ed emettere un percorso `body_ref` invece. Disabilitato per impostazione predefinita; i corpi includono l'intera cronologia della conversazione. Vedi [Monitoraggio](/it/monitoring-usage#api-request-body-event) |

209| `OTEL_LOG_TOOL_CONTENT` | Imposta su `1` per includere il contenuto di input e output dello strumento negli eventi span OpenTelemetry. Disabilitato per impostazione predefinita per proteggere i dati sensibili. Vedi [Monitoraggio](/it/monitoring-usage) |

210| `OTEL_LOG_TOOL_DETAILS` | Imposta su `1` per includere gli argomenti di input dello strumento, i nomi dei server MCP, le stringhe di errore non elaborate sui fallimenti degli strumenti e altri dettagli degli strumenti nelle tracce e nei log OpenTelemetry. Disabilitato per impostazione predefinita per proteggere le informazioni personali. Vedi [Monitoraggio](/it/monitoring-usage) |

211| `OTEL_LOG_USER_PROMPTS` | Imposta su `1` per includere il testo del prompt dell'utente nelle tracce e nei log OpenTelemetry. Disabilitato per impostazione predefinita (i prompt vengono redatti). Vedi [Monitoraggio](/it/monitoring-usage) |

212| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Imposta su `false` per escludere l'UUID dell'account dagli attributi delle metriche (predefinito: incluso). Vedi [Monitoraggio](/it/monitoring-usage) |

213| `OTEL_METRICS_INCLUDE_SESSION_ID` | Imposta su `false` per escludere l'ID della sessione dagli attributi delle metriche (predefinito: incluso). Vedi [Monitoraggio](/it/monitoring-usage) |

214| `OTEL_METRICS_INCLUDE_VERSION` | Imposta su `true` per includere la versione di Claude Code negli attributi delle metriche (predefinito: escluso). Vedi [Monitoraggio](/it/monitoring-usage) |

215| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Sovrascrivi il budget dei caratteri per i metadati della skill mostrati allo [strumento Skill](/it/skills#control-who-invokes-a-skill). Il budget si ridimensiona dinamicamente all'1% della finestra del contesto, con un fallback di 8.000 caratteri. Nome legacy mantenuto per la compatibilità all'indietro |

216| `TASK_MAX_OUTPUT_LENGTH` | Numero massimo di caratteri nell'output del [subagent](/it/sub-agents) prima del troncamento (predefinito: 32000, massimo: 160000). Se troncato, l'output completo viene salvato su disco e il percorso è incluso nella risposta troncata |

217| `USE_BUILTIN_RIPGREP` | Imposta su `0` per utilizzare il `rg` installato dal sistema invece del `rg` incluso con Claude Code |

218| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Sovrascrivi la regione per Claude 3.5 Haiku quando si utilizza Vertex AI |

219| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Sovrascrivi la regione per Claude 3.5 Sonnet quando si utilizza Vertex AI |

220| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Sovrascrivi la regione per Claude 3.7 Sonnet quando si utilizza Vertex AI |

221| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Sovrascrivi la regione per Claude 4.0 Opus quando si utilizza Vertex AI |

222| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Sovrascrivi la regione per Claude 4.0 Sonnet quando si utilizza Vertex AI |

223| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Sovrascrivi la regione per Claude 4.1 Opus quando si utilizza Vertex AI |

224| `VERTEX_REGION_CLAUDE_4_5_OPUS` | Sovrascrivi la regione per Claude Opus 4.5 quando si utilizza Vertex AI |

225| `VERTEX_REGION_CLAUDE_4_5_SONNET` | Sovrascrivi la regione per Claude Sonnet 4.5 quando si utilizza Vertex AI |

226| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Sovrascrivi la regione per Claude Opus 4.6 quando si utilizza Vertex AI |

227| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Sovrascrivi la regione per Claude Sonnet 4.6 quando si utilizza Vertex AI |

228| `VERTEX_REGION_CLAUDE_4_7_OPUS` | {/* min-version: 2.1.111 */}Sovrascrivi la regione per Claude Opus 4.7 quando si utilizza Vertex AI |

229| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Sovrascrivi la regione per Claude Haiku 4.5 quando si utilizza Vertex AI |

230 

231Sono supportate anche le variabili standard dell'esportatore OpenTelemetry (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES` e varianti specifiche del segnale). Vedi [Monitoraggio](/it/monitoring-usage) per i dettagli di configurazione.

232 

233## Vedi anche

234 

235* [Impostazioni](/it/settings): configura le variabili d'ambiente in `settings.json` in modo che si applichino a ogni sessione

236* [Riferimento CLI](/it/cli-reference): flag di avvio

237* [Configurazione di rete](/it/network-config): configurazione proxy e TLS

238* [Monitoraggio](/it/monitoring-usage): configurazione OpenTelemetry

errors.md +536 −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# Riferimento degli errori

6 

7> Consulta i messaggi di errore di runtime di Claude Code con il significato di ciascuno e come risolverli.

8 

9Questa pagina elenca gli errori di runtime che Claude Code visualizza e come recuperare da ciascuno, oltre a cosa controllare quando le risposte sembrano non corrette senza un errore. Per gli errori di installazione come `command not found` o errori TLS durante la configurazione, vedi [Troubleshooting installation and login](/it/troubleshoot-install).

10 

11Questi errori e i comandi di recupero si applicano su CLI, l'[app Desktop](/it/desktop) e [Claude Code sul web](/it/claude-code-on-the-web), poiché tutti e tre avvolgono lo stesso Claude Code CLI. Per problemi specifici della superficie, vedi la sezione troubleshooting nella pagina di quella superficie.

12 

13<Note>

14 Claude Code chiama l'API Claude per le risposte del modello, quindi la maggior parte degli errori di runtime si mappano a un codice di errore API sottostante. Questa pagina copre cosa significa ogni errore all'interno di Claude Code e come recuperare. Per le definizioni del codice di stato HTTP grezzo, vedi il [riferimento degli errori della piattaforma Claude](https://platform.claude.com/docs/en/api/errors).

15</Note>

16 

17## Trova il tuo errore

18 

19Abbina il messaggio che vedi nel tuo terminale a una sezione sottostante.

20 

21| Messaggio | Sezione |

22| :----------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------- |

23| `API Error: 500 ... Internal server error` | [Errori del server](#api-error-500-internal-server-error) |

24| `API Error: Repeated 529 Overloaded errors` | [Errori del server](#api-error-repeated-529-overloaded-errors) |

25| `Request timed out` | [Errori del server](#request-timed-out), o [Rete](#unable-to-connect-to-api) se il messaggio menziona la tua connessione internet |

26| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Errori del server](#auto-mode-cannot-determine-the-safety-of-an-action) |

27| `You've hit your session limit` / `You've hit your weekly limit` | [Limiti di utilizzo](#youve-hit-your-session-limit) |

28| `Server is temporarily limiting requests` | [Limiti di utilizzo](#server-is-temporarily-limiting-requests) |

29| `Request rejected (429)` | [Limiti di utilizzo](#request-rejected-429) |

30| `Credit balance is too low` | [Limiti di utilizzo](#credit-balance-is-too-low) |

31| `Not logged in · Please run /login` | [Autenticazione](#not-logged-in) |

32| `Invalid API key` | [Autenticazione](#invalid-api-key) |

33| `This organization has been disabled` | [Autenticazione](#this-organization-has-been-disabled) |

34| `OAuth token revoked` / `OAuth token has expired` | [Autenticazione](#oauth-token-revoked-or-expired) |

35| `does not meet scope requirement user:profile` | [Autenticazione](#oauth-scope-requirement) |

36| `Unable to connect to API` | [Rete](#unable-to-connect-to-api) |

37| `SSL certificate verification failed` | [Rete](#ssl-certificate-errors) |

38| `Prompt is too long` | [Errori di richiesta](#prompt-is-too-long) |

39| `Error during compaction: Conversation too long` | [Errori di richiesta](#error-during-compaction-conversation-too-long) |

40| `Request too large` | [Errori di richiesta](#request-too-large) |

41| `Image was too large` | [Errori di richiesta](#image-was-too-large) |

42| `PDF too large` / `PDF is password protected` | [Errori di richiesta](#pdf-errors) |

43| `Extra inputs are not permitted` | [Errori di richiesta](#extra-inputs-are-not-permitted) |

44| `There's an issue with the selected model` | [Errori di richiesta](#theres-an-issue-with-the-selected-model) |

45| `Claude Opus is not available with the Claude Pro plan` | [Errori di richiesta](#claude-opus-is-not-available-with-the-claude-pro-plan) |

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

47| `max_tokens must be greater than thinking.budget_tokens` | [Errori di richiesta](#thinking-budget-exceeds-output-limit) |

48| `API Error: 400 due to tool use concurrency issues` | [Errori di richiesta](#tool-use-or-thinking-block-mismatch) |

49| Le risposte sembrano di qualità inferiore al solito | [Qualità della risposta](#responses-seem-lower-quality-than-usual) |

50 

51## Tentativi automatici

52 

53Claude Code ritenta i guasti transitori prima di mostrarti un errore. Gli errori del server, le risposte sovraccariche, i timeout delle richieste, i throttle 429 temporanei e le connessioni interrotte vengono tutti ritentati fino a 10 volte con backoff esponenziale. Durante il tentativo, lo spinner mostra un countdown `Retrying in Ns · attempt x/y`.

54 

55Quando vedi uno degli errori in questa pagina, quei tentativi sono già stati esauriti. Puoi regolare il comportamento con due variabili di ambiente:

56 

57| Variabile | Predefinito | Effetto |

58| :---------------------------------------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- |

59| [`CLAUDE_CODE_MAX_RETRIES`](/it/env-vars) | 10 | Numero di tentativi di ripetizione. Abbassalo per far emergere i guasti più velocemente negli script; aumentalo per attendere attraverso incidenti più lunghi. |

60| [`API_TIMEOUT_MS`](/it/env-vars) | 600000 | Timeout per richiesta in millisecondi. Aumentalo per reti lente o proxy. |

61 

62## Errori del server

63 

64Questi errori provengono dall'infrastruttura Anthropic piuttosto che dal tuo account o dalla tua richiesta.

65 

66### API Error: 500 Internal server error

67 

68Claude Code mostra il corpo della risposta API grezzo per qualsiasi stato 5xx. L'esempio sottostante mostra una risposta 500:

69 

70```text theme={null}

71API Error: 500 {"type":"error","error":{"type":"api_error","message":"Internal server error"}} · check status.claude.com

72```

73 

74Questo indica un guasto inaspettato all'interno dell'API. Non è causato dal tuo prompt, dalle impostazioni o dal tuo account.

75 

76**Cosa fare:**

77 

78* Controlla [status.claude.com](https://status.claude.com) per gli incidenti attivi

79* Attendi un minuto, quindi invia di nuovo il tuo messaggio. Il tuo messaggio originale è ancora nella conversazione, quindi per un prompt lungo puoi digitare `try again` invece di incollare l'intera cosa.

80* Se l'errore persiste senza un incidente pubblicato, esegui `/feedback` in modo che Anthropic possa indagare con i dettagli della tua richiesta. Vedi [Segnala un errore](#report-an-error) se `/feedback` non è disponibile sul tuo provider.

81 

82### API Error: Repeated 529 Overloaded errors

83 

84L'API è temporaneamente a capacità su tutti gli utenti. Claude Code ha già ritentato più volte prima di mostrare questo messaggio:

85 

86```text theme={null}

87API Error: Repeated 529 Overloaded errors · check status.claude.com

88```

89 

90Un 529 non è il tuo limite di utilizzo e non conta rispetto alla tua quota.

91 

92**Cosa fare:**

93 

94* Controlla [status.claude.com](https://status.claude.com) per gli avvisi di capacità

95* Riprova tra pochi minuti

96* Esegui `/model` e passa a un modello diverso per continuare a lavorare, poiché la capacità è tracciata per modello. Claude Code ti chiede di farlo quando un modello è sotto un carico particolarmente elevato, ad esempio `Opus is experiencing high load, please use /model to switch to Sonnet`.

97 

98### Request timed out

99 

100L'API non ha risposto prima della scadenza della connessione.

101 

102```text theme={null}

103Request timed out

104```

105 

106Questo può accadere durante periodi di carico elevato o quando viene generata una risposta molto grande. Il timeout della richiesta predefinito è di 10 minuti.

107 

108**Cosa fare:**

109 

110* Ritenta la richiesta

111* Per attività di lunga durata, suddividi il lavoro in prompt più piccoli

112* Se una rete lenta o un proxy è la causa, aumenta `API_TIMEOUT_MS` come descritto in [Tentativi automatici](#automatic-retries)

113* Se i timeout sono frequenti e la tua rete è altrimenti sana, vedi [Errori di rete e connessione](#network-and-connection-errors) sottostante

114 

115### Auto mode cannot determine the safety of an action

116 

117Il modello che [auto mode](/it/permission-modes#eliminate-prompts-with-auto-mode) utilizza per classificare le azioni è sovraccarico, quindi auto mode ha bloccato l'azione invece di approvarla senza controllo.

118 

119```text theme={null}

120<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait briefly and then try this action again.

121```

122 

123Le letture, le ricerche e le modifiche all'interno della tua directory di lavoro saltano il classificatore, quindi continuano a funzionare durante l'interruzione.

124 

125**Cosa fare:**

126 

127* Ritenta dopo pochi secondi; Claude vede lo stesso messaggio e di solito ritenta da solo

128* Se i tentativi continuano a fallire, continua con attività di sola lettura e torna all'azione bloccata in seguito

129* Questo è transitorio e non correlato all'[idoneità della modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode); non è necessario modificare le impostazioni

130 

131## Limiti di utilizzo

132 

133Questi errori significano che una quota legata al tuo account o al tuo piano è stata raggiunta. Sono distinti dagli [errori del server](#server-errors), che interessano tutti.

134 

135### You've hit your session limit

136 

137I piani di abbonamento includono un'indennità di utilizzo mobile. Quando si esaurisce vedi uno di questi messaggi:

138 

139```text theme={null}

140You've hit your session limit · resets 3:45pm

141You've hit your weekly limit · resets Mon 12:00am

142You've hit your Opus limit · resets 3:45pm

143```

144 

145Claude Code blocca ulteriori richieste fino all'ora di ripristino mostrata nel messaggio.

146 

147**Cosa fare:**

148 

149* Attendi l'ora di ripristino mostrata nell'errore

150* Esegui `/usage` per vedere i limiti del tuo piano e quando si ripristinano

151* Esegui `/extra-usage` per acquistare utilizzo aggiuntivo su Pro e Max, o per richiederlo al tuo amministratore su Team ed Enterprise. Vedi [Extra usage for paid plans](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) per come viene fatturato.

152* Per aggiornare il tuo piano per limiti di base più elevati, vedi [claude.com/pricing](https://claude.com/pricing)

153 

154Per controllare la tua indennità rimanente prima di raggiungere il limite, aggiungi i campi `rate_limits` a una [linea di stato personalizzata](/it/statusline#rate-limit-usage), o nell'app Desktop fai clic sull'[anello di utilizzo](/it/desktop#check-usage) accanto al selettore di modello.

155 

156### Server is temporarily limiting requests

157 

158L'API ha applicato un throttle di breve durata non correlato alla tua quota del piano.

159 

160```text theme={null}

161API Error: Server is temporarily limiting requests (not your usage limit)

162```

163 

164Questo viene [ritentato automaticamente](#automatic-retries) prima di essere mostrato.

165 

166**Cosa fare:**

167 

168* Attendi brevemente e riprova

169* Controlla [status.claude.com](https://status.claude.com) se persiste

170 

171### Request rejected (429)

172 

173Hai raggiunto il limite di velocità configurato per la tua chiave API, il progetto Amazon Bedrock o il progetto Google Vertex AI.

174 

175```text theme={null}

176API Error: Request rejected (429) · this may be a temporary capacity issue

177```

178 

179**Cosa fare:**

180 

181* Esegui `/status` e conferma che la credenziale attiva è quella che ti aspetti. Un `ANTHROPIC_API_KEY` casuale nel tuo ambiente può instradare le richieste attraverso una chiave di livello inferiore invece del tuo abbonamento.

182* Controlla la console del tuo provider per i limiti attivi e richiedi un livello più elevato se necessario

183* Per le chiavi API Anthropic, vedi il [riferimento dei limiti di velocità](https://platform.claude.com/docs/en/api/rate-limits) per come funzionano i livelli e come impostare i limiti per workspace

184* Riduci la concorrenza: abbassa [`CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`](/it/env-vars), evita di eseguire molti subagent paralleli, o passa a un modello più piccolo con `/model` per esecuzioni di script ad alto volume

185 

186### Credit balance is too low

187 

188La tua organizzazione Console ha esaurito i crediti prepagati.

189 

190```text theme={null}

191Credit balance is too low

192```

193 

194**Cosa fare:**

195 

196* Aggiungi crediti su [platform.claude.com/settings/billing](https://platform.claude.com/settings/billing), e considera di abilitare l'auto-reload lì in modo che il saldo si ricarichi prima di raggiungere lo zero

197* Passa all'autenticazione tramite abbonamento con `/login` se hai un piano Pro, Max, Team o Enterprise

198* Imposta i limiti di spesa per workspace nella Console per evitare che un singolo progetto dreni il saldo dell'organizzazione. Vedi [Manage costs effectively](/it/costs).

199 

200## Errori di autenticazione

201 

202Questi errori significano che Claude Code non può provare chi sei all'API. Esegui `/status` in qualsiasi momento per vedere quale credenziale è attualmente attiva.

203 

204### Not logged in

205 

206Nessuna credenziale valida è disponibile per questa sessione.

207 

208```text theme={null}

209Not logged in · Please run /login

210```

211 

212**Cosa fare:**

213 

214* Esegui `/login` per autenticarti con il tuo abbonamento Claude o account Console

215* Se ti aspettavi che una variabile di ambiente ti autenticasse, conferma che `ANTHROPIC_API_KEY` è impostato ed esportato nella shell in cui hai lanciato `claude`

216* Per CI o automazione in cui l'accesso interattivo non è possibile, configura uno script [`apiKeyHelper`](/it/settings#available-settings) che recupera una chiave all'avvio

217* Vedi [Authentication precedence](/it/authentication#authentication-precedence) per capire quale credenziale vince quando sono presenti più credenziali

218 

219Se ti viene chiesto di accedere ripetutamente, vedi [Not logged in or token expired](/it/troubleshoot-install#not-logged-in-or-token-expired) per le correzioni dell'orologio di sistema e del Keychain di macOS.

220 

221### Invalid API key

222 

223La variabile di ambiente `ANTHROPIC_API_KEY` o lo script `apiKeyHelper` ha restituito una chiave che l'API ha rifiutato.

224 

225```text theme={null}

226Invalid API key · Fix external API key

227```

228 

229**Cosa fare:**

230 

231* Controlla gli errori di battitura e conferma che la chiave non sia stata revocata nella [Console](https://platform.claude.com/settings/keys)

232* Esegui `env | grep ANTHROPIC` nella stessa shell. Strumenti come direnv, plugin shell dotenv e terminali IDE possono caricare una chiave obsoleta da un file `.env` nel tuo progetto senza che tu la imposti esplicitamente.

233* Annulla l'impostazione di `ANTHROPIC_API_KEY` ed esegui `/login` per utilizzare l'autenticazione tramite abbonamento

234* Se la chiave proviene da uno script [`apiKeyHelper`](/it/settings#available-settings), esegui lo script direttamente per confermare che stampa una chiave valida su stdout

235* Esegui `/status` per confermare quale fonte di credenziale Claude Code sta effettivamente utilizzando

236 

237### This organization has been disabled

238 

239Una `ANTHROPIC_API_KEY` obsoleta da un'organizzazione Console disabilitata sta sovrascrivendo il tuo accesso tramite abbonamento.

240 

241```text theme={null}

242Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your other credentials

243API Error: 400 ... This organization has been disabled.

244```

245 

246Le variabili di ambiente hanno la precedenza su `/login`, quindi una chiave esportata nel tuo profilo shell o caricata da un file `.env` viene utilizzata anche quando hai un abbonamento Pro o Max funzionante. In modalità non interattiva (`-p`), la chiave viene sempre utilizzata quando presente.

247 

248**Cosa fare:**

249 

250* Annulla l'impostazione di `ANTHROPIC_API_KEY` nella shell corrente e rimuovilo dal tuo profilo shell, quindi riavvia `claude`

251* Esegui `/status` in seguito per confermare che la credenziale attiva è il tuo abbonamento

252* Se nessuna variabile di ambiente è impostata e l'errore persiste, l'organizzazione disabilitata è quella legata al tuo `/login`. Contatta il supporto o accedi con un account diverso.

253 

254### OAuth token revoked or expired

255 

256Il tuo accesso salvato non è più valido. Un token revocato significa che hai effettuato il logout ovunque o un amministratore ha rimosso l'accesso; un token scaduto significa che l'aggiornamento automatico non è riuscito a metà sessione.

257 

258```text theme={null}

259OAuth token revoked · Please run /login

260OAuth token has expired · Please run /login

261API Error: 401 ... authentication_error

262```

263 

264**Cosa fare:**

265 

266* Esegui `/login` per accedere di nuovo

267* Se l'errore ritorna nella stessa sessione dopo la ri-autenticazione, esegui prima `/logout` per cancellare completamente il token memorizzato, quindi `/login`

268* Per prompt ripetuti di accesso tra i lanci, vedi i controlli dell'orologio di sistema e del Keychain di macOS in [Troubleshooting](/it/troubleshoot-install#not-logged-in-or-token-expired)

269* Per altri guasti inclusi `403 Forbidden` e problemi del browser OAuth, vedi [Login and authentication](/it/troubleshoot-install#login-and-authentication)

270 

271### OAuth scope requirement

272 

273Il token memorizzato precede un ambito di autorizzazione che una funzione più recente necessita. Lo vedi più spesso da `/usage` e dall'indicatore di utilizzo della linea di stato:

274 

275```text theme={null}

276OAuth token does not meet scope requirement: user:profile

277```

278 

279**Cosa fare:**

280 

281* Esegui `/login` per creare un nuovo token con gli ambiti attuali. Non è necessario effettuare il logout prima.

282 

283## Errori di rete e connessione

284 

285Questi errori significano che Claude Code non poteva raggiungere l'API affatto. Provengono quasi sempre dalla tua rete locale, proxy o firewall piuttosto che dall'infrastruttura Anthropic.

286 

287### Unable to connect to API

288 

289La connessione TCP all'API non è riuscita o non si è mai completata.

290 

291```text theme={null}

292Unable to connect to API. Check your internet connection

293Unable to connect to API (ECONNREFUSED)

294Unable to connect to API (ECONNRESET)

295Unable to connect to API (ETIMEDOUT)

296fetch failed

297Request timed out. Check your internet connection and proxy settings

298```

299 

300Le cause comuni includono nessun accesso a Internet, una VPN che blocca `api.anthropic.com`, o un proxy aziendale richiesto che non è configurato.

301 

302**Cosa fare:**

303 

304* Conferma di poter raggiungere l'host API dalla stessa shell eseguendo `curl -I https://api.anthropic.com`. Su Windows PowerShell usa `curl.exe -I https://api.anthropic.com` in modo che l'alias `Invoke-WebRequest` integrato non venga utilizzato.

305* Se sei dietro un proxy aziendale, imposta `HTTPS_PROXY` prima di lanciare Claude Code e vedi [Network configuration](/it/network-config)

306* Se instrada attraverso un gateway LLM o relay, imposta [`ANTHROPIC_BASE_URL`](/it/env-vars) al suo indirizzo. Vedi [LLM gateway configuration](/it/llm-gateway) per la configurazione.

307* Assicurati che il tuo firewall consenta gli host elencati in [Network access requirements](/it/network-config#network-access-requirements)

308* I guasti intermittenti vengono [ritentati automaticamente](#automatic-retries); i guasti persistenti indicano un problema di rete locale

309 

310Se `curl` ha successo ma Claude Code ancora fallisce, la causa è solitamente qualcosa tra Node.js e la rete piuttosto che la rete stessa:

311 

312* Su Linux e WSL, controlla `/etc/resolv.conf` per un nameserver irraggiungibile. WSL in particolare può ereditare un resolver rotto dall'host.

313* Su macOS, un client VPN che è stato disconnesso o disinstallato può lasciare dietro un'interfaccia tunnel o una regola di routing. Controlla `ifconfig` per interfacce `utun` obsolete e rimuovi l'estensione di rete della VPN in Impostazioni di Sistema.

314* Docker Desktop e runtime di container simili possono intercettare il traffico in uscita. Esci da loro e ritenta per escluderlo.

315 

316### SSL certificate errors

317 

318Un proxy o un'appliance di sicurezza sulla tua rete sta intercettando il traffico TLS con il suo certificato, e Node.js non lo considera attendibile.

319 

320```text theme={null}

321Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates

322Unable to connect to API: Self-signed certificate detected

323```

324 

325**Cosa fare:**

326 

327* Esporta il bundle CA della tua organizzazione e punta Node ad esso con `NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem`

328* Vedi [Network configuration](/it/network-config#custom-ca-certificates) per le istruzioni di configurazione complete

329* Non impostare `NODE_TLS_REJECT_UNAUTHORIZED=0`, che disabilita completamente la convalida del certificato

330 

331## Errori di richiesta

332 

333Questi errori significano che l'API ha ricevuto la tua richiesta ma ha rifiutato il suo contenuto.

334 

335### Prompt is too long

336 

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

338 

339```text theme={null}

340Prompt is too long

341```

342 

343**Cosa fare:**

344 

345* Esegui `/compact` per riassumere i turni precedenti e liberare spazio, o `/clear` per ricominciare da capo

346* Esegui `/context` per vedere una suddivisione di cosa sta consumando la finestra: prompt di sistema, strumenti, file di memoria e messaggi

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

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

349* I subagent ereditano ogni definizione di strumento MCP dalla sessione padre, che può riempire la loro finestra di contesto prima del primo turno. Disabilita i server MCP che non stai utilizzando prima di generare subagent.

350* L'auto-compact è attivo per impostazione predefinita e normalmente previene questo errore. Se hai impostato [`DISABLE_AUTO_COMPACT`](/it/env-vars), riabilitalo o esegui `/compact` manualmente prima che la finestra si riempia.

351 

352Vedi [Esplora la finestra di contesto](/it/context-window) per una vista interattiva di come il contesto si riempie.

353 

354### Error during compaction: Conversation too long

355 

356`/compact` stesso non è riuscito perché non c'è abbastanza contesto libero per contenere il riassunto che produce.

357 

358```text theme={null}

359Error during compaction: Conversation too long. Press esc twice to go up a few messages and try again.

360```

361 

362Questo può accadere quando la finestra è già piena nel momento in cui auto-compact si attiva, o quando esegui `/compact` dopo aver visto `Prompt is too long`.

363 

364**Cosa fare:**

365 

366* Premi Esc due volte per aprire l'elenco dei messaggi e tornare indietro di diversi turni. Questo elimina i messaggi più recenti dal contesto. Quindi esegui `/compact` di nuovo.

367* Se tornare indietro non libera abbastanza spazio, esegui `/clear` per avviare una sessione nuova. La tua conversazione precedente viene preservata e può essere riaperta con `/resume`.

368 

369### Request too large

370 

371Il corpo della richiesta grezzo ha superato il limite di byte dell'API prima della tokenizzazione, solitamente a causa di un file incollato grande o di un allegato.

372 

373```text theme={null}

374Request too large (max 30 MB). Double press esc to go back and remove or shrink the attached content.

375```

376 

377Questo è un limite di dimensione sulla richiesta HTTP, separato dal [limite della finestra di contesto](#prompt-is-too-long).

378 

379**Cosa fare:**

380 

381* Premi Esc due volte e torna indietro oltre il turno che ha aggiunto il contenuto di dimensioni eccessive

382* Fai riferimento ai file grandi per percorso invece di incollare i loro contenuti, in modo che Claude possa leggerli in blocchi

383* Per le immagini, vedi [Image was too large](#image-was-too-large) sottostante

384 

385### Image was too large

386 

387Un'immagine incollata o allegata supera i limiti di dimensione o dimensione dell'API.

388 

389```text theme={null}

390Image was too large. Double press esc to go back and try again with a smaller image.

391API Error: 400 ... image dimensions exceed max allowed size

392```

393 

394L'immagine rimane nella cronologia della conversazione dopo l'errore, quindi ogni messaggio successivo fallisce con lo stesso errore fino a quando non la rimuovi.

395 

396**Cosa fare:**

397 

398* Premi Esc due volte e torna indietro oltre il turno in cui l'immagine è stata aggiunta

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

400* Fai uno screenshot più stretto della regione rilevante invece dello schermo intero

401 

402### PDF errors

403 

404Il PDF che hai allegato non poteva essere elaborato.

405 

406```text theme={null}

407PDF too large (max 100 pages, 32 MB). Try splitting it or extracting text first.

408PDF is password protected. Try removing protection or extracting text first.

409The PDF file was not valid. Try converting to a different format first.

410```

411 

412**Cosa fare:**

413 

414* Per i PDF di dimensioni eccessive, chiedi a Claude di leggere un intervallo di pagine con lo strumento Read invece di allegare l'intero file, o estrai il testo con uno strumento come `pdftotext` e fai riferimento al file di output per percorso

415* Per i PDF protetti o non validi, rimuovi la password o ri-esporta il file dall'applicazione sorgente, quindi riprova

416 

417### Extra inputs are not permitted

418 

419Un proxy o un gateway LLM tra Claude Code e l'API ha rimosso l'intestazione della richiesta `anthropic-beta`, quindi l'API ha rifiutato i campi che dipendono da essa.

420 

421```text theme={null}

422API Error: 400 ... Extra inputs are not permitted ... context_management

423API Error: 400 ... Extra inputs are not permitted ... tools.0.custom.input_examples

424API Error: 400 ... Unexpected value(s) for the `anthropic-beta` header

425```

426 

427Claude Code invia campi solo beta come `context_management`, `effort` e `input_examples` dello strumento insieme a un'intestazione `anthropic-beta` che li abilita. Quando un gateway invia il corpo ma elimina l'intestazione, l'API vede campi che non riconosce.

428 

429**Cosa fare:**

430 

431* Configura il tuo gateway per inviare l'intestazione `anthropic-beta`. Vedi [Configurazione del gateway LLM](/it/llm-gateway).

432* Come fallback, imposta [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/it/env-vars) prima di lanciare. Questo disabilita le funzioni che richiedono l'intestazione beta in modo che le richieste abbiano successo attraverso un gateway che non può inoltrarla.

433 

434### There's an issue with the selected model

435 

436Il nome del modello configurato non è stato riconosciuto o il tuo account manca di accesso ad esso.

437 

438```text theme={null}

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

440```

441 

442**Cosa fare:**

443 

444* Esegui `/model` per scegliere dai modelli disponibili per il tuo account

445* Usa un alias come `sonnet` o `opus` invece di un ID completamente versionato. Gli alias tracciano l'ultima versione in modo che non diventino obsoleti. Vedi [Configurazione del modello](/it/model-config).

446* Se il modello sbagliato continua a tornare, un ID obsoleto è impostato da qualche parte. Controlla in [ordine di priorità](/it/model-config#setting-your-model): il flag `--model`, la variabile di ambiente `ANTHROPIC_MODEL`, quindi il campo `model` in `.claude/settings.local.json`, il tuo `.claude/settings.json` del progetto, e `~/.claude/settings.json`. Rimuovi il valore obsoleto e Claude Code ricade sul tuo account predefinito.

447* Per le distribuzioni Vertex AI, vedi [Risoluzione dei problemi di Vertex AI](/it/google-vertex-ai#troubleshooting).

448 

449### Claude Opus is not available with the Claude Pro plan

450 

451Il tuo piano di abbonamento attivo non include il modello che hai selezionato.

452 

453```text theme={null}

454Claude Opus is not available with the Claude Pro plan · Select a different model in /model

455```

456 

457**Cosa fare:**

458 

459* Esegui `/model` e seleziona un modello che il tuo piano include

460* 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 sul web non ha effetto in una sessione esistente fino a quando non ti ri-autentichi.

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

462 

463### thinking.type.enabled is not supported for this model

464 

465La tua versione di Claude Code è più vecchia del minimo per Opus 4.7. La CLI ha inviato una configurazione di thinking che il modello non accetta più.

466 

467```text theme={null}

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

469```

470 

471**Cosa fare:**

472 

473* Esegui `claude update` per aggiornare a v2.1.111 o successivo, quindi riavvia Claude Code

474* Se non puoi aggiornare, esegui `/model` e seleziona Opus 4.6 o Sonnet

475* Se colpisci questo nell'Agent SDK, vedi [Risoluzione dei problemi dell'SDK](/it/agent-sdk/quickstart#troubleshooting)

476 

477### Thinking budget exceeds output limit

478 

479Il budget di thinking esteso configurato supera la lunghezza massima della risposta, quindi non c'è spazio rimasto per la risposta effettiva.

480 

481```text theme={null}

482API Error: 400 ... max_tokens must be greater than thinking.budget_tokens

483```

484 

485Claude Code regola questi valori automaticamente sull'API Anthropic. Tipicamente vedi questo errore su Amazon Bedrock o Google Vertex AI quando [`MAX_THINKING_TOKENS`](/it/env-vars) è impostato più alto del limite di output del provider, o quando plan mode aumenta il budget di thinking.

486 

487**Cosa fare:**

488 

489* Abbassa `MAX_THINKING_TOKENS`, o aumenta [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/it/env-vars) sopra il budget di thinking

490* Vedi [Extended thinking](/it/common-workflows#use-extended-thinking-thinking-mode) per come il budget interagisce con la lunghezza dell'output

491 

492### Tool use or thinking block mismatch

493 

494La cronologia della conversazione ha raggiunto l'API in uno stato incoerente, solitamente dopo che una chiamata di strumento è stata interrotta o un turno è stato modificato a metà flusso.

495 

496```text theme={null}

497API Error: 400 due to tool use concurrency issues. Run /rewind to recover the conversation.

498API Error: 400 ... unexpected `tool_use_id` found in `tool_result` blocks

499API Error: 400 ... thinking blocks ... cannot be modified

500```

501 

502Tutte e tre le varianti significano la stessa cosa: la sequenza di blocchi `tool_use`, `tool_result` e `thinking` nella cronologia non corrisponde più a quello che l'API si aspetta.

503 

504**Cosa fare:**

505 

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

507 

508## Le risposte sembrano di qualità inferiore al solito

509 

510Se le risposte di Claude sembrano meno capaci di quanto ti aspetti ma nessun errore è mostrato, 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 casi specifici come una quota Opus raggiunta o una regione Bedrock o Vertex AI che manca il tuo modello; il controllo Model selection sottostante cattura entrambi, e [Model configuration](/it/model-config) spiega quando si applica il fallback.

511 

512Controlla questi prima:

513 

514* **Model selection**: esegui `/model` per confermare che sei sul modello che ti aspetti. Una scelta `/model` precedente o una variabile di ambiente `ANTHROPIC_MODEL` potrebbe averti su un modello più piccolo di quello che intendevi.

515* **Effort level**: esegui `/effort` per controllare il livello di ragionamento attuale e aumentalo per il debug difficile o il lavoro di progettazione. I valori predefiniti variano per modello, quindi controlla prima di assumere che sei sotto il massimo. Vedi [Adjust effort level](/it/model-config#adjust-effort-level) per i valori predefiniti per modello e il collegamento `ultrathink`.

516* **Context pressure**: esegui `/context` per vedere quanto è piena la finestra. Se è vicina alla capacità, esegui `/compact` a un punto naturale o `/clear` per ricominciare da capo. Vedi [Explore the context window](/it/context-window) per come auto-compact influisce sui turni precedenti.

517* **Stale instructions**: i file `CLAUDE.md` grandi o obsoleti e le definizioni di strumenti MCP consumano contesto e possono dirigere le risposte. `/doctor` contrassegna i file di memoria di dimensioni eccessive e le definizioni di subagent; `/context` mostra l'utilizzo di token dello strumento MCP.

518 

519Quando una risposta va male, il rewind di solito funziona meglio che rispondere con correzioni. Premi Esc due volte o esegui `/rewind` per tornare indietro a prima del turno cattivo, quindi riformula il prompt con più specifiche. Correggere nel thread mantiene il tentativo sbagliato nel contesto, che può ancorare le risposte successive ad esso. Vedi [Checkpointing](/it/checkpointing).

520 

521Se la qualità sembra ancora non corretta dopo aver controllato quanto sopra, esegui `/feedback` e descrivi cosa ti aspettavi rispetto a quello che hai ottenuto. Il feedback inviato in questo modo include la trascrizione della conversazione, che è il modo più veloce per Anthropic per diagnosticare una regressione reale. Vedi [Report an error](#report-an-error) se `/feedback` non è disponibile sul tuo provider.

522 

523## Segnalare un errore

524 

525Questa pagina copre gli errori dall'API Claude. Per gli errori da altri componenti di Claude Code, vedi la guida rilevante:

526 

527* Il server MCP non è riuscito a connettersi o autenticarsi: [MCP](/it/mcp)

528* Lo script hook non è riuscito o ha bloccato uno strumento: [Debug hooks](/it/hooks#debug-hooks)

529* Permesso negato o errori del filesystem durante l'installazione: [Troubleshooting dell'installazione e dell'accesso](/it/troubleshooting-install)

530 

531Se un errore non è elencato qui o la correzione suggerita non aiuta:

532 

533* Esegui `/feedback` all'interno di Claude Code per inviare la trascrizione e una descrizione ad Anthropic. Il comando offre anche di aprire un problema GitHub precompilato. Il feedback non è disponibile su Bedrock, Vertex AI e distribuzioni Foundry.

534* Esegui `/doctor` per controllare i problemi di configurazione locale

535* Controlla [status.claude.com](https://status.claude.com) per gli incidenti attivi

536* Cerca i [problemi esistenti](https://github.com/anthropics/claude-code/issues) su GitHub

fast-mode.md +151 −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# Accelera le risposte con la modalità veloce

6 

7> Ottieni risposte più veloci di Opus 4.6 in Claude Code attivando la modalità veloce.

8 

9<Note>

10 La modalità veloce è in [anteprima di ricerca](#research-preview). La funzione, i prezzi e la disponibilità potrebbero cambiare in base al feedback.

11</Note>

12 

13La modalità veloce è una configurazione ad alta velocità per Claude Opus 4.6, che rende il modello 2,5 volte più veloce a un costo per token più elevato. Attivala con `/fast` quando hai bisogno di velocità per il lavoro interattivo come l'iterazione rapida o il debug in tempo reale, e disattivala quando il costo è più importante della latenza.

14 

15La modalità veloce non è un modello diverso. Utilizza lo stesso Opus 4.6 con una configurazione API diversa che dà priorità alla velocità rispetto all'efficienza dei costi. Ottieni la stessa qualità e capacità, solo risposte più veloci.

16 

17<Note>

18 La modalità veloce richiede Claude Code v2.1.36 o successivo. Controlla la tua versione con `claude --version`.

19</Note>

20 

21Cosa sapere:

22 

23* Usa `/fast` per attivare/disattivare la modalità veloce in Claude Code CLI. Disponibile anche tramite `/fast` nell'estensione Claude Code VS Code.

24* I prezzi della modalità veloce per Opus 4.6 iniziano da \$30/150 MTok. La modalità veloce è disponibile con uno sconto del 50% per tutti i piani fino alle 23:59 PT del 16 febbraio.

25* Disponibile per tutti gli utenti di Claude Code sui piani di abbonamento (Pro/Max/Team/Enterprise) e Claude Console.

26* Per gli utenti di Claude Code sui piani di abbonamento (Pro/Max/Team/Enterprise), la modalità veloce è disponibile solo tramite utilizzo aggiuntivo e non è inclusa nei limiti di velocità dell'abbonamento.

27 

28Questa pagina copre come [attivare/disattivare la modalità veloce](#toggle-fast-mode), il suo [compromesso di costo](#understand-the-cost-tradeoff), [quando usarla](#decide-when-to-use-fast-mode), [requisiti](#requirements), [opt-in per sessione](#require-per-session-opt-in), e [comportamento dei limiti di velocità](#handle-rate-limits).

29 

30## Attiva/disattiva la modalità veloce

31 

32Attiva/disattiva la modalità veloce in uno di questi modi:

33 

34* Digita `/fast` e premi Tab per attivare o disattivare

35* Imposta `"fastMode": true` nel tuo [file di impostazioni utente](/it/settings)

36 

37Per impostazione predefinita, la modalità veloce persiste tra le sessioni. Gli amministratori possono configurare la modalità veloce per ripristinarsi ogni sessione. Vedi [richiedi opt-in per sessione](#require-per-session-opt-in) per i dettagli.

38 

39Per la migliore efficienza dei costi, abilita la modalità veloce all'inizio di una sessione piuttosto che passare a metà conversazione. Vedi [comprendi il compromesso di costo](#understand-the-cost-tradeoff) per i dettagli.

40 

41Quando abiliti la modalità veloce:

42 

43* Se sei su un modello diverso, Claude Code passa automaticamente a Opus 4.6

44* Vedrai un messaggio di conferma: "Fast mode ON"

45* Un piccolo icona `↯` appare accanto al prompt mentre la modalità veloce è attiva

46* Esegui `/fast` di nuovo in qualsiasi momento per verificare se la modalità veloce è attiva o disattiva

47 

48Quando disabiliti la modalità veloce con `/fast` di nuovo, rimani su Opus 4.6. Il modello non torna al tuo modello precedente. Per passare a un modello diverso, usa `/model`.

49 

50## Comprendi il compromesso di costo

51 

52La modalità veloce ha un prezzo per token più elevato rispetto a Opus 4.6 standard:

53 

54| Modalità | Input (MTok) | Output (MTok) |

55| ------------------------------------ | ------------ | ------------- |

56| Modalità veloce su Opus 4.6 (\<200K) | \$30 | \$150 |

57| Modalità veloce su Opus 4.6 (>200K) | \$60 | \$225 |

58 

59La modalità veloce è compatibile con la finestra di contesto estesa di 1M token.

60 

61Quando passi alla modalità veloce a metà conversazione, paghi il prezzo completo del token di input non memorizzato nella cache della modalità veloce per l'intero contesto della conversazione. Questo costa più di quanto avresti pagato se avessi abilitato la modalità veloce dall'inizio.

62 

63## Decidi quando usare la modalità veloce

64 

65La modalità veloce è migliore per il lavoro interattivo dove la latenza della risposta è più importante del costo:

66 

67* Iterazione rapida su modifiche del codice

68* Sessioni di debug in tempo reale

69* Lavoro sensibile al tempo con scadenze strette

70 

71La modalità standard è migliore per:

72 

73* Attività autonome lunghe dove la velocità è meno importante

74* Elaborazione batch o pipeline CI/CD

75* Carichi di lavoro sensibili ai costi

76 

77### Modalità veloce rispetto al livello di sforzo

78 

79La modalità veloce e il livello di sforzo influenzano entrambi la velocità di risposta, ma in modo diverso:

80 

81| Impostazione | Effetto |

82| ------------------------------- | ------------------------------------------------------------------------------------------------------ |

83| **Modalità veloce** | Stessa qualità del modello, latenza inferiore, costo più elevato |

84| **Livello di sforzo inferiore** | Meno tempo di riflessione, risposte più veloci, potenzialmente qualità inferiore su attività complesse |

85 

86Puoi combinare entrambi: usa la modalità veloce con un [livello di sforzo](/it/model-config#adjust-effort-level) inferiore per la massima velocità su attività semplici.

87 

88## Requisiti

89 

90La modalità veloce richiede tutti i seguenti elementi:

91 

92* **Non disponibile su provider cloud di terze parti**: la modalità veloce non è disponibile su Amazon Bedrock, Google Vertex AI o Microsoft Azure Foundry. La modalità veloce è disponibile tramite l'API Anthropic Console e per i piani di abbonamento Claude utilizzando l'utilizzo aggiuntivo.

93* **Utilizzo aggiuntivo abilitato**: il tuo account deve avere l'utilizzo aggiuntivo abilitato, che consente la fatturazione oltre l'utilizzo incluso nel tuo piano. Per gli account individuali, abilita questo nelle tue [impostazioni di fatturazione della Console](https://platform.claude.com/settings/organization/billing). Per Teams e Enterprise, un amministratore deve abilitare l'utilizzo aggiuntivo per l'organizzazione.

94 

95<Note>

96 L'utilizzo della modalità veloce viene fatturato direttamente all'utilizzo aggiuntivo, anche se hai un utilizzo rimanente nel tuo piano. Ciò significa che i token della modalità veloce non contano rispetto all'utilizzo incluso nel tuo piano e vengono addebitati alla tariffa della modalità veloce dal primo token.

97</Note>

98 

99* **Abilitazione dell'amministratore per Teams e Enterprise**: la modalità veloce è disabilitata per impostazione predefinita per le organizzazioni Teams e Enterprise. Un amministratore deve esplicitamente [abilitare la modalità veloce](#enable-fast-mode-for-your-organization) prima che gli utenti possano accedervi.

100 

101<Note>

102 Se il tuo amministratore non ha abilitato la modalità veloce per la tua organizzazione, il comando `/fast` mostrerà "Fast mode has been disabled by your organization."

103</Note>

104 

105### Abilita la modalità veloce per la tua organizzazione

106 

107Gli amministratori possono abilitare la modalità veloce in:

108 

109* **Console** (clienti API): [Preferenze Claude Code](https://platform.claude.com/claude-code/preferences)

110* **Claude AI** (Teams e Enterprise): [Admin Settings > Claude Code](https://claude.ai/admin-settings/claude-code)

111 

112Un'altra opzione per disabilitare completamente la modalità veloce è impostare `CLAUDE_CODE_DISABLE_FAST_MODE=1`. Vedi [Variabili di ambiente](/it/env-vars).

113 

114### Richiedi opt-in per sessione

115 

116Per impostazione predefinita, la modalità veloce persiste tra le sessioni: se un utente abilita la modalità veloce, rimane attiva nelle sessioni future. Gli amministratori sui piani [Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_teams#team-&-enterprise) o [Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_enterprise) possono prevenire questo impostando `fastModePerSessionOptIn` a `true` nelle [impostazioni gestite](/it/settings#settings-files) o [impostazioni gestite dal server](/it/server-managed-settings). Questo fa sì che ogni sessione inizi con la modalità veloce disattivata, richiedendo agli utenti di abilitarla esplicitamente con `/fast`.

117 

118```json theme={null}

119{

120 "fastModePerSessionOptIn": true

121}

122```

123 

124Questo è utile per controllare i costi nelle organizzazioni in cui gli utenti eseguono più sessioni simultanee. Gli utenti possono comunque abilitare la modalità veloce con `/fast` quando hanno bisogno di velocità, ma si ripristina all'inizio di ogni nuova sessione. La preferenza della modalità veloce dell'utente è ancora salvata, quindi rimuovere questa impostazione ripristina il comportamento persistente predefinito.

125 

126## Gestisci i limiti di velocità

127 

128La modalità veloce ha limiti di velocità separati da Opus 4.6 standard. Quando raggiungi il limite di velocità della modalità veloce o esaurisci i crediti di utilizzo aggiuntivo:

129 

1301. La modalità veloce torna automaticamente a Opus 4.6 standard

1312. L'icona `↯` diventa grigia per indicare il raffreddamento

1323. Continui a lavorare a velocità e prezzi standard

1334. Quando il raffreddamento scade, la modalità veloce si riabilita automaticamente

134 

135Per disabilitare manualmente la modalità veloce invece di aspettare il raffreddamento, esegui `/fast` di nuovo.

136 

137## Anteprima di ricerca

138 

139La modalità veloce è una funzione di anteprima di ricerca. Ciò significa:

140 

141* La funzione potrebbe cambiare in base al feedback

142* La disponibilità e i prezzi sono soggetti a modifiche

143* La configurazione API sottostante potrebbe evolversi

144 

145Segnala problemi o feedback attraverso i tuoi soliti canali di supporto Anthropic.

146 

147## Vedi anche

148 

149* [Configurazione del modello](/it/model-config): cambia modelli e regola i livelli di sforzo

150* [Gestisci i costi in modo efficace](/it/costs): traccia l'utilizzo dei token e riduci i costi

151* [Configurazione della riga di stato](/it/statusline): visualizza le informazioni del modello e del contesto

features-overview.md +294 −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# Estendi Claude Code

6 

7> Comprendi quando utilizzare CLAUDE.md, Skills, subagents, hooks, MCP e plugins.

8 

9Claude Code combina un modello che ragiona sul vostro codice con [strumenti integrati](/it/how-claude-code-works#tools) per operazioni su file, ricerca, esecuzione e accesso web. Gli strumenti integrati coprono la maggior parte dei compiti di codifica. Questa guida copre il livello di estensione: funzionalità che aggiungete per personalizzare ciò che Claude conosce, collegarlo a servizi esterni e automatizzare i flussi di lavoro.

10 

11<Note>

12 Per informazioni su come funziona il ciclo agentico principale, consultate [How Claude Code works](/it/how-claude-code-works).

13</Note>

14 

15**Siete nuovi a Claude Code?** Iniziate con [CLAUDE.md](/it/memory) per le convenzioni del progetto. Aggiungete altre estensioni secondo le vostre necessità.

16 

17## Panoramica

18 

19Le estensioni si collegano a diverse parti del ciclo agentico:

20 

21* **[CLAUDE.md](/it/memory)** aggiunge contesto persistente che Claude vede in ogni sessione

22* **[Skills](/it/skills)** aggiungono conoscenze riutilizzabili e flussi di lavoro invocabili

23* **[MCP](/it/mcp)** collega Claude a servizi e strumenti esterni

24* **[Subagents](/it/sub-agents)** eseguono i loro propri cicli in contesto isolato, restituendo riassunti

25* **[Agent teams](/it/agent-teams)** coordinano più sessioni indipendenti con compiti condivisi e messaggistica peer-to-peer

26* **[Hooks](/it/hooks)** vengono eseguiti completamente al di fuori del ciclo come script deterministici

27* **[Plugins](/it/plugins)** e **[marketplaces](/it/plugin-marketplaces)** confezionano e distribuiscono queste funzionalità

28 

29[Skills](/it/skills) sono l'estensione più flessibile. Una skill è un file markdown contenente conoscenze, flussi di lavoro o istruzioni. Potete invocare skills con un comando come `/deploy`, oppure Claude può caricarle automaticamente quando rilevante. Le skills possono essere eseguite nella vostra conversazione attuale o in un contesto isolato tramite subagents.

30 

31## Abbinate le funzionalità al vostro obiettivo

32 

33Le funzionalità vanno dal contesto sempre attivo che Claude vede in ogni sessione, alle capacità su richiesta che voi o Claude potete invocare, all'automazione in background che viene eseguita su eventi specifici. La tabella seguente mostra ciò che è disponibile e quando ogni funzionalità ha senso.

34 

35| Funzionalità | Cosa fa | Quando utilizzarla | Esempio |

36| ---------------------------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |

37| **CLAUDE.md** | Contesto persistente caricato in ogni conversazione | Convenzioni del progetto, regole "fai sempre X" | "Usa pnpm, non npm. Esegui i test prima di fare il commit." |

38| **Skill** | Istruzioni, conoscenze e flussi di lavoro che Claude può utilizzare | Contenuto riutilizzabile, documenti di riferimento, compiti ripetibili | `/deploy` esegue la vostra checklist di distribuzione; skill di documentazione API con pattern di endpoint |

39| **Subagent** | Contesto di esecuzione isolato che restituisce risultati riassunti | Isolamento del contesto, compiti paralleli, worker specializzati | Compito di ricerca che legge molti file ma restituisce solo i risultati chiave |

40| **[Agent teams](/it/agent-teams)** | Coordinare più sessioni Claude Code indipendenti | Ricerca parallela, sviluppo di nuove funzionalità, debug con ipotesi concorrenti | Generare revisori per controllare sicurezza, prestazioni e test simultaneamente |

41| **MCP** | Collegamento a servizi esterni | Dati o azioni esterne | Interrogare il vostro database, inviare a Slack, controllare un browser |

42| **Hook** | Script deterministico che viene eseguito su eventi | Automazione prevedibile, nessun LLM coinvolto | Eseguire ESLint dopo ogni modifica di file |

43 

44**[Plugins](/it/plugins)** sono il livello di confezionamento. Un plugin raggruppa skills, hooks, subagents e server MCP in una singola unità installabile. Le skills dei plugin hanno uno spazio dei nomi (come `/my-plugin:review`) in modo che più plugin possano coesistere. Utilizzate i plugin quando desiderate riutilizzare la stessa configurazione su più repository o distribuire ad altri tramite un **[marketplace](/it/plugin-marketplaces)**.

45 

46### Confrontate funzionalità simili

47 

48Alcune funzionalità possono sembrare simili. Ecco come distinguerle.

49 

50<Tabs>

51 <Tab title="Skill vs Subagent">

52 Skills e subagents risolvono problemi diversi:

53 

54 * **Skills** sono contenuti riutilizzabili che potete caricare in qualsiasi contesto

55 * **Subagents** sono worker isolati che vengono eseguiti separatamente dalla vostra conversazione principale

56 

57 | Aspetto | Skill | Subagent |

58 | ------------------------ | -------------------------------------------------------- | ----------------------------------------------------------------------------------- |

59 | **Cosa è** | Istruzioni, conoscenze o flussi di lavoro riutilizzabili | Worker isolato con il suo proprio contesto |

60 | **Vantaggio principale** | Condividere contenuti tra contesti | Isolamento del contesto. Il lavoro avviene separatamente, solo il riassunto ritorna |

61 | **Migliore per** | Materiale di riferimento, flussi di lavoro invocabili | Compiti che leggono molti file, lavoro parallelo, worker specializzati |

62 

63 **Le skills possono essere di riferimento o di azione.** Le skills di riferimento forniscono conoscenze che Claude utilizza durante la vostra sessione (come la vostra guida di stile API). Le skills di azione dicono a Claude di fare qualcosa di specifico (come `/deploy` che esegue il vostro flusso di lavoro di distribuzione).

64 

65 **Utilizzate un subagent** quando avete bisogno di isolamento del contesto o quando la vostra finestra di contesto si sta riempiendo. Il subagent potrebbe leggere dozzine di file o eseguire ricerche estese, ma la vostra conversazione principale riceve solo un riassunto. Poiché il lavoro del subagent non consuma il vostro contesto principale, questo è utile anche quando non avete bisogno che il lavoro intermedio rimanga visibile. I subagents personalizzati possono avere le loro proprie istruzioni e possono precaricare skills.

66 

67 **Possono combinarsi.** Un subagent può precaricare skills specifiche (campo `skills:`). Una skill può essere eseguita in contesto isolato utilizzando `context: fork`. Consultate [Skills](/it/skills) per i dettagli.

68 </Tab>

69 

70 <Tab title="CLAUDE.md vs Skill">

71 Entrambi memorizzano istruzioni, ma si caricano diversamente e servono scopi diversi.

72 

73 | Aspetto | CLAUDE.md | Skill |

74 | --------------------------------- | ------------------------------ | ----------------------------------------------------- |

75 | **Si carica** | Ogni sessione, automaticamente | Su richiesta |

76 | **Può includere file** | Sì, con importazioni `@path` | Sì, con importazioni `@path` |

77 | **Può attivare flussi di lavoro** | No | Sì, con `/<name>` |

78 | **Migliore per** | Regole "fai sempre X" | Materiale di riferimento, flussi di lavoro invocabili |

79 

80 **Mettetelo in CLAUDE.md** se Claude dovrebbe sempre saperlo: convenzioni di codifica, comandi di build, struttura del progetto, regole "non fare mai X".

81 

82 **Mettetelo in una skill** se è materiale di riferimento di cui Claude ha bisogno a volte (documentazione API, guide di stile) o un flusso di lavoro che attivate con `/<name>` (deploy, review, release).

83 

84 **Regola pratica:** Mantenete CLAUDE.md sotto 200 righe. Se sta crescendo, spostate il contenuto di riferimento in skills o dividetelo in file [`.claude/rules/`](/it/memory#organize-rules-with-clauderules).

85 </Tab>

86 

87 <Tab title="CLAUDE.md vs Rules vs Skills">

88 Tutti e tre memorizzano istruzioni, ma si caricano diversamente:

89 

90 | Aspetto | CLAUDE.md | `.claude/rules/` | Skill |

91 | ---------------- | ----------------------------------------- | ---------------------------------------------------------- | ----------------------------------------------------- |

92 | **Si carica** | Ogni sessione | Ogni sessione, o quando vengono aperti file corrispondenti | Su richiesta, quando invocato o rilevante |

93 | **Ambito** | Intero progetto | Può essere limitato a percorsi di file | Specifico del compito |

94 | **Migliore per** | Convenzioni e comandi di build principali | Linee guida specifiche del linguaggio o della directory | Materiale di riferimento, flussi di lavoro ripetibili |

95 

96 **Utilizzate CLAUDE.md** per istruzioni di cui ogni sessione ha bisogno: comandi di build, convenzioni di test, architettura del progetto.

97 

98 **Utilizzate rules** per mantenere CLAUDE.md focalizzato. Le rules con [frontmatter `paths`](/it/memory#path-specific-rules) si caricano solo quando Claude lavora con file corrispondenti, risparmiando contesto.

99 

100 **Utilizzate skills** per contenuti di cui Claude ha bisogno solo a volte, come documentazione API o una checklist di distribuzione che attivate con `/<name>`.

101 </Tab>

102 

103 <Tab title="Subagent vs Agent team">

104 Entrambi parallelizzano il lavoro, ma sono architettonicamente diversi:

105 

106 * **Subagents** vengono eseguiti all'interno della vostra sessione e riportano i risultati al vostro contesto principale

107 * **Agent teams** sono sessioni Claude Code indipendenti che comunicano tra loro

108 

109 | Aspetto | Subagent | Agent team |

110 | ------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- |

111 | **Contesto** | Finestra di contesto propria; i risultati ritornano al chiamante | Finestra di contesto propria; completamente indipendente |

112 | **Comunicazione** | Riporta i risultati solo all'agente principale | I compagni di squadra si messaggiano direttamente |

113 | **Coordinamento** | L'agente principale gestisce tutto il lavoro | Elenco di compiti condiviso con auto-coordinamento |

114 | **Migliore per** | Compiti focalizzati dove conta solo il risultato | Lavoro complesso che richiede discussione e collaborazione |

115 | **Costo del token** | Inferiore: i risultati sono riassunti al contesto principale | Superiore: ogni compagno di squadra è un'istanza Claude separata |

116 

117 **Utilizzate un subagent** quando avete bisogno di un worker veloce e focalizzato: ricercare una domanda, verificare un'affermazione, rivedere un file. Il subagent fa il lavoro e restituisce un riassunto. La vostra conversazione principale rimane pulita.

118 

119 **Utilizzate un agent team** quando i compagni di squadra hanno bisogno di condividere i risultati, sfidare l'uno l'altro e coordinarsi in modo indipendente. Gli agent teams sono migliori per la ricerca con ipotesi concorrenti, la revisione del codice parallela e lo sviluppo di nuove funzionalità dove ogni compagno di squadra possiede un pezzo separato.

120 

121 **Punto di transizione:** Se state eseguendo subagents paralleli ma raggiungete limiti di contesto, o se i vostri subagents hanno bisogno di comunicare tra loro, gli agent teams sono il passo naturale successivo.

122 

123 <Note>

124 Gli agent teams sono sperimentali e disabilitati per impostazione predefinita. Consultate [agent teams](/it/agent-teams) per la configurazione e le limitazioni attuali.

125 </Note>

126 </Tab>

127 

128 <Tab title="MCP vs Skill">

129 MCP collega Claude a servizi esterni. Le skills estendono ciò che Claude conosce, incluso come utilizzare efficacemente quei servizi.

130 

131 | Aspetto | MCP | Skill |

132 | ------------ | ------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |

133 | **Cosa è** | Protocollo per il collegamento a servizi esterni | Conoscenze, flussi di lavoro e materiale di riferimento |

134 | **Fornisce** | Accesso a strumenti e dati | Conoscenze, flussi di lavoro, materiale di riferimento |

135 | **Esempi** | Integrazione Slack, query di database, controllo del browser | Checklist di revisione del codice, flusso di lavoro di distribuzione, guida di stile API |

136 

137 Questi risolvono problemi diversi e funzionano bene insieme:

138 

139 **MCP** dà a Claude la capacità di interagire con sistemi esterni. Senza MCP, Claude non può interrogare il vostro database o inviare a Slack.

140 

141 **Skills** danno a Claude conoscenze su come utilizzare efficacemente quegli strumenti, più flussi di lavoro che potete attivare con `/<name>`. Una skill potrebbe includere lo schema del database del vostro team e i pattern di query, o un flusso di lavoro `/post-to-slack` con le regole di formattazione dei messaggi del vostro team.

142 

143 Esempio: Un server MCP collega Claude al vostro database. Una skill insegna a Claude il vostro modello di dati, i pattern di query comuni e quali tabelle utilizzare per diversi compiti.

144 </Tab>

145</Tabs>

146 

147### Comprendete come le funzionalità si stratificano

148 

149Le funzionalità possono essere definite a più livelli: a livello di utente, per progetto, tramite plugins o tramite politiche gestite. Potete anche annidare file CLAUDE.md in sottodirectory o posizionare skills in pacchetti specifici di un monorepo. Quando la stessa funzionalità esiste a più livelli, ecco come si stratificano:

150 

151* **I file CLAUDE.md** sono additivi: tutti i livelli contribuiscono contenuti al contesto di Claude simultaneamente. I file dalla vostra directory di lavoro e sopra si caricano all'avvio; le sottodirectory si caricano mentre lavorate in esse. Quando le istruzioni entrano in conflitto, Claude usa il giudizio per riconciliarle, con istruzioni più specifiche che tipicamente hanno la precedenza. Consultate [come i file CLAUDE.md si caricano](/it/memory#how-claudemd-files-load).

152* **Skills e subagents** si sovrascrivono per nome: quando lo stesso nome esiste a più livelli, una definizione vince in base alla priorità (gestito > utente > progetto per skills; gestito > flag CLI > progetto > utente > plugin per subagents). Le skills dei plugin sono [con spazio dei nomi](/it/plugins#add-skills-to-your-plugin) per evitare conflitti. Consultate [scoperta delle skills](/it/skills#where-skills-live) e [ambito del subagent](/it/sub-agents#choose-the-subagent-scope).

153* **I server MCP** si sovrascrivono per nome: locale > progetto > utente. Consultate [ambito MCP](/it/mcp#scope-hierarchy-and-precedence).

154* **Hooks** si uniscono: tutti gli hooks registrati si attivano per i loro eventi corrispondenti indipendentemente dalla fonte. Consultate [hooks](/it/hooks).

155 

156### Combinate le funzionalità

157 

158Ogni estensione risolve un problema diverso: CLAUDE.md gestisce il contesto sempre attivo, le skills gestiscono conoscenze e flussi di lavoro su richiesta, MCP gestisce connessioni esterne, i subagents gestiscono l'isolamento e gli hooks gestiscono l'automazione. Le configurazioni reali le combinano in base al vostro flusso di lavoro.

159 

160Ad esempio, potreste utilizzare CLAUDE.md per convenzioni del progetto, una skill per il vostro flusso di lavoro di distribuzione, MCP per connettervi al vostro database e un hook per eseguire il linting dopo ogni modifica. Ogni funzionalità gestisce ciò che fa meglio.

161 

162| Pattern | Come funziona | Esempio |

163| ---------------------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- |

164| **Skill + MCP** | MCP fornisce la connessione; una skill insegna a Claude come utilizzarla bene | MCP si connette al vostro database, una skill documenta lo schema e i pattern di query |

165| **Skill + Subagent** | Una skill genera subagents per il lavoro parallelo | La skill `/audit` avvia subagents di sicurezza, prestazioni e stile che lavorano in contesto isolato |

166| **CLAUDE.md + Skills** | CLAUDE.md contiene regole sempre attive; le skills contengono materiale di riferimento caricato su richiesta | CLAUDE.md dice "segui le nostre convenzioni API," una skill contiene la guida di stile API completa |

167| **Hook + MCP** | Un hook attiva azioni esterne tramite MCP | L'hook post-modifica invia una notifica Slack quando Claude modifica file critici |

168 

169## Comprendete i costi del contesto

170 

171Ogni funzionalità che aggiungete consuma parte del contesto di Claude. Troppo può riempire la vostra finestra di contesto, ma può anche aggiungere rumore che rende Claude meno efficace; le skills potrebbero non attivarsi correttamente, o Claude potrebbe perdere traccia delle vostre convenzioni. Comprendere questi compromessi vi aiuta a costruire una configurazione efficace.

172 

173### Costo del contesto per funzionalità

174 

175Ogni funzionalità ha una strategia di caricamento e un costo di contesto diversi:

176 

177| Funzionalità | Quando si carica | Cosa si carica | Costo del contesto |

178| -------------- | ----------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------- |

179| **CLAUDE.md** | Inizio della sessione | Contenuto completo | Ogni richiesta |

180| **Skills** | Inizio della sessione + quando utilizzate | Descrizioni all'inizio, contenuto completo quando utilizzate | Basso (descrizioni ogni richiesta)\* |

181| **Server MCP** | Inizio della sessione | Tutte le definizioni degli strumenti e gli schemi JSON | Ogni richiesta |

182| **Subagents** | Quando generati | Contesto fresco con skills specificate | Isolato dalla sessione principale |

183| **Hooks** | Al trigger | Niente (viene eseguito esternamente) | Zero, a meno che l'hook non restituisca contesto aggiuntivo |

184 

185\*Per impostazione predefinita, le descrizioni delle skills si caricano all'inizio della sessione in modo che Claude possa decidere quando utilizzarle. Impostate `disable-model-invocation: true` nel frontmatter di una skill per nasconderla completamente a Claude fino a quando non la invocate manualmente. Questo riduce il costo del contesto a zero per le skills che invocate solo voi.

186 

187### Comprendete come le funzionalità si caricano

188 

189Ogni funzionalità si carica in diversi punti della vostra sessione. Le schede seguenti spiegano quando ogni funzionalità si carica e cosa entra nel contesto.

190 

191<img src="https://mintcdn.com/claude-code/6yTCYq1p37ZB8-CQ/images/context-loading.svg?fit=max&auto=format&n=6yTCYq1p37ZB8-CQ&q=85&s=5a58ce953a35a2412892015e2ad6cb67" alt="Caricamento del contesto: CLAUDE.md e MCP si caricano all'inizio della sessione e rimangono in ogni richiesta. Le skills caricano descrizioni all'inizio, contenuto completo all'invocazione. I subagents ottengono contesto isolato. Gli hooks vengono eseguiti esternamente." width="720" height="410" data-path="images/context-loading.svg" />

192 

193<Tabs>

194 <Tab title="CLAUDE.md">

195 **Quando:** Inizio della sessione

196 

197 **Cosa si carica:** Contenuto completo di tutti i file CLAUDE.md (livelli gestito, utente e progetto).

198 

199 **Eredità:** Claude legge i file CLAUDE.md dalla vostra directory di lavoro fino alla radice e scopre quelli annidati nelle sottodirectory mentre accede a quei file. Consultate [Come i file CLAUDE.md si caricano](/it/memory#how-claudemd-files-load) per i dettagli.

200 

201 <Tip>Mantenete CLAUDE.md sotto 200 righe. Spostate il materiale di riferimento in skills, che si caricano su richiesta.</Tip>

202 </Tab>

203 

204 <Tab title="Skills">

205 Le skills sono capacità extra nel toolkit di Claude. Possono essere materiale di riferimento (come una guida di stile API) o flussi di lavoro invocabili che attivate con `/<name>` (come `/deploy`). Claude Code viene fornito con [skills raggruppate](/it/skills#bundled-skills) come `/simplify`, `/batch` e `/debug` che funzionano subito. Potete anche crearne di vostre. Claude utilizza le skills quando appropriato, oppure potete invocarne una direttamente.

206 

207 **Quando:** Dipende dalla configurazione della skill. Per impostazione predefinita, le descrizioni si caricano all'inizio della sessione e il contenuto completo si carica quando utilizzate. Per le skills solo utente (`disable-model-invocation: true`), niente si carica fino a quando non le invocate.

208 

209 **Cosa si carica:** Per le skills invocabili dal modello, Claude vede nomi e descrizioni in ogni richiesta. Quando invocate una skill con `/<name>` o Claude la carica automaticamente, il contenuto completo si carica nella vostra conversazione.

210 

211 **Come Claude sceglie le skills:** Claude abbina il vostro compito alle descrizioni delle skills per decidere quali sono rilevanti. Se le descrizioni sono vaghe o si sovrappongono, Claude potrebbe caricare la skill sbagliata o perderne una che aiuterebbe. Per dire a Claude di utilizzare una skill specifica, invocatela con `/<name>`. Le skills con `disable-model-invocation: true` sono invisibili a Claude fino a quando non le invocate.

212 

213 **Costo del contesto:** Basso fino a quando non vengono utilizzate. Le skills solo utente hanno costo zero fino a quando non vengono invocate.

214 

215 **Nei subagents:** Le skills funzionano diversamente nei subagents. Invece del caricamento su richiesta, le skills passate a un subagent vengono completamente precaricate nel suo contesto all'avvio. I subagents non ereditano le skills dalla sessione principale; dovete specificarle esplicitamente.

216 

217 <Tip>Utilizzate `disable-model-invocation: true` per le skills con effetti collaterali. Questo risparmia contesto e assicura che solo voi le attiviate.</Tip>

218 </Tab>

219 

220 <Tab title="Server MCP">

221 **Quando:** Inizio della sessione.

222 

223 **Cosa si carica:** Tutte le definizioni degli strumenti e gli schemi JSON dai server connessi.

224 

225 **Costo del contesto:** [Ricerca degli strumenti](/it/mcp#scale-with-mcp-tool-search) (abilitata per impostazione predefinita) carica gli strumenti MCP fino al 10% del contesto e rinvia il resto fino a quando non è necessario.

226 

227 **Nota di affidabilità:** Le connessioni MCP possono fallire silenziosamente durante la sessione. Se un server si disconnette, i suoi strumenti scompaiono senza avviso. Claude potrebbe provare a utilizzare uno strumento che non esiste più. Se notate che Claude non riesce a utilizzare uno strumento MCP a cui poteva accedere in precedenza, controllate la connessione con `/mcp`.

228 

229 <Tip>Eseguite `/mcp` per vedere i costi dei token per server. Disconnettete i server che non state utilizzando attivamente.</Tip>

230 </Tab>

231 

232 <Tab title="Subagents">

233 **Quando:** Su richiesta, quando voi o Claude ne generate uno per un compito.

234 

235 **Cosa si carica:** Contesto fresco e isolato contenente:

236 

237 * Il prompt di sistema (condiviso con il genitore per l'efficienza della cache)

238 * Contenuto completo delle skills elencate nel campo `skills:` dell'agente

239 * CLAUDE.md e stato git (ereditati dal genitore)

240 * Qualsiasi contesto che l'agente principale passa nel prompt

241 

242 **Costo del contesto:** Isolato dalla sessione principale. I subagents non ereditano la vostra cronologia di conversazione o le skills invocate.

243 

244 <Tip>Utilizzate i subagents per il lavoro che non ha bisogno del vostro contesto di conversazione completo. Il loro isolamento previene il gonfiore della vostra sessione principale.</Tip>

245 </Tab>

246 

247 <Tab title="Hooks">

248 **Quando:** Al trigger. Gli hooks si attivano su eventi del ciclo di vita specifici come esecuzione dello strumento, confini della sessione, invio del prompt, richieste di autorizzazione e compattazione. Consultate [Hooks](/it/hooks) per l'elenco completo.

249 

250 **Cosa si carica:** Niente per impostazione predefinita. Gli hooks vengono eseguiti come script esterni.

251 

252 **Costo del contesto:** Zero, a meno che l'hook non restituisca output che viene aggiunto come messaggi alla vostra conversazione.

253 

254 <Tip>Gli hooks sono ideali per effetti collaterali (linting, logging) che non hanno bisogno di influenzare il contesto di Claude.</Tip>

255 </Tab>

256</Tabs>

257 

258## Scopri di più

259 

260Ogni funzionalità ha la sua propria guida con istruzioni di configurazione, esempi e opzioni di configurazione.

261 

262<CardGroup cols={2}>

263 <Card title="CLAUDE.md" icon="file-lines" href="/it/memory">

264 Memorizzate il contesto del progetto, le convenzioni e le istruzioni

265 </Card>

266 

267 <Card title="Skills" icon="brain" href="/it/skills">

268 Date a Claude competenze di dominio e flussi di lavoro riutilizzabili

269 </Card>

270 

271 <Card title="Subagents" icon="users" href="/it/sub-agents">

272 Delegate il lavoro a contesto isolato

273 </Card>

274 

275 <Card title="Agent teams" icon="network" href="/it/agent-teams">

276 Coordinate più sessioni che lavorano in parallelo

277 </Card>

278 

279 <Card title="MCP" icon="plug" href="/it/mcp">

280 Collegate Claude a servizi esterni

281 </Card>

282 

283 <Card title="Hooks" icon="bolt" href="/it/hooks-guide">

284 Automatizzate i flussi di lavoro con gli hooks

285 </Card>

286 

287 <Card title="Plugins" icon="puzzle-piece" href="/it/plugins">

288 Confezionate e condividete set di funzionalità

289 </Card>

290 

291 <Card title="Marketplaces" icon="store" href="/it/plugin-marketplaces">

292 Ospitate e distribuite raccolte di plugin

293 </Card>

294</CardGroup>

fullscreen.md +159 −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# Rendering a schermo intero

6 

7> Abilita una modalità di rendering più fluida e senza sfarfallio con supporto del mouse e utilizzo stabile della memoria nelle conversazioni lunghe.

8 

9<Note>

10 Il rendering a schermo intero è un'[anteprima di ricerca](#research-preview) opt-in e richiede Claude Code v2.1.89 o successivo. Eseguire `/tui fullscreen` per passare nella conversazione corrente, oppure impostare `CLAUDE_CODE_NO_FLICKER=1` nelle versioni precedenti a v2.1.110. Il comportamento potrebbe cambiare in base al feedback.

11</Note>

12 

13Il rendering a schermo intero è un percorso di rendering alternativo per la CLI di Claude Code che elimina lo sfarfallio, mantiene l'utilizzo della memoria costante nelle conversazioni lunghe e aggiunge il supporto del mouse. Disegna l'interfaccia sul buffer dello schermo alternativo del terminale, come `vim` o `htop`, e renderizza solo i messaggi attualmente visibili. Questo riduce la quantità di dati inviati al terminale ad ogni aggiornamento.

14 

15La differenza è più evidente negli emulatori di terminale dove il throughput di rendering è il collo di bottiglia, come il terminale integrato di VS Code, tmux e iTerm2. Se la posizione di scorrimento del terminale salta in alto mentre Claude sta lavorando, o lo schermo lampeggia mentre l'output dello strumento viene trasmesso, questa modalità affronta questi problemi.

16 

17<Note>

18 Il termine schermo intero descrive come Claude Code si impadronisce della superficie di disegno del terminale, come fa `vim`. Non ha nulla a che fare con la massimizzazione della finestra del terminale e funziona a qualsiasi dimensione della finestra.

19</Note>

20 

21## Abilita il rendering a schermo intero

22 

23Eseguire `/tui fullscreen` all'interno di qualsiasi conversazione di Claude Code. La CLI salva l'[impostazione `tui`](/it/settings#available-settings) e si riavvia in modalità schermo intero con la conversazione intatta, quindi è possibile passare a metà sessione senza perdere il contesto. Eseguire `/tui` senza argomenti per stampare quale renderer è attivo.

24 

25È inoltre possibile impostare la variabile di ambiente `CLAUDE_CODE_NO_FLICKER` prima di avviare Claude Code:

26 

27```bash theme={null}

28CLAUDE_CODE_NO_FLICKER=1 claude

29```

30 

31L'impostazione `tui` e la variabile di ambiente sono equivalenti. Il comando `/tui` cancella `CLAUDE_CODE_NO_FLICKER` dal processo riavviato in modo che l'impostazione che scrive abbia effetto.

32 

33## Cosa cambia

34 

35Il rendering a schermo intero cambia il modo in cui la CLI disegna sul terminale. La casella di input rimane fissa in fondo allo schermo invece di muoversi mentre l'output viene trasmesso. Se l'input rimane fermo mentre Claude sta lavorando, il rendering a schermo intero è attivo. Solo i messaggi visibili vengono mantenuti nell'albero di rendering, quindi la memoria rimane costante indipendentemente dalla lunghezza della conversazione.

36 

37Poiché la conversazione vive nel buffer dello schermo alternativo invece dello scrollback del terminale, alcune cose funzionano diversamente:

38 

39| Prima | Ora | Dettagli |

40| :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------- |

41| `Cmd+f` o ricerca tmux per trovare testo | `Ctrl+o` per la modalità trascrizione, quindi `/` per cercare o `[` per scrivere nello scrollback | [Cerca e rivedi la conversazione](#search-and-review-the-conversation) |

42| Clic e trascinamento nativo del terminale per selezionare e copiare | Selezione in-app, copia automatica al rilascio del mouse | [Usa il mouse](#use-the-mouse) |

43| `Cmd`-clic per aprire un URL | Fai clic sull'URL | [Usa il mouse](#use-the-mouse) |

44 

45Se l'acquisizione del mouse interferisce con il tuo flusso di lavoro, puoi [disattivarla](#keep-native-text-selection) mantenendo il rendering senza sfarfallio.

46 

47## Usa il mouse

48 

49Il rendering a schermo intero acquisisce gli eventi del mouse e li gestisce all'interno di Claude Code:

50 

51* **Fai clic nella casella di input del prompt** per posizionare il cursore in qualsiasi punto del testo che stai digitando.

52* **Fai clic su un risultato dello strumento compresso** per espanderlo e vedere l'output completo. Fai clic di nuovo per comprimerlo. La chiamata dello strumento e il suo risultato si espandono insieme. Solo i messaggi che hanno più da mostrare sono cliccabili.

53* **Fai clic su un URL o un percorso di file** per aprirlo. I percorsi di file nell'output dello strumento, come quelli stampati dopo un Edit o Write, si aprono nell'applicazione predefinita. Gli URL `http://` e `https://` semplici si aprono nel browser. Nella maggior parte dei terminali questo sostituisce il `Cmd`-clic o il `Ctrl`-clic nativo, che l'acquisizione del mouse intercetta. Nel terminale integrato di VS Code e nei terminali basati su xterm.js simili, continua a usare `Cmd`-clic. Claude Code si rimette al gestore di link del terminale per evitare di aprire i link due volte.

54* **Fai clic e trascinamento** per selezionare il testo in qualsiasi punto della conversazione. Il doppio clic seleziona una parola, corrispondendo ai confini delle parole di iTerm2 in modo che un percorso di file si selezioni come un'unità. Il triplo clic seleziona la riga.

55* **Scorri con la rotella del mouse** per muoverti attraverso la conversazione.

56 

57Il testo selezionato viene copiato negli appunti automaticamente al rilascio del mouse. Per disattivarlo, attiva/disattiva Copia alla selezione in `/config`. Con questa opzione disattivata, premi `Ctrl+Shift+c` per copiare manualmente. Sui terminali che supportano il protocollo della tastiera kitty, come kitty, WezTerm, Ghostty e iTerm2, funziona anche `Cmd+c`. Se hai una selezione attiva, `Ctrl+c` copia invece di annullare.

58 

59Con una selezione attiva, tieni premuto `Shift` e premi i tasti freccia per estenderla dalla tastiera. `Shift+↑` e `Shift+↓` scorrono il viewport quando la selezione raggiunge il bordo superiore o inferiore. `Shift+Home` e `Shift+End` estendono all'inizio o alla fine della riga corrente.

60 

61## Scorri la conversazione

62 

63Il rendering a schermo intero gestisce lo scorrimento all'interno dell'app. Usa queste scorciatoie per navigare:

64 

65| Scorciatoia | Azione |

66| :---------------- | :-------------------------------------------------------------- |

67| `PgUp` / `PgDn` | Scorri su o giù di mezzo schermo |

68| `Ctrl+Home` | Salta all'inizio della conversazione |

69| `Ctrl+End` | Salta al messaggio più recente e riabilita il follow automatico |

70| Rotella del mouse | Scorri di poche righe alla volta |

71 

72Su tastiere senza tasti dedicati `PgUp`, `PgDn`, `Home` o `End`, come le tastiere MacBook, tieni premuto `Fn` con i tasti freccia: `Fn+↑` invia `PgUp`, `Fn+↓` invia `PgDn`, `Fn+←` invia `Home` e `Fn+→` invia `End`. Questo rende `Ctrl+Fn+→` la scorciatoia per saltare al fondo. Se ti sembra scomodo, scorri verso il basso con la rotella del mouse per riprendere il follow, o riassegna `scroll:bottom` a qualcosa di raggiungibile.

73 

74Queste azioni sono riassegnabili. Vedi [Azioni di scorrimento](/it/keybindings#scroll-actions) per l'elenco completo dei nomi delle azioni, incluse le varianti di mezza pagina e pagina intera che non hanno binding predefinito.

75 

76### Follow automatico

77 

78Lo scorrimento verso l'alto mette in pausa il follow automatico in modo che il nuovo output non ti riporti al fondo. Premi `Ctrl+End` o scorri verso il basso per riprendere il follow.

79 

80Per disattivare completamente il follow automatico in modo che la vista rimanga dove la lasci, apri `/config` e imposta Auto-scroll su off. Con auto-scroll disabilitato, la vista non salta mai al fondo da sola. I prompt di autorizzazione e altri dialoghi che richiedono una risposta scorrono comunque in vista indipendentemente da questa impostazione.

81 

82### Scorrimento con la rotella del mouse

83 

84Lo scorrimento con la rotella del mouse richiede che il terminale inoltri gli eventi del mouse a Claude Code. La maggior parte dei terminali lo fa ogni volta che un'applicazione lo richiede. iTerm2 lo rende un'impostazione per profilo: se la rotella non fa nulla ma `PgUp` e `PgDn` funzionano, apri Impostazioni → Profili → Terminale e attiva Abilita segnalazione mouse. La stessa impostazione è richiesta anche per il clic per espandere e la selezione di testo per funzionare.

85 

86Se lo scorrimento con la rotella del mouse sembra lento, il terminale potrebbe inviare un evento di scorrimento per ogni tacca fisica senza moltiplicatore. Alcuni terminali, come Ghostty e iTerm2 con scorrimento più veloce abilitato, amplificano già gli eventi della rotella. Altri, incluso il terminale integrato di VS Code, inviano esattamente un evento per tacca. Claude Code non può rilevare quale.

87 

88Imposta `CLAUDE_CODE_SCROLL_SPEED` per moltiplicare la distanza di scorrimento di base:

89 

90```bash theme={null}

91export CLAUDE_CODE_SCROLL_SPEED=3

92```

93 

94Un valore di `3` corrisponde al valore predefinito in `vim` e applicazioni simili. L'impostazione accetta valori da 1 a 20.

95 

96## Cerca e rivedi la conversazione

97 

98`Ctrl+o` attiva/disattiva tra il prompt normale e la modalità trascrizione. Per una vista più silenziosa che mostra solo l'ultimo prompt, un riassunto di una riga delle chiamate dello strumento con diffstat di modifica e la risposta finale, esegui `/focus`. L'impostazione persiste tra le sessioni. Esegui `/focus` di nuovo per disattivarla.

99 

100La modalità trascrizione guadagna navigazione e ricerca in stile `less`:

101 

102| Tasto | Azione |

103| :---------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |

104| `/` | Apri la ricerca. Digita per trovare corrispondenze, `Enter` per accettare, `Esc` per annullare e ripristinare la posizione di scorrimento |

105| `n` / `N` | Salta alla corrispondenza successiva o precedente. Funziona dopo aver chiuso la barra di ricerca |

106| `j` / `k` o `↑` / `↓` | Scorri una riga |

107| `g` / `G` o `Home` / `End` | Salta all'inizio o alla fine |

108| `Ctrl+u` / `Ctrl+d` | Scorri mezza pagina |

109| `Ctrl+b` / `Ctrl+f` o `Space` / `b` | Scorri una pagina intera |

110| `Ctrl+o`, `Esc`, o `q` | Esci dalla modalità trascrizione e torna al prompt |

111 

112Il `Cmd+f` del terminale e la ricerca tmux non vedono la conversazione perché vive nel buffer dello schermo alternativo, non nello scrollback nativo. Per restituire il contenuto al terminale, premi `Ctrl+o` per entrare prima in modalità trascrizione, quindi:

113 

114* **`[`**: scrive la conversazione completa nel buffer dello scrollback nativo del terminale, con tutto l'output dello strumento espanso. La conversazione è ora testo ordinario nel terminale, quindi `Cmd+f`, la modalità copia tmux e qualsiasi altro strumento nativo può cercarla o selezionarla. Le sessioni lunghe potrebbero fare una pausa per un momento mentre questo accade. Questo dura fino a quando non esci dalla modalità trascrizione con `Esc` o `q`, che ti riporta al rendering a schermo intero. Il prossimo `Ctrl+o` ricomincia da capo.

115* **`v`**: scrive la conversazione in un file temporaneo e lo apre in `$VISUAL` o `$EDITOR`.

116 

117Premi `Esc` o `q` per tornare al prompt.

118 

119## Cancella la conversazione

120 

121Premi `Ctrl+L` due volte entro due secondi per eseguire `/clear` e avviare una nuova conversazione. Il primo pressione ridisegna lo schermo e mostra un suggerimento; il secondo pressione cancella la conversazione. Su macOS, il doppio pressione di `Cmd+K` esegue anche `/clear`.

122 

123## Usa con tmux

124 

125Il rendering a schermo intero funziona all'interno di tmux, con due avvertenze.

126 

127Lo scorrimento con la rotella del mouse richiede la modalità mouse di tmux. Se il tuo `~/.tmux.conf` non lo abilita già, aggiungi questa riga e ricarica la configurazione:

128 

129```bash theme={null}

130set -g mouse on

131```

132 

133Senza la modalità mouse, gli eventi della rotella vanno a tmux invece che a Claude Code. Lo scorrimento da tastiera con `PgUp` e `PgDn` funziona comunque. Claude Code stampa un suggerimento una tantum all'avvio se rileva tmux con la modalità mouse disattivata.

134 

135Il rendering a schermo intero è incompatibile con la modalità di integrazione tmux di iTerm2, che è la modalità in cui entri con `tmux -CC`. In modalità integrazione, iTerm2 renderizza ogni riquadro tmux come una divisione nativa piuttosto che lasciare che tmux disegni sul terminale. Il buffer dello schermo alternativo e il tracciamento del mouse non funzionano correttamente lì: la rotella del mouse non fa nulla e il doppio clic può corrompere lo stato del terminale. Non abilitare il rendering a schermo intero nelle sessioni `tmux -CC`. Il tmux regolare all'interno di iTerm2, senza `-CC`, funziona bene.

136 

137## Mantieni la selezione di testo nativa

138 

139L'acquisizione del mouse è il punto di attrito più comune, specialmente su SSH o all'interno di tmux. Quando Claude Code acquisisce gli eventi del mouse, la copia nativa al rilascio della selezione del terminale smette di funzionare. La selezione che fai con clic e trascinamento esiste all'interno di Claude Code, non nel buffer di selezione del terminale, quindi la modalità copia tmux, i suggerimenti Kitty e strumenti simili non la vedono.

140 

141Claude Code tenta di scrivere la selezione negli appunti, ma il percorso che utilizza dipende dalla configurazione. All'interno di tmux scrive nel buffer di incolla tmux. Su SSH ricade alle sequenze di escape OSC 52, che alcuni terminali bloccano per impostazione predefinita. iTerm2 le blocca finché non attivi Impostazioni → Generale → Selezione → Le applicazioni nel terminale possono accedere agli appunti. Eseguire [`/terminal-setup`](/it/terminal-config) in iTerm2 abilita questo per te. Claude Code stampa un toast dopo ogni copia dicendoti quale percorso ha utilizzato.

142 

143Per una selezione nativa una tantum, tenere premuto il modificatore di bypass del terminale mentre si fa clic e si trascina: `Option` in iTerm2, o `Shift` nella maggior parte dei terminali Linux e Windows. Il modificatore dice al terminale di gestire la selezione stesso invece di inoltrare gli eventi del mouse a Claude Code, quindi `Cmd+C` e gli altri scorciatoie di copia del terminale funzionano su di essa.

144 

145Se fai affidamento sulla selezione nativa tutto il tempo, imposta `CLAUDE_CODE_DISABLE_MOUSE=1` per rinunciare all'acquisizione del mouse mantenendo il rendering senza sfarfallio e la memoria piatta:

146 

147```bash theme={null}

148CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude

149```

150 

151Con l'acquisizione del mouse disabilitata, lo scorrimento da tastiera con `PgUp`, `PgDn`, `Ctrl+Home` e `Ctrl+End` funziona ancora, e il terminale gestisce la selezione in modo nativo. Perdi il clic per posizionare il cursore, il clic per espandere l'output dello strumento, il clic su URL e lo scorrimento della rotella all'interno di Claude Code.

152 

153## Anteprima di ricerca

154 

155Il rendering a schermo intero è una funzione di anteprima di ricerca. È stato testato su emulatori di terminale comuni, ma potresti incontrare problemi di rendering su terminali meno comuni o configurazioni insolite.

156 

157Se riscontri un problema, esegui `/feedback` all'interno di Claude Code per segnalarlo, o apri un problema nel [repository GitHub di claude-code](https://github.com/anthropics/claude-code/issues). Includi il nome e la versione dell'emulatore del terminale.

158 

159Per disattivare il rendering a schermo intero, esegui `/tui default`, o annulla l'impostazione della variabile di ambiente se l'hai abilitata in quel modo.

github-actions.md +670 −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# Claude Code GitHub Actions

6 

7> Scopri come integrare Claude Code nel tuo flusso di lavoro di sviluppo con Claude Code GitHub Actions

8 

9Claude Code GitHub Actions porta l'automazione basata su AI al tuo flusso di lavoro GitHub. Con una semplice menzione `@claude` in qualsiasi PR o issue, Claude può analizzare il tuo codice, creare pull request, implementare funzionalità e correggere bug - il tutto seguendo gli standard del tuo progetto. Per le revisioni automatiche pubblicate su ogni PR senza un trigger, vedi [GitHub Code Review](/it/code-review).

10 

11<Note>

12 Claude Code GitHub Actions è costruito sulla base dell'[Claude Agent SDK](/it/agent-sdk/overview), che consente l'integrazione programmatica di Claude Code nelle tue applicazioni. Puoi utilizzare l'SDK per costruire flussi di lavoro di automazione personalizzati oltre GitHub Actions.

13</Note>

14 

15<Info>

16 **Claude Opus 4.7 è ora disponibile.** Claude Code GitHub Actions utilizza per impostazione predefinita Sonnet. Per utilizzare Opus 4.7, configura il [parametro model](#breaking-changes-reference) per utilizzare `claude-opus-4-7`.

17</Info>

18 

19## Perché utilizzare Claude Code GitHub Actions?

20 

21* **Creazione istantanea di PR**: Descrivi ciò di cui hai bisogno e Claude crea una PR completa con tutti i cambiamenti necessari

22* **Implementazione automatica del codice**: Trasforma gli issue in codice funzionante con un singolo comando

23* **Segue i tuoi standard**: Claude rispetta le tue linee guida `CLAUDE.md` e i pattern di codice esistenti

24* **Configurazione semplice**: Inizia in pochi minuti con il nostro installer e la chiave API

25* **Sicuro per impostazione predefinita**: Il tuo codice rimane sui runner di Github

26 

27## Cosa può fare Claude?

28 

29Claude Code fornisce un potente GitHub Action che trasforma il modo in cui lavori con il codice:

30 

31### Claude Code Action

32 

33Questo GitHub Action ti consente di eseguire Claude Code all'interno dei tuoi flussi di lavoro GitHub Actions. Puoi utilizzarlo per costruire qualsiasi flusso di lavoro personalizzato sulla base di Claude Code.

34 

35[Visualizza repository →](https://github.com/anthropics/claude-code-action)

36 

37## Setup

38 

39## Configurazione rapida

40 

41Il modo più semplice per configurare questa action è attraverso Claude Code nel terminale. Basta aprire claude ed eseguire `/install-github-app`.

42 

43Questo comando ti guiderà attraverso la configurazione dell'app GitHub e dei secret richiesti.

44 

45<Note>

46 * Devi essere un amministratore del repository per installare l'app GitHub e aggiungere secret

47 * L'app GitHub richiederà autorizzazioni di lettura e scrittura per Contents, Issues e Pull requests

48 * Questo metodo di avvio rapido è disponibile solo per gli utenti diretti dell'API Claude. Se stai utilizzando Amazon Bedrock o Google Vertex AI, consulta la sezione [Utilizzo con Amazon Bedrock e Google Vertex AI](#using-with-amazon-bedrock-%26-google-vertex-ai).

49</Note>

50 

51## Configurazione manuale

52 

53Se il comando `/install-github-app` non riesce o preferisci una configurazione manuale, segui queste istruzioni di configurazione manuale:

54 

551. **Installa l'app GitHub di Claude** nel tuo repository: [https://github.com/apps/claude](https://github.com/apps/claude)

56 

57 L'app GitHub di Claude richiede le seguenti autorizzazioni del repository:

58 

59 * **Contents**: Lettura e scrittura (per modificare i file del repository)

60 * **Issues**: Lettura e scrittura (per rispondere agli issue)

61 * **Pull requests**: Lettura e scrittura (per creare PR e spingere i cambiamenti)

62 

63 Per ulteriori dettagli sulla sicurezza e le autorizzazioni, vedi la [documentazione sulla sicurezza](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md).

642. **Aggiungi ANTHROPIC\_API\_KEY** ai tuoi secret del repository ([Scopri come utilizzare i secret in GitHub Actions](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions))

653. **Copia il file del flusso di lavoro** da [examples/claude.yml](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml) nella cartella `.github/workflows/` del tuo repository

66 

67<Tip>

68 Dopo aver completato la configurazione rapida o manuale, testa l'action taggando `@claude` in un commento di issue o PR.

69</Tip>

70 

71## Aggiornamento dalla versione Beta

72 

73<Warning>

74 Claude Code GitHub Actions v1.0 introduce breaking changes che richiedono l'aggiornamento dei tuoi file di flusso di lavoro per eseguire l'upgrade a v1.0 dalla versione beta.

75</Warning>

76 

77Se stai attualmente utilizzando la versione beta di Claude Code GitHub Actions, ti consigliamo di aggiornare i tuoi flussi di lavoro per utilizzare la versione GA. La nuova versione semplifica la configurazione aggiungendo potenti nuove funzionalità come il rilevamento automatico della modalità.

78 

79### Cambiamenti essenziali

80 

81Tutti gli utenti beta devono apportare questi cambiamenti ai loro file di flusso di lavoro per eseguire l'upgrade:

82 

831. **Aggiorna la versione dell'action**: Cambia `@beta` a `@v1`

842. **Rimuovi la configurazione della modalità**: Elimina `mode: "tag"` o `mode: "agent"` (ora rilevata automaticamente)

853. **Aggiorna gli input del prompt**: Sostituisci `direct_prompt` con `prompt`

864. **Sposta le opzioni CLI**: Converti `max_turns`, `model`, `custom_instructions`, ecc. in `claude_args`

87 

88### Breaking Changes Reference

89 

90| Old Beta Input | New v1.0 Input |

91| --------------------- | ------------------------------------- |

92| `mode` | *(Removed - auto-detected)* |

93| `direct_prompt` | `prompt` |

94| `override_prompt` | `prompt` with GitHub variables |

95| `custom_instructions` | `claude_args: --append-system-prompt` |

96| `max_turns` | `claude_args: --max-turns` |

97| `model` | `claude_args: --model` |

98| `allowed_tools` | `claude_args: --allowedTools` |

99| `disallowed_tools` | `claude_args: --disallowedTools` |

100| `claude_env` | `settings` JSON format |

101 

102### Esempio Prima e Dopo

103 

104**Versione beta:**

105 

106```yaml theme={null}

107- uses: anthropics/claude-code-action@beta

108 with:

109 mode: "tag"

110 direct_prompt: "Review this PR for security issues"

111 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

112 custom_instructions: "Follow our coding standards"

113 max_turns: "10"

114 model: "claude-sonnet-4-6"

115```

116 

117**Versione GA (v1.0):**

118 

119```yaml theme={null}

120- uses: anthropics/claude-code-action@v1

121 with:

122 prompt: "Review this PR for security issues"

123 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

124 claude_args: |

125 --append-system-prompt "Follow our coding standards"

126 --max-turns 10

127 --model claude-sonnet-4-6

128```

129 

130<Tip>

131 L'action ora rileva automaticamente se eseguire in modalità interattiva (risponde alle menzioni `@claude`) o in modalità automazione (viene eseguita immediatamente con un prompt) in base alla tua configurazione.

132</Tip>

133 

134## Esempi di casi d'uso

135 

136Claude Code GitHub Actions può aiutarti con una varietà di attività. La [directory degli esempi](https://github.com/anthropics/claude-code-action/tree/main/examples) contiene flussi di lavoro pronti all'uso per diversi scenari.

137 

138### Flusso di lavoro di base

139 

140```yaml theme={null}

141name: Claude Code

142on:

143 issue_comment:

144 types: [created]

145 pull_request_review_comment:

146 types: [created]

147jobs:

148 claude:

149 runs-on: ubuntu-latest

150 steps:

151 - uses: anthropics/claude-code-action@v1

152 with:

153 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

154 # Responds to @claude mentions in comments

155```

156 

157### Utilizzo di skills

158 

159```yaml theme={null}

160name: Code Review

161on:

162 pull_request:

163 types: [opened, synchronize]

164jobs:

165 review:

166 runs-on: ubuntu-latest

167 steps:

168 - uses: anthropics/claude-code-action@v1

169 with:

170 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

171 prompt: "Review this pull request for code quality, correctness, and security. Analyze the diff, then post your findings as review comments."

172 claude_args: "--max-turns 5"

173```

174 

175### Automazione personalizzata con prompt

176 

177```yaml theme={null}

178name: Daily Report

179on:

180 schedule:

181 - cron: "0 9 * * *"

182jobs:

183 report:

184 runs-on: ubuntu-latest

185 steps:

186 - uses: anthropics/claude-code-action@v1

187 with:

188 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

189 prompt: "Generate a summary of yesterday's commits and open issues"

190 claude_args: "--model opus"

191```

192 

193### Casi d'uso comuni

194 

195Nei commenti di issue o PR:

196 

197```text theme={null}

198@claude implement this feature based on the issue description

199@claude how should I implement user authentication for this endpoint?

200@claude fix the TypeError in the user dashboard component

201```

202 

203Claude analizzerà automaticamente il contesto e risponderà in modo appropriato.

204 

205## Best practices

206 

207### Configurazione CLAUDE.md

208 

209Crea un file `CLAUDE.md` nella radice del tuo repository per definire le linee guida dello stile di codice, i criteri di revisione, le regole specifiche del progetto e i pattern preferiti. Questo file guida la comprensione di Claude degli standard del tuo progetto.

210 

211### Considerazioni sulla sicurezza

212 

213<Warning>Non eseguire mai il commit delle chiavi API direttamente nel tuo repository.</Warning>

214 

215Per una guida completa sulla sicurezza inclusa autorizzazioni, autenticazione e best practices, vedi la [documentazione sulla sicurezza di Claude Code Action](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md).

216 

217Utilizza sempre GitHub Secrets per le chiavi API:

218 

219* Aggiungi la tua chiave API come secret del repository denominato `ANTHROPIC_API_KEY`

220* Fai riferimento ad essa nei flussi di lavoro: `anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}`

221* Limita le autorizzazioni dell'action solo a ciò che è necessario

222* Rivedi i suggerimenti di Claude prima di eseguire il merge

223 

224Utilizza sempre GitHub Secrets (ad esempio, `${{ secrets.ANTHROPIC_API_KEY }}`) piuttosto che hardcodare le chiavi API direttamente nei tuoi file di flusso di lavoro.

225 

226### Ottimizzazione delle prestazioni

227 

228Utilizza i template di issue per fornire contesto, mantieni il tuo `CLAUDE.md` conciso e focalizzato, e configura timeout appropriati per i tuoi flussi di lavoro.

229 

230### Costi CI

231 

232Quando utilizzi Claude Code GitHub Actions, tieni presente i costi associati:

233 

234**Costi di GitHub Actions:**

235 

236* Claude Code viene eseguito su runner ospitati da GitHub, che consumano i tuoi minuti di GitHub Actions

237* Vedi la [documentazione sulla fatturazione di GitHub](https://docs.github.com/en/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions) per i dettagli sui prezzi e i limiti di minuti

238 

239**Costi API:**

240 

241* Ogni interazione di Claude consuma token API in base alla lunghezza dei prompt e delle risposte

242* L'utilizzo dei token varia in base alla complessità dell'attività e alla dimensione della codebase

243* Vedi la [pagina dei prezzi di Claude](https://claude.com/platform/api) per i tassi di token attuali

244 

245**Suggerimenti per l'ottimizzazione dei costi:**

246 

247* Utilizza comandi specifici `@claude` per ridurre le chiamate API non necessarie

248* Configura `--max-turns` appropriato in `claude_args` per prevenire iterazioni eccessive

249* Imposta timeout a livello di flusso di lavoro per evitare job fuori controllo

250* Considera l'utilizzo dei controlli di concorrenza di GitHub per limitare le esecuzioni parallele

251 

252## Esempi di configurazione

253 

254Claude Code Action v1 semplifica la configurazione con parametri unificati:

255 

256```yaml theme={null}

257- uses: anthropics/claude-code-action@v1

258 with:

259 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

260 prompt: "Your instructions here" # Optional

261 claude_args: "--max-turns 5" # Optional CLI arguments

262```

263 

264Caratteristiche principali:

265 

266* **Interfaccia prompt unificata** - Utilizza `prompt` per tutte le istruzioni

267* **Skills** - Richiama [skills](/it/skills) installate direttamente dal prompt

268* **Passthrough CLI** - Qualsiasi argomento CLI di Claude Code tramite `claude_args`

269* **Trigger flessibili** - Funziona con qualsiasi evento GitHub

270 

271Visita la [directory degli esempi](https://github.com/anthropics/claude-code-action/tree/main/examples) per i file di flusso di lavoro completi.

272 

273<Tip>

274 Quando rispondi ai commenti di issue o PR, Claude risponde automaticamente alle menzioni @claude. Per altri eventi, utilizza il parametro `prompt` per fornire istruzioni.

275</Tip>

276 

277## Utilizzo con Amazon Bedrock e Google Vertex AI

278 

279Per ambienti aziendali, puoi utilizzare Claude Code GitHub Actions con la tua infrastruttura cloud. Questo approccio ti dà il controllo sulla residenza dei dati e sulla fatturazione mantenendo la stessa funzionalità.

280 

281### Prerequisiti

282 

283Prima di configurare Claude Code GitHub Actions con i provider cloud, hai bisogno di:

284 

285#### Per Google Cloud Vertex AI:

286 

2871. Un progetto Google Cloud con Vertex AI abilitato

2882. Workload Identity Federation configurato per GitHub Actions

2893. Un account di servizio con le autorizzazioni richieste

2904. Un'app GitHub (consigliato) o utilizza il GITHUB\_TOKEN predefinito

291 

292#### Per Amazon Bedrock:

293 

2941. Un account AWS con Amazon Bedrock abilitato

2952. GitHub OIDC Identity Provider configurato in AWS

2963. Un ruolo IAM con autorizzazioni Bedrock

2974. Un'app GitHub (consigliato) o utilizza il GITHUB\_TOKEN predefinito

298 

299<Steps>

300 <Step title="Crea un'app GitHub personalizzata (Consigliato per provider di terze parti)">

301 Per il miglior controllo e sicurezza quando utilizzi provider di terze parti come Vertex AI o Bedrock, ti consigliamo di creare la tua app GitHub:

302 

303 1. Vai a [https://github.com/settings/apps/new](https://github.com/settings/apps/new)

304 2. Compila le informazioni di base:

305 * **GitHub App name**: Scegli un nome univoco (ad es. "YourOrg Claude Assistant")

306 * **Homepage URL**: Il sito web della tua organizzazione o l'URL del repository

307 3. Configura le impostazioni dell'app:

308 * **Webhooks**: Deseleziona "Active" (non necessario per questa integrazione)

309 4. Imposta le autorizzazioni richieste:

310 * **Repository permissions**:

311 * Contents: Read & Write

312 * Issues: Read & Write

313 * Pull requests: Read & Write

314 5. Fai clic su "Create GitHub App"

315 6. Dopo la creazione, fai clic su "Generate a private key" e salva il file `.pem` scaricato

316 7. Annota il tuo App ID dalla pagina delle impostazioni dell'app

317 8. Installa l'app nel tuo repository:

318 * Dalla pagina delle impostazioni della tua app, fai clic su "Install App" nella barra laterale sinistra

319 * Seleziona il tuo account o organizzazione

320 * Scegli "Only select repositories" e seleziona il repository specifico

321 * Fai clic su "Install"

322 9. Aggiungi la chiave privata come secret al tuo repository:

323 * Vai a Settings → Secrets and variables → Actions del tuo repository

324 * Crea un nuovo secret denominato `APP_PRIVATE_KEY` con il contenuto del file `.pem`

325 10. Aggiungi l'App ID come secret:

326 

327 * Crea un nuovo secret denominato `APP_ID` con l'ID della tua app GitHub

328 

329 <Note>

330 Questa app verrà utilizzata con l'action [actions/create-github-app-token](https://github.com/actions/create-github-app-token) per generare token di autenticazione nei tuoi flussi di lavoro.

331 </Note>

332 

333 **Alternativa per Claude API o se non vuoi configurare la tua app Github**: Utilizza l'app ufficiale di Anthropic:

334 

335 1. Installa da: [https://github.com/apps/claude](https://github.com/apps/claude)

336 2. Nessuna configurazione aggiuntiva necessaria per l'autenticazione

337 </Step>

338 

339 <Step title="Configura l'autenticazione del provider cloud">

340 Scegli il tuo provider cloud e configura l'autenticazione sicura:

341 

342 <AccordionGroup>

343 <Accordion title="Amazon Bedrock">

344 **Configura AWS per consentire a GitHub Actions di autenticarsi in modo sicuro senza archiviare le credenziali.**

345 

346 > **Security Note**: Utilizza configurazioni specifiche del repository e concedi solo le autorizzazioni minime richieste.

347 

348 **Required Setup**:

349 

350 1. **Enable Amazon Bedrock**:

351 * Richiedi l'accesso ai modelli Claude in Amazon Bedrock

352 * Per i modelli tra regioni, richiedi l'accesso in tutte le regioni richieste

353 

354 2. **Set up GitHub OIDC Identity Provider**:

355 * Provider URL: `https://token.actions.githubusercontent.com`

356 * Audience: `sts.amazonaws.com`

357 

358 3. **Create IAM Role for GitHub Actions**:

359 * Trusted entity type: Web identity

360 * Identity provider: `token.actions.githubusercontent.com`

361 * Permissions: `AmazonBedrockFullAccess` policy

362 * Configure trust policy for your specific repository

363 

364 **Required Values**:

365 

366 Dopo la configurazione, avrai bisogno di:

367 

368 * **AWS\_ROLE\_TO\_ASSUME**: L'ARN del ruolo IAM che hai creato

369 

370 <Tip>

371 OIDC è più sicuro rispetto all'utilizzo di chiavi di accesso AWS statiche perché le credenziali sono temporanee e ruotate automaticamente.

372 </Tip>

373 

374 Vedi la [documentazione AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html) per le istruzioni dettagliate sulla configurazione di OIDC.

375 </Accordion>

376 

377 <Accordion title="Google Vertex AI">

378 **Configura Google Cloud per consentire a GitHub Actions di autenticarsi in modo sicuro senza archiviare le credenziali.**

379 

380 > **Security Note**: Utilizza configurazioni specifiche del repository e concedi solo le autorizzazioni minime richieste.

381 

382 **Required Setup**:

383 

384 1. **Enable APIs** nel tuo progetto Google Cloud:

385 * IAM Credentials API

386 * Security Token Service (STS) API

387 * Vertex AI API

388 

389 2. **Create Workload Identity Federation resources**:

390 * Crea un Workload Identity Pool

391 * Aggiungi un provider OIDC GitHub con:

392 * Issuer: `https://token.actions.githubusercontent.com`

393 * Attribute mappings for repository and owner

394 * **Security recommendation**: Utilizza condizioni di attributo specifiche del repository

395 

396 3. **Create a Service Account**:

397 * Concedi solo il ruolo `Vertex AI User`

398 * **Security recommendation**: Crea un account di servizio dedicato per repository

399 

400 4. **Configure IAM bindings**:

401 * Consenti al Workload Identity Pool di rappresentare l'account di servizio

402 * **Security recommendation**: Utilizza set di principali specifici del repository

403 

404 **Required Values**:

405 

406 Dopo la configurazione, avrai bisogno di:

407 

408 * **GCP\_WORKLOAD\_IDENTITY\_PROVIDER**: Il nome completo della risorsa provider

409 * **GCP\_SERVICE\_ACCOUNT**: L'indirizzo email dell'account di servizio

410 

411 <Tip>

412 Workload Identity Federation elimina la necessità di chiavi di account di servizio scaricabili, migliorando la sicurezza.

413 </Tip>

414 

415 Per le istruzioni di configurazione dettagliate, consulta la [documentazione di Google Cloud Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation).

416 </Accordion>

417 </AccordionGroup>

418 </Step>

419 

420 <Step title="Aggiungi Secret Richiesti">

421 Aggiungi i seguenti secret al tuo repository (Settings → Secrets and variables → Actions):

422 

423 #### Per Claude API (Direct):

424 

425 1. **Per l'autenticazione API**:

426 * `ANTHROPIC_API_KEY`: La tua chiave API Claude da [console.anthropic.com](https://console.anthropic.com)

427 

428 2. **Per GitHub App (se utilizzi la tua app)**:

429 * `APP_ID`: L'ID della tua app GitHub

430 * `APP_PRIVATE_KEY`: Il contenuto della chiave privata (.pem)

431 

432 #### Per Google Cloud Vertex AI

433 

434 1. **Per l'autenticazione GCP**:

435 * `GCP_WORKLOAD_IDENTITY_PROVIDER`

436 * `GCP_SERVICE_ACCOUNT`

437 

438 2. **Per GitHub App (se utilizzi la tua app)**:

439 * `APP_ID`: L'ID della tua app GitHub

440 * `APP_PRIVATE_KEY`: Il contenuto della chiave privata (.pem)

441 

442 #### Per AWS Bedrock

443 

444 1. **Per l'autenticazione AWS**:

445 * `AWS_ROLE_TO_ASSUME`

446 

447 2. **Per GitHub App (se utilizzi la tua app)**:

448 * `APP_ID`: L'ID della tua app GitHub

449 * `APP_PRIVATE_KEY`: Il contenuto della chiave privata (.pem)

450 </Step>

451 

452 <Step title="Crea file di flusso di lavoro">

453 Crea file di flusso di lavoro GitHub Actions che si integrano con il tuo provider cloud. Gli esempi seguenti mostrano configurazioni complete sia per Amazon Bedrock che per Google Vertex AI:

454 

455 <AccordionGroup>

456 <Accordion title="Amazon Bedrock workflow">

457 **Prerequisites:**

458 

459 * Amazon Bedrock access enabled with Claude model permissions

460 * GitHub configured as an OIDC identity provider in AWS

461 * IAM role with Bedrock permissions that trusts GitHub Actions

462 

463 **Required GitHub secrets:**

464 

465 | Secret Name | Description |

466 | -------------------- | ------------------------------------------------- |

467 | `AWS_ROLE_TO_ASSUME` | ARN of the IAM role for Bedrock access |

468 | `APP_ID` | Your GitHub App ID (from app settings) |

469 | `APP_PRIVATE_KEY` | The private key you generated for your GitHub App |

470 

471 ```yaml theme={null}

472 name: Claude PR Action

473 

474 permissions:

475 contents: write

476 pull-requests: write

477 issues: write

478 id-token: write

479 

480 on:

481 issue_comment:

482 types: [created]

483 pull_request_review_comment:

484 types: [created]

485 issues:

486 types: [opened, assigned]

487 

488 jobs:

489 claude-pr:

490 if: |

491 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

492 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

493 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))

494 runs-on: ubuntu-latest

495 env:

496 AWS_REGION: us-west-2

497 steps:

498 - name: Checkout repository

499 uses: actions/checkout@v4

500 

501 - name: Generate GitHub App token

502 id: app-token

503 uses: actions/create-github-app-token@v2

504 with:

505 app-id: ${{ secrets.APP_ID }}

506 private-key: ${{ secrets.APP_PRIVATE_KEY }}

507 

508 - name: Configure AWS Credentials (OIDC)

509 uses: aws-actions/configure-aws-credentials@v4

510 with:

511 role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}

512 aws-region: us-west-2

513 

514 - uses: anthropics/claude-code-action@v1

515 with:

516 github_token: ${{ steps.app-token.outputs.token }}

517 use_bedrock: "true"

518 claude_args: '--model us.anthropic.claude-sonnet-4-6 --max-turns 10'

519 ```

520 

521 <Tip>

522 Il formato dell'ID del modello per Bedrock include un prefisso di regione (ad esempio, `us.anthropic.claude-sonnet-4-6`).

523 </Tip>

524 </Accordion>

525 

526 <Accordion title="Google Vertex AI workflow">

527 **Prerequisites:**

528 

529 * Vertex AI API enabled in your GCP project

530 * Workload Identity Federation configured for GitHub

531 * Service account with Vertex AI permissions

532 

533 **Required GitHub secrets:**

534 

535 | Secret Name | Description |

536 | -------------------------------- | ------------------------------------------------- |

537 | `GCP_WORKLOAD_IDENTITY_PROVIDER` | Workload identity provider resource name |

538 | `GCP_SERVICE_ACCOUNT` | Service account email with Vertex AI access |

539 | `APP_ID` | Your GitHub App ID (from app settings) |

540 | `APP_PRIVATE_KEY` | The private key you generated for your GitHub App |

541 

542 ```yaml theme={null}

543 name: Claude PR Action

544 

545 permissions:

546 contents: write

547 pull-requests: write

548 issues: write

549 id-token: write

550 

551 on:

552 issue_comment:

553 types: [created]

554 pull_request_review_comment:

555 types: [created]

556 issues:

557 types: [opened, assigned]

558 

559 jobs:

560 claude-pr:

561 if: |

562 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

563 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

564 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))

565 runs-on: ubuntu-latest

566 steps:

567 - name: Checkout repository

568 uses: actions/checkout@v4

569 

570 - name: Generate GitHub App token

571 id: app-token

572 uses: actions/create-github-app-token@v2

573 with:

574 app-id: ${{ secrets.APP_ID }}

575 private-key: ${{ secrets.APP_PRIVATE_KEY }}

576 

577 - name: Authenticate to Google Cloud

578 id: auth

579 uses: google-github-actions/auth@v2

580 with:

581 workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}

582 service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}

583 

584 - uses: anthropics/claude-code-action@v1

585 with:

586 github_token: ${{ steps.app-token.outputs.token }}

587 trigger_phrase: "@claude"

588 use_vertex: "true"

589 claude_args: '--model claude-sonnet-4-5@20250929 --max-turns 10'

590 env:

591 ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}

592 CLOUD_ML_REGION: us-east5

593 VERTEX_REGION_CLAUDE_4_5_SONNET: us-east5

594 ```

595 

596 <Tip>

597 L'ID del progetto viene recuperato automaticamente dal passaggio di autenticazione di Google Cloud, quindi non è necessario codificarlo.

598 </Tip>

599 </Accordion>

600 </AccordionGroup>

601 </Step>

602</Steps>

603 

604## Troubleshooting

605 

606### Claude non risponde ai comandi @claude

607 

608Verifica che l'app GitHub sia installata correttamente, controlla che i flussi di lavoro siano abilitati, assicurati che la chiave API sia impostata nei secret del repository e conferma che il commento contenga `@claude` (non `/claude`).

609 

610### CI non in esecuzione sui commit di Claude

611 

612Assicurati di utilizzare l'app GitHub o l'app personalizzata (non l'utente Actions), controlla che i trigger del flusso di lavoro includano gli eventi necessari e verifica che le autorizzazioni dell'app includano i trigger CI.

613 

614### Errori di autenticazione

615 

616Conferma che la chiave API sia valida e abbia autorizzazioni sufficienti. Per Bedrock/Vertex, controlla la configurazione delle credenziali e assicurati che i secret siano denominati correttamente nei flussi di lavoro.

617 

618## Configurazione avanzata

619 

620### Parametri dell'action

621 

622Claude Code Action v1 utilizza una configurazione semplificata:

623 

624| Parameter | Description | Required |

625| ------------------- | ----------------------------------------------------------------------- | -------- |

626| `prompt` | Istruzioni per Claude (testo semplice o un nome di [skill](/it/skills)) | No\* |

627| `claude_args` | Argomenti CLI passati a Claude Code | No |

628| `anthropic_api_key` | Chiave API Claude | Yes\*\* |

629| `github_token` | Token GitHub per l'accesso API | No |

630| `trigger_phrase` | Frase trigger personalizzata (predefinito: "@claude") | No |

631| `use_bedrock` | Utilizza Amazon Bedrock invece dell'API Claude | No |

632| `use_vertex` | Utilizza Google Vertex AI invece dell'API Claude | No |

633 

634\*Prompt è opzionale - quando omesso per i commenti di issue/PR, Claude risponde alla frase trigger\

635\*\*Richiesto per l'API Claude diretta, non per Bedrock/Vertex

636 

637#### Passa argomenti CLI

638 

639Il parametro `claude_args` accetta qualsiasi argomento CLI di Claude Code:

640 

641```yaml theme={null}

642claude_args: "--max-turns 5 --model claude-sonnet-4-6 --mcp-config /path/to/config.json"

643```

644 

645Argomenti comuni:

646 

647* `--max-turns`: Numero massimo di turni di conversazione (predefinito: 10)

648* `--model`: Modello da utilizzare (ad es. `claude-sonnet-4-6`)

649* `--mcp-config`: Percorso della configurazione MCP

650* `--allowedTools`: Elenco separato da virgole degli strumenti consentiti. L'alias `--allowed-tools` funziona anche.

651* `--debug`: Abilita l'output di debug

652 

653### Metodi di integrazione alternativi

654 

655Mentre il comando `/install-github-app` è l'approccio consigliato, puoi anche:

656 

657* **Custom GitHub App**: Per le organizzazioni che necessitano di nomi utente personalizzati o flussi di autenticazione personalizzati. Crea la tua app GitHub con le autorizzazioni richieste (contents, issues, pull requests) e utilizza l'action actions/create-github-app-token per generare token nei tuoi flussi di lavoro.

658* **Manual GitHub Actions**: Configurazione diretta del flusso di lavoro per la massima flessibilità

659* **MCP Configuration**: Caricamento dinamico dei server Model Context Protocol

660 

661Vedi la [documentazione di Claude Code Action](https://github.com/anthropics/claude-code-action/blob/main/docs) per guide dettagliate su autenticazione, sicurezza e configurazione avanzata.

662 

663### Personalizzazione del comportamento di Claude

664 

665Puoi configurare il comportamento di Claude in due modi:

666 

6671. **CLAUDE.md**: Definisci gli standard di codifica, i criteri di revisione e le regole specifiche del progetto in un file `CLAUDE.md` nella radice del tuo repository. Claude seguirà queste linee guida quando crea PR e risponde alle richieste. Consulta la nostra [documentazione Memory](/it/memory) per ulteriori dettagli.

6682. **Custom prompts**: Utilizza il parametro `prompt` nel file del flusso di lavoro per fornire istruzioni specifiche del flusso di lavoro. Questo ti consente di personalizzare il comportamento di Claude per diversi flussi di lavoro o attività.

669 

670Claude seguirà queste linee guida quando crea PR e risponde alle richieste.

gitlab-ci-cd.md +466 −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# Claude Code GitLab CI/CD

6 

7> Scopri come integrare Claude Code nel tuo flusso di lavoro di sviluppo con GitLab CI/CD

8 

9<Info>

10 Claude Code per GitLab CI/CD è attualmente in beta. Le funzionalità e la funzionalità possono evolversi mentre perfezzioniamo l'esperienza.

11 

12 Questa integrazione è mantenuta da GitLab. Per il supporto, consultare il seguente [problema GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/573776).

13</Info>

14 

15<Note>

16 Questa integrazione è costruita sulla base di [Claude Code CLI e Agent SDK](/it/agent-sdk/overview), consentendo l'uso programmatico di Claude nei vostri lavori CI/CD e flussi di lavoro di automazione personalizzati.

17</Note>

18 

19## Perché utilizzare Claude Code con GitLab?

20 

21* **Creazione istantanea di MR**: Descrivete ciò di cui avete bisogno e Claude propone un MR completo con modifiche e spiegazione

22* **Implementazione automatizzata**: Trasformate i problemi in codice funzionante con un singolo comando o menzione

23* **Consapevole del progetto**: Claude segue le vostre linee guida `CLAUDE.md` e i modelli di codice esistenti

24* **Configurazione semplice**: Aggiungete un lavoro a `.gitlab-ci.yml` e una variabile CI/CD mascherata

25* **Pronto per l'azienda**: Scegliete Claude API, Amazon Bedrock o Google Vertex AI per soddisfare le esigenze di residenza dei dati e approvvigionamento

26* **Sicuro per impostazione predefinita**: Viene eseguito nei vostri runner GitLab con la vostra protezione dei rami e approvazioni

27 

28## Come funziona

29 

30Claude Code utilizza GitLab CI/CD per eseguire attività di intelligenza artificiale in lavori isolati e eseguire il commit dei risultati tramite MR:

31 

321. **Orchestrazione basata su eventi**: GitLab ascolta i trigger scelti (ad esempio, un commento che menziona `@claude` in un problema, MR o thread di revisione). Il lavoro raccoglie il contesto dal thread e dal repository, costruisce prompt da tale input ed esegue Claude Code.

33 

342. **Astrazione del provider**: Utilizzate il provider che si adatta al vostro ambiente:

35 * Claude API (SaaS)

36 * Amazon Bedrock (accesso basato su IAM, opzioni multi-regione)

37 * Google Vertex AI (nativo GCP, Workload Identity Federation)

38 

393. **Esecuzione in sandbox**: Ogni interazione viene eseguita in un contenitore con regole rigorose di rete e filesystem. Claude Code applica autorizzazioni con ambito workspace per limitare le scritture. Ogni modifica passa attraverso un MR in modo che i revisori vedano il diff e le approvazioni si applichino ancora.

40 

41Scegliete endpoint regionali per ridurre la latenza e soddisfare i requisiti di sovranità dei dati mentre utilizzate gli accordi cloud esistenti.

42 

43## Cosa può fare Claude?

44 

45Claude Code abilita potenti flussi di lavoro CI/CD che trasformano il modo in cui lavorate con il codice:

46 

47* Creare e aggiornare MR da descrizioni di problemi o commenti

48* Analizzare regressioni di prestazioni e proporre ottimizzazioni

49* Implementare funzionalità direttamente in un ramo, quindi aprire un MR

50* Correggere bug e regressioni identificati da test o commenti

51* Rispondere ai commenti di follow-up per iterare sulle modifiche richieste

52 

53## Configurazione

54 

55### Configurazione rapida

56 

57Il modo più veloce per iniziare è aggiungere un lavoro minimo al vostro `.gitlab-ci.yml` e impostare la vostra chiave API come variabile mascherata.

58 

591. **Aggiungere una variabile CI/CD mascherata**

60 * Andate a **Impostazioni** → **CI/CD** → **Variabili**

61 * Aggiungete `ANTHROPIC_API_KEY` (mascherata, protetta secondo necessità)

62 

632. **Aggiungere un lavoro Claude a `.gitlab-ci.yml`**

64 

65```yaml theme={null}

66stages:

67 - ai

68 

69claude:

70 stage: ai

71 image: node:24-alpine3.21

72 # Regolate le regole per adattarsi a come desiderate attivare il lavoro:

73 # - esecuzioni manuali

74 # - eventi di merge request

75 # - trigger web/API quando un commento contiene '@claude'

76 rules:

77 - if: '$CI_PIPELINE_SOURCE == "web"'

78 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

79 variables:

80 GIT_STRATEGY: fetch

81 before_script:

82 - apk update

83 - apk add --no-cache git curl bash

84 - curl -fsSL https://claude.ai/install.sh | bash

85 script:

86 # Facoltativo: avviare un server GitLab MCP se la vostra configurazione lo fornisce

87 - /bin/gitlab-mcp-server || true

88 # Utilizzate le variabili AI_FLOW_* quando richiamate tramite trigger web/API con payload di contesto

89 - echo "$AI_FLOW_INPUT for $AI_FLOW_CONTEXT on $AI_FLOW_EVENT"

90 - >

91 claude

92 -p "${AI_FLOW_INPUT:-'Review this MR and implement the requested changes'}"

93 --permission-mode acceptEdits

94 --allowedTools "Bash Read Edit Write mcp__gitlab"

95 --debug

96```

97 

98Dopo aver aggiunto il lavoro e la vostra variabile `ANTHROPIC_API_KEY`, testate eseguendo il lavoro manualmente da **CI/CD** → **Pipeline**, oppure attivate da un MR per consentire a Claude di proporre aggiornamenti in un ramo e aprire un MR se necessario.

99 

100<Note>

101 Per eseguire su Amazon Bedrock o Google Vertex AI invece dell'API Claude, consultate la sezione [Utilizzo con Amazon Bedrock e Google Vertex AI](#utilizzo-con-amazon-bedrock--google-vertex-ai) di seguito per la configurazione dell'autenticazione e dell'ambiente.

102</Note>

103 

104### Configurazione manuale (consigliata per la produzione)

105 

106Se preferite una configurazione più controllata o avete bisogno di provider aziendali:

107 

1081. **Configurare l'accesso al provider**:

109 * **Claude API**: Creare e archiviare `ANTHROPIC_API_KEY` come variabile CI/CD mascherata

110 * **Amazon Bedrock**: **Configurare GitLab** → **AWS OIDC** e creare un ruolo IAM per Bedrock

111 * **Google Vertex AI**: **Configurare Workload Identity Federation per GitLab** → **GCP**

112 

1132. **Aggiungere credenziali di progetto per le operazioni dell'API GitLab**:

114 * Utilizzate `CI_JOB_TOKEN` per impostazione predefinita, oppure create un Project Access Token con ambito `api`

115 * Archiviate come `GITLAB_ACCESS_TOKEN` (mascherato) se utilizzate un PAT

116 

1173. **Aggiungere il lavoro Claude a `.gitlab-ci.yml`** (vedere gli esempi di seguito)

118 

1194. **(Facoltativo) Abilitare trigger basati su menzioni**:

120 * Aggiungere un webhook di progetto per "Commenti (note)" al vostro listener di eventi (se ne utilizzate uno)

121 * Fare in modo che il listener chiami l'API di attivazione della pipeline con variabili come `AI_FLOW_INPUT` e `AI_FLOW_CONTEXT` quando un commento contiene `@claude`

122 

123## Esempi di casi d'uso

124 

125### Trasformare i problemi in MR

126 

127In un commento di problema:

128 

129```text theme={null}

130@claude implement this feature based on the issue description

131```

132 

133Claude analizza il problema e la base di codice, scrive le modifiche in un ramo e apre un MR per la revisione.

134 

135### Ottenere aiuto nell'implementazione

136 

137In una discussione MR:

138 

139```text theme={null}

140@claude suggest a concrete approach to cache the results of this API call

141```

142 

143Claude propone modifiche, aggiunge codice con caching appropriato e aggiorna il MR.

144 

145### Correggere i bug rapidamente

146 

147In un commento di problema o MR:

148 

149```text theme={null}

150@claude fix the TypeError in the user dashboard component

151```

152 

153Claude individua il bug, implementa una correzione e aggiorna il ramo o apre un nuovo MR.

154 

155## Utilizzo con Amazon Bedrock e Google Vertex AI

156 

157Per ambienti aziendali, potete eseguire Claude Code interamente sulla vostra infrastruttura cloud con la stessa esperienza per gli sviluppatori.

158 

159<Tabs>

160 <Tab title="Amazon Bedrock">

161 ### Prerequisiti

162 

163 Prima di configurare Claude Code con Amazon Bedrock, avete bisogno di:

164 

165 1. Un account AWS con accesso ad Amazon Bedrock ai modelli Claude desiderati

166 2. GitLab configurato come provider di identità OIDC in AWS IAM

167 3. Un ruolo IAM con autorizzazioni Bedrock e una politica di trust limitata al vostro progetto/rami GitLab

168 4. Variabili CI/CD GitLab per l'assunzione del ruolo:

169 * `AWS_ROLE_TO_ASSUME` (ARN del ruolo)

170 * `AWS_REGION` (regione Bedrock)

171 

172 ### Istruzioni di configurazione

173 

174 Configurate AWS per consentire ai lavori CI di GitLab di assumere un ruolo IAM tramite OIDC (nessuna chiave statica).

175 

176 **Configurazione richiesta:**

177 

178 1. Abilitare Amazon Bedrock e richiedere l'accesso ai vostri modelli Claude target

179 2. Creare un provider OIDC IAM per GitLab se non già presente

180 3. Creare un ruolo IAM attendibile dal provider OIDC di GitLab, limitato al vostro progetto e rami protetti

181 4. Allegare autorizzazioni con privilegi minimi per le API di invocazione Bedrock

182 

183 **Valori richiesti da archiviare nelle variabili CI/CD:**

184 

185 * `AWS_ROLE_TO_ASSUME`

186 * `AWS_REGION`

187 

188 Aggiungete le variabili in Impostazioni → CI/CD → Variabili:

189 

190 ```yaml theme={null}

191 # Per Amazon Bedrock:

192 - AWS_ROLE_TO_ASSUME

193 - AWS_REGION

194 ```

195 

196 Utilizzate l'esempio di lavoro Amazon Bedrock sopra per scambiare il token di lavoro GitLab con credenziali AWS temporanee in fase di esecuzione.

197 </Tab>

198 

199 <Tab title="Google Vertex AI">

200 ### Prerequisiti

201 

202 Prima di configurare Claude Code con Google Vertex AI, avete bisogno di:

203 

204 1. Un progetto Google Cloud con:

205 * API Vertex AI abilitata

206 * Workload Identity Federation configurata per attendere OIDC di GitLab

207 2. Un account di servizio dedicato con solo i ruoli Vertex AI richiesti

208 3. Variabili CI/CD GitLab per WIF:

209 * `GCP_WORKLOAD_IDENTITY_PROVIDER` (nome completo della risorsa)

210 * `GCP_SERVICE_ACCOUNT` (email dell'account di servizio)

211 

212 ### Istruzioni di configurazione

213 

214 Configurate Google Cloud per consentire ai lavori CI di GitLab di rappresentare un account di servizio tramite Workload Identity Federation.

215 

216 **Configurazione richiesta:**

217 

218 1. Abilitare API IAM Credentials, STS API e Vertex AI API

219 2. Creare un Workload Identity Pool e un provider per OIDC di GitLab

220 3. Creare un account di servizio dedicato con ruoli Vertex AI

221 4. Concedere al principale WIF l'autorizzazione per rappresentare l'account di servizio

222 

223 **Valori richiesti da archiviare nelle variabili CI/CD:**

224 

225 * `GCP_WORKLOAD_IDENTITY_PROVIDER`

226 * `GCP_SERVICE_ACCOUNT`

227 

228 Aggiungete le variabili in Impostazioni → CI/CD → Variabili:

229 

230 ```yaml theme={null}

231 # Per Google Vertex AI:

232 - GCP_WORKLOAD_IDENTITY_PROVIDER

233 - GCP_SERVICE_ACCOUNT

234 - CLOUD_ML_REGION (ad esempio, us-east5)

235 ```

236 

237 Utilizzate l'esempio di lavoro Google Vertex AI sopra per autenticarvi senza archiviare le chiavi.

238 </Tab>

239</Tabs>

240 

241## Esempi di configurazione

242 

243Di seguito sono riportati frammenti pronti all'uso che potete adattare alla vostra pipeline.

244 

245### .gitlab-ci.yml di base (Claude API)

246 

247```yaml theme={null}

248stages:

249 - ai

250 

251claude:

252 stage: ai

253 image: node:24-alpine3.21

254 rules:

255 - if: '$CI_PIPELINE_SOURCE == "web"'

256 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

257 variables:

258 GIT_STRATEGY: fetch

259 before_script:

260 - apk update

261 - apk add --no-cache git curl bash

262 - curl -fsSL https://claude.ai/install.sh | bash

263 script:

264 - /bin/gitlab-mcp-server || true

265 - >

266 claude

267 -p "${AI_FLOW_INPUT:-'Summarize recent changes and suggest improvements'}"

268 --permission-mode acceptEdits

269 --allowedTools "Bash Read Edit Write mcp__gitlab"

270 --debug

271 # Claude Code utilizzerà ANTHROPIC_API_KEY dalle variabili CI/CD

272```

273 

274### Esempio di lavoro Amazon Bedrock (OIDC)

275 

276**Prerequisiti:**

277 

278* Amazon Bedrock abilitato con accesso ai vostri modelli Claude scelti

279* OIDC di GitLab configurato in AWS con un ruolo che attendibile al vostro progetto e rami GitLab

280* Ruolo IAM con autorizzazioni Bedrock (privilegi minimi consigliati)

281 

282**Variabili CI/CD richieste:**

283 

284* `AWS_ROLE_TO_ASSUME`: ARN del ruolo IAM per l'accesso a Bedrock

285* `AWS_REGION`: Regione Bedrock (ad esempio, `us-west-2`)

286 

287```yaml theme={null}

288claude-bedrock:

289 stage: ai

290 image: node:24-alpine3.21

291 rules:

292 - if: '$CI_PIPELINE_SOURCE == "web"'

293 before_script:

294 - apk add --no-cache bash curl jq git python3 py3-pip

295 - pip install --no-cache-dir awscli

296 - curl -fsSL https://claude.ai/install.sh | bash

297 # Scambiare il token OIDC di GitLab con credenziali AWS

298 - export AWS_WEB_IDENTITY_TOKEN_FILE="${CI_JOB_JWT_FILE:-/tmp/oidc_token}"

299 - if [ -n "${CI_JOB_JWT_V2}" ]; then printf "%s" "$CI_JOB_JWT_V2" > "$AWS_WEB_IDENTITY_TOKEN_FILE"; fi

300 - >

301 aws sts assume-role-with-web-identity

302 --role-arn "$AWS_ROLE_TO_ASSUME"

303 --role-session-name "gitlab-claude-$(date +%s)"

304 --web-identity-token "file://$AWS_WEB_IDENTITY_TOKEN_FILE"

305 --duration-seconds 3600 > /tmp/aws_creds.json

306 - export AWS_ACCESS_KEY_ID="$(jq -r .Credentials.AccessKeyId /tmp/aws_creds.json)"

307 - export AWS_SECRET_ACCESS_KEY="$(jq -r .Credentials.SecretAccessKey /tmp/aws_creds.json)"

308 - export AWS_SESSION_TOKEN="$(jq -r .Credentials.SessionToken /tmp/aws_creds.json)"

309 script:

310 - /bin/gitlab-mcp-server || true

311 - >

312 claude

313 -p "${AI_FLOW_INPUT:-'Implement the requested changes and open an MR'}"

314 --permission-mode acceptEdits

315 --allowedTools "Bash Read Edit Write mcp__gitlab"

316 --debug

317 variables:

318 AWS_REGION: "us-west-2"

319```

320 

321<Note>

322 Gli ID modello per Bedrock includono prefissi specifici della regione (ad esempio, `us.anthropic.claude-sonnet-4-6`). Passate il modello desiderato tramite la configurazione del lavoro o il prompt se il vostro flusso di lavoro lo supporta.

323</Note>

324 

325### Esempio di lavoro Google Vertex AI (Workload Identity Federation)

326 

327**Prerequisiti:**

328 

329* API Vertex AI abilitata nel vostro progetto GCP

330* Workload Identity Federation configurata per attendere OIDC di GitLab

331* Un account di servizio con autorizzazioni Vertex AI

332 

333**Variabili CI/CD richieste:**

334 

335* `GCP_WORKLOAD_IDENTITY_PROVIDER`: Nome completo della risorsa del provider

336* `GCP_SERVICE_ACCOUNT`: Email dell'account di servizio

337* `CLOUD_ML_REGION`: Regione Vertex (ad esempio, `us-east5`)

338 

339```yaml theme={null}

340claude-vertex:

341 stage: ai

342 image: gcr.io/google.com/cloudsdktool/google-cloud-cli:slim

343 rules:

344 - if: '$CI_PIPELINE_SOURCE == "web"'

345 before_script:

346 - apt-get update && apt-get install -y git && apt-get clean

347 - curl -fsSL https://claude.ai/install.sh | bash

348 # Autenticarsi a Google Cloud tramite WIF (nessuna chiave scaricata)

349 - >

350 gcloud auth login --cred-file=<(cat <<EOF

351 {

352 "type": "external_account",

353 "audience": "${GCP_WORKLOAD_IDENTITY_PROVIDER}",

354 "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",

355 "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${GCP_SERVICE_ACCOUNT}:generateAccessToken",

356 "token_url": "https://sts.googleapis.com/v1/token"

357 }

358 EOF

359 )

360 - gcloud config set project "$(gcloud projects list --format='value(projectId)' --filter="name:${CI_PROJECT_NAMESPACE}" | head -n1)" || true

361 script:

362 - /bin/gitlab-mcp-server || true

363 - >

364 CLOUD_ML_REGION="${CLOUD_ML_REGION:-us-east5}"

365 claude

366 -p "${AI_FLOW_INPUT:-'Review and update code as requested'}"

367 --permission-mode acceptEdits

368 --allowedTools "Bash Read Edit Write mcp__gitlab"

369 --debug

370 variables:

371 CLOUD_ML_REGION: "us-east5"

372```

373 

374<Note>

375 Con Workload Identity Federation, non è necessario archiviare le chiavi dell'account di servizio. Utilizzate condizioni di trust specifiche del repository e account di servizio con privilegi minimi.

376</Note>

377 

378## Best practice

379 

380### Configurazione CLAUDE.md

381 

382Create un file `CLAUDE.md` nella radice del repository per definire standard di codifica, criteri di revisione e regole specifiche del progetto. Claude legge questo file durante le esecuzioni e segue le vostre convenzioni quando propone modifiche.

383 

384### Considerazioni sulla sicurezza

385 

386**Non eseguite mai il commit di chiavi API o credenziali cloud nel vostro repository**. Utilizzate sempre le variabili CI/CD di GitLab:

387 

388* Aggiungete `ANTHROPIC_API_KEY` come variabile mascherata (e proteggetela se necessario)

389* Utilizzate OIDC specifico del provider dove possibile (nessuna chiave di lunga durata)

390* Limitate le autorizzazioni dei lavori e l'uscita di rete

391* Revisionate i MR di Claude come qualsiasi altro contributore

392 

393### Ottimizzazione delle prestazioni

394 

395* Mantenete `CLAUDE.md` focalizzato e conciso

396* Fornite descrizioni chiare di problemi/MR per ridurre le iterazioni

397* Configurate timeout di lavoro ragionevoli per evitare esecuzioni incontrollate

398* Memorizzate nella cache npm e installazioni di pacchetti nei runner dove possibile

399 

400### Costi CI

401 

402Quando utilizzate Claude Code con GitLab CI/CD, siate consapevoli dei costi associati:

403 

404* **Tempo del runner GitLab**:

405 * Claude viene eseguito sui vostri runner GitLab e consuma minuti di calcolo

406 * Consultate la fatturazione del runner del vostro piano GitLab per i dettagli

407 

408* **Costi API**:

409 * Ogni interazione Claude consuma token in base alla dimensione del prompt e della risposta

410 * L'utilizzo dei token varia in base alla complessità dell'attività e alla dimensione della base di codice

411 * Consultate [Prezzi Anthropic](https://platform.claude.com/docs/it/about-claude/pricing) per i dettagli

412 

413* **Suggerimenti per l'ottimizzazione dei costi**:

414 * Utilizzate comandi `@claude` specifici per ridurre i turni non necessari

415 * Impostate valori `max_turns` e timeout di lavoro appropriati

416 * Limitate la concorrenza per controllare le esecuzioni parallele

417 

418## Sicurezza e governance

419 

420* Ogni lavoro viene eseguito in un contenitore isolato con accesso di rete limitato

421* Le modifiche di Claude passano attraverso MR in modo che i revisori vedano ogni diff

422* Le regole di protezione dei rami e approvazione si applicano al codice generato da IA

423* Claude Code utilizza autorizzazioni con ambito workspace per limitare le scritture

424* I costi rimangono sotto il vostro controllo perché portate le vostre credenziali del provider

425 

426## Risoluzione dei problemi

427 

428### Claude non risponde ai comandi @claude

429 

430* Verificate che la vostra pipeline sia attivata (manualmente, evento MR o tramite listener di note/webhook)

431* Assicuratevi che le variabili CI/CD (`ANTHROPIC_API_KEY` o impostazioni del provider cloud) siano presenti e non mascherate

432* Controllate che il commento contenga `@claude` (non `/claude`) e che il vostro trigger di menzione sia configurato

433 

434### Il lavoro non può scrivere commenti o aprire MR

435 

436* Assicuratevi che `CI_JOB_TOKEN` abbia autorizzazioni sufficienti per il progetto, oppure utilizzate un Project Access Token con ambito `api`

437* Controllate che lo strumento `mcp__gitlab` sia abilitato in `--allowedTools`

438* Confermate che il lavoro viene eseguito nel contesto del MR o abbia contesto sufficiente tramite variabili `AI_FLOW_*`

439 

440### Errori di autenticazione

441 

442* **Per Claude API**: Confermate che `ANTHROPIC_API_KEY` sia valida e non scaduta

443* **Per Bedrock/Vertex**: Verificate la configurazione OIDC/WIF, l'impersonificazione del ruolo e i nomi segreti; confermate la disponibilità della regione e del modello

444 

445## Configurazione avanzata

446 

447### Parametri e variabili comuni

448 

449Claude Code supporta questi input comunemente utilizzati:

450 

451* `prompt` / `prompt_file`: Fornite istruzioni inline (`-p`) o tramite un file

452* `max_turns`: Limitate il numero di iterazioni avanti e indietro

453* `timeout_minutes`: Limitate il tempo di esecuzione totale

454* `ANTHROPIC_API_KEY`: Richiesto per l'API Claude (non utilizzato per Bedrock/Vertex)

455* Ambiente specifico del provider: `AWS_REGION`, variabili di progetto/regione per Vertex

456 

457<Note>

458 I flag e i parametri esatti possono variare in base alla versione di `@anthropic-ai/claude-code`. Eseguite `claude --help` nel vostro lavoro per vedere le opzioni supportate.

459</Note>

460 

461### Personalizzazione del comportamento di Claude

462 

463Potete guidare Claude in due modi principali:

464 

4651. **CLAUDE.md**: Definite standard di codifica, requisiti di sicurezza e convenzioni di progetto. Claude legge questo durante le esecuzioni e segue le vostre regole.

4662. **Prompt personalizzati**: Passate istruzioni specifiche dell'attività tramite `prompt`/`prompt_file` nel lavoro. Utilizzate prompt diversi per lavori diversi (ad esempio, revisione, implementazione, refactoring).

glossary.md +307 −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# Glossario

6 

7> Definizioni della terminologia di Claude Code. Scopri cosa significano agentic loop, compaction, CLAUDE.md, hooks, subagents, MCP e altri concetti fondamentali.

8 

9Questo glossario definisce la terminologia di Claude Code. Ogni voce rimanda alla pagina dove il concetto è trattato in profondità. Per i concetti a livello di modello come tokens, temperature e RAG, consulta il [glossario della piattaforma](https://platform.claude.com/docs/it/about-claude/glossary).

10 

11## A

12 

13### Agent teams

14 

15Più sessioni indipendenti di Claude Code coordinate da un team lead, con un elenco di attività condiviso e messaggistica peer-to-peer. A differenza dei [subagents](#subagent), che vengono eseguiti all'interno di una singola sessione e riferiscono solo al genitore, i compagni di squadra hanno ciascuno la propria finestra di contesto e puoi interagire direttamente con uno qualsiasi di loro. Agent teams è sperimentale e deve essere abilitato impostando `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.

16 

17Scopri di più: [Run agent teams](/it/agent-teams)

18 

19### Agentic coding

20 

21Un flusso di lavoro in cui l'IA può leggere file, eseguire comandi e apportare modifiche autonomamente mentre tu osservi, reindizzi o ti allontani, a differenza degli assistenti basati su chat che rispondono solo con testo che devi applicare tu stesso. Claude Code è agentic perché ha [tools](#tool) che gli permettono di agire, non solo di consigliare.

22 

23Scopri di più: [How Claude Code works](/it/how-claude-code-works)

24 

25### Agentic harness

26 

27Gli strumenti, la gestione del contesto e l'ambiente di esecuzione che trasformano un modello di linguaggio in un agente di codifica capace. Claude Code è l'harness; Claude è il modello al suo interno. L'harness fornisce accesso ai file, esecuzione shell, gating delle autorizzazioni, caricamento della memoria e il loop che concatena le azioni insieme.

28 

29Scopri di più: [How Claude Code works](/it/how-claude-code-works)

30 

31### Agentic loop

32 

33Il ciclo che Claude attraversa per ogni attività: raccogliere contesto, intraprendere un'azione, verificare i risultati e ripetere fino al completamento. Ogni utilizzo di uno strumento restituisce informazioni che informano il passo successivo. Puoi interrompere il loop in qualsiasi momento per reindirizzare. La maggior parte dei punti di estensione, inclusi [hooks](#hook), [skills](#skill) e [MCP](#mcp-model-context-protocol), si collegano a fasi specifiche di questo loop.

34 

35Scopri di più: [How Claude Code works](/it/how-claude-code-works#the-agentic-loop)

36 

37### Auto memory

38 

39Note che Claude scrive per se stesso in base alle tue correzioni e preferenze, archiviate per repository git in `~/.claude/projects/`. Tutti i worktrees dello stesso repository condividono una directory di auto memory. Le prime 200 righe o 25 KB dell'indice `MEMORY.md` si caricano all'inizio di ogni sessione. Auto memory è la controparte scritta da Claude di [CLAUDE.md](#claude-md), che scrivi tu.

40 

41Scopri di più: [Auto memory](/it/memory#auto-memory)

42 

43### Auto mode

44 

45Una [permission mode](#permission-mode) in cui un modello classificatore separato esamina ogni azione in background invece di mostrarti prompt di approvazione. Il classificatore blocca l'escalation dell'ambito, l'infrastruttura non attendibile e l'[prompt injection](#prompt-injection). Non vede mai i risultati degli strumenti, quindi le istruzioni iniettate non possono influenzare le sue decisioni. Auto mode è un'anteprima di ricerca disponibile su piani Max, Team, Enterprise e API.

46 

47Scopri di più: [Eliminate prompts with auto mode](/it/permission-modes#eliminate-prompts-with-auto-mode)

48 

49## B

50 

51### Bare mode

52 

53Un flag di avvio, `--bare`, che salta l'auto-discovery di hooks, skills, plugins, server MCP, auto memory e CLAUDE.md. Solo i flag che passi esplicitamente hanno effetto. Consigliato per CI e chiamate con script dove hai bisogno di un comportamento identico tra le macchine indipendentemente dalla configurazione locale.

54 

55Scopri di più: [Start faster with bare mode](/it/headless#start-faster-with-bare-mode)

56 

57### Bundled skills

58 

59Playbook basati su prompt inclusi con Claude Code, come `/batch`, `/simplify`, `/debug` e `/loop`. A differenza dei comandi built-in, che eseguono logica fissa, le bundled skills danno a Claude un prompt dettagliato e gli permettono di orchestrare il lavoro, quindi possono generare agenti, leggere file e adattarsi al tuo codebase.

60 

61Scopri di più: [Bundled skills](/it/skills#bundled-skills)

62 

63## C

64 

65### Channel

66 

67Un [server MCP](#mcp-model-context-protocol) che invia eventi nella tua sessione in esecuzione in modo che Claude possa reagire a cose che accadono mentre sei lontano dal terminale. I canali possono essere bidirezionali: Claude legge un evento in entrata e risponde attraverso lo stesso canale. Telegram, Discord e iMessage sono inclusi nell'anteprima di ricerca.

68 

69Scopri di più: [Channels](/it/channels)

70 

71### Checkpoint

72 

73Uno snapshot automatico del tuo codice acquisito prima di ogni modifica che Claude apporta. Premi `Esc` due volte o esegui `/rewind` per ripristinare il codice, la conversazione o entrambi a un punto precedente. I checkpoint sono locali alla sessione, separati da git e non traccia le modifiche apportate tramite lo strumento Bash.

74 

75Scopri di più: [Checkpointing](/it/checkpointing)

76 

77### `.claude` directory

78 

79La directory da cui Claude Code legge la configurazione con ambito di progetto: impostazioni, hooks, skills, subagents, regole e auto memory. Un progetto ha `.claude/` alla sua radice; i tuoi valori predefiniti a livello di utente sono in `~/.claude/`.

80 

81Scopri di più: [The `.claude` directory](/it/claude-directory)

82 

83### CLAUDE.md

84 

85Un file markdown di istruzioni persistenti che scrivi per Claude, caricato all'inizio di ogni sessione come messaggio utente dopo il prompt di sistema. Metti qui le convenzioni di progetto, le note sull'architettura e le regole "fai sempre X". CLAUDE.md sopravvive alla [compaction](#compaction) e viene riletto fresco dal disco in seguito.

86 

87Puoi posizionare CLAUDE.md a livello di progetto in `./CLAUDE.md` o `./.claude/CLAUDE.md`, a livello di utente in `~/.claude/CLAUDE.md`, o come [managed policy](#managed-settings) per la tua organizzazione. Le posizioni più specifiche hanno la precedenza.

88 

89Scopri di più: [CLAUDE.md files](/it/memory#claude-md-files)

90 

91### Command

92 

93Un'istruzione riutilizzabile che invochi digitando `/name` nel prompt. I comandi built-in come `/clear`, `/model` e `/compact` controllano la sessione. Puoi definire i tuoi comandi come file in `.claude/commands/`, o installarli da un [plugin](#plugin). [Skills](#skill) sono il modo consigliato per confezionare comandi multi-step.

94 

95Scopri di più: [Commands](/it/commands) · [Skills](/it/skills)

96 

97### Compaction

98 

99Riassunto automatico della tua conversazione quando la [context window](#context-window) si avvicina al suo limite. Gli output degli strumenti più vecchi vengono cancellati per primi, quindi la conversazione viene riassunta. CLAUDE.md a livello di radice del progetto e auto memory sopravvivono alla compaction e si ricaricano dal disco; le istruzioni date solo in conversazione potrebbero andare perse. Esegui `/compact` per attivare manualmente, opzionalmente con un focus come `/compact focus on the API changes`.

100 

101Scopri di più: [What survives compaction](/it/context-window#what-survives-compaction) · [When context fills up](/it/how-claude-code-works#when-context-fills-up)

102 

103### Context window

104 

105La memoria di lavoro per una sessione, che contiene la cronologia della conversazione, i contenuti dei file, gli output dei comandi, CLAUDE.md, auto memory, le skills caricate e le istruzioni di sistema. Man mano che lavori, il contesto si riempie fino a quando [compaction](#compaction) lo riassume. Esegui `/context` per vedere cosa sta usando lo spazio. Per il concetto di modello sottostante, consulta il [glossario della piattaforma](https://platform.claude.com/docs/it/about-claude/glossary#context-window).

106 

107Scopri di più: [Explore the context window](/it/context-window)

108 

109## D

110 

111### Dispatch

112 

113Un router di attività avviato da telefono che genera una sessione di Claude Code nell'app Desktop quando invii un'attività di codifica dall'app mobile Claude. Il tuo prompt viene instradato automaticamente allo strumento giusto. Disponibile su piani Pro e Max.

114 

115Scopri di più: [Sessions from Dispatch](/it/desktop#sessions-from-dispatch)

116 

117## E

118 

119### Effort level

120 

121Un'impostazione che controlla quanto del budget di thinking con ragionamento adattivo Claude utilizza ad ogni turno. Uno sforzo più elevato significa più token di thinking e ragionamento più profondo; uno sforzo inferiore è più veloce ed economico. Effort è supportato su Opus 4.7, Opus 4.6 e Sonnet 4.6.

122 

123Scopri di più: [Adjust effort level](/it/model-config#adjust-effort-level)

124 

125### Extended thinking

126 

127Ragionamento passo dopo passo visibile che il modello esegue prima di rispondere. Puoi limitare i token di thinking con `MAX_THINKING_TOKENS` o regolare il [effort level](#effort-level). Il thinking appare in testo grigio corsivo nel terminale.

128 

129Scopri di più: [Use extended thinking](/it/common-workflows#use-extended-thinking-thinking-mode)

130 

131## H

132 

133### Hook

134 

135Un gestore definito dall'utente che viene eseguito automaticamente in un punto specifico del ciclo di vita di Claude Code, come prima dell'esecuzione di uno strumento, dopo una modifica di file o all'avvio della sessione. I gestori possono essere un comando shell, un endpoint HTTP, uno strumento MCP, un prompt LLM o un subagent. Gli hooks sono deterministici: si attivano in punti di ciclo di vita fissi piuttosto che a discrezione del modello.

136 

137Una configurazione di hook ha tre livelli:

138 

139* **Hook event**: il punto del ciclo di vita

140* **Matcher**: filtra quali eventi lo attivano

141* **Hook handler**: cosa viene eseguito

142 

143Scopri di più: [Get started with hooks](/it/hooks-guide) · [Hooks reference](/it/hooks)

144 

145## M

146 

147### Managed settings

148 

149Un file di impostazioni applicato a livello di organizzazione da IT o DevOps, posizionato in un percorso a livello di OS al di fuori di `~/.claude`. Gli utenti non possono ignorare o escludere le impostazioni gestite. Usalo per politiche di sicurezza, requisiti di conformità o tooling standardizzato su una flotta.

150 

151Scopri di più: [Server-managed settings](/it/server-managed-settings)

152 

153### MCP (Model Context Protocol)

154 

155Uno standard aperto per connettere strumenti AI a fonti di dati esterne e servizi. I server MCP danno a Claude nuovi strumenti per Slack, Jira, database, browser e centinaia di altre integrazioni. Connetti i server tramite `/mcp` o aggiungendoli a `.mcp.json`. Per il protocollo stesso, consulta il [glossario della piattaforma](https://platform.claude.com/docs/it/about-claude/glossary#mcp-model-context-protocol).

156 

157Scopri di più: [Model Context Protocol](/it/mcp)

158 

159### MCP Tool Search

160 

161Un meccanismo di risparmio di contesto che rinvia gli schemi degli strumenti MCP fino a quando non sono necessari. Solo i nomi degli strumenti si caricano all'avvio; Claude recupera lo schema completo su richiesta quando decide di utilizzare uno strumento specifico. Questo impedisce ai server MCP inattivi di consumare molto contesto.

162 

163Scopri di più: [Scale with MCP Tool Search](/it/mcp#scale-with-mcp-tool-search)

164 

165## N

166 

167### Non-interactive mode

168 

169Una modalità che esegue un singolo prompt e esce senza una sessione conversazionale, invocata con `-p` o `--print`. Usata per CI, script e piping. L'[Agent SDK](/it/agent-sdk/overview) è l'equivalente Python e TypeScript. Precedentemente chiamata headless mode.

170 

171Scopri di più: [Run Claude Code programmatically](/it/headless)

172 

173## O

174 

175### Output style

176 

177Una configurazione che modifica il prompt di sistema di Claude per cambiare il comportamento della risposta, il tono o il formato. Gli output styles disattivano le parti specifiche dell'ingegneria del software del prompt di sistema predefinito, a differenza di [CLAUDE.md](#claude-md) che viene consegnato come messaggio utente seguendo il prompt di sistema. Gli stili built-in includono Default, Explanatory e Learning.

178 

179Scopri di più: [Output styles](/it/output-styles)

180 

181## P

182 

183### Permission mode

184 

185Il comportamento di approvazione di base per la sessione. Cicla con `Shift+Tab` nella CLI o usa il selettore di modalità in VS Code, Desktop e claude.ai. Le modalità disponibili sono `default`, `acceptEdits`, `plan`, `auto`, `dontAsk` e `bypassPermissions`.

186 

187Scopri di più: [Choose a permission mode](/it/permission-modes)

188 

189### Permission rule

190 

191Una voce di impostazioni che consente, chiede informazioni su o nega un'invocazione di uno strumento in base al nome dello strumento e al modello di argomento. Le regole vengono valutate deny→ask→allow, il primo match vince. Le permission rules sono controlli granulari sovrapposti alla più ampia [permission mode](#permission-mode).

192 

193Scopri di più: [Configure permissions](/it/permissions)

194 

195### Plan mode

196 

197Una [permission mode](#permission-mode) in cui Claude ricerca e propone modifiche senza modificare i tuoi file sorgente. Può leggere, cercare ed eseguire comandi di esplorazione, quindi presenta un piano per l'approvazione prima di toccare qualsiasi cosa. Entra in plan mode con `/plan` o premendo `Shift+Tab`.

198 

199Scopri di più: [Analyze before you edit with plan mode](/it/permission-modes#analyze-before-you-edit-with-plan-mode)

200 

201### Plugin

202 

203Un bundle di skills, hooks, subagents e server MCP confezionati come una singola unità installabile. Le plugin skills sono spaziate dei nomi come `plugin-name:skill-name` in modo che più plugin coesistano. Distribuisci i plugin tra i team tramite un [marketplace](/it/plugin-marketplaces).

204 

205Scopri di più: [Plugins](/it/plugins)

206 

207### Project trust

208 

209Una finestra di dialogo una tantum che accetta una directory prima che Claude Code carichi la sua configurazione. Trust gates l'auto-installazione dei plugin del marketplace e l'esecuzione degli hooks definiti dal progetto. Fidarsi di una directory significa che i suoi file `.claude/settings.json`, `.mcp.json` e altri file di configurazione hanno effetto.

210 

211Scopri di più: [The `.claude` directory](/it/claude-directory)

212 

213### Prompt injection

214 

215Istruzioni ostili incorporate in un file, pagina web o risultato dello strumento che tentano di reindirizzare Claude verso azioni che non hai mai chiesto. Le difese di Claude Code includono il sistema di autorizzazioni, le blocklist dei comandi e la verifica della fiducia. [Auto mode](#auto-mode) aggiunge una sonda lato server che scansiona i risultati degli strumenti per contenuti sospetti e un classificatore che non vede mai i risultati degli strumenti, quindi il testo iniettato non può influenzare le sue decisioni di approvazione.

216 

217Scopri di più: [Protect against prompt injection](/it/security#protect-against-prompt-injection)

218 

219## R

220 

221### Remote Control

222 

223Un modo per continuare una sessione locale di Claude Code dal tuo telefono o browser tramite claude.ai. Il tuo codice rimane sulla tua macchina; solo l'interfaccia utente è remota. Diverso da Claude Code sul web, che viene eseguito in una sandbox cloud.

224 

225Scopri di più: [Remote Control](/it/remote-control)

226 

227### Rules

228 

229File di istruzioni modulari in `.claude/rules/` che si caricano insieme a CLAUDE.md. Una regola può essere con ambito di percorso con frontmatter YAML `paths:` in modo che si carichi solo quando Claude legge un file corrispondente, mantenendo il contesto snello fino a quando non è rilevante.

230 

231Scopri di più: [Organize rules with `.claude/rules/`](/it/memory#organize-rules-with-claude/rules/)

232 

233## S

234 

235### Sandboxing

236 

237Isolamento a livello di OS del filesystem e della rete per lo strumento Bash. I comandi vengono eseguiti all'interno di un confine che definisci in anticipo, in modo che Claude possa lavorare liberamente al suo interno senza prompt di approvazione per comando. Sandboxing è un livello separato dalle [permission rules](#permission-rule).

238 

239Scopri di più: [Sandboxing](/it/sandboxing)

240 

241### Session

242 

243Una conversazione legata alla tua directory corrente, con la sua propria [context window](#context-window) indipendente. Le sessioni possono essere riprese con `claude -c`, fork con `--fork-session` per preservare la cronologia sotto un nuovo ID di sessione, o eseguite in parallelo tra i terminali. L'esecuzione di `/clear` avvia una nuova sessione; quella precedente rimane archiviata ed è disponibile tramite `/resume`. La trascrizione di ogni sessione è archiviata in `~/.claude/projects/`.

244 

245Scopri di più: [Work with sessions](/it/how-claude-code-works#work-with-sessions)

246 

247### Settings layers

248 

249La gerarchia da cui Claude Code legge la configurazione, in ordine di precedenza dal più alto al più basso: [managed policy](#managed-settings), argomenti della riga di comando, impostazioni locali in `.claude/settings.local.json`, impostazioni di progetto in `.claude/settings.json`, quindi impostazioni utente in `~/.claude/settings.json`. Gli array si uniscono tra i livelli; gli scalari a un livello più alto sovrascrivono quelli inferiori.

250 

251Scopri di più: [Settings files](/it/settings#settings-files)

252 

253### Skill

254 

255Un file `SKILL.md` contenente istruzioni, conoscenze o un flusso di lavoro che Claude aggiunge al suo toolkit. Claude carica una skill automaticamente quando rilevante, o la invochi direttamente con `/skill-name`. Le skills seguono lo standard open Agent Skills; Claude Code lo estende con il controllo dell'invocazione e l'esecuzione del subagent.

256 

257Le skills sono il successore consigliato ai comandi personalizzati. Un file in `.claude/commands/deploy.md` e uno in `.claude/skills/deploy/SKILL.md` creano entrambi `/deploy` e funzionano allo stesso modo; i file di comando esistenti continuano a funzionare.

258 

259Scopri di più: [Extend Claude with skills](/it/skills)

260 

261### Subagent

262 

263Un assistente AI specializzato che viene eseguito nella sua propria context window con un prompt di sistema personalizzato, accesso specifico agli strumenti e autorizzazioni indipendenti. Lavora su un'attività delegata e restituisce un riepilogo alla conversazione principale. Usa i subagents per mantenere grandi esplorazioni fuori dal tuo contesto primario o per eseguire ricerche parallele. Diverso da [agent teams](#agent-teams), dove ogni agente è una sessione completamente indipendente con cui puoi parlare direttamente.

264 

265I subagents built-in includono Explore, Plan e general-purpose.

266 

267Scopri di più: [Create custom subagents](/it/sub-agents)

268 

269### Surface

270 

271Qualsiasi luogo in cui accedi a Claude Code: la CLI, VS Code, JetBrains, Desktop o claude.ai. Tutte le surface condividono lo stesso motore, quindi il tuo CLAUDE.md, le impostazioni e le skills funzionano allo stesso modo su di esse. Slack e l'estensione Chrome sono integrazioni che si connettono a una surface piuttosto che essere surface stesse.

272 

273Scopri di più: [Platforms and integrations](/it/platforms)

274 

275## T

276 

277### Teleport

278 

279Un comando, `/teleport`, che tira una sessione cloud di Claude Code nel tuo terminale locale. Claude recupera il branch, carica la cronologia della conversazione e riprende dallo stato dell'ultima sessione web. La direzione inversa è `--remote`, che invia un'attività locale da eseguire sul web.

280 

281Scopri di più: [From web to terminal](/it/claude-code-on-the-web#from-web-to-terminal)

282 

283### Tool

284 

285Un'azione che Claude può intraprendere: leggere un file, modificare il codice, eseguire un comando shell, cercare il web, generare un subagent. Gli strumenti sono ciò che rende Claude Code agentic. Senza di essi, Claude può solo rispondere con testo. Ogni utilizzo di uno strumento restituisce un risultato che informa la decisione successiva di Claude nel [agentic loop](#agentic-loop).

286 

287Scopri di più: [Tools available to Claude](/it/tools-reference)

288 

289## W

290 

291### Worktree isolation

292 

293Una modalità di isolamento che esegue Claude in un worktree git separato in `.claude/worktrees/`, abilitata con il flag `-w` o `isolation: worktree` nella configurazione del subagent. Le modifiche rimangono su un branch separato in una directory separata, in modo che gli agenti paralleli non sovrascrivano i file l'uno dell'altro.

294 

295Scopri di più: [Run parallel sessions with git worktrees](/it/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees)

296 

297***

298 

299## Deprecated and renamed terms

300 

301Questi termini appaiono in documenti più vecchi, post di blog e contenuti della comunità. Usa il nome attuale quando cerchi su questo sito.

302 

303| Old term | Now called | Notes |

304| --------------- | --------------------------------------------- | ------------------------------------ |

305| Headless mode | [Non-interactive mode](#non-interactive-mode) | Same `-p` flag, same behavior |

306| Custom commands | [Skills](#skill) | `.claude/commands/` files still work |

307| Slash commands | Commands | "Slash" dropped from product copy |

google-vertex-ai.md +387 −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# Claude Code su Google Vertex AI

6 

7> Scopri come configurare Claude Code tramite Google Vertex AI, inclusa la configurazione, la configurazione IAM e la risoluzione dei problemi.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="vertex" />} />

190 

191## Prerequisiti

192 

193Prima di configurare Claude Code con Vertex AI, assicurati di avere:

194 

195* Un account Google Cloud Platform (GCP) con fatturazione abilitata

196* Un progetto GCP con Vertex AI API abilitata

197* Accesso ai modelli Claude desiderati (ad esempio, Claude Sonnet 4.6)

198* Google Cloud SDK (`gcloud`) installato e configurato

199* Quota allocata nella regione GCP desiderata

200 

201Per accedere con le tue credenziali Vertex AI, segui [Accedi con Vertex AI](#sign-in-with-vertex-ai) di seguito. Per distribuire Claude Code in un team, utilizza i passaggi di [configurazione manuale](#set-up-manually) e [fissa le versioni del tuo modello](#5-pin-model-versions) prima del rollout.

202 

203## Accedi con Vertex AI

204 

205Se hai credenziali Google Cloud e desideri iniziare a utilizzare Claude Code tramite Vertex AI, la procedura guidata di accesso ti guida attraverso i passaggi. Completi i prerequisiti lato GCP una volta per progetto; la procedura guidata gestisce il lato Claude Code.

206 

207<Note>

208 La procedura guidata di configurazione di Vertex AI richiede Claude Code v2.1.98 o versione successiva. Esegui `claude --version` per verificare.

209</Note>

210 

211<Steps>

212 <Step title="Abilita i modelli Claude nel tuo progetto GCP">

213 [Abilita Vertex AI API](#1-enable-vertex-ai-api) per il tuo progetto, quindi richiedi accesso ai modelli Claude che desideri in [Vertex AI Model Garden](https://console.cloud.google.com/vertex-ai/model-garden). Consulta [Configurazione IAM](#iam-configuration) per le autorizzazioni di cui il tuo account ha bisogno.

214 </Step>

215 

216 <Step title="Avvia Claude Code e scegli Vertex AI">

217 Esegui `claude`. Al prompt di accesso, seleziona **3rd-party platform**, quindi **Google Vertex AI**.

218 </Step>

219 

220 <Step title="Segui i prompt della procedura guidata">

221 Scegli come autenticarti a Google Cloud: Application Default Credentials da `gcloud`, un file di chiave dell'account di servizio, o credenziali già presenti nel tuo ambiente. La procedura guidata rileva il tuo progetto e la tua regione, verifica quali modelli Claude il tuo progetto può invocare, e ti consente di fissarli. Salva il risultato nel blocco `env` del tuo [file di impostazioni utente](/it/settings), quindi non è necessario esportare variabili di ambiente da solo.

222 </Step>

223</Steps>

224 

225Dopo aver effettuato l'accesso, esegui `/setup-vertex` in qualsiasi momento per riaprire la procedura guidata e modificare le tue credenziali, progetto, regione o fissaggi di modello.

226 

227## Configurazione della regione

228 

229Claude Code supporta endpoint Vertex AI [globali](https://cloud.google.com/blog/products/ai-machine-learning/global-endpoint-for-claude-models-generally-available-on-vertex-ai), multi-regione e regionali. Imposta `CLOUD_ML_REGION` su `global`, una posizione multi-regione come `eu` o `us`, o una regione specifica come `us-east5`. Claude Code seleziona il nome host Vertex AI corretto per ogni modulo, inclusi gli host `aiplatform.eu.rep.googleapis.com` e `aiplatform.us.rep.googleapis.com` per le posizioni multi-regione.

230 

231<Note>

232 Vertex AI potrebbe non supportare i modelli predefiniti di Claude Code su ogni tipo di endpoint. La disponibilità del modello varia tra [regioni specifiche](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations#genai-partner-models), posizioni multi-regione e [endpoint globali](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#supported_models). Potrebbe essere necessario passare a una posizione supportata o specificare un modello supportato.

233</Note>

234 

235## Configurazione manuale

236 

237Per configurare Vertex AI tramite variabili di ambiente invece della procedura guidata, ad esempio in CI o in un rollout aziendale con script, segui i passaggi di seguito.

238 

239### 1. Abilita Vertex AI API

240 

241Abilita Vertex AI API nel tuo progetto GCP:

242 

243```bash theme={null}

244# Imposta il tuo ID progetto

245gcloud config set project YOUR-PROJECT-ID

246 

247# Abilita Vertex AI API

248gcloud services enable aiplatform.googleapis.com

249```

250 

251### 2. Richiedi accesso al modello

252 

253Richiedi accesso ai modelli Claude in Vertex AI:

254 

2551. Accedi a [Vertex AI Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

2562. Cerca i modelli "Claude"

2573. Richiedi accesso ai modelli Claude desiderati (ad esempio, Claude Sonnet 4.6)

2584. Attendi l'approvazione (potrebbe richiedere 24-48 ore)

259 

260### 3. Configura le credenziali GCP

261 

262Claude Code utilizza l'autenticazione standard di Google Cloud.

263 

264Per ulteriori informazioni, consulta la [documentazione di autenticazione di Google Cloud](https://cloud.google.com/docs/authentication).

265 

266Claude Code v2.1.121 o versioni successive supporta [X.509 certificate-based Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation-with-x509-certificates) attraverso la stessa catena Application Default Credentials. Imposta `GOOGLE_APPLICATION_CREDENTIALS` al percorso del tuo file di configurazione delle credenziali.

267 

268<Note>

269 Durante l'autenticazione, Claude Code utilizzerà automaticamente l'ID progetto dalla variabile di ambiente `ANTHROPIC_VERTEX_PROJECT_ID`. Per eseguire l'override, imposta una di queste variabili di ambiente: `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT` o `GOOGLE_APPLICATION_CREDENTIALS`.

270</Note>

271 

272### 4. Configura Claude Code

273 

274Imposta le seguenti variabili di ambiente:

275 

276```bash theme={null}

277# Abilita integrazione Vertex AI

278export CLAUDE_CODE_USE_VERTEX=1

279export CLOUD_ML_REGION=global

280export ANTHROPIC_VERTEX_PROJECT_ID=YOUR-PROJECT-ID

281 

282# Facoltativo: Esegui l'override dell'URL dell'endpoint Vertex per endpoint personalizzati o gateway

283# export ANTHROPIC_VERTEX_BASE_URL=https://aiplatform.googleapis.com

284 

285# Facoltativo: Disabilita prompt caching se necessario

286export DISABLE_PROMPT_CACHING=1

287 

288# Facoltativo: Richiedi TTL cache prompt di 1 ora invece del valore predefinito di 5 minuti

289export ENABLE_PROMPT_CACHING_1H=1

290 

291# Quando CLOUD_ML_REGION=global, esegui l'override della regione per i modelli che non supportano endpoint globali

292export VERTEX_REGION_CLAUDE_HAIKU_4_5=us-east5

293export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

294```

295 

296La maggior parte delle versioni del modello ha una variabile `VERTEX_REGION_CLAUDE_*` corrispondente. Consulta il [riferimento delle variabili di ambiente](/it/env-vars) per l'elenco completo. Controlla [Vertex Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) per determinare quali modelli supportano endpoint globali rispetto a quelli solo regionali.

297 

298[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) è abilitato automaticamente. Per disabilitarlo, imposta `DISABLE_PROMPT_CACHING=1`. Per richiedere un TTL cache di 1 ora invece del valore predefinito di 5 minuti, imposta `ENABLE_PROMPT_CACHING_1H=1`; le scritture della cache con TTL di 1 ora vengono fatturate a una tariffa più elevata. Per limiti di velocità aumentati, contatta il supporto di Google Cloud. Quando utilizzi Vertex AI, i comandi `/login` e `/logout` sono disabilitati poiché l'autenticazione è gestita tramite le credenziali di Google Cloud.

299 

300[MCP tool search](/it/mcp#scale-with-mcp-tool-search) è disabilitato per impostazione predefinita su Vertex AI perché l'endpoint non accetta l'intestazione beta richiesta. Tutte le definizioni degli strumenti MCP vengono caricate in anticipo. Per acconsentire, imposta `ENABLE_TOOL_SEARCH=true`.

301 

302### 5. Fissa le versioni del modello

303 

304<Warning>

305 Fissa versioni specifiche del modello quando distribuisci a più utenti. Senza fissaggio, gli alias di modello come `sonnet` e `opus` si risolvono nella versione più recente, che potrebbe non essere ancora abilitata nel tuo progetto Vertex AI quando Anthropic rilascia un aggiornamento. Claude Code [ritorna](#startup-model-checks) alla versione precedente all'avvio quando la versione più recente non è disponibile, ma il fissaggio ti consente di controllare quando i tuoi utenti passano a un nuovo modello.

306</Warning>

307 

308Imposta queste variabili di ambiente su ID modello Vertex AI specifici.

309 

310Senza `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` su Vertex si risolve in Opus 4.6. Impostalo sull'ID di Opus 4.7 per utilizzare il modello più recente:

311 

312```bash theme={null}

313export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'

314export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

315export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

316```

317 

318Per gli ID modello attuali e legacy, consulta [Panoramica dei modelli](https://platform.claude.com/docs/en/about-claude/models/overview). Consulta [Configurazione del modello](/it/model-config#pin-models-for-third-party-deployments) per l'elenco completo delle variabili di ambiente.

319 

320Claude Code utilizza questi modelli predefiniti quando nessuna variabile di fissaggio è impostata:

321 

322| Tipo di modello | Valore predefinito |

323| :--------------------- | :--------------------------- |

324| Modello primario | `claude-sonnet-4-5@20250929` |

325| Modello piccolo/veloce | `claude-haiku-4-5@20251001` |

326 

327Per personalizzare ulteriormente i modelli:

328 

329```bash theme={null}

330export ANTHROPIC_MODEL='claude-opus-4-7'

331export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

332```

333 

334## Controlli del modello all'avvio

335 

336Quando Claude Code si avvia con Vertex AI configurato, verifica che i modelli che intende utilizzare siano accessibili nel tuo progetto. Questo controllo richiede Claude Code v2.1.98 o versione successiva.

337 

338Se hai fissato una versione del modello più vecchia del valore predefinito corrente di Claude Code, e il tuo progetto può invocare la versione più recente, Claude Code ti chiede di aggiornare il fissaggio. Accettare scrive il nuovo ID modello nel tuo [file di impostazioni utente](/it/settings) e riavvia Claude Code. Rifiutare viene ricordato fino al prossimo cambio di versione predefinita.

339 

340Se non hai fissato un modello e il valore predefinito corrente non è disponibile nel tuo progetto, Claude Code ritorna alla versione precedente per la sessione corrente e mostra un avviso. Il ritorno non è persistente. Abilita il modello più recente in [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) o [fissa una versione](#5-pin-model-versions) per rendere la scelta permanente.

341 

342## Configurazione IAM

343 

344Assegna le autorizzazioni IAM richieste:

345 

346Il ruolo `roles/aiplatform.user` include le autorizzazioni richieste:

347 

348* `aiplatform.endpoints.predict` - Richiesto per l'invocazione del modello e il conteggio dei token

349 

350Per autorizzazioni più restrittive, crea un ruolo personalizzato con solo le autorizzazioni di cui sopra.

351 

352Per i dettagli, consulta la [documentazione IAM di Vertex](https://cloud.google.com/vertex-ai/docs/general/access-control).

353 

354<Note>

355 Crea un progetto GCP dedicato per Claude Code per semplificare il tracciamento dei costi e il controllo degli accessi.

356</Note>

357 

358## Finestra di contesto da 1M token

359 

360Claude Opus 4.7, Opus 4.6 e Sonnet 4.6 supportano la [finestra di contesto da 1M token](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) su Vertex AI. Claude Code abilita automaticamente la finestra di contesto estesa quando selezioni una variante di modello 1M.

361 

362La [procedura guidata di configurazione](#sign-in-with-vertex-ai) offre un'opzione di contesto 1M quando fissa i modelli. Per abilitarla per un modello fissato manualmente, aggiungi `[1m]` all'ID del modello. Consulta [Fissa i modelli per le distribuzioni di terze parti](/it/model-config#pin-models-for-third-party-deployments) per i dettagli.

363 

364## Risoluzione dei problemi

365 

366Se riscontri problemi di quota:

367 

368* Controlla le quote attuali o richiedi un aumento della quota tramite [Cloud Console](https://cloud.google.com/docs/quotas/view-manage)

369 

370Se riscontri errori "model not found" 404:

371 

372* Conferma che il modello è abilitato in [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

373* Verifica che il modello sia disponibile nella posizione che hai specificato. Alcuni modelli sono offerti solo su posizioni `global` o multi-regione come `eu` e `us`, non in regioni specifiche

374* Se utilizzi `CLOUD_ML_REGION=global`, controlla che i tuoi modelli supportino endpoint globali in [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) in "Supported features". Per i modelli che non supportano endpoint globali, puoi:

375 * Specificare un modello supportato tramite `ANTHROPIC_MODEL` o `ANTHROPIC_DEFAULT_HAIKU_MODEL`, oppure

376 * Impostare una regione o una posizione multi-regione utilizzando le variabili di ambiente `VERTEX_REGION_<MODEL_NAME>`

377 

378Se riscontri errori 429:

379 

380* Per gli endpoint regionali, assicurati che il modello primario e il modello piccolo/veloce siano supportati nella tua regione selezionata

381* Considera di passare a `CLOUD_ML_REGION=global` per una migliore disponibilità

382 

383## Risorse aggiuntive

384 

385* [Documentazione di Vertex AI](https://cloud.google.com/vertex-ai/docs)

386* [Prezzi di Vertex AI](https://cloud.google.com/vertex-ai/pricing)

387* [Quote e limiti di Vertex AI](https://cloud.google.com/vertex-ai/docs/quotas)

headless.md +225 −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# Eseguire Claude Code a livello programmatico

6 

7> Utilizza l'Agent SDK per eseguire Claude Code a livello programmatico dalla CLI, Python o TypeScript.

8 

9L'[Agent SDK](/it/agent-sdk/overview) ti fornisce gli stessi strumenti, il ciclo dell'agente e la gestione del contesto che alimentano Claude Code. È disponibile come CLI per script e CI/CD, oppure come pacchetti [Python](/it/agent-sdk/python) e [TypeScript](/it/agent-sdk/typescript) per il controllo programmatico completo.

10 

11<Note>

12 La CLI era precedentemente chiamata "headless mode". Il flag `-p` e tutte le opzioni CLI funzionano allo stesso modo.

13</Note>

14 

15Per eseguire Claude Code a livello programmatico dalla CLI, passa `-p` con il tuo prompt e qualsiasi [opzione CLI](/it/cli-reference):

16 

17```bash theme={null}

18claude -p "Find and fix the bug in auth.py" --allowedTools "Read,Edit,Bash"

19```

20 

21Questa pagina copre l'utilizzo dell'Agent SDK tramite la CLI (`claude -p`). Per i pacchetti SDK Python e TypeScript con output strutturati, callback di approvazione degli strumenti e oggetti messaggio nativi, consulta la [documentazione completa dell'Agent SDK](/it/agent-sdk/overview).

22 

23## Utilizzo di base

24 

25Aggiungi il flag `-p` (o `--print`) a qualsiasi comando `claude` per eseguirlo in modo non interattivo. Tutte le [opzioni CLI](/it/cli-reference) funzionano con `-p`, incluse:

26 

27* `--continue` per [continuare le conversazioni](#continue-conversations)

28* `--allowedTools` per [approvare automaticamente gli strumenti](#auto-approve-tools)

29* `--output-format` per [ottenere output strutturato](#get-structured-output)

30 

31Questo esempio chiede a Claude una domanda sulla tua base di codice e stampa la risposta:

32 

33```bash theme={null}

34claude -p "What does the auth module do?"

35```

36 

37### Inizia più velocemente con la modalità bare

38 

39Aggiungi `--bare` per ridurre il tempo di avvio saltando l'auto-discovery di hooks, skills, plugins, server MCP, memoria automatica e CLAUDE.md. Senza di esso, `claude -p` carica lo stesso [contesto](/it/how-claude-code-works#the-context-window) che una sessione interattiva avrebbe, incluso tutto ciò che è configurato nella directory di lavoro o in `~/.claude`.

40 

41La modalità bare è utile per CI e script dove hai bisogno dello stesso risultato su ogni macchina. Un hook nel `~/.claude` di un collega o un server MCP nel `.mcp.json` del progetto non verranno eseguiti, perché la modalità bare non li legge mai. Solo i flag che passi esplicitamente hanno effetto.

42 

43Questo esempio esegue un'attività di riepilogo una tantum in modalità bare e pre-approva lo strumento Read in modo che la chiamata si completi senza un prompt di autorizzazione:

44 

45```bash theme={null}

46claude --bare -p "Summarize this file" --allowedTools "Read"

47```

48 

49In modalità bare Claude ha accesso agli strumenti Bash, lettura file e modifica file. Passa qualsiasi contesto di cui hai bisogno con un flag:

50 

51| Per caricare | Utilizza |

52| ----------------------------- | ------------------------------------------------------- |

53| Aggiunte al prompt di sistema | `--append-system-prompt`, `--append-system-prompt-file` |

54| Impostazioni | `--settings <file-or-json>` |

55| Server MCP | `--mcp-config <file-or-json>` |

56| Agenti personalizzati | `--agents <json>` |

57| Una directory plugin | `--plugin-dir <path>` |

58 

59La modalità bare salta le letture OAuth e keychain. L'autenticazione Anthropic deve provenire da `ANTHROPIC_API_KEY` o da un `apiKeyHelper` nel JSON passato a `--settings`. Bedrock, Vertex e Foundry utilizzano le loro credenziali provider usuali.

60 

61<Note>

62 `--bare` è la modalità consigliata per le chiamate con script e SDK, e diventerà l'impostazione predefinita per `-p` in una versione futura.

63</Note>

64 

65## Esempi

66 

67Questi esempi evidenziano i modelli CLI comuni. Per CI e altre chiamate con script, aggiungi [`--bare`](#start-faster-with-bare-mode) in modo che non raccolgano qualsiasi cosa sia configurata localmente.

68 

69### Ottenere output strutturato

70 

71Utilizza `--output-format` per controllare come vengono restituite le risposte:

72 

73* `text` (predefinito): output di testo semplice

74* `json`: JSON strutturato con risultato, ID sessione e metadati

75* `stream-json`: JSON delimitato da newline per lo streaming in tempo reale

76 

77Questo esempio restituisce un riepilogo del progetto come JSON con metadati della sessione, con il risultato del testo nel campo `result`:

78 

79```bash theme={null}

80claude -p "Summarize this project" --output-format json

81```

82 

83Per ottenere output conforme a uno schema specifico, utilizza `--output-format json` con `--json-schema` e una definizione [JSON Schema](https://json-schema.org/). La risposta include metadati sulla richiesta (ID sessione, utilizzo, ecc.) con l'output strutturato nel campo `structured_output`.

84 

85Questo esempio estrae i nomi delle funzioni e li restituisce come array di stringhe:

86 

87```bash theme={null}

88claude -p "Extract the main function names from auth.py" \

89 --output-format json \

90 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'

91```

92 

93<Tip>

94 Utilizza uno strumento come [jq](https://jqlang.github.io/jq/) per analizzare la risposta ed estrarre campi specifici:

95 

96 ```bash theme={null}

97 # Extract the text result

98 claude -p "Summarize this project" --output-format json | jq -r '.result'

99 

100 # Extract structured output

101 claude -p "Extract function names from auth.py" \

102 --output-format json \

103 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' \

104 | jq '.structured_output'

105 ```

106</Tip>

107 

108### Streaming delle risposte

109 

110Utilizza `--output-format stream-json` con `--verbose` e `--include-partial-messages` per ricevere i token mentre vengono generati. Ogni riga è un oggetto JSON che rappresenta un evento:

111 

112```bash theme={null}

113claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages

114```

115 

116L'esempio seguente utilizza [jq](https://jqlang.github.io/jq/) per filtrare i delta di testo e visualizzare solo il testo in streaming. Il flag `-r` restituisce stringhe non elaborate (senza virgolette) e `-j` si unisce senza newline in modo che i token fluiscano continuamente:

117 

118```bash theme={null}

119claude -p "Write a poem" --output-format stream-json --verbose --include-partial-messages | \

120 jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'

121```

122 

123Quando una richiesta API non riesce con un errore ritentabile, Claude Code emette un evento `system/api_retry` prima di ritentare. Puoi utilizzarlo per visualizzare il progresso del tentativo o implementare una logica di backoff personalizzata.

124 

125| Campo | Tipo | Descrizione |

126| ---------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

127| `type` | `"system"` | tipo di messaggio |

128| `subtype` | `"api_retry"` | identifica questo come un evento di tentativo |

129| `attempt` | integer | numero del tentativo corrente, a partire da 1 |

130| `max_retries` | integer | tentativi totali consentiti |

131| `retry_delay_ms` | integer | millisecondi fino al prossimo tentativo |

132| `error_status` | integer o null | codice di stato HTTP, o `null` per errori di connessione senza risposta HTTP |

133| `error` | string | categoria di errore: `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `rate_limit`, `invalid_request`, `server_error`, `max_output_tokens`, o `unknown` |

134| `uuid` | string | identificatore evento univoco |

135| `session_id` | string | sessione a cui appartiene l'evento |

136 

137L'evento `system/init` segnala i metadati della sessione inclusi il modello, gli strumenti, i server MCP e i plugin caricati. È il primo evento nel flusso a meno che [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/it/env-vars) non sia impostato, nel qual caso gli eventi `plugin_install` lo precedono. Utilizza i campi plugin per far fallire CI quando un plugin non è stato caricato:

138 

139| Campo | Tipo | Descrizione |

140| --------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

141| `plugins` | array | plugin che sono stati caricati con successo, ognuno con `name` e `path` |

142| `plugin_errors` | array | errori di caricamento del plugin come una versione di dipendenza non soddisfatta, ognuno con `plugin`, `type` e `message`. I plugin interessati vengono declassati e assenti da `plugins`. La chiave viene omessa quando non ci sono errori |

143 

144Quando [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/it/env-vars) è impostato, Claude Code emette eventi `system/plugin_install` mentre i plugin del marketplace si installano prima del primo turno. Utilizza questi per visualizzare il progresso dell'installazione nella tua interfaccia utente.

145 

146| Campo | Tipo | Descrizione |

147| ------------ | ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |

148| `type` | `"system"` | tipo di messaggio |

149| `subtype` | `"plugin_install"` | identifica questo come un evento di installazione plugin |

150| `status` | `"started"`, `"installed"`, `"failed"`, o `"completed"` | `started` e `completed` racchiudono l'installazione complessiva; `installed` e `failed` segnalano i singoli marketplace |

151| `name` | string, opzionale | nome del marketplace, presente su `installed` e `failed` |

152| `error` | string, opzionale | messaggio di errore, presente su `failed` |

153| `uuid` | string | identificatore evento univoco |

154| `session_id` | string | sessione a cui appartiene l'evento |

155 

156Per lo streaming programmatico con callback e oggetti messaggio, consulta [Stream responses in real-time](/it/agent-sdk/streaming-output) nella documentazione dell'Agent SDK.

157 

158### Approvare automaticamente gli strumenti

159 

160Utilizza `--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:

161 

162```bash theme={null}

163claude -p "Run the test suite and fix any failures" \

164 --allowedTools "Bash,Read,Edit"

165```

166 

167Per impostare una linea di base per l'intera sessione invece di elencare i singoli strumenti, passa una [modalità di autorizzazione](/it/permission-modes). `dontAsk` nega qualsiasi cosa non sia nelle tue regole `permissions.allow` o nel [set di comandi di sola lettura](/it/permissions#read-only-commands), utile per esecuzioni CI bloccate. `acceptEdits` consente a Claude di scrivere file senza chiedere e approva automaticamente anche i comandi del filesystem comuni come `mkdir`, `touch`, `mv` e `cp`. Gli altri comandi shell e le richieste di rete hanno ancora bisogno di una voce `--allowedTools` o di una regola `permissions.allow`, altrimenti l'esecuzione si interrompe quando uno viene tentato:

168 

169```bash theme={null}

170claude -p "Apply the lint fixes" --permission-mode acceptEdits

171```

172 

173### Creare un commit

174 

175Questo esempio esamina le modifiche in staging e crea un commit con un messaggio appropriato:

176 

177```bash theme={null}

178claude -p "Look at my staged changes and create an appropriate commit" \

179 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"

180```

181 

182Il flag `--allowedTools` utilizza la [sintassi delle regole di autorizzazione](/it/settings#permission-rule-syntax). Lo spazio finale ` *` abilita la corrispondenza dei prefissi, quindi `Bash(git diff *)` consente qualsiasi comando che inizia con `git diff`. Lo spazio prima di `*` è importante: senza di esso, `Bash(git diff*)` corrisponderebbe anche a `git diff-index`.

183 

184<Note>

185 Le [skills](/it/skills) richiamate dall'utente come `/commit` e i [comandi incorporati](/it/commands) sono disponibili solo in modalità interattiva. In modalità `-p`, descrivi invece l'attività che desideri completare.

186</Note>

187 

188### Personalizzare il prompt di sistema

189 

190Utilizza `--append-system-prompt` per aggiungere istruzioni mantenendo il comportamento predefinito di Claude Code. Questo esempio invia un diff PR a Claude e gli istruisce di esaminarlo per vulnerabilità di sicurezza:

191 

192```bash theme={null}

193gh pr diff "$1" | claude -p \

194 --append-system-prompt "You are a security engineer. Review for vulnerabilities." \

195 --output-format json

196```

197 

198Consulta i [flag del prompt di sistema](/it/cli-reference#system-prompt-flags) per ulteriori opzioni incluso `--system-prompt` per sostituire completamente il prompt predefinito.

199 

200### Continuare le conversazioni

201 

202Utilizza `--continue` per continuare la conversazione più recente, oppure `--resume` con un ID sessione per continuare una conversazione specifica. Questo esempio esegue una revisione, quindi invia prompt di follow-up:

203 

204```bash theme={null}

205# First request

206claude -p "Review this codebase for performance issues"

207 

208# Continue the most recent conversation

209claude -p "Now focus on the database queries" --continue

210claude -p "Generate a summary of all issues found" --continue

211```

212 

213Se stai eseguendo più conversazioni, acquisisci l'ID sessione per riprendere una specifica:

214 

215```bash theme={null}

216session_id=$(claude -p "Start a review" --output-format json | jq -r '.session_id')

217claude -p "Continue that review" --resume "$session_id"

218```

219 

220## Passaggi successivi

221 

222* [Agent SDK quickstart](/it/agent-sdk/quickstart): costruisci il tuo primo agente con Python o TypeScript

223* [CLI reference](/it/cli-reference): tutti i flag e le opzioni CLI

224* [GitHub Actions](/it/github-actions): utilizza l'Agent SDK nei flussi di lavoro GitHub

225* [GitLab CI/CD](/it/gitlab-ci-cd): utilizza l'Agent SDK nelle pipeline GitLab

hooks.md +2653 −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# Riferimento dei hooks

6 

7> Riferimento per gli eventi dei hook di Claude Code, schema di configurazione, formati JSON di input/output, codici di uscita, hook asincroni, hook HTTP, hook di prompt e hook degli strumenti MCP.

8 

9<Tip>

10 Per una guida di avvio rapido con esempi, consultare [Automatizzare i flussi di lavoro con i hook](/it/hooks-guide).

11</Tip>

12 

13Gli hook sono comandi shell definiti dall'utente, endpoint HTTP o prompt LLM che si eseguono automaticamente in punti specifici del ciclo di vita di Claude Code. 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. Se si stanno configurando i hook per la prima volta, iniziare con la [guida](/it/hooks-guide).

14 

15## Ciclo di vita dei hook

16 

17Gli hook si attivano in punti specifici durante una sessione di Claude Code. Quando un evento si attiva e un matcher corrisponde, Claude Code passa il contesto JSON dell'evento al gestore del hook. Per i hook di comando, l'input arriva su stdin. Per i hook HTTP, arriva come corpo della richiesta POST. Il gestore può quindi ispezionare l'input, intraprendere un'azione e facoltativamente restituire una decisione. Gli eventi si dividono in tre cadenze: una volta per sessione (`SessionStart`, `SessionEnd`), una volta per turno (`UserPromptSubmit`, `Stop`, `StopFailure`) e ad ogni chiamata dello strumento all'interno del ciclo agentico (`PreToolUse`, `PostToolUse`):

18 

19<div style={{maxWidth: "500px", margin: "0 auto"}}>

20 <Frame>

21 <img src="https://mintcdn.com/claude-code/ZIW26Z9pnpsXLhbS/images/hooks-lifecycle.svg?fit=max&auto=format&n=ZIW26Z9pnpsXLhbS&q=85&s=ee23691324deb6501df09bfdae560b64" alt="Diagramma del ciclo di vita dei hook che mostra Setup facoltativo che alimenta SessionStart, quindi un ciclo per turno contenente UserPromptSubmit, UserPromptExpansion per slash commands, il ciclo agentico annidato (PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, PostToolBatch, SubagentStart/Stop, TaskCreated, TaskCompleted) e Stop o StopFailure, seguito da TeammateIdle, PreCompact, PostCompact e SessionEnd, con Elicitation e ElicitationResult annidati all'interno dell'esecuzione dello strumento MCP, PermissionDenied come ramo laterale di PermissionRequest per i rifiuti in modalità automatica, e WorktreeCreate, WorktreeRemove, Notification, ConfigChange, InstructionsLoaded, CwdChanged e FileChanged come eventi asincroni autonomi" width="520" height="1228" data-path="images/hooks-lifecycle.svg" />

22 </Frame>

23</div>

24 

25La tabella seguente riassume quando si attiva ogni evento. La sezione [Hook events](#hook-events) documenta lo schema di input completo e le opzioni di controllo della decisione per ognuno.

26 

27| Event | When it fires |

28| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

29| `SessionStart` | When a session begins or resumes |

30| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

31| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

32| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

33| `PreToolUse` | Before a tool call executes. Can block it |

34| `PermissionRequest` | When a permission dialog appears |

35| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

36| `PostToolUse` | After a tool call succeeds |

37| `PostToolUseFailure` | After a tool call fails |

38| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

39| `Notification` | When Claude Code sends a notification |

40| `SubagentStart` | When a subagent is spawned |

41| `SubagentStop` | When a subagent finishes |

42| `TaskCreated` | When a task is being created via `TaskCreate` |

43| `TaskCompleted` | When a task is being marked as completed |

44| `Stop` | When Claude finishes responding |

45| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

46| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

47| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

48| `ConfigChange` | When a configuration file changes during a session |

49| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

50| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

51| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

52| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

53| `PreCompact` | Before context compaction |

54| `PostCompact` | After context compaction completes |

55| `Elicitation` | When an MCP server requests user input during a tool call |

56| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

57| `SessionEnd` | When a session terminates |

58 

59### Come si risolve un hook

60 

61Per vedere come questi elementi si combinano, considerare questo hook `PreToolUse` che blocca i comandi shell distruttivi. Il `matcher` si restringe alle chiamate dello strumento Bash e la condizione `if` si restringe ulteriormente ai comandi Bash che corrispondono a `rm *`, quindi `block-rm.sh` viene eseguito solo quando entrambi i filtri corrispondono:

62 

63```json theme={null}

64{

65 "hooks": {

66 "PreToolUse": [

67 {

68 "matcher": "Bash",

69 "hooks": [

70 {

71 "type": "command",

72 "if": "Bash(rm *)",

73 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-rm.sh"

74 }

75 ]

76 }

77 ]

78 }

79}

80```

81 

82Lo script legge l'input JSON da stdin, estrae il comando e restituisce una `permissionDecision` di `"deny"` se contiene `rm -rf`:

83 

84```bash theme={null}

85#!/bin/bash

86# .claude/hooks/block-rm.sh

87COMMAND=$(jq -r '.tool_input.command')

88 

89if echo "$COMMAND" | grep -q 'rm -rf'; then

90 jq -n '{

91 hookSpecificOutput: {

92 hookEventName: "PreToolUse",

93 permissionDecision: "deny",

94 permissionDecisionReason: "Destructive command blocked by hook"

95 }

96 }'

97else

98 exit 0 # allow the command

99fi

100```

101 

102Supponiamo che Claude Code decida di eseguire `Bash "rm -rf /tmp/build"`. Ecco cosa accade:

103 

104<Frame>

105 <img src="https://mintcdn.com/claude-code/-tYw1BD_DEqfyyOZ/images/hook-resolution.svg?fit=max&auto=format&n=-tYw1BD_DEqfyyOZ&q=85&s=c73ebc1eeda2037570427d7af1e0a891" alt="Flusso di risoluzione del hook: l'evento PreToolUse si attiva, il matcher controlla la corrispondenza di Bash, la condizione if controlla la corrispondenza di Bash(rm *), il gestore del hook viene eseguito, il risultato ritorna a Claude Code" width="930" height="290" data-path="images/hook-resolution.svg" />

106</Frame>

107 

108<Steps>

109 <Step title="L'evento si attiva">

110 L'evento `PreToolUse` si attiva. Claude Code invia l'input dello strumento come JSON su stdin al hook:

111 

112 ```json theme={null}

113 { "tool_name": "Bash", "tool_input": { "command": "rm -rf /tmp/build" }, ... }

114 ```

115 </Step>

116 

117 <Step title="Il matcher controlla">

118 Il matcher `"Bash"` corrisponde al nome dello strumento, quindi questo gruppo di hook si attiva. Se si omette il matcher o si utilizza `"*"`, il gruppo si attiva ad ogni occorrenza dell'evento.

119 </Step>

120 

121 <Step title="La condizione if controlla">

122 La condizione `if` `"Bash(rm *)"` corrisponde perché `rm -rf /tmp/build` è un sottocomando che corrisponde a `rm *`, quindi questo gestore viene eseguito. Se il comando fosse stato `npm test`, il controllo `if` avrebbe fallito e `block-rm.sh` non sarebbe mai stato eseguito, evitando il sovraccarico di spawn del processo. Il campo `if` è facoltativo; senza di esso, ogni gestore nel gruppo corrispondente viene eseguito.

123 </Step>

124 

125 <Step title="Il gestore del hook viene eseguito">

126 Lo script ispeziona il comando completo e trova `rm -rf`, quindi stampa una decisione su stdout:

127 

128 ```json theme={null}

129 {

130 "hookSpecificOutput": {

131 "hookEventName": "PreToolUse",

132 "permissionDecision": "deny",

133 "permissionDecisionReason": "Destructive command blocked by hook"

134 }

135 }

136 ```

137 

138 Se il comando fosse stato una variante più sicura di `rm` come `rm file.txt`, lo script avrebbe raggiunto `exit 0` invece, che dice a Claude Code di consentire la chiamata dello strumento senza ulteriori azioni.

139 </Step>

140 

141 <Step title="Claude Code agisce sul risultato">

142 Claude Code legge la decisione JSON, blocca la chiamata dello strumento e mostra a Claude il motivo.

143 </Step>

144</Steps>

145 

146La sezione [Configuration](#configuration) seguente documenta lo schema completo, e ogni sezione [hook event](#hook-events) documenta quale input riceve il comando e quale output può restituire.

147 

148## Configurazione

149 

150Gli hook sono definiti in file di impostazioni JSON. La configurazione ha tre livelli di annidamento:

151 

1521. Scegliere un [hook event](#hook-events) a cui rispondere, come `PreToolUse` o `Stop`

1532. Aggiungere un [matcher group](#matcher-patterns) per filtrare quando si attiva, come "solo per lo strumento Bash"

1543. Definire uno o più [hook handlers](#hook-handler-fields) da eseguire quando corrisponde

155 

156Consultare [Come si risolve un hook](#how-a-hook-resolves) sopra per una procedura dettagliata completa con un esempio annotato.

157 

158<Note>

159 Questa pagina utilizza termini specifici per ogni livello: **hook event** per il punto del ciclo di vita, **matcher group** per il filtro e **hook handler** per il comando shell, endpoint HTTP, strumento MCP, prompt o agente che viene eseguito. "Hook" da solo si riferisce alla funzionalità generale.

160</Note>

161 

162### Posizioni dei hook

163 

164Il luogo in cui si definisce un hook determina il suo ambito:

165 

166| Posizione | Ambito | Condivisibile |

167| :-------------------------------------------------------- | :---------------------------- | :--------------------------------------- |

168| `~/.claude/settings.json` | Tutti i progetti | No, locale al computer |

169| `.claude/settings.json` | Singolo progetto | Sì, può essere committato nel repository |

170| `.claude/settings.local.json` | Singolo progetto | No, gitignored |

171| Impostazioni della politica gestita | Organizzazione intera | Sì, controllato dall'amministratore |

172| [Plugin](/it/plugins) `hooks/hooks.json` | Quando il plugin è abilitato | Sì, fornito con il plugin |

173| [Skill](/it/skills) o [agent](/it/sub-agents) frontmatter | Mentre il componente è attivo | Sì, definito nel file del componente |

174 

175Per i dettagli sulla risoluzione del file di impostazioni, consultare [settings](/it/settings). Gli amministratori aziendali possono utilizzare `allowManagedHooksOnly` per bloccare i hook dell'utente, del progetto e del plugin. Gli hook dai plugin forzatamente abilitati nelle impostazioni gestite `enabledPlugins` sono esenti, quindi gli amministratori possono distribuire hook verificati attraverso un marketplace dell'organizzazione. Consultare [Hook configuration](/it/settings#hook-configuration).

176 

177### Modelli di matcher

178 

179Il campo `matcher` filtra quando gli hook si attivano. Come viene valutato un matcher dipende dai caratteri che contiene:

180 

181| Valore del matcher | Valutato come | Esempio |

182| :--------------------------------- | :---------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |

183| `"*"`, `""` o omesso | Corrisponde a tutti | si attiva ad ogni occorrenza dell'evento |

184| Solo lettere, cifre, `_` e `\|` | Stringa esatta o elenco di stringhe esatte separate da `\|` | `Bash` corrisponde solo allo strumento Bash; `Edit\|Write` corrisponde a entrambi gli strumenti esattamente |

185| Contiene qualsiasi altro carattere | Espressione regolare JavaScript | `^Notebook` corrisponde a qualsiasi strumento che inizia con Notebook; `mcp__memory__.*` corrisponde a ogni strumento dal server `memory` |

186 

187L'evento `FileChanged` non segue queste regole quando costruisce il suo elenco di osservazione. Consultare [FileChanged](#filechanged).

188 

189Ogni tipo di evento corrisponde a un campo diverso:

190 

191| Evento | Su cosa filtra il matcher | Valori matcher di esempio |

192| :------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |

193| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nome dello strumento | `Bash`, `Edit\|Write`, `mcp__.*` |

194| `SessionStart` | come è iniziata la sessione | `startup`, `resume`, `clear`, `compact` |

195| `Setup` | quale flag CLI ha attivato la configurazione | `init`, `maintenance` |

196| `SessionEnd` | perché è terminata la sessione | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

197| `Notification` | tipo di notifica | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

198| `SubagentStart` | tipo di agente | `general-purpose`, `Explore`, `Plan` o nomi di agenti personalizzati |

199| `PreCompact`, `PostCompact` | cosa ha attivato la compattazione | `manual`, `auto` |

200| `SubagentStop` | tipo di agente | stessi valori di `SubagentStart` |

201| `ConfigChange` | fonte di configurazione | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

202| `CwdChanged` | nessun supporto matcher | si attiva sempre ad ogni cambio di directory |

203| `FileChanged` | nomi di file letterali da osservare (consultare [FileChanged](#filechanged)) | `.envrc\|.env` |

204| `StopFailure` | tipo di errore | `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens`, `unknown` |

205| `InstructionsLoaded` | motivo del caricamento | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

206| `UserPromptExpansion` | nome del comando | i nomi della skill o del comando |

207| `Elicitation` | nome del server MCP | i nomi dei server MCP configurati |

208| `ElicitationResult` | nome del server MCP | stessi valori di `Elicitation` |

209| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove` | nessun supporto matcher | si attiva sempre ad ogni occorrenza |

210 

211Il matcher viene eseguito su un campo dall'[input JSON](#hook-input-and-output) che Claude Code invia al hook su stdin. Per gli eventi degli strumenti, quel campo è `tool_name`. Ogni sezione [hook event](#hook-events) elenca l'insieme completo di valori matcher e lo schema di input per quell'evento.

212 

213Questo esempio esegue uno script di linting solo quando Claude scrive o modifica un file:

214 

215```json theme={null}

216{

217 "hooks": {

218 "PostToolUse": [

219 {

220 "matcher": "Edit|Write",

221 "hooks": [

222 {

223 "type": "command",

224 "command": "/path/to/lint-check.sh"

225 }

226 ]

227 }

228 ]

229 }

230}

231```

232 

233`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove` e `CwdChanged` non supportano i matcher e si attivano sempre ad ogni occorrenza. Se si aggiunge un campo `matcher` a questi eventi, viene silenziosamente ignorato.

234 

235Per gli eventi degli strumenti, è possibile filtrare più strettamente impostando il campo [`if`](#common-fields) sui singoli gestori del hook. `if` utilizza la [sintassi delle regole di autorizzazione](/it/permissions) per corrispondere al nome dello strumento e agli argomenti insieme, quindi `"Bash(git *)"` viene eseguito quando qualsiasi sottocomando dell'input Bash corrisponde a `git *` e `"Edit(*.ts)"` viene eseguito solo per i file TypeScript.

236 

237#### Corrispondere ai strumenti MCP

238 

239Gli strumenti del server [MCP](/it/mcp) appaiono come strumenti regolari negli eventi degli strumenti (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), quindi è possibile farvi corrispondere lo stesso modo in cui si fa corrispondere qualsiasi altro nome di strumento.

240 

241Gli strumenti MCP seguono il modello di denominazione `mcp__<server>__<tool>`, ad esempio:

242 

243* `mcp__memory__create_entities`: strumento create entities del server Memory

244* `mcp__filesystem__read_file`: strumento read file del server Filesystem

245* `mcp__github__search_repositories`: strumento search del server GitHub

246 

247Per corrispondere a ogni strumento da un server, aggiungere `.*` al prefisso del server. `.*` è obbligatorio: un matcher come `mcp__memory` contiene solo lettere e sottolineature, quindi viene confrontato come stringa esatta e non corrisponde a nessuno strumento.

248 

249* `mcp__memory__.*` corrisponde a tutti gli strumenti dal server `memory`

250* `mcp__.*__write.*` corrisponde a qualsiasi strumento il cui nome inizia con `write` da qualsiasi server

251 

252Questo esempio registra tutte le operazioni del server memory e convalida le operazioni di scrittura da qualsiasi server MCP:

253 

254```json theme={null}

255{

256 "hooks": {

257 "PreToolUse": [

258 {

259 "matcher": "mcp__memory__.*",

260 "hooks": [

261 {

262 "type": "command",

263 "command": "echo 'Memory operation initiated' >> ~/mcp-operations.log"

264 }

265 ]

266 },

267 {

268 "matcher": "mcp__.*__write.*",

269 "hooks": [

270 {

271 "type": "command",

272 "command": "/home/user/scripts/validate-mcp-write.py"

273 }

274 ]

275 }

276 ]

277 }

278}

279```

280 

281### Campi del gestore del hook

282 

283Ogni oggetto nell'array `hooks` interno è un gestore del hook: il comando shell, endpoint HTTP, strumento MCP, prompt LLM o agente che viene eseguito quando il matcher corrisponde. Ci sono cinque tipi:

284 

285* **[Command hooks](#command-hook-fields)** (`type: "command"`): eseguono un comando shell. Lo script riceve l'[input JSON](#hook-input-and-output) dell'evento su stdin e comunica i risultati attraverso codici di uscita e stdout.

286* **[HTTP hooks](#http-hook-fields)** (`type: "http"`): inviano l'input JSON dell'evento come richiesta HTTP POST a un URL. L'endpoint comunica i risultati attraverso il corpo della risposta utilizzando lo stesso [formato JSON di output](#json-output) dei command hook.

287* **[MCP tool hooks](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): chiamano uno strumento su un [server MCP](/it/mcp) già connesso. L'output di testo dello strumento viene trattato come stdout del command hook.

288* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): inviano un prompt a un modello Claude per la valutazione a turno singolo. Il modello restituisce una decisione sì/no come JSON. Consultare [Prompt-based hooks](#prompt-based-hooks).

289* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): generano un subagent che può utilizzare strumenti come Read, Grep e Glob per verificare le condizioni prima di restituire una decisione. Gli agent hook sono sperimentali e potrebbero cambiare. Consultare [Agent-based hooks](#agent-based-hooks).

290 

291#### Campi comuni

292 

293Questi campi si applicano a tutti i tipi di hook:

294 

295| Campo | Obbligatorio | Descrizione |

296| :-------------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

297| `type` | sì | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` o `"agent"` |

298| `if` | no | Sintassi della regola di autorizzazione per filtrare quando questo hook viene eseguito, come `"Bash(git *)"` o `"Edit(*.ts)"`. L'hook viene eseguito solo se la chiamata dello strumento corrisponde al modello, o se un comando Bash è troppo complesso da analizzare. Valutato solo su eventi degli strumenti: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` e `PermissionDenied`. Su altri eventi, un hook con `if` impostato non viene mai eseguito. Utilizza la stessa sintassi delle [regole di autorizzazione](/it/permissions) |

299| `timeout` | no | Secondi prima dell'annullamento. Impostazioni predefinite: 600 per command, 30 per prompt, 60 per agent |

300| `statusMessage` | no | Messaggio spinner personalizzato visualizzato mentre l'hook viene eseguito |

301| `once` | no | Se `true`, viene eseguito una sola volta per sessione e poi rimosso. Solo onorato per gli hook dichiarati nel [frontmatter della skill](#hooks-in-skills-and-agents); ignorato nei file di impostazioni e nel frontmatter dell'agente |

302 

303Il campo `if` contiene esattamente una regola di autorizzazione. Non esiste sintassi `&&`, `||` o di elenco per combinare le regole; per applicare più condizioni, definire un gestore del hook separato per ciascuna. Per Bash, la regola viene confrontata con ogni sottocomando dell'input dello strumento dopo che gli assegnamenti `VAR=value` iniziali vengono rimossi, quindi `if: "Bash(git push *)"` corrisponde sia a `FOO=bar git push` che a `npm test && git push`. L'hook viene eseguito se qualsiasi sottocomando corrisponde e viene sempre eseguito quando il comando è troppo complesso da analizzare.

304 

305#### Campi del command hook

306 

307Oltre ai [campi comuni](#common-fields), i command hook accettano questi campi:

308 

309| Campo | Obbligatorio | Descrizione |

310| :------------ | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

311| `command` | sì | Comando shell da eseguire |

312| `async` | no | Se `true`, viene eseguito in background senza bloccare. Consultare [Run hooks in the background](#run-hooks-in-the-background) |

313| `asyncRewake` | no | Se `true`, viene eseguito in background e riattiva Claude su codice di uscita 2. Implica `async`. Lo stderr del hook, o stdout se stderr è vuoto, viene mostrato a Claude come promemoria di sistema in modo che possa reagire a un guasto in background a lunga esecuzione |

314| `shell` | no | Shell da utilizzare per questo hook. Accetta `"bash"` (predefinito) o `"powershell"`. L'impostazione `"powershell"` esegue il comando tramite PowerShell su Windows. Non richiede `CLAUDE_CODE_USE_POWERSHELL_TOOL` poiché gli hook generano PowerShell direttamente |

315 

316#### Campi del HTTP hook

317 

318Oltre ai [campi comuni](#common-fields), gli HTTP hook accettano questi campi:

319 

320| Campo | Obbligatorio | Descrizione |

321| :--------------- | :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

322| `url` | sì | URL a cui inviare la richiesta POST |

323| `headers` | no | Intestazioni HTTP aggiuntive come coppie chiave-valore. I valori supportano l'interpolazione delle variabili di ambiente utilizzando la sintassi `$VAR_NAME` o `${VAR_NAME}`. Solo le variabili elencate in `allowedEnvVars` vengono risolte |

324| `allowedEnvVars` | no | Elenco dei nomi delle variabili di ambiente che possono essere interpolate nei valori dell'intestazione. I riferimenti alle variabili non elencate vengono sostituiti con stringhe vuote. Obbligatorio per qualsiasi interpolazione di variabili di ambiente |

325 

326Claude Code invia l'[input JSON](#hook-input-and-output) del hook come corpo della richiesta POST con `Content-Type: application/json`. Il corpo della risposta utilizza lo stesso [formato JSON di output](#json-output) dei command hook.

327 

328La gestione degli errori differisce dai command hook: le risposte non-2xx, i guasti di connessione e i timeout producono tutti errori non bloccanti che consentono l'esecuzione di continuare. Per bloccare una chiamata dello strumento o negare un'autorizzazione, restituire una risposta 2xx con un corpo JSON contenente `decision: "block"` o un `hookSpecificOutput` con `permissionDecision: "deny"`.

329 

330Questo esempio invia gli eventi `PreToolUse` a un servizio di convalida locale, autenticandosi con un token dalla variabile di ambiente `MY_TOKEN`:

331 

332```json theme={null}

333{

334 "hooks": {

335 "PreToolUse": [

336 {

337 "matcher": "Bash",

338 "hooks": [

339 {

340 "type": "http",

341 "url": "http://localhost:8080/hooks/pre-tool-use",

342 "timeout": 30,

343 "headers": {

344 "Authorization": "Bearer $MY_TOKEN"

345 },

346 "allowedEnvVars": ["MY_TOKEN"]

347 }

348 ]

349 }

350 ]

351 }

352}

353```

354 

355#### Campi del MCP tool hook

356 

357Oltre ai [campi comuni](#common-fields), gli MCP tool hook accettano questi campi:

358 

359| Campo | Obbligatorio | Descrizione |

360| :------- | :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

361| `server` | sì | Nome di un server MCP configurato. Il server deve essere già connesso; l'hook non attiva mai un flusso OAuth o di connessione |

362| `tool` | sì | Nome dello strumento da chiamare su quel server |

363| `input` | no | Argomenti passati allo strumento. I valori stringa supportano la sostituzione `${path}` dall'[input JSON](#hook-input-and-output) del hook, come `"${tool_input.file_path}"` |

364 

365L'output di testo dello strumento viene trattato come stdout del command hook: se analizzato come [output JSON](#json-output) valido viene elaborato come una decisione, altrimenti viene mostrato come testo semplice. Se il server denominato non è connesso, o lo strumento restituisce `isError: true`, l'hook produce un errore non bloccante e l'esecuzione continua.

366 

367Gli MCP tool hook sono disponibili su ogni hook event una volta che Claude Code si è connesso ai server MCP. `SessionStart` e `Setup` in genere si attivano prima che i server finiscano di connettersi, quindi gli hook su questi eventi dovrebbero aspettarsi l'errore "not connected" alla prima esecuzione.

368 

369Questo esempio chiama lo strumento `security_scan` sul server MCP `my_server` dopo ogni `Write` o `Edit`, passando il percorso del file modificato:

370 

371```json theme={null}

372{

373 "hooks": {

374 "PostToolUse": [

375 {

376 "matcher": "Write|Edit",

377 "hooks": [

378 {

379 "type": "mcp_tool",

380 "server": "my_server",

381 "tool": "security_scan",

382 "input": { "file_path": "${tool_input.file_path}" }

383 }

384 ]

385 }

386 ]

387 }

388}

389```

390 

391#### Campi del prompt hook e agent hook

392 

393Oltre ai [campi comuni](#common-fields), i prompt hook e agent hook accettano questi campi:

394 

395| Campo | Obbligatorio | Descrizione |

396| :------- | :----------- | :-------------------------------------------------------------------------------------------------------- |

397| `prompt` | sì | Testo del prompt da inviare al modello. Utilizzare `$ARGUMENTS` come segnaposto per l'input JSON del hook |

398| `model` | no | Modello da utilizzare per la valutazione. Impostazione predefinita: un modello veloce |

399 

400Tutti gli hook corrispondenti vengono eseguiti in parallelo e i gestori identici vengono automaticamente deduplicati. I command hook vengono deduplicati per stringa di comando e gli HTTP hook vengono deduplicati per URL. I gestori vengono eseguiti nella directory corrente con l'ambiente di Claude Code. La variabile di ambiente `$CLAUDE_CODE_REMOTE` è impostata su `"true"` negli ambienti web remoti e non è impostata nella CLI locale.

401 

402### Fare riferimento agli script per percorso

403 

404Utilizzare le variabili di ambiente per fare riferimento agli script del hook relativi alla radice del progetto o del plugin, indipendentemente dalla directory di lavoro quando l'hook viene eseguito:

405 

406* `$CLAUDE_PROJECT_DIR`: la radice del progetto. Racchiudere tra virgolette per gestire i percorsi con spazi.

407* `${CLAUDE_PLUGIN_ROOT}`: la directory radice del plugin, per gli script forniti con un [plugin](/it/plugins). Cambia ad ogni aggiornamento del plugin.

408* `${CLAUDE_PLUGIN_DATA}`: la [directory di dati persistenti](/it/plugins-reference#persistent-data-directory) del plugin, per le dipendenze e lo stato che dovrebbero sopravvivere agli aggiornamenti del plugin.

409 

410<Tabs>

411 <Tab title="Script del progetto">

412 Questo esempio utilizza `$CLAUDE_PROJECT_DIR` per eseguire un controllo dello stile dalla directory `.claude/hooks/` del progetto dopo qualsiasi chiamata dello strumento `Write` o `Edit`:

413 

414 ```json theme={null}

415 {

416 "hooks": {

417 "PostToolUse": [

418 {

419 "matcher": "Write|Edit",

420 "hooks": [

421 {

422 "type": "command",

423 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-style.sh"

424 }

425 ]

426 }

427 ]

428 }

429 }

430 ```

431 </Tab>

432 

433 <Tab title="Script del plugin">

434 Definire i hook del plugin in `hooks/hooks.json` con un campo `description` facoltativo di livello superiore. Quando un plugin è abilitato, i suoi hook si uniscono ai hook dell'utente e del progetto.

435 

436 Questo esempio esegue uno script di formattazione fornito con il plugin:

437 

438 ```json theme={null}

439 {

440 "description": "Automatic code formatting",

441 "hooks": {

442 "PostToolUse": [

443 {

444 "matcher": "Write|Edit",

445 "hooks": [

446 {

447 "type": "command",

448 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh",

449 "timeout": 30

450 }

451 ]

452 }

453 ]

454 }

455 }

456 ```

457 

458 Consultare il [plugin components reference](/it/plugins-reference#hooks) per i dettagli sulla creazione dei hook del plugin.

459 </Tab>

460</Tabs>

461 

462### Hook in skills e agents

463 

464Oltre ai file di impostazioni e ai plugin, gli hook possono essere definiti direttamente in [skills](/it/skills) e [subagents](/it/sub-agents) utilizzando il frontmatter. Questi hook sono limitati al ciclo di vita del componente e vengono eseguiti solo quando quel componente è attivo.

465 

466Tutti gli hook event sono supportati. Per i subagent, gli hook `Stop` vengono automaticamente convertiti in `SubagentStop` poiché questo è l'evento che si attiva quando un subagent termina.

467 

468Gli hook utilizzano lo stesso formato di configurazione dei hook basati su impostazioni ma sono limitati alla durata del componente e vengono puliti quando termina.

469 

470Questa skill definisce un hook `PreToolUse` che esegue uno script di convalida della sicurezza prima di ogni comando `Bash`:

471 

472```yaml theme={null}

473---

474name: secure-operations

475description: Perform operations with security checks

476hooks:

477 PreToolUse:

478 - matcher: "Bash"

479 hooks:

480 - type: command

481 command: "./scripts/security-check.sh"

482---

483```

484 

485Gli agenti utilizzano lo stesso formato nel loro frontmatter YAML.

486 

487### Il menu `/hooks`

488 

489Digitare `/hooks` in Claude Code per aprire un browser di sola lettura per i hook configurati. Il menu mostra ogni hook event con un conteggio dei hook configurati, consente di approfondire i matcher e mostra i dettagli completi di ogni gestore del hook. Utilizzarlo per verificare la configurazione, controllare da quale file di impostazioni proviene un hook o ispezionare il comando, il prompt o l'URL di un hook.

490 

491Il menu visualizza tutti e cinque i tipi di hook: `command`, `prompt`, `agent`, `http` e `mcp_tool`. Ogni hook è etichettato con un prefisso `[type]` e una fonte che indica dove è stato definito:

492 

493* `User`: da `~/.claude/settings.json`

494* `Project`: da `.claude/settings.json`

495* `Local`: da `.claude/settings.local.json`

496* `Plugin`: da `hooks/hooks.json` di un plugin

497* `Session`: registrato in memoria per la sessione corrente

498* `Built-in`: registrato internamente da Claude Code

499 

500Selezionando un hook si apre una vista dettagliata che mostra il suo evento, matcher, tipo, file di origine e il comando, il prompt o l'URL completo. Il menu è di sola lettura: per aggiungere, modificare o rimuovere i hook, modificare il JSON delle impostazioni direttamente o chiedere a Claude di fare la modifica.

501 

502### Disabilitare o rimuovere i hook

503 

504Per rimuovere un hook, eliminare la sua voce dal file di impostazioni JSON.

505 

506Per disabilitare temporaneamente tutti gli hook senza rimuoverli, impostare `"disableAllHooks": true` nel file di impostazioni. Non c'è modo di disabilitare un singolo hook mantenendolo nella configurazione.

507 

508L'impostazione `disableAllHooks` rispetta la gerarchia delle impostazioni gestite. Se un amministratore ha configurato i hook attraverso le impostazioni della politica gestita, `disableAllHooks` impostato nelle impostazioni dell'utente, del progetto o locali non può disabilitare quei hook gestiti. Solo `disableAllHooks` impostato a livello di impostazioni gestite può disabilitare i hook gestiti.

509 

510Le modifiche dirette ai hook nei file di impostazioni vengono normalmente acquisite automaticamente dal file watcher.

511 

512## Input e output del hook

513 

514I command hook ricevono dati JSON tramite stdin e comunicano i risultati attraverso codici di uscita, stdout e stderr. Gli HTTP hook ricevono lo stesso JSON come corpo della richiesta POST e comunicano i risultati attraverso il corpo della risposta HTTP. Questa sezione copre i campi e il comportamento comuni a tutti gli eventi. Ogni sezione dell'evento sotto [Hook events](#hook-events) include il suo schema di input specifico e le opzioni di controllo della decisione.

515 

516### Campi di input comuni

517 

518Gli hook event ricevono questi campi come JSON, oltre ai campi specifici dell'evento documentati in ogni sezione [hook event](#hook-events). Per i command hook, questo JSON arriva tramite stdin. Per gli HTTP hook, arriva come corpo della richiesta POST.

519 

520| Campo | Descrizione |

521| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

522| `session_id` | Identificatore della sessione corrente |

523| `transcript_path` | Percorso al JSON della conversazione |

524| `cwd` | Directory di lavoro corrente quando l'hook viene invocato |

525| `permission_mode` | [Modalità di autorizzazione](/it/permissions#permission-modes) corrente: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` o `"bypassPermissions"`. Non tutti gli eventi ricevono questo campo: consultare ogni esempio JSON dell'evento di seguito per controllare |

526| `hook_event_name` | Nome dell'evento che si è attivato |

527 

528Quando si esegue con `--agent` o all'interno di un subagent, vengono inclusi due campi aggiuntivi:

529 

530| Campo | Descrizione |

531| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

532| `agent_id` | Identificatore univoco per il subagent. Presente solo quando l'hook si attiva all'interno di una chiamata di subagent. Utilizzare questo per distinguere le chiamate del hook del subagent dalle chiamate del thread principale. |

533| `agent_type` | Nome dell'agente (ad esempio, `"Explore"` o `"security-reviewer"`). Presente quando la sessione utilizza `--agent` o l'hook si attiva all'interno di un subagent. Per i subagent, il tipo del subagent ha la precedenza sul valore `--agent` della sessione. |

534 

535Ad esempio, un hook `PreToolUse` per un comando Bash riceve questo su stdin:

536 

537```json theme={null}

538{

539 "session_id": "abc123",

540 "transcript_path": "/home/user/.claude/projects/.../transcript.jsonl",

541 "cwd": "/home/user/my-project",

542 "permission_mode": "default",

543 "hook_event_name": "PreToolUse",

544 "tool_name": "Bash",

545 "tool_input": {

546 "command": "npm test"

547 }

548}

549```

550 

551I campi `tool_name` e `tool_input` sono specifici dell'evento. Ogni sezione [hook event](#hook-events) documenta i campi aggiuntivi per quell'evento.

552 

553### Output del codice di uscita

554 

555Il codice di uscita dal comando del hook dice a Claude Code se l'azione deve procedere, essere bloccata o essere ignorata.

556 

557**Exit 0** significa successo. Claude Code analizza stdout per i [campi di output JSON](#json-output). L'output JSON viene elaborato solo su exit 0. Per la maggior parte degli eventi, stdout viene scritto nel log di debug ma non mostrato nella trascrizione. Le eccezioni sono `UserPromptSubmit`, `UserPromptExpansion` e `SessionStart`, dove stdout viene aggiunto come contesto che Claude può vedere e su cui agire.

558 

559**Exit 2** significa un errore bloccante. Claude Code ignora stdout e qualsiasi JSON in esso. Invece, il testo stderr viene restituito a Claude come messaggio di errore. L'effetto dipende dall'evento: `PreToolUse` blocca la chiamata dello strumento, `UserPromptSubmit` rifiuta il prompt e così via. Consultare [exit code 2 behavior](#exit-code-2-behavior-per-event) per l'elenco completo.

560 

561**Qualsiasi altro codice di uscita** è un errore non bloccante per la maggior parte degli eventi hook. La trascrizione mostra un avviso `<hook name> hook error` seguito dalla prima riga di stderr, in modo da poter identificare la causa senza `--debug`. L'esecuzione continua e lo stderr completo viene scritto nel log di debug.

562 

563Ad esempio, uno script di comando hook che blocca i comandi Bash pericolosi:

564 

565```bash theme={null}

566#!/bin/bash

567# Legge l'input JSON da stdin, controlla il comando

568command=$(jq -r '.tool_input.command' < /dev/stdin)

569 

570if [[ "$command" == rm* ]]; then

571 echo "Blocked: rm commands are not allowed" >&2

572 exit 2 # Errore bloccante: la chiamata dello strumento viene impedita

573fi

574 

575exit 0 # Successo: la chiamata dello strumento procede

576```

577 

578<Warning>

579 Per la maggior parte degli eventi hook, solo il codice di uscita 2 blocca l'azione. Claude Code tratta il codice di uscita 1 come un errore non bloccante e procede con l'azione, anche se 1 è il codice di errore Unix convenzionale. Se l'hook è destinato a applicare una politica, utilizzare `exit 2`. L'eccezione è `WorktreeCreate`, dove qualsiasi codice di uscita diverso da zero interrompe la creazione del worktree.

580</Warning>

581 

582#### Comportamento del codice di uscita 2 per evento

583 

584Il codice di uscita 2 è il modo in cui un hook segnala "fermarsi, non farlo". L'effetto dipende dall'evento, perché alcuni eventi rappresentano azioni che possono essere bloccate (come una chiamata dello strumento che non è ancora accaduta) e altri rappresentano cose che sono già accadute o non possono essere prevenute.

585 

586| Hook event | Può bloccare? | Cosa accade su exit 2 |

587| :-------------------- | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |

588| `PreToolUse` | Sì | Blocca la chiamata dello strumento |

589| `PermissionRequest` | Sì | Nega l'autorizzazione |

590| `UserPromptSubmit` | Sì | Blocca l'elaborazione del prompt e cancella il prompt |

591| `UserPromptExpansion` | Sì | Blocca l'espansione |

592| `Stop` | Sì | Impedisce a Claude di fermarsi, continua la conversazione |

593| `SubagentStop` | Sì | Impedisce al subagent di fermarsi |

594| `TeammateIdle` | Sì | Impedisce al compagno di squadra di andare inattivo (il compagno di squadra continua a lavorare) |

595| `TaskCreated` | Sì | Annulla la creazione dell'attività |

596| `TaskCompleted` | Sì | Impedisce che l'attività sia contrassegnata come completata |

597| `ConfigChange` | Sì | Blocca la modifica della configurazione dall'avere effetto (tranne `policy_settings`) |

598| `StopFailure` | No | L'output e il codice di uscita vengono ignorati |

599| `PostToolUse` | No | Mostra stderr a Claude (lo strumento è già stato eseguito) |

600| `PostToolUseFailure` | No | Mostra stderr a Claude (lo strumento è già fallito) |

601| `PostToolBatch` | Sì | Interrompe il loop agentico prima della prossima chiamata del modello |

602| `PermissionDenied` | No | Il codice di uscita e stderr vengono ignorati (il rifiuto è già avvenuto). Utilizzare JSON `hookSpecificOutput.retry: true` per dire al modello che può riprovare |

603| `Notification` | No | Mostra stderr solo all'utente |

604| `SubagentStart` | No | Mostra stderr solo all'utente |

605| `SessionStart` | No | Mostra stderr solo all'utente |

606| `Setup` | No | Mostra stderr solo all'utente |

607| `SessionEnd` | No | Mostra stderr solo all'utente |

608| `CwdChanged` | No | Mostra stderr solo all'utente |

609| `FileChanged` | No | Mostra stderr solo all'utente |

610| `PreCompact` | Sì | Blocca la compattazione |

611| `PostCompact` | No | Mostra stderr solo all'utente |

612| `Elicitation` | Sì | Nega l'elicitazione |

613| `ElicitationResult` | Sì | Blocca la risposta (l'azione diventa decline) |

614| `WorktreeCreate` | Sì | Qualsiasi codice di uscita diverso da zero causa il fallimento della creazione del worktree |

615| `WorktreeRemove` | No | I guasti vengono registrati solo in modalità debug |

616| `InstructionsLoaded` | No | Il codice di uscita viene ignorato |

617 

618### Gestione della risposta HTTP

619 

620Gli HTTP hook utilizzano i codici di stato HTTP e i corpi della risposta invece dei codici di uscita e stdout:

621 

622* **2xx con corpo vuoto**: successo, equivalente al codice di uscita 0 senza output

623* **2xx con corpo di testo semplice**: successo, il testo viene aggiunto come contesto

624* **2xx con corpo JSON**: successo, analizzato utilizzando lo stesso schema [JSON output](#json-output) dei command hook

625* **Stato non-2xx**: errore non bloccante, l'esecuzione continua

626* **Guasto di connessione o timeout**: errore non bloccante, l'esecuzione continua

627 

628A differenza dei command hook, gli HTTP hook non possono segnalare un errore bloccante solo attraverso i codici di stato. Per bloccare una chiamata dello strumento o negare un'autorizzazione, restituire una risposta 2xx con un corpo JSON contenente i campi di decisione appropriati.

629 

630### Output JSON

631 

632I codici di uscita consentono di consentire o bloccare, ma l'output JSON offre un controllo più granulare. Invece di uscire con il codice 2 per bloccare, uscire 0 e stampare un oggetto JSON su stdout. Claude Code legge campi specifici da quel JSON per controllare il comportamento, incluso il [decision control](#decision-control) per bloccare, consentire o escalare all'utente.

633 

634<Note>

635 È necessario scegliere un approccio per hook, non entrambi: utilizzare i codici di uscita da soli per la segnalazione oppure uscire 0 e stampare JSON per il controllo strutturato. Claude Code elabora JSON solo su exit 0. Se si esce con 2, qualsiasi JSON viene ignorato.

636</Note>

637 

638Lo stdout del hook deve contenere solo l'oggetto JSON. Se il profilo shell stampa testo all'avvio, può interferire con l'analisi JSON. Consultare [JSON validation failed](/it/hooks-guide#json-validation-failed) nella guida alla risoluzione dei problemi.

639 

640L'output del hook iniettato nel contesto (`additionalContext`, `systemMessage` o stdout semplice) è limitato a 10.000 caratteri. L'output che supera questo limite viene salvato in un file e sostituito con un'anteprima e un percorso di file, nello stesso modo in cui vengono gestiti i risultati degli strumenti di grandi dimensioni.

641 

642L'oggetto JSON supporta tre tipi di campi:

643 

644* **Campi universali** come `continue` funzionano su tutti gli eventi. Questi sono elencati nella tabella seguente.

645* **`decision` e `reason` di livello superiore** vengono utilizzati da alcuni eventi per bloccare o fornire feedback.

646* **`hookSpecificOutput`** è un oggetto annidato per gli eventi che necessitano di un controllo più ricco. Richiede un campo `hookEventName` impostato sul nome dell'evento.

647 

648| Campo | Impostazione predefinita | Descrizione |

649| :--------------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |

650| `continue` | `true` | Se `false`, Claude interrompe completamente l'elaborazione dopo l'esecuzione del hook. Ha la precedenza su qualsiasi campo di decisione specifico dell'evento |

651| `stopReason` | nessuno | Messaggio mostrato all'utente quando `continue` è `false`. Non mostrato a Claude |

652| `suppressOutput` | `false` | Se `true`, omette stdout dal log di debug |

653| `systemMessage` | nessuno | Messaggio di avviso mostrato all'utente |

654 

655Per fermare Claude completamente indipendentemente dal tipo di evento:

656 

657```json theme={null}

658{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

659```

660 

661#### Aggiungere contesto per Claude

662 

663Il campo `additionalContext` passa una stringa dal hook nel contesto della finestra di Claude. Claude Code avvolge la stringa in un promemoria di sistema e la inserisce nella conversazione nel punto in cui l'hook si è attivato. Claude legge il promemoria nella prossima richiesta del modello, ma non appare come messaggio di chat nell'interfaccia.

664 

665Restituire `additionalContext` all'interno di `hookSpecificOutput` insieme al nome dell'evento:

666 

667```json theme={null}

668{

669 "hookSpecificOutput": {

670 "hookEventName": "PostToolUse",

671 "additionalContext": "This file is generated. Edit src/schema.ts and run `bun generate` instead."

672 }

673}

674```

675 

676Il punto in cui appare il promemoria dipende dall'evento:

677 

678* [SessionStart](#sessionstart), [Setup](#setup) e [SubagentStart](#subagentstart): all'inizio della conversazione, prima del primo prompt

679* [UserPromptSubmit](#userpromptsubmit) e [UserPromptExpansion](#userpromptexpansion): insieme al prompt inviato

680* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure) e [PostToolBatch](#posttoolbatch): accanto al risultato dello strumento

681 

682Quando più hook restituiscono `additionalContext` per lo stesso evento, Claude riceve tutti i valori. Se un valore supera 10.000 caratteri, Claude Code scrive il testo completo in un file nella directory della sessione e passa a Claude il percorso del file con un'anteprima breve.

683 

684Utilizzare `additionalContext` per informazioni che Claude dovrebbe conoscere sullo stato corrente dell'ambiente o sull'operazione appena eseguita:

685 

686* **Stato dell'ambiente**: il ramo corrente, la destinazione di distribuzione o i flag di funzionalità attivi

687* **Regole di progetto condizionali**: quale comando di test si applica al file appena modificato, quali directory sono di sola lettura in questo worktree

688* **Dati esterni**: problemi aperti assegnati a voi, risultati CI recenti, contenuto recuperato da un servizio interno

689 

690Per le istruzioni che non cambiano mai, preferire [CLAUDE.md](/it/memory). Si carica senza eseguire uno script ed è il luogo standard per le convenzioni di progetto statiche.

691 

692Scrivere il testo come affermazioni fattuali piuttosto che istruzioni di sistema imperative. Frasi come "La destinazione di distribuzione è produzione" o "Questo repository utilizza `bun test`" si leggono come informazioni di progetto. Il testo inquadrato come comandi di sistema fuori banda può attivare le difese di iniezione di prompt di Claude, il che causa a Claude di far emergere il testo a voi invece di trattarlo come contesto.

693 

694Una volta iniettato, il testo viene salvato nella trascrizione della sessione. Per gli eventi a metà sessione come `PostToolUse` o `UserPromptSubmit`, la ripresa con `--continue` o `--resume` riproduce il testo salvato piuttosto che rieseguire l'hook per i turni passati, quindi i valori come timestamp o SHA di commit diventano obsoleti al ripristino. Gli hook `SessionStart` vengono eseguiti di nuovo al ripristino con `source` impostato su `"resume"`, quindi possono aggiornare il loro contesto.

695 

696#### Controllo della decisione

697 

698Non ogni evento supporta il blocco o il controllo del comportamento attraverso JSON. Gli eventi che lo fanno utilizzano ciascuno un insieme diverso di campi per esprimere quella decisione. Utilizzare questa tabella come riferimento rapido prima di scrivere un hook:

699 

700| Eventi | Modello di decisione | Campi chiave |

701| :---------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

702| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | `decision` di livello superiore | `decision: "block"`, `reason` |

703| TeammateIdle, TaskCreated, TaskCompleted | Codice di uscita o `continue: false` | Il codice di uscita 2 blocca l'azione con feedback stderr. JSON `{"continue": false, "stopReason": "..."}` interrompe anche completamente il compagno di squadra, corrispondendo al comportamento dell'hook `Stop` |

704| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |

705| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |

706| PermissionDenied | `hookSpecificOutput` | `retry: true` dice al modello che può riprovare la chiamata dello strumento negata |

707| WorktreeCreate | percorso return | Il command hook stampa il percorso su stdout; l'HTTP hook restituisce `hookSpecificOutput.worktreePath`. Il fallimento del hook o il percorso mancante non riesce nella creazione |

708| Elicitation | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (valori dei campi del modulo per accept) |

709| ElicitationResult | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (valori dei campi del modulo override) |

710| WorktreeRemove, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, FileChanged | Nessuno | Nessun controllo della decisione. Utilizzato per effetti collaterali come la registrazione o la pulizia |

711 

712Ecco esempi di ogni modello in azione:

713 

714<Tabs>

715 <Tab title="Decisione di livello superiore">

716 Utilizzato da `UserPromptSubmit`, `UserPromptExpansion`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`, `Stop`, `SubagentStop`, `ConfigChange` e `PreCompact`. L'unico valore è `"block"`. Per consentire all'azione di procedere, omettere `decision` dal JSON o uscire 0 senza alcun JSON:

717 

718 ```json theme={null}

719 {

720 "decision": "block",

721 "reason": "Test suite must pass before proceeding"

722 }

723 ```

724 </Tab>

725 

726 <Tab title="PreToolUse">

727 Utilizza `hookSpecificOutput` per un controllo più ricco: consentire, negare, chiedere o rinviare. È anche possibile modificare l'input dello strumento prima che venga eseguito o iniettare contesto aggiuntivo per Claude. Consultare [PreToolUse decision control](#pretooluse-decision-control) per l'insieme completo di opzioni.

728 

729 ```json theme={null}

730 {

731 "hookSpecificOutput": {

732 "hookEventName": "PreToolUse",

733 "permissionDecision": "deny",

734 "permissionDecisionReason": "Database writes are not allowed"

735 }

736 }

737 ```

738 </Tab>

739 

740 <Tab title="PermissionRequest">

741 Utilizza `hookSpecificOutput` per consentire o negare una richiesta di autorizzazione per conto dell'utente. Quando si consente, è anche possibile modificare l'input dello strumento o applicare regole di autorizzazione in modo che l'utente non venga richiesto di nuovo. Consultare [PermissionRequest decision control](#permissionrequest-decision-control) per l'insieme completo di opzioni.

742 

743 ```json theme={null}

744 {

745 "hookSpecificOutput": {

746 "hookEventName": "PermissionRequest",

747 "decision": {

748 "behavior": "allow",

749 "updatedInput": {

750 "command": "npm run lint"

751 }

752 }

753 }

754 }

755 ```

756 </Tab>

757</Tabs>

758 

759Per esempi estesi inclusa la convalida dei comandi Bash, il filtraggio dei prompt e gli script di approvazione automatica, consultare [What you can automate](/it/hooks-guide#what-you-can-automate) nella guida e l'[implementazione di riferimento del validatore di comandi Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).

760 

761## Hook events

762 

763Ogni evento corrisponde a un punto nel ciclo di vita di Claude Code in cui gli hook possono essere eseguiti. Le sezioni seguenti sono ordinate per corrispondere al ciclo di vita: dalla configurazione della sessione attraverso il ciclo agentico alla fine della sessione. Ogni sezione descrive quando l'evento si attiva, quali matcher supporta, l'input JSON che riceve e come controllare il comportamento attraverso l'output.

764 

765### SessionStart

766 

767Viene eseguito quando Claude Code avvia una nuova sessione o riprende una sessione esistente. Utile per caricare il contesto di sviluppo come problemi esistenti o modifiche recenti al codebase, o per configurare le variabili di ambiente. Per il contesto statico che non richiede uno script, utilizzare [CLAUDE.md](/it/memory) invece.

768 

769SessionStart viene eseguito ad ogni sessione, quindi mantenere questi hook veloci. Solo gli hook `type: "command"` e `type: "mcp_tool"` sono supportati.

770 

771Il valore del matcher corrisponde a come è stata avviata la sessione:

772 

773| Matcher | Quando si attiva |

774| :-------- | :----------------------------------- |

775| `startup` | Nuova sessione |

776| `resume` | `--resume`, `--continue` o `/resume` |

777| `clear` | `/clear` |

778| `compact` | Compattazione automatica o manuale |

779 

780#### Input di SessionStart

781 

782Oltre ai [campi di input comuni](#common-input-fields), gli hook SessionStart ricevono `source`, `model` e facoltativamente `agent_type`. Il campo `source` indica come è iniziata la sessione: `"startup"` per le nuove sessioni, `"resume"` per le sessioni riprese, `"clear"` dopo `/clear` o `"compact"` dopo la compattazione. Il campo `model` contiene l'identificatore del modello. Se si avvia Claude Code con `claude --agent <name>`, un campo `agent_type` contiene il nome dell'agente.

783 

784```json theme={null}

785{

786 "session_id": "abc123",

787 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

788 "cwd": "/Users/...",

789 "hook_event_name": "SessionStart",

790 "source": "startup",

791 "model": "claude-sonnet-4-6"

792}

793```

794 

795#### Controllo della decisione di SessionStart

796 

797Qualsiasi testo che lo script del hook stampa su stdout viene aggiunto come contesto per Claude. Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, è possibile restituire questi campi specifici dell'evento:

798 

799| Campo | Descrizione |

800| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

801| `additionalContext` | Stringa aggiunta al contesto di Claude all'inizio della conversazione, prima del primo prompt. Consultare [Aggiungere contesto per Claude](#add-context-for-claude) per come il testo viene consegnato e cosa inserirvi |

802 

803```json theme={null}

804{

805 "hookSpecificOutput": {

806 "hookEventName": "SessionStart",

807 "additionalContext": "Current branch: feat/auth-refactor\nUncommitted changes: src/auth.ts, src/login.tsx\nActive issue: #4211 Migrate to OAuth2"

808 }

809}

810```

811 

812Poiché lo stdout semplice raggiunge già Claude per questo evento, un hook che carica solo contesto può stampare su stdout direttamente senza costruire JSON. Utilizzare il formato JSON quando è necessario combinare il contesto con altri campi come `suppressOutput`.

813 

814#### Persistere le variabili di ambiente

815 

816Gli hook SessionStart hanno accesso alla variabile di ambiente `CLAUDE_ENV_FILE`, che fornisce un percorso di file in cui è possibile persistere le variabili di ambiente per i comandi Bash successivi.

817 

818Per impostare le singole variabili di ambiente, scrivere le istruzioni `export` in `CLAUDE_ENV_FILE`. Utilizzare l'aggiunta (`>>`) per preservare le variabili impostate da altri hook:

819 

820```bash theme={null}

821#!/bin/bash

822 

823if [ -n "$CLAUDE_ENV_FILE" ]; then

824 echo 'export NODE_ENV=production' >> "$CLAUDE_ENV_FILE"

825 echo 'export DEBUG_LOG=true' >> "$CLAUDE_ENV_FILE"

826 echo 'export PATH="$PATH:./node_modules/.bin"' >> "$CLAUDE_ENV_FILE"

827fi

828 

829exit 0

830```

831 

832Per acquisire tutte le modifiche dell'ambiente dai comandi di configurazione, confrontare le variabili esportate prima e dopo:

833 

834```bash theme={null}

835#!/bin/bash

836 

837ENV_BEFORE=$(export -p | sort)

838 

839# Eseguire i comandi di configurazione che modificano l'ambiente

840source ~/.nvm/nvm.sh

841nvm use 20

842 

843if [ -n "$CLAUDE_ENV_FILE" ]; then

844 ENV_AFTER=$(export -p | sort)

845 comm -13 <(echo "$ENV_BEFORE") <(echo "$ENV_AFTER") >> "$CLAUDE_ENV_FILE"

846fi

847 

848exit 0

849```

850 

851Qualsiasi variabile scritta in questo file sarà disponibile in tutti i comandi Bash successivi che Claude Code esegue durante la sessione.

852 

853<Note>

854 `CLAUDE_ENV_FILE` è disponibile per gli hook SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) e [FileChanged](#filechanged). Gli altri tipi di hook non hanno accesso a questa variabile.

855</Note>

856 

857### Setup

858 

859Si attiva solo quando si avvia Claude Code con `--init-only`, o con `--init` o `--maintenance` in modalità stampa (`-p`). Non si attiva all'avvio normale. Utilizzarlo per l'installazione di dipendenze una tantum o la pulizia pianificata che si attiva esplicitamente da CI o script, separato dall'avvio della sessione normale. Per l'inizializzazione per sessione, utilizzare [SessionStart](#sessionstart) invece.

860 

861Il valore del matcher corrisponde al flag CLI che ha attivato l'hook:

862 

863| Matcher | Quando si attiva |

864| :------------ | :---------------------------------------- |

865| `init` | `claude --init-only` o `claude -p --init` |

866| `maintenance` | `claude -p --maintenance` |

867 

868`--init-only` esegue gli hook Setup e gli hook SessionStart con il matcher `startup`, quindi esce senza avviare una conversazione. `--init` e `--maintenance` attivano gli hook Setup solo quando combinati con `-p` (modalità stampa); in una sessione interattiva questi due flag attualmente non attivano gli hook Setup.

869 

870Poiché Setup non si attiva ad ogni avvio, un plugin che ha bisogno di una dipendenza installata non può fare affidamento solo su Setup. Il modello pratico è controllare la dipendenza al primo utilizzo e installare se assente, ad esempio un hook o una skill che testa per `${CLAUDE_PLUGIN_DATA}/node_modules` ed esegue `npm install` se assente. Consultare la [directory dei dati persistenti](/it/plugins-reference#persistent-data-directory) per dove archiviare le dipendenze installate.

871 

872#### Input di Setup

873 

874Oltre ai [campi di input comuni](#common-input-fields), gli hook Setup ricevono un campo `trigger` impostato su `"init"` o `"maintenance"`:

875 

876```json theme={null}

877{

878 "session_id": "abc123",

879 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

880 "cwd": "/Users/...",

881 "hook_event_name": "Setup",

882 "trigger": "init"

883}

884```

885 

886#### Controllo della decisione di Setup

887 

888Gli hook Setup non possono bloccare. Su exit code 2, stderr viene mostrato all'utente; su qualsiasi altro exit code non zero, stderr appare solo quando si avvia con `--verbose`. In entrambi i casi l'esecuzione continua. Per passare informazioni nel contesto di Claude, restituire `additionalContext` nell'output JSON; lo stdout semplice viene scritto solo nel log di debug. Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, è possibile restituire questi campi specifici dell'evento:

889 

890| Campo | Descrizione |

891| :------------------ | :------------------------------------------------------------------------------- |

892| `additionalContext` | Stringa aggiunta al contesto di Claude. I valori di più hook vengono concatenati |

893 

894```json theme={null}

895{

896 "hookSpecificOutput": {

897 "hookEventName": "Setup",

898 "additionalContext": "Dependencies installed: node_modules, .venv"

899 }

900}

901```

902 

903Gli hook Setup hanno accesso a `CLAUDE_ENV_FILE`. Le variabili scritte in quel file persistono nei comandi Bash successivi per la sessione, proprio come negli [hook SessionStart](#persist-environment-variables). Solo gli hook `type: "command"` e `type: "mcp_tool"` sono supportati.

904 

905### InstructionsLoaded

906 

907Si attiva quando un file `CLAUDE.md` o `.claude/rules/*.md` viene caricato nel contesto. Questo evento si attiva all'avvio della sessione per i file caricati con entusiasmo e di nuovo in seguito quando i file vengono caricati in modo pigro, ad esempio quando Claude accede a una sottodirectory che contiene un `CLAUDE.md` annidato o quando le regole condizionali con frontmatter `paths:` corrispondono. L'hook non supporta il blocco o il controllo della decisione. Viene eseguito in modo asincrono per scopi di osservabilità.

908 

909Il matcher viene eseguito su `load_reason`. Ad esempio, utilizzare `"matcher": "session_start"` per attivarsi solo per i file caricati all'avvio della sessione, o `"matcher": "path_glob_match|nested_traversal"` per attivarsi solo per i caricamenti pigri.

910 

911#### Input di InstructionsLoaded

912 

913Oltre ai [campi di input comuni](#common-input-fields), gli hook InstructionsLoaded ricevono questi campi:

914 

915| Campo | Descrizione |

916| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

917| `file_path` | Percorso assoluto al file di istruzioni che è stato caricato |

918| `memory_type` | Ambito del file: `"User"`, `"Project"`, `"Local"` o `"Managed"` |

919| `load_reason` | Perché il file è stato caricato: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` o `"compact"`. Il valore `"compact"` si attiva quando i file di istruzioni vengono ricaricati dopo un evento di compattazione |

920| `globs` | Modelli glob del percorso dal frontmatter `paths:` del file, se presenti. Presente solo per i caricamenti `path_glob_match` |

921| `trigger_file_path` | Percorso al file il cui accesso ha attivato questo caricamento, per i caricamenti pigri |

922| `parent_file_path` | Percorso al file di istruzioni padre che ha incluso questo, per i caricamenti `include` |

923 

924```json theme={null}

925{

926 "session_id": "abc123",

927 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

928 "cwd": "/Users/my-project",

929 "hook_event_name": "InstructionsLoaded",

930 "file_path": "/Users/my-project/CLAUDE.md",

931 "memory_type": "Project",

932 "load_reason": "session_start"

933}

934```

935 

936#### Controllo della decisione di InstructionsLoaded

937 

938Gli hook InstructionsLoaded non hanno controllo della decisione. Non possono bloccare o modificare il caricamento delle istruzioni. Utilizzare questo evento per la registrazione di audit, il tracciamento della conformità o l'osservabilità.

939 

940### UserPromptSubmit

941 

942Viene eseguito quando l'utente invia un prompt, prima che Claude lo elabori. Ciò consente di aggiungere contesto aggiuntivo in base al prompt/conversazione, convalidare i prompt o bloccare determinati tipi di prompt.

943 

944#### Input di UserPromptSubmit

945 

946Oltre ai [campi di input comuni](#common-input-fields), gli hook UserPromptSubmit ricevono il campo `prompt` contenente il testo che l'utente ha inviato.

947 

948```json theme={null}

949{

950 "session_id": "abc123",

951 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

952 "cwd": "/Users/...",

953 "permission_mode": "default",

954 "hook_event_name": "UserPromptSubmit",

955 "prompt": "Write a function to calculate the factorial of a number"

956}

957```

958 

959#### Controllo della decisione di UserPromptSubmit

960 

961Gli hook `UserPromptSubmit` possono controllare se un prompt dell'utente viene elaborato e aggiungere contesto. Tutti i [campi di output JSON](#json-output) sono disponibili.

962 

963Ci sono due modi per aggiungere contesto alla conversazione su exit code 0:

964 

965* **Stdout di testo semplice**: qualsiasi testo non-JSON scritto su stdout viene aggiunto come contesto

966* **JSON con `additionalContext`**: utilizzare il formato JSON seguente per un controllo maggiore. Il campo `additionalContext` viene aggiunto come contesto

967 

968Lo stdout semplice viene mostrato come output del hook nella trascrizione. Il campo `additionalContext` viene aggiunto più discretamente.

969 

970Per bloccare un prompt, restituire un oggetto JSON con `decision` impostato su `"block"`:

971 

972| Campo | Descrizione |

973| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------- |

974| `decision` | `"block"` impedisce l'elaborazione del prompt e lo cancella dal contesto. Omettere per consentire al prompt di procedere |

975| `reason` | Mostrato all'utente quando `decision` è `"block"`. Non aggiunto al contesto |

976| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al prompt inviato. Consultare [Aggiungere contesto per Claude](#add-context-for-claude) |

977| `sessionTitle` | Imposta il titolo della sessione, stesso effetto di `/rename`. Utilizzare per denominare automaticamente le sessioni in base al contenuto del prompt |

978 

979```json theme={null}

980{

981 "decision": "block",

982 "reason": "Explanation for decision",

983 "hookSpecificOutput": {

984 "hookEventName": "UserPromptSubmit",

985 "additionalContext": "My additional context here",

986 "sessionTitle": "My session title"

987 }

988}

989```

990 

991<Note>

992 Il formato JSON non è obbligatorio per i casi semplici. Per aggiungere contesto, è possibile stampare testo semplice su stdout con exit code 0. Utilizzare JSON quando è necessario bloccare i prompt o si desidera un controllo più strutturato.

993</Note>

994 

995### UserPromptExpansion

996 

997Viene eseguito quando un comando slash digitato dall'utente si espande in un prompt prima di raggiungere Claude. Utilizzare questo per bloccare comandi specifici dall'invocazione diretta, iniettare contesto per una skill particolare o registrare quali comandi gli utenti invocano. Ad esempio, un hook che corrisponde a `deploy` può bloccare `/deploy` a meno che non sia presente un file di approvazione, oppure un hook che corrisponde a una skill di revisione può aggiungere la checklist di revisione del team come `additionalContext`.

998 

999Questo evento copre il percorso che `PreToolUse` non copre: un hook `PreToolUse` che corrisponde allo strumento `Skill` si attiva solo quando Claude chiama lo strumento, ma digitare `/skillname` direttamente bypassa `PreToolUse`. `UserPromptExpansion` si attiva su quel percorso diretto.

1000 

1001Corrisponde a `command_name`. Lasciare il matcher vuoto per attivarsi su ogni slash command di tipo prompt.

1002 

1003#### Input di UserPromptExpansion

1004 

1005Oltre ai [campi di input comuni](#common-input-fields), gli hook UserPromptExpansion ricevono `expansion_type`, `command_name`, `command_args`, `command_source` e la stringa `prompt` originale. Il campo `expansion_type` è `slash_command` per skill e comandi personalizzati, o `mcp_prompt` per i prompt del server MCP.

1006 

1007```json theme={null}

1008{

1009 "session_id": "abc123",

1010 "transcript_path": "/Users/.../00893aaf.jsonl",

1011 "cwd": "/Users/...",

1012 "permission_mode": "default",

1013 "hook_event_name": "UserPromptExpansion",

1014 "expansion_type": "slash_command",

1015 "command_name": "example-skill",

1016 "command_args": "arg1 arg2",

1017 "command_source": "plugin",

1018 "prompt": "/example-skill arg1 arg2"

1019}

1020```

1021 

1022#### Controllo della decisione di UserPromptExpansion

1023 

1024Gli hook `UserPromptExpansion` possono bloccare l'espansione o aggiungere contesto. Tutti i [campi di output JSON](#json-output) sono disponibili.

1025 

1026| Campo | Descrizione |

1027| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------- |

1028| `decision` | `"block"` impedisce l'espansione dello slash command. Omettere per consentirgli di procedere |

1029| `reason` | Mostrato all'utente quando `decision` è `"block"` |

1030| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al prompt espanso. Consultare [Aggiungere contesto per Claude](#add-context-for-claude) |

1031 

1032```json theme={null}

1033{

1034 "decision": "block",

1035 "reason": "This slash command is not available",

1036 "hookSpecificOutput": {

1037 "hookEventName": "UserPromptExpansion",

1038 "additionalContext": "Additional context for this expansion"

1039 }

1040}

1041```

1042 

1043### PreToolUse

1044 

1045Viene eseguito dopo che Claude crea i parametri dello strumento e prima dell'elaborazione della chiamata dello strumento. Corrisponde al nome dello strumento: `Bash`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `WebFetch`, `WebSearch`, `AskUserQuestion`, `ExitPlanMode` e qualsiasi [nome di strumento MCP](#match-mcp-tools).

1046 

1047Utilizzare il [PreToolUse decision control](#pretooluse-decision-control) per consentire, negare, chiedere o rinviare il permesso di utilizzare lo strumento.

1048 

1049#### Input di PreToolUse

1050 

1051Oltre ai [campi di input comuni](#common-input-fields), gli hook PreToolUse ricevono `tool_name`, `tool_input` e `tool_use_id`. I campi `tool_input` dipendono dallo strumento:

1052 

1053##### Bash

1054 

1055Esegue comandi shell.

1056 

1057| Campo | Tipo | Esempio | Descrizione |

1058| :------------------ | :------ | :----------------- | :-------------------------------------------- |

1059| `command` | string | `"npm test"` | Il comando shell da eseguire |

1060| `description` | string | `"Run test suite"` | Descrizione facoltativa di cosa fa il comando |

1061| `timeout` | number | `120000` | Timeout facoltativo in millisecondi |

1062| `run_in_background` | boolean | `false` | Se eseguire il comando in background |

1063 

1064##### Write

1065 

1066Crea o sovrascrive un file.

1067 

1068| Campo | Tipo | Esempio | Descrizione |

1069| :---------- | :----- | :-------------------- | :------------------------------------ |

1070| `file_path` | string | `"/path/to/file.txt"` | Percorso assoluto al file da scrivere |

1071| `content` | string | `"file content"` | Contenuto da scrivere nel file |

1072 

1073##### Edit

1074 

1075Sostituisce una stringa in un file esistente.

1076 

1077| Campo | Tipo | Esempio | Descrizione |

1078| :------------ | :------ | :-------------------- | :-------------------------------------- |

1079| `file_path` | string | `"/path/to/file.txt"` | Percorso assoluto al file da modificare |

1080| `old_string` | string | `"original text"` | Testo da trovare e sostituire |

1081| `new_string` | string | `"replacement text"` | Testo di sostituzione |

1082| `replace_all` | boolean | `false` | Se sostituire tutte le occorrenze |

1083 

1084##### Read

1085 

1086Legge il contenuto del file.

1087 

1088| Campo | Tipo | Esempio | Descrizione |

1089| :---------- | :----- | :-------------------- | :---------------------------------------------------- |

1090| `file_path` | string | `"/path/to/file.txt"` | Percorso assoluto al file da leggere |

1091| `offset` | number | `10` | Numero di riga facoltativo da cui iniziare la lettura |

1092| `limit` | number | `50` | Numero facoltativo di righe da leggere |

1093 

1094##### Glob

1095 

1096Trova i file che corrispondono a un modello glob.

1097 

1098| Campo | Tipo | Esempio | Descrizione |

1099| :-------- | :----- | :--------------- | :------------------------------------------------------------------------------------------- |

1100| `pattern` | string | `"**/*.ts"` | Modello glob per abbinare i file |

1101| `path` | string | `"/path/to/dir"` | Directory facoltativa in cui cercare. Impostazione predefinita: directory di lavoro corrente |

1102 

1103##### Grep

1104 

1105Cerca il contenuto dei file con espressioni regolari.

1106 

1107| Campo | Tipo | Esempio | Descrizione |

1108| :------------ | :------ | :--------------- | :------------------------------------------------------------------------------------------------ |

1109| `pattern` | string | `"TODO.*fix"` | Modello di espressione regolare da cercare |

1110| `path` | string | `"/path/to/dir"` | File o directory facoltativa in cui cercare |

1111| `glob` | string | `"*.ts"` | Modello glob facoltativo per filtrare i file |

1112| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"` o `"count"`. Impostazione predefinita: `"files_with_matches"` |

1113| `-i` | boolean | `true` | Ricerca senza distinzione tra maiuscole e minuscole |

1114| `multiline` | boolean | `false` | Abilita l'abbinamento multilinea |

1115 

1116##### WebFetch

1117 

1118Recupera ed elabora il contenuto web.

1119 

1120| Campo | Tipo | Esempio | Descrizione |

1121| :------- | :----- | :---------------------------- | :------------------------------------------ |

1122| `url` | string | `"https://example.com/api"` | URL da cui recuperare il contenuto |

1123| `prompt` | string | `"Extract the API endpoints"` | Prompt da eseguire sul contenuto recuperato |

1124 

1125##### WebSearch

1126 

1127Cerca il web.

1128 

1129| Campo | Tipo | Esempio | Descrizione |

1130| :---------------- | :----- | :----------------------------- | :------------------------------------------------------- |

1131| `query` | string | `"react hooks best practices"` | Query di ricerca |

1132| `allowed_domains` | array | `["docs.example.com"]` | Facoltativo: includere solo i risultati da questi domini |

1133| `blocked_domains` | array | `["spam.example.com"]` | Facoltativo: escludere i risultati da questi domini |

1134 

1135##### Agent

1136 

1137Genera un [subagent](/it/sub-agents).

1138 

1139| Campo | Tipo | Esempio | Descrizione |

1140| :-------------- | :----- | :------------------------- | :------------------------------------------------------------------------- |

1141| `prompt` | string | `"Find all API endpoints"` | L'attività per l'agente da eseguire |

1142| `description` | string | `"Find API endpoints"` | Breve descrizione dell'attività |

1143| `subagent_type` | string | `"Explore"` | Tipo di agente specializzato da utilizzare |

1144| `model` | string | `"sonnet"` | Alias del modello facoltativo per sovrascrivere l'impostazione predefinita |

1145 

1146##### AskUserQuestion

1147 

1148Chiede all'utente da una a quattro domande a scelta multipla.

1149 

1150| Campo | Tipo | Esempio | Descrizione |

1151| :---------- | :----- | :----------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1152| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Domande da presentare, ciascuna con una stringa `question`, un `header` breve, un array `options` e un flag `multiSelect` facoltativo |

1153| `answers` | object | `{"Which framework?": "React"}` | Facoltativo. Mappa il testo della domanda all'etichetta dell'opzione selezionata. Le risposte multi-select uniscono le etichette con virgole. Claude non imposta questo campo; fornirlo tramite `updatedInput` per rispondere a livello di programmazione |

1154 

1155#### PreToolUse decision control

1156 

1157Gli hook `PreToolUse` possono controllare se una chiamata dello strumento procede. A differenza di altri hook che utilizzano un campo `decision` di livello superiore, PreToolUse restituisce la sua decisione all'interno di un oggetto `hookSpecificOutput`. Ciò gli dà un controllo più ricco: quattro risultati (consentire, negare, chiedere o rinviare) più la capacità di modificare l'input dello strumento prima dell'esecuzione.

1158 

1159| Campo | Descrizione |

1160| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1161| `permissionDecision` | `"allow"` bypassa il prompt di autorizzazione. `"deny"` impedisce la chiamata dello strumento. `"ask"` richiede all'utente di confermare. `"defer"` esce correttamente in modo che lo strumento possa essere ripreso in seguito. Le regole [Deny and ask](/it/permissions#manage-permissions) si applicano ancora indipendentemente da quello che l'hook restituisce |

1162| `permissionDecisionReason` | Per `"allow"` e `"ask"`, mostrato all'utente ma non a Claude. Per `"deny"`, mostrato a Claude. Per `"defer"`, ignorato |

1163| `updatedInput` | Modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includere i campi invariati insieme a quelli modificati. Combinare con `"allow"` per l'approvazione automatica o `"ask"` per mostrare l'input modificato all'utente. Per `"defer"`, ignorato |

1164| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al risultato dello strumento. Ignorato quando `permissionDecision` è `"defer"`. Consultare [Aggiungere contesto per Claude](#add-context-for-claude) |

1165 

1166Quando più hook PreToolUse restituiscono decisioni diverse, la precedenza è `deny` > `defer` > `ask` > `allow`.

1167 

1168Quando un hook restituisce `"ask"`, il prompt di autorizzazione visualizzato all'utente include un'etichetta che identifica da dove proviene l'hook: ad esempio, `[User]`, `[Project]`, `[Plugin]` o `[Local]`. Ciò aiuta gli utenti a capire quale fonte di configurazione sta richiedendo la conferma.

1169 

1170```json theme={null}

1171{

1172 "hookSpecificOutput": {

1173 "hookEventName": "PreToolUse",

1174 "permissionDecision": "allow",

1175 "permissionDecisionReason": "My reason here",

1176 "updatedInput": {

1177 "field_to_modify": "new value"

1178 },

1179 "additionalContext": "Current environment: production. Proceed with caution."

1180 }

1181}

1182```

1183 

1184`AskUserQuestion` e `ExitPlanMode` richiedono l'interazione dell'utente e normalmente bloccano in [modalità non interattiva](/it/headless) con il flag `-p`. Restituire `permissionDecision: "allow"` insieme a `updatedInput` soddisfa quel requisito: l'hook legge l'input dello strumento da stdin, raccoglie la risposta attraverso la propria interfaccia utente e la restituisce in `updatedInput` in modo che lo strumento venga eseguito senza richiedere. Restituire `"allow"` da solo non è sufficiente per questi strumenti. Per `AskUserQuestion`, ripetere l'array `questions` originale e aggiungere un oggetto [`answers`](#askuserquestion) che mappa il testo di ogni domanda alla risposta scelta.

1185 

1186<Note>

1187 PreToolUse in precedenza utilizzava i campi `decision` e `reason` di livello superiore, ma questi sono deprecati per questo evento. Utilizzare invece `hookSpecificOutput.permissionDecision` e `hookSpecificOutput.permissionDecisionReason`. I valori deprecati `"approve"` e `"block"` si mappano a `"allow"` e `"deny"` rispettivamente. Gli altri eventi come PostToolUse e Stop continuano a utilizzare `decision` e `reason` di livello superiore come formato corrente.

1188</Note>

1189 

1190#### Rinviare una chiamata dello strumento per dopo

1191 

1192`"defer"` è per le integrazioni che eseguono `claude -p` come subprocess e leggono il suo output JSON, come un'app Agent SDK o un'interfaccia utente personalizzata costruita su Claude Code. Consente a quel processo chiamante di mettere in pausa Claude in una chiamata dello strumento, raccogliere input attraverso la sua interfaccia e riprendere da dove era rimasto. Claude Code onora questo valore solo in [modalità non interattiva](/it/headless) con il flag `-p`. Nelle sessioni interattive registra un avviso e ignora il risultato del hook.

1193 

1194<Note>

1195 Il valore `defer` richiede Claude Code v2.1.89 o successivo. Le versioni precedenti non lo riconoscono e lo strumento procede attraverso il flusso di autorizzazione normale.

1196</Note>

1197 

1198Lo strumento `AskUserQuestion` è il caso tipico: Claude vuole chiedere qualcosa all'utente, ma non c'è un terminale per rispondere. Il round trip funziona così:

1199 

12001. Claude chiama `AskUserQuestion`. L'hook `PreToolUse` si attiva.

12012. L'hook restituisce `permissionDecision: "defer"`. Lo strumento non viene eseguito. Il processo esce con `stop_reason: "tool_deferred"` e la chiamata dello strumento in sospeso preservata nella trascrizione.

12023. Il processo chiamante legge `deferred_tool_use` dal risultato SDK, visualizza la domanda nella sua interfaccia utente e attende una risposta.

12034. Il processo chiamante esegue `claude -p --resume <session-id>`. La stessa chiamata dello strumento attiva `PreToolUse` di nuovo.

12045. L'hook restituisce `permissionDecision: "allow"` con la risposta in `updatedInput`. Lo strumento viene eseguito e Claude continua.

1205 

1206Il campo `deferred_tool_use` contiene l'`id`, il `name` e l'`input` dello strumento. L'`input` è i parametri che Claude ha generato per la chiamata dello strumento, acquisiti prima dell'esecuzione:

1207 

1208```json theme={null}

1209{

1210 "type": "result",

1211 "subtype": "success",

1212 "stop_reason": "tool_deferred",

1213 "session_id": "abc123",

1214 "deferred_tool_use": {

1215 "id": "toolu_01abc",

1216 "name": "AskUserQuestion",

1217 "input": { "questions": [{ "question": "Which framework?", "header": "Framework", "options": [{"label": "React"}, {"label": "Vue"}], "multiSelect": false }] }

1218 }

1219}

1220```

1221 

1222Non c'è timeout o limite di tentativi. La sessione rimane su disco fino a quando non la riprendi, soggetta alla [pulizia di conservazione](/it/settings#available-settings) `cleanupPeriodDays` che elimina i file di sessione dopo 30 giorni per impostazione predefinita. Se la risposta non è pronta quando riprendi, l'hook può restituire `"defer"` di nuovo e il processo esce nello stesso modo. Il processo chiamante controlla quando interrompere il ciclo restituendo infine `"allow"` o `"deny"` dall'hook.

1223 

1224`"defer"` funziona solo quando Claude effettua una singola chiamata dello strumento nel turno. Se Claude effettua più chiamate dello strumento contemporaneamente, `"defer"` viene ignorato con un avviso e lo strumento procede attraverso il flusso di autorizzazione normale. Il vincolo esiste perché resume può solo rieseguire uno strumento: non c'è modo di rinviare una chiamata da un batch senza lasciare le altre irrisolte.

1225 

1226Se lo strumento rinviato non è più disponibile quando riprendi, il processo esce con `stop_reason: "tool_deferred_unavailable"` e `is_error: true` prima che l'hook si attivi. Questo accade quando un server MCP che ha fornito lo strumento non è connesso per la sessione ripresa. Il payload `deferred_tool_use` è ancora incluso in modo da poter identificare quale strumento è scomparso.

1227 

1228<Warning>

1229 `--resume` non ripristina la modalità di autorizzazione dalla sessione precedente. Passare lo stesso flag `--permission-mode` su resume che era attivo quando lo strumento è stato rinviato. Claude Code registra un avviso se le modalità differiscono.

1230</Warning>

1231 

1232### PermissionRequest

1233 

1234Viene eseguito quando all'utente viene mostrata una finestra di dialogo di autorizzazione.

1235Utilizzare il [PermissionRequest decision control](#permissionrequest-decision-control) per consentire o negare per conto dell'utente.

1236 

1237Corrisponde al nome dello strumento, stessi valori di PreToolUse.

1238 

1239#### Input di PermissionRequest

1240 

1241Gli hook PermissionRequest ricevono i campi `tool_name` e `tool_input` come gli hook PreToolUse, ma senza `tool_use_id`. Un array `permission_suggestions` facoltativo contiene le opzioni "consenti sempre" che l'utente normalmente vedrebbe nella finestra di dialogo di autorizzazione. La differenza è quando l'hook si attiva: gli hook PermissionRequest vengono eseguiti quando una finestra di dialogo di autorizzazione sta per essere mostrata all'utente, mentre gli hook PreToolUse vengono eseguiti prima dell'esecuzione dello strumento indipendentemente dallo stato di autorizzazione.

1242 

1243```json theme={null}

1244{

1245 "session_id": "abc123",

1246 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1247 "cwd": "/Users/...",

1248 "permission_mode": "default",

1249 "hook_event_name": "PermissionRequest",

1250 "tool_name": "Bash",

1251 "tool_input": {

1252 "command": "rm -rf node_modules",

1253 "description": "Remove node_modules directory"

1254 },

1255 "permission_suggestions": [

1256 {

1257 "type": "addRules",

1258 "rules": [{ "toolName": "Bash", "ruleContent": "rm -rf node_modules" }],

1259 "behavior": "allow",

1260 "destination": "localSettings"

1261 }

1262 ]

1263}

1264```

1265 

1266#### Controllo della decisione di PermissionRequest

1267 

1268Gli hook `PermissionRequest` possono consentire o negare le richieste di autorizzazione. Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, lo script del hook può restituire un oggetto `decision` con questi campi specifici dell'evento:

1269 

1270| Campo | Descrizione |

1271| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1272| `behavior` | `"allow"` concede l'autorizzazione, `"deny"` la nega. Le regole [Deny and ask](/it/permissions#manage-permissions) si applicano ancora, quindi un hook che restituisce `"allow"` non sovrascrive una regola di negazione corrispondente |

1273| `updatedInput` | Solo per `"allow"`: modifica i parametri di input dello strumento prima dell'esecuzione. Sostituisce l'intero oggetto di input, quindi includere i campi invariati insieme a quelli modificati. L'input modificato viene rivalutato rispetto alle regole di negazione e richiesta |

1274| `updatedPermissions` | Solo per `"allow"`: array di [permission update entries](#permission-update-entries) da applicare, come l'aggiunta di una regola di consentimento o la modifica della modalità di autorizzazione della sessione |

1275| `message` | Solo per `"deny"`: dice a Claude perché l'autorizzazione è stata negata |

1276| `interrupt` | Solo per `"deny"`: se `true`, interrompe Claude |

1277 

1278```json theme={null}

1279{

1280 "hookSpecificOutput": {

1281 "hookEventName": "PermissionRequest",

1282 "decision": {

1283 "behavior": "allow",

1284 "updatedInput": {

1285 "command": "npm run lint"

1286 }

1287 }

1288 }

1289}

1290```

1291 

1292#### Permission update entries

1293 

1294Il campo di output `updatedPermissions` e il campo di input [`permission_suggestions`](#permissionrequest-input) utilizzano entrambi lo stesso array di oggetti di voce. Ogni voce ha un `type` che determina i suoi altri campi e una `destination` che controlla dove viene scritta la modifica.

1295 

1296| `type` | Campi | Effetto |

1297| :------------------ | :--------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1298| `addRules` | `rules`, `behavior`, `destination` | Aggiunge regole di autorizzazione. `rules` è un array di oggetti `{toolName, ruleContent?}`. Omettere `ruleContent` per abbinare l'intero strumento. `behavior` è `"allow"`, `"deny"` o `"ask"` |

1299| `replaceRules` | `rules`, `behavior`, `destination` | Sostituisce tutte le regole del `behavior` dato alla `destination` con le `rules` fornite |

1300| `removeRules` | `rules`, `behavior`, `destination` | Rimuove le regole corrispondenti del `behavior` dato |

1301| `setMode` | `mode`, `destination` | Modifica la modalità di autorizzazione. Le modalità valide sono `default`, `acceptEdits`, `dontAsk`, `bypassPermissions` e `plan` |

1302| `addDirectories` | `directories`, `destination` | Aggiunge directory di lavoro. `directories` è un array di stringhe di percorso |

1303| `removeDirectories` | `directories`, `destination` | Rimuove directory di lavoro |

1304 

1305<Note>

1306 `setMode` con `bypassPermissions` ha effetto solo se la sessione è stata avviata con la modalità bypass già disponibile: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` o `permissions.defaultMode: "bypassPermissions"` nelle impostazioni, e la modalità non è disabilitata da [`permissions.disableBypassPermissionsMode`](/it/permissions#managed-settings). Altrimenti l'aggiornamento è un no-op. `bypassPermissions` non viene mai persistito come `defaultMode` indipendentemente da `destination`.

1307</Note>

1308 

1309Il campo `destination` su ogni voce determina se la modifica rimane in memoria o persiste in un file di impostazioni.

1310 

1311| `destination` | Scrive in |

1312| :---------------- | :--------------------------------------------------- |

1313| `session` | solo in memoria, scartato quando la sessione termina |

1314| `localSettings` | `.claude/settings.local.json` |

1315| `projectSettings` | `.claude/settings.json` |

1316| `userSettings` | `~/.claude/settings.json` |

1317 

1318Un hook può ripetere uno dei `permission_suggestions` che ha ricevuto come suo proprio output `updatedPermissions`, che è equivalente all'utente che seleziona quell'opzione "consenti sempre" nella finestra di dialogo.

1319 

1320### PostToolUse

1321 

1322Viene eseguito immediatamente dopo il completamento riuscito di uno strumento.

1323 

1324Corrisponde al nome dello strumento, stessi valori di PreToolUse.

1325 

1326#### Input di PostToolUse

1327 

1328Gli hook `PostToolUse` si attivano dopo che uno strumento è già stato eseguito con successo. L'input include sia `tool_input`, gli argomenti inviati allo strumento, che `tool_response`, il risultato che ha restituito. Lo schema esatto per entrambi dipende dallo strumento.

1329 

1330```json theme={null}

1331{

1332 "session_id": "abc123",

1333 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1334 "cwd": "/Users/...",

1335 "permission_mode": "default",

1336 "hook_event_name": "PostToolUse",

1337 "tool_name": "Write",

1338 "tool_input": {

1339 "file_path": "/path/to/file.txt",

1340 "content": "file content"

1341 },

1342 "tool_response": {

1343 "filePath": "/path/to/file.txt",

1344 "success": true

1345 },

1346 "tool_use_id": "toolu_01ABC123...",

1347 "duration_ms": 12

1348}

1349```

1350 

1351| Campo | Descrizione |

1352| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------ |

1353| `duration_ms` | Facoltativo. Tempo di esecuzione dello strumento in millisecondi. Esclude il tempo trascorso nei prompt di autorizzazione e negli hook PreToolUse |

1354 

1355#### Controllo della decisione di PostToolUse

1356 

1357Gli hook `PostToolUse` possono fornire feedback a Claude dopo l'esecuzione dello strumento. Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, lo script del hook può restituire questi campi specifici dell'evento:

1358 

1359| Campo | Descrizione |

1360| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1361| `decision` | `"block"` richiede a Claude con il `reason`. Omettere per consentire all'azione di procedere |

1362| `reason` | Spiegazione mostrata a Claude quando `decision` è `"block"` |

1363| `additionalContext` | Stringa aggiunta al contesto di Claude insieme al risultato dello strumento. Consultare [Aggiungere contesto per Claude](#add-context-for-claude) |

1364| `updatedToolOutput` | Sostituisce l'output dello strumento con il valore fornito prima che venga inviato a Claude. Il valore deve corrispondere alla forma di output dello strumento |

1365| `updatedMCPToolOutput` | Sostituisce l'output solo per [strumenti MCP](#match-mcp-tools). Preferire `updatedToolOutput`, che funziona per tutti gli strumenti |

1366 

1367L'esempio seguente sostituisce l'output di una chiamata `Bash`. Il valore di sostituzione corrisponde alla forma di output dello strumento `Bash`:

1368 

1369```json theme={null}

1370{

1371 "hookSpecificOutput": {

1372 "hookEventName": "PostToolUse",

1373 "additionalContext": "Additional information for Claude",

1374 "updatedToolOutput": {

1375 "stdout": "[redacted]",

1376 "stderr": "",

1377 "interrupted": false,

1378 "isImage": false

1379 }

1380 }

1381}

1382```

1383 

1384<Warning>

1385 `updatedToolOutput` cambia solo ciò che Claude vede. Lo strumento è già stato eseguito al momento dell'attivazione dell'hook, quindi tutti i file scritti, i comandi eseguiti o le richieste di rete inviate hanno già avuto effetto. La telemetria come gli span degli strumenti OpenTelemetry e gli eventi di analisi acquisiscono anche l'output originale prima dell'esecuzione dell'hook. Per impedire o modificare una chiamata dello strumento prima che venga eseguita, utilizzare un hook [PreToolUse](#pretooluse) invece.

1386 

1387 Il valore di sostituzione deve corrispondere alla forma di output dello strumento. Gli strumenti incorporati restituiscono oggetti strutturati piuttosto che stringhe semplici. Ad esempio, `Bash` restituisce un oggetto con i campi `stdout`, `stderr`, `interrupted` e `isImage`. Per gli strumenti incorporati, un valore che non corrisponde allo schema di output dello strumento viene ignorato e viene utilizzato l'output originale. L'output dello strumento MCP viene passato senza convalida dello schema. Rimuovere i dettagli di errore di cui Claude ha bisogno può causare il proseguimento su un presupposto falso.

1388</Warning>

1389 

1390### PostToolUseFailure

1391 

1392Viene eseguito quando l'esecuzione di uno strumento non riesce. Questo evento si attiva per le chiamate dello strumento che generano errori o restituiscono risultati di errore. Utilizzare questo per registrare i guasti, inviare avvisi o fornire feedback correttivo a Claude.

1393 

1394Corrisponde al nome dello strumento, stessi valori di PreToolUse.

1395 

1396#### Input di PostToolUseFailure

1397 

1398Gli hook PostToolUseFailure ricevono gli stessi campi `tool_name` e `tool_input` di PostToolUse, insieme alle informazioni di errore come campi di livello superiore:

1399 

1400```json theme={null}

1401{

1402 "session_id": "abc123",

1403 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1404 "cwd": "/Users/...",

1405 "permission_mode": "default",

1406 "hook_event_name": "PostToolUseFailure",

1407 "tool_name": "Bash",

1408 "tool_input": {

1409 "command": "npm test",

1410 "description": "Run test suite"

1411 },

1412 "tool_use_id": "toolu_01ABC123...",

1413 "error": "Command exited with non-zero status code 1",

1414 "is_interrupt": false,

1415 "duration_ms": 4187

1416}

1417```

1418 

1419| Campo | Descrizione |

1420| :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |

1421| `error` | Stringa che descrive cosa è andato storto |

1422| `is_interrupt` | Booleano facoltativo che indica se il guasto è stato causato dall'interruzione dell'utente |

1423| `duration_ms` | Facoltativo. Tempo di esecuzione dello strumento in millisecondi. Esclude il tempo trascorso nei prompt di autorizzazione e negli hook PreToolUse |

1424 

1425#### Controllo della decisione di PostToolUseFailure

1426 

1427Gli hook `PostToolUseFailure` possono fornire contesto a Claude dopo un guasto dello strumento. Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, lo script del hook può restituire questi campi specifici dell'evento:

1428 

1429| Campo | Descrizione |

1430| :------------------ | :------------------------------------------------------------------------------------------------------------------------------ |

1431| `additionalContext` | Stringa aggiunta al contesto di Claude insieme all'errore. Consultare [Aggiungere contesto per Claude](#add-context-for-claude) |

1432 

1433```json theme={null}

1434{

1435 "hookSpecificOutput": {

1436 "hookEventName": "PostToolUseFailure",

1437 "additionalContext": "Additional information about the failure for Claude"

1438 }

1439}

1440```

1441 

1442### PostToolBatch

1443 

1444Viene eseguito una volta dopo che ogni chiamata dello strumento in un batch è stata risolta, prima che Claude Code invii la richiesta successiva al modello. `PostToolUse` si attiva una volta per strumento, il che significa che si attiva contemporaneamente quando Claude effettua chiamate dello strumento parallele. `PostToolBatch` si attiva esattamente una volta con l'intero batch, quindi è il posto giusto per iniettare contesto che dipende dall'insieme di strumenti che hanno eseguito piuttosto che da qualsiasi singolo strumento. Non c'è matcher per questo evento.

1445 

1446#### Input di PostToolBatch

1447 

1448Oltre ai [campi di input comuni](#common-input-fields), gli hook PostToolBatch ricevono `tool_calls`, un array che descrive ogni chiamata dello strumento nel batch:

1449 

1450```json theme={null}

1451{

1452 "session_id": "abc123",

1453 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1454 "cwd": "/Users/...",

1455 "permission_mode": "default",

1456 "hook_event_name": "PostToolBatch",

1457 "tool_calls": [

1458 {

1459 "tool_name": "Read",

1460 "tool_input": {"file_path": "/.../ledger/accounts.py"},

1461 "tool_use_id": "toolu_01...",

1462 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."

1463 },

1464 {

1465 "tool_name": "Read",

1466 "tool_input": {"file_path": "/.../ledger/transactions.py"},

1467 "tool_use_id": "toolu_02...",

1468 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."

1469 }

1470 ]

1471}

1472```

1473 

1474`tool_response` contiene lo stesso contenuto che il modello riceve nel blocco `tool_result` corrispondente. Il valore è una stringa serializzata o un array di blocchi di contenuto, esattamente come lo strumento lo ha emesso. Per `Read`, ciò significa testo con prefisso numero di riga piuttosto che contenuti di file grezzi. Le risposte possono essere grandi, quindi analizzare solo i campi di cui hai bisogno.

1475 

1476<Note>

1477 La forma `tool_response` differisce da quella di `PostToolUse`. `PostToolUse` passa l'oggetto `Output` strutturato dello strumento, come `{filePath: "...", success: true}` per `Write`; `PostToolBatch` passa il contenuto `tool_result` serializzato che il modello vede.

1478</Note>

1479 

1480#### Controllo della decisione di PostToolBatch

1481 

1482Gli hook `PostToolBatch` possono iniettare contesto per Claude. Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, lo script del hook può restituire questi campi specifici dell'evento:

1483 

1484| Campo | Descrizione |

1485| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1486| `additionalContext` | Stringa di contesto iniettata una volta prima della prossima chiamata del modello. Consultare [Aggiungere contesto per Claude](#add-context-for-claude) per i dettagli di consegna, cosa inserirvi e come le sessioni riprese gestiscono i valori passati |

1487 

1488```json theme={null}

1489{

1490 "hookSpecificOutput": {

1491 "hookEventName": "PostToolBatch",

1492 "additionalContext": "These files are part of the ledger module. Run pytest before marking the task complete."

1493 }

1494}

1495```

1496 

1497Restituire `decision: "block"` o `continue: false` interrompe il ciclo agentico prima della prossima chiamata del modello.

1498 

1499### PermissionDenied

1500 

1501Viene eseguito quando il classificatore della [modalità automatica](/it/permission-modes#eliminate-prompts-with-auto-mode) nega una chiamata dello strumento. Questo hook si attiva solo in modalità automatica: non viene eseguito quando si nega manualmente una finestra di dialogo di autorizzazione, quando un hook `PreToolUse` blocca una chiamata o quando una regola `deny` corrisponde. Utilizzare questo per registrare i rifiuti del classificatore, regolare la configurazione o dire al modello che può riprovare la chiamata dello strumento.

1502 

1503Corrisponde al nome dello strumento, stessi valori di PreToolUse.

1504 

1505#### Input di PermissionDenied

1506 

1507Oltre ai [campi di input comuni](#common-input-fields), gli hook PermissionDenied ricevono `tool_name`, `tool_input`, `tool_use_id` e `reason`.

1508 

1509```json theme={null}

1510{

1511 "session_id": "abc123",

1512 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1513 "cwd": "/Users/...",

1514 "permission_mode": "auto",

1515 "hook_event_name": "PermissionDenied",

1516 "tool_name": "Bash",

1517 "tool_input": {

1518 "command": "rm -rf /tmp/build",

1519 "description": "Clean build directory"

1520 },

1521 "tool_use_id": "toolu_01ABC123...",

1522 "reason": "Auto mode denied: command targets a path outside the project"

1523}

1524```

1525 

1526| Campo | Descrizione |

1527| :------- | :------------------------------------------------------------------------------------------------- |

1528| `reason` | La spiegazione del classificatore per il motivo per cui la chiamata dello strumento è stata negata |

1529 

1530#### Controllo della decisione di PermissionDenied

1531 

1532Gli hook PermissionDenied possono dire al modello che può riprovare la chiamata dello strumento negata. Restituire un oggetto JSON con `hookSpecificOutput.retry` impostato su `true`:

1533 

1534```json theme={null}

1535{

1536 "hookSpecificOutput": {

1537 "hookEventName": "PermissionDenied",

1538 "retry": true

1539 }

1540}

1541```

1542 

1543Quando `retry` è `true`, Claude Code aggiunge un messaggio alla conversazione dicendo al modello che può riprovare la chiamata dello strumento. Il rifiuto stesso non viene invertito. Se l'hook non restituisce JSON o restituisce `retry: false`, il rifiuto rimane e il modello riceve il messaggio di rifiuto originale.

1544 

1545### Notification

1546 

1547Viene eseguito quando Claude Code invia notifiche. Corrisponde al tipo di notifica: `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response`. Omettere il matcher per eseguire gli hook per tutti i tipi di notifica.

1548 

1549Utilizzare matcher separati per eseguire gestori diversi a seconda del tipo di notifica. Questa configurazione attiva uno script di avviso specifico per l'autorizzazione quando Claude ha bisogno dell'approvazione dell'autorizzazione e una notifica diversa quando Claude è stato inattivo:

1550 

1551```json theme={null}

1552{

1553 "hooks": {

1554 "Notification": [

1555 {

1556 "matcher": "permission_prompt",

1557 "hooks": [

1558 {

1559 "type": "command",

1560 "command": "/path/to/permission-alert.sh"

1561 }

1562 ]

1563 },

1564 {

1565 "matcher": "idle_prompt",

1566 "hooks": [

1567 {

1568 "type": "command",

1569 "command": "/path/to/idle-notification.sh"

1570 }

1571 ]

1572 }

1573 ]

1574 }

1575}

1576```

1577 

1578#### Input di Notification

1579 

1580Oltre ai [campi di input comuni](#common-input-fields), gli hook Notification ricevono `message` con il testo della notifica, un `title` facoltativo e `notification_type` che indica quale tipo si è attivato.

1581 

1582```json theme={null}

1583{

1584 "session_id": "abc123",

1585 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1586 "cwd": "/Users/...",

1587 "hook_event_name": "Notification",

1588 "message": "Claude needs your permission to use Bash",

1589 "title": "Permission needed",

1590 "notification_type": "permission_prompt"

1591}

1592```

1593 

1594Gli hook Notification non possono bloccare o modificare le notifiche. Sono destinati agli effetti collaterali come l'inoltro della notifica a un servizio esterno. I [campi di output JSON](#json-output) comuni come `systemMessage` si applicano.

1595 

1596### SubagentStart

1597 

1598Viene eseguito quando un subagent di Claude Code viene generato tramite lo strumento Agent. Supporta i matcher per filtrare per nome del tipo di agente (agenti incorporati come `general-purpose`, `Explore`, `Plan` o nomi di agenti personalizzati da `.claude/agents/`).

1599 

1600#### Input di SubagentStart

1601 

1602Oltre ai [campi di input comuni](#common-input-fields), gli hook SubagentStart ricevono `agent_id` con l'identificatore univoco per il subagent e `agent_type` con il nome dell'agente (agenti incorporati come `"general-purpose"`, `"Explore"`, `"Plan"` o nomi di agenti personalizzati).

1603 

1604```json theme={null}

1605{

1606 "session_id": "abc123",

1607 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1608 "cwd": "/Users/...",

1609 "hook_event_name": "SubagentStart",

1610 "agent_id": "agent-abc123",

1611 "agent_type": "Explore"

1612}

1613```

1614 

1615Gli hook SubagentStart non possono bloccare la creazione del subagent, ma possono iniettare contesto nel subagent. Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, è possibile restituire:

1616 

1617| Campo | Descrizione |

1618| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1619| `additionalContext` | Stringa aggiunta al contesto del subagent all'inizio della sua conversazione, prima del suo primo prompt. Consultare [Aggiungere contesto per Claude](#add-context-for-claude) |

1620 

1621```json theme={null}

1622{

1623 "hookSpecificOutput": {

1624 "hookEventName": "SubagentStart",

1625 "additionalContext": "Follow security guidelines for this task"

1626 }

1627}

1628```

1629 

1630### SubagentStop

1631 

1632Viene eseguito quando un subagent di Claude Code ha finito di rispondere. Corrisponde al tipo di agente, stessi valori di SubagentStart.

1633 

1634#### Input di SubagentStop

1635 

1636Oltre ai [campi di input comuni](#common-input-fields), gli hook SubagentStop ricevono `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path` e `last_assistant_message`. Il campo `agent_type` è il valore utilizzato per il filtraggio del matcher. Il `transcript_path` è la trascrizione della sessione principale, mentre `agent_transcript_path` è la trascrizione propria del subagent archiviata in una cartella `subagents/` annidato. Il campo `last_assistant_message` contiene il contenuto del testo della risposta finale del subagent, quindi gli hook possono accedervi senza analizzare il file della trascrizione.

1637 

1638```json theme={null}

1639{

1640 "session_id": "abc123",

1641 "transcript_path": "~/.claude/projects/.../abc123.jsonl",

1642 "cwd": "/Users/...",

1643 "permission_mode": "default",

1644 "hook_event_name": "SubagentStop",

1645 "stop_hook_active": false,

1646 "agent_id": "def456",

1647 "agent_type": "Explore",

1648 "agent_transcript_path": "~/.claude/projects/.../abc123/subagents/agent-def456.jsonl",

1649 "last_assistant_message": "Analysis complete. Found 3 potential issues..."

1650}

1651```

1652 

1653Gli hook SubagentStop utilizzano lo stesso formato di controllo della decisione degli [hook Stop](#stop-decision-control).

1654 

1655### TaskCreated

1656 

1657Viene eseguito quando un'attività sta per essere creata tramite lo strumento `TaskCreate`. Utilizzare questo per applicare le convenzioni di denominazione, richiedere descrizioni delle attività o impedire la creazione di determinate attività.

1658 

1659Quando un hook `TaskCreated` esce con il codice 2, l'attività non viene creata e il messaggio stderr viene restituito al modello come feedback. Per interrompere completamente il compagno di squadra invece di rieseguirlo, restituire JSON con `{"continue": false, "stopReason": "..."}`. Gli hook TaskCreated non supportano i matcher e si attivano ad ogni occorrenza.

1660 

1661#### Input di TaskCreated

1662 

1663Oltre ai [campi di input comuni](#common-input-fields), gli hook TaskCreated ricevono `task_id`, `task_subject` e facoltativamente `task_description`, `teammate_name` e `team_name`.

1664 

1665```json theme={null}

1666{

1667 "session_id": "abc123",

1668 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1669 "cwd": "/Users/...",

1670 "permission_mode": "default",

1671 "hook_event_name": "TaskCreated",

1672 "task_id": "task-001",

1673 "task_subject": "Implement user authentication",

1674 "task_description": "Add login and signup endpoints",

1675 "teammate_name": "implementer",

1676 "team_name": "my-project"

1677}

1678```

1679 

1680| Campo | Descrizione |

1681| :----------------- | :------------------------------------------------------------------- |

1682| `task_id` | Identificatore dell'attività in corso di creazione |

1683| `task_subject` | Titolo dell'attività |

1684| `task_description` | Descrizione dettagliata dell'attività. Può essere assente |

1685| `teammate_name` | Nome del compagno di squadra che crea l'attività. Può essere assente |

1686| `team_name` | Nome del team. Può essere assente |

1687 

1688#### Controllo della decisione di TaskCreated

1689 

1690Gli hook TaskCreated supportano due modi per controllare la creazione dell'attività:

1691 

1692* **Codice di uscita 2**: l'attività non viene creata e il messaggio stderr viene restituito al modello come feedback.

1693* **JSON `{"continue": false, "stopReason": "..."}`**: interrompe completamente il compagno di squadra, corrispondendo al comportamento dell'hook `Stop`. Il `stopReason` viene mostrato all'utente.

1694 

1695Questo esempio blocca le attività i cui soggetti non seguono il formato richiesto:

1696 

1697```bash theme={null}

1698#!/bin/bash

1699INPUT=$(cat)

1700TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

1701 

1702if [[ ! "$TASK_SUBJECT" =~ ^\[TICKET-[0-9]+\] ]]; then

1703 echo "Task subject must start with a ticket number, e.g. '[TICKET-123] Add feature'" >&2

1704 exit 2

1705fi

1706 

1707exit 0

1708```

1709 

1710### TaskCompleted

1711 

1712Viene eseguito quando un'attività sta per essere contrassegnata come completata. Questo si attiva in due situazioni: quando qualsiasi agente contrassegna esplicitamente un'attività come completata attraverso lo strumento TaskUpdate, o quando un compagno di squadra di un [agent team](/it/agent-teams) finisce il suo turno con attività in corso. Utilizzare questo per applicare i criteri di completamento come il passaggio dei test o dei controlli di linting prima che un'attività possa chiudersi.

1713 

1714Quando un hook `TaskCompleted` esce con il codice 2, l'attività non viene contrassegnata come completata e il messaggio stderr viene restituito al modello come feedback. Per interrompere completamente il compagno di squadra invece di rieseguirlo, restituire JSON con `{"continue": false, "stopReason": "..."}`. Gli hook TaskCompleted non supportano i matcher e si attivano ad ogni occorrenza.

1715 

1716#### Input di TaskCompleted

1717 

1718Oltre ai [campi di input comuni](#common-input-fields), gli hook TaskCompleted ricevono `task_id`, `task_subject` e facoltativamente `task_description`, `teammate_name` e `team_name`.

1719 

1720```json theme={null}

1721{

1722 "session_id": "abc123",

1723 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1724 "cwd": "/Users/...",

1725 "permission_mode": "default",

1726 "hook_event_name": "TaskCompleted",

1727 "task_id": "task-001",

1728 "task_subject": "Implement user authentication",

1729 "task_description": "Add login and signup endpoints",

1730 "teammate_name": "implementer",

1731 "team_name": "my-project"

1732}

1733```

1734 

1735| Campo | Descrizione |

1736| :----------------- | :----------------------------------------------------------------------- |

1737| `task_id` | Identificatore dell'attività in corso di completamento |

1738| `task_subject` | Titolo dell'attività |

1739| `task_description` | Descrizione dettagliata dell'attività. Può essere assente |

1740| `teammate_name` | Nome del compagno di squadra che completa l'attività. Può essere assente |

1741| `team_name` | Nome del team. Può essere assente |

1742 

1743#### Controllo della decisione di TaskCompleted

1744 

1745Gli hook TaskCompleted supportano due modi per controllare il completamento dell'attività:

1746 

1747* **Codice di uscita 2**: l'attività non viene contrassegnata come completata e il messaggio stderr viene restituito al modello come feedback.

1748* **JSON `{"continue": false, "stopReason": "..."}`**: interrompe completamente il compagno di squadra, corrispondendo al comportamento dell'hook `Stop`. Il `stopReason` viene mostrato all'utente.

1749 

1750Questo esempio esegue i test e blocca il completamento dell'attività se non riescono:

1751 

1752```bash theme={null}

1753#!/bin/bash

1754INPUT=$(cat)

1755TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

1756 

1757# Eseguire la suite di test

1758if ! npm test 2>&1; then

1759 echo "Tests not passing. Fix failing tests before completing: $TASK_SUBJECT" >&2

1760 exit 2

1761fi

1762 

1763exit 0

1764```

1765 

1766### Stop

1767 

1768Viene eseguito quando l'agente Claude Code principale ha finito di rispondere. Non viene eseguito se l'arresto si è verificato a causa di un'interruzione dell'utente. Gli errori API attivano [StopFailure](#stopfailure) invece.

1769 

1770#### Input di Stop

1771 

1772Oltre ai [campi di input comuni](#common-input-fields), gli hook Stop ricevono `stop_hook_active` e `last_assistant_message`. Il campo `stop_hook_active` è `true` quando Claude Code sta già continuando a causa di un hook di arresto. Controllare questo valore o elaborare la trascrizione per impedire a Claude Code di eseguire indefinitamente. Il campo `last_assistant_message` contiene il contenuto del testo della risposta finale di Claude, quindi gli hook possono accedervi senza analizzare il file della trascrizione.

1773 

1774```json theme={null}

1775{

1776 "session_id": "abc123",

1777 "transcript_path": "~/.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1778 "cwd": "/Users/...",

1779 "permission_mode": "default",

1780 "hook_event_name": "Stop",

1781 "stop_hook_active": true,

1782 "last_assistant_message": "I've completed the refactoring. Here's a summary..."

1783}

1784```

1785 

1786#### Controllo della decisione di Stop

1787 

1788Gli hook `Stop` e `SubagentStop` possono controllare se Claude continua. Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, lo script del hook può restituire questi campi specifici dell'evento:

1789 

1790| Campo | Descrizione |

1791| :--------- | :------------------------------------------------------------------------------------- |

1792| `decision` | `"block"` impedisce a Claude di fermarsi. Omettere per consentire a Claude di fermarsi |

1793| `reason` | Obbligatorio quando `decision` è `"block"`. Dice a Claude perché dovrebbe continuare |

1794 

1795```json theme={null}

1796{

1797 "decision": "block",

1798 "reason": "Must be provided when Claude is blocked from stopping"

1799}

1800```

1801 

1802### StopFailure

1803 

1804Viene eseguito invece di [Stop](#stop) quando il turno termina a causa di un errore API. L'output e il codice di uscita vengono ignorati. Utilizzare questo per registrare i guasti, inviare avvisi o intraprendere azioni di recupero quando Claude non può completare una risposta a causa di limiti di velocità, problemi di autenticazione o altri errori API.

1805 

1806#### Input di StopFailure

1807 

1808Oltre ai [campi di input comuni](#common-input-fields), gli hook StopFailure ricevono `error`, `error_details` facoltativo e `last_assistant_message` facoltativo. Il campo `error` identifica il tipo di errore ed è utilizzato per il filtraggio del matcher.

1809 

1810| Campo | Descrizione |

1811| :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1812| `error` | Tipo di errore: `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens` o `unknown` |

1813| `error_details` | Dettagli aggiuntivi sull'errore, quando disponibili |

1814| `last_assistant_message` | Il testo di errore renderizzato mostrato nella conversazione. A differenza di `Stop` e `SubagentStop`, dove questo campo contiene l'output conversazionale di Claude, per `StopFailure` contiene la stringa di errore API stessa, come `"API Error: Rate limit reached"` |

1815 

1816```json theme={null}

1817{

1818 "session_id": "abc123",

1819 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1820 "cwd": "/Users/...",

1821 "hook_event_name": "StopFailure",

1822 "error": "rate_limit",

1823 "error_details": "429 Too Many Requests",

1824 "last_assistant_message": "API Error: Rate limit reached"

1825}

1826```

1827 

1828Gli hook StopFailure non hanno controllo della decisione. Vengono eseguiti solo per scopi di notifica e registrazione.

1829 

1830### TeammateIdle

1831 

1832Viene eseguito quando un compagno di squadra di un [agent team](/it/agent-teams) sta per andare inattivo dopo aver finito il suo turno. Utilizzare questo per applicare gate di qualità prima che un compagno di squadra smetta di lavorare, come richiedere il passaggio dei controlli di linting o verificare che i file di output esistano.

1833 

1834Quando un hook `TeammateIdle` esce con il codice 2, il compagno di squadra riceve il messaggio stderr come feedback e continua a lavorare invece di andare inattivo. Per interrompere completamente il compagno di squadra invece di rieseguirlo, restituire JSON con `{"continue": false, "stopReason": "..."}`. Gli hook TeammateIdle non supportano i matcher e si attivano ad ogni occorrenza.

1835 

1836#### Input di TeammateIdle

1837 

1838Oltre ai [campi di input comuni](#common-input-fields), gli hook TeammateIdle ricevono `teammate_name` e `team_name`.

1839 

1840```json theme={null}

1841{

1842 "session_id": "abc123",

1843 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1844 "cwd": "/Users/...",

1845 "permission_mode": "default",

1846 "hook_event_name": "TeammateIdle",

1847 "teammate_name": "researcher",

1848 "team_name": "my-project"

1849}

1850```

1851 

1852| Campo | Descrizione |

1853| :-------------- | :------------------------------------------------------- |

1854| `teammate_name` | Nome del compagno di squadra che sta per andare inattivo |

1855| `team_name` | Nome del team |

1856 

1857#### Controllo della decisione di TeammateIdle

1858 

1859Gli hook TeammateIdle supportano due modi per controllare il comportamento del compagno di squadra:

1860 

1861* **Codice di uscita 2**: il compagno di squadra riceve il messaggio stderr come feedback e continua a lavorare invece di andare inattivo.

1862* **JSON `{"continue": false, "stopReason": "..."}`**: interrompe completamente il compagno di squadra, corrispondendo al comportamento dell'hook `Stop`. Il `stopReason` viene mostrato all'utente.

1863 

1864Questo esempio controlla che un artefatto di build esista prima di consentire a un compagno di squadra di andare inattivo:

1865 

1866```bash theme={null}

1867#!/bin/bash

1868 

1869if [ ! -f "./dist/output.js" ]; then

1870 echo "Build artifact missing. Run the build before stopping." >&2

1871 exit 2

1872fi

1873 

1874exit 0

1875```

1876 

1877### ConfigChange

1878 

1879Viene eseguito quando un file di configurazione cambia durante una sessione. Utilizzare questo per controllare le modifiche alle impostazioni, applicare le politiche di sicurezza o bloccare le modifiche non autorizzate ai file di configurazione.

1880 

1881Gli hook ConfigChange si attivano per le modifiche ai file di impostazioni, alle impostazioni della politica gestita e ai file di skill. Il campo `source` nell'input dice quale tipo di configurazione è cambiato e il campo `file_path` facoltativo fornisce il percorso al file modificato.

1882 

1883Il matcher filtra sulla fonte di configurazione:

1884 

1885| Matcher | Quando si attiva |

1886| :----------------- | :---------------------------------------------- |

1887| `user_settings` | `~/.claude/settings.json` cambia |

1888| `project_settings` | `.claude/settings.json` cambia |

1889| `local_settings` | `.claude/settings.local.json` cambia |

1890| `policy_settings` | Le impostazioni della politica gestita cambiano |

1891| `skills` | Un file di skill in `.claude/skills/` cambia |

1892 

1893Questo esempio registra tutte le modifiche di configurazione per il controllo della sicurezza:

1894 

1895```json theme={null}

1896{

1897 "hooks": {

1898 "ConfigChange": [

1899 {

1900 "hooks": [

1901 {

1902 "type": "command",

1903 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/audit-config-change.sh"

1904 }

1905 ]

1906 }

1907 ]

1908 }

1909}

1910```

1911 

1912#### Input di ConfigChange

1913 

1914Oltre ai [campi di input comuni](#common-input-fields), gli hook ConfigChange ricevono `source` e facoltativamente `file_path`. Il campo `source` indica quale tipo di configurazione è cambiato e `file_path` fornisce il percorso al file specifico che è stato modificato.

1915 

1916```json theme={null}

1917{

1918 "session_id": "abc123",

1919 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1920 "cwd": "/Users/...",

1921 "hook_event_name": "ConfigChange",

1922 "source": "project_settings",

1923 "file_path": "/Users/.../my-project/.claude/settings.json"

1924}

1925```

1926 

1927#### Controllo della decisione di ConfigChange

1928 

1929Gli hook ConfigChange possono bloccare le modifiche di configurazione dall'avere effetto. Utilizzare il codice di uscita 2 o un JSON `decision` per impedire la modifica. Quando bloccato, le nuove impostazioni non vengono applicate alla sessione in esecuzione.

1930 

1931| Campo | Descrizione |

1932| :--------- | :------------------------------------------------------------------------------------------------------- |

1933| `decision` | `"block"` impedisce l'applicazione della modifica di configurazione. Omettere per consentire la modifica |

1934| `reason` | Spiegazione mostrata all'utente quando `decision` è `"block"` |

1935 

1936```json theme={null}

1937{

1938 "decision": "block",

1939 "reason": "Configuration changes to project settings require admin approval"

1940}

1941```

1942 

1943Le modifiche a `policy_settings` non possono essere bloccate. Gli hook si attivano ancora per le fonti `policy_settings`, quindi è possibile utilizzarli per la registrazione di audit, ma qualsiasi decisione di blocco viene ignorata. Ciò garantisce che le impostazioni gestite dall'azienda abbiano sempre effetto.

1944 

1945### CwdChanged

1946 

1947Viene eseguito quando la directory di lavoro cambia durante una sessione, ad esempio quando Claude esegue un comando `cd`. Utilizzare questo per reagire ai cambi di directory: ricaricare le variabili di ambiente, attivare toolchain specifiche del progetto o eseguire script di configurazione automaticamente. Si accoppia con [FileChanged](#filechanged) per strumenti come [direnv](https://direnv.net/) che gestiscono l'ambiente per directory.

1948 

1949Gli hook CwdChanged hanno accesso a `CLAUDE_ENV_FILE`. Le variabili scritte in quel file persistono nei comandi Bash successivi per la sessione, proprio come negli [hook SessionStart](#persist-environment-variables).

1950 

1951CwdChanged non supporta i matcher e si attiva ad ogni cambio di directory.

1952 

1953#### Input di CwdChanged

1954 

1955Oltre ai [campi di input comuni](#common-input-fields), gli hook CwdChanged ricevono `old_cwd` e `new_cwd`.

1956 

1957```json theme={null}

1958{

1959 "session_id": "abc123",

1960 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

1961 "cwd": "/Users/my-project/src",

1962 "hook_event_name": "CwdChanged",

1963 "old_cwd": "/Users/my-project",

1964 "new_cwd": "/Users/my-project/src"

1965}

1966```

1967 

1968#### Output di CwdChanged

1969 

1970Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, gli hook CwdChanged possono restituire `watchPaths` per impostare dinamicamente quali percorsi di file [FileChanged](#filechanged) monitora:

1971 

1972| Campo | Descrizione |

1973| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1974| `watchPaths` | Array di percorsi assoluti. Sostituisce l'elenco di monitoraggio dinamico corrente (i percorsi dalla configurazione del `matcher` vengono sempre monitorati). Restituire un array vuoto cancella l'elenco dinamico, che è tipico quando si entra in una nuova directory |

1975 

1976Gli hook CwdChanged non hanno controllo della decisione. Non possono bloccare il cambio di directory.

1977 

1978### FileChanged

1979 

1980Viene eseguito quando un file monitorato cambia su disco. Utile per ricaricare le variabili di ambiente quando i file di configurazione del progetto vengono modificati.

1981 

1982Il `matcher` per questo evento serve due ruoli:

1983 

1984* **Costruire l'elenco di osservazione**: il valore viene diviso su `|` e ogni segmento viene registrato come nome di file letterale nella directory di lavoro, quindi `".envrc|.env"` monitora esattamente quei due file. I modelli regex non sono utili qui: un valore come `^\.env` monitorerebbe un file letteralmente denominato `^\.env`.

1985* **Filtrare quali hook vengono eseguiti**: quando un file monitorato cambia, lo stesso valore filtra quali gruppi di hook vengono eseguiti utilizzando le [regole di matcher](#matcher-patterns) standard rispetto al basename del file modificato.

1986 

1987Gli hook FileChanged hanno accesso a `CLAUDE_ENV_FILE`. Le variabili scritte in quel file persistono nei comandi Bash successivi per la sessione, proprio come negli [hook SessionStart](#persist-environment-variables).

1988 

1989#### Input di FileChanged

1990 

1991Oltre ai [campi di input comuni](#common-input-fields), gli hook FileChanged ricevono `file_path` e `event`.

1992 

1993| Campo | Descrizione |

1994| :---------- | :------------------------------------------------------------------------------------------------- |

1995| `file_path` | Percorso assoluto al file che è cambiato |

1996| `event` | Cosa è accaduto: `"change"` (file modificato), `"add"` (file creato) o `"unlink"` (file eliminato) |

1997 

1998```json theme={null}

1999{

2000 "session_id": "abc123",

2001 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

2002 "cwd": "/Users/my-project",

2003 "hook_event_name": "FileChanged",

2004 "file_path": "/Users/my-project/.envrc",

2005 "event": "change"

2006}

2007```

2008 

2009#### Output di FileChanged

2010 

2011Oltre ai [campi di output JSON](#json-output) disponibili per tutti gli hook, gli hook FileChanged possono restituire `watchPaths` per aggiornare dinamicamente quali percorsi di file vengono monitorati:

2012 

2013| Campo | Descrizione |

2014| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

2015| `watchPaths` | Array di percorsi assoluti. Sostituisce l'elenco di monitoraggio dinamico corrente (i percorsi dalla configurazione del `matcher` vengono sempre monitorati). Utilizzare questo quando lo script del hook scopre file aggiuntivi da monitorare in base al file modificato |

2016 

2017Gli hook FileChanged non hanno controllo della decisione. Non possono bloccare il cambio di file dall'occorrenza.

2018 

2019### WorktreeCreate

2020 

2021Quando si esegue `claude --worktree` o un [subagent utilizza `isolation: "worktree"`](/it/sub-agents#choose-the-subagent-scope), Claude Code crea una copia di lavoro isolata utilizzando `git worktree`. Se si configura un hook WorktreeCreate, sostituisce il comportamento git predefinito, consentendo di utilizzare un sistema di controllo della versione diverso come SVN, Perforce o Mercurial.

2022 

2023Poiché l'hook sostituisce completamente il comportamento predefinito, [`.worktreeinclude`](/it/worktrees#copy-gitignored-files-into-worktrees) non viene elaborato. Se è necessario copiare i file di configurazione locali come `.env` nel nuovo worktree, farlo all'interno dello script del hook.

2024 

2025L'hook deve restituire il percorso assoluto della directory del worktree creato. Claude Code utilizza questo percorso come directory di lavoro per la sessione isolata. I command hook lo stampano su stdout; gli HTTP hook lo restituiscono tramite `hookSpecificOutput.worktreePath`.

2026 

2027Questo esempio crea una copia di lavoro SVN e stampa il percorso per Claude Code da utilizzare. Sostituire l'URL del repository con il proprio:

2028 

2029```json theme={null}

2030{

2031 "hooks": {

2032 "WorktreeCreate": [

2033 {

2034 "hooks": [

2035 {

2036 "type": "command",

2037 "command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"

2038 }

2039 ]

2040 }

2041 ]

2042 }

2043}

2044```

2045 

2046L'hook legge il `name` del worktree dall'input JSON su stdin, controlla una copia fresca in una nuova directory e stampa il percorso della directory. L'`echo` sull'ultima riga è quello che Claude Code legge come percorso del worktree. Reindirizzare qualsiasi altro output a stderr in modo che non interferisca con il percorso.

2047 

2048#### Input di WorktreeCreate

2049 

2050Oltre ai [campi di input comuni](#common-input-fields), gli hook WorktreeCreate ricevono il campo `name`. Questo è un identificatore slug per il nuovo worktree, specificato dall'utente o generato automaticamente (ad esempio, `bold-oak-a3f2`).

2051 

2052```json theme={null}

2053{

2054 "session_id": "abc123",

2055 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2056 "cwd": "/Users/...",

2057 "hook_event_name": "WorktreeCreate",

2058 "name": "feature-auth"

2059}

2060```

2061 

2062#### Output di WorktreeCreate

2063 

2064Gli hook WorktreeCreate non utilizzano il modello di decisione di blocco/consentimento standard. Invece, il successo o il fallimento dell'hook determina il risultato. L'hook deve restituire il percorso assoluto della directory del worktree creato:

2065 

2066* **Command hooks** (`type: "command"`): stampano il percorso su stdout.

2067* **HTTP hooks** (`type: "http"`): restituiscono `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` nel corpo della risposta.

2068 

2069Se l'hook non riesce o non produce un percorso, la creazione del worktree non riesce con un errore.

2070 

2071### WorktreeRemove

2072 

2073La controparte di pulizia di [WorktreeCreate](#worktreecreate). Questo hook si attiva quando un worktree viene rimosso, sia quando si esce da una sessione `--worktree` e si sceglie di rimuoverla, sia quando un subagent con `isolation: "worktree"` termina. Per i worktree basati su git, Claude gestisce la pulizia automaticamente con `git worktree remove`. Se si è configurato un hook WorktreeCreate per un sistema di controllo della versione non-git, accoppiarlo con un hook WorktreeRemove per gestire la pulizia. Senza uno, la directory del worktree viene lasciata su disco.

2074 

2075Claude Code passa il percorso restituito da WorktreeCreate come `worktree_path` nell'input del hook. Questo esempio legge quel percorso e rimuove la directory:

2076 

2077```json theme={null}

2078{

2079 "hooks": {

2080 "WorktreeRemove": [

2081 {

2082 "hooks": [

2083 {

2084 "type": "command",

2085 "command": "bash -c 'jq -r .worktree_path | xargs rm -rf'"

2086 }

2087 ]

2088 }

2089 ]

2090 }

2091}

2092```

2093 

2094#### Input di WorktreeRemove

2095 

2096Oltre ai [campi di input comuni](#common-input-fields), gli hook WorktreeRemove ricevono il campo `worktree_path`, che è il percorso assoluto al worktree in corso di rimozione.

2097 

2098```json theme={null}

2099{

2100 "session_id": "abc123",

2101 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2102 "cwd": "/Users/...",

2103 "hook_event_name": "WorktreeRemove",

2104 "worktree_path": "/Users/.../my-project/.claude/worktrees/feature-auth"

2105}

2106```

2107 

2108Gli hook WorktreeRemove non hanno controllo della decisione. Non possono bloccare la rimozione del worktree ma possono eseguire attività di pulizia come la rimozione dello stato del controllo della versione o l'archiviazione delle modifiche. I guasti degli hook vengono registrati solo in modalità debug.

2109 

2110### PreCompact

2111 

2112Viene eseguito prima che Claude Code stia per eseguire un'operazione di compattazione.

2113 

2114Il valore del matcher indica se la compattazione è stata attivata manualmente o automaticamente:

2115 

2116| Matcher | Quando si attiva |

2117| :------- | :-------------------------------------------------------------- |

2118| `manual` | `/compact` |

2119| `auto` | Compattazione automatica quando la finestra di contesto è piena |

2120 

2121Uscire con il codice 2 per bloccare la compattazione. Per un `/compact` manuale, il messaggio stderr viene mostrato all'utente. È anche possibile bloccare restituendo JSON con `"decision": "block"`.

2122 

2123Bloccare la compattazione automatica ha effetti diversi a seconda di quando si attiva. Se la compattazione è stata attivata in modo proattivo prima del limite di contesto, Claude Code la salta e la conversazione continua non compattata. Se la compattazione è stata attivata per recuperare da un errore di limite di contesto già restituito dall'API, l'errore sottostante emerge e la richiesta corrente non riesce.

2124 

2125#### Input di PreCompact

2126 

2127Oltre ai [campi di input comuni](#common-input-fields), gli hook PreCompact ricevono `trigger` e `custom_instructions`. Per `manual`, `custom_instructions` contiene quello che l'utente passa in `/compact`. Per `auto`, `custom_instructions` è vuoto.

2128 

2129```json theme={null}

2130{

2131 "session_id": "abc123",

2132 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2133 "cwd": "/Users/...",

2134 "hook_event_name": "PreCompact",

2135 "trigger": "manual",

2136 "custom_instructions": ""

2137}

2138```

2139 

2140### PostCompact

2141 

2142Viene eseguito dopo che Claude Code completa un'operazione di compattazione. Utilizzare questo evento per reagire al nuovo stato compattato, ad esempio per registrare il riepilogo generato o aggiornare lo stato esterno.

2143 

2144Gli stessi valori di matcher si applicano come per `PreCompact`:

2145 

2146| Matcher | Quando si attiva |

2147| :------- | :---------------------------------------------------------------------- |

2148| `manual` | Dopo `/compact` |

2149| `auto` | Dopo la compattazione automatica quando la finestra di contesto è piena |

2150 

2151#### Input di PostCompact

2152 

2153Oltre ai [campi di input comuni](#common-input-fields), gli hook PostCompact ricevono `trigger` e `compact_summary`. Il campo `compact_summary` contiene il riepilogo della conversazione generato dall'operazione di compattazione.

2154 

2155```json theme={null}

2156{

2157 "session_id": "abc123",

2158 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2159 "cwd": "/Users/...",

2160 "hook_event_name": "PostCompact",

2161 "trigger": "manual",

2162 "compact_summary": "Summary of the compacted conversation..."

2163}

2164```

2165 

2166Gli hook PostCompact non hanno controllo della decisione. Non possono influenzare il risultato della compattazione ma possono eseguire attività di follow-up.

2167 

2168### SessionEnd

2169 

2170Viene eseguito quando una sessione di Claude Code termina. Utile per le attività di pulizia, la registrazione delle statistiche della sessione o il salvataggio dello stato della sessione. Supporta i matcher per filtrare per motivo di uscita.

2171 

2172Il campo `reason` nell'input del hook indica perché la sessione è terminata:

2173 

2174| Motivo | Descrizione |

2175| :---------------------------- | :-------------------------------------------------------------- |

2176| `clear` | Sessione cancellata con il comando `/clear` |

2177| `resume` | Sessione commutata tramite `/resume` interattivo |

2178| `logout` | L'utente ha effettuato il logout |

2179| `prompt_input_exit` | L'utente è uscito mentre l'input del prompt era visibile |

2180| `bypass_permissions_disabled` | La modalità di bypass delle autorizzazioni è stata disabilitata |

2181| `other` | Altri motivi di uscita |

2182 

2183#### Input di SessionEnd

2184 

2185Oltre ai [campi di input comuni](#common-input-fields), gli hook SessionEnd ricevono un campo `reason` che indica perché la sessione è terminata. Consultare la [tabella dei motivi](#sessionend) sopra per tutti i valori.

2186 

2187```json theme={null}

2188{

2189 "session_id": "abc123",

2190 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2191 "cwd": "/Users/...",

2192 "hook_event_name": "SessionEnd",

2193 "reason": "other"

2194}

2195```

2196 

2197Gli hook SessionEnd non hanno controllo della decisione. Non possono bloccare la terminazione della sessione ma possono eseguire attività di pulizia.

2198 

2199Gli hook SessionEnd hanno un timeout predefinito di 1,5 secondi. Questo si applica all'uscita della sessione, `/clear` e al cambio di sessioni tramite `/resume` interattivo. Se un hook ha bisogno di più tempo, impostare un `timeout` per hook nella configurazione del hook. Il budget complessivo viene automaticamente aumentato al timeout per hook più alto configurato nei file di impostazioni, fino a 60 secondi. I timeout impostati sui hook forniti dal plugin non aumentano il budget. Per sovrascrivere il budget in modo esplicito, impostare la variabile di ambiente `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` in millisecondi.

2200 

2201```bash theme={null}

2202CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

2203```

2204 

2205### Elicitation

2206 

2207Viene eseguito quando un server MCP richiede l'input dell'utente a metà attività. Per impostazione predefinita, Claude Code mostra una finestra di dialogo interattiva per l'utente per rispondere. Gli hook possono intercettare questa richiesta e rispondere a livello di programmazione, saltando completamente la finestra di dialogo.

2208 

2209Il campo matcher corrisponde al nome del server MCP.

2210 

2211#### Input di Elicitation

2212 

2213Oltre ai [campi di input comuni](#common-input-fields), gli hook Elicitation ricevono `mcp_server_name`, `message` e campi facoltativi `mode`, `url`, `elicitation_id` e `requested_schema`.

2214 

2215Per l'elicitazione in modalità modulo (il caso più comune):

2216 

2217```json theme={null}

2218{

2219 "session_id": "abc123",

2220 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2221 "cwd": "/Users/...",

2222 "permission_mode": "default",

2223 "hook_event_name": "Elicitation",

2224 "mcp_server_name": "my-mcp-server",

2225 "message": "Please provide your credentials",

2226 "mode": "form",

2227 "requested_schema": {

2228 "type": "object",

2229 "properties": {

2230 "username": { "type": "string", "title": "Username" }

2231 }

2232 }

2233}

2234```

2235 

2236Per l'elicitazione in modalità URL (autenticazione basata su browser):

2237 

2238```json theme={null}

2239{

2240 "session_id": "abc123",

2241 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2242 "cwd": "/Users/...",

2243 "permission_mode": "default",

2244 "hook_event_name": "Elicitation",

2245 "mcp_server_name": "my-mcp-server",

2246 "message": "Please authenticate",

2247 "mode": "url",

2248 "url": "https://auth.example.com/login"

2249}

2250```

2251 

2252#### Output di Elicitation

2253 

2254Per rispondere a livello di programmazione senza mostrare la finestra di dialogo, restituire un oggetto JSON con `hookSpecificOutput`:

2255 

2256```json theme={null}

2257{

2258 "hookSpecificOutput": {

2259 "hookEventName": "Elicitation",

2260 "action": "accept",

2261 "content": {

2262 "username": "alice"

2263 }

2264 }

2265}

2266```

2267 

2268| Campo | Valori | Descrizione |

2269| :-------- | :---------------------------- | :--------------------------------------------------------------------------------- |

2270| `action` | `accept`, `decline`, `cancel` | Se accettare, rifiutare o annullare la richiesta |

2271| `content` | object | Valori dei campi del modulo da inviare. Utilizzato solo quando `action` è `accept` |

2272 

2273Il codice di uscita 2 nega l'elicitazione e mostra stderr all'utente.

2274 

2275### ElicitationResult

2276 

2277Viene eseguito dopo che un utente risponde a un'elicitazione MCP. Gli hook possono osservare, modificare o bloccare la risposta prima che venga inviata al server MCP.

2278 

2279Il campo matcher corrisponde al nome del server MCP.

2280 

2281#### Input di ElicitationResult

2282 

2283Oltre ai [campi di input comuni](#common-input-fields), gli hook ElicitationResult ricevono `mcp_server_name`, `action` e campi facoltativi `mode`, `elicitation_id` e `content`.

2284 

2285```json theme={null}

2286{

2287 "session_id": "abc123",

2288 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2289 "cwd": "/Users/...",

2290 "permission_mode": "default",

2291 "hook_event_name": "ElicitationResult",

2292 "mcp_server_name": "my-mcp-server",

2293 "action": "accept",

2294 "content": { "username": "alice" },

2295 "mode": "form",

2296 "elicitation_id": "elicit-123"

2297}

2298```

2299 

2300#### Output di ElicitationResult

2301 

2302Per sovrascrivere la risposta dell'utente, restituire un oggetto JSON con `hookSpecificOutput`:

2303 

2304```json theme={null}

2305{

2306 "hookSpecificOutput": {

2307 "hookEventName": "ElicitationResult",

2308 "action": "decline",

2309 "content": {}

2310 }

2311}

2312```

2313 

2314| Campo | Valori | Descrizione |

2315| :-------- | :---------------------------- | :--------------------------------------------------------------------------------------- |

2316| `action` | `accept`, `decline`, `cancel` | Sovrascrive l'azione dell'utente |

2317| `content` | object | Sovrascrive i valori dei campi del modulo. Significativo solo quando `action` è `accept` |

2318 

2319Il codice di uscita 2 blocca la risposta, cambiando l'azione effettiva in `decline`.

2320 

2321## Hook basati su prompt

2322 

2323Oltre agli hook di comando, HTTP e MCP tool, Claude Code supporta gli hook basati su prompt (`type: "prompt"`) che utilizzano un LLM per valutare se consentire o bloccare un'azione, e gli hook basati su agenti (`type: "agent"`) che generano un verificatore agentico con accesso agli strumenti. Non tutti gli eventi supportano ogni tipo di hook.

2324 

2325Gli eventi che supportano tutti e cinque i tipi di hook (`command`, `http`, `mcp_tool`, `prompt` e `agent`):

2326 

2327* `PermissionRequest`

2328* `PostToolBatch`

2329* `PostToolUse`

2330* `PostToolUseFailure`

2331* `PreToolUse`

2332* `Stop`

2333* `SubagentStop`

2334* `TaskCompleted`

2335* `TaskCreated`

2336* `UserPromptExpansion`

2337* `UserPromptSubmit`

2338 

2339Gli eventi che supportano gli hook `command`, `http` e `mcp_tool` ma non `prompt` o `agent`:

2340 

2341* `ConfigChange`

2342* `CwdChanged`

2343* `Elicitation`

2344* `ElicitationResult`

2345* `FileChanged`

2346* `InstructionsLoaded`

2347* `Notification`

2348* `PermissionDenied`

2349* `PostCompact`

2350* `PreCompact`

2351* `SessionEnd`

2352* `StopFailure`

2353* `SubagentStart`

2354* `TeammateIdle`

2355* `WorktreeCreate`

2356* `WorktreeRemove`

2357 

2358`SessionStart` e `Setup` supportano gli hook `command` e `mcp_tool`. Non supportano gli hook `http`, `prompt` o `agent`.

2359 

2360### Come funzionano gli hook basati su prompt

2361 

2362Invece di eseguire un comando Bash, gli hook basati su prompt:

2363 

23641. Inviano l'input del hook e il prompt a un modello Claude, Haiku per impostazione predefinita

23652. L'LLM risponde con JSON strutturato contenente una decisione

23663. Claude Code elabora automaticamente la decisione

2367 

2368### Configurazione del prompt hook

2369 

2370Impostare `type` su `"prompt"` e fornire una stringa `prompt` invece di un `command`. Utilizzare il segnaposto `$ARGUMENTS` per iniettare i dati di input JSON del hook nel testo del prompt. Claude Code invia il prompt combinato e l'input a un modello Claude veloce, che restituisce una decisione JSON.

2371 

2372Questo hook `Stop` chiede all'LLM di valutare se tutti i compiti sono completi prima di consentire a Claude di terminare:

2373 

2374```json theme={null}

2375{

2376 "hooks": {

2377 "Stop": [

2378 {

2379 "hooks": [

2380 {

2381 "type": "prompt",

2382 "prompt": "Evaluate if Claude should stop: $ARGUMENTS. Check if all tasks are complete."

2383 }

2384 ]

2385 }

2386 ]

2387 }

2388}

2389```

2390 

2391| Campo | Obbligatorio | Descrizione |

2392| :-------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2393| `type` | sì | Deve essere `"prompt"` |

2394| `prompt` | sì | Il testo del prompt da inviare all'LLM. Utilizzare `$ARGUMENTS` come segnaposto per l'input JSON del hook. Se `$ARGUMENTS` non è presente, l'input JSON viene aggiunto al prompt |

2395| `model` | no | Modello da utilizzare per la valutazione. Impostazione predefinita: un modello veloce |

2396| `timeout` | no | Timeout in secondi. Impostazione predefinita: 30 |

2397 

2398### Schema di risposta

2399 

2400L'LLM deve rispondere con JSON contenente:

2401 

2402```json theme={null}

2403{

2404 "ok": true | false,

2405 "reason": "Explanation for the decision"

2406}

2407```

2408 

2409| Campo | Descrizione |

2410| :------- | :------------------------------------------------------------ |

2411| `ok` | `true` consente l'azione, `false` la impedisce |

2412| `reason` | Obbligatorio quando `ok` è `false`. Spiegazione per il blocco |

2413 

2414Ciò che accade con `ok: false` dipende dall'evento:

2415 

2416* `Stop` e `SubagentStop`: il motivo viene reinviato a Claude come sua prossima istruzione e il turno continua

2417* `PreToolUse`: la chiamata dello strumento viene negata e il motivo viene restituito a Claude come errore dello strumento, equivalente a un hook di comando con `permissionDecision: "deny"`

2418* `PostToolUse`, `PostToolBatch`, `UserPromptSubmit` e `UserPromptExpansion`: il turno termina e il motivo appare nella chat come una riga di avviso, equivalente a restituire `"continue": false` da un hook di comando

2419* `PostToolUseFailure`, `TaskCreated` e `TaskCompleted`: il motivo viene restituito a Claude come errore dello strumento, simile a `PreToolUse`

2420* `PermissionRequest`: `ok: false` non ha effetto. Per negare un'approvazione da un hook, utilizzare un [hook di comando](#command-hook-fields) che restituisce `hookSpecificOutput.decision.behavior: "deny"`

2421 

2422Se hai bisogno di un controllo più fine su qualsiasi evento, utilizza un [hook di comando](#command-hook-fields) con i campi per evento descritti in [Controllo delle decisioni](#decision-control).

2423 

2424### Esempio: Hook Stop con criteri multipli

2425 

2426Questo hook `Stop` utilizza un prompt dettagliato per controllare tre condizioni prima di consentire a Claude di fermarsi. Se `"ok"` è `false`, Claude continua a lavorare con il motivo fornito come sua prossima istruzione. Gli hook `SubagentStop` utilizzano lo stesso formato per valutare se un [subagent](/it/sub-agents) dovrebbe fermarsi:

2427 

2428```json theme={null}

2429{

2430 "hooks": {

2431 "Stop": [

2432 {

2433 "hooks": [

2434 {

2435 "type": "prompt",

2436 "prompt": "You are evaluating whether Claude should stop working. Context: $ARGUMENTS\n\nAnalyze the conversation and determine if:\n1. All user-requested tasks are complete\n2. Any errors need to be addressed\n3. Follow-up work is needed\n\nRespond with JSON: {\"ok\": true} to allow stopping, or {\"ok\": false, \"reason\": \"your explanation\"} to continue working.",

2437 "timeout": 30

2438 }

2439 ]

2440 }

2441 ]

2442 }

2443}

2444```

2445 

2446## Hook basati su agenti

2447 

2448<Warning>

2449 Gli hook agente sono sperimentali. Il comportamento e la configurazione potrebbero cambiare nelle versioni future. Per i flussi di lavoro in produzione, preferire gli [hook di comando](#command-hook-fields).

2450</Warning>

2451 

2452Gli hook basati su agenti (`type: "agent"`) sono come gli hook basati su prompt ma con accesso agli strumenti multi-turno. Invece di una singola chiamata LLM, un hook agente genera un subagent che può leggere file, cercare codice e ispezionare il codebase per verificare le condizioni. Gli hook agente supportano gli stessi eventi degli hook basati su prompt.

2453 

2454### Come funzionano gli hook basati su agenti

2455 

2456Quando un hook agente si attiva:

2457 

24581. Claude Code genera un subagent con il prompt e l'input JSON del hook

24592. Il subagent può utilizzare strumenti come Read, Grep e Glob per investigare

24603. Dopo fino a 50 turni, il subagent restituisce una decisione strutturata `{ "ok": true/false }`

24614. Claude Code elabora la decisione nello stesso modo di un hook di prompt

2462 

2463Gli hook agente sono utili quando la verifica richiede l'ispezione dei file effettivi o dell'output dei test, non solo la valutazione dei dati di input del hook da soli.

2464 

2465### Configurazione dell'hook agente

2466 

2467Impostare `type` su `"agent"` e fornire una stringa `prompt`. I campi di configurazione sono gli stessi degli [hook di prompt](#prompt-hook-configuration), con un timeout predefinito più lungo:

2468 

2469| Campo | Obbligatorio | Descrizione |

2470| :-------- | :----------- | :----------------------------------------------------------------------------------------------------- |

2471| `type` | sì | Deve essere `"agent"` |

2472| `prompt` | sì | Prompt che descrive cosa verificare. Utilizzare `$ARGUMENTS` come segnaposto per l'input JSON del hook |

2473| `model` | no | Modello da utilizzare. Impostazione predefinita: un modello veloce |

2474| `timeout` | no | Timeout in secondi. Impostazione predefinita: 60 |

2475 

2476Lo schema di risposta è lo stesso degli hook di prompt: `{ "ok": true }` per consentire o `{ "ok": false, "reason": "..." }` per bloccare.

2477 

2478Questo hook `Stop` verifica che tutti i test unitari passino prima di consentire a Claude di finire:

2479 

2480```json theme={null}

2481{

2482 "hooks": {

2483 "Stop": [

2484 {

2485 "hooks": [

2486 {

2487 "type": "agent",

2488 "prompt": "Verify that all unit tests pass. Run the test suite and check the results. $ARGUMENTS",

2489 "timeout": 120

2490 }

2491 ]

2492 }

2493 ]

2494 }

2495}

2496```

2497 

2498## Eseguire i hook in background

2499 

2500Per impostazione predefinita, gli hook bloccano l'esecuzione di Claude fino al completamento. Per le attività a lunga esecuzione come distribuzioni, suite di test o chiamate API esterne, impostare `"async": true` per eseguire l'hook in background mentre Claude continua a lavorare. Gli hook asincroni non possono bloccare o controllare il comportamento di Claude: i campi di risposta come `decision`, `permissionDecision` e `continue` non hanno effetto, perché l'azione che avrebbero controllato è già stata completata.

2501 

2502### Configurare un hook asincrono

2503 

2504Aggiungere `"async": true` alla configurazione di un command hook per eseguirlo in background senza bloccare Claude. Questo campo è disponibile solo sui hook `type: "command"`.

2505 

2506Questo hook esegue uno script di test dopo ogni chiamata dello strumento `Write`. Claude continua a lavorare immediatamente mentre `run-tests.sh` viene eseguito per un massimo di 120 secondi. Quando lo script termina, l'output viene consegnato al turno di conversazione successivo:

2507 

2508```json theme={null}

2509{

2510 "hooks": {

2511 "PostToolUse": [

2512 {

2513 "matcher": "Write",

2514 "hooks": [

2515 {

2516 "type": "command",

2517 "command": "/path/to/run-tests.sh",

2518 "async": true,

2519 "timeout": 120

2520 }

2521 ]

2522 }

2523 ]

2524 }

2525}

2526```

2527 

2528Il campo `timeout` imposta il tempo massimo in secondi per il processo in background. Se non specificato, gli hook asincroni utilizzano lo stesso timeout predefinito di 10 minuti degli hook sincroni.

2529 

2530### Come vengono eseguiti gli hook asincroni

2531 

2532Quando un hook asincrono si attiva, Claude Code avvia il processo del hook e continua immediatamente senza aspettare il completamento. L'hook riceve lo stesso input JSON tramite stdin di un hook sincrono.

2533 

2534Dopo che il processo in background esce, se l'hook ha prodotto una risposta JSON con un campo `systemMessage` o `additionalContext`, quel contenuto viene consegnato a Claude come contesto al turno di conversazione successivo.

2535 

2536Le notifiche di completamento degli hook asincroni sono soppresse per impostazione predefinita. Per vederle, abilitare la modalità verbose con `Ctrl+O` o avviare Claude Code con `--verbose`.

2537 

2538### Esempio: eseguire i test dopo le modifiche ai file

2539 

2540Questo hook avvia una suite di test in background ogni volta che Claude scrive un file, quindi segnala i risultati a Claude quando i test terminano. Salvare questo script in `.claude/hooks/run-tests-async.sh` nel progetto e renderlo eseguibile con `chmod +x`:

2541 

2542```bash theme={null}

2543#!/bin/bash

2544# run-tests-async.sh

2545 

2546# Leggere l'input del hook da stdin

2547INPUT=$(cat)

2548FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

2549 

2550# Eseguire i test solo per i file di origine

2551if [[ "$FILE_PATH" != *.ts && "$FILE_PATH" != *.js ]]; then

2552 exit 0

2553fi

2554 

2555# Eseguire i test e segnalare i risultati tramite systemMessage

2556RESULT=$(npm test 2>&1)

2557EXIT_CODE=$?

2558 

2559if [ $EXIT_CODE -eq 0 ]; then

2560 echo "{\"systemMessage\": \"Tests passed after editing $FILE_PATH\"}"

2561else

2562 echo "{\"systemMessage\": \"Tests failed after editing $FILE_PATH: $RESULT\"}"

2563fi

2564```

2565 

2566Quindi aggiungere questa configurazione a `.claude/settings.json` nella radice del progetto. Il flag `async: true` consente a Claude di continuare a lavorare mentre i test vengono eseguiti:

2567 

2568```json theme={null}

2569{

2570 "hooks": {

2571 "PostToolUse": [

2572 {

2573 "matcher": "Write|Edit",

2574 "hooks": [

2575 {

2576 "type": "command",

2577 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/run-tests-async.sh",

2578 "async": true,

2579 "timeout": 300

2580 }

2581 ]

2582 }

2583 ]

2584 }

2585}

2586```

2587 

2588### Limitazioni

2589 

2590Gli hook asincroni hanno diversi vincoli rispetto agli hook sincroni:

2591 

2592* Solo gli hook `type: "command"` supportano `async`. Gli hook basati su prompt non possono essere eseguiti in modo asincrono.

2593* Gli hook asincroni non possono bloccare le chiamate dello strumento o restituire decisioni. Nel momento in cui l'hook si completa, l'azione che lo ha attivato è già stata eseguita.

2594* L'output del hook viene consegnato al turno di conversazione successivo. Se la sessione è inattiva, la risposta attende fino alla prossima interazione dell'utente. Eccezione: un hook `asyncRewake` che esce con il codice 2 riattiva Claude immediatamente anche quando la sessione è inattiva.

2595* Ogni esecuzione crea un processo in background separato. Non c'è deduplicazione tra più attivazioni dello stesso hook asincrono.

2596 

2597## Considerazioni sulla sicurezza

2598 

2599### Disclaimer

2600 

2601I command hook vengono eseguiti con i permessi completi dell'utente del sistema.

2602 

2603<Warning>

2604 I command hook eseguono comandi shell con i permessi completi dell'utente. Possono modificare, eliminare o accedere a qualsiasi file a cui l'account utente può accedere. Rivedere e testare tutti i comandi del hook prima di aggiungerli alla configurazione.

2605</Warning>

2606 

2607### Migliori pratiche di sicurezza

2608 

2609Tenere presenti queste pratiche quando si scrivono i hook:

2610 

2611* **Convalidare e disinfettare gli input**: non fidarsi mai ciecamente dei dati di input

2612* **Citare sempre le variabili shell**: utilizzare `"$VAR"` non `$VAR`

2613* **Bloccare l'attraversamento del percorso**: controllare `..` nei percorsi dei file

2614* **Utilizzare percorsi assoluti**: specificare percorsi completi per gli script, utilizzando `"$CLAUDE_PROJECT_DIR"` per la radice del progetto

2615* **Saltare i file sensibili**: evitare `.env`, `.git/`, chiavi, ecc.

2616 

2617## Strumento Windows PowerShell

2618 

2619Su Windows, è possibile eseguire singoli hook in PowerShell impostando `"shell": "powershell"` su un command hook. Gli hook generano PowerShell direttamente, quindi questo funziona indipendentemente dal fatto che `CLAUDE_CODE_USE_POWERSHELL_TOOL` sia impostato. Claude Code rileva automaticamente `pwsh.exe` (PowerShell 7+) con un fallback a `powershell.exe` (5.1).

2620 

2621```json theme={null}

2622{

2623 "hooks": {

2624 "PostToolUse": [

2625 {

2626 "matcher": "Write",

2627 "hooks": [

2628 {

2629 "type": "command",

2630 "shell": "powershell",

2631 "command": "Write-Host 'File written'"

2632 }

2633 ]

2634 }

2635 ]

2636 }

2637}

2638```

2639 

2640## Debug dei hook

2641 

2642I dettagli dell'esecuzione dei hook, inclusi quali hook corrispondono, i loro codici di uscita e l'output completo di stdout e stderr, vengono scritti nel file di log di debug. Avviare Claude Code con `claude --debug-file <path>` per scrivere il log in una posizione nota, oppure eseguire `claude --debug` e leggere il log in `~/.claude/debug/<session-id>.txt`. Il flag `--debug` non stampa nel terminale.

2643 

2644```text theme={null}

2645[DEBUG] Executing hooks for PostToolUse:Write

2646[DEBUG] Found 1 hook commands to execute

2647[DEBUG] Executing hook command: <Your command> with timeout 600000ms

2648[DEBUG] Hook command completed with status 0: <Your stdout>

2649```

2650 

2651Per dettagli di corrispondenza dei hook più granulari, impostare `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` per visualizzare righe di log aggiuntive come i conteggi dei matcher del hook e la corrispondenza delle query.

2652 

2653Per la risoluzione dei problemi comuni come i hook che non si attivano, i cicli infiniti di Stop hook o gli errori di configurazione, consultare [Limitations and troubleshooting](/it/hooks-guide#limitations-and-troubleshooting) nella guida. Per una procedura diagnostica più ampia che copre `/context`, `/doctor` e la precedenza delle impostazioni, consultare [Debug your config](/it/debug-your-config).

hooks-guide.md +927 −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# Automatizzare i flussi di lavoro con hooks

6 

7> Esegui comandi shell automaticamente quando Claude Code modifica file, completa attività o ha bisogno di input. Formatta il codice, invia notifiche, convalida comandi e applica le regole del progetto.

8 

9Gli hooks sono comandi shell definiti dall'utente che si eseguono in punti specifici del ciclo di vita di Claude Code. Forniscono un controllo deterministico sul comportamento di Claude Code, garantendo che determinate azioni avvengano sempre piuttosto che affidarsi al modello linguistico per scegliere di eseguirle. Utilizzate gli hooks per applicare le regole del progetto, automatizzare attività ripetitive e integrare Claude Code con i vostri strumenti esistenti.

10 

11Per decisioni che richiedono giudizio piuttosto che regole deterministiche, potete anche utilizzare [hooks basati su prompt](#prompt-based-hooks) o [hooks basati su agenti](#agent-based-hooks) che utilizzano un modello Claude per valutare le condizioni.

12 

13Per altri modi di estendere Claude Code, consultate [skills](/it/skills) per fornire a Claude istruzioni aggiuntive e comandi eseguibili, [subagents](/it/sub-agents) per eseguire attività in contesti isolati, e [plugins](/it/plugins) per pacchettizzare estensioni da condividere tra i progetti.

14 

15<Tip>

16 Questa guida copre i casi d'uso comuni e come iniziare. Per schemi di eventi completi, formati di input/output JSON e funzionalità avanzate come hooks asincroni e hooks di strumenti MCP, consultate il [riferimento Hooks](/it/hooks).

17</Tip>

18 

19## Configurare il vostro primo hook

20 

21Per creare un hook, aggiungete un blocco `hooks` a un [file di impostazioni](#configure-hook-location). Questa procedura crea un hook di notifica desktop, in modo da ricevere un avviso ogni volta che Claude sta aspettando il vostro input invece di guardare il terminale.

22 

23<Steps>

24 <Step title="Aggiungere l'hook alle vostre impostazioni">

25 Aprite `~/.claude/settings.json` e aggiungete un hook `Notification`. L'esempio sottostante utilizza `osascript` per macOS; consultate [Ricevere una notifica quando Claude ha bisogno di input](#get-notified-when-claude-needs-input) per i comandi Linux e Windows.

26 

27 ```json theme={null}

28 {

29 "hooks": {

30 "Notification": [

31 {

32 "matcher": "",

33 "hooks": [

34 {

35 "type": "command",

36 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

37 }

38 ]

39 }

40 ]

41 }

42 }

43 ```

44 

45 Se il vostro file di impostazioni ha già una chiave `hooks`, aggiungete `Notification` come sibling delle chiavi di evento esistenti piuttosto che sostituire l'intero oggetto. Ogni nome di evento è una chiave all'interno del singolo oggetto `hooks`:

46 

47 ```json theme={null}

48 {

49 "hooks": {

50 "PostToolUse": [

51 {

52 "matcher": "Edit|Write",

53 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write" }]

54 }

55 ],

56 "Notification": [

57 {

58 "matcher": "",

59 "hooks": [{ "type": "command", "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'" }]

60 }

61 ]

62 }

63 }

64 ```

65 

66 Potete anche chiedere a Claude di scrivere l'hook per voi descrivendo quello che volete nella CLI.

67 </Step>

68 

69 <Step title="Verificare la configurazione">

70 Digitate `/hooks` per aprire il browser degli hooks. Vedrete un elenco di tutti gli eventi hook disponibili, con un conteggio accanto a ogni evento che ha hook configurati. Selezionate `Notification` per confermare che il vostro nuovo hook appare nell'elenco. Selezionando l'hook vengono mostrati i suoi dettagli: l'evento, il matcher, il tipo, il file di origine e il comando.

71 </Step>

72 

73 <Step title="Testare l'hook">

74 Premete `Esc` per tornare alla CLI. Chiedete a Claude di fare qualcosa che richieda autorizzazione, quindi passate a un'altra finestra dal terminale. Dovreste ricevere una notifica desktop.

75 </Step>

76</Steps>

77 

78<Tip>

79 Il menu `/hooks` è di sola lettura. Per aggiungere, modificare o rimuovere hooks, modificate il vostro JSON di impostazioni direttamente o chiedete a Claude di fare il cambiamento.

80</Tip>

81 

82## Cosa potete automatizzare

83 

84Gli hooks vi permettono di eseguire codice in punti chiave del ciclo di vita di Claude Code: formattare file dopo le modifiche, bloccare comandi prima che si eseguano, inviare notifiche quando Claude ha bisogno di input, iniettare contesto all'inizio della sessione, e altro ancora. Per l'elenco completo degli eventi hook, consultate il [riferimento Hooks](/it/hooks#hook-lifecycle).

85 

86Ogni esempio include un blocco di configurazione pronto all'uso che aggiungete a un [file di impostazioni](#configure-hook-location). I modelli più comuni:

87 

88* [Ricevere una notifica quando Claude ha bisogno di input](#get-notified-when-claude-needs-input)

89* [Formattare automaticamente il codice dopo le modifiche](#auto-format-code-after-edits)

90* [Bloccare le modifiche ai file protetti](#block-edits-to-protected-files)

91* [Reiniettare il contesto dopo la compattazione](#re-inject-context-after-compaction)

92* [Controllare le modifiche di configurazione](#audit-configuration-changes)

93* [Ricaricare l'ambiente quando la directory o i file cambiano](#reload-environment-when-directory-or-files-change)

94* [Approvare automaticamente specifici prompt di autorizzazione](#auto-approve-specific-permission-prompts)

95 

96### Ricevere una notifica quando Claude ha bisogno di input

97 

98Ricevete una notifica desktop ogni volta che Claude finisce di lavorare e ha bisogno del vostro input, in modo da poter passare ad altri compiti senza controllare il terminale.

99 

100Questo hook utilizza l'evento `Notification`, che si attiva quando Claude sta aspettando input o autorizzazione. Ogni scheda sottostante utilizza il comando di notifica nativo della piattaforma. Aggiungete questo a `~/.claude/settings.json`:

101 

102<Tabs>

103 <Tab title="macOS">

104 ```json theme={null}

105 {

106 "hooks": {

107 "Notification": [

108 {

109 "matcher": "",

110 "hooks": [

111 {

112 "type": "command",

113 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

114 }

115 ]

116 }

117 ]

118 }

119 }

120 ```

121 

122 <Accordion title="Se nessuna notifica appare">

123 `osascript` instrada le notifiche attraverso l'app Script Editor integrata. Se Script Editor non ha il permesso di notifica, il comando fallisce silenziosamente e macOS non vi chiederà di concederlo. Eseguite questo in Terminal una volta per far apparire Script Editor nelle vostre impostazioni di notifica:

124 

125 ```bash theme={null}

126 osascript -e 'display notification "test"'

127 ```

128 

129 Nulla apparirà ancora. Aprite **System Settings > Notifications**, trovate **Script Editor** nell'elenco e attivate **Allow Notifications**. Eseguite il comando di nuovo per confermare che la notifica di test appare.

130 </Accordion>

131 </Tab>

132 

133 <Tab title="Linux">

134 ```json theme={null}

135 {

136 "hooks": {

137 "Notification": [

138 {

139 "matcher": "",

140 "hooks": [

141 {

142 "type": "command",

143 "command": "notify-send 'Claude Code' 'Claude Code needs your attention'"

144 }

145 ]

146 }

147 ]

148 }

149 }

150 ```

151 </Tab>

152 

153 <Tab title="Windows (PowerShell)">

154 ```json theme={null}

155 {

156 "hooks": {

157 "Notification": [

158 {

159 "matcher": "",

160 "hooks": [

161 {

162 "type": "command",

163 "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""

164 }

165 ]

166 }

167 ]

168 }

169 }

170 ```

171 </Tab>

172</Tabs>

173 

174Il matcher vuoto si attiva su tutti i tipi di notifica. Per attivarsi solo su eventi specifici, impostatelo a uno di questi valori:

175 

176| Matcher | Si attiva quando |

177| :--------------------- | :---------------------------------------------------------- |

178| `permission_prompt` | Claude ha bisogno che approviate un uso dello strumento |

179| `idle_prompt` | Claude ha finito e sta aspettando il vostro prossimo prompt |

180| `auth_success` | L'autenticazione si completa |

181| `elicitation_dialog` | Un server MCP apre un modulo di elicitazione |

182| `elicitation_complete` | Un modulo di elicitazione MCP viene inviato o chiuso |

183| `elicitation_response` | Una risposta di elicitazione MCP viene inviata al server |

184 

185Digitate `/hooks` e selezionate `Notification` per confermare che l'hook è registrato. Per lo schema completo dell'evento, consultate il [riferimento Notification](/it/hooks#notification).

186 

187### Formattare automaticamente il codice dopo le modifiche

188 

189Eseguite automaticamente [Prettier](https://prettier.io/) su ogni file che Claude modifica, in modo che la formattazione rimanga coerente senza intervento manuale.

190 

191Questo hook utilizza l'evento `PostToolUse` con un matcher `Edit|Write`, quindi si esegue solo dopo gli strumenti di modifica dei file. Il comando estrae il percorso del file modificato con [`jq`](https://jqlang.github.io/jq/) e lo passa a Prettier. Aggiungete questo a `.claude/settings.json` nella radice del vostro progetto:

192 

193```json theme={null}

194{

195 "hooks": {

196 "PostToolUse": [

197 {

198 "matcher": "Edit|Write",

199 "hooks": [

200 {

201 "type": "command",

202 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

203 }

204 ]

205 }

206 ]

207 }

208}

209```

210 

211<Note>

212 Gli esempi Bash in questa pagina utilizzano `jq` per l'analisi JSON. Installatelo con `brew install jq` (macOS), `apt-get install jq` (Debian/Ubuntu), o consultate i [download di `jq`](https://jqlang.github.io/jq/download/).

213</Note>

214 

215### Bloccare le modifiche ai file protetti

216 

217Impedite a Claude di modificare file sensibili come `.env`, `package-lock.json`, o qualsiasi cosa in `.git/`. Claude riceve un feedback che spiega perché la modifica è stata bloccata, in modo da poter adattare il suo approccio.

218 

219Questo esempio utilizza un file di script separato che l'hook chiama. Lo script controlla il percorso del file di destinazione rispetto a un elenco di modelli protetti ed esce con il codice 2 per bloccare la modifica.

220 

221<Steps>

222 <Step title="Creare lo script dell'hook">

223 Salvate questo in `.claude/hooks/protect-files.sh`:

224 

225 ```bash theme={null}

226 #!/bin/bash

227 # protect-files.sh

228 

229 INPUT=$(cat)

230 FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

231 

232 PROTECTED_PATTERNS=(".env" "package-lock.json" ".git/")

233 

234 for pattern in "${PROTECTED_PATTERNS[@]}"; do

235 if [[ "$FILE_PATH" == *"$pattern"* ]]; then

236 echo "Blocked: $FILE_PATH matches protected pattern '$pattern'" >&2

237 exit 2

238 fi

239 done

240 

241 exit 0

242 ```

243 </Step>

244 

245 <Step title="Rendere lo script eseguibile (macOS/Linux)">

246 Gli script degli hook devono essere eseguibili affinché Claude Code li esegua:

247 

248 ```bash theme={null}

249 chmod +x .claude/hooks/protect-files.sh

250 ```

251 </Step>

252 

253 <Step title="Registrare l'hook">

254 Aggiungete un hook `PreToolUse` a `.claude/settings.json` che esegue lo script prima di qualsiasi chiamata dello strumento `Edit` o `Write`:

255 

256 ```json theme={null}

257 {

258 "hooks": {

259 "PreToolUse": [

260 {

261 "matcher": "Edit|Write",

262 "hooks": [

263 {

264 "type": "command",

265 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-files.sh"

266 }

267 ]

268 }

269 ]

270 }

271 }

272 ```

273 </Step>

274</Steps>

275 

276### Reiniettare il contesto dopo la compattazione

277 

278Quando la finestra di contesto di Claude si riempie, la compattazione riassume la conversazione per liberare spazio. Questo può perdere dettagli importanti. Utilizzate un hook `SessionStart` con un matcher `compact` per reiniettare il contesto critico dopo ogni compattazione.

279 

280Qualsiasi testo che il vostro comando scrive su stdout viene aggiunto al contesto di Claude. Questo esempio ricorda a Claude le convenzioni del progetto e il lavoro recente. Aggiungete questo a `.claude/settings.json` nella radice del vostro progetto:

281 

282```json theme={null}

283{

284 "hooks": {

285 "SessionStart": [

286 {

287 "matcher": "compact",

288 "hooks": [

289 {

290 "type": "command",

291 "command": "echo 'Reminder: use Bun, not npm. Run bun test before committing. Current sprint: auth refactor.'"

292 }

293 ]

294 }

295 ]

296 }

297}

298```

299 

300Potete sostituire l'`echo` con qualsiasi comando che produce output dinamico, come `git log --oneline -5` per mostrare i commit recenti. Per iniettare contesto all'inizio di ogni sessione, considerate di utilizzare [CLAUDE.md](/it/memory) invece. Per le variabili di ambiente, consultate [`CLAUDE_ENV_FILE`](/it/hooks#persist-environment-variables) nel riferimento.

301 

302### Controllare le modifiche di configurazione

303 

304Tracciate quando i file di impostazioni o skills cambiano durante una sessione. L'evento `ConfigChange` si attiva quando un processo esterno o un editor modifica un file di configurazione, in modo da poter registrare le modifiche per la conformità o bloccare le modifiche non autorizzate.

305 

306Questo esempio aggiunge ogni modifica a un registro di controllo. Aggiungete questo a `~/.claude/settings.json`:

307 

308```json theme={null}

309{

310 "hooks": {

311 "ConfigChange": [

312 {

313 "matcher": "",

314 "hooks": [

315 {

316 "type": "command",

317 "command": "jq -c '{timestamp: now | todate, source: .source, file: .file_path}' >> ~/claude-config-audit.log"

318 }

319 ]

320 }

321 ]

322 }

323}

324```

325 

326Il matcher filtra per tipo di configurazione: `user_settings`, `project_settings`, `local_settings`, `policy_settings`, o `skills`. Per bloccare una modifica dall'avere effetto, uscite con il codice 2 o restituite `{"decision": "block"}`. Consultate il [riferimento ConfigChange](/it/hooks#configchange) per lo schema di input completo.

327 

328### Ricaricare l'ambiente quando la directory o i file cambiano

329 

330Alcuni progetti impostano variabili di ambiente diverse a seconda di quale directory siete. Strumenti come [direnv](https://direnv.net/) lo fanno automaticamente nella vostra shell, ma lo strumento Bash di Claude non raccoglie quei cambiamenti da solo.

331 

332L'accoppiamento di un hook `SessionStart` con un hook `CwdChanged` risolve questo. `SessionStart` carica le variabili per la directory in cui avviate, e `CwdChanged` le ricarica ogni volta che Claude cambia directory. Entrambi scrivono su `CLAUDE_ENV_FILE`, che Claude Code esegue come preambolo di script prima di ogni comando Bash. Aggiungete questo a `~/.claude/settings.json`:

333 

334```json theme={null}

335{

336 "hooks": {

337 "SessionStart": [

338 {

339 "hooks": [

340 {

341 "type": "command",

342 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

343 }

344 ]

345 }

346 ],

347 "CwdChanged": [

348 {

349 "hooks": [

350 {

351 "type": "command",

352 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

353 }

354 ]

355 }

356 ]

357 }

358}

359```

360 

361Eseguite `direnv allow` una volta in ogni directory che ha un `.envrc` in modo che direnv sia autorizzato a caricarlo. Se utilizzate devbox o nix invece di direnv, lo stesso modello funziona con `devbox shellenv` o `devbox global shellenv` al posto di `direnv export bash`.

362 

363Per reagire a file specifici invece di ogni cambio di directory, utilizzate `FileChanged` con un `matcher` che elenca i nomi dei file da guardare, separati da `|`. Per costruire l'elenco di osservazione, questo valore viene diviso in nomi di file letterali piuttosto che valutato come regex. Consultate [FileChanged](/it/hooks#filechanged) per come lo stesso valore filtra anche quali gruppi di hook si eseguono quando un file cambia. Questo esempio guarda `.envrc` e `.env` nella directory di lavoro:

364 

365```json theme={null}

366{

367 "hooks": {

368 "FileChanged": [

369 {

370 "matcher": ".envrc|.env",

371 "hooks": [

372 {

373 "type": "command",

374 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

375 }

376 ]

377 }

378 ]

379 }

380}

381```

382 

383Consultate le voci di riferimento [CwdChanged](/it/hooks#cwdchanged) e [FileChanged](/it/hooks#filechanged) per gli schemi di input, l'output `watchPaths`, e i dettagli di `CLAUDE_ENV_FILE`.

384 

385### Approvare automaticamente specifici prompt di autorizzazione

386 

387Saltate la finestra di dialogo di approvazione per le chiamate di strumenti che consentite sempre. Questo esempio approva automaticamente `ExitPlanMode`, lo strumento che Claude chiama quando finisce di presentare un piano e chiede di procedere, in modo da non essere richiesto ogni volta che un piano è pronto.

388 

389A differenza degli esempi di codice di uscita sopra, l'approvazione automatica richiede che il vostro hook scriva una decisione JSON su stdout. Un hook `PermissionRequest` si attiva quando Claude Code sta per mostrare una finestra di dialogo di autorizzazione, e restituire `"behavior": "allow"` la risponde per vostro conto.

390 

391Il matcher limita l'hook a `ExitPlanMode` solo, in modo che nessun altro prompt sia interessato. Aggiungete questo a `~/.claude/settings.json`:

392 

393```json theme={null}

394{

395 "hooks": {

396 "PermissionRequest": [

397 {

398 "matcher": "ExitPlanMode",

399 "hooks": [

400 {

401 "type": "command",

402 "command": "echo '{\"hookSpecificOutput\": {\"hookEventName\": \"PermissionRequest\", \"decision\": {\"behavior\": \"allow\"}}}'"

403 }

404 ]

405 }

406 ]

407 }

408}

409```

410 

411Quando l'hook approva, Claude Code esce dalla modalità piano e ripristina qualsiasi modalità di autorizzazione fosse attiva prima di entrare in modalità piano. La trascrizione mostra "Allowed by PermissionRequest hook" dove la finestra di dialogo sarebbe apparsa. Il percorso dell'hook mantiene sempre la conversazione corrente: non può cancellare il contesto e avviare una sessione di implementazione fresca come la finestra di dialogo può.

412 

413Per impostare una modalità di autorizzazione specifica invece, l'output del vostro hook può includere un array `updatedPermissions` con una voce `setMode`. Il valore `mode` è qualsiasi modalità di autorizzazione come `default`, `acceptEdits`, o `bypassPermissions`, e `destination: "session"` la applica solo per la sessione corrente.

414 

415<Note>

416 `bypassPermissions` si applica solo se la sessione è stata avviata con modalità bypass già disponibile: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, o `permissions.defaultMode: "bypassPermissions"` nelle impostazioni, e non disabilitato da [`permissions.disableBypassPermissionsMode`](/it/permissions#managed-settings). Non viene mai persistito come `defaultMode`.

417</Note>

418 

419Per passare la sessione a `acceptEdits`, il vostro hook scrive questo JSON su stdout:

420 

421```json theme={null}

422{

423 "hookSpecificOutput": {

424 "hookEventName": "PermissionRequest",

425 "decision": {

426 "behavior": "allow",

427 "updatedPermissions": [

428 { "type": "setMode", "mode": "acceptEdits", "destination": "session" }

429 ]

430 }

431 }

432}

433```

434 

435Mantenete il matcher il più ristretto possibile. Corrispondere a `.*` o lasciare il matcher vuoto approverebbe automaticamente ogni prompt di autorizzazione, incluse le scritture di file e i comandi shell. Consultate il [riferimento PermissionRequest](/it/hooks#permissionrequest-decision-control) per l'insieme completo di campi di decisione.

436 

437## Come funzionano gli hooks

438 

439Gli eventi hook si attivano in punti specifici del ciclo di vita di Claude Code. Quando un evento si attiva, tutti gli hooks corrispondenti si eseguono in parallelo, e i comandi hook identici vengono automaticamente deduplicati. La tabella sottostante mostra ogni evento e quando si attiva:

440 

441| Event | When it fires |

442| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

443| `SessionStart` | When a session begins or resumes |

444| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

445| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

446| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

447| `PreToolUse` | Before a tool call executes. Can block it |

448| `PermissionRequest` | When a permission dialog appears |

449| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

450| `PostToolUse` | After a tool call succeeds |

451| `PostToolUseFailure` | After a tool call fails |

452| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

453| `Notification` | When Claude Code sends a notification |

454| `SubagentStart` | When a subagent is spawned |

455| `SubagentStop` | When a subagent finishes |

456| `TaskCreated` | When a task is being created via `TaskCreate` |

457| `TaskCompleted` | When a task is being marked as completed |

458| `Stop` | When Claude finishes responding |

459| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

460| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

461| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

462| `ConfigChange` | When a configuration file changes during a session |

463| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

464| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

465| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

466| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

467| `PreCompact` | Before context compaction |

468| `PostCompact` | After context compaction completes |

469| `Elicitation` | When an MCP server requests user input during a tool call |

470| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

471| `SessionEnd` | When a session terminates |

472 

473Quando più hooks corrispondono, ognuno restituisce il suo risultato. Per le decisioni, Claude Code sceglie la risposta più restrittiva. Un hook `PreToolUse` che restituisce `deny` annulla la chiamata dello strumento indipendentemente da quello che gli altri restituiscono. Un hook che restituisce `ask` forza il prompt di autorizzazione anche se il resto restituisce `allow`. Il testo da `additionalContext` viene mantenuto da ogni hook e passato a Claude insieme.

474 

475Ogni hook ha un `type` che determina come si esegue. La maggior parte degli hooks utilizza `"type": "command"`, che esegue un comando shell. Sono disponibili altri quattro tipi:

476 

477* `"type": "http"`: POST dei dati dell'evento a un URL. Consultate [HTTP hooks](#http-hooks).

478* `"type": "mcp_tool"`: chiama uno strumento su un server MCP già connesso. Consultate [MCP tool hooks](/it/hooks#mcp-tool-hook-fields).

479* `"type": "prompt"`: valutazione LLM a turno singolo. Consultate [Prompt-based hooks](#prompt-based-hooks).

480* `"type": "agent"`: verifica multi-turno con accesso agli strumenti. Gli agent hooks sono sperimentali e potrebbero cambiare. Consultate [Agent-based hooks](#agent-based-hooks).

481 

482### Leggere l'input e restituire l'output

483 

484Gli hooks comunicano con Claude Code attraverso stdin, stdout, stderr e codici di uscita. Quando un evento si attiva, Claude Code passa i dati specifici dell'evento come JSON allo stdin del vostro script. Il vostro script legge quei dati, fa il suo lavoro, e dice a Claude Code cosa fare dopo tramite il codice di uscita.

485 

486#### Input dell'hook

487 

488Ogni evento include campi comuni come `session_id` e `cwd`, ma ogni tipo di evento aggiunge dati diversi. Ad esempio, quando Claude esegue un comando Bash, un hook `PreToolUse` riceve qualcosa di simile su stdin:

489 

490```json theme={null}

491{

492 "session_id": "abc123", // unique ID for this session

493 "cwd": "/Users/sarah/myproject", // working directory when the event fired

494 "hook_event_name": "PreToolUse", // which event triggered this hook

495 "tool_name": "Bash", // the tool Claude is about to use

496 "tool_input": { // the arguments Claude passed to the tool

497 "command": "npm test" // for Bash, this is the shell command

498 }

499}

500```

501 

502Il vostro script può analizzare quel JSON e agire su qualsiasi di quei campi. Gli hooks `UserPromptSubmit` ricevono il testo `prompt` invece, gli hook `SessionStart` ricevono la `source` (startup, resume, clear, compact), e così via. Consultate [Campi di input comuni](/it/hooks#common-input-fields) nel riferimento per i campi condivisi, e la sezione di ogni evento per gli schemi specifici dell'evento.

503 

504#### Output dell'hook

505 

506Il vostro script dice a Claude Code cosa fare dopo scrivendo su stdout o stderr e uscendo con un codice specifico. Ad esempio, un hook `PreToolUse` che vuole bloccare un comando:

507 

508```bash theme={null}

509#!/bin/bash

510INPUT=$(cat)

511COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command')

512 

513if echo "$COMMAND" | grep -q "drop table"; then

514 echo "Blocked: dropping tables is not allowed" >&2 # stderr becomes Claude's feedback

515 exit 2 # exit 2 = block the action

516fi

517 

518exit 0 # exit 0 = let it proceed

519```

520 

521Il codice di uscita determina cosa succede dopo:

522 

523* **Exit 0**: l'azione procede. Per gli hook `UserPromptSubmit`, `UserPromptExpansion` e `SessionStart`, qualsiasi cosa scriviate su stdout viene aggiunta al contesto di Claude.

524* **Exit 2**: l'azione è bloccata. Scrivete un motivo su stderr, e Claude lo riceve come feedback in modo da poter adattarsi. Alcuni eventi non possono essere bloccati: per `SessionStart`, `Setup`, `Notification` e altri, exit 2 mostra stderr all'utente e l'esecuzione continua. Consultate [exit code 2 behavior per evento](/it/hooks#exit-code-2-behavior-per-event) per l'elenco completo.

525* **Qualsiasi altro codice di uscita**: l'azione procede. La trascrizione mostra un avviso `<hook name> hook error` seguito dalla prima riga di stderr; lo stderr completo va al [debug log](/it/hooks#debug-hooks).

526 

527#### Output JSON strutturato

528 

529I codici di uscita vi danno due opzioni: consentire o bloccare. Per un controllo maggiore, uscite con 0 e stampate un oggetto JSON su stdout invece.

530 

531<Note>

532 Utilizzate exit 2 per bloccare con un messaggio stderr, o exit 0 con JSON per un controllo strutturato. Non mescolateli: Claude Code ignora JSON quando uscite con 2.

533</Note>

534 

535Ad esempio, un hook `PreToolUse` può negare una chiamata di strumento e dire a Claude perché, o escalarlo all'utente per l'approvazione:

536 

537```json theme={null}

538{

539 "hookSpecificOutput": {

540 "hookEventName": "PreToolUse",

541 "permissionDecision": "deny",

542 "permissionDecisionReason": "Use rg instead of grep for better performance"

543 }

544}

545```

546 

547Con `"deny"`, Claude Code annulla la chiamata dello strumento e alimenta `permissionDecisionReason` di nuovo a Claude. Questi valori `permissionDecision` sono specifici per `PreToolUse`:

548 

549* `"allow"`: salta il prompt di autorizzazione interattivo. Le regole di negazione e richiesta, incluse le liste di negazione gestite dall'azienda, si applicano ancora

550* `"deny"`: annulla la chiamata dello strumento e invia il motivo a Claude

551* `"ask"`: mostra il prompt di autorizzazione all'utente come al solito

552 

553Un quarto valore, `"defer"`, è disponibile in [modalità non interattiva](/it/headless) con il flag `-p`. Esce dal processo con la chiamata dello strumento preservata in modo che un wrapper SDK Agent possa raccogliere input e riprendere. Consultate [Rinviare una chiamata di strumento per dopo](/it/hooks#defer-a-tool-call-for-later) nel riferimento.

554 

555Restituire `"allow"` salta il prompt interattivo ma non sostituisce le [regole di autorizzazione](/it/permissions#manage-permissions). Se una regola di negazione corrisponde alla chiamata dello strumento, la chiamata viene bloccata anche quando il vostro hook restituisce `"allow"`. Se una regola di richiesta corrisponde, l'utente viene comunque richiesto. Questo significa che le regole di negazione da qualsiasi ambito di impostazioni, incluse le [impostazioni gestite](/it/settings#settings-files), hanno sempre la precedenza sulle approvazioni degli hook.

556 

557Altri eventi utilizzano modelli di decisione diversi. Ad esempio, gli hook `PostToolUse` e `Stop` utilizzano un campo `decision: "block"` di livello superiore, mentre `PermissionRequest` utilizza `hookSpecificOutput.decision.behavior`. Consultate la [tabella di riepilogo](/it/hooks#decision-control) nel riferimento per una suddivisione completa per evento.

558 

559Per gli hook `UserPromptSubmit`, utilizzate `additionalContext` invece per iniettare testo nel contesto di Claude. Gli hooks basati su prompt (`type: "prompt"`) gestiscono l'output diversamente: consultate [Prompt-based hooks](#prompt-based-hooks).

560 

561### Filtrare gli hooks con i matcher

562 

563Senza un matcher, un hook si attiva su ogni occorrenza del suo evento. I matcher vi permettono di restringerlo. Ad esempio, se volete eseguire un formattatore solo dopo le modifiche ai file (non dopo ogni chiamata di strumento), aggiungete un matcher al vostro hook `PostToolUse`:

564 

565```json theme={null}

566{

567 "hooks": {

568 "PostToolUse": [

569 {

570 "matcher": "Edit|Write",

571 "hooks": [

572 { "type": "command", "command": "prettier --write ..." }

573 ]

574 }

575 ]

576 }

577}

578```

579 

580Il matcher `"Edit|Write"` si attiva solo quando Claude utilizza lo strumento `Edit` o `Write`, non quando utilizza `Bash`, `Read`, o qualsiasi altro strumento. Consultate [Matcher patterns](/it/hooks#matcher-patterns) per come i nomi semplici e le espressioni regolari vengono valutati.

581 

582<Note>

583 Claude può anche creare o modificare file eseguendo comandi shell attraverso lo strumento `Bash`. Se il vostro hook deve vedere ogni modifica ai file, come per la scansione di conformità o il logging di audit, aggiungete un hook [`Stop`](/it/hooks#stop) che scansiona l'albero di lavoro una volta per turno. Per una copertura per-chiamata invece, corrispondere anche a `Bash` e avere il vostro script elencare i file modificati e non tracciati con `git status --porcelain`.

584</Note>

585 

586Ogni tipo di evento corrisponde a un campo specifico:

587 

588| Evento | Cosa filtra il matcher | Valori matcher di esempio |

589| :-------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |

590| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | nome dello strumento | `Bash`, `Edit\|Write`, `mcp__.*` |

591| `SessionStart` | come è iniziata la sessione | `startup`, `resume`, `clear`, `compact` |

592| `Setup` | quale flag CLI ha attivato il setup | `init`, `maintenance` |

593| `SessionEnd` | perché è terminata la sessione | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

594| `Notification` | tipo di notifica | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

595| `SubagentStart` | tipo di agente | `general-purpose`, `Explore`, `Plan`, o nomi di agenti personalizzati |

596| `PreCompact`, `PostCompact` | cosa ha attivato la compattazione | `manual`, `auto` |

597| `SubagentStop` | tipo di agente | stessi valori di `SubagentStart` |

598| `ConfigChange` | fonte di configurazione | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

599| `StopFailure` | tipo di errore | `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens`, `unknown` |

600| `InstructionsLoaded` | motivo del caricamento | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

601| `Elicitation` | nome del server MCP | i vostri nomi di server MCP configurati |

602| `ElicitationResult` | nome del server MCP | stessi valori di `Elicitation` |

603| `FileChanged` | nomi di file letterali da guardare (consultate [FileChanged](/it/hooks#filechanged)) | `.envrc\|.env` |

604| `UserPromptExpansion` | nome del comando | i vostri nomi di skill o comando |

605| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `CwdChanged` | nessun supporto matcher | si attiva sempre su ogni occorrenza |

606 

607Alcuni altri esempi che mostrano i matcher su diversi tipi di evento:

608 

609<Tabs>

610 <Tab title="Registrare ogni comando Bash">

611 Corrispondere solo alle chiamate dello strumento `Bash` e registrare ogni comando in un file. L'evento `PostToolUse` si attiva dopo che il comando è completato, quindi `tool_input.command` contiene quello che è stato eseguito. L'hook riceve i dati dell'evento come JSON su stdin, e `jq -r '.tool_input.command'` estrae solo la stringa del comando, che `>>` aggiunge al file di log:

612 

613 ```json theme={null}

614 {

615 "hooks": {

616 "PostToolUse": [

617 {

618 "matcher": "Bash",

619 "hooks": [

620 {

621 "type": "command",

622 "command": "jq -r '.tool_input.command' >> ~/.claude/command-log.txt"

623 }

624 ]

625 }

626 ]

627 }

628 }

629 ```

630 </Tab>

631 

632 <Tab title="Corrispondere agli strumenti MCP">

633 Gli strumenti MCP utilizzano una convenzione di denominazione diversa rispetto agli strumenti integrati: `mcp__<server>__<tool>`, dove `<server>` è il nome del server MCP e `<tool>` è lo strumento che fornisce. Ad esempio, `mcp__github__search_repositories` o `mcp__filesystem__read_file`. Utilizzate un matcher regex per indirizzare tutti gli strumenti da un server specifico, o corrispondere tra i server con un modello come `mcp__.*__write.*`. Consultate [Match MCP tools](/it/hooks#match-mcp-tools) nel riferimento per l'elenco completo degli esempi.

634 

635 Il comando sottostante estrae il nome dello strumento dall'input JSON dell'hook con `jq` e lo scrive su stderr. Scrivere su stderr mantiene stdout pulito per l'output JSON e invia il messaggio al [debug log](/it/hooks#debug-hooks):

636 

637 ```json theme={null}

638 {

639 "hooks": {

640 "PreToolUse": [

641 {

642 "matcher": "mcp__github__.*",

643 "hooks": [

644 {

645 "type": "command",

646 "command": "echo \"GitHub tool called: $(jq -r '.tool_name')\" >&2"

647 }

648 ]

649 }

650 ]

651 }

652 }

653 ```

654 </Tab>

655 

656 <Tab title="Pulire alla fine della sessione">

657 L'evento `SessionEnd` supporta i matcher sul motivo per cui la sessione è terminata. Questo hook si attiva solo su `clear` (quando eseguite `/clear`), non su uscite normali:

658 

659 ```json theme={null}

660 {

661 "hooks": {

662 "SessionEnd": [

663 {

664 "matcher": "clear",

665 "hooks": [

666 {

667 "type": "command",

668 "command": "rm -f /tmp/claude-scratch-*.txt"

669 }

670 ]

671 }

672 ]

673 }

674 }

675 ```

676 </Tab>

677</Tabs>

678 

679Per la sintassi completa del matcher, consultate il [Hooks reference](/it/hooks#configuration).

680 

681#### Filtrare per nome dello strumento e argomenti con il campo `if`

682 

683<Note>

684 Il campo `if` richiede Claude Code v2.1.85 o successivo. Le versioni precedenti lo ignorano e eseguono l'hook su ogni chiamata corrispondente.

685</Note>

686 

687Il campo `if` utilizza la [permission rule syntax](/it/permissions) per filtrare gli hooks per nome dello strumento e argomenti insieme, in modo che il processo dell'hook si generi solo quando la chiamata dello strumento corrisponde, o quando un comando Bash è troppo complesso per essere analizzato. Questo va oltre il `matcher`, che filtra a livello di gruppo per nome dello strumento solo.

688 

689Ad esempio, per eseguire un hook solo quando Claude utilizza comandi `git` piuttosto che tutti i comandi Bash:

690 

691```json theme={null}

692{

693 "hooks": {

694 "PreToolUse": [

695 {

696 "matcher": "Bash",

697 "hooks": [

698 {

699 "type": "command",

700 "if": "Bash(git *)",

701 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-git-policy.sh"

702 }

703 ]

704 }

705 ]

706 }

707}

708```

709 

710Il processo dell'hook si genera solo quando un sottocomando del comando Bash corrisponde a `git *`, o quando il comando è troppo complesso per essere analizzato in sottocomandi. Per comandi composti come `npm test && git push`, Claude Code valuta ogni sottocomando e attiva l'hook perché `git push` corrisponde. Il campo `if` accetta gli stessi modelli delle regole di autorizzazione: `"Bash(git *)"`, `"Edit(*.ts)"`, e così via. Per corrispondere a più nomi di strumenti, utilizzate handler separati ognuno con il suo valore `if`, o corrispondere a livello di `matcher` dove l'alternazione con pipe è supportata.

711 

712`if` funziona solo su eventi di strumenti: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` e `PermissionDenied`. Aggiungerlo a qualsiasi altro evento impedisce all'hook di eseguirsi.

713 

714### Configurare la posizione dell'hook

715 

716Dove aggiungete un hook determina il suo ambito:

717 

718| Posizione | Ambito | Condivisibile |

719| :--------------------------------------------------------- | :---------------------------------- | :----------------------------------- |

720| `~/.claude/settings.json` | Tutti i vostri progetti | No, locale alla vostra macchina |

721| `.claude/settings.json` | Singolo progetto | Sì, può essere committato nel repo |

722| `.claude/settings.local.json` | Singolo progetto | No, gitignored |

723| Impostazioni di policy gestite | Organizzazione intera | Sì, controllato dall'amministratore |

724| [Plugin](/it/plugins) `hooks/hooks.json` | Quando il plugin è abilitato | Sì, raggruppato con il plugin |

725| [Skill](/it/skills) o [agente](/it/sub-agents) frontmatter | Mentre la skill o l'agente è attivo | Sì, definito nel file del componente |

726 

727Eseguite [`/hooks`](/it/hooks#the-hooks-menu) in Claude Code per sfogliare tutti gli hooks configurati raggruppati per evento. Per disabilitare tutti gli hooks contemporaneamente, impostate `"disableAllHooks": true` nel vostro file di impostazioni.

728 

729Se modificate i file di impostazioni direttamente mentre Claude Code è in esecuzione, il file watcher normalmente raccoglie i cambiamenti degli hook automaticamente.

730 

731## Hooks basati su prompt

732 

733Per decisioni che richiedono giudizio piuttosto che regole deterministiche, utilizzate gli hook `type: "prompt"`. Invece di eseguire un comando shell, Claude Code invia il vostro prompt e i dati di input dell'hook a un modello Claude (Haiku per impostazione predefinita) per prendere la decisione. Potete specificare un modello diverso con il campo `model` se avete bisogno di più capacità.

734 

735L'unico lavoro del modello è restituire una decisione sì/no come JSON:

736 

737* `"ok": true`: l'azione procede

738* `"ok": false`: ciò che accade dipende dall'evento:

739 * `Stop` e `SubagentStop`: il `reason` viene alimentato di nuovo a Claude in modo che continui a lavorare

740 * `PreToolUse`: la chiamata dello strumento viene negata e il `reason` viene restituito a Claude come errore dello strumento, in modo che possa adattarsi e continuare

741 * `PostToolUse`, `PostToolBatch`, `UserPromptSubmit` e `UserPromptExpansion`: il turno termina e il `reason` appare nella chat come una riga di avviso

742 

743Questo esempio utilizza un hook `Stop` per chiedere al modello se tutti i compiti richiesti sono completi. Se il modello restituisce `"ok": false`, Claude continua a lavorare e utilizza il `reason` come sua prossima istruzione:

744 

745```json theme={null}

746{

747 "hooks": {

748 "Stop": [

749 {

750 "hooks": [

751 {

752 "type": "prompt",

753 "prompt": "Check if all tasks are complete. If not, respond with {\"ok\": false, \"reason\": \"what remains to be done\"}."

754 }

755 ]

756 }

757 ]

758 }

759}

760```

761 

762Per le opzioni di configurazione complete, consultate [Hooks basati su prompt](/it/hooks#prompt-based-hooks) nel riferimento.

763 

764## Hooks basati su agenti

765 

766<Warning>

767 Gli agent hooks sono sperimentali. Il comportamento e la configurazione potrebbero cambiare nelle versioni future. Per i flussi di lavoro di produzione, preferite gli [hooks di comando](/it/hooks#command-hook-fields).

768</Warning>

769 

770Quando la verifica richiede l'ispezione di file o l'esecuzione di comandi, utilizzate gli hook `type: "agent"`. A differenza degli hook di prompt che effettuano una singola chiamata LLM, gli hook di agenti generano un subagent che può leggere file, cercare codice e utilizzare altri strumenti per verificare le condizioni prima di restituire una decisione.

771 

772Gli hook di agenti utilizzano lo stesso formato di risposta `"ok"` / `"reason"` degli hook di prompt, ma con un timeout predefinito più lungo di 60 secondi e fino a 50 turni di utilizzo dello strumento.

773 

774Questo esempio verifica che i test passino prima di consentire a Claude di fermarsi:

775 

776```json theme={null}

777{

778 "hooks": {

779 "Stop": [

780 {

781 "hooks": [

782 {

783 "type": "agent",

784 "prompt": "Verify that all unit tests pass. Run the test suite and check the results. $ARGUMENTS",

785 "timeout": 120

786 }

787 ]

788 }

789 ]

790 }

791}

792```

793 

794Utilizzate gli hook di prompt quando i dati di input dell'hook da soli sono sufficienti per prendere una decisione. Utilizzate gli hook di agenti quando avete bisogno di verificare qualcosa rispetto allo stato effettivo della base di codice.

795 

796Per le opzioni di configurazione complete, consultate [Hooks basati su agenti](/it/hooks#agent-based-hooks) nel riferimento.

797 

798## HTTP hooks

799 

800Utilizzate gli hook `type: "http"` per POST dei dati dell'evento a un endpoint HTTP invece di eseguire un comando shell. L'endpoint riceve lo stesso JSON che un hook di comando riceverebbe su stdin, e restituisce i risultati attraverso il corpo della risposta HTTP utilizzando lo stesso formato JSON.

801 

802Gli HTTP hooks sono utili quando volete che un server web, una funzione cloud o un servizio esterno gestisca la logica dell'hook: ad esempio, un servizio di controllo condiviso che registra gli eventi di utilizzo dello strumento in un team.

803 

804Questo esempio pubblica ogni utilizzo dello strumento a un servizio di registrazione locale:

805 

806```json theme={null}

807{

808 "hooks": {

809 "PostToolUse": [

810 {

811 "hooks": [

812 {

813 "type": "http",

814 "url": "http://localhost:8080/hooks/tool-use",

815 "headers": {

816 "Authorization": "Bearer $MY_TOKEN"

817 },

818 "allowedEnvVars": ["MY_TOKEN"]

819 }

820 ]

821 }

822 ]

823 }

824}

825```

826 

827L'endpoint dovrebbe restituire un corpo di risposta JSON utilizzando lo stesso [formato di output](/it/hooks#json-output) degli hook di comando. Per bloccare una chiamata di strumento, restituite una risposta 2xx con i campi `hookSpecificOutput` appropriati. I codici di stato HTTP da soli non possono bloccare le azioni.

828 

829I valori dell'intestazione supportano l'interpolazione delle variabili di ambiente utilizzando la sintassi `$VAR_NAME` o `${VAR_NAME}`. Solo le variabili elencate nell'array `allowedEnvVars` vengono risolte; tutti gli altri riferimenti `$VAR` rimangono vuoti.

830 

831Per le opzioni di configurazione complete e la gestione delle risposte, consultate [HTTP hooks](/it/hooks#http-hook-fields) nel riferimento.

832 

833## Limitazioni e risoluzione dei problemi

834 

835### Limitazioni

836 

837* Gli hook di comando comunicano solo attraverso stdout, stderr e codici di uscita. Non possono attivare comandi `/` o chiamate di strumenti. Il testo restituito tramite `additionalContext` viene iniettato come un promemoria di sistema che Claude legge come testo semplice. Gli HTTP hooks comunicano attraverso il corpo della risposta invece.

838* Il timeout dell'hook è di 10 minuti per impostazione predefinita, configurabile per hook con il campo `timeout` (in secondi).

839* Gli hook `PostToolUse` non possono annullare le azioni poiché lo strumento è già stato eseguito.

840* Gli hook `PermissionRequest` non si attivano in [modalità non interattiva](/it/headless) (`-p`). Utilizzate gli hook `PreToolUse` per le decisioni di autorizzazione automatizzate.

841* Gli hook `Stop` si attivano ogni volta che Claude finisce di rispondere, non solo al completamento dell'attività. Non si attivano su interruzioni dell'utente. Gli errori API attivano [StopFailure](/it/hooks#stopfailure) invece.

842* Quando più hook PreToolUse restituiscono [`updatedInput`](/it/hooks#pretooluse) per riscrivere gli argomenti di uno strumento, l'ultimo a terminare vince. Poiché gli hook si eseguono in parallelo, l'ordine è non deterministico. Evitate di avere più di un hook che modifica l'input dello stesso strumento.

843 

844### Hooks e modalità di autorizzazione

845 

846Gli hook PreToolUse si attivano prima di qualsiasi controllo della modalità di autorizzazione. 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.

847 

848Il contrario non è vero: un hook che restituisce `"allow"` non aggira le regole di negazione dalle impostazioni. Gli hooks possono stringere le restrizioni ma non allentarle oltre quello che le regole di autorizzazione consentono.

849 

850### Hook non si attiva

851 

852L'hook è configurato ma non si esegue mai.

853 

854* Eseguite `/hooks` e confermate che l'hook appare sotto l'evento corretto

855* Controllate che il modello del matcher corrisponda esattamente al nome dello strumento (i matcher sono sensibili alle maiuscole)

856* Verificate che state attivando il tipo di evento corretto (ad esempio, `PreToolUse` si attiva prima dell'esecuzione dello strumento, `PostToolUse` si attiva dopo)

857* Se utilizzate gli hook `PermissionRequest` in modalità non interattiva (`-p`), passate a `PreToolUse` invece

858 

859### Errore dell'hook nell'output

860 

861Vedete un messaggio come "PreToolUse hook error: ..." nella trascrizione.

862 

863* Il vostro script è uscito con un codice diverso da zero inaspettatamente. Testatelo manualmente inviando JSON di esempio:

864 ```bash theme={null}

865 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh

866 echo $? # Check the exit code

867 ```

868* Se vedete "command not found", utilizzate percorsi assoluti o `$CLAUDE_PROJECT_DIR` per fare riferimento agli script

869* Se vedete "jq: command not found", installate `jq` o utilizzate Python/Node.js per l'analisi JSON

870* Se lo script non si esegue affatto, rendetelo eseguibile: `chmod +x ./my-hook.sh`

871 

872### `/hooks` non mostra hook configurati

873 

874Avete modificato un file di impostazioni ma gli hooks non appaiono nel menu.

875 

876* Le modifiche ai file vengono normalmente raccolte automaticamente. Se non sono apparse dopo alcuni secondi, il file watcher potrebbe aver perso il cambiamento: riavviate la vostra sessione per forzare un ricaricamento.

877* Verificate che il vostro JSON sia valido (le virgole finali e i commenti non sono consentiti)

878* Confermate che il file di impostazioni è nella posizione corretta: `.claude/settings.json` per gli hook del progetto, `~/.claude/settings.json` per gli hook globali

879 

880### L'hook Stop si esegue per sempre

881 

882Claude continua a lavorare in un ciclo infinito invece di fermarsi.

883 

884Il vostro script di hook Stop deve controllare se ha già attivato una continuazione. Analizzate il campo `stop_hook_active` dall'input JSON e uscite presto se è `true`:

885 

886```bash theme={null}

887#!/bin/bash

888INPUT=$(cat)

889if [ "$(echo "$INPUT" | jq -r '.stop_hook_active')" = "true" ]; then

890 exit 0 # Allow Claude to stop

891fi

892# ... rest of your hook logic

893```

894 

895### Convalida JSON non riuscita

896 

897Claude Code mostra un errore di analisi JSON anche se il vostro script di hook produce JSON valido.

898 

899Quando Claude Code esegue un hook, genera una shell che fornisce il vostro profilo (`~/.zshrc` o `~/.bashrc`). Se il vostro profilo contiene istruzioni `echo` incondizionate, quell'output viene anteposto al vostro JSON dell'hook:

900 

901```text theme={null}

902Shell ready on arm64

903{"decision": "block", "reason": "Not allowed"}

904```

905 

906Claude Code tenta di analizzare questo come JSON e fallisce. Per risolvere questo, avvolgete le istruzioni echo nel vostro profilo shell in modo che si eseguano solo in shell interattive:

907 

908```bash theme={null}

909# In ~/.zshrc or ~/.bashrc

910if [[ $- == *i* ]]; then

911 echo "Shell ready"

912fi

913```

914 

915La variabile `$-` contiene i flag della shell, e `i` significa interattiva. Gli hooks si eseguono in shell non interattive, quindi l'echo viene saltato.

916 

917### Tecniche di debug

918 

919La vista della trascrizione, attivata con `Ctrl+O`, mostra un riepilogo di una riga per ogni hook che si è attivato: il successo è silenzioso, gli errori di blocco mostrano stderr, e gli errori non bloccanti mostrano un avviso `<hook name> hook error` seguito dalla prima riga di stderr.

920 

921Per i dettagli di esecuzione completi incluso quali hook hanno corrisposto, i loro codici di uscita, stdout e stderr, leggete il debug log. Avviate Claude Code con `claude --debug-file /tmp/claude.log` per scrivere in un percorso noto, quindi `tail -f /tmp/claude.log` in un altro terminale. Se avete avviato senza quel flag, eseguite `/debug` a metà sessione per abilitare la registrazione e trovare il percorso del log.

922 

923## Ulteriori informazioni

924 

925* [Riferimento Hooks](/it/hooks): schemi di eventi completi, formato di output JSON, hooks asincroni e hooks di strumenti MCP

926* [Considerazioni sulla sicurezza](/it/hooks#security-considerations): esaminate prima di distribuire gli hooks in ambienti condivisi o di produzione

927* [Esempio di validatore di comandi Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py): implementazione di riferimento completa

how-claude-code-works.md +263 −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# Come funziona Claude Code

6 

7> Comprendi il ciclo agentico, gli strumenti integrati e come Claude Code interagisce con il tuo progetto.

8 

9Claude Code è un assistente agentico che funziona nel tuo terminale. Sebbene eccella nella programmazione, può aiutarti con qualsiasi cosa tu possa fare dalla riga di comando: scrivere documentazione, eseguire build, cercare file, ricercare argomenti e molto altro.

10 

11Questa guida copre l'architettura principale, le capacità integrate e [suggerimenti per lavorare efficacemente](#work-effectively-with-claude-code). Per procedure dettagliate, consulta [Flussi di lavoro comuni](/it/common-workflows). Per funzionalità di estensibilità come skills, MCP e hooks, consulta [Estendi Claude Code](/it/features-overview).

12 

13## Il ciclo agentico

14 

15Quando dai a Claude un compito, lavora attraverso tre fasi: **raccogliere contesto**, **intraprendere azioni** e **verificare i risultati**. Queste fasi si mescolano insieme. Claude utilizza strumenti durante tutto il processo, sia cercando file per comprendere il tuo codice, modificando per apportare cambiamenti, o eseguendo test per verificare il suo lavoro.

16 

17<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/agentic-loop.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=5f1827dec8539f38adee90ead3a85a38" alt="Il ciclo agentico: il tuo prompt porta Claude a raccogliere contesto, intraprendere azioni, verificare i risultati e ripetere fino al completamento dell'attività. Puoi interrompere in qualsiasi momento." width="720" height="280" data-path="images/agentic-loop.svg" />

18 

19Il ciclo si adatta a quello che chiedi. Una domanda sulla tua base di codice potrebbe richiedere solo la raccolta di contesto. Una correzione di bug cicla attraverso tutte e tre le fasi ripetutamente. Un refactoring potrebbe comportare una verifica estesa. Claude decide cosa richiede ogni passaggio in base a quello che ha imparato dal passaggio precedente, concatenando dozzine di azioni insieme e correggendo il corso lungo il percorso.

20 

21Anche tu fai parte di questo ciclo. Puoi interrompere in qualsiasi momento per indirizzare Claude in una direzione diversa, fornire contesto aggiuntivo o chiedergli di provare un approccio diverso. Claude lavora autonomamente ma rimane reattivo al tuo input.

22 

23Il ciclo agentico è alimentato da due componenti: [modelli](#models) che ragionano e [strumenti](#tools) che agiscono. Claude Code funge da **harness agentico** intorno a Claude: fornisce gli strumenti, la gestione del contesto e l'ambiente di esecuzione che trasformano un modello di linguaggio in un agente di codifica capace.

24 

25### Modelli

26 

27Claude Code utilizza i modelli Claude per comprendere il tuo codice e ragionare sui compiti. Claude può leggere codice in qualsiasi linguaggio, comprendere come i componenti si collegano e capire cosa deve cambiare per raggiungere il tuo obiettivo. Per compiti complessi, suddivide il lavoro in passaggi, li esegue e si adatta in base a quello che impara.

28 

29[Sono disponibili più modelli](/it/model-config) con diversi compromessi. Sonnet gestisce bene la maggior parte dei compiti di codifica. Opus fornisce un ragionamento più forte per decisioni architettoniche complesse. Cambia con `/model` durante una sessione o inizia con `claude --model <name>`.

30 

31Quando questa guida dice "Claude sceglie" o "Claude decide", è il modello che sta facendo il ragionamento.

32 

33### Strumenti

34 

35Gli strumenti sono ciò che rende Claude Code agentico. Senza strumenti, Claude può solo rispondere con testo. Con gli strumenti, Claude può agire: leggere il tuo codice, modificare file, eseguire comandi, cercare il web e interagire con servizi esterni. Ogni utilizzo di uno strumento restituisce informazioni che si alimentano nel ciclo, informando la decisione successiva di Claude.

36 

37Gli strumenti integrati generalmente rientrano in cinque categorie, ognuna rappresentante un diverso tipo di agenzia.

38 

39| Categoria | Cosa Claude può fare |

40| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

41| **Operazioni su file** | Leggere file, modificare codice, creare nuovi file, rinominare e riorganizzare |

42| **Ricerca** | Trovare file per pattern, cercare contenuto con regex, esplorare basi di codice |

43| **Esecuzione** | Eseguire comandi shell, avviare server, eseguire test, usare git |

44| **Web** | Cercare il web, recuperare documentazione, cercare messaggi di errore |

45| **Intelligenza del codice** | Vedere errori di tipo e avvisi dopo le modifiche, saltare alle definizioni, trovare riferimenti (richiede [plugin di intelligenza del codice](/it/discover-plugins#code-intelligence)) |

46 

47Queste sono le capacità principali. Claude ha anche strumenti per generare subagents, farti domande e altri compiti di orchestrazione. Consulta [Strumenti disponibili per Claude](/it/tools-reference) per l'elenco completo.

48 

49Claude sceglie quali strumenti utilizzare in base al tuo prompt e a quello che impara lungo il percorso. Quando dici "correggi i test falliti", Claude potrebbe:

50 

511. Eseguire la suite di test per vedere cosa sta fallendo

522. Leggere l'output dell'errore

533. Cercare i file sorgente rilevanti

544. Leggere quei file per comprendere il codice

555. Modificare i file per correggere il problema

566. Eseguire di nuovo i test per verificare

57 

58Ogni utilizzo di uno strumento fornisce a Claude nuove informazioni che informano il passaggio successivo. Questo è il ciclo agentico in azione.

59 

60**Estensione delle capacità di base:** Gli strumenti integrati sono la fondazione. Puoi estendere quello che Claude sa con [skills](/it/skills), connetterti a servizi esterni con [MCP](/it/mcp), automatizzare flussi di lavoro con [hooks](/it/hooks) e delegare compiti a [subagents](/it/sub-agents). Queste estensioni formano un livello sopra il ciclo agentico principale. Consulta [Estendi Claude Code](/it/features-overview) per una guida sulla scelta dell'estensione giusta per le tue esigenze.

61 

62## A cosa Claude può accedere

63 

64Questa guida si concentra sul terminale. Claude Code funziona anche in [VS Code](/it/vs-code), [IDE JetBrains](/it/jetbrains) e altri ambienti.

65 

66Quando esegui `claude` in una directory, Claude Code ottiene accesso a:

67 

68* **Il tuo progetto.** File nella tua directory e sottodirectory, più file altrove con la tua autorizzazione.

69* **Il tuo terminale.** Qualsiasi comando che potresti eseguire: strumenti di build, git, gestori di pacchetti, utilità di sistema, script. Se puoi farlo dalla riga di comando, Claude può farlo anche lui.

70* **Il tuo stato git.** Ramo corrente, modifiche non committate e cronologia dei commit recenti.

71* **Il tuo [CLAUDE.md](/it/memory).** Un file markdown dove memorizzi istruzioni specifiche del progetto, convenzioni e contesto che Claude dovrebbe conoscere ogni sessione.

72* **[Auto memory](/it/memory#auto-memory).** Apprendimenti che Claude salva automaticamente mentre lavori, come pattern di progetto e le tue preferenze. Le prime 200 righe o 25KB di MEMORY.md, a seconda di quale viene raggiunto per primo, si caricano all'inizio di ogni sessione.

73* **Estensioni che configuri.** [Server MCP](/it/mcp) per servizi esterni, [skills](/it/skills) per flussi di lavoro, [subagents](/it/sub-agents) per lavoro delegato e [Claude in Chrome](/it/chrome) per l'interazione del browser.

74 

75Poiché Claude vede l'intero tuo progetto, può lavorare su di esso. Quando chiedi a Claude di "correggere il bug di autenticazione", cerca file rilevanti, legge più file per comprendere il contesto, apporta modifiche coordinate su di essi, esegue test per verificare la correzione e committa le modifiche se lo chiedi. Questo è diverso dagli assistenti di codice inline che vedono solo il file corrente.

76 

77## Ambienti e interfacce

78 

79Il ciclo agentico, gli strumenti e le capacità descritti sopra sono gli stessi ovunque tu usi Claude Code. Quello che cambia è dove il codice viene eseguito e come interagisci con esso.

80 

81### Ambienti di esecuzione

82 

83Claude Code funziona in tre ambienti, ognuno con diversi compromessi per dove il tuo codice viene eseguito.

84 

85| Ambiente | Dove viene eseguito il codice | Caso d'uso |

86| ------------------ | ------------------------------------------ | ---------------------------------------------------------------- |

87| **Locale** | La tua macchina | Predefinito. Accesso completo ai tuoi file, strumenti e ambiente |

88| **Cloud** | VM gestite da Anthropic | Delegare compiti, lavorare su repo che non hai localmente |

89| **Remote Control** | La tua macchina, controllata da un browser | Usa l'interfaccia web mantenendo tutto locale |

90 

91### Interfacce

92 

93Puoi accedere a Claude Code tramite il terminale, l'[app desktop](/it/desktop), [estensioni IDE](/it/vs-code), [claude.ai/code](https://claude.ai/code), [Remote Control](/it/remote-control), [Slack](/it/slack) e [pipeline CI/CD](/it/github-actions). L'interfaccia determina come vedi e interagisci con Claude, ma il ciclo agentico sottostante è identico. Consulta [Usa Claude Code ovunque](/it/overview#use-claude-code-everywhere) per l'elenco completo.

94 

95## Lavora con le sessioni

96 

97Claude Code salva la tua conversazione localmente mentre lavori. Ogni messaggio, utilizzo di strumento e risultato viene archiviato, il che consente [il rewind](#undo-changes-with-checkpoints), [la ripresa e il fork](#resume-or-fork-sessions) delle sessioni. Prima che Claude apporta modifiche al codice, crea anche uno snapshot dei file interessati in modo da poter ripristinare se necessario.

98 

99**Le sessioni sono indipendenti.** Ogni nuova sessione inizia con una finestra di contesto fresca, senza la cronologia della conversazione dalle sessioni precedenti. Claude può persistere gli apprendimenti tra le sessioni utilizzando [auto memory](/it/memory#auto-memory) e puoi aggiungere le tue istruzioni persistenti in [CLAUDE.md](/it/memory).

100 

101### Lavora tra i rami

102 

103Ogni conversazione di Claude Code è una sessione legata alla tua directory corrente. Quando riprendi, vedi solo le sessioni da quella directory.

104 

105Claude vede i file del tuo ramo corrente. Quando cambi ramo, Claude vede i file del nuovo ramo, ma la cronologia della tua conversazione rimane la stessa. Claude ricorda quello che hai discusso anche dopo il cambio di ramo.

106 

107Poiché le sessioni sono legate alle directory, puoi eseguire sessioni Claude parallele utilizzando [git worktrees](/it/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), che creano directory separate per singoli rami.

108 

109### Riprendi o fai il fork delle sessioni

110 

111Quando riprendi una sessione con `claude --continue` o `claude --resume`, riprendi da dove hai lasciato utilizzando lo stesso ID di sessione. I nuovi messaggi si aggiungono alla conversazione esistente. La tua cronologia completa della conversazione viene ripristinata, ma i permessi con ambito di sessione non lo sono. Dovrai approvarli di nuovo.

112 

113<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/session-continuity.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=fa41d12bfb57579cabfeece907151d30" alt="Continuità della sessione: resume continua la stessa sessione, fork crea un nuovo ramo con un nuovo ID." width="560" height="280" data-path="images/session-continuity.svg" />

114 

115Per creare un ramo e provare un approccio diverso senza influenzare la sessione originale, utilizza il flag `--fork-session`:

116 

117```bash theme={null}

118claude --continue --fork-session

119```

120 

121Questo crea un nuovo ID di sessione preservando la cronologia della conversazione fino a quel punto. La sessione originale rimane invariata. Come resume, le sessioni forkate non ereditano i permessi con ambito di sessione.

122 

123**Stessa sessione in più terminali**: Se riprendi la stessa sessione in più terminali, entrambi i terminali scrivono nello stesso file di sessione. I messaggi da entrambi vengono intercalati, come due persone che scrivono nello stesso quaderno. Nulla si corrompe, ma la conversazione diventa confusa. Ogni terminale vede solo i suoi messaggi durante la sessione, ma se riprendi quella sessione in seguito, vedrai tutto intercalato. Per il lavoro parallelo dallo stesso punto di partenza, utilizza `--fork-session` per dare a ogni terminale la sua sessione pulita.

124 

125### La finestra di contesto

126 

127La finestra di contesto di Claude contiene la cronologia della tua conversazione, i contenuti dei file, gli output dei comandi, [CLAUDE.md](/it/memory), [auto memory](/it/memory#auto-memory), le skills caricate e le istruzioni di sistema. Man mano che lavori, il contesto si riempie. Claude compatta automaticamente, ma le istruzioni dall'inizio della conversazione possono andare perse. Metti le regole persistenti in CLAUDE.md ed esegui `/context` per vedere cosa sta usando lo spazio.

128 

129Per una procedura interattiva di quello che si carica e quando, consulta [Esplora la finestra di contesto](/it/context-window).

130 

131#### Quando il contesto si riempie

132 

133Claude Code gestisce il contesto automaticamente mentre ti avvicini al limite. Cancella prima gli output degli strumenti più vecchi, quindi riassume la conversazione se necessario. Le tue richieste e i frammenti di codice chiave vengono preservati; le istruzioni dettagliate dall'inizio della conversazione possono andare perse. Metti le regole persistenti in CLAUDE.md piuttosto che fare affidamento sulla cronologia della conversazione.

134 

135Per controllare cosa viene preservato durante la compattazione, aggiungi una sezione "Compact Instructions" a CLAUDE.md o esegui `/compact` con un focus (come `/compact focus on the API changes`).

136 

137Esegui `/context` per vedere cosa sta usando lo spazio. Le definizioni degli strumenti MCP vengono differite per impostazione predefinita e caricate su richiesta tramite [ricerca degli strumenti](/it/mcp#scale-with-mcp-tool-search), quindi solo i nomi degli strumenti consumano contesto fino a quando Claude utilizza uno strumento specifico. Esegui `/mcp` per controllare i costi per server.

138 

139#### Gestisci il contesto con skills e subagents

140 

141Oltre alla compattazione, puoi utilizzare altre funzionalità per controllare cosa viene caricato nel contesto.

142 

143[Skills](/it/skills) si caricano su richiesta. Claude vede le descrizioni delle skills all'inizio della sessione, ma il contenuto completo si carica solo quando una skill viene utilizzata. Per le skills che invochi manualmente, imposta `disable-model-invocation: true` per mantenere le descrizioni fuori dal contesto fino a quando non ne hai bisogno.

144 

145[Subagents](/it/sub-agents) ottengono il loro contesto fresco, completamente separato dalla tua conversazione principale. Il loro lavoro non gonfia il tuo contesto. Quando finito, restituiscono un riassunto. Questo isolamento è il motivo per cui i subagents aiutano con le sessioni lunghe.

146 

147Consulta [costi del contesto](/it/features-overview#understand-context-costs) per quello che ogni funzionalità costa e [riduci l'utilizzo dei token](/it/costs#reduce-token-usage) per suggerimenti sulla gestione del contesto.

148 

149## Rimani al sicuro con checkpoint e permessi

150 

151Claude ha due meccanismi di sicurezza: i checkpoint ti permettono di annullare le modifiche ai file e i permessi controllano cosa Claude può fare senza chiedere.

152 

153### Annulla le modifiche con i checkpoint

154 

155**Ogni modifica ai file è reversibile.** Prima che Claude modifichi qualsiasi file, crea uno snapshot dei contenuti attuali. Se qualcosa va storto, premi `Esc` due volte per tornare a uno stato precedente, o chiedi a Claude di annullare.

156 

157I checkpoint sono locali alla tua sessione, separati da git. Coprono solo le modifiche ai file. Le azioni che influenzano i sistemi remoti (database, API, distribuzioni) non possono essere checkpointed, motivo per cui Claude chiede prima di eseguire comandi con effetti collaterali esterni.

158 

159### Controlla cosa Claude può fare

160 

161Premi `Shift+Tab` per scorrere le modalità di permesso:

162 

163* **Predefinito**: Claude chiede prima delle modifiche ai file e dei comandi shell

164* **Auto-accept edits**: Claude modifica i file senza chiedere, chiede ancora per i comandi

165* **Plan Mode**: Claude utilizza solo strumenti di sola lettura, creando un piano che puoi approvare prima dell'esecuzione

166* **Auto mode**: Claude valuta tutte le azioni con controlli di sicurezza in background. Attualmente un'anteprima di ricerca

167 

168Puoi anche consentire comandi specifici in `.claude/settings.json` in modo che Claude non chieda ogni volta. Questo è utile per comandi affidabili come `npm test` o `git status`. Le impostazioni possono essere scoped da politiche a livello di organizzazione fino alle preferenze personali. Consulta [Permessi](/it/permissions) per i dettagli.

169 

170***

171 

172## Lavora efficacemente con Claude Code

173 

174Questi suggerimenti ti aiutano a ottenere risultati migliori da Claude Code.

175 

176### Chiedi aiuto a Claude Code

177 

178Claude Code può insegnarti come usarlo. Fai domande come "come configuro gli hooks?" o "qual è il modo migliore per strutturare il mio CLAUDE.md?" e Claude spiegherà.

179 

180I comandi integrati ti guidano anche attraverso la configurazione:

181 

182* `/init` ti guida attraverso la creazione di un CLAUDE.md per il tuo progetto

183* `/agents` ti aiuta a configurare subagents personalizzati

184* `/doctor` diagnostica i problemi comuni con la tua installazione

185 

186### È una conversazione

187 

188Claude Code è conversazionale. Non hai bisogno di prompt perfetti. Inizia con quello che vuoi, quindi affina:

189 

190```text theme={null}

191Correggi il bug di login

192```

193 

194\[Claude indaga, prova qualcosa]

195 

196```text theme={null}

197Non è del tutto giusto. Il problema è nella gestione della sessione.

198```

199 

200\[Claude adatta l'approccio]

201 

202Quando il primo tentativo non è giusto, non ricominciare da capo. Itera.

203 

204#### Interrompi e indirizza

205 

206Puoi interrompere Claude in qualsiasi momento. Se sta andando nella direzione sbagliata, digita semplicemente la tua correzione e premi Invio. Claude smetterà quello che sta facendo e adatterà il suo approccio in base al tuo input. Non devi aspettare che finisca o ricominciare da capo.

207 

208### Sii specifico all'inizio

209 

210Più preciso è il tuo prompt iniziale, meno correzioni avrai bisogno. Fai riferimento a file specifici, menziona vincoli e indica pattern di esempio.

211 

212```text theme={null}

213Il flusso di checkout è rotto per gli utenti con carte scadute.

214Controlla src/payments/ per il problema, specialmente l'aggiornamento del token.

215Scrivi prima un test fallito, poi correggilo.

216```

217 

218I prompt vaghi funzionano, ma passerai più tempo a indirizzare. I prompt specifici come quello sopra spesso hanno successo al primo tentativo.

219 

220### Dai a Claude qualcosa da verificare

221 

222Claude funziona meglio quando può verificare il suo lavoro. Includi casi di test, incolla screenshot dell'interfaccia utente prevista o definisci l'output che desideri.

223 

224```text theme={null}

225Implementa validateEmail. Casi di test: 'user@example.com' → true,

226'invalid' → false, 'user@.com' → false. Esegui i test dopo.

227```

228 

229Per il lavoro visivo, incolla uno screenshot del design e chiedi a Claude di confrontare la sua implementazione con esso.

230 

231### Esplora prima di implementare

232 

233Per problemi complessi, separa la ricerca dalla codifica. Utilizza la modalità piano (`Shift+Tab` due volte) per analizzare prima la base di codice:

234 

235```text theme={null}

236Leggi src/auth/ e comprendi come gestiamo le sessioni.

237Quindi crea un piano per aggiungere il supporto OAuth.

238```

239 

240Rivedi il piano, affinalo attraverso la conversazione, quindi lascia che Claude implementi. Questo approccio a due fasi produce risultati migliori rispetto al passare direttamente al codice.

241 

242### Delega, non dettare

243 

244Pensa di delegare a un collega capace. Fornisci contesto e direzione, quindi affida a Claude di capire i dettagli:

245 

246```text theme={null}

247Il flusso di checkout è rotto per gli utenti con carte scadute.

248Il codice rilevante è in src/payments/. Puoi indagare e correggerlo?

249```

250 

251Non hai bisogno di specificare quali file leggere o quali comandi eseguire. Claude lo capisce.

252 

253## Cosa c'è dopo

254 

255<CardGroup cols={2}>

256 <Card title="Estendi con funzionalità" icon="puzzle-piece" href="/it/features-overview">

257 Aggiungi Skills, connessioni MCP e comandi personalizzati

258 </Card>

259 

260 <Card title="Flussi di lavoro comuni" icon="graduation-cap" href="/it/common-workflows">

261 Guide passo dopo passo per compiti tipici

262 </Card>

263</CardGroup>

interactive-mode.md +362 −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# Modalità interattiva

6 

7> Riferimento completo per le scorciatoie da tastiera, le modalità di input e le funzioni interattive nelle sessioni di Claude Code.

8 

9## Scorciatoie da tastiera

10 

11<Note>

12 Le scorciatoie da tastiera possono variare a seconda della piattaforma e del terminale. Premere `?` per visualizzare le scorciatoie disponibili per il vostro ambiente.

13 

14 **Utenti macOS**: Le scorciatoie con il tasto Option/Alt (`Alt+B`, `Alt+F`, `Alt+Y`, `Alt+M`, `Alt+P`, `Alt+T`) richiedono la configurazione di Option come Meta nel vostro terminale:

15 

16 * **iTerm2**: Impostazioni → Profili → Tasti → Generale → impostare il tasto Option sinistro/destro su "Esc+"

17 * **Apple Terminal**: Impostazioni → Profili → Tastiera → selezionare "Usa Option come Meta Key"

18 * **VS Code**: impostare `"terminal.integrated.macOptionIsMeta": true` nelle impostazioni di VS Code

19 

20 Vedere [Configurazione del terminale](/it/terminal-config) per i dettagli.

21</Note>

22 

23### Controlli generali

24 

25| Scorciatoia | Descrizione | Contesto |

26| :---------------------------------------------- | :--------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

27| `Ctrl+C` | Annulla l'input corrente o la generazione | Interruzione standard |

28| `Ctrl+X Ctrl+K` | Termina tutti gli agenti in background. Premere due volte entro 3 secondi per confermare | Controllo agente in background |

29| `Ctrl+D` | Esci dalla sessione di Claude Code | Segnale EOF |

30| `Ctrl+G` o `Ctrl+X Ctrl+E` | Apri nell'editor di testo predefinito | Modifica il vostro prompt o la risposta personalizzata nell'editor di testo predefinito. `Ctrl+X Ctrl+E` è il binding nativo di readline. Attivare Mostra ultima risposta nell'editor esterno in `/config` per anteporre la risposta precedente di Claude come contesto commentato con `#` sopra il vostro prompt; il blocco di commento viene rimosso quando salvate |

31| `Ctrl+L` | Ridisegna lo schermo | Forza un ridisegno completo del terminale. L'input e la cronologia della conversazione vengono mantenuti. Utilizzate questo per recuperare se la visualizzazione diventa distorta o parzialmente vuota |

32| `Ctrl+O` | Attiva/disattiva il visualizzatore di trascrizione | Mostra l'utilizzo e l'esecuzione dettagliati degli strumenti. Inoltre espande le chiamate MCP, che si compattano in una singola riga come "Called slack 3 times" per impostazione predefinita |

33| `Ctrl+R` | Ricerca inversa nella cronologia dei comandi | Cerca i comandi precedenti in modo interattivo |

34| `Ctrl+V` o `Cmd+V` (iTerm2) o `Alt+V` (Windows) | Incolla immagine dagli appunti | Inserisce un chip `[Image #N]` al cursore in modo da poter farvi riferimento posizionalmente nel vostro prompt |

35| `Ctrl+B` | Attività in esecuzione in background | Esegue i comandi bash e gli agenti in background. Gli utenti Tmux premono due volte |

36| `Ctrl+T` | Attiva/disattiva l'elenco delle attività | Mostra o nascondi l'[elenco delle attività](#task-list) nell'area di stato del terminale |

37| `Frecce sinistra/destra` | Cicla attraverso le schede della finestra di dialogo | Naviga tra le schede nelle finestre di dialogo dei permessi e nei menu |

38| `Frecce su/giù` o `Ctrl+P`/`Ctrl+N` | Sposta il cursore o naviga nella cronologia dei comandi | Nell'input multilinea, prima sposta il cursore all'interno del prompt. Una volta che il cursore è già sul bordo superiore o inferiore, premere di nuovo naviga nella cronologia dei comandi |

39| `Esc` + `Esc` | Riavvolgi o riassumi | Ripristina il codice e/o la conversazione a un punto precedente, o riassumi da un messaggio selezionato |

40| `Shift+Tab` o `Alt+M` (alcune configurazioni) | Cicla le modalità di permesso | Cicla attraverso `default`, `acceptEdits`, `plan` e qualsiasi modalità abilitata, come `auto` o `bypassPermissions`. Vedere [modalità di permesso](/it/permission-modes). |

41| `Option+P` (macOS) o `Alt+P` (Windows/Linux) | Cambia modello | Cambia modelli senza cancellare il vostro prompt |

42| `Option+T` (macOS) o `Alt+T` (Windows/Linux) | Attiva/disattiva il pensiero esteso | Abilita o disabilita la modalità di pensiero esteso. Su macOS, configurare il vostro terminale per inviare Option come Meta affinché questa scorciatoia funzioni |

43| `Option+O` (macOS) o `Alt+O` (Windows/Linux) | Attiva/disattiva la modalità veloce | Abilita o disabilita la [modalità veloce](/it/fast-mode) |

44 

45### Modifica del testo

46 

47| Scorciatoia | Descrizione | Contesto |

48| :---------------------- | :----------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

49| `Ctrl+A` | Sposta il cursore all'inizio della riga corrente | Nell'input multilinea, sposta all'inizio della riga logica corrente |

50| `Ctrl+E` | Sposta il cursore alla fine della riga corrente | Nell'input multilinea, sposta alla fine della riga logica corrente |

51| `Ctrl+K` | Elimina fino alla fine della riga | Memorizza il testo eliminato per l'incollamento |

52| `Ctrl+U` | Elimina dal cursore all'inizio della riga | Memorizza il testo eliminato per l'incollamento. Ripetere per cancellare su più righe nell'input multilinea. Su macOS, gli emulatori di terminale inclusi iTerm2 e Terminal.app mappano `Cmd+Backspace` a questa scorciatoia |

53| `Ctrl+W` | Elimina la parola precedente | Memorizza il testo eliminato per l'incollamento. Su Windows, `Ctrl+Backspace` elimina anche la parola precedente |

54| `Ctrl+Y` | Incolla il testo eliminato | Incolla il testo eliminato con `Ctrl+K`, `Ctrl+U` o `Ctrl+W` |

55| `Alt+Y` (dopo `Ctrl+Y`) | Cicla la cronologia degli incollamenti | Dopo l'incollamento, cicla attraverso il testo precedentemente eliminato. Richiede [Option come Meta](#keyboard-shortcuts) su macOS |

56| `Alt+B` | Sposta il cursore indietro di una parola | Navigazione per parole. Richiede [Option come Meta](#keyboard-shortcuts) su macOS |

57| `Alt+F` | Sposta il cursore in avanti di una parola | Navigazione per parole. Richiede [Option come Meta](#keyboard-shortcuts) su macOS |

58 

59### Tema e visualizzazione

60 

61| Scorciatoia | Descrizione | Contesto |

62| :---------- | :----------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- |

63| `Ctrl+T` | Attiva/disattiva l'evidenziazione della sintassi per i blocchi di codice | Funziona solo all'interno del menu di selezione `/theme`. Controlla se il codice nelle risposte di Claude utilizza la colorazione della sintassi |

64 

65### Input multilinea

66 

67| Metodo | Scorciatoia | Contesto |

68| :-------------------- | :------------------- | :-------------------------------------------------------------------------------------------------------- |

69| Escape rapido | `\` + `Enter` | Funziona in tutti i terminali |

70| Tasto Option | `Option+Enter` | Dopo aver abilitato [Option come Meta](/it/terminal-config#enable-option-key-shortcuts-on-macos) su macOS |

71| Shift+Enter | `Shift+Enter` | Nativo in iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal |

72| Sequenza di controllo | `Ctrl+J` | Funziona in qualsiasi terminale senza configurazione |

73| Modalità incolla | Incolla direttamente | Per blocchi di codice, log |

74 

75<Tip>

76 Shift+Enter funziona senza configurazione in iTerm2, WezTerm, Ghostty, Kitty, Warp e Apple Terminal. Per VS Code, Cursor, Windsurf, Alacritty e Zed, eseguire `/terminal-setup` per installare il binding.

77</Tip>

78 

79### Comandi rapidi

80 

81| Scorciatoia | Descrizione | Note |

82| :------------- | :----------------------------- | :---------------------------------------------------------------------------- |

83| `/` all'inizio | Comando o skill | Vedere [comandi](#commands) e [skills](/it/skills) |

84| `!` all'inizio | Modalità Bash | Esegui i comandi direttamente e aggiungi l'output di esecuzione alla sessione |

85| `@` | Menzione del percorso del file | Attiva l'autocompletamento del percorso del file |

86 

87### Visualizzatore di trascrizione

88 

89Quando il visualizzatore di trascrizione è aperto (attivato con `Ctrl+O`), queste scorciatoie sono disponibili. `Ctrl+E` può essere riassegnato tramite [`transcript:toggleShowAll`](/it/keybindings).

90 

91| Scorciatoia | Descrizione |

92| :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

93| `Ctrl+E` | Attiva/disattiva mostra tutto il contenuto |

94| `[` | Scrivi la conversazione completa nel scrollback nativo del vostro terminale in modo che `Cmd+F`, la modalità copia di tmux e altri strumenti nativi possano cercarla. Richiede il [rendering a schermo intero](/it/fullscreen#search-and-review-the-conversation) |

95| `v` | Scrivi la conversazione in un file temporaneo e aprilo in `$VISUAL` o `$EDITOR`. Richiede il [rendering a schermo intero](/it/fullscreen) |

96| `q`, `Ctrl+C`, `Esc` | Esci dalla visualizzazione della trascrizione. Tutti e tre possono essere riassegnati tramite [`transcript:exit`](/it/keybindings) |

97 

98### Input vocale

99 

100| Scorciatoia | Descrizione | Note |

101| :---------------------------- | :--------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

102| Tieni premuto o tocca `Space` | Dettatura vocale | Richiede che la [dettatura vocale](/it/voice-dictation) sia abilitata. Tieni premuto per registrare, o esegui `/voice tap` per attivare/disattivare al tocco. [Riassegnabile](/it/voice-dictation#rebind-the-dictation-key) |

103 

104## Comandi

105 

106Digitate `/` in Claude Code per visualizzare tutti i comandi disponibili, oppure digitate `/` seguito da qualsiasi lettera per filtrare. Il menu `/` mostra tutto ciò che potete invocare: comandi integrati, [skills](/it/skills) in bundle e create dagli utenti, e comandi forniti da [plugin](/it/plugins) e [server MCP](/it/mcp#use-mcp-prompts-as-commands). Non tutti i comandi integrati sono visibili a ogni utente poiché alcuni dipendono dalla vostra piattaforma o dal vostro piano.

107 

108Vedere il [riferimento dei comandi](/it/commands) per l'elenco completo dei comandi inclusi in Claude Code.

109 

110## Modalità editor Vim

111 

112Abilitate la modifica in stile vim tramite `/config` → Editor mode.

113 

114### Cambio di modalità

115 

116| Comando | Azione | Dalla modalità |

117| :------ | :---------------------------------------------- | :------------- |

118| `Esc` | Entra in modalità NORMAL | INSERT, VISUAL |

119| `i` | Inserisci prima del cursore | NORMAL |

120| `I` | Inserisci all'inizio della riga | NORMAL |

121| `a` | Inserisci dopo il cursore | NORMAL |

122| `A` | Inserisci alla fine della riga | NORMAL |

123| `o` | Apri riga sotto | NORMAL |

124| `O` | Apri riga sopra | NORMAL |

125| `v` | Avvia selezione visuale carattere per carattere | NORMAL |

126| `V` | Avvia selezione visuale riga per riga | NORMAL |

127 

128### Navigazione (modalità NORMAL)

129 

130| Comando | Azione |

131| :-------------- | :--------------------------------------------------------- |

132| `h`/`j`/`k`/`l` | Sposta sinistra/giù/su/destra |

133| `w` | Parola successiva |

134| `e` | Fine della parola |

135| `b` | Parola precedente |

136| `0` | Inizio della riga |

137| `$` | Fine della riga |

138| `^` | Primo carattere non vuoto |

139| `gg` | Inizio dell'input |

140| `G` | Fine dell'input |

141| `f{char}` | Salta alla prossima occorrenza del carattere |

142| `F{char}` | Salta alla precedente occorrenza del carattere |

143| `t{char}` | Salta appena prima della prossima occorrenza del carattere |

144| `T{char}` | Salta appena dopo la precedente occorrenza del carattere |

145| `;` | Ripeti l'ultimo movimento f/F/t/T |

146| `,` | Ripeti l'ultimo movimento f/F/t/T in ordine inverso |

147 

148<Note>

149 In modalità normale vim, se il cursore è all'inizio o alla fine dell'input e non può muoversi ulteriormente, `j`/`k` e i tasti freccia navigano nella cronologia dei comandi.

150</Note>

151 

152### Modifica (modalità NORMAL)

153 

154| Comando | Azione |

155| :------------- | :------------------------------------- |

156| `x` | Elimina carattere |

157| `dd` | Elimina riga |

158| `D` | Elimina fino alla fine della riga |

159| `dw`/`de`/`db` | Elimina parola/fino alla fine/indietro |

160| `cc` | Cambia riga |

161| `C` | Cambia fino alla fine della riga |

162| `cw`/`ce`/`cb` | Cambia parola/fino alla fine/indietro |

163| `yy`/`Y` | Copia (yank) riga |

164| `yw`/`ye`/`yb` | Copia parola/fino alla fine/indietro |

165| `p` | Incolla dopo il cursore |

166| `P` | Incolla prima del cursore |

167| `>>` | Indenta riga |

168| `<<` | Dedenta riga |

169| `J` | Unisci righe |

170| `u` | Annulla |

171| `.` | Ripeti l'ultimo cambiamento |

172 

173### Oggetti di testo (modalità NORMAL)

174 

175Gli oggetti di testo funzionano con operatori come `d`, `c` e `y`:

176 

177| Comando | Azione |

178| :-------- | :------------------------------------------- |

179| `iw`/`aw` | Parola interna/intorno |

180| `iW`/`aW` | PAROLA interna/intorno (delimitata da spazi) |

181| `i"`/`a"` | Interno/intorno a virgolette doppie |

182| `i'`/`a'` | Interno/intorno a virgolette singole |

183| `i(`/`a(` | Interno/intorno a parentesi tonde |

184| `i[`/`a[` | Interno/intorno a parentesi quadre |

185| `i{`/`a{` | Interno/intorno a parentesi graffe |

186 

187### Modalità visuale

188 

189Premete `v` per la selezione carattere per carattere o `V` per la selezione riga per riga. I movimenti estendono la selezione e gli operatori agiscono direttamente su di essa.

190 

191| Comando | Azione |

192| :--------------- | :------------------------------------------------------------------- |

193| `d`/`x` | Elimina selezione |

194| `y` | Copia selezione |

195| `c`/`s` | Cambia selezione |

196| `p` | Sostituisci selezione con il contenuto del registro |

197| `r{char}` | Sostituisci ogni carattere selezionato con `{char}` |

198| `~`/`u`/`U` | Attiva/disattiva, minuscole o maiuscole selezione |

199| `>`/`<` | Indenta o dedenta le righe selezionate |

200| `J` | Unisci le righe selezionate |

201| `o` | Scambia cursore e ancoraggio |

202| `iw`/`aw`/`i"`/… | Seleziona un oggetto di testo |

203| `v`/`V` | Attiva/disattiva tra carattere per carattere e riga per riga, o esci |

204 

205La modalità visuale blocco con `Ctrl+V` non è supportata.

206 

207## Cronologia dei comandi

208 

209Claude Code mantiene la cronologia dei comandi per la sessione corrente:

210 

211* La cronologia dell'input viene memorizzata per directory di lavoro

212* La cronologia dell'input si ripristina quando eseguite `/clear` per avviare una nuova sessione. La conversazione della sessione precedente viene preservata e può essere ripresa.

213* Utilizzate i tasti freccia su/giù per navigare (vedere le scorciatoie da tastiera sopra)

214* **Nota**: l'espansione della cronologia (`!`) è disabilitata per impostazione predefinita

215 

216### Ricerca inversa con Ctrl+R

217 

218Premete `Ctrl+R` per cercare in modo interattivo nella vostra cronologia dei comandi:

219 

2201. **Avvia ricerca**: premete `Ctrl+R` per attivare la ricerca inversa nella cronologia

2212. **Digita query**: inserite il testo da cercare nei comandi precedenti. Il termine di ricerca è evidenziato nei risultati corrispondenti

2223. **Naviga tra i risultati**: premete `Ctrl+R` di nuovo per scorrere i risultati più vecchi

2234. **Cambia ambito**: premete `Ctrl+S` per alternare tra questa sessione, questo progetto e tutti i progetti

2245. **Accetta il risultato**:

225 * Premete `Tab` o `Esc` per accettare il risultato corrente e continuare a modificare

226 * Premete `Enter` per accettare ed eseguire il comando immediatamente

2276. **Annulla ricerca**:

228 * Premete `Ctrl+C` per annullare e ripristinare l'input originale

229 * Premete `Backspace` su una ricerca vuota per annullare

230 

231La ricerca visualizza i comandi corrispondenti con il termine di ricerca evidenziato, in modo da poter trovare e riutilizzare gli input precedenti.

232 

233## Comandi bash in background

234 

235Claude Code supporta l'esecuzione di comandi bash in background, consentendovi di continuare a lavorare mentre i processi a lunga esecuzione vengono eseguiti.

236 

237### Come funziona l'esecuzione in background

238 

239Quando Claude Code esegue un comando in background, esegue il comando in modo asincrono e restituisce immediatamente un ID di attività in background. Claude Code può rispondere a nuovi prompt mentre il comando continua a essere eseguito in background.

240 

241Per eseguire i comandi in background, potete:

242 

243* Chiedere a Claude Code di eseguire un comando in background

244* Premere Ctrl+B per spostare una normale invocazione dello strumento Bash in background. (Gli utenti Tmux devono premere Ctrl+B due volte a causa del tasto di prefisso di tmux.)

245 

246**Caratteristiche principali:**

247 

248* L'output viene scritto in un file e Claude può recuperarlo utilizzando lo strumento Read

249* Le attività in background hanno ID univoci per il tracciamento e il recupero dell'output

250* Le attività in background vengono pulite automaticamente quando Claude Code esce

251* Le attività in background vengono terminate automaticamente se l'output supera 5GB, con una nota in stderr che spiega il motivo

252 

253Per disabilitare tutta la funzionalità di attività in background, impostare la variabile di ambiente `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` su `1`. Vedere [Variabili di ambiente](/it/env-vars) per i dettagli.

254 

255**Comandi comunemente eseguiti in background:**

256 

257* Strumenti di build (webpack, vite, make)

258* Gestori di pacchetti (npm, yarn, pnpm)

259* Test runner (jest, pytest)

260* Server di sviluppo

261* Processi a lunga esecuzione (docker, terraform)

262 

263### Modalità Bash con prefisso `!`

264 

265Eseguite i comandi bash direttamente senza passare per Claude aggiungendo il prefisso `!` al vostro input:

266 

267```bash theme={null}

268! npm test

269! git status

270! ls -la

271```

272 

273Modalità Bash:

274 

275* Aggiunge il comando e il suo output al contesto della conversazione

276* Mostra l'avanzamento e l'output in tempo reale

277* Supporta lo stesso backgrounding `Ctrl+B` per i comandi a lunga esecuzione

278* Non richiede a Claude di interpretare o approvare il comando

279* Supporta l'autocompletamento basato sulla cronologia: digitate un comando parziale e premete **Tab** per completare dai comandi `!` precedenti nel progetto corrente

280* Esci con `Escape`, `Backspace` o `Ctrl+U` su un prompt vuoto

281* Incollare il testo che inizia con `!` in un prompt vuoto entra automaticamente in modalità bash, corrispondendo al comportamento digitato `!`

282 

283Questo è utile per le operazioni shell rapide mantenendo il contesto della conversazione.

284 

285## Suggerimenti di prompt

286 

287Quando aprite una sessione per la prima volta, un comando di esempio in grigio appare nell'input del prompt per aiutarvi a iniziare. Claude Code lo sceglie dalla cronologia git del vostro progetto, quindi riflette i file su cui avete lavorato di recente.

288 

289Dopo che Claude risponde, i suggerimenti continuano ad apparire in base alla vostra cronologia di conversazione, come un passaggio di follow-up da una richiesta in più parti o una continuazione naturale del vostro flusso di lavoro.

290 

291* Premete **Tab** o **Freccia destra** per accettare il suggerimento, oppure premete **Enter** per accettare e inviare

292* Iniziate a digitare per dismissarlo

293 

294Il suggerimento viene eseguito come una richiesta in background che riutilizza la cache del prompt della conversazione padre, quindi il costo aggiuntivo è minimo. Claude Code salta la generazione di suggerimenti quando la cache è fredda per evitare costi inutili.

295 

296I suggerimenti vengono automaticamente saltati dopo il primo turno di una conversazione, in modalità non interattiva e in Plan Mode.

297 

298Per disabilitare completamente i suggerimenti di prompt, impostare la variabile di ambiente o attivare/disattivare l'impostazione in `/config`:

299 

300```bash theme={null}

301export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false

302```

303 

304## Domande laterali con /btw

305 

306Utilizzate `/btw` per fare una domanda rapida sul vostro lavoro corrente senza aggiungerla alla cronologia della conversazione. Questo è utile quando volete una risposta veloce ma non volete ingombrare il contesto principale o far deviare Claude da un'attività a lunga esecuzione.

307 

308```

309/btw what was the name of that config file again?

310```

311 

312Le domande laterali hanno piena visibilità nella conversazione corrente, quindi potete chiedere informazioni sul codice che Claude ha già letto, sulle decisioni che ha preso in precedenza, o su qualsiasi altra cosa della sessione. La domanda e la risposta sono effimere: appaiono in un overlay dismissibile e non entrano mai nella cronologia della conversazione.

313 

314* **Disponibile mentre Claude sta lavorando**: potete eseguire `/btw` anche mentre Claude sta elaborando una risposta. La domanda laterale viene eseguita in modo indipendente e non interrompe il turno principale.

315* **Nessun accesso agli strumenti**: le domande laterali rispondono solo da ciò che è già nel contesto. Claude non può leggere file, eseguire comandi o cercare quando risponde a una domanda laterale.

316* **Risposta singola**: non ci sono turni di follow-up. Se avete bisogno di un dialogo, utilizzate un prompt normale.

317* **Costo basso**: la domanda laterale riutilizza la cache del prompt della conversazione padre, quindi il costo aggiuntivo è minimo.

318 

319Premete **Space**, **Enter** o **Escape** per dismissere la risposta e tornare al prompt.

320 

321`/btw` è l'inverso di un [subagent](/it/sub-agents): vede la vostra conversazione completa ma non ha strumenti, mentre un subagent ha strumenti completi ma inizia con un contesto vuoto. Utilizzate `/btw` per chiedere informazioni su ciò che Claude già conosce da questa sessione; utilizzate un subagent per scoprire qualcosa di nuovo.

322 

323## Elenco delle attività

324 

325Quando lavorate su lavori complessi e multistep, Claude crea un elenco di attività per tracciare l'avanzamento. Le attività appaiono nell'area di stato del vostro terminale con indicatori che mostrano cosa è in sospeso, in corso o completato.

326 

327* Premete `Ctrl+T` per attivare/disattivare la visualizzazione dell'elenco delle attività. La visualizzazione mostra fino a 5 attività alla volta

328* Per visualizzare tutte le attività o cancellarle, chiedete direttamente a Claude: "show me all tasks" o "clear all tasks"

329* Le attività persistono attraverso i compattamenti del contesto, aiutando Claude a rimanere organizzato su progetti più grandi

330* Per condividere un elenco di attività tra sessioni, impostare `CLAUDE_CODE_TASK_LIST_ID` per utilizzare una directory denominata in `~/.claude/tasks/`: `CLAUDE_CODE_TASK_LIST_ID=my-project claude`

331 

332## Riepilogo della sessione

333 

334Quando tornate al terminale dopo esservi allontanati, Claude Code mostra un riepilogo di una riga di ciò che è accaduto nella sessione finora. Il riepilogo viene generato in background una volta che sono trascorsi almeno tre minuti dall'ultimo turno completato e il terminale non è a fuoco, quindi è pronto quando tornate. I riepiloghi appaiono solo una volta che la sessione ha almeno tre turni, e mai due volte di seguito.

335 

336Eseguite `/recap` per generare un riepilogo su richiesta. Per disattivare i riepiloghi automatici, aprite `/config` e disabilitate **Session recap**.

337 

338Il riepilogo della sessione è abilitato per impostazione predefinita per ogni piano e provider. Il riepilogo viene sempre saltato in modalità non interattiva.

339 

340## Stato della revisione PR

341 

342Quando lavorate su un ramo con una pull request aperta, Claude Code visualizza un collegamento PR cliccabile nel footer (ad esempio, "PR #446"). Il collegamento ha una sottolineatura colorata che indica lo stato della revisione:

343 

344* Verde: approvato

345* Giallo: revisione in sospeso

346* Rosso: modifiche richieste

347* Grigio: bozza

348* Viola: unito

349 

350`Cmd+click` (Mac) o `Ctrl+click` (Windows/Linux) sul collegamento per aprire la pull request nel vostro browser. Lo stato si aggiorna automaticamente ogni 60 secondi.

351 

352<Note>

353 Lo stato PR richiede che la CLI `gh` sia installata e autenticata (`gh auth login`).

354</Note>

355 

356## Vedere anche

357 

358* [Skills](/it/skills) - Prompt personalizzati e flussi di lavoro

359* [Checkpointing](/it/checkpointing) - Riavvolgi le modifiche di Claude e ripristina gli stati precedenti

360* [Riferimento CLI](/it/cli-reference) - Flag e opzioni della riga di comando

361* [Impostazioni](/it/settings) - Opzioni di configurazione

362* [Gestione della memoria](/it/memory) - Gestione dei file CLAUDE.md

jetbrains.md +192 −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# JetBrains IDEs

6 

7> Usa Claude Code con JetBrains IDEs inclusi IntelliJ, PyCharm, WebStorm e altri

8 

9Claude Code si integra con JetBrains IDEs attraverso un plugin dedicato, fornendo funzionalità come la visualizzazione interattiva dei diff, la condivisione del contesto della selezione e altro ancora.

10 

11## IDE supportati

12 

13Il plugin Claude Code funziona con la maggior parte dei JetBrains IDEs, inclusi:

14 

15* IntelliJ IDEA

16* PyCharm

17* Android Studio

18* WebStorm

19* PhpStorm

20* GoLand

21 

22## Funzionalità

23 

24* **Avvio rapido**: Usa `Cmd+Esc` (Mac) o `Ctrl+Esc` (Windows/Linux) per aprire Claude Code direttamente dal tuo editor, oppure fai clic sul pulsante Claude Code nell'interfaccia utente

25* **Visualizzazione dei diff**: Le modifiche al codice possono essere visualizzate direttamente nel visualizzatore diff dell'IDE invece del terminale

26* **Contesto della selezione**: La selezione corrente o la scheda nell'IDE viene automaticamente condivisa con Claude Code

27* **Scorciatoie di riferimento file**: Usa `Cmd+Option+K` (Mac) o `Alt+Ctrl+K` (Linux/Windows) per inserire riferimenti ai file come `@src/auth.ts#L1-99`

28* **Condivisione diagnostica**: Gli errori diagnostici dall'IDE, come errori di lint e sintassi, vengono automaticamente condivisi con Claude mentre lavori

29 

30## Installazione

31 

32### Installazione da Marketplace

33 

34Trova e installa il [plugin Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) dal marketplace di JetBrains e riavvia il tuo IDE.

35 

36Se non hai ancora installato Claude Code, consulta la [guida di avvio rapido](/it/quickstart) per le istruzioni di installazione.

37 

38<Note>

39 Dopo aver installato il plugin, potrebbe essere necessario riavviare completamente il tuo IDE affinché abbia effetto.

40</Note>

41 

42## Utilizzo

43 

44### Dal tuo IDE

45 

46Esegui `claude` dal terminale integrato del tuo IDE e tutte le funzionalità di integrazione saranno attive.

47 

48### Da terminali esterni

49 

50Usa il comando `/ide` in qualsiasi terminale esterno per connettere Claude Code al tuo JetBrains IDE e attivare tutte le funzionalità:

51 

52```bash theme={null}

53claude

54```

55 

56```text theme={null}

57/ide

58```

59 

60Se desideri che Claude abbia accesso agli stessi file del tuo IDE, avvia Claude Code dalla stessa directory della radice del progetto del tuo IDE.

61 

62## Configurazione

63 

64### Impostazioni di Claude Code

65 

66Configura l'integrazione dell'IDE attraverso le impostazioni di Claude Code:

67 

681. Esegui `claude`

692. Inserisci il comando `/config`

703. Imposta lo strumento diff su `auto` per mostrare i diff nell'IDE, oppure `terminal` per mantenerli nel terminale

71 

72### Impostazioni del plugin

73 

74Configura il plugin Claude Code andando a **Impostazioni → Strumenti → Claude Code \[Beta]**:

75 

76#### Impostazioni generali

77 

78* **Comando Claude**: Specifica un comando personalizzato per eseguire Claude, ad esempio `claude`, `/usr/local/bin/claude`, o `npx @anthropic-ai/claude-code`

79* **Sopprimere la notifica per il comando Claude non trovato**: Salta le notifiche relative al mancato reperimento del comando Claude

80* **Abilita l'uso di Option+Invio per prompt multi-riga**: Solo su macOS. Quando abilitato, Option+Invio inserisce nuove righe nei prompt di Claude Code. Disabilita se il tasto Option viene catturato inaspettatamente. Richiede il riavvio del terminale.

81* **Abilita aggiornamenti automatici**: Controlla automaticamente e installa gli aggiornamenti del plugin, applicati al riavvio

82 

83<Tip>

84 Per gli utenti WSL: Imposta `wsl -d Ubuntu -- bash -lic "claude"` come comando Claude (sostituisci `Ubuntu` con il nome della tua distribuzione WSL)

85</Tip>

86 

87#### Configurazione del tasto ESC

88 

89Se il tasto ESC non interrompe le operazioni di Claude Code nei terminali JetBrains:

90 

911. Vai a **Impostazioni → Strumenti → Terminale**

922. Oppure:

93 * Deseleziona "Sposta il focus sull'editor con Escape", oppure

94 * Fai clic su "Configura scorciatoie da tastiera del terminale" e elimina la scorciatoia "Sposta il focus sull'editor"

953. Applica le modifiche

96 

97Questo consente al tasto ESC di interrompere correttamente le operazioni di Claude Code.

98 

99## Configurazioni speciali

100 

101### Sviluppo remoto

102 

103<Warning>

104 Quando usi JetBrains Remote Development, devi installare il plugin nell'host remoto tramite **Impostazioni → Plugin (Host)**.

105</Warning>

106 

107Il plugin deve essere installato sull'host remoto, non sulla tua macchina client locale.

108 

109### Configurazione WSL

110 

111Se stai usando Claude Code su WSL2 con un JetBrains IDE e vedi "No available IDEs detected", la causa è solitamente la rete NAT di WSL2 o il Windows Firewall che blocca la connessione tra WSL2 e l'IDE in esecuzione sull'host Windows. WSL1 utilizza direttamente la rete dell'host e non è interessato.

112 

113#### Consenti il traffico WSL2 attraverso Windows Firewall

114 

115Questa è la correzione consigliata perché mantiene la tua modalità di rete WSL2 esistente.

116 

117<Steps>

118 <Step title="Trova il tuo indirizzo IP WSL2">

119 Dalla tua shell WSL, esegui:

120 

121 ```bash theme={null}

122 hostname -I

123 ```

124 

125 Annota la subnet, ad esempio `172.21.123.45` è in `172.21.0.0/16`.

126 </Step>

127 

128 <Step title="Crea una regola firewall">

129 Apri PowerShell come Amministratore ed esegui quanto segue, regolando l'intervallo IP per corrispondere alla tua subnet:

130 

131 ```powershell theme={null}

132 New-NetFirewallRule -DisplayName "Allow WSL2 Internal Traffic" -Direction Inbound -Protocol TCP -Action Allow -RemoteAddress 172.21.0.0/16 -LocalAddress 172.21.0.0/16

133 ```

134 </Step>

135 

136 <Step title="Riavvia il tuo IDE e Claude Code">

137 Chiudi e riapri entrambi affinché la nuova regola abbia effetto.

138 </Step>

139</Steps>

140 

141#### Passa WSL2 alla rete con mirroring

142 

143La rete con mirroring richiede Windows 11 22H2 o successivo. Se sei su Windows 10, usa la regola firewall sopra indicata.

144 

145Aggiungi questo a `.wslconfig` nella tua directory utente Windows:

146 

147```ini theme={null}

148[wsl2]

149networkingMode=mirrored

150```

151 

152Quindi riavvia WSL con `wsl --shutdown` da PowerShell.

153 

154## Risoluzione dei problemi

155 

156### Plugin non funzionante

157 

158Se il plugin è installato ma le funzionalità di Claude Code non appaiono nel tuo IDE:

159 

160* Assicurati di eseguire Claude Code dalla directory radice del progetto

161* Verifica che il plugin JetBrains sia abilitato nelle impostazioni dell'IDE

162* Riavvia completamente l'IDE (potrebbe essere necessario farlo più volte)

163* Per Remote Development, assicurati che il plugin sia installato nell'host remoto

164 

165### IDE non rilevato

166 

167Se l'esecuzione di `claude` mostra "No available IDEs detected":

168 

169* Verifica che il plugin sia installato e abilitato

170* Riavvia completamente l'IDE

171* Verifica che tu stia eseguendo Claude Code dal terminale integrato

172* Per gli utenti WSL, consulta la [configurazione WSL](#wsl-configuration) sopra

173 

174### Comando non trovato

175 

176Se facendo clic sull'icona Claude viene visualizzato "command not found":

177 

1781. Verifica che Claude Code sia installato eseguendo `claude --version` in un terminale

1792. Configura il percorso del comando Claude nelle impostazioni del plugin

1803. Per gli utenti WSL, usa il formato del comando WSL menzionato nella sezione di configurazione

181 

182## Considerazioni sulla sicurezza

183 

184Quando Claude Code viene eseguito in un JetBrains IDE con le autorizzazioni di modifica automatica abilitate, potrebbe essere in grado di modificare i file di configurazione dell'IDE che possono essere eseguiti automaticamente dal tuo IDE. Questo potrebbe aumentare il rischio di eseguire Claude Code in modalità di modifica automatica e consentire di aggirare i prompt di autorizzazione di Claude Code per l'esecuzione bash.

185 

186Quando si esegue in JetBrains IDEs, considera:

187 

188* Utilizzare la modalità di approvazione manuale per le modifiche

189* Prestare particolare attenzione per assicurarsi che Claude sia utilizzato solo con prompt affidabili

190* Essere consapevole di quali file Claude Code ha accesso per modificare

191 

192Per problemi di installazione o accesso a Claude Code al di fuori dell'IDE, consulta [Risolvi i problemi di installazione e accesso](/it/troubleshoot-install).

keybindings.md +463 −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# Personalizzare le scorciatoie da tastiera

6 

7> Personalizzare le scorciatoie da tastiera in Claude Code con un file di configurazione keybindings.

8 

9<Note>

10 Le scorciatoie da tastiera personalizzabili richiedono Claude Code v2.1.18 o versioni successive. Controllare la versione con `claude --version`.

11</Note>

12 

13Claude Code supporta scorciatoie da tastiera personalizzabili. Eseguire `/keybindings` per creare o aprire il file di configurazione in `~/.claude/keybindings.json`.

14 

15## File di configurazione

16 

17Il file di configurazione delle scorciatoie da tastiera è un oggetto con un array `bindings`. Ogni blocco specifica un contesto e una mappa di sequenze di tasti per le azioni.

18 

19<Note>Le modifiche al file keybindings vengono rilevate automaticamente e applicate senza riavviare Claude Code.</Note>

20 

21| Campo | Descrizione |

22| :--------- | :------------------------------------------------------------------ |

23| `$schema` | URL dello schema JSON opzionale per l'autocompletamento dell'editor |

24| `$docs` | URL della documentazione opzionale |

25| `bindings` | Array di blocchi di binding per contesto |

26 

27Questo esempio associa `Ctrl+E` per aprire un editor esterno nel contesto della chat e annulla l'associazione di `Ctrl+U`:

28 

29```json theme={null}

30{

31 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

32 "$docs": "https://code.claude.com/docs/it/keybindings",

33 "bindings": [

34 {

35 "context": "Chat",

36 "bindings": {

37 "ctrl+e": "chat:externalEditor",

38 "ctrl+u": null

39 }

40 }

41 ]

42}

43```

44 

45## Contesti

46 

47Ogni blocco di binding specifica un **contesto** dove si applicano i binding:

48 

49| Contesto | Descrizione |

50| :---------------- | :--------------------------------------------------------------------------------- |

51| `Global` | Si applica ovunque nell'app |

52| `Chat` | Area di input della chat principale |

53| `Autocomplete` | Menu di autocompletamento è aperto |

54| `Settings` | Menu delle impostazioni |

55| `Confirmation` | Dialoghi di permesso e conferma |

56| `Tabs` | Componenti di navigazione delle schede |

57| `Help` | Menu della guida è visibile |

58| `Transcript` | Visualizzatore di trascrizione |

59| `HistorySearch` | Modalità di ricerca nella cronologia (Ctrl+R) |

60| `Task` | Attività in background in esecuzione |

61| `ThemePicker` | Dialogo di selezione del tema |

62| `Attachments` | Navigazione degli allegati nei dialoghi di selezione |

63| `Footer` | Navigazione dell'indicatore di piè di pagina (attività, team, diff) |

64| `MessageSelector` | Selezione dei messaggi nella finestra di dialogo di riavvolgimento e riepilogo |

65| `DiffDialog` | Navigazione del visualizzatore diff |

66| `ModelPicker` | Livello di sforzo del selezionatore di modelli |

67| `Select` | Componenti generici di selezione/elenco |

68| `Plugin` | Dialogo dei plugin (sfoglia, scopri, gestisci) |

69| `Scroll` | Scorrimento della conversazione e selezione del testo in modalità a schermo intero |

70| `Doctor` | Schermata diagnostica `/doctor` |

71 

72## Azioni disponibili

73 

74Le azioni seguono un formato `namespace:action`, come `chat:submit` per inviare un messaggio o `app:toggleTodos` per mostrare l'elenco delle attività. Ogni contesto ha azioni specifiche disponibili.

75 

76### Azioni dell'app

77 

78Azioni disponibili nel contesto `Global`:

79 

80| Azione | Predefinito | Descrizione |

81| :--------------------- | :-------------- | :-------------------------------------------------------- |

82| `app:interrupt` | Ctrl+C | Annulla l'operazione corrente |

83| `app:exit` | Ctrl+D | Esci da Claude Code |

84| `app:redraw` | (non associato) | Forza il ridisegno del terminale |

85| `app:toggleTodos` | Ctrl+T | Attiva/disattiva la visibilità dell'elenco delle attività |

86| `app:toggleTranscript` | Ctrl+O | Attiva/disattiva la trascrizione dettagliata |

87 

88### Azioni della cronologia

89 

90Azioni per navigare nella cronologia dei comandi:

91 

92| Azione | Predefinito | Descrizione |

93| :----------------- | :---------- | :----------------------------------- |

94| `history:search` | Ctrl+R | Apri ricerca nella cronologia |

95| `history:previous` | Su | Elemento della cronologia precedente |

96| `history:next` | Giù | Elemento della cronologia successivo |

97 

98### Azioni della chat

99 

100Azioni disponibili nel contesto `Chat`:

101 

102| Azione | Predefinito | Descrizione |

103| :-------------------- | :------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

104| `chat:cancel` | Escape | Annulla l'input corrente |

105| `chat:clearInput` | Ctrl+L | Forza un ridisegno a schermo intero, preservando l'input. Nel [rendering a schermo intero](/it/fullscreen#clear-the-conversation), premi due volte entro due secondi per eseguire `/clear` |

106| `chat:clearScreen` | Cmd+K | Nel [rendering a schermo intero](/it/fullscreen#clear-the-conversation), premi due volte entro due secondi per eseguire `/clear` |

107| `chat:killAgents` | Ctrl+X Ctrl+K | Termina tutti gli agenti in background |

108| `chat:cycleMode` | Shift+Tab\* | Cicla le modalità di permesso |

109| `chat:modelPicker` | Meta+P | Apri il selezionatore di modelli |

110| `chat:fastMode` | Meta+O | Attiva/disattiva la modalità veloce |

111| `chat:thinkingToggle` | Meta+T | Attiva/disattiva il pensiero esteso |

112| `chat:submit` | Invio | Invia il messaggio |

113| `chat:newline` | Ctrl+J | Inserisci una nuova riga senza inviare |

114| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Annulla l'ultima azione |

115| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Apri nell'editor esterno |

116| `chat:stash` | Ctrl+S | Nascondi il prompt corrente |

117| `chat:imagePaste` | Ctrl+V (Alt+V su Windows) | Incolla immagine |

118 

119\*Su Windows senza modalità VT (Node \<24.2.0/\<22.17.0, Bun \<1.2.23), il valore predefinito è Meta+M.

120 

121### Azioni di autocompletamento

122 

123Azioni disponibili nel contesto `Autocomplete`:

124 

125| Azione | Predefinito | Descrizione |

126| :---------------------- | :---------- | :---------------------- |

127| `autocomplete:accept` | Tab | Accetta il suggerimento |

128| `autocomplete:dismiss` | Escape | Chiudi il menu |

129| `autocomplete:previous` | Su | Suggerimento precedente |

130| `autocomplete:next` | Giù | Suggerimento successivo |

131 

132### Azioni di conferma

133 

134Azioni disponibili nel contesto `Confirmation`:

135 

136| Azione | Predefinito | Descrizione |

137| :-------------------------- | :-------------- | :------------------------------------------- |

138| `confirm:yes` | Y, Invio | Conferma l'azione |

139| `confirm:no` | N, Escape | Rifiuta l'azione |

140| `confirm:previous` | Su | Opzione precedente |

141| `confirm:next` | Giù | Opzione successiva |

142| `confirm:nextField` | Tab | Campo successivo |

143| `confirm:previousField` | (non associato) | Campo precedente |

144| `confirm:toggle` | Spazio | Attiva/disattiva la selezione |

145| `confirm:cycleMode` | Shift+Tab | Cicla le modalità di permesso |

146| `confirm:toggleExplanation` | Ctrl+E | Attiva/disattiva la spiegazione del permesso |

147 

148### Azioni di permesso

149 

150Azioni disponibili nel contesto `Confirmation` per i dialoghi di permesso:

151 

152| Azione | Predefinito | Descrizione |

153| :----------------------- | :---------- | :----------------------------------------------------- |

154| `permission:toggleDebug` | Ctrl+D | Attiva/disattiva le informazioni di debug del permesso |

155 

156### Azioni di trascrizione

157 

158Azioni disponibili nel contesto `Transcript`:

159 

160| Azione | Predefinito | Descrizione |

161| :------------------------- | :---------------- | :-------------------------------------------------------- |

162| `transcript:toggleShowAll` | Ctrl+E | Attiva/disattiva la visualizzazione di tutto il contenuto |

163| `transcript:exit` | q, Ctrl+C, Escape | Esci dalla visualizzazione della trascrizione |

164 

165### Azioni di ricerca nella cronologia

166 

167Azioni disponibili nel contesto `HistorySearch`:

168 

169| Azione | Predefinito | Descrizione |

170| :------------------------- | :---------- | :------------------------------------------ |

171| `historySearch:next` | Ctrl+R | Corrispondenza successiva |

172| `historySearch:accept` | Escape, Tab | Accetta la selezione |

173| `historySearch:cancel` | Ctrl+C | Annulla la ricerca |

174| `historySearch:execute` | Invio | Esegui il comando selezionato |

175| `historySearch:cycleScope` | Ctrl+S | Cicla l'ambito: sessione, progetto, ovunque |

176 

177### Azioni delle attività

178 

179Azioni disponibili nel contesto `Task`:

180 

181| Azione | Predefinito | Descrizione |

182| :---------------- | :---------- | :------------------------------ |

183| `task:background` | Ctrl+B | Attività in background corrente |

184 

185### Azioni del tema

186 

187Azioni disponibili nel contesto `ThemePicker`:

188 

189| Azione | Predefinito | Descrizione |

190| :------------------------------- | :---------- | :----------------------------------------------- |

191| `theme:toggleSyntaxHighlighting` | Ctrl+T | Attiva/disattiva l'evidenziazione della sintassi |

192 

193### Azioni della guida

194 

195Azioni disponibili nel contesto `Help`:

196 

197| Azione | Predefinito | Descrizione |

198| :------------- | :---------- | :------------------------- |

199| `help:dismiss` | Escape | Chiudi il menu della guida |

200 

201### Azioni delle schede

202 

203Azioni disponibili nel contesto `Tabs`:

204 

205| Azione | Predefinito | Descrizione |

206| :-------------- | :------------------ | :---------------- |

207| `tabs:next` | Tab, Destra | Scheda successiva |

208| `tabs:previous` | Shift+Tab, Sinistra | Scheda precedente |

209 

210### Azioni degli allegati

211 

212Azioni disponibili nel contesto `Attachments`:

213 

214| Azione | Predefinito | Descrizione |

215| :--------------------- | :-------------- | :------------------------------------ |

216| `attachments:next` | Destra | Allegato successivo |

217| `attachments:previous` | Sinistra | Allegato precedente |

218| `attachments:remove` | Backspace, Canc | Rimuovi l'allegato selezionato |

219| `attachments:exit` | Giù, Escape | Esci dalla navigazione degli allegati |

220 

221### Azioni del piè di pagina

222 

223Azioni disponibili nel contesto `Footer`:

224 

225| Azione | Predefinito | Descrizione |

226| :---------------------- | :---------- | :---------------------------------------------------------- |

227| `footer:next` | Destra | Elemento del piè di pagina successivo |

228| `footer:previous` | Sinistra | Elemento del piè di pagina precedente |

229| `footer:up` | Su | Naviga verso l'alto nel piè di pagina (deseleziona in alto) |

230| `footer:down` | Giù | Naviga verso il basso nel piè di pagina |

231| `footer:openSelected` | Invio | Apri l'elemento del piè di pagina selezionato |

232| `footer:clearSelection` | Escape | Cancella la selezione del piè di pagina |

233 

234### Azioni del selezionatore di messaggi

235 

236Azioni disponibili nel contesto `MessageSelector`:

237 

238| Azione | Predefinito | Descrizione |

239| :----------------------- | :------------------------------------- | :-------------------------------- |

240| `messageSelector:up` | Su, K, Ctrl+P | Sposta verso l'alto nell'elenco |

241| `messageSelector:down` | Giù, J, Ctrl+N | Sposta verso il basso nell'elenco |

242| `messageSelector:top` | Ctrl+Su, Shift+Su, Meta+Su, Shift+K | Salta all'inizio |

243| `messageSelector:bottom` | Ctrl+Giù, Shift+Giù, Meta+Giù, Shift+J | Salta alla fine |

244| `messageSelector:select` | Invio | Seleziona il messaggio |

245 

246### Azioni diff

247 

248Azioni disponibili nel contesto `DiffDialog`:

249 

250| Azione | Predefinito | Descrizione |

251| :-------------------- | :----------------------- | :------------------------------------- |

252| `diff:dismiss` | Escape | Chiudi il visualizzatore diff |

253| `diff:previousSource` | Sinistra | Sorgente diff precedente |

254| `diff:nextSource` | Destra | Sorgente diff successiva |

255| `diff:previousFile` | Su | File precedente nel diff |

256| `diff:nextFile` | Giù | File successivo nel diff |

257| `diff:viewDetails` | Invio | Visualizza i dettagli del diff |

258| `diff:back` | (specifico del contesto) | Torna indietro nel visualizzatore diff |

259 

260### Azioni del selezionatore di modelli

261 

262Azioni disponibili nel contesto `ModelPicker`:

263 

264| Azione | Predefinito | Descrizione |

265| :--------------------------- | :---------- | :------------------------------ |

266| `modelPicker:decreaseEffort` | Sinistra | Diminuisci il livello di sforzo |

267| `modelPicker:increaseEffort` | Destra | Aumenta il livello di sforzo |

268 

269### Azioni di selezione

270 

271Azioni disponibili nel contesto `Select`:

272 

273| Azione | Predefinito | Descrizione |

274| :---------------- | :------------- | :------------------- |

275| `select:next` | Giù, J, Ctrl+N | Opzione successiva |

276| `select:previous` | Su, K, Ctrl+P | Opzione precedente |

277| `select:accept` | Invio | Accetta la selezione |

278| `select:cancel` | Escape | Annulla la selezione |

279 

280### Azioni dei plugin

281 

282Azioni disponibili nel contesto `Plugin`:

283 

284| Azione | Predefinito | Descrizione |

285| :---------------- | :---------- | :-------------------------------------------------------------------------------------------------------------------- |

286| `plugin:toggle` | Spazio | Attiva/disattiva la selezione del plugin |

287| `plugin:install` | I | Installa i plugin selezionati |

288| `plugin:favorite` | F | Aggiungi ai preferiti il plugin selezionato in modo che si ordini vicino alla parte superiore della scheda Installati |

289 

290### Azioni delle impostazioni

291 

292Azioni disponibili nel contesto `Settings`:

293 

294| Azione | Predefinito | Descrizione |

295| :---------------- | :---------- | :--------------------------------------------------------------------------------------------- |

296| `settings:search` | / | Entra in modalità di ricerca |

297| `settings:retry` | R | Riprova a caricare i dati di utilizzo (in caso di errore) |

298| `settings:close` | Invio | Salva le modifiche e chiudi il pannello di configurazione. Escape scarta le modifiche e chiude |

299 

300### Azioni del Doctor

301 

302Azioni disponibili nel contesto `Doctor`:

303 

304| Azione | Predefinito | Descrizione |

305| :----------- | :---------- | :---------------------------------------------------------------------------------------------------------------------- |

306| `doctor:fix` | F | Invia il rapporto diagnostico a Claude per correggere i problemi segnalati. Attivo solo quando vengono trovati problemi |

307 

308### Azioni vocali

309 

310Azioni disponibili nel contesto `Chat` quando la [dettatura vocale](/it/voice-dictation) è abilitata:

311 

312| Azione | Predefinito | Descrizione |

313| :----------------- | :---------- | :------------------------------------------------------ |

314| `voice:pushToTalk` | Spazio | Tieni premuto o tocca a seconda della modalità `/voice` |

315 

316### Azioni di scorrimento

317 

318Azioni disponibili nel contesto `Scroll` quando il [rendering a schermo intero](/it/fullscreen) è abilitato:

319 

320| Azione | Predefinito | Descrizione |

321| :-------------------------- | :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |

322| `scroll:lineUp` | (non associato) | Scorri verso l'alto di una riga. Lo scorrimento con la rotella del mouse attiva questa azione |

323| `scroll:lineDown` | (non associato) | Scorri verso il basso di una riga. Lo scorrimento con la rotella del mouse attiva questa azione |

324| `scroll:pageUp` | PagSu | Scorri verso l'alto della metà dell'altezza del viewport |

325| `scroll:pageDown` | PagGiù | Scorri verso il basso della metà dell'altezza del viewport |

326| `scroll:top` | Ctrl+Home | Salta all'inizio della conversazione |

327| `scroll:bottom` | Ctrl+Fine | Salta al messaggio più recente e riabilita il follow automatico |

328| `scroll:halfPageUp` | (non associato) | Scorri verso l'alto della metà dell'altezza del viewport. Stesso comportamento di `scroll:pageUp`, fornito per i rebind in stile vi |

329| `scroll:halfPageDown` | (non associato) | Scorri verso il basso della metà dell'altezza del viewport. Stesso comportamento di `scroll:pageDown`, fornito per i rebind in stile vi |

330| `scroll:fullPageUp` | (non associato) | Scorri verso l'alto dell'intera altezza del viewport |

331| `scroll:fullPageDown` | (non associato) | Scorri verso il basso dell'intera altezza del viewport |

332| `selection:copy` | Ctrl+Shift+C / Cmd+C | Copia il testo selezionato negli appunti |

333| `selection:clear` | (non associato) | Cancella la selezione di testo attiva |

334| `selection:extendLeft` | Shift+Sinistra | Estendi la selezione attiva di una colonna a sinistra |

335| `selection:extendRight` | Shift+Destra | Estendi la selezione attiva di una colonna a destra |

336| `selection:extendUp` | Shift+Su | Estendi la selezione attiva di una riga verso l'alto. Scorri il viewport quando la selezione raggiunge il bordo superiore |

337| `selection:extendDown` | Shift+Giù | Estendi la selezione attiva di una riga verso il basso. Scorri il viewport quando la selezione raggiunge il bordo inferiore |

338| `selection:extendLineStart` | Shift+Home | Estendi la selezione attiva all'inizio della riga |

339| `selection:extendLineEnd` | Shift+Fine | Estendi la selezione attiva alla fine della riga |

340 

341## Sintassi delle sequenze di tasti

342 

343### Modificatori

344 

345Utilizzare i tasti modificatori con il separatore `+`:

346 

347* `ctrl` o `control` - Tasto Control

348* `shift` - Tasto Shift

349* `alt`, `opt`, `option`, o `meta` - Tasto Alt su Windows e Linux, tasto Option su macOS

350* `cmd`, `command`, `super`, o `win` - Tasto Command su macOS, tasto Windows su Windows, tasto Super su Linux

351 

352Il gruppo `cmd` viene rilevato solo nei terminali che segnalano il modificatore Super, come quelli che supportano il protocollo della tastiera Kitty o la modalità `modifyOtherKeys` di xterm. La maggior parte dei terminali non lo invia, quindi utilizzare `ctrl` o `meta` per i binding che si desidera funzionino ovunque.

353 

354Ad esempio:

355 

356```text theme={null}

357ctrl+k Ctrl + K

358shift+tab Shift + Tab

359meta+p Option + P su macOS, Alt + P altrove

360ctrl+shift+c Più modificatori

361```

362 

363### Lettere maiuscole

364 

365Una lettera maiuscola autonoma implica Shift. Ad esempio, `K` è equivalente a `shift+k`. Questo è utile per i binding in stile vim dove i tasti maiuscoli e minuscoli hanno significati diversi.

366 

367Le lettere maiuscole con modificatori (ad es. `ctrl+K`) sono trattate come stilistiche e **non** implicano Shift: `ctrl+K` è lo stesso di `ctrl+k`.

368 

369### Accordi

370 

371Gli accordi sono sequenze di tasti separate da spazi:

372 

373```text theme={null}

374ctrl+k ctrl+s Premi Ctrl+K, rilascia, quindi Ctrl+S

375```

376 

377### Tasti speciali

378 

379* `escape` o `esc` - Tasto Escape

380* `enter` o `return` - Tasto Invio

381* `tab` - Tasto Tab

382* `space` - Barra spaziatrice

383* `up`, `down`, `left`, `right` - Tasti freccia

384* `backspace`, `delete` - Tasti Canc

385 

386## Annulla l'associazione delle scorciatoie predefinite

387 

388Impostare un'azione su `null` per annullare l'associazione di una scorciatoia predefinita:

389 

390```json theme={null}

391{

392 "bindings": [

393 {

394 "context": "Chat",

395 "bindings": {

396 "ctrl+s": null

397 }

398 }

399 ]

400}

401```

402 

403Questo funziona anche per i binding degli accordi. Annullare l'associazione di ogni accordo che condivide un prefisso libera quel prefisso per l'uso come binding a tasto singolo:

404 

405```json theme={null}

406{

407 "bindings": [

408 {

409 "context": "Chat",

410 "bindings": {

411 "ctrl+x ctrl+k": null,

412 "ctrl+x ctrl+e": null,

413 "ctrl+x": "chat:newline"

414 }

415 }

416 ]

417}

418```

419 

420Se annulli l'associazione di alcuni ma non di tutti gli accordi su un prefisso, premere il prefisso entra comunque in modalità di attesa degli accordi per i binding rimanenti.

421 

422## Scorciatoie riservate

423 

424Queste scorciatoie non possono essere riassociate:

425 

426| Scorciatoia | Motivo |

427| :---------- | :--------------------------------------------------- |

428| Ctrl+C | Interrupt/annullamento hardcoded |

429| Ctrl+D | Uscita hardcoded |

430| Ctrl+M | Identico a Invio nei terminali (entrambi inviano CR) |

431| Caps Lock | Non consegnato alle applicazioni terminali |

432 

433## Conflitti del terminale

434 

435Alcune scorciatoie potrebbero entrare in conflitto con i multiplexer di terminale:

436 

437| Scorciatoia | Conflitto |

438| :---------- | :-------------------------------------------- |

439| Ctrl+B | Prefisso tmux (premere due volte per inviare) |

440| Ctrl+A | Prefisso GNU screen |

441| Ctrl+Z | Sospensione del processo Unix (SIGTSTP) |

442 

443## Interazione con la modalità Vim

444 

445Quando la modalità vim è abilitata tramite `/config` → Editor mode, i keybindings e la modalità vim operano indipendentemente:

446 

447* **Modalità Vim** gestisce l'input a livello di input di testo (movimento del cursore, modalità, movimenti)

448* **Keybindings** gestisce le azioni a livello di componente (attiva/disattiva attività, invia, ecc.)

449* Il tasto Escape in modalità vim passa da INSERT a NORMAL; non attiva `chat:cancel`

450* La maggior parte delle scorciatoie Ctrl+tasto passano attraverso la modalità vim al sistema di keybinding

451* In modalità vim NORMAL, `?` mostra il menu della guida (comportamento vim)

452 

453## Convalida

454 

455Claude Code convalida i tuoi keybindings e mostra avvisi per:

456 

457* Errori di analisi (JSON non valido o struttura non valida)

458* Nomi di contesto non validi

459* Conflitti di scorciatoie riservate

460* Conflitti di multiplexer di terminale

461* Binding duplicati nello stesso contesto

462 

463Eseguire `/doctor` per visualizzare eventuali avvisi di keybinding.

llm-gateway.md +196 −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# Configurazione del gateway LLM

6 

7> Scopri come configurare Claude Code per funzionare con soluzioni di gateway LLM. Copre i requisiti del gateway, la configurazione dell'autenticazione, la selezione del modello e la configurazione degli endpoint specifici del provider.

8 

9I gateway LLM forniscono un livello proxy centralizzato tra Claude Code e i provider di modelli, spesso fornendo:

10 

11* **Autenticazione centralizzata** - Punto singolo per la gestione delle chiavi API

12* **Tracciamento dell'utilizzo** - Monitora l'utilizzo tra team e progetti

13* **Controlli dei costi** - Implementa budget e limiti di velocità

14* **Registrazione di audit** - Traccia tutte le interazioni del modello per la conformità

15* **Instradamento dei modelli** - Passa da un provider all'altro senza modifiche al codice

16 

17## Requisiti del gateway

18 

19Affinché un gateway LLM funzioni con Claude Code, deve soddisfare i seguenti requisiti:

20 

21**Formato API**

22 

23Il gateway deve esporre ai client almeno uno dei seguenti formati API:

24 

251. **Anthropic Messages**: `/v1/messages`, `/v1/messages/count_tokens`

26 * Deve inoltrare le intestazioni della richiesta: `anthropic-beta`, `anthropic-version`

27 

282. **Bedrock InvokeModel**: `/invoke`, `/invoke-with-response-stream`

29 * Deve preservare i campi del corpo della richiesta: `anthropic_beta`, `anthropic_version`

30 

313. **Vertex rawPredict**: `:rawPredict`, `:streamRawPredict`, `/count-tokens:rawPredict`

32 * Deve inoltrare le intestazioni della richiesta: `anthropic-beta`, `anthropic-version`

33 

34Il mancato inoltro delle intestazioni o la mancata preservazione dei campi del corpo potrebbe causare una riduzione della funzionalità o l'impossibilità di utilizzare le funzionalità di Claude Code.

35 

36<Note>

37 Claude Code determina quali funzionalità abilitare in base al formato API. Quando si utilizza il formato Anthropic Messages con Bedrock o Vertex, potrebbe essere necessario impostare la variabile di ambiente `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`.

38</Note>

39 

40**Intestazioni della richiesta**

41 

42Claude Code include le seguenti intestazioni su ogni richiesta API:

43 

44| Intestazione | Descrizione |

45| :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

46| `X-Claude-Code-Session-Id` | Un identificatore univoco per la sessione Claude Code corrente. I proxy possono utilizzarlo per aggregare tutte le richieste API da una singola sessione senza analizzare il corpo della richiesta. |

47 

48Claude Code inoltre antepone un breve blocco di attribuzione al prompt di sistema contenente la versione del client e un'impronta digitale derivata dalla conversazione. L'API Anthropic rimuove questo blocco prima dell'elaborazione, quindi non influisce sulla memorizzazione nella cache del prompt di prima parte. Se il tuo gateway implementa la propria cache del prompt con chiave sul corpo della richiesta completo, imposta [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/it/env-vars) per ometterlo.

49 

50## Configurazione

51 

52### Selezione del modello

53 

54Per impostazione predefinita, Claude Code utilizza nomi di modelli standard per il formato API selezionato.

55 

56Quando `ANTHROPIC_BASE_URL` punta a un gateway che espone il formato Anthropic Messages, Claude Code interroga l'endpoint `/v1/models` del gateway all'avvio e aggiunge i modelli restituiti al selettore `/model`. Ogni voce scoperta è etichettata "From gateway" e utilizza il campo `display_name` dalla risposta quando fornito. Ciò richiede Claude Code v2.1.126 o successivo.

57 

58La scoperta si applica solo al formato Anthropic Messages. Non viene eseguita per gli endpoint pass-through Bedrock o Vertex e non viene eseguita quando `ANTHROPIC_BASE_URL` non è impostato o punta a `api.anthropic.com`.

59 

60La richiesta di scoperta si autentica nello stesso modo delle richieste di inferenza: invia `ANTHROPIC_AUTH_TOKEN` come token bearer, o `ANTHROPIC_API_KEY` come intestazione `x-api-key` quando nessun token di autenticazione è impostato, insieme a qualsiasi intestazione da `ANTHROPIC_CUSTOM_HEADERS`. Solo i modelli il cui ID inizia con `claude` o `anthropic` vengono aggiunti al selettore. I risultati vengono memorizzati nella cache in `~/.claude/cache/gateway-models.json` e aggiornati a ogni avvio. Se la richiesta non riesce o il gateway non implementa `/v1/models`, il selettore ritorna all'elenco memorizzato nella cache dall'avvio precedente o all'elenco di modelli integrato.

61 

62Se il tuo gateway utilizza nomi di modelli che non corrispondono al filtro di scoperta, utilizza le variabili di ambiente documentate in [Configurazione del modello](/it/model-config) per aggiungerli manualmente.

63 

64## Configurazione di LiteLLM

65 

66<Warning>

67 Le versioni PyPI di LiteLLM 1.82.7 e 1.82.8 sono state compromesse con malware che ruba credenziali. Non installare queste versioni. Se le hai già installate:

68 

69 * Rimuovi il pacchetto

70 * Ruota tutte le credenziali sui sistemi interessati

71 * Segui i passaggi di correzione in [BerriAI/litellm#24518](https://github.com/BerriAI/litellm/issues/24518)

72 

73 LiteLLM è un servizio proxy di terze parti. Anthropic non approva, mantiene o controlla la sicurezza o la funzionalità di LiteLLM. Questa guida è fornita a scopo informativo e potrebbe diventare obsoleta. Utilizzala a tua discrezione.

74</Warning>

75 

76### Prerequisiti

77 

78* Claude Code aggiornato all'ultima versione

79* LiteLLM Proxy Server distribuito e accessibile

80* Accesso ai modelli Claude attraverso il provider scelto

81 

82### Configurazione di base di LiteLLM

83 

84**Configura Claude Code**:

85 

86#### Metodi di autenticazione

87 

88##### Chiave API statica

89 

90Metodo più semplice utilizzando una chiave API fissa:

91 

92```bash theme={null}

93# Imposta nell'ambiente

94export ANTHROPIC_AUTH_TOKEN=sk-litellm-static-key

95 

96# O nelle impostazioni di Claude Code

97{

98 "env": {

99 "ANTHROPIC_AUTH_TOKEN": "sk-litellm-static-key"

100 }

101}

102```

103 

104Questo valore verrà inviato come intestazione `Authorization`.

105 

106##### Chiave API dinamica con helper

107 

108Per chiavi rotanti o autenticazione per utente:

109 

1101. Crea uno script helper per la chiave API:

111 

112```bash theme={null}

113#!/bin/bash

114# ~/bin/get-litellm-key.sh

115 

116# Esempio: Recupera la chiave dal vault

117vault kv get -field=api_key secret/litellm/claude-code

118 

119# Esempio: Genera token JWT

120jwt encode \

121 --secret="${JWT_SECRET}" \

122 --exp="+1h" \

123 '{"user":"'${USER}'","team":"engineering"}'

124```

125 

1262. Configura le impostazioni di Claude Code per utilizzare l'helper:

127 

128```json theme={null}

129{

130 "apiKeyHelper": "~/bin/get-litellm-key.sh"

131}

132```

133 

1343. Imposta l'intervallo di aggiornamento del token:

135 

136```bash theme={null}

137# Aggiorna ogni ora (3600000 ms)

138export CLAUDE_CODE_API_KEY_HELPER_TTL_MS=3600000

139```

140 

141Questo valore verrà inviato come intestazioni `Authorization` e `X-Api-Key`. L'`apiKeyHelper` ha una precedenza inferiore rispetto a `ANTHROPIC_AUTH_TOKEN` o `ANTHROPIC_API_KEY`.

142 

143#### Endpoint unificato (consigliato)

144 

145Utilizzando l'[endpoint in formato Anthropic](https://docs.litellm.ai/docs/anthropic_unified) di LiteLLM:

146 

147```bash theme={null}

148export ANTHROPIC_BASE_URL=https://litellm-server:4000

149```

150 

151**Vantaggi dell'endpoint unificato rispetto agli endpoint pass-through:**

152 

153* Bilanciamento del carico

154* Fallback

155* Supporto coerente per il tracciamento dei costi e il tracciamento dell'utente finale

156 

157#### Endpoint pass-through specifici del provider (alternativa)

158 

159##### Claude API attraverso LiteLLM

160 

161Utilizzando l'[endpoint pass-through](https://docs.litellm.ai/docs/pass_through/anthropic_completion):

162 

163```bash theme={null}

164export ANTHROPIC_BASE_URL=https://litellm-server:4000/anthropic

165```

166 

167##### Amazon Bedrock attraverso LiteLLM

168 

169Utilizzando l'[endpoint pass-through](https://docs.litellm.ai/docs/pass_through/bedrock):

170 

171```bash theme={null}

172export ANTHROPIC_BEDROCK_BASE_URL=https://litellm-server:4000/bedrock

173export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1

174export CLAUDE_CODE_USE_BEDROCK=1

175```

176 

177##### Google Vertex AI attraverso LiteLLM

178 

179Utilizzando l'[endpoint pass-through](https://docs.litellm.ai/docs/pass_through/vertex_ai):

180 

181```bash theme={null}

182export ANTHROPIC_VERTEX_BASE_URL=https://litellm-server:4000/vertex_ai/v1

183export ANTHROPIC_VERTEX_PROJECT_ID=your-gcp-project-id

184export CLAUDE_CODE_SKIP_VERTEX_AUTH=1

185export CLAUDE_CODE_USE_VERTEX=1

186export CLOUD_ML_REGION=us-east5

187```

188 

189Per informazioni più dettagliate, consulta la [documentazione di LiteLLM](https://docs.litellm.ai/).

190 

191## Risorse aggiuntive

192 

193* [Documentazione di LiteLLM](https://docs.litellm.ai/)

194* [Impostazioni di Claude Code](/it/settings)

195* [Configurazione della rete aziendale](/it/network-config)

196* [Panoramica delle integrazioni di terze parti](/it/third-party-integrations)

mcp.md +1451 −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# Connetti Claude Code ai tuoi strumenti tramite MCP

6 

7> Scopri come connettere Claude Code ai tuoi strumenti con il Model Context Protocol.

8 

9export const MCPServersTable = ({platform = "all"}) => {

10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';

11 const [servers, setServers] = useState([]);

12 const [loading, setLoading] = useState(true);

13 const [error, setError] = useState(null);

14 useEffect(() => {

15 const fetchServers = async () => {

16 try {

17 setLoading(true);

18 const allServers = [];

19 let cursor = null;

20 do {

21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');

22 url.searchParams.set('version', 'latest');

23 url.searchParams.set('visibility', 'commercial');

24 url.searchParams.set('limit', '100');

25 if (cursor) {

26 url.searchParams.set('cursor', cursor);

27 }

28 const response = await fetch(url);

29 if (!response.ok) {

30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);

31 }

32 const data = await response.json();

33 allServers.push(...data.servers);

34 cursor = data.metadata?.nextCursor || null;

35 } while (cursor);

36 const transformedServers = allServers.map(item => {

37 const server = item.server;

38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});

39 const worksWith = meta.worksWith || [];

40 const availability = {

41 claudeCode: worksWith.includes('claude-code'),

42 mcpConnector: worksWith.includes('claude-api'),

43 claudeDesktop: worksWith.includes('claude-desktop')

44 };

45 const remotes = server.remotes || [];

46 const httpRemote = remotes.find(r => r.type === 'streamable-http');

47 const sseRemote = remotes.find(r => r.type === 'sse');

48 const preferredRemote = httpRemote || sseRemote;

49 const remoteUrl = preferredRemote?.url || meta.url;

50 const remoteType = preferredRemote?.type;

51 const isTemplatedUrl = remoteUrl?.includes('{');

52 let setupUrl;

53 if (isTemplatedUrl && meta.requiredFields) {

54 const urlField = meta.requiredFields.find(f => f.field === 'url');

55 setupUrl = urlField?.sourceUrl || meta.documentation;

56 }

57 const urls = {};

58 if (!isTemplatedUrl) {

59 if (remoteType === 'streamable-http') {

60 urls.http = remoteUrl;

61 } else if (remoteType === 'sse') {

62 urls.sse = remoteUrl;

63 }

64 }

65 let envVars = [];

66 if (server.packages && server.packages.length > 0) {

67 const npmPackage = server.packages.find(p => p.registryType === 'npm');

68 if (npmPackage) {

69 urls.stdio = `npx -y ${npmPackage.identifier}`;

70 if (npmPackage.environmentVariables) {

71 envVars = npmPackage.environmentVariables;

72 }

73 }

74 }

75 return {

76 name: meta.displayName || server.title || server.name,

77 description: meta.oneLiner || server.description,

78 documentation: meta.documentation,

79 urls: urls,

80 envVars: envVars,

81 availability: availability,

82 customCommands: meta.claudeCodeCopyText ? {

83 claudeCode: meta.claudeCodeCopyText

84 } : undefined,

85 setupUrl: setupUrl

86 };

87 });

88 setServers(transformedServers);

89 setError(null);

90 } catch (err) {

91 setError(err.message);

92 console.error('Error fetching MCP registry:', err);

93 } finally {

94 setLoading(false);

95 }

96 };

97 fetchServers();

98 }, []);

99 const generateClaudeCodeCommand = server => {

100 if (server.customCommands && server.customCommands.claudeCode) {

101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');

102 }

103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');

104 if (server.urls.http) {

105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;

106 }

107 if (server.urls.sse) {

108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;

109 }

110 if (server.urls.stdio) {

111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';

112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;

113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;

114 }

115 return null;

116 };

117 if (loading) {

118 return <div>Loading MCP servers...</div>;

119 }

120 if (error) {

121 return <div>Error loading MCP servers: {error}</div>;

122 }

123 const filteredServers = servers.filter(server => {

124 if (platform === "claudeCode") {

125 return server.availability.claudeCode;

126 } else if (platform === "mcpConnector") {

127 return server.availability.mcpConnector;

128 } else if (platform === "claudeDesktop") {

129 return server.availability.claudeDesktop;

130 } else if (platform === "all") {

131 return true;

132 } else {

133 throw new Error(`Unknown platform: ${platform}`);

134 }

135 });

136 return <>

137 <style jsx>{`

138 .cards-container {

139 display: grid;

140 gap: 1rem;

141 margin-bottom: 2rem;

142 }

143 .server-card {

144 border: 1px solid var(--border-color, #e5e7eb);

145 border-radius: 6px;

146 padding: 1rem;

147 }

148 .command-row {

149 display: flex;

150 align-items: center;

151 gap: 0.25rem;

152 }

153 .command-row code {

154 font-size: 0.75rem;

155 overflow-x: auto;

156 }

157 `}</style>

158 

159 <div className="cards-container">

160 {filteredServers.map(server => {

161 const claudeCodeCommand = generateClaudeCodeCommand(server);

162 const mcpUrl = server.urls.http || server.urls.sse;

163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;

164 return <div key={server.name} className="server-card">

165 <div>

166 {server.documentation ? <a href={server.documentation}>

167 <strong>{server.name}</strong>

168 </a> : <strong>{server.name}</strong>}

169 </div>

170 

171 <p style={{

172 margin: '0.5rem 0',

173 fontSize: '0.9rem'

174 }}>

175 {server.description}

176 </p>

177 

178 {server.setupUrl && <p style={{

179 margin: '0.25rem 0',

180 fontSize: '0.8rem',

181 fontStyle: 'italic',

182 opacity: 0.7

183 }}>

184 Requires user-specific URL.{' '}

185 <a href={server.setupUrl} style={{

186 textDecoration: 'underline'

187 }}>

188 Get your URL here

189 </a>.

190 </p>}

191 

192 {commandToShow && !server.setupUrl && <>

193 <p style={{

194 display: 'block',

195 fontSize: '0.75rem',

196 fontWeight: 500,

197 minWidth: 'fit-content',

198 marginTop: '0.5rem',

199 marginBottom: 0

200 }}>

201 {platform === "claudeCode" ? "Command" : "URL"}

202 </p>

203 <div className="command-row">

204 <code>

205 {commandToShow}

206 </code>

207 </div>

208 </>}

209 </div>;

210 })}

211 </div>

212 </>;

213};

214 

215Claude Code può connettersi a centinaia di strumenti e fonti di dati esterni attraverso il [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), uno standard open source per le integrazioni AI-tool. I server MCP danno a Claude Code accesso ai tuoi strumenti, database e API.

216 

217Connetti un server quando ti trovi a copiare dati in chat da un altro strumento, come un issue tracker o un dashboard di monitoraggio. Una volta connesso, Claude può leggere e agire su quel sistema direttamente invece di lavorare da quello che incolla.

218 

219## Cosa puoi fare con MCP

220 

221Con i server MCP connessi, puoi chiedere a Claude Code di:

222 

223* **Implementare funzionalità da issue tracker**: "Aggiungi la funzionalità descritta nel ticket JIRA ENG-4521 e crea una PR su GitHub."

224* **Analizzare dati di monitoraggio**: "Controlla Sentry e Statsig per verificare l'utilizzo della funzionalità descritta in ENG-4521."

225* **Interrogare database**: "Trova gli indirizzi email di 10 utenti casuali che hanno utilizzato la funzionalità ENG-4521, in base al nostro database PostgreSQL."

226* **Integrare design**: "Aggiorna il nostro modello di email standard in base ai nuovi design Figma che sono stati pubblicati su Slack"

227* **Automatizzare flussi di lavoro**: "Crea bozze Gmail invitando questi 10 utenti a una sessione di feedback sulla nuova funzionalità."

228* **Reagire a eventi esterni**: Un server MCP può anche agire come un [canale](/it/channels) che invia messaggi nella tua sessione, in modo che Claude reagisca ai messaggi Telegram, chat Discord o eventi webhook mentre sei assente.

229 

230## Server MCP popolari

231 

232Ecco alcuni server MCP comunemente utilizzati che puoi connettere a Claude Code:

233 

234<Warning>

235 Utilizza server MCP di terze parti a tuo rischio - Anthropic non ha verificato

236 la correttezza o la sicurezza di tutti questi server.

237 Assicurati di fidarti dei server MCP che stai installando.

238 Fai particolare attenzione quando utilizzi server MCP che potrebbero recuperare

239 contenuti non attendibili, poiché questi possono esporti al rischio di prompt injection.

240</Warning>

241 

242<MCPServersTable platform="claudeCode" />

243 

244<Note>

245 **Hai bisogno di un'integrazione specifica?** [Trova centinaia di altri server MCP su GitHub](https://github.com/modelcontextprotocol/servers), oppure crea il tuo utilizzando l'[MCP SDK](https://modelcontextprotocol.io/quickstart/server).

246</Note>

247 

248## Installazione dei server MCP

249 

250I server MCP possono essere configurati in tre modi diversi a seconda delle tue esigenze:

251 

252### Opzione 1: Aggiungi un server HTTP remoto

253 

254I server HTTP sono l'opzione consigliata per connettersi ai server MCP remoti. Questo è il trasporto più ampiamente supportato per i servizi basati su cloud.

255 

256```bash theme={null}

257# Sintassi di base

258claude mcp add --transport http <name> <url>

259 

260# Esempio reale: Connessione a Notion

261claude mcp add --transport http notion https://mcp.notion.com/mcp

262 

263# Esempio con token Bearer

264claude mcp add --transport http secure-api https://api.example.com/mcp \

265 --header "Authorization: Bearer your-token"

266```

267 

268### Opzione 2: Aggiungi un server SSE remoto

269 

270<Warning>

271 Il trasporto SSE (Server-Sent Events) è deprecato. Utilizza server HTTP invece, dove disponibili.

272</Warning>

273 

274```bash theme={null}

275# Sintassi di base

276claude mcp add --transport sse <name> <url>

277 

278# Esempio reale: Connessione ad Asana

279claude mcp add --transport sse asana https://mcp.asana.com/sse

280 

281# Esempio con header di autenticazione

282claude mcp add --transport sse private-api https://api.company.com/sse \

283 --header "X-API-Key: your-key-here"

284```

285 

286### Opzione 3: Aggiungi un server stdio locale

287 

288I server stdio vengono eseguiti come processi locali sulla tua macchina. Sono ideali per strumenti che necessitano di accesso diretto al sistema o script personalizzati.

289 

290```bash theme={null}

291# Sintassi di base

292claude mcp add [options] <name> -- <command> [args...]

293 

294# Esempio reale: Aggiungi server Airtable

295claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \

296 -- npx -y airtable-mcp-server

297```

298 

299<Note>

300 **Importante: Ordine delle opzioni**

301 

302 Tutte le opzioni (`--transport`, `--env`, `--scope`, `--header`) devono venire **prima** del nome del server. Il `--` (doppio trattino) separa quindi il nome del server dal comando e dagli argomenti che vengono passati al server MCP.

303 

304 Per esempio:

305 

306 * `claude mcp add --transport stdio myserver -- npx server` → esegue `npx server`

307 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → esegue `python server.py --port 8080` con `KEY=value` nell'ambiente

308 

309 Questo previene conflitti tra i flag di Claude e i flag del server.

310</Note>

311 

312### Gestione dei tuoi server

313 

314Una volta configurati, puoi gestire i tuoi server MCP con questi comandi:

315 

316```bash theme={null}

317# Elenca tutti i server configurati

318claude mcp list

319 

320# Ottieni dettagli per un server specifico

321claude mcp get github

322 

323# Rimuovi un server

324claude mcp remove github

325 

326# (all'interno di Claude Code) Controlla lo stato del server

327/mcp

328```

329 

330### Aggiornamenti dinamici degli strumenti

331 

332Claude Code supporta le notifiche `list_changed` di MCP, consentendo ai server MCP di aggiornare dinamicamente i loro strumenti, prompt e risorse disponibili senza richiedere di disconnettersi e riconnettersi. Quando un server MCP invia una notifica `list_changed`, Claude Code aggiorna automaticamente le capacità disponibili da quel server.

333 

334### Riconnessione automatica

335 

336Se un server HTTP o SSE si disconnette durante una sessione, Claude Code si riconnette automaticamente con backoff esponenziale: fino a cinque tentativi, a partire da un ritardo di un secondo e raddoppiando ogni volta. Il server appare come in sospeso in `/mcp` mentre la riconnessione è in corso. Dopo cinque tentativi falliti il server è contrassegnato come non riuscito e puoi riprovare manualmente da `/mcp`. I server stdio sono processi locali e non vengono riconnessi automaticamente.

337 

338Lo stesso backoff si applica quando un server HTTP o SSE non riesce la sua connessione iniziale all'avvio. A partire dalla v2.1.121, Claude Code ritenta la connessione iniziale fino a tre volte su errori transitori come una risposta 5xx, una connessione rifiutata o un timeout, quindi contrassegna il server come non riuscito se ancora non riesce a connettersi. Gli errori di autenticazione e di non trovato non vengono ritentati perché richiedono una modifica della configurazione per essere risolti.

339 

340### Invia messaggi con canali

341 

342Un server MCP può anche inviare messaggi direttamente nella tua sessione in modo che Claude possa reagire a eventi esterni come risultati CI, avvisi di monitoraggio o messaggi di chat. Per abilitare questa funzionalità, il tuo server dichiara la capacità `claude/channel` e tu la abiliti con il flag `--channels` all'avvio. Vedi [Canali](/it/channels) per utilizzare un canale ufficialmente supportato, oppure [Riferimento canali](/it/channels-reference) per costruire il tuo.

343 

344<Tip>

345 Suggerimenti:

346 

347 * Utilizza il flag `--scope` per specificare dove viene archiviata la configurazione:

348 * `local` (predefinito): Disponibile solo per te nel progetto corrente (era chiamato `project` nelle versioni precedenti)

349 * `project`: Condiviso con tutti nel progetto tramite il file `.mcp.json`

350 * `user`: Disponibile per te in tutti i progetti (era chiamato `global` nelle versioni precedenti)

351 * Imposta le variabili di ambiente con i flag `--env` (per esempio, `--env KEY=value`)

352 * Configura il timeout di avvio del server MCP utilizzando la variabile di ambiente MCP\_TIMEOUT (per esempio, `MCP_TIMEOUT=10000 claude` imposta un timeout di 10 secondi)

353 * Claude Code visualizzerà un avviso quando l'output dello strumento MCP supera 10.000 token. Per aumentare questo limite, imposta la variabile di ambiente `MAX_MCP_OUTPUT_TOKENS` (per esempio, `MAX_MCP_OUTPUT_TOKENS=50000`)

354 * Utilizza `/mcp` per autenticarti con server remoti che richiedono l'autenticazione OAuth 2.0

355</Tip>

356 

357### Server MCP forniti da plugin

358 

359I [plugin](/it/plugins) possono raggruppare server MCP, fornendo automaticamente strumenti e integrazioni quando il plugin è abilitato. I server MCP dei plugin funzionano in modo identico ai server configurati dall'utente.

360 

361**Come funzionano i server MCP dei plugin**:

362 

363* I plugin definiscono i server MCP in `.mcp.json` nella radice del plugin o inline in `plugin.json`

364* Quando un plugin è abilitato, i suoi server MCP si avviano automaticamente

365* Gli strumenti MCP del plugin appaiono insieme agli strumenti MCP configurati manualmente

366* I server dei plugin vengono gestiti tramite l'installazione del plugin (non tramite comandi `/mcp`)

367 

368**Esempio di configurazione MCP del plugin**:

369 

370In `.mcp.json` nella radice del plugin:

371 

372```json theme={null}

373{

374 "mcpServers": {

375 "database-tools": {

376 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

377 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

378 "env": {

379 "DB_URL": "${DB_URL}"

380 }

381 }

382 }

383}

384```

385 

386O inline in `plugin.json`:

387 

388```json theme={null}

389{

390 "name": "my-plugin",

391 "mcpServers": {

392 "plugin-api": {

393 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",

394 "args": ["--port", "8080"]

395 }

396 }

397}

398```

399 

400**Funzionalità MCP del plugin**:

401 

402* **Ciclo di vita automatico**: All'avvio della sessione, i server per i plugin abilitati si connettono automaticamente. Se abiliti o disabiliti un plugin durante una sessione, esegui `/reload-plugins` per connettere o disconnettere i suoi server MCP

403* **Variabili di ambiente**: Utilizza `${CLAUDE_PLUGIN_ROOT}` per i file del plugin raggruppati e `${CLAUDE_PLUGIN_DATA}` per lo [stato persistente](/it/plugins-reference#persistent-data-directory) che sopravvive agli aggiornamenti del plugin

404* **Accesso alle variabili di ambiente dell'utente**: Accesso alle stesse variabili di ambiente dei server configurati manualmente

405* **Tipi di trasporto multipli**: Supporto per trasporti stdio, SSE e HTTP (il supporto del trasporto può variare a seconda del server)

406 

407**Visualizzazione dei server MCP del plugin**:

408 

409```bash theme={null}

410# All'interno di Claude Code, vedi tutti i server MCP inclusi quelli dei plugin

411/mcp

412```

413 

414I server dei plugin appaiono nell'elenco con indicatori che mostrano che provengono dai plugin.

415 

416**Vantaggi dei server MCP dei plugin**:

417 

418* **Distribuzione raggruppata**: Strumenti e server confezionati insieme

419* **Configurazione automatica**: Nessuna configurazione MCP manuale necessaria

420* **Coerenza del team**: Tutti ottengono gli stessi strumenti quando il plugin è installato

421 

422Vedi il [riferimento dei componenti del plugin](/it/plugins-reference#mcp-servers) per i dettagli su come raggruppare i server MCP con i plugin.

423 

424## Ambiti di installazione MCP

425 

426I server MCP possono essere configurati a tre ambiti diversi. L'ambito che scegli controlla in quali progetti il server viene caricato e se la configurazione è condivisa con il tuo team.

427 

428| Ambito | Carica in | Condiviso con il team | Archiviato in |

429| -------------------------- | ------------------------- | ------------------------------------ | ------------------------------------- |

430| [Locale](#local-scope) | Solo il progetto corrente | No | `~/.claude.json` |

431| [Progetto](#project-scope) | Solo il progetto corrente | Sì, tramite controllo della versione | `.mcp.json` nella radice del progetto |

432| [Utente](#user-scope) | Tutti i tuoi progetti | No | `~/.claude.json` |

433 

434### Ambito locale

435 

436L'ambito locale è il predefinito. Un server con ambito locale viene caricato solo nel progetto in cui lo hai aggiunto e rimane privato per te. Claude Code lo archivia in `~/.claude.json` nel percorso di quel progetto, quindi lo stesso server non apparirà nei tuoi altri progetti. Utilizza l'ambito locale per server di sviluppo personali, configurazioni sperimentali o server con credenziali che non desideri nel controllo della versione.

437 

438<Note>

439 Il termine "ambito locale" per i server MCP differisce dalle impostazioni locali generali. I server MCP con ambito locale vengono archiviati in `~/.claude.json` (la tua directory home), mentre le impostazioni locali generali utilizzano `.claude/settings.local.json` (nella directory del progetto). Vedi [Impostazioni](/it/settings#settings-files) per i dettagli sui percorsi dei file di impostazioni.

440</Note>

441 

442```bash theme={null}

443# Aggiungi un server con ambito locale (predefinito)

444claude mcp add --transport http stripe https://mcp.stripe.com

445 

446# Specifica esplicitamente l'ambito locale

447claude mcp add --transport http stripe --scope local https://mcp.stripe.com

448```

449 

450Il comando scrive il server nella voce per il tuo progetto corrente all'interno di `~/.claude.json`. L'esempio seguente mostra il risultato quando lo esegui da `/path/to/your/project`:

451 

452```json theme={null}

453{

454 "projects": {

455 "/path/to/your/project": {

456 "mcpServers": {

457 "stripe": {

458 "type": "http",

459 "url": "https://mcp.stripe.com"

460 }

461 }

462 }

463 }

464}

465```

466 

467### Ambito del progetto

468 

469I server con ambito del progetto abilitano la collaborazione del team archiviando le configurazioni in un file `.mcp.json` nella directory radice del tuo progetto. Questo file è progettato per essere archiviato nel controllo della versione, assicurando che tutti i membri del team abbiano accesso agli stessi strumenti e servizi MCP. Quando aggiungi un server con ambito del progetto, Claude Code crea o aggiorna automaticamente questo file con la struttura di configurazione appropriata.

470 

471```bash theme={null}

472# Aggiungi un server con ambio del progetto

473claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp

474```

475 

476Il file `.mcp.json` risultante segue un formato standardizzato:

477 

478```json theme={null}

479{

480 "mcpServers": {

481 "shared-server": {

482 "command": "/path/to/server",

483 "args": [],

484 "env": {}

485 }

486 }

487}

488```

489 

490Per motivi di sicurezza, Claude Code richiede l'approvazione prima di utilizzare server con ambito del progetto dai file `.mcp.json`. Se devi ripristinare queste scelte di approvazione, utilizza il comando `claude mcp reset-project-choices`.

491 

492### Ambito utente

493 

494I server con ambito utente vengono archiviati in `~/.claude.json` e forniscono accessibilità tra progetti, rendendoli disponibili in tutti i progetti sulla tua macchina mentre rimangono privati al tuo account utente. Questo ambito funziona bene per server di utilità personali, strumenti di sviluppo o servizi che utilizzi frequentemente in diversi progetti.

495 

496```bash theme={null}

497# Aggiungi un server utente

498claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

499```

500 

501### Gerarchia e precedenza dell'ambito

502 

503Quando lo stesso server è definito in più di un posto, Claude Code si connette ad esso una volta, utilizzando la definizione dalla fonte con la precedenza più alta:

504 

5051. Ambito locale

5062. Ambito del progetto

5073. Ambito utente

5084. [Server forniti da plugin](/it/plugins)

5095. [Connettori claude.ai](#use-mcp-servers-from-claude-ai)

510 

511I tre ambiti corrispondono ai duplicati per nome. I plugin e i connettori corrispondono per endpoint, quindi uno che punta allo stesso URL o comando di un server sopra è trattato come un duplicato.

512 

513### Espansione delle variabili di ambiente in `.mcp.json`

514 

515Claude Code supporta l'espansione delle variabili di ambiente nei file `.mcp.json`, consentendo ai team di condividere configurazioni mantenendo flessibilità per i percorsi specifici della macchina e i valori sensibili come le chiavi API.

516 

517**Sintassi supportata:**

518 

519* `${VAR}` - Si espande al valore della variabile di ambiente `VAR`

520* `${VAR:-default}` - Si espande a `VAR` se impostato, altrimenti utilizza `default`

521 

522**Posizioni di espansione:**

523Le variabili di ambiente possono essere espanse in:

524 

525* `command` - Il percorso dell'eseguibile del server

526* `args` - Argomenti della riga di comando

527* `env` - Variabili di ambiente passate al server

528* `url` - Per i tipi di server HTTP

529* `headers` - Per l'autenticazione del server HTTP

530 

531**Esempio con espansione di variabili:**

532 

533```json theme={null}

534{

535 "mcpServers": {

536 "api-server": {

537 "type": "http",

538 "url": "${API_BASE_URL:-https://api.example.com}/mcp",

539 "headers": {

540 "Authorization": "Bearer ${API_KEY}"

541 }

542 }

543 }

544}

545```

546 

547Se una variabile di ambiente richiesta non è impostata e non ha un valore predefinito, Claude Code non riuscirà ad analizzare la configurazione.

548 

549## Esempi pratici

550 

551{/* ### Example: Automate browser testing with Playwright

552 

553```bash

554claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest

555```

556 

557Then write and run browser tests:

558 

559```text

560Test if the login flow works with test@example.com

561```

562```text

563Take a screenshot of the checkout page on mobile

564```

565```text

566Verify that the search feature returns results

567``` */}

568 

569### Esempio: Monitora gli errori con Sentry

570 

571```bash theme={null}

572claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

573```

574 

575Autenticati con il tuo account Sentry:

576 

577```text theme={null}

578/mcp

579```

580 

581Quindi esegui il debug dei problemi di produzione:

582 

583```text theme={null}

584Quali sono gli errori più comuni nelle ultime 24 ore?

585```

586 

587```text theme={null}

588Mostrami la stack trace per l'errore ID abc123

589```

590 

591```text theme={null}

592Quale deployment ha introdotto questi nuovi errori?

593```

594 

595### Esempio: Connettiti a GitHub per le revisioni del codice

596 

597Il server MCP remoto di GitHub si autentica con un token di accesso personale GitHub passato come header. Per ottenerne uno, apri le [impostazioni del token GitHub](https://github.com/settings/personal-access-tokens), genera un nuovo token con granularità fine con accesso ai repository con cui desideri che Claude lavori, quindi aggiungi il server:

598 

599```bash theme={null}

600claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \

601 --header "Authorization: Bearer YOUR_GITHUB_PAT"

602```

603 

604Quindi lavora con GitHub:

605 

606```text theme={null}

607Rivedi la PR #456 e suggerisci miglioramenti

608```

609 

610```text theme={null}

611Crea un nuovo issue per il bug che abbiamo appena trovato

612```

613 

614```text theme={null}

615Mostrami tutte le PR aperte assegnate a me

616```

617 

618### Esempio: Interroga il tuo database PostgreSQL

619 

620```bash theme={null}

621claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \

622 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

623```

624 

625Quindi interroga il tuo database naturalmente:

626 

627```text theme={null}

628Qual è il nostro ricavo totale questo mese?

629```

630 

631```text theme={null}

632Mostrami lo schema per la tabella orders

633```

634 

635```text theme={null}

636Trova i clienti che non hanno effettuato un acquisto negli ultimi 90 giorni

637```

638 

639## Autenticazione con server MCP remoti

640 

641Molti server MCP basati su cloud richiedono l'autenticazione. Claude Code supporta OAuth 2.0 per connessioni sicure.

642 

643<Steps>

644 <Step title="Aggiungi il server che richiede l'autenticazione">

645 Per esempio:

646 

647 ```bash theme={null}

648 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

649 ```

650 </Step>

651 

652 <Step title="Utilizza il comando /mcp all'interno di Claude Code">

653 In Claude Code, utilizza il comando:

654 

655 ```text theme={null}

656 /mcp

657 ```

658 

659 Quindi segui i passaggi nel tuo browser per accedere.

660 </Step>

661</Steps>

662 

663<Tip>

664 Suggerimenti:

665 

666 * I token di autenticazione vengono archiviati in modo sicuro e aggiornati automaticamente

667 * Utilizza "Clear authentication" nel menu `/mcp` per revocare l'accesso

668 * Se il tuo browser non si apre automaticamente, copia l'URL fornito e aprilo manualmente

669 * Se il reindirizzamento del browser non riesce con un errore di connessione dopo l'autenticazione, incolla l'URL di callback completo dalla barra degli indirizzi del tuo browser nel prompt dell'URL che appare in Claude Code

670 * L'autenticazione OAuth funziona con i server HTTP

671</Tip>

672 

673### Utilizza una porta di callback OAuth fissa

674 

675Alcuni server MCP richiedono un URI di reindirizzamento specifico registrato in anticipo. Per impostazione predefinita, Claude Code sceglie una porta disponibile casuale per il callback OAuth. Utilizza `--callback-port` per fissare la porta in modo che corrisponda a un URI di reindirizzamento pre-registrato della forma `http://localhost:PORT/callback`.

676 

677Puoi utilizzare `--callback-port` da solo (con registrazione dinamica del client) o insieme a `--client-id` (con credenziali pre-configurate).

678 

679```bash theme={null}

680# Porta di callback fissa con registrazione dinamica del client

681claude mcp add --transport http \

682 --callback-port 8080 \

683 my-server https://mcp.example.com/mcp

684```

685 

686### Utilizza credenziali OAuth pre-configurate

687 

688Alcuni server MCP non supportano la configurazione OAuth automatica tramite Dynamic Client Registration. Se vedi un errore come "Incompatible auth server: does not support dynamic client registration," il server richiede credenziali pre-configurate. Claude Code supporta anche server che utilizzano un Client ID Metadata Document (CIMD) invece di Dynamic Client Registration e li scopre automaticamente. Se la scoperta automatica non riesce, registra prima un'app OAuth tramite il portale degli sviluppatori del server, quindi fornisci le credenziali quando aggiungi il server.

689 

690<Steps>

691 <Step title="Registra un'app OAuth con il server">

692 Crea un'app tramite il portale degli sviluppatori del server e annota il tuo ID client e il segreto client.

693 

694 Molti server richiedono anche un URI di reindirizzamento. Se è così, scegli una porta e registra un URI di reindirizzamento nel formato `http://localhost:PORT/callback`. Utilizza quella stessa porta con `--callback-port` nel passaggio successivo.

695 </Step>

696 

697 <Step title="Aggiungi il server con le tue credenziali">

698 Scegli uno dei seguenti metodi. La porta utilizzata per `--callback-port` può essere qualsiasi porta disponibile. Deve solo corrispondere all'URI di reindirizzamento che hai registrato nel passaggio precedente.

699 

700 <Tabs>

701 <Tab title="claude mcp add">

702 Utilizza `--client-id` per passare l'ID client della tua app. Il flag `--client-secret` richiede il segreto con input mascherato:

703 

704 ```bash theme={null}

705 claude mcp add --transport http \

706 --client-id your-client-id --client-secret --callback-port 8080 \

707 my-server https://mcp.example.com/mcp

708 ```

709 </Tab>

710 

711 <Tab title="claude mcp add-json">

712 Includi l'oggetto `oauth` nella configurazione JSON e passa `--client-secret` come flag separato:

713 

714 ```bash theme={null}

715 claude mcp add-json my-server \

716 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \

717 --client-secret

718 ```

719 </Tab>

720 

721 <Tab title="claude mcp add-json (solo porta di callback)">

722 Utilizza `--callback-port` senza un ID client per fissare la porta mentre utilizzi la registrazione dinamica del client:

723 

724 ```bash theme={null}

725 claude mcp add-json my-server \

726 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'

727 ```

728 </Tab>

729 

730 <Tab title="CI / env var">

731 Imposta il segreto tramite variabile di ambiente per saltare il prompt interattivo:

732 

733 ```bash theme={null}

734 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \

735 --client-id your-client-id --client-secret --callback-port 8080 \

736 my-server https://mcp.example.com/mcp

737 ```

738 </Tab>

739 </Tabs>

740 </Step>

741 

742 <Step title="Autenticati in Claude Code">

743 Esegui `/mcp` in Claude Code e segui il flusso di accesso del browser.

744 </Step>

745</Steps>

746 

747<Tip>

748 Suggerimenti:

749 

750 * Il segreto client viene archiviato in modo sicuro nel tuo portachiavi di sistema (macOS) o in un file di credenziali, non nella tua configurazione

751 * Se il server utilizza un client OAuth pubblico senza segreto, utilizza solo `--client-id` senza `--client-secret`

752 * `--callback-port` può essere utilizzato con o senza `--client-id`

753 * Questi flag si applicano solo ai trasporti HTTP e SSE. Non hanno effetto sui server stdio

754 * Utilizza `claude mcp get <name>` per verificare che le credenziali OAuth siano configurate per un server

755</Tip>

756 

757### Sovrascrivi la scoperta dei metadati OAuth

758 

759Indirizza Claude Code a un URL di metadati OAuth specifico per bypassare la catena di scoperta predefinita. Imposta `authServerMetadataUrl` quando gli endpoint standard del server MCP generano errori, o quando desideri instradare la scoperta attraverso un proxy interno. Per impostazione predefinita, Claude Code controlla prima i metadati della risorsa protetta RFC 9728 su `/.well-known/oauth-protected-resource`, quindi ricade sui metadati del server di autorizzazione RFC 8414 su `/.well-known/oauth-authorization-server`.

760 

761Imposta `authServerMetadataUrl` nell'oggetto `oauth` della configurazione del tuo server in `.mcp.json`:

762 

763```json theme={null}

764{

765 "mcpServers": {

766 "my-server": {

767 "type": "http",

768 "url": "https://mcp.example.com/mcp",

769 "oauth": {

770 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"

771 }

772 }

773 }

774}

775```

776 

777L'URL deve utilizzare `https://`. `authServerMetadataUrl` richiede Claude Code v2.1.64 o successiva. L'`scopes_supported` dell'URL dei metadati sovrascrive gli ambiti che il server upstream pubblicizza.

778 

779### Limita gli ambiti OAuth

780 

781Imposta `oauth.scopes` per fissare gli ambiti che Claude Code richiede durante il flusso di autorizzazione. Questo è il modo supportato per limitare un server MCP a un sottoinsieme approvato dal team di sicurezza quando il server di autorizzazione upstream pubblicizza più ambiti di quelli che desideri concedere. Il valore è una singola stringa separata da spazi, corrispondente al formato del parametro `scope` in RFC 6749 §3.3.

782 

783```json theme={null}

784{

785 "mcpServers": {

786 "slack": {

787 "type": "http",

788 "url": "https://mcp.slack.com/mcp",

789 "oauth": {

790 "scopes": "channels:read chat:write search:read"

791 }

792 }

793 }

794}

795```

796 

797`oauth.scopes` ha la precedenza sia su `authServerMetadataUrl` che sugli ambiti che il server scopre su `/.well-known`. Lascialo non impostato per consentire al server MCP di determinare l'insieme di ambiti richiesti.

798 

799Se il server di autorizzazione pubblicizza `offline_access` in `scopes_supported`, Claude Code lo aggiunge agli ambiti fissati in modo che il token di accesso possa essere aggiornato senza un nuovo accesso al browser.

800 

801Se il server successivamente restituisce un 403 `insufficient_scope` per una chiamata di strumento, Claude Code si autentica di nuovo con gli stessi ambiti fissati. Amplia `oauth.scopes` quando uno strumento di cui hai bisogno richiede un ambito al di fuori del pin.

802 

803### Utilizza intestazioni dinamiche per l'autenticazione personalizzata

804 

805Se il tuo server MCP utilizza uno schema di autenticazione diverso da OAuth (come Kerberos, token di breve durata o un SSO interno), utilizza `headersHelper` per generare intestazioni di richiesta al momento della connessione. Claude Code esegue il comando e unisce il suo output alle intestazioni di connessione.

806 

807```json theme={null}

808{

809 "mcpServers": {

810 "internal-api": {

811 "type": "http",

812 "url": "https://mcp.internal.example.com",

813 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"

814 }

815 }

816}

817```

818 

819Il comando può anche essere inline:

820 

821```json theme={null}

822{

823 "mcpServers": {

824 "internal-api": {

825 "type": "http",

826 "url": "https://mcp.internal.example.com",

827 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"

828 }

829 }

830}

831```

832 

833**Requisiti:**

834 

835* Il comando deve scrivere un oggetto JSON di coppie chiave-valore stringa su stdout

836* Il comando viene eseguito in una shell con un timeout di 10 secondi

837* Le intestazioni dinamiche sovrascrivono qualsiasi `headers` statico con lo stesso nome

838 

839L'helper viene eseguito di nuovo ad ogni connessione (all'avvio della sessione e alla riconnessione). Non c'è caching, quindi il tuo script è responsabile di qualsiasi riutilizzo di token.

840 

841Claude Code imposta queste variabili di ambiente quando esegue l'helper:

842 

843| Variabile | Valore |

844| :---------------------------- | :--------------------- |

845| `CLAUDE_CODE_MCP_SERVER_NAME` | il nome del server MCP |

846| `CLAUDE_CODE_MCP_SERVER_URL` | l'URL del server MCP |

847 

848Utilizza questi per scrivere un singolo script helper che serve più server MCP.

849 

850<Note>

851 `headersHelper` esegue comandi shell arbitrari. Quando definito a livello di progetto o locale, viene eseguito solo dopo che accetti la finestra di dialogo di fiducia dell'area di lavoro.

852</Note>

853 

854## Aggiungi server MCP dalla configurazione JSON

855 

856Se hai una configurazione JSON per un server MCP, puoi aggiungerla direttamente:

857 

858<Steps>

859 <Step title="Aggiungi un server MCP da JSON">

860 ```bash theme={null}

861 # Sintassi di base

862 claude mcp add-json <name> '<json>'

863 

864 # Esempio: Aggiunta di un server HTTP con configurazione JSON

865 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'

866 

867 # Esempio: Aggiunta di un server stdio con configurazione JSON

868 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'

869 

870 # Esempio: Aggiunta di un server HTTP con credenziali OAuth pre-configurate

871 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret

872 ```

873 </Step>

874 

875 <Step title="Verifica che il server sia stato aggiunto">

876 ```bash theme={null}

877 claude mcp get weather-api

878 ```

879 </Step>

880</Steps>

881 

882<Tip>

883 Suggerimenti:

884 

885 * Assicurati che il JSON sia correttamente sfuggito nella tua shell

886 * Il JSON deve conformarsi allo schema di configurazione del server MCP

887 * Puoi utilizzare `--scope user` per aggiungere il server alla tua configurazione utente invece di quella specifica del progetto

888</Tip>

889 

890## Importa server MCP da Claude Desktop

891 

892Se hai già configurato server MCP in Claude Desktop, puoi importarli:

893 

894<Steps>

895 <Step title="Importa server da Claude Desktop">

896 ```bash theme={null}

897 # Sintassi di base

898 claude mcp add-from-claude-desktop

899 ```

900 </Step>

901 

902 <Step title="Seleziona quali server importare">

903 Dopo aver eseguito il comando, vedrai una finestra di dialogo interattiva che ti consente di selezionare quali server desideri importare.

904 </Step>

905 

906 <Step title="Verifica che i server siano stati importati">

907 ```bash theme={null}

908 claude mcp list

909 ```

910 </Step>

911</Steps>

912 

913<Tip>

914 Suggerimenti:

915 

916 * Questa funzionalità funziona solo su macOS e Windows Subsystem for Linux (WSL)

917 * Legge il file di configurazione di Claude Desktop dalla sua posizione standard su quelle piattaforme

918 * Utilizza il flag `--scope user` per aggiungere server alla tua configurazione utente

919 * I server importati avranno gli stessi nomi di Claude Desktop

920 * Se server con gli stessi nomi esistono già, riceveranno un suffisso numerico (per esempio, `server_1`)

921</Tip>

922 

923## Utilizza server MCP da Claude.ai

924 

925Se hai effettuato l'accesso a Claude Code con un account [Claude.ai](https://claude.ai), i server MCP che hai aggiunto in Claude.ai sono automaticamente disponibili in Claude Code:

926 

927<Steps>

928 <Step title="Configura server MCP in Claude.ai">

929 Aggiungi server su [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Nei piani Team ed Enterprise, solo gli amministratori possono aggiungere server.

930 </Step>

931 

932 <Step title="Autentica il server MCP">

933 Completa eventuali passaggi di autenticazione richiesti in Claude.ai.

934 </Step>

935 

936 <Step title="Visualizza e gestisci i server in Claude Code">

937 In Claude Code, utilizza il comando:

938 

939 ```text theme={null}

940 /mcp

941 ```

942 

943 I server Claude.ai appaiono nell'elenco con indicatori che mostrano che provengono da Claude.ai.

944 </Step>

945</Steps>

946 

947Per disabilitare i server MCP di claude.ai in Claude Code, imposta la variabile di ambiente `ENABLE_CLAUDEAI_MCP_SERVERS` su `false`:

948 

949```bash theme={null}

950ENABLE_CLAUDEAI_MCP_SERVERS=false claude

951```

952 

953## Utilizza Claude Code come server MCP

954 

955Puoi utilizzare Claude Code stesso come server MCP a cui altre applicazioni possono connettersi:

956 

957```bash theme={null}

958# Avvia Claude come server MCP stdio

959claude mcp serve

960```

961 

962Puoi utilizzarlo in Claude Desktop aggiungendo questa configurazione a claude\_desktop\_config.json:

963 

964```json theme={null}

965{

966 "mcpServers": {

967 "claude-code": {

968 "type": "stdio",

969 "command": "claude",

970 "args": ["mcp", "serve"],

971 "env": {}

972 }

973 }

974}

975```

976 

977<Warning>

978 **Configurazione del percorso dell'eseguibile**: Il campo `command` deve fare riferimento all'eseguibile di Claude Code. Se il comando `claude` non è nel PATH del tuo sistema, dovrai specificare il percorso completo dell'eseguibile.

979 

980 Per trovare il percorso completo:

981 

982 ```bash theme={null}

983 which claude

984 ```

985 

986 Quindi utilizza il percorso completo nella tua configurazione:

987 

988 ```json theme={null}

989 {

990 "mcpServers": {

991 "claude-code": {

992 "type": "stdio",

993 "command": "/full/path/to/claude",

994 "args": ["mcp", "serve"],

995 "env": {}

996 }

997 }

998 }

999 ```

1000 

1001 Senza il percorso dell'eseguibile corretto, incontrerai errori come `spawn claude ENOENT`.

1002</Warning>

1003 

1004<Tip>

1005 Suggerimenti:

1006 

1007 * Il server fornisce accesso agli strumenti di Claude come View, Edit, LS, ecc.

1008 * In Claude Desktop, prova a chiedere a Claude di leggere file in una directory, fare modifiche e altro ancora.

1009 * Nota che questo server MCP sta solo esponendo gli strumenti di Claude Code al tuo client MCP, quindi il tuo client è responsabile dell'implementazione della conferma dell'utente per le singole chiamate di strumenti.

1010</Tip>

1011 

1012## Limiti di output MCP e avvisi

1013 

1014Quando gli strumenti MCP producono output di grandi dimensioni, Claude Code aiuta a gestire l'utilizzo dei token per evitare di sovraccaricare il contesto della tua conversazione:

1015 

1016* **Soglia di avviso di output**: Claude Code visualizza un avviso quando l'output di qualsiasi strumento MCP supera 10.000 token

1017* **Limite configurabile**: Puoi regolare il massimo di token di output MCP consentiti utilizzando la variabile di ambiente `MAX_MCP_OUTPUT_TOKENS`

1018* **Limite predefinito**: Il massimo predefinito è 25.000 token

1019* **Ambito**: La variabile di ambiente si applica agli strumenti che non dichiarano il loro limite. Gli strumenti che impostano [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) utilizzano quel valore invece per il contenuto di testo, indipendentemente da ciò che `MAX_MCP_OUTPUT_TOKENS` è impostato. Gli strumenti che restituiscono dati di immagine sono ancora soggetti a `MAX_MCP_OUTPUT_TOKENS`

1020 

1021Per aumentare il limite per gli strumenti che producono output di grandi dimensioni:

1022 

1023```bash theme={null}

1024export MAX_MCP_OUTPUT_TOKENS=50000

1025claude

1026```

1027 

1028Questo è particolarmente utile quando si lavora con server MCP che:

1029 

1030* Interrogano grandi set di dati o database

1031* Generano report o documentazione dettagliati

1032* Elaborano file di log estesi o informazioni di debug

1033 

1034### Aumenta il limite per uno strumento specifico

1035 

1036Se stai costruendo un server MCP, puoi consentire ai singoli strumenti di restituire risultati più grandi della soglia predefinita impostando `_meta["anthropic/maxResultSizeChars"]` nella voce dello strumento nella risposta `tools/list`. Claude Code aumenta la soglia di quello strumento al valore annotato, fino a un limite massimo di 500.000 caratteri.

1037 

1038Questo è utile per strumenti che restituiscono output intrinsecamente grandi ma necessari, come schemi di database o alberi di file completi. Senza l'annotazione, i risultati che superano la soglia predefinita vengono persistiti su disco e sostituiti con un riferimento a file nella conversazione.

1039 

1040```json theme={null}

1041{

1042 "name": "get_schema",

1043 "description": "Returns the full database schema",

1044 "_meta": {

1045 "anthropic/maxResultSizeChars": 200000

1046 }

1047}

1048```

1049 

1050L'annotazione si applica indipendentemente da `MAX_MCP_OUTPUT_TOKENS` per il contenuto di testo, quindi gli utenti non hanno bisogno di aumentare la variabile di ambiente per gli strumenti che la dichiarano. Gli strumenti che restituiscono dati di immagine sono ancora soggetti al limite di token.

1051 

1052<Warning>

1053 Se incontri frequentemente avvisi di output con server MCP specifici che non controlli, considera di aumentare il limite `MAX_MCP_OUTPUT_TOKENS`. Puoi anche chiedere all'autore del server di aggiungere l'annotazione `anthropic/maxResultSizeChars` o di impaginare le loro risposte. L'annotazione non ha effetto sugli strumenti che restituiscono contenuto di immagine; per quelli, aumentare `MAX_MCP_OUTPUT_TOKENS` è l'unica opzione.

1054</Warning>

1055 

1056## Rispondi alle richieste di elicitazione MCP

1057 

1058I server MCP possono richiedere input strutturato da te durante un'attività utilizzando l'elicitazione. Quando un server ha bisogno di informazioni che non può ottenere da solo, Claude Code visualizza una finestra di dialogo interattiva e passa la tua risposta al server. Non è richiesta alcuna configurazione da parte tua: le finestre di dialogo di elicitazione appaiono automaticamente quando un server le richiede.

1059 

1060I server possono richiedere input in due modi:

1061 

1062* **Modalità modulo**: Claude Code mostra una finestra di dialogo con campi modulo definiti dal server (per esempio, un prompt di nome utente e password). Compila i campi e invia.

1063* **Modalità URL**: Claude Code apre un URL del browser per l'autenticazione o l'approvazione. Completa il flusso nel browser, quindi conferma nella CLI.

1064 

1065Per rispondere automaticamente alle richieste di elicitazione senza mostrare una finestra di dialogo, utilizza l'[hook `Elicitation`](/it/hooks#elicitation).

1066 

1067Se stai costruendo un server MCP che utilizza l'elicitazione, vedi la [specifica di elicitazione MCP](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) per i dettagli del protocollo e gli esempi di schema.

1068 

1069## Utilizza risorse MCP

1070 

1071I server MCP possono esporre risorse che puoi referenziare utilizzando menzioni @, simile a come referenzi i file.

1072 

1073### Referenzia risorse MCP

1074 

1075<Steps>

1076 <Step title="Elenca le risorse disponibili">

1077 Digita `@` nel tuo prompt per vedere le risorse disponibili da tutti i server MCP connessi. Le risorse appaiono insieme ai file nel menu di completamento automatico.

1078 </Step>

1079 

1080 <Step title="Referenzia una risorsa specifica">

1081 Utilizza il formato `@server:protocol://resource/path` per referenziare una risorsa:

1082 

1083 ```text theme={null}

1084 Puoi analizzare @github:issue://123 e suggerire una correzione?

1085 ```

1086 

1087 ```text theme={null}

1088 Per favore rivedi la documentazione API su @docs:file://api/authentication

1089 ```

1090 </Step>

1091 

1092 <Step title="Referenze di risorse multiple">

1093 Puoi referenziare più risorse in un singolo prompt:

1094 

1095 ```text theme={null}

1096 Confronta @postgres:schema://users con @docs:file://database/user-model

1097 ```

1098 </Step>

1099</Steps>

1100 

1101<Tip>

1102 Suggerimenti:

1103 

1104 * Le risorse vengono recuperate automaticamente e incluse come allegati quando referenziate

1105 * I percorsi delle risorse sono ricercabili con fuzzy search nel completamento automatico della menzione @

1106 * Claude Code fornisce automaticamente strumenti per elencare e leggere risorse MCP quando i server le supportano

1107 * Le risorse possono contenere qualsiasi tipo di contenuto fornito dal server MCP (testo, JSON, dati strutturati, ecc.)

1108</Tip>

1109 

1110## Scala con MCP Tool Search

1111 

1112Tool search mantiene l'utilizzo del contesto MCP basso rimandando le definizioni degli strumenti fino a quando Claude ne ha bisogno. Solo i nomi degli strumenti vengono caricati all'avvio della sessione, quindi aggiungere più server MCP ha un impatto minimo sulla tua finestra di contesto.

1113 

1114### Come funziona

1115 

1116Tool search è abilitato per impostazione predefinita. Gli strumenti MCP vengono rimandati piuttosto che caricati nel contesto in anticipo, e Claude utilizza uno strumento di ricerca per scoprire quelli rilevanti quando un'attività ne ha bisogno. Solo gli strumenti che Claude effettivamente utilizza entrano nel contesto. Dal tuo punto di vista, gli strumenti MCP funzionano esattamente come prima.

1117 

1118Se preferisci il caricamento basato su soglia, imposta `ENABLE_TOOL_SEARCH=auto` per caricare gli schemi in anticipo quando si adattano entro il 10% della finestra di contesto e rimanda solo l'overflow. Vedi [Configura tool search](#configure-tool-search) per tutte le opzioni.

1119 

1120### Per gli autori di server MCP

1121 

1122Se stai costruendo un server MCP, il campo delle istruzioni del server diventa più utile con Tool Search abilitato. Le istruzioni del server aiutano Claude a capire quando cercare i tuoi strumenti, simile a come funzionano le [skills](/it/skills).

1123 

1124Aggiungi istruzioni del server chiare e descrittive che spieghino:

1125 

1126* Quale categoria di attività gestiscono i tuoi strumenti

1127* Quando Claude dovrebbe cercare i tuoi strumenti

1128* Capacità chiave che il tuo server fornisce

1129 

1130Claude Code tronca le descrizioni degli strumenti e le istruzioni del server a 2KB ciascuna. Mantienile concise per evitare il troncamento e metti i dettagli critici all'inizio.

1131 

1132### Configura tool search

1133 

1134Tool search è abilitato per impostazione predefinita: gli strumenti MCP vengono rimandati e scoperti su richiesta. È disabilitato per impostazione predefinita su Vertex AI, che non accetta l'intestazione beta tool search, e quando `ANTHROPIC_BASE_URL` punta a un host non di prima parte, poiché la maggior parte dei proxy non inoltrano blocchi `tool_reference`. Imposta `ENABLE_TOOL_SEARCH` esplicitamente per opt-in. Questa funzionalità richiede modelli che supportano blocchi `tool_reference`: Sonnet 4 e successivi, oppure Opus 4 e successivi. I modelli Haiku non supportano tool search.

1135 

1136Controlla il comportamento di tool search con la variabile di ambiente `ENABLE_TOOL_SEARCH`:

1137 

1138| Valore | Comportamento |

1139| :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1140| (non impostato) | Tutti gli strumenti MCP rimandati e caricati su richiesta. Ricade al caricamento in anticipo su Vertex AI o quando `ANTHROPIC_BASE_URL` è un host non di prima parte |

1141| `true` | Tutti gli strumenti MCP rimandati, incluso su Vertex AI e per `ANTHROPIC_BASE_URL` non di prima parte |

1142| `auto` | Modalità soglia: gli strumenti vengono caricati in anticipo se si adattano entro il 10% della finestra di contesto, rimandati altrimenti |

1143| `auto:<N>` | Modalità soglia con una percentuale personalizzata, dove `<N>` è 0-100 (ad es. `auto:5` per il 5%) |

1144| `false` | Tutti gli strumenti MCP caricati in anticipo, nessun rinvio |

1145 

1146```bash theme={null}

1147# Utilizza una soglia personalizzata del 5%

1148ENABLE_TOOL_SEARCH=auto:5 claude

1149 

1150# Disabilita completamente tool search

1151ENABLE_TOOL_SEARCH=false claude

1152```

1153 

1154Oppure imposta il valore nel campo `env` del tuo [settings.json](/it/settings#available-settings).

1155 

1156Puoi anche disabilitare lo strumento `ToolSearch` specificamente:

1157 

1158```json theme={null}

1159{

1160 "permissions": {

1161 "deny": ["ToolSearch"]

1162 }

1163}

1164```

1165 

1166### Esentare un server dal rinvio

1167 

1168Se gli strumenti di un server dovrebbero essere sempre visibili a Claude senza un passaggio di ricerca, imposta `alwaysLoad` su `true` nella configurazione di quel server. Ogni strumento da quel server viene quindi caricato nel contesto all'avvio della sessione indipendentemente dall'impostazione `ENABLE_TOOL_SEARCH`. Utilizza questa opzione per un piccolo numero di strumenti che Claude necessita ad ogni turno, poiché ogni strumento in anticipo consuma contesto che altrimenti sarebbe disponibile per la tua conversazione.

1169 

1170La seguente voce `.mcp.json` esentare un server HTTP mentre lascia gli altri server rimandati:

1171 

1172```json theme={null}

1173{

1174 "mcpServers": {

1175 "core-tools": {

1176 "type": "http",

1177 "url": "https://mcp.example.com/mcp",

1178 "alwaysLoad": true

1179 }

1180 }

1181}

1182```

1183 

1184Il campo `alwaysLoad` è disponibile su tutti i tipi di server e richiede Claude Code v2.1.121 o successivo. Un server MCP può anche contrassegnare singoli strumenti come sempre caricati includendo `"anthropic/alwaysLoad": true` nell'oggetto `_meta` dello strumento, che ha lo stesso effetto solo per quello strumento.

1185 

1186## Utilizza i prompt MCP come comandi

1187 

1188I server MCP possono esporre prompt che diventano disponibili come comandi in Claude Code.

1189 

1190### Esegui i prompt MCP

1191 

1192<Steps>

1193 <Step title="Scopri i prompt disponibili">

1194 Digita `/` per vedere tutti i comandi disponibili, inclusi quelli dai server MCP. I prompt MCP appaiono con il formato `/mcp__servername__promptname`.

1195 </Step>

1196 

1197 <Step title="Esegui un prompt senza argomenti">

1198 ```text theme={null}

1199 /mcp__github__list_prs

1200 ```

1201 </Step>

1202 

1203 <Step title="Esegui un prompt con argomenti">

1204 Molti prompt accettano argomenti. Passali separati da spazi dopo il comando:

1205 

1206 ```text theme={null}

1207 /mcp__github__pr_review 456

1208 ```

1209 

1210 ```text theme={null}

1211 /mcp__jira__create_issue "Bug nel flusso di accesso" high

1212 ```

1213 </Step>

1214</Steps>

1215 

1216<Tip>

1217 Suggerimenti:

1218 

1219 * I prompt MCP vengono scoperti dinamicamente dai server connessi

1220 * Gli argomenti vengono analizzati in base ai parametri definiti del prompt

1221 * I risultati del prompt vengono iniettati direttamente nella conversazione

1222 * I nomi del server e del prompt vengono normalizzati (gli spazi diventano trattini bassi)

1223</Tip>

1224 

1225## Configurazione MCP gestita

1226 

1227Per le organizzazioni che necessitano di un controllo centralizzato sui server MCP, Claude Code supporta due opzioni di configurazione:

1228 

12291. **Controllo esclusivo con `managed-mcp.json`**: Distribuisci un set fisso di server MCP che gli utenti non possono modificare o estendere

12302. **Controllo basato su policy con allowlist/denylist**: Consenti agli utenti di aggiungere i propri server, ma limita quali sono consentiti

1231 

1232Queste opzioni consentono agli amministratori IT di:

1233 

1234* **Controllare a quali server MCP i dipendenti possono accedere**: Distribuisci un set standardizzato di server MCP approvati in tutta l'organizzazione

1235* **Prevenire server MCP non autorizzati**: Limita gli utenti dall'aggiungere server MCP non approvati

1236* **Disabilitare completamente MCP**: Rimuovi completamente la funzionalità MCP se necessario

1237 

1238### Opzione 1: Controllo esclusivo con managed-mcp.json

1239 

1240Quando distribuisci un file `managed-mcp.json`, assume il **controllo esclusivo** su tutti i server MCP. Gli utenti non possono aggiungere, modificare o utilizzare alcun server MCP diverso da quelli definiti in questo file. Questo è l'approccio più semplice per le organizzazioni che desiderano un controllo completo.

1241 

1242Gli amministratori di sistema distribuiscono il file di configurazione a una directory a livello di sistema:

1243 

1244* macOS: `/Library/Application Support/ClaudeCode/managed-mcp.json`

1245* Linux e WSL: `/etc/claude-code/managed-mcp.json`

1246* Windows: `C:\Program Files\ClaudeCode\managed-mcp.json`

1247 

1248<Note>

1249 Questi sono percorsi a livello di sistema (non directory home dell'utente come `~/Library/...`) che richiedono privilegi di amministratore. Sono progettati per essere distribuiti dagli amministratori IT.

1250</Note>

1251 

1252Il file `managed-mcp.json` utilizza lo stesso formato di un file `.mcp.json` standard:

1253 

1254```json theme={null}

1255{

1256 "mcpServers": {

1257 "github": {

1258 "type": "http",

1259 "url": "https://api.githubcopilot.com/mcp/"

1260 },

1261 "sentry": {

1262 "type": "http",

1263 "url": "https://mcp.sentry.dev/mcp"

1264 },

1265 "company-internal": {

1266 "type": "stdio",

1267 "command": "/usr/local/bin/company-mcp-server",

1268 "args": ["--config", "/etc/company/mcp-config.json"],

1269 "env": {

1270 "COMPANY_API_URL": "https://internal.company.com"

1271 }

1272 }

1273 }

1274}

1275```

1276 

1277### Opzione 2: Controllo basato su policy con allowlist e denylist

1278 

1279Invece di assumere il controllo esclusivo, gli amministratori possono consentire agli utenti di configurare i propri server MCP mentre applicano restrizioni su quali server sono consentiti. Questo approccio utilizza `allowedMcpServers` e `deniedMcpServers` nel [file di impostazioni gestite](/it/settings#settings-files).

1280 

1281<Note>

1282 **Scelta tra le opzioni**: Utilizza l'Opzione 1 (`managed-mcp.json`) quando desideri distribuire un set fisso di server senza personalizzazione dell'utente. Utilizza l'Opzione 2 (allowlist/denylist) quando desideri consentire agli utenti di aggiungere i propri server entro i vincoli della policy.

1283</Note>

1284 

1285#### Opzioni di restrizione

1286 

1287Ogni voce nell'allowlist o denylist può limitare i server in tre modi:

1288 

12891. **Per nome del server** (`serverName`): Corrisponde al nome configurato del server

12902. **Per comando** (`serverCommand`): Corrisponde al comando esatto e agli argomenti utilizzati per avviare i server stdio

12913. **Per pattern URL** (`serverUrl`): Corrisponde agli URL dei server remoti con supporto per i caratteri jolly

1292 

1293**Importante**: Ogni voce deve avere esattamente uno tra `serverName`, `serverCommand` o `serverUrl`.

1294 

1295#### Configurazione di esempio

1296 

1297```json theme={null}

1298{

1299 "allowedMcpServers": [

1300 // Consenti per nome del server

1301 { "serverName": "github" },

1302 { "serverName": "sentry" },

1303 

1304 // Consenti per comando esatto (per server stdio)

1305 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },

1306 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },

1307 

1308 // Consenti per pattern URL (per server remoti)

1309 { "serverUrl": "https://mcp.company.com/*" },

1310 { "serverUrl": "https://*.internal.corp/*" }

1311 ],

1312 "deniedMcpServers": [

1313 // Blocca per nome del server

1314 { "serverName": "dangerous-server" },

1315 

1316 // Blocca per comando esatto (per server stdio)

1317 { "serverCommand": ["npx", "-y", "unapproved-package"] },

1318 

1319 // Blocca per pattern URL (per server remoti)

1320 { "serverUrl": "https://*.untrusted.com/*" }

1321 ]

1322}

1323```

1324 

1325#### Come funzionano le restrizioni basate su comando

1326 

1327**Corrispondenza esatta**:

1328 

1329* Gli array di comando devono corrispondere **esattamente** - sia il comando che tutti gli argomenti nell'ordine corretto

1330* Esempio: `["npx", "-y", "server"]` NON corrisponderà a `["npx", "server"]` o `["npx", "-y", "server", "--flag"]`

1331 

1332**Comportamento del server stdio**:

1333 

1334* Quando l'allowlist contiene **qualsiasi** voce `serverCommand`, i server stdio **devono** corrispondere a uno di quei comandi

1335* I server stdio non possono passare solo per nome quando sono presenti restrizioni di comando

1336* Questo assicura che gli amministratori possono applicare quali comandi sono consentiti di eseguire

1337 

1338**Comportamento del server non-stdio**:

1339 

1340* I server remoti (HTTP, SSE, WebSocket) utilizzano la corrispondenza basata su URL quando esistono voci `serverUrl` nell'allowlist

1341* Se non esistono voci URL, i server remoti ricadono sulla corrispondenza basata su nome

1342* Le restrizioni di comando non si applicano ai server remoti

1343 

1344#### Come funzionano le restrizioni basate su URL

1345 

1346I pattern URL supportano i caratteri jolly utilizzando `*` per corrispondere a qualsiasi sequenza di caratteri. Questo è utile per consentire interi domini o sottodomini.

1347 

1348**Esempi di caratteri jolly**:

1349 

1350* `https://mcp.company.com/*` - Consenti tutti i percorsi su un dominio specifico

1351* `https://*.example.com/*` - Consenti qualsiasi sottodominio di example.com

1352* `http://localhost:*/*` - Consenti qualsiasi porta su localhost

1353 

1354**Comportamento del server remoto**:

1355 

1356* Quando l'allowlist contiene **qualsiasi** voce `serverUrl`, i server remoti **devono** corrispondere a uno di quei pattern URL

1357* I server remoti non possono passare solo per nome quando sono presenti restrizioni URL

1358* Questo assicura che gli amministratori possono applicare quali endpoint remoti sono consentiti

1359 

1360<Accordion title="Esempio: Allowlist solo URL">

1361 ```json theme={null}

1362 {

1363 "allowedMcpServers": [

1364 { "serverUrl": "https://mcp.company.com/*" },

1365 { "serverUrl": "https://*.internal.corp/*" }

1366 ]

1367 }

1368 ```

1369 

1370 **Risultato**:

1371 

1372 * Server HTTP su `https://mcp.company.com/api`: ✅ Consentito (corrisponde al pattern URL)

1373 * Server HTTP su `https://api.internal.corp/mcp`: ✅ Consentito (corrisponde al sottodominio jolly)

1374 * Server HTTP su `https://external.com/mcp`: ❌ Bloccato (non corrisponde a nessun pattern URL)

1375 * Server stdio con qualsiasi comando: ❌ Bloccato (nessuna voce di nome o comando per corrispondere)

1376</Accordion>

1377 

1378<Accordion title="Esempio: Allowlist solo comando">

1379 ```json theme={null}

1380 {

1381 "allowedMcpServers": [

1382 { "serverCommand": ["npx", "-y", "approved-package"] }

1383 ]

1384 }

1385 ```

1386 

1387 **Risultato**:

1388 

1389 * Server stdio con `["npx", "-y", "approved-package"]`: ✅ Consentito (corrisponde al comando)

1390 * Server stdio con `["node", "server.js"]`: ❌ Bloccato (non corrisponde al comando)

1391 * Server HTTP denominato "my-api": ❌ Bloccato (nessuna voce di nome per corrispondere)

1392</Accordion>

1393 

1394<Accordion title="Esempio: Allowlist misto di nome e comando">

1395 ```json theme={null}

1396 {

1397 "allowedMcpServers": [

1398 { "serverName": "github" },

1399 { "serverCommand": ["npx", "-y", "approved-package"] }

1400 ]

1401 }

1402 ```

1403 

1404 **Risultato**:

1405 

1406 * Server stdio denominato "local-tool" con `["npx", "-y", "approved-package"]`: ✅ Consentito (corrisponde al comando)

1407 * Server stdio denominato "local-tool" con `["node", "server.js"]`: ❌ Bloccato (le voci di comando esistono ma non corrisponde)

1408 * Server stdio denominato "github" con `["node", "server.js"]`: ❌ Bloccato (i server stdio devono corrispondere ai comandi quando le voci di comando esistono)

1409 * Server HTTP denominato "github": ✅ Consentito (corrisponde al nome)

1410 * Server HTTP denominato "other-api": ❌ Bloccato (il nome non corrisponde)

1411</Accordion>

1412 

1413<Accordion title="Esempio: Allowlist solo nome">

1414 ```json theme={null}

1415 {

1416 "allowedMcpServers": [

1417 { "serverName": "github" },

1418 { "serverName": "internal-tool" }

1419 ]

1420 }

1421 ```

1422 

1423 **Risultato**:

1424 

1425 * Server stdio denominato "github" con qualsiasi comando: ✅ Consentito (nessuna restrizione di comando)

1426 * Server stdio denominato "internal-tool" con qualsiasi comando: ✅ Consentito (nessuna restrizione di comando)

1427 * Server HTTP denominato "github": ✅ Consentito (corrisponde al nome)

1428 * Qualsiasi server denominato "other": ❌ Bloccato (il nome non corrisponde)

1429</Accordion>

1430 

1431#### Comportamento dell'allowlist (`allowedMcpServers`)

1432 

1433* `undefined` (predefinito): Nessuna restrizione - gli utenti possono configurare qualsiasi server MCP

1434* Array vuoto `[]`: Blocco completo - gli utenti non possono configurare alcun server MCP

1435* Elenco di voci: Gli utenti possono configurare solo server che corrispondono per nome, comando o pattern URL

1436 

1437#### Comportamento della denylist (`deniedMcpServers`)

1438 

1439* `undefined` (predefinito): Nessun server è bloccato

1440* Array vuoto `[]`: Nessun server è bloccato

1441* Elenco di voci: I server specificati sono esplicitamente bloccati in tutti gli ambiti

1442 

1443#### Note importanti

1444 

1445* **L'Opzione 1 e l'Opzione 2 possono essere combinate**: Se `managed-mcp.json` esiste, ha il controllo esclusivo e gli utenti non possono aggiungere server. Gli allowlist/denylist si applicano comunque ai server gestiti stessi.

1446* **La denylist ha precedenza assoluta**: Se un server corrisponde a una voce della denylist (per nome, comando o URL), sarà bloccato anche se è nell'allowlist

1447* **Le restrizioni basate su nome, comando e URL funzionano insieme**: un server passa se corrisponde a **una** voce di nome, una voce di comando o un pattern URL (a meno che non sia bloccato dalla denylist)

1448 

1449<Note>

1450 **Quando utilizzi `managed-mcp.json`**: Gli utenti non possono aggiungere server MCP tramite `claude mcp add` o file di configurazione. Le impostazioni `allowedMcpServers` e `deniedMcpServers` si applicano comunque per filtrare quali server gestiti vengono effettivamente caricati.

1451</Note>

memory.md +408 −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# Come Claude ricorda il tuo progetto

6 

7> Fornisci a Claude istruzioni persistenti con file CLAUDE.md e lascia che Claude accumuli apprendimenti automaticamente con la memoria automatica.

8 

9Ogni sessione di Claude Code inizia con una finestra di contesto nuova. Due meccanismi trasportano la conoscenza tra le sessioni:

10 

11* **File CLAUDE.md**: istruzioni che scrivi per dare a Claude un contesto persistente

12* **Memoria automatica**: note che Claude scrive da solo in base alle tue correzioni e preferenze

13 

14Questa pagina spiega come:

15 

16* [Scrivere e organizzare file CLAUDE.md](#claude-md-files)

17* [Limitare le regole a tipi di file specifici](#organize-rules-with-claude/rules/) con `.claude/rules/`

18* [Configurare la memoria automatica](#auto-memory) in modo che Claude prenda note automaticamente

19* [Risolvere i problemi](#troubleshoot-memory-issues) quando le istruzioni non vengono seguite

20 

21## CLAUDE.md vs memoria automatica

22 

23Claude Code ha due sistemi di memoria complementari. Entrambi vengono caricati all'inizio di ogni conversazione. Claude li tratta come contesto, non come configurazione forzata. Più specifiche e concise sono le tue istruzioni, più coerentemente Claude le segue.

24 

25| | File CLAUDE.md | Memoria automatica |

26| :---------------- | :---------------------------------------------------------------- | :------------------------------------------------------------------------------- |

27| **Chi lo scrive** | Tu | Claude |

28| **Cosa contiene** | Istruzioni e regole | Apprendimenti e modelli |

29| **Ambito** | Progetto, utente o organizzazione | Per worktree |

30| **Caricato in** | Ogni sessione | Ogni sessione (prime 200 righe o 25KB) |

31| **Usare per** | Standard di codifica, flussi di lavoro, architettura del progetto | Comandi di compilazione, approfondimenti sul debug, preferenze che Claude scopre |

32 

33Usa file CLAUDE.md quando vuoi guidare il comportamento di Claude. La memoria automatica consente a Claude di imparare dalle tue correzioni senza sforzo manuale.

34 

35I subagents possono anche mantenere la propria memoria automatica. Vedi [configurazione subagent](/it/sub-agents#enable-persistent-memory) per i dettagli.

36 

37## File CLAUDE.md

38 

39I file CLAUDE.md sono file markdown che forniscono a Claude istruzioni persistenti per un progetto, il tuo flusso di lavoro personale o l'intera organizzazione. Scrivi questi file in testo semplice; Claude li legge all'inizio di ogni sessione.

40 

41### Quando aggiungere a CLAUDE.md

42 

43Tratta CLAUDE.md come il posto dove scrivi quello che altrimenti dovresti rispiegare. Aggiungi a esso quando:

44 

45* Claude commette lo stesso errore una seconda volta

46* Una revisione del codice rileva qualcosa che Claude avrebbe dovuto sapere su questa base di codice

47* Digiti la stessa correzione o chiarimento nella chat che hai digitato nella sessione precedente

48* Un nuovo membro del team avrebbe bisogno dello stesso contesto per essere produttivo

49 

50Mantienilo su fatti che Claude dovrebbe tenere in ogni sessione: comandi di compilazione, convenzioni, layout del progetto, regole "fai sempre X". Se una voce è una procedura multi-step o riguarda solo una parte della base di codice, spostala in una [skill](/it/skills) o in una [regola con ambito di percorso](#organize-rules-with-claude/rules/) invece. La [panoramica dell'estensione](/it/features-overview#build-your-setup-over-time) copre quando usare ogni meccanismo.

51 

52### Scegli dove mettere i file CLAUDE.md

53 

54I file CLAUDE.md possono trovarsi in diversi percorsi, ognuno con un ambito diverso. I percorsi più specifici hanno la precedenza su quelli più ampi.

55 

56| Ambito | Posizione | Scopo | Esempi di casi d'uso | Condiviso con |

57| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ----------------------------------------------------- |

58| **Politica gestita** | • macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`<br />• Linux e WSL: `/etc/claude-code/CLAUDE.md`<br />• Windows: `C:\Program Files\ClaudeCode\CLAUDE.md` | Istruzioni a livello organizzativo gestite da IT/DevOps | Standard di codifica aziendale, politiche di sicurezza, requisiti di conformità | Tutti gli utenti dell'organizzazione |

59| **Istruzioni di progetto** | `./CLAUDE.md` o `./.claude/CLAUDE.md` | Istruzioni condivise dal team per il progetto | Architettura del progetto, standard di codifica, flussi di lavoro comuni | Membri del team tramite controllo del codice sorgente |

60| **Istruzioni utente** | `~/.claude/CLAUDE.md` | Preferenze personali per tutti i progetti | Preferenze di stile del codice, scorciatoie di strumenti personali | Solo tu (tutti i progetti) |

61| **Istruzioni locali** | `./CLAUDE.local.md` | Preferenze personali specifiche del progetto; aggiungi a `.gitignore` | I tuoi URL sandbox, dati di test preferiti | Solo tu (progetto corrente) |

62 

63I file CLAUDE.md e CLAUDE.local.md nella gerarchia di directory sopra la directory di lavoro vengono caricati completamente all'avvio. I file nelle sottodirectory vengono caricati su richiesta quando Claude legge i file in quelle directory. Vedi [Come vengono caricati i file CLAUDE.md](#how-claude-md-files-load) per l'ordine di risoluzione completo.

64 

65Per i progetti di grandi dimensioni, puoi suddividere le istruzioni in file specifici per argomento utilizzando [regole di progetto](#organize-rules-with-claude/rules/). Le regole ti consentono di limitare le istruzioni a tipi di file specifici o sottodirectory.

66 

67### Configura un CLAUDE.md di progetto

68 

69Un CLAUDE.md di progetto può essere archiviato in `./CLAUDE.md` o `./.claude/CLAUDE.md`. Crea questo file e aggiungi istruzioni che si applicano a chiunque lavori sul progetto: comandi di compilazione e test, standard di codifica, decisioni architettoniche, convenzioni di denominazione e flussi di lavoro comuni. Queste istruzioni vengono condivise con il tuo team tramite controllo del codice sorgente, quindi concentrati su standard a livello di progetto piuttosto che su preferenze personali.

70 

71<Tip>

72 Esegui `/init` per generare automaticamente un CLAUDE.md iniziale. Claude analizza la tua base di codice e crea un file con comandi di compilazione, istruzioni di test e convenzioni di progetto che scopre. Se esiste già un CLAUDE.md, `/init` suggerisce miglioramenti piuttosto che sovrascriverlo. Perfezionalo da lì con istruzioni che Claude non scoprirebbe da solo.

73 

74 Imposta `CLAUDE_CODE_NEW_INIT=1` per abilitare un flusso interattivo multi-fase. `/init` chiede quali artefatti configurare: file CLAUDE.md, skills e hooks. Quindi esplora la tua base di codice con un subagent, colma le lacune tramite domande di follow-up e presenta una proposta revisionabile prima di scrivere qualsiasi file.

75</Tip>

76 

77### Scrivi istruzioni efficaci

78 

79I file CLAUDE.md vengono caricati nella finestra di contesto all'inizio di ogni sessione, consumando token insieme alla tua conversazione. La [visualizzazione della finestra di contesto](/it/context-window) mostra dove CLAUDE.md si carica rispetto al resto del contesto di avvio. Poiché sono contesto piuttosto che configurazione forzata, il modo in cui scrivi le istruzioni influisce su quanto affidabilmente Claude le segue. Le istruzioni specifiche, concise e ben strutturate funzionano meglio.

80 

81**Dimensione**: punta a meno di 200 righe per file CLAUDE.md. I file più lunghi consumano più contesto e riducono l'aderenza. Se le tue istruzioni stanno crescendo molto, usa [regole con ambito di percorso](#path-specific-rules) in modo che le istruzioni si carichino solo quando Claude lavora con file corrispondenti. Puoi anche dividere il contenuto in [importazioni](#import-additional-files) per l'organizzazione, anche se i file importati si caricano comunque e entrano nella finestra di contesto all'avvio.

82 

83**Struttura**: usa intestazioni e punti elenco markdown per raggruppare le istruzioni correlate. Claude scansiona la struttura nello stesso modo in cui i lettori lo fanno: le sezioni organizzate sono più facili da seguire rispetto ai paragrafi densi.

84 

85**Specificità**: scrivi istruzioni abbastanza concrete da poter verificare. Ad esempio:

86 

87* "Usa indentazione a 2 spazi" invece di "Formatta il codice correttamente"

88* "Esegui `npm test` prima di eseguire il commit" invece di "Testa le tue modifiche"

89* "I gestori API si trovano in `src/api/handlers/`" invece di "Mantieni i file organizzati"

90 

91**Coerenza**: se due regole si contraddicono a vicenda, Claude potrebbe sceglierne una arbitrariamente. Rivedi periodicamente i tuoi file CLAUDE.md, i file CLAUDE.md annidati nelle sottodirectory e i file [`.claude/rules/`](#organize-rules-with-claude/rules/) per rimuovere istruzioni obsolete o conflittuali. Nei monorepo, usa [`claudeMdExcludes`](#exclude-specific-claude-md-files) per saltare i file CLAUDE.md di altri team che non sono rilevanti per il tuo lavoro.

92 

93### Importa file aggiuntivi

94 

95I file CLAUDE.md possono importare file aggiuntivi usando la sintassi `@path/to/import`. I file importati vengono espansi e caricati nel contesto all'avvio insieme al CLAUDE.md che li riferisce.

96 

97Sono consentiti sia i percorsi relativi che assoluti. I percorsi relativi si risolvono rispetto al file che contiene l'importazione, non alla directory di lavoro. I file importati possono importare ricorsivamente altri file, con una profondità massima di cinque hop.

98 

99Per includere un README, package.json e una guida al flusso di lavoro, fai riferimento ad essi con la sintassi `@` in qualsiasi punto del tuo CLAUDE.md:

100 

101```text theme={null}

102Vedi @README per la panoramica del progetto e @package.json per i comandi npm disponibili per questo progetto.

103 

104# Istruzioni aggiuntive

105- flusso di lavoro git @docs/git-instructions.md

106```

107 

108Per le preferenze personali per progetto che non vuoi archiviare nel controllo del codice sorgente, crea un `CLAUDE.local.md` nella radice del progetto. Si carica insieme a `CLAUDE.md` e viene trattato allo stesso modo. Aggiungi `CLAUDE.local.md` al tuo `.gitignore` in modo che non venga sottoposto a commit; eseguire `/init` e scegliere l'opzione personale lo fa per te.

109 

110Se lavori su più git worktrees dello stesso repository, un `CLAUDE.local.md` ignorato da git esiste solo nel worktree dove lo hai creato. Per condividere istruzioni personali tra worktrees, importa un file dalla tua home directory invece:

111 

112```text theme={null}

113# Preferenze individuali

114- @~/.claude/my-project-instructions.md

115```

116 

117<Warning>

118 La prima volta che Claude Code incontra importazioni esterne in un progetto, mostra una finestra di dialogo di approvazione che elenca i file. Se rifiuti, le importazioni rimangono disabilitate e la finestra di dialogo non appare di nuovo.

119</Warning>

120 

121Per un approccio più strutturato all'organizzazione delle istruzioni, vedi [`.claude/rules/`](#organize-rules-with-claude/rules/).

122 

123### AGENTS.md

124 

125Claude Code legge `CLAUDE.md`, non `AGENTS.md`. Se il tuo repository utilizza già `AGENTS.md` per altri agenti di codifica, crea un `CLAUDE.md` che lo importa in modo che entrambi gli strumenti leggano le stesse istruzioni senza duplicarle. Puoi anche aggiungere istruzioni specifiche di Claude Code sotto l'importazione. Claude carica il file importato all'inizio della sessione, quindi aggiunge il resto:

126 

127```markdown CLAUDE.md theme={null}

128@AGENTS.md

129 

130## Claude Code

131 

132Usa plan mode per le modifiche in `src/billing/`.

133```

134 

135### Come vengono caricati i file CLAUDE.md

136 

137Claude Code legge i file CLAUDE.md camminando verso l'alto nell'albero delle directory dalla tua directory di lavoro corrente, controllando ogni directory lungo il percorso per i file `CLAUDE.md` e `CLAUDE.local.md`. Ciò significa che se esegui Claude Code in `foo/bar/`, carica le istruzioni da `foo/bar/CLAUDE.md`, `foo/CLAUDE.md` e qualsiasi file `CLAUDE.local.md` accanto a loro.

138 

139Tutti i file scoperti vengono concatenati nel contesto piuttosto che sovrascriversi a vicenda. All'interno della gerarchia di directory, il contenuto è ordinato dalla radice del file system fino alla tua directory di lavoro. Per l'esempio `foo/bar/`, `foo/CLAUDE.md` appare nel contesto prima di `foo/bar/CLAUDE.md`, quindi le istruzioni più vicine a dove hai lanciato Claude vengono lette per ultime. All'interno di ogni directory, `CLAUDE.local.md` viene aggiunto dopo `CLAUDE.md`, quindi le tue note personali sono l'ultima cosa che Claude legge a quel livello.

140 

141Claude scopre anche i file `CLAUDE.md` e `CLAUDE.local.md` nelle sottodirectory sotto la tua directory di lavoro corrente. Invece di caricarli all'avvio, vengono inclusi quando Claude legge i file in quelle sottodirectory.

142 

143Se lavori in un grande monorepo dove i file CLAUDE.md di altri team vengono raccolti, usa [`claudeMdExcludes`](#exclude-specific-claude-md-files) per saltarli.

144 

145I commenti HTML a livello di blocco (`<!-- maintainer notes -->`) nei file CLAUDE.md vengono rimossi prima che il contenuto venga iniettato nel contesto di Claude. Usali per lasciare note per i manutentori umani senza spendere token di contesto su di essi. I commenti all'interno dei blocchi di codice vengono preservati. Quando apri un file CLAUDE.md direttamente con lo strumento Read, i commenti rimangono visibili.

146 

147#### Carica da directory aggiuntive

148 

149Il flag `--add-dir` dà a Claude accesso a directory aggiuntive al di fuori della tua directory di lavoro principale. Per impostazione predefinita, i file CLAUDE.md da queste directory non vengono caricati.

150 

151Per caricare anche i file di memoria da directory aggiuntive, imposta la variabile di ambiente `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:

152 

153```bash theme={null}

154CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config

155```

156 

157Questo carica `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` e `CLAUDE.local.md` dalla directory aggiuntiva. `CLAUDE.local.md` viene saltato se escludi `local` da [`--setting-sources`](/it/cli-reference).

158 

159### Organizza le regole con `.claude/rules/`

160 

161Per i progetti più grandi, puoi organizzare le istruzioni in più file usando la directory `.claude/rules/`. Questo mantiene le istruzioni modulari e più facili da mantenere per i team. Le regole possono anche essere [limitate a percorsi di file specifici](#path-specific-rules), quindi vengono caricate nel contesto solo quando Claude lavora con file corrispondenti, riducendo il rumore e risparmiando spazio di contesto.

162 

163<Note>

164 Le regole vengono caricate nel contesto ogni sessione o quando vengono aperti file corrispondenti. Per le istruzioni specifiche dell'attività che non devono essere nel contesto tutto il tempo, usa [skills](/it/skills) invece, che vengono caricate solo quando le invochi o quando Claude determina che sono rilevanti per il tuo prompt.

165</Note>

166 

167#### Configura le regole

168 

169Posiziona i file markdown nella directory `.claude/rules/` del tuo progetto. Ogni file dovrebbe coprire un argomento, con un nome file descrittivo come `testing.md` o `api-design.md`. Tutti i file `.md` vengono scoperti ricorsivamente, quindi puoi organizzare le regole in sottodirectory come `frontend/` o `backend/`:

170 

171```text theme={null}

172your-project/

173├── .claude/

174│ ├── CLAUDE.md # Istruzioni principali del progetto

175│ └── rules/

176│ ├── code-style.md # Linee guida di stile del codice

177│ ├── testing.md # Convenzioni di test

178│ └── security.md # Requisiti di sicurezza

179```

180 

181Le regole senza [frontmatter `paths`](#path-specific-rules) vengono caricate all'avvio con la stessa priorità di `.claude/CLAUDE.md`.

182 

183#### Regole specifiche del percorso

184 

185Le regole possono essere limitate a file specifici usando il frontmatter YAML con il campo `paths`. Queste regole condizionali si applicano solo quando Claude lavora con file che corrispondono ai modelli specificati.

186 

187```markdown theme={null}

188---

189paths:

190 - "src/api/**/*.ts"

191---

192 

193# Regole di sviluppo API

194 

195- Tutti gli endpoint API devono includere la convalida dell'input

196- Usa il formato di risposta di errore standard

197- Includi commenti di documentazione OpenAPI

198```

199 

200Le regole senza un campo `paths` vengono caricate incondizionatamente e si applicano a tutti i file. Le regole con ambito di percorso si attivano quando Claude legge file che corrispondono al modello, non ad ogni utilizzo dello strumento.

201 

202Usa modelli glob nel campo `paths` per abbinare i file per estensione, directory o qualsiasi combinazione:

203 

204| Modello | Corrisponde a |

205| ---------------------- | ---------------------------------------------- |

206| `**/*.ts` | Tutti i file TypeScript in qualsiasi directory |

207| `src/**/*` | Tutti i file nella directory `src/` |

208| `*.md` | File Markdown nella radice del progetto |

209| `src/components/*.tsx` | Componenti React in una directory specifica |

210 

211Puoi specificare più modelli e usare l'espansione tra parentesi graffe per abbinare più estensioni in un modello:

212 

213```markdown theme={null}

214---

215paths:

216 - "src/**/*.{ts,tsx}"

217 - "lib/**/*.ts"

218 - "tests/**/*.test.ts"

219---

220```

221 

222#### Condividi le regole tra i progetti con symlink

223 

224La directory `.claude/rules/` supporta symlink, quindi puoi mantenere un set di regole condivise e collegarle a più progetti. I symlink vengono risolti e caricati normalmente, e i symlink circolari vengono rilevati e gestiti correttamente.

225 

226Questo esempio collega sia una directory condivisa che un file individuale:

227 

228```bash theme={null}

229ln -s ~/shared-claude-rules .claude/rules/shared

230ln -s ~/company-standards/security.md .claude/rules/security.md

231```

232 

233#### Regole a livello di utente

234 

235Le regole personali in `~/.claude/rules/` si applicano a ogni progetto sulla tua macchina. Usale per le preferenze che non sono specifiche del progetto:

236 

237```text theme={null}

238~/.claude/rules/

239├── preferences.md # Le tue preferenze di codifica personali

240└── workflows.md # I tuoi flussi di lavoro preferiti

241```

242 

243Le regole a livello di utente vengono caricate prima delle regole di progetto, dando alle regole di progetto una priorità più alta.

244 

245### Gestisci CLAUDE.md per team di grandi dimensioni

246 

247Per le organizzazioni che distribuiscono Claude Code tra i team, puoi centralizzare le istruzioni e controllare quali file CLAUDE.md vengono caricati.

248 

249#### Distribuisci CLAUDE.md a livello di organizzazione

250 

251Le organizzazioni possono distribuire un CLAUDE.md gestito centralmente che si applica a tutti gli utenti su una macchina. Questo file non può essere escluso dalle impostazioni individuali.

252 

253<Steps>

254 <Step title="Crea il file nella posizione della politica gestita">

255 * macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`

256 * Linux e WSL: `/etc/claude-code/CLAUDE.md`

257 * Windows: `C:\Program Files\ClaudeCode\CLAUDE.md`

258 </Step>

259 

260 <Step title="Distribuisci con il tuo sistema di gestione della configurazione">

261 Usa MDM, Group Policy, Ansible o strumenti simili per distribuire il file tra le macchine degli sviluppatori. Vedi [impostazioni gestite](/it/permissions#managed-settings) per altre opzioni di configurazione a livello di organizzazione.

262 </Step>

263</Steps>

264 

265Un CLAUDE.md gestito e [impostazioni gestite](/it/settings#settings-files) servono a scopi diversi. Usa le impostazioni per l'applicazione tecnica e CLAUDE.md per la guida comportamentale:

266 

267| Preoccupazione | Configura in |

268| :----------------------------------------------------- | :------------------------------------------------------------ |

269| Blocca strumenti, comandi o percorsi di file specifici | Impostazioni gestite: `permissions.deny` |

270| Applica l'isolamento sandbox | Impostazioni gestite: `sandbox.enabled` |

271| Variabili di ambiente e routing del provider API | Impostazioni gestite: `env` |

272| Metodo di autenticazione e blocco dell'organizzazione | Impostazioni gestite: `forceLoginMethod`, `forceLoginOrgUUID` |

273| Linee guida di stile del codice e qualità | CLAUDE.md gestito |

274| Promemoria sulla gestione dei dati e conformità | CLAUDE.md gestito |

275| Istruzioni comportamentali per Claude | CLAUDE.md gestito |

276 

277Le regole delle impostazioni vengono applicate dal client indipendentemente da ciò che Claude decide di fare. Le istruzioni CLAUDE.md modellano il comportamento di Claude ma non sono un livello di applicazione rigido.

278 

279#### Escludi file CLAUDE.md specifici

280 

281Nei grandi monorepo, i file CLAUDE.md antenati possono contenere istruzioni che non sono rilevanti per il tuo lavoro. L'impostazione `claudeMdExcludes` ti consente di saltare file specifici per percorso o modello glob.

282 

283Questo esempio esclude un CLAUDE.md di primo livello e una directory di regole da una cartella padre. Aggiungilo a `.claude/settings.local.json` in modo che l'esclusione rimanga locale alla tua macchina:

284 

285```json theme={null}

286{

287 "claudeMdExcludes": [

288 "**/monorepo/CLAUDE.md",

289 "/home/user/monorepo/other-team/.claude/rules/**"

290 ]

291}

292```

293 

294I modelli vengono abbinati ai percorsi di file assoluti usando la sintassi glob. Puoi configurare `claudeMdExcludes` in qualsiasi [livello di impostazioni](/it/settings#settings-files): utente, progetto, locale o politica gestita. Gli array si uniscono tra i livelli.

295 

296I file CLAUDE.md della politica gestita non possono essere esclusi. Ciò garantisce che le istruzioni a livello di organizzazione si applichino sempre indipendentemente dalle impostazioni individuali.

297 

298## Memoria automatica

299 

300La memoria automatica consente a Claude di accumulare conoscenze tra le sessioni senza che tu scriva nulla. Claude salva note per se stesso mentre lavora: comandi di compilazione, approfondimenti sul debug, note sull'architettura, preferenze di stile del codice e abitudini di flusso di lavoro. Claude non salva qualcosa ogni sessione. Decide cosa vale la pena ricordare in base al fatto che l'informazione sarebbe utile in una conversazione futura.

301 

302<Note>

303 La memoria automatica richiede Claude Code v2.1.59 o successivo. Controlla la tua versione con `claude --version`.

304</Note>

305 

306### Abilita o disabilita la memoria automatica

307 

308La memoria automatica è attivata per impostazione predefinita. Per attivarla/disattivarla, apri `/memory` in una sessione e usa l'interruttore di memoria automatica, oppure imposta `autoMemoryEnabled` nelle impostazioni del tuo progetto:

309 

310```json theme={null}

311{

312 "autoMemoryEnabled": false

313}

314```

315 

316Per disabilitare la memoria automatica tramite variabile di ambiente, imposta `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`.

317 

318### Posizione di archiviazione

319 

320Ogni progetto ottiene la propria directory di memoria in `~/.claude/projects/<project>/memory/`. Il percorso `<project>` è derivato dal repository git, quindi tutti i worktrees e le sottodirectory all'interno dello stesso repo condividono una directory di memoria automatica. Al di fuori di un repository git, viene utilizzata la radice del progetto.

321 

322Per archiviare la memoria automatica in una posizione diversa, imposta `autoMemoryDirectory` nelle impostazioni dell'utente in `~/.claude/settings.json`:

323 

324```json theme={null}

325{

326 "autoMemoryDirectory": "~/my-custom-memory-dir"

327}

328```

329 

330Il valore deve essere un percorso assoluto o iniziare con `~/`. Questa impostazione è accettata dalle impostazioni di politica e utente, e dal flag `--settings`. Non è accettata dalle impostazioni di progetto o locali, poiché entrambi i file si trovano all'interno della directory del progetto e un repository clonato potrebbe fornire uno di essi per reindirizzare le scritture di memoria automatica a posizioni sensibili.

331 

332La directory contiene un punto di ingresso `MEMORY.md` e file di argomento opzionali:

333 

334```text theme={null}

335~/.claude/projects/<project>/memory/

336├── MEMORY.md # Indice conciso, caricato in ogni sessione

337├── debugging.md # Note dettagliate sui modelli di debug

338├── api-conventions.md # Decisioni di progettazione API

339└── ... # Qualsiasi altro file di argomento che Claude crea

340```

341 

342`MEMORY.md` funge da indice della directory di memoria. Claude legge e scrive file in questa directory durante la tua sessione, usando `MEMORY.md` per tenere traccia di ciò che è archiviato dove.

343 

344La memoria automatica è locale alla macchina. Tutti i worktrees e le sottodirectory all'interno dello stesso repository git condividono una directory di memoria automatica. I file non vengono condivisi tra macchine o ambienti cloud.

345 

346### Come funziona

347 

348Le prime 200 righe di `MEMORY.md`, o i primi 25KB, a seconda di quale viene raggiunto per primo, vengono caricate all'inizio di ogni conversazione. Il contenuto oltre quella soglia non viene caricato all'inizio della sessione. Claude mantiene `MEMORY.md` conciso spostando le note dettagliate in file di argomento separati.

349 

350Questo limite si applica solo a `MEMORY.md`. I file CLAUDE.md vengono caricati completamente indipendentemente dalla lunghezza, anche se i file più brevi producono una migliore aderenza.

351 

352I file di argomento come `debugging.md` o `patterns.md` non vengono caricati all'avvio. Claude li legge su richiesta usando i suoi strumenti di file standard quando ha bisogno delle informazioni.

353 

354Claude legge e scrive file di memoria durante la tua sessione. Quando vedi "Writing memory" o "Recalled memory" nell'interfaccia di Claude Code, Claude sta attivamente aggiornando o leggendo da `~/.claude/projects/<project>/memory/`.

355 

356### Controlla e modifica la tua memoria

357 

358I file di memoria automatica sono markdown semplice che puoi modificare o eliminare in qualsiasi momento. Esegui [`/memory`](#view-and-edit-with-memory) per sfogliare e aprire i file di memoria da una sessione.

359 

360## Visualizza e modifica con `/memory`

361 

362Il comando `/memory` elenca tutti i file CLAUDE.md, CLAUDE.local.md e rules caricati nella tua sessione corrente, ti consente di attivare o disattivare la memoria automatica e fornisce un collegamento per aprire la cartella di memoria automatica. Seleziona qualsiasi file per aprirlo nel tuo editor.

363 

364Quando chiedi a Claude di ricordare qualcosa, come "usa sempre pnpm, non npm" o "ricorda che i test API richiedono un'istanza Redis locale", Claude lo salva nella memoria automatica. Per aggiungere istruzioni a CLAUDE.md, chiedi direttamente a Claude, come "aggiungi questo a CLAUDE.md", oppure modifica il file tu stesso tramite `/memory`.

365 

366## Risolvi i problemi di memoria

367 

368Questi sono i problemi più comuni con CLAUDE.md e la memoria automatica, insieme ai passaggi per risolverli.

369 

370### Claude non sta seguendo il mio CLAUDE.md

371 

372Il contenuto di CLAUDE.md viene consegnato come messaggio utente dopo il prompt di sistema, non come parte del prompt di sistema stesso. Claude lo legge e cerca di seguirlo, ma non c'è garanzia di conformità rigorosa, specialmente per istruzioni vaghe o conflittuali.

373 

374Per eseguire il debug:

375 

376* Esegui `/memory` per verificare che i tuoi file CLAUDE.md e CLAUDE.local.md vengono caricati. Se un file non è elencato, Claude non può vederlo.

377* Verifica che il CLAUDE.md rilevante si trovi in una posizione che viene caricata per la tua sessione (vedi [Scegli dove mettere i file CLAUDE.md](#choose-where-to-put-claude-md-files)).

378* Rendi le istruzioni più specifiche. "Usa indentazione a 2 spazi" funziona meglio di "formatta il codice bene".

379* Cerca istruzioni conflittuali tra i file CLAUDE.md. Se due file danno una guida diversa per lo stesso comportamento, Claude potrebbe sceglierne una arbitrariamente.

380 

381Per le istruzioni che vuoi a livello di prompt di sistema, usa [`--append-system-prompt`](/it/cli-reference#system-prompt-flags). Questo deve essere passato ad ogni invocazione, quindi è più adatto a script e automazione che all'uso interattivo.

382 

383<Tip>

384 Usa l'hook [`InstructionsLoaded`](/it/hooks#instructionsloaded) per registrare esattamente quali file di istruzioni vengono caricati, quando vengono caricati e perché. Questo è utile per eseguire il debug di regole specifiche del percorso o file caricati pigriamente nelle sottodirectory.

385</Tip>

386 

387### Non so cosa ha salvato la memoria automatica

388 

389Esegui `/memory` e seleziona la cartella di memoria automatica per sfogliare ciò che Claude ha salvato. Tutto è markdown semplice che puoi leggere, modificare o eliminare.

390 

391### Il mio CLAUDE.md è troppo grande

392 

393I file con più di 200 righe consumano più contesto e possono ridurre l'aderenza. Usa [regole con ambito di percorso](#path-specific-rules) per caricare istruzioni solo quando Claude lavora con file corrispondenti, oppure riduci il contenuto che non è necessario in ogni sessione. La divisione in [importazioni `@path`](#import-additional-files) aiuta l'organizzazione ma non riduce il contesto, poiché i file importati vengono caricati all'avvio.

394 

395### Le istruzioni sembrano perse dopo `/compact`

396 

397CLAUDE.md di progetto sopravvive alla compattazione: dopo `/compact`, Claude rilegge il tuo CLAUDE.md dal disco e lo reinetta nella sessione. I file CLAUDE.md annidati nelle sottodirectory non vengono reinettati automaticamente; vengono ricaricati la prossima volta che Claude legge un file in quella sottodirectory.

398 

399Se un'istruzione è scomparsa dopo la compattazione, è stata data solo nella conversazione o si trova in un CLAUDE.md annidato che non è stato ancora ricaricato. Aggiungi istruzioni solo per conversazione a CLAUDE.md per farle persistere. Vedi [Cosa sopravvive alla compattazione](/it/context-window#what-survives-compaction) per il breakdown completo.

400 

401Vedi [Scrivi istruzioni efficaci](#write-effective-instructions) per una guida su dimensione, struttura e specificità.

402 

403## Risorse correlate

404 

405* [Esegui il debug della tua configurazione](/it/debug-your-config): diagnostica perché CLAUDE.md o le impostazioni non hanno effetto

406* [Skills](/it/skills): pacchetto di flussi di lavoro ripetibili che si caricano su richiesta

407* [Impostazioni](/it/settings): configura il comportamento di Claude Code con file di impostazioni

408* [Memoria subagent](/it/sub-agents#enable-persistent-memory): consenti ai subagents di mantenere la propria memoria automatica

microsoft-foundry.md +314 −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# Claude Code su Microsoft Foundry

6 

7> Scopri come configurare Claude Code tramite Microsoft Foundry, inclusi setup, configurazione e risoluzione dei problemi.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="foundry" />} />

190 

191## Prerequisiti

192 

193Prima di configurare Claude Code con Microsoft Foundry, assicurati di avere:

194 

195* Un abbonamento Azure con accesso a Microsoft Foundry

196* Autorizzazioni RBAC per creare risorse e distribuzioni di Microsoft Foundry

197* Azure CLI installato e configurato (facoltativo - necessario solo se non hai un altro meccanismo per ottenere le credenziali)

198 

199<Note>

200 Se stai distribuendo Claude Code a più utenti, [fissa le versioni del tuo modello](#4-pin-model-versions) per evitare problemi quando Anthropic rilascia nuovi modelli.

201</Note>

202 

203## Setup

204 

205### 1. Provisioning della risorsa Microsoft Foundry

206 

207Per prima cosa, crea una risorsa Claude in Azure:

208 

2091. Accedi al [portale Microsoft Foundry](https://ai.azure.com/)

2102. Crea una nuova risorsa, annotando il nome della risorsa

2113. Crea distribuzioni per i modelli Claude:

212 * Claude Opus

213 * Claude Sonnet

214 * Claude Haiku

215 

216### 2. Configurare le credenziali Azure

217 

218Claude Code supporta due metodi di autenticazione per Microsoft Foundry. Scegli il metodo che meglio si adatta ai tuoi requisiti di sicurezza.

219 

220**Opzione A: Autenticazione tramite chiave API**

221 

2221. Accedi alla tua risorsa nel portale Microsoft Foundry

2232. Vai alla sezione **Endpoint e chiavi**

2243. Copia **Chiave API**

2254. Imposta la variabile di ambiente:

226 

227```bash theme={null}

228export ANTHROPIC_FOUNDRY_API_KEY=your-azure-api-key

229```

230 

231**Opzione B: Autenticazione Microsoft Entra ID**

232 

233Quando `ANTHROPIC_FOUNDRY_API_KEY` non è impostato, Claude Code utilizza automaticamente la [catena di credenziali predefinita](https://learn.microsoft.com/en-us/azure/developer/javascript/sdk/authentication/credential-chains#defaultazurecredential-overview) di Azure SDK.

234Questo supporta una varietà di metodi per autenticare carichi di lavoro locali e remoti.

235 

236Negli ambienti locali, puoi comunemente utilizzare Azure CLI:

237 

238```bash theme={null}

239az login

240```

241 

242<Note>

243 Quando si utilizza Microsoft Foundry, i comandi `/login` e `/logout` sono disabilitati poiché l'autenticazione viene gestita tramite le credenziali Azure.

244</Note>

245 

246### 3. Configurare Claude Code

247 

248Imposta le seguenti variabili di ambiente per abilitare Microsoft Foundry:

249 

250```bash theme={null}

251# Abilita l'integrazione Microsoft Foundry

252export CLAUDE_CODE_USE_FOUNDRY=1

253 

254# Nome della risorsa Azure (sostituisci {resource} con il nome della tua risorsa)

255export ANTHROPIC_FOUNDRY_RESOURCE={resource}

256# Oppure fornisci l'URL di base completo:

257# export ANTHROPIC_FOUNDRY_BASE_URL=https://{resource}.services.ai.azure.com/anthropic

258```

259 

260### 4. Fissa le versioni del modello

261 

262<Warning>

263 Fissa versioni specifiche del modello per ogni distribuzione. Se utilizzi alias di modello (`sonnet`, `opus`, `haiku`) senza fissare, Claude Code potrebbe tentare di utilizzare una versione di modello più recente che non è disponibile nel tuo account Foundry, interrompendo gli utenti esistenti quando Anthropic rilascia aggiornamenti. Quando crei distribuzioni Azure, seleziona una versione di modello specifica piuttosto che "aggiornamento automatico alla versione più recente".

264</Warning>

265 

266Imposta le variabili del modello in modo che corrispondano ai nomi di distribuzione che hai creato nel passaggio 1.

267 

268Senza `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` su Foundry si risolve in Opus 4.6. Impostalo sull'ID di Opus 4.7 per utilizzare il modello più recente:

269 

270```bash theme={null}

271export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'

272export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

273export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'

274```

275 

276Per gli ID dei modelli attuali e legacy, vedi [Panoramica dei modelli](https://platform.claude.com/docs/en/about-claude/models/overview). Vedi [Configurazione del modello](/it/model-config#pin-models-for-third-party-deployments) per l'elenco completo delle variabili di ambiente.

277 

278[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) è abilitato automaticamente. Per richiedere un TTL della cache di 1 ora invece del valore predefinito di 5 minuti, imposta la seguente variabile; le scritture della cache con un TTL di 1 ora vengono fatturate a una tariffa più elevata:

279 

280```bash theme={null}

281export ENABLE_PROMPT_CACHING_1H=1

282```

283 

284## Configurazione RBAC di Azure

285 

286I ruoli predefiniti `Azure AI User` e `Cognitive Services User` includono tutte le autorizzazioni necessarie per invocare i modelli Claude.

287 

288Per autorizzazioni più restrittive, crea un ruolo personalizzato con quanto segue:

289 

290```json theme={null}

291{

292 "permissions": [

293 {

294 "dataActions": [

295 "Microsoft.CognitiveServices/accounts/providers/*"

296 ]

297 }

298 ]

299}

300```

301 

302Per i dettagli, vedi [Documentazione RBAC di Microsoft Foundry](https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/rbac-azure-ai-foundry).

303 

304## Risoluzione dei problemi

305 

306Se ricevi un errore "Failed to get token from azureADTokenProvider: ChainedTokenCredential authentication failed":

307 

308* Configura Entra ID nell'ambiente, oppure imposta `ANTHROPIC_FOUNDRY_API_KEY`.

309 

310## Risorse aggiuntive

311 

312* [Documentazione di Microsoft Foundry](https://learn.microsoft.com/en-us/azure/ai-foundry/what-is-azure-ai-foundry)

313* [Modelli di Microsoft Foundry](https://ai.azure.com/explore/models)

314* [Prezzi di Microsoft Foundry](https://azure.microsoft.com/en-us/pricing/details/ai-foundry/)

model-config.md +382 −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# Configurazione del modello

6 

7> Scopri la configurazione del modello Claude Code, inclusi gli alias dei modelli come `opusplan`

8 

9## Modelli disponibili

10 

11Per l'impostazione `model` in Claude Code, è possibile configurare:

12 

13* Un **alias del modello**

14* Un **nome del modello**

15 * API Anthropic: un **[nome del modello](https://platform.claude.com/docs/it/about-claude/models/overview)** completo

16 * Bedrock: un ARN del profilo di inferenza

17 * Foundry: un nome di distribuzione

18 * Vertex: un nome di versione

19 

20### Alias dei modelli

21 

22Gli alias dei modelli forniscono un modo conveniente per selezionare le impostazioni del modello senza dover ricordare i numeri di versione esatti:

23 

24| Alias del modello | Comportamento |

25| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

26| **`default`** | Valore speciale che cancella qualsiasi override del modello e ripristina il modello consigliato per il tipo di account. Non è di per sé un alias del modello |

27| **`best`** | Utilizza il modello più capace disponibile, attualmente equivalente a `opus` |

28| **`sonnet`** | Utilizza il modello Sonnet più recente per le attività di codifica quotidiane |

29| **`opus`** | Utilizza il modello Opus più recente per attività di ragionamento complesso |

30| **`haiku`** | Utilizza il modello Haiku veloce ed efficiente per attività semplici |

31| **`sonnet[1m]`** | Utilizza Sonnet con una [finestra di contesto di 1 milione di token](https://platform.claude.com/docs/it/build-with-claude/context-windows#1m-token-context-window) per sessioni lunghe |

32| **`opus[1m]`** | Utilizza Opus con una [finestra di contesto di 1 milione di token](https://platform.claude.com/docs/it/build-with-claude/context-windows#1m-token-context-window) per sessioni lunghe |

33| **`opusplan`** | Modalità speciale che utilizza `opus` durante Plan Mode, quindi passa a `sonnet` per l'esecuzione |

34 

35Su API Anthropic, `opus` si risolve in Opus 4.7 e `sonnet` si risolve in Sonnet 4.6. Su Bedrock, Vertex e Foundry, `opus` si risolve in Opus 4.6 e `sonnet` si risolve in Sonnet 4.5; modelli più recenti sono disponibili su questi provider selezionando il nome del modello completo esplicitamente o impostando `ANTHROPIC_DEFAULT_OPUS_MODEL` o `ANTHROPIC_DEFAULT_SONNET_MODEL`.

36 

37Gli alias puntano alla versione consigliata per il provider e si aggiornano nel tempo. Per fissare una versione specifica, utilizzare il nome del modello completo (ad esempio, `claude-opus-4-7`) o impostare la variabile di ambiente corrispondente come `ANTHROPIC_DEFAULT_OPUS_MODEL`.

38 

39<Note>

40 Opus 4.7 richiede Claude Code v2.1.111 o successivo. Eseguire `claude update` per aggiornare.

41</Note>

42 

43### Impostazione del modello

44 

45È possibile configurare il modello in diversi modi, elencati in ordine di priorità:

46 

471. **Durante la sessione** - Utilizzare `/model <alias|name>` per cambiare immediatamente, oppure eseguire `/model` senza argomenti per aprire il selettore. Il selettore chiede conferma quando la conversazione ha output precedente, poiché la risposta successiva rilegge la cronologia completa senza contesto memorizzato nella cache

482. **All'avvio** - Avviare con `claude --model <alias|name>`

493. **Variabile di ambiente** - Impostare `ANTHROPIC_MODEL=<alias|name>`

504. **Impostazioni** - Configurare in modo permanente nel file delle impostazioni utilizzando il campo `model`.

51 

52La selezione `/model` viene salvata nelle impostazioni utente e persiste tra i riavvii. A partire dalla v2.1.117, se il file `.claude/settings.json` del progetto fissa un modello diverso, Claude Code scrive anche la scelta in `.claude/settings.local.json` in modo che continui ad applicarsi in quel progetto dopo un riavvio. Le impostazioni gestite hanno la precedenza e si riapplicano al prossimo avvio.

53 

54Quando il modello attivo all'avvio proviene dalle impostazioni del progetto o gestite piuttosto che dalla propria selezione, l'intestazione di avvio mostra quale file di impostazioni lo ha impostato. Eseguire `/model` per eseguire l'override per la sessione corrente.

55 

56Esempio di utilizzo:

57 

58```bash theme={null}

59# Avviare con Opus

60claude --model opus

61 

62# Passare a Sonnet durante la sessione

63/model sonnet

64```

65 

66File delle impostazioni di esempio:

67 

68```json theme={null}

69{

70 "permissions": {

71 ...

72 },

73 "model": "opus"

74}

75```

76 

77## Limitare la selezione del modello

78 

79Gli amministratori aziendali possono utilizzare `availableModels` nelle [impostazioni gestite o di policy](/it/settings#settings-files) per limitare quali modelli gli utenti possono selezionare.

80 

81Quando `availableModels` è impostato, gli utenti non possono passare a modelli non presenti nell'elenco tramite `/model`, il flag `--model`, o la variabile di ambiente `ANTHROPIC_MODEL`.

82 

83```json theme={null}

84{

85 "availableModels": ["sonnet", "haiku"]

86}

87```

88 

89### Comportamento del modello predefinito

90 

91L'opzione Predefinito nel selettore di modelli non è interessata da `availableModels`. Rimane sempre disponibile e rappresenta il valore predefinito di runtime del sistema [in base al livello di sottoscrizione dell'utente](#default-model-setting).

92 

93Anche con `availableModels: []`, gli utenti possono comunque utilizzare Claude Code con il modello Predefinito per il loro livello.

94 

95### Controllare il modello su cui gli utenti eseguono

96 

97L'impostazione `model` è una selezione iniziale, non un'applicazione. Imposta quale modello è attivo quando una sessione inizia, ma gli utenti possono comunque aprire `/model` e scegliere Predefinito, che si risolve nel valore predefinito del sistema per il loro livello indipendentemente da ciò che `model` è impostato.

98 

99Per controllare completamente l'esperienza del modello, combinare tre impostazioni:

100 

101* **`availableModels`**: limita a quali modelli denominati gli utenti possono passare

102* **`model`**: imposta la selezione del modello iniziale quando una sessione inizia

103* **`ANTHROPIC_DEFAULT_SONNET_MODEL`** / **`ANTHROPIC_DEFAULT_OPUS_MODEL`** / **`ANTHROPIC_DEFAULT_HAIKU_MODEL`**: controllano a cosa si risolvono l'opzione Predefinito e gli alias `sonnet`, `opus` e `haiku`

104 

105Questo esempio avvia gli utenti su Sonnet 4.5, limita il selettore a Sonnet e Haiku, e fissa Predefinito per risolversi a Sonnet 4.5 piuttosto che alla versione più recente:

106 

107```json theme={null}

108{

109 "model": "claude-sonnet-4-5",

110 "availableModels": ["claude-sonnet-4-5", "haiku"],

111 "env": {

112 "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5"

113 }

114}

115```

116 

117Senza il blocco `env`, un utente che seleziona Predefinito nel selettore otterrebbe la versione Sonnet più recente, bypassando il pin di versione in `model` e `availableModels`.

118 

119### Comportamento di unione

120 

121Quando `availableModels` è impostato a più livelli, come nelle impostazioni utente e nelle impostazioni del progetto, gli array vengono uniti e deduplicati. Per applicare un elenco di autorizzazione rigoroso, impostare `availableModels` nelle impostazioni gestite o di policy che hanno la priorità più alta.

122 

123### ID di modello Mantle

124 

125Quando l'[endpoint Bedrock Mantle](/it/amazon-bedrock#use-the-mantle-endpoint) è abilitato, le voci in `availableModels` che iniziano con `anthropic.` vengono aggiunte al selettore `/model` come opzioni personalizzate e instradate all'endpoint Mantle. Questa è un'eccezione alla corrispondenza solo alias descritta in [Fissare i modelli per distribuzioni di terze parti](#pin-models-for-third-party-deployments). L'impostazione limita comunque il selettore alle voci elencate, quindi includere gli alias standard insieme a qualsiasi ID Mantle.

126 

127## Comportamento speciale del modello

128 

129### Impostazione del modello `default`

130 

131Il comportamento di `default` dipende dal tipo di account:

132 

133* **Max e Team Premium**: per impostazione predefinita Opus 4.7

134* **Pro, Team Standard, Enterprise e API Anthropic**: per impostazione predefinita Sonnet 4.6

135* **Bedrock, Vertex e Foundry**: per impostazione predefinita Sonnet 4.5

136 

137Claude Code potrebbe eseguire automaticamente il fallback a Sonnet se si raggiunge una soglia di utilizzo con Opus.

138 

139<Note>

140 Il 23 aprile 2026, il modello predefinito per gli utenti Enterprise con pagamento in base al consumo e API Anthropic cambierà in Opus 4.7. Per mantenere un valore predefinito diverso, impostare `ANTHROPIC_MODEL` o il campo `model` nelle [impostazioni gestite dal server](/it/server-managed-settings).

141</Note>

142 

143### Impostazione del modello `opusplan`

144 

145L'alias del modello `opusplan` fornisce un approccio ibrido automatizzato:

146 

147* **In Plan Mode** - Utilizza `opus` per il ragionamento complesso e le decisioni architettoniche

148* **In modalità esecuzione** - Passa automaticamente a `sonnet` per la generazione di codice e l'implementazione

149 

150Questo ti dà il meglio di entrambi i mondi: il ragionamento superiore di Opus per la pianificazione e l'efficienza di Sonnet per l'esecuzione.

151 

152La fase Opus in Plan Mode viene eseguita con la finestra di contesto standard di 200K. L'aggiornamento automatico 1M descritto in [Contesto esteso](#extended-context) si applica all'impostazione del modello `opus` e non si estende a `opusplan`.

153 

154### Regolare il livello di sforzo

155 

156I [livelli di sforzo](https://platform.claude.com/docs/it/build-with-claude/effort) controllano il ragionamento adattivo, che consente al modello di decidere se e quanto pensare ad ogni passo in base alla complessità dell'attività. Lo sforzo inferiore è più veloce ed economico per attività semplici, mentre lo sforzo superiore fornisce un ragionamento più profondo per problemi complessi.

157 

158Lo sforzo è supportato su Opus 4.7, Opus 4.6 e Sonnet 4.6. I livelli disponibili dipendono dal modello:

159 

160| Modello | Livelli |

161| :-------------------- | :-------------------------------------- |

162| Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |

163| Opus 4.6 e Sonnet 4.6 | `low`, `medium`, `high`, `max` |

164 

165Se imposti un livello che il modello attivo non supporta, Claude Code ricade al livello supportato più alto pari o inferiore a quello impostato. Ad esempio, `xhigh` viene eseguito come `high` su Opus 4.6.

166 

167A partire dalla v2.1.117, lo sforzo predefinito è `xhigh` su Opus 4.7 e `high` su Opus 4.6 e Sonnet 4.6.

168 

169Quando esegui Opus 4.7 per la prima volta, Claude Code applica `xhigh` anche se hai precedentemente impostato un livello di sforzo diverso per Opus 4.6 o Sonnet 4.6. Esegui `/effort` di nuovo per scegliere un livello diverso dopo il passaggio.

170 

171`low`, `medium`, `high` e `xhigh` persistono tra le sessioni. `max` fornisce il ragionamento più profondo senza vincoli sulla spesa di token e si applica solo alla sessione corrente, tranne quando impostato tramite la variabile di ambiente `CLAUDE_CODE_EFFORT_LEVEL`.

172 

173#### Scegliere un livello di sforzo

174 

175Ogni livello scambia la spesa di token rispetto alla capacità. Il valore predefinito è adatto alla maggior parte delle attività di codifica; regola quando desideri un equilibrio diverso.

176 

177| Livello | Quando utilizzarlo |

178| :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

179| `low` | Riservare per attività brevi, limitate e sensibili alla latenza che non sono sensibili all'intelligenza |

180| `medium` | Riduce l'utilizzo di token per il lavoro sensibile ai costi che può scambiare un po' di intelligenza |

181| `high` | Bilancia l'utilizzo di token e l'intelligenza. Utilizzare come minimo per il lavoro sensibile all'intelligenza, o per ridurre la spesa di token rispetto a `xhigh` |

182| `xhigh` | Migliori risultati per la maggior parte delle attività di codifica e agentic. Valore predefinito consigliato su Opus 4.7 |

183| `max` | Può migliorare le prestazioni su attività impegnative ma potrebbe mostrare rendimenti decrescenti ed è soggetto a pensiero eccessivo. Testare prima di adottare ampiamente |

184 

185La scala dello sforzo è calibrata per modello, quindi lo stesso nome di livello non rappresenta lo stesso valore sottostante tra i modelli.

186 

187Per un ragionamento profondo una tantum senza modificare l'impostazione della sessione, includere "ultrathink" nel prompt. Questo aggiunge un'istruzione in contesto che dice al modello di ragionare di più su quel turno; non cambia il livello di sforzo inviato all'API.

188 

189#### Impostare il livello di sforzo

190 

191È possibile modificare lo sforzo attraverso uno dei seguenti:

192 

193* **`/effort`**: eseguire `/effort` senza argomenti per aprire un cursore interattivo, `/effort` seguito da un nome di livello per impostarlo direttamente, o `/effort auto` per ripristinare il valore predefinito del modello

194* **In `/model`**: utilizzare i tasti freccia sinistra/destra per regolare il cursore dello sforzo quando si seleziona un modello

195* **Flag `--effort`**: passare un nome di livello per impostarlo per una singola sessione quando si avvia Claude Code

196* **Variabile di ambiente**: impostare `CLAUDE_CODE_EFFORT_LEVEL` su un nome di livello o `auto`

197* **Impostazioni**: impostare `effortLevel` nel file delle impostazioni

198* **Frontmatter di skill e subagent**: impostare `effort` in un file markdown di [skill](/it/skills#frontmatter-reference) o [subagent](/it/sub-agents#supported-frontmatter-fields) per sovrascrivere il livello di sforzo quando quella skill o subagent viene eseguita

199 

200La variabile di ambiente ha la precedenza su tutti gli altri metodi, quindi il livello configurato, quindi il valore predefinito del modello. Lo sforzo del frontmatter si applica quando quella skill o subagent è attiva, sovrascrivendo il livello della sessione ma non la variabile di ambiente.

201 

202Il cursore dello sforzo appare in `/model` quando è selezionato un modello supportato. Il livello di sforzo corrente viene visualizzato anche accanto al logo e al spinner, ad esempio "with low effort", in modo da poter confermare quale impostazione è attiva senza aprire `/model`.

203 

204#### Ragionamento adattivo e budget di pensiero fissi

205 

206Il ragionamento adattivo rende il pensiero facoltativo ad ogni passo, quindi Claude può rispondere più velocemente ai prompt di routine e riservare un pensiero più profondo per i passi che ne traggono vantaggio. Se desideri che Claude pensi più o meno spesso di quanto il livello corrente produce, puoi dirlo direttamente nel prompt o in `CLAUDE.md`; il modello risponde a quella guida entro l'impostazione dello sforzo.

207 

208Opus 4.7 utilizza sempre il ragionamento adattivo. La modalità budget di pensiero fisso e `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` non si applicano ad esso.

209 

210Su Opus 4.6 e Sonnet 4.6, è possibile impostare `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` per ripristinare il budget di pensiero fisso precedente controllato da `MAX_THINKING_TOKENS`. Vedere [variabili di ambiente](/it/env-vars).

211 

212### Contesto esteso

213 

214Opus 4.7, Opus 4.6 e Sonnet 4.6 supportano una [finestra di contesto di 1 milione di token](https://platform.claude.com/docs/it/build-with-claude/context-windows#1m-token-context-window) per sessioni lunghe con basi di codice di grandi dimensioni.

215 

216La disponibilità varia in base al modello e al piano. Nei piani Max, Team ed Enterprise, Opus viene automaticamente aggiornato al contesto 1M senza configurazione aggiuntiva. Questo si applica sia ai posti Team Standard che Team Premium.

217 

218| Piano | Opus con contesto 1M | Sonnet con contesto 1M |

219| ---------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |

220| Max, Team ed Enterprise | Incluso nell'abbonamento | Richiede [utilizzo extra](https://support.claude.com/it/articles/12429409-extra-usage-for-paid-claude-plans) |

221| Pro | Richiede [utilizzo extra](https://support.claude.com/it/articles/12429409-extra-usage-for-paid-claude-plans) | Richiede [utilizzo extra](https://support.claude.com/it/articles/12429409-extra-usage-for-paid-claude-plans) |

222| API e pagamento in base al consumo | Accesso completo | Accesso completo |

223 

224Per disabilitare completamente il contesto 1M, impostare `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Questo rimuove le varianti di modello 1M dal selettore di modelli. Vedere [variabili di ambiente](/it/env-vars).

225 

226La finestra di contesto 1M utilizza i prezzi standard del modello senza premio per i token oltre 200K. Per i piani in cui il contesto esteso è incluso nell'abbonamento, l'utilizzo rimane coperto dall'abbonamento. Per i piani che accedono al contesto esteso tramite utilizzo extra, i token vengono fatturati all'utilizzo extra.

227 

228Se l'account supporta il contesto 1M, l'opzione appare nel selettore di modelli (`/model`) nelle versioni più recenti di Claude Code. Se non la vedi, prova a riavviare la sessione.

229 

230È anche possibile utilizzare il suffisso `[1m]` con alias di modelli o nomi di modelli completi:

231 

232```bash theme={null}

233# Utilizzare l'alias opus[1m] o sonnet[1m]

234/model opus[1m]

235/model sonnet[1m]

236 

237# O aggiungere [1m] a un nome di modello completo

238/model claude-opus-4-7[1m]

239```

240 

241## Verifica del modello corrente

242 

243È possibile vedere quale modello stai utilizzando attualmente in diversi modi:

244 

2451. Nella [riga di stato](/it/statusline) (se configurata)

2462. In `/status`, che visualizza anche le informazioni dell'account.

247 

248## Aggiungere un'opzione di modello personalizzato

249 

250Utilizzare `ANTHROPIC_CUSTOM_MODEL_OPTION` per aggiungere una singola voce personalizzata al selettore `/model` senza sostituire gli alias incorporati. Questo è utile per testare ID di modello che Claude Code non elenca per impostazione predefinita. Per le distribuzioni di gateway LLM, Claude Code popola il selettore automaticamente dall'endpoint `/v1/models` del gateway, quindi questa variabile è necessaria solo quando la scoperta non restituisce il modello desiderato. Vedere [Selezione del modello del gateway LLM](/it/llm-gateway#model-selection).

251 

252Questo esempio imposta tutte e tre le variabili per rendere selezionabile una distribuzione Opus instradata tramite gateway:

253 

254```bash theme={null}

255export ANTHROPIC_CUSTOM_MODEL_OPTION="my-gateway/claude-opus-4-7"

256export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Opus via Gateway"

257export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Custom deployment routed through the internal LLM gateway"

258```

259 

260La voce personalizzata appare in fondo al selettore `/model`. `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` e `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` sono facoltativi. Se omessi, l'ID del modello viene utilizzato come nome e la descrizione per impostazione predefinita è `Custom model (<model-id>)`.

261 

262Claude Code salta la convalida per l'ID del modello impostato in `ANTHROPIC_CUSTOM_MODEL_OPTION`, quindi è possibile utilizzare qualsiasi stringa che l'endpoint API accetta.

263 

264## Variabili di ambiente

265 

266È possibile utilizzare le seguenti variabili di ambiente, che devono essere **nomi di modelli** completi (o equivalenti per il provider API), per controllare i nomi dei modelli a cui gli alias si mappano.

267 

268| Variabile di ambiente | Descrizione |

269| -------------------------------- | ---------------------------------------------------------------------------------------------------------- |

270| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Il modello da utilizzare per `opus`, o per `opusplan` quando Plan Mode è attivo. |

271| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Il modello da utilizzare per `sonnet`, o per `opusplan` quando Plan Mode non è attivo. |

272| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Il modello da utilizzare per `haiku`, o per [funzionalità in background](/it/costs#background-token-usage) |

273| `CLAUDE_CODE_SUBAGENT_MODEL` | Il modello da utilizzare per [subagents](/it/sub-agents) |

274 

275Nota: `ANTHROPIC_SMALL_FAST_MODEL` è deprecato a favore di `ANTHROPIC_DEFAULT_HAIKU_MODEL`.

276 

277### Fissare i modelli per distribuzioni di terze parti

278 

279Quando si distribuisce Claude Code tramite [Bedrock](/it/amazon-bedrock), [Vertex AI](/it/google-vertex-ai) o [Foundry](/it/microsoft-foundry), fissare le versioni dei modelli prima di distribuire agli utenti.

280 

281Senza fissaggio, Claude Code utilizza alias di modelli (`sonnet`, `opus`, `haiku`) che si risolvono nella versione più recente. Quando Anthropic rilascia un nuovo modello che non è ancora abilitato nell'account di un utente, gli utenti Bedrock e Vertex AI vedono un avviso e ricadono nella versione precedente per quella sessione, mentre gli utenti Foundry vedono errori perché Foundry non ha alcun controllo di avvio equivalente.

282 

283<Warning>

284 Impostare tutte e tre le variabili di ambiente del modello su ID di versione specifici come parte della configurazione iniziale. Il fissaggio consente di controllare quando i tuoi utenti passano a un nuovo modello.

285</Warning>

286 

287Utilizzare le seguenti variabili di ambiente con ID di modello specifici della versione per il provider:

288 

289| Provider | Esempio |

290| :-------- | :------------------------------------------------------------------- |

291| Bedrock | `export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'` |

292| Vertex AI | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |

293| Foundry | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |

294 

295Applicare lo stesso modello per `ANTHROPIC_DEFAULT_SONNET_MODEL` e `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Per gli ID di modello attuali e legacy su tutti i provider, vedere [Panoramica dei modelli](https://platform.claude.com/docs/it/about-claude/models/overview). Per aggiornare gli utenti a una nuova versione del modello, aggiornare queste variabili di ambiente e ridistribuire.

296 

297Per abilitare il [contesto esteso](#extended-context) per un modello fissato, aggiungere `[1m]` all'ID del modello in `ANTHROPIC_DEFAULT_OPUS_MODEL` o `ANTHROPIC_DEFAULT_SONNET_MODEL`:

298 

299```bash theme={null}

300export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7[1m]'

301```

302 

303Il suffisso `[1m]` applica la finestra di contesto 1M a tutto l'utilizzo di quell'alias, incluso `opusplan`. Claude Code rimuove il suffisso prima di inviare l'ID del modello al provider. Aggiungere `[1m]` solo quando il modello sottostante supporta il contesto 1M, come Opus 4.7 o Sonnet 4.6.

304 

305<Note>

306 L'elenco di autorizzazione `settings.availableModels` si applica comunque quando si utilizzano provider di terze parti. Il filtraggio corrisponde all'alias del modello (`opus`, `sonnet`, `haiku`), non all'ID del modello specifico del provider.

307</Note>

308 

309### Personalizzare la visualizzazione e le capacità del modello fissato

310 

311Quando si fissa un modello su un provider di terze parti, l'ID specifico del provider appare così com'è nel selettore `/model` e Claude Code potrebbe non riconoscere quali funzionalità il modello supporta. È possibile sovrascrivere il nome di visualizzazione e dichiarare le capacità con variabili di ambiente complementari per ogni modello fissato.

312 

313Queste variabili hanno effetto su provider di terze parti come Bedrock, Vertex AI e Foundry. Le variabili `_NAME` e `_DESCRIPTION` hanno effetto anche quando `ANTHROPIC_BASE_URL` punta a un [gateway LLM](/it/llm-gateway). Non hanno effetto quando si effettua la connessione direttamente a `api.anthropic.com`.

314 

315| Variabile di ambiente | Descrizione |

316| ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |

317| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Nome di visualizzazione per il modello Opus fissato nel selettore `/model`. Per impostazione predefinita l'ID del modello quando non impostato |

318| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Descrizione di visualizzazione per il modello Opus fissato nel selettore `/model`. Per impostazione predefinita `Custom Opus model` quando non impostato |

319| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Elenco separato da virgole delle capacità che il modello Opus fissato supporta |

320 

321Gli stessi suffissi `_NAME`, `_DESCRIPTION` e `_SUPPORTED_CAPABILITIES` sono disponibili per `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL` e `ANTHROPIC_CUSTOM_MODEL_OPTION`.

322 

323Claude Code abilita funzionalità come [livelli di sforzo](#adjust-effort-level) e [extended thinking](/it/common-workflows#use-extended-thinking-thinking-mode) abbinando l'ID del modello rispetto a modelli noti. Gli ID specifici del provider come ARN Bedrock o nomi di distribuzione personalizzati spesso non corrispondono a questi modelli, lasciando le funzionalità supportate disabilitate. Impostare `_SUPPORTED_CAPABILITIES` per dire a Claude Code quali funzionalità il modello effettivamente supporta:

324 

325| Valore di capacità | Abilita |

326| ---------------------- | ------------------------------------------------------------------------------------------------- |

327| `effort` | [Livelli di sforzo](#adjust-effort-level) e il comando `/effort` |

328| `xhigh_effort` | {/* min-version: 2.1.111 */}Il livello di sforzo `xhigh` |

329| `max_effort` | Il livello di sforzo `max` |

330| `thinking` | [Extended thinking](/it/common-workflows#use-extended-thinking-thinking-mode) |

331| `adaptive_thinking` | Ragionamento adattivo che alloca dinamicamente il pensiero in base alla complessità dell'attività |

332| `interleaved_thinking` | Pensiero tra le chiamate di strumento |

333 

334Quando `_SUPPORTED_CAPABILITIES` è impostato, le capacità elencate sono abilitate e le capacità non elencate sono disabilitate per il modello fissato corrispondente. Quando la variabile non è impostata, Claude Code ricade sulla rilevazione incorporata basata sull'ID del modello.

335 

336Questo esempio fissa Opus a un ARN di modello personalizzato Bedrock, imposta un nome amichevole e dichiara le sue capacità:

337 

338```bash theme={null}

339export ANTHROPIC_DEFAULT_OPUS_MODEL='arn:aws:bedrock:us-east-1:123456789012:custom-model/abc'

340export ANTHROPIC_DEFAULT_OPUS_MODEL_NAME='Opus via Bedrock'

341export ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION='Opus 4.7 routed through a Bedrock custom endpoint'

342export ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES='effort,xhigh_effort,max_effort,thinking,adaptive_thinking,interleaved_thinking'

343```

344 

345### Eseguire l'override degli ID di modello per versione

346 

347Le variabili di ambiente a livello di famiglia sopra configurano un ID di modello per alias di famiglia. Se è necessario mappare diverse versioni all'interno della stessa famiglia a ID di provider distinti, utilizzare invece l'impostazione `modelOverrides`.

348 

349`modelOverrides` mappa i singoli ID di modello Anthropic alle stringhe specifiche del provider che Claude Code invia all'API del provider. Quando un utente seleziona un modello mappato nel selettore `/model`, Claude Code utilizza il valore configurato invece del valore predefinito incorporato.

350 

351Questo consente agli amministratori aziendali di instradare ogni versione del modello a un ARN di profilo di inferenza Bedrock specifico, a un nome di versione Vertex AI o a un nome di distribuzione Foundry per governance, allocazione dei costi o instradamento regionale.

352 

353Impostare `modelOverrides` nel [file delle impostazioni](/it/settings#settings-files):

354 

355```json theme={null}

356{

357 "modelOverrides": {

358 "claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-prod",

359 "claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",

360 "claude-sonnet-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/sonnet-prod"

361 }

362}

363```

364 

365Le chiavi devono essere ID di modello Anthropic come elencati nella [Panoramica dei modelli](https://platform.claude.com/docs/it/about-claude/models/overview). Per gli ID di modello datati, includere il suffisso della data esattamente come appare lì. Le chiavi sconosciute vengono ignorate.

366 

367Gli override sostituiscono gli ID di modello incorporati che supportano ogni voce nel selettore `/model`. Su Bedrock, gli override hanno la precedenza su qualsiasi profilo di inferenza che Claude Code scopre automaticamente all'avvio. I valori forniti direttamente tramite `ANTHROPIC_MODEL`, `--model` o le variabili di ambiente `ANTHROPIC_DEFAULT_*_MODEL` vengono passati al provider così come sono e non vengono trasformati da `modelOverrides`.

368 

369`modelOverrides` funziona insieme a `availableModels`. L'elenco di autorizzazione viene valutato rispetto all'ID di modello Anthropic, non al valore di override, quindi una voce come `"opus"` in `availableModels` continua a corrispondere anche quando le versioni di Opus sono mappate a ARN.

370 

371### Configurazione della prompt caching

372 

373Claude Code utilizza automaticamente la [prompt caching](https://platform.claude.com/docs/it/build-with-claude/prompt-caching) per ottimizzare le prestazioni e ridurre i costi. È possibile disabilitare la prompt caching globalmente o per livelli di modello specifici:

374 

375| Variabile di ambiente | Descrizione |

376| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |

377| `DISABLE_PROMPT_CACHING` | Impostare su `1` per disabilitare la prompt caching per tutti i modelli (ha la precedenza sulle impostazioni per modello) |

378| `DISABLE_PROMPT_CACHING_HAIKU` | Impostare su `1` per disabilitare la prompt caching solo per i modelli Haiku |

379| `DISABLE_PROMPT_CACHING_SONNET` | Impostare su `1` per disabilitare la prompt caching solo per i modelli Sonnet |

380| `DISABLE_PROMPT_CACHING_OPUS` | Impostare su `1` per disabilitare la prompt caching solo per i modelli Opus |

381 

382Queste variabili di ambiente forniscono un controllo granulare sul comportamento della prompt caching. L'impostazione globale `DISABLE_PROMPT_CACHING` ha la precedenza sulle impostazioni specifiche del modello, consentendo di disabilitare rapidamente tutta la caching quando necessario. Le impostazioni per modello sono utili per il controllo selettivo, ad esempio quando si esegue il debug di modelli specifici o si lavora con provider cloud che potrebbero avere implementazioni di caching diverse.

monitoring-usage.md +955 −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# Monitoraggio

6 

7> Scopri come abilitare e configurare OpenTelemetry per Claude Code.

8 

9Traccia l'utilizzo di Claude Code, i costi e l'attività degli strumenti in tutta l'organizzazione esportando i dati di telemetria tramite OpenTelemetry (OTel). Claude Code esporta le metriche come dati di serie temporali tramite il protocollo di metriche standard, gli eventi tramite il protocollo di log/eventi, e facoltativamente le tracce distribuite tramite il [protocollo di tracce](#traces-beta). Configura i tuoi backend di metriche, log e tracce per corrispondere ai tuoi requisiti di monitoraggio.

10 

11## Avvio rapido

12 

13Configura OpenTelemetry utilizzando variabili di ambiente:

14 

15```bash theme={null}

16# 1. Abilita la telemetria

17export CLAUDE_CODE_ENABLE_TELEMETRY=1

18 

19# 2. Scegli gli esportatori (entrambi sono facoltativi - configura solo ciò di cui hai bisogno)

20export OTEL_METRICS_EXPORTER=otlp # Opzioni: otlp, prometheus, console, none

21export OTEL_LOGS_EXPORTER=otlp # Opzioni: otlp, console, none

22 

23# 3. Configura l'endpoint OTLP (per l'esportatore OTLP)

24export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

25export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

26 

27# 4. Imposta l'autenticazione (se richiesta)

28export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer your-token"

29 

30# 5. Per il debug: riduci gli intervalli di esportazione

31export OTEL_METRIC_EXPORT_INTERVAL=10000 # 10 secondi (predefinito: 60000ms)

32export OTEL_LOGS_EXPORT_INTERVAL=5000 # 5 secondi (predefinito: 5000ms)

33 

34# 6. Esegui Claude Code

35claude

36```

37 

38<Note>

39 Gli intervalli di esportazione predefiniti sono 60 secondi per le metriche e 5 secondi per i log. Durante la configurazione, potresti voler utilizzare intervalli più brevi per scopi di debug. Ricordati di ripristinare questi valori per l'uso in produzione.

40</Note>

41 

42Per le opzioni di configurazione complete, consulta la [specifica OpenTelemetry](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options).

43 

44## Configurazione dell'amministratore

45 

46Gli amministratori possono configurare le impostazioni di OpenTelemetry per tutti gli utenti tramite il [file di impostazioni gestite](/it/settings#settings-files). Ciò consente il controllo centralizzato delle impostazioni di telemetria in tutta l'organizzazione. Consulta la [precedenza delle impostazioni](/it/settings#settings-precedence) per ulteriori informazioni su come vengono applicate le impostazioni.

47 

48Esempio di configurazione delle impostazioni gestite:

49 

50```json theme={null}

51{

52 "env": {

53 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

54 "OTEL_METRICS_EXPORTER": "otlp",

55 "OTEL_LOGS_EXPORTER": "otlp",

56 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

57 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",

58 "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer example-token"

59 }

60}

61```

62 

63<Note>

64 Le impostazioni gestite possono essere distribuite tramite MDM (Mobile Device Management) o altre soluzioni di gestione dei dispositivi. Le variabili di ambiente definite nel file di impostazioni gestite hanno una precedenza elevata e non possono essere sovrascritte dagli utenti.

65</Note>

66 

67## Dettagli della configurazione

68 

69### Variabili di configurazione comuni

70 

71| Variabile di ambiente | Descrizione | Valori di esempio |

72| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |

73| `CLAUDE_CODE_ENABLE_TELEMETRY` | Abilita la raccolta della telemetria (obbligatorio) | `1` |

74| `OTEL_METRICS_EXPORTER` | Tipi di esportatore di metriche, separati da virgola. Usa `none` per disabilitare | `console`, `otlp`, `prometheus`, `none` |

75| `OTEL_LOGS_EXPORTER` | Tipi di esportatore di log/eventi, separati da virgola. Usa `none` per disabilitare | `console`, `otlp`, `none` |

76| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protocollo per l'esportatore OTLP, si applica a tutti i segnali | `grpc`, `http/json`, `http/protobuf` |

77| `OTEL_EXPORTER_OTLP_ENDPOINT` | Endpoint del collettore OTLP per tutti i segnali | `http://localhost:4317` |

78| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Protocollo per le metriche, sostituisce l'impostazione generale | `grpc`, `http/json`, `http/protobuf` |

79| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | Endpoint OTLP per le metriche, sostituisce l'impostazione generale | `http://localhost:4318/v1/metrics` |

80| `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` | Protocollo per i log, sostituisce l'impostazione generale | `grpc`, `http/json`, `http/protobuf` |

81| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Endpoint OTLP per i log, sostituisce l'impostazione generale | `http://localhost:4318/v1/logs` |

82| `OTEL_EXPORTER_OTLP_HEADERS` | Intestazioni di autenticazione per OTLP | `Authorization=Bearer token` |

83| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY` | Chiave client per l'autenticazione mTLS | Percorso del file della chiave client |

84| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE` | Certificato client per l'autenticazione mTLS | Percorso del file del certificato client |

85| `OTEL_METRIC_EXPORT_INTERVAL` | Intervallo di esportazione in millisecondi (predefinito: 60000) | `5000`, `60000` |

86| `OTEL_LOGS_EXPORT_INTERVAL` | Intervallo di esportazione dei log in millisecondi (predefinito: 5000) | `1000`, `10000` |

87| `OTEL_LOG_USER_PROMPTS` | Abilita la registrazione del contenuto del prompt dell'utente (predefinito: disabilitato) | `1` per abilitare |

88| `OTEL_LOG_TOOL_DETAILS` | Abilita la registrazione dei parametri dello strumento e degli argomenti di input negli eventi dello strumento e negli attributi di span di traccia: comandi Bash, nomi dei server MCP e dello strumento, nomi delle skill e input dello strumento. Abilita anche i nomi dei comandi personalizzati, plugin e MCP negli eventi `user_prompt` (predefinito: disabilitato) | `1` per abilitare |

89| `OTEL_LOG_TOOL_CONTENT` | Abilita la registrazione del contenuto di input e output dello strumento negli eventi di span (predefinito: disabilitato). Richiede [tracce](#traces-beta). Il contenuto viene troncato a 60 KB | `1` per abilitare |

90| `OTEL_LOG_RAW_API_BODIES` | Emetti il corpo completo della richiesta e della risposta JSON dell'API Anthropic Messages come eventi di log `api_request_body` / `api_response_body` (predefinito: disabilitato). I corpi includono l'intera cronologia della conversazione. L'abilitazione di questa opzione implica il consenso a tutto ciò che `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS`, e `OTEL_LOG_TOOL_CONTENT` rivelerebbero | `1` per corpi inline troncati a 60 KB, o `file:<dir>` per corpi non troncati su disco con un puntatore `body_ref` nell'evento |

91| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Preferenza di temporalità delle metriche (predefinito: `delta`). Imposta su `cumulative` se il tuo backend prevede temporalità cumulativa | `delta`, `cumulative` |

92| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervallo per l'aggiornamento delle intestazioni dinamiche (predefinito: 1740000ms / 29 minuti) | `900000` |

93 

94### Controllo della cardinalità delle metriche

95 

96Le seguenti variabili di ambiente controllano quali attributi sono inclusi nelle metriche per gestire la cardinalità:

97 

98| Variabile di ambiente | Descrizione | Valore predefinito | Esempio per disabilitare |

99| ----------------------------------- | -------------------------------------------------------------------------- | ------------------ | ------------------------ |

100| `OTEL_METRICS_INCLUDE_SESSION_ID` | Includi l'attributo session.id nelle metriche | `true` | `false` |

101| `OTEL_METRICS_INCLUDE_VERSION` | Includi l'attributo app.version nelle metriche | `false` | `true` |

102| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Includi gli attributi user.account\_uuid e user.account\_id nelle metriche | `true` | `false` |

103 

104Queste variabili aiutano a controllare la cardinalità delle metriche, che influisce sui requisiti di archiviazione e sulle prestazioni delle query nel backend delle metriche. Una cardinalità inferiore generalmente significa prestazioni migliori e costi di archiviazione inferiori, ma dati meno granulari per l'analisi.

105 

106### Tracce (beta)

107 

108Le tracce distribuite esportano span che collegano ogni prompt dell'utente alle richieste API e alle esecuzioni degli strumenti che attiva, in modo da poter visualizzare una richiesta completa come una singola traccia nel tuo backend di traccia.

109 

110Le tracce sono disabilitate per impostazione predefinita. Per abilitarle, imposta sia `CLAUDE_CODE_ENABLE_TELEMETRY=1` che `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, quindi imposta `OTEL_TRACES_EXPORTER` per scegliere dove vengono inviati gli span. Le tracce riutilizzano la [configurazione OTLP comune](#common-configuration-variables) per endpoint, protocollo e intestazioni.

111 

112| Variabile di ambiente | Descrizione | Valori di esempio |

113| ------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------ |

114| `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` | Abilita la traccia degli span (obbligatorio). `ENABLE_ENHANCED_TELEMETRY_BETA` è anche accettato | `1` |

115| `OTEL_TRACES_EXPORTER` | Tipi di esportatore di tracce, separati da virgola. Usa `none` per disabilitare | `console`, `otlp`, `none` |

116| `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` | Protocollo per le tracce, sostituisce `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc`, `http/json`, `http/protobuf` |

117| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Endpoint OTLP per le tracce, sostituisce `OTEL_EXPORTER_OTLP_ENDPOINT` | `http://localhost:4318/v1/traces` |

118| `OTEL_TRACES_EXPORT_INTERVAL` | Intervallo di esportazione batch degli span in millisecondi (predefinito: 5000) | `1000`, `10000` |

119 

120Gli span redattano il testo del prompt dell'utente, i dettagli di input dello strumento e il contenuto dello strumento per impostazione predefinita. Imposta `OTEL_LOG_USER_PROMPTS=1`, `OTEL_LOG_TOOL_DETAILS=1`, e `OTEL_LOG_TOOL_CONTENT=1` per includerli.

121 

122Quando la traccia è attiva, i sottoprocessi Bash e PowerShell ereditano automaticamente una variabile di ambiente `TRACEPARENT` contenente il contesto di traccia W3C dello span di esecuzione dello strumento attivo. Ciò consente a qualsiasi sottoprocesso che legge `TRACEPARENT` di far diventare i propri span figli della stessa traccia, abilitando la traccia distribuita end-to-end attraverso script e comandi che Claude esegue.

123 

124In Agent SDK e sessioni non interattive avviate con `-p`, Claude Code legge anche `TRACEPARENT` e `TRACESTATE` dal proprio ambiente quando avvia ogni span di interazione. Ciò consente a un processo di incorporamento di passare il suo contesto di traccia W3C attivo nel sottoprocesso in modo che gli span di Claude Code appaiano come figli della traccia distribuita del chiamante. Le sessioni interattive ignorano `TRACEPARENT` in entrata per evitare di ereditare accidentalmente valori ambientali da ambienti CI o container.

125 

126#### Gerarchia degli span

127 

128Ogni prompt dell'utente avvia uno span radice `claude_code.interaction`. Le chiamate API, le chiamate agli strumenti e le esecuzioni degli hook vengono registrate come suoi figli. Gli span degli strumenti hanno due span figli propri: uno per il tempo trascorso in attesa di una decisione di autorizzazione e uno per l'esecuzione stessa. Quando lo strumento Task genera un subagent, gli span API e degli strumenti del subagent si annidano sotto lo span `claude_code.tool` del genitore.

129 

130```text theme={null}

131claude_code.interaction

132├── claude_code.llm_request

133├── claude_code.hook (richiede traccia beta dettagliata)

134└── claude_code.tool

135 ├── claude_code.tool.blocked_on_user

136 ├── claude_code.tool.execution

137 └── (Strumento Task) span claude_code.llm_request / claude_code.tool del subagent

138```

139 

140In Agent SDK e sessioni `claude -p`, `claude_code.interaction` stesso diventa un figlio dello span del chiamante quando `TRACEPARENT` è impostato nell'ambiente.

141 

142#### Attributi degli span

143 

144Ogni span porta gli [attributi standard](#standard-attributes) più un attributo `span.type` che corrisponde al suo nome. Le tabelle seguenti elencano gli attributi aggiuntivi impostati su ogni span. Gli span `llm_request`, `tool.execution`, e `hook` impostano lo stato OpenTelemetry `ERROR` quando registrano un errore; gli altri span terminano sempre con stato `UNSET`.

145 

146**`claude_code.interaction`**

147 

148| Attributo | Descrizione | Controllato da |

149| ------------------------- | ------------------------------------------------------------------------------- | ----------------------- |

150| `user_prompt` | Testo del prompt. Il valore è `<REDACTED>` a meno che il gate non sia impostato | `OTEL_LOG_USER_PROMPTS` |

151| `user_prompt_length` | Lunghezza del prompt in caratteri | |

152| `interaction.sequence` | Contatore basato su 1 delle interazioni in questa sessione | |

153| `interaction.duration_ms` | Durata wall-clock del turno | |

154 

155**`claude_code.llm_request`**

156 

157| Attributo | Descrizione | Controllato da |

158| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -------------- |

159| `model` | Identificatore del modello | |

160| `gen_ai.system` | Sempre `anthropic`. Convenzione semantica OpenTelemetry GenAI | |

161| `gen_ai.request.model` | Stesso valore di `model`. Convenzione semantica OpenTelemetry GenAI | |

162| `query_source` | Sottosistema che ha emesso la richiesta, come `repl_main_thread` o un nome di subagent | |

163| `speed` | `fast` o `normal` | |

164| `llm_request.context` | `interaction`, `tool`, o `standalone` a seconda dello span genitore | |

165| `duration_ms` | Durata wall-clock inclusi i tentativi | |

166| `ttft_ms` | Tempo al primo token in millisecondi | |

167| `input_tokens` | Conteggio dei token di input dal blocco di utilizzo dell'API | |

168| `output_tokens` | Conteggio dei token di output | |

169| `cache_read_tokens` | Token letti dalla cache del prompt | |

170| `cache_creation_tokens` | Token scritti nella cache del prompt | |

171| `request_id` | ID della richiesta API Anthropic dall'intestazione della risposta `request-id` | |

172| `gen_ai.response.id` | Stesso valore di `request_id`. Convenzione semantica OpenTelemetry GenAI | |

173| `client_request_id` | `x-client-request-id` generato dal client del tentativo finale | |

174| `attempt` | Tentativi totali effettuati per questa richiesta | |

175| `success` | `true` o `false` | |

176| `status_code` | Codice di stato HTTP quando la richiesta non è riuscita | |

177| `error` | Messaggio di errore quando la richiesta non è riuscita | |

178| `response.has_tool_call` | `true` quando la risposta conteneva blocchi di tool-use | |

179| `stop_reason` | `stop_reason` della risposta API, come `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn`, o `refusal` | |

180| `gen_ai.response.finish_reasons` | Stesso valore di `stop_reason`, racchiuso in un array di stringhe. Convenzione semantica OpenTelemetry GenAI | |

181 

182Ogni tentativo di ripetizione viene anche registrato come evento di span `gen_ai.request.attempt` con attributi `attempt` e `client_request_id`.

183 

184**`claude_code.tool`**

185 

186| Attributo | Descrizione | Controllato da |

187| --------------- | ---------------------------------------------------------------------- | ----------------------- |

188| `tool_name` | Nome dello strumento | |

189| `duration_ms` | Durata wall-clock inclusa l'attesa di autorizzazione e l'esecuzione | |

190| `result_tokens` | Dimensione approssimativa in token del risultato dello strumento | |

191| `file_path` | Percorso del file di destinazione per gli strumenti Read, Edit e Write | `OTEL_LOG_TOOL_DETAILS` |

192| `full_command` | Stringa di comando per lo strumento Bash | `OTEL_LOG_TOOL_DETAILS` |

193| `skill_name` | Nome della skill per lo strumento Skill | `OTEL_LOG_TOOL_DETAILS` |

194| `subagent_type` | Tipo di subagent per lo strumento Task | `OTEL_LOG_TOOL_DETAILS` |

195 

196Quando `OTEL_LOG_TOOL_CONTENT=1`, questo span registra anche un evento di span `tool.output` i cui attributi contengono i corpi di input e output dello strumento, troncati a 60 KB per attributo.

197 

198**`claude_code.tool.blocked_on_user`**

199 

200| Attributo | Descrizione | Controllato da |

201| ------------- | -------------------------------------------------------------------------------------------- | -------------- |

202| `duration_ms` | Tempo trascorso in attesa della decisione di autorizzazione | |

203| `decision` | `accept` o `reject` | |

204| `source` | Fonte della decisione, corrispondente all'evento [Tool decision event](#tool-decision-event) | |

205 

206**`claude_code.tool.execution`**

207 

208| Attributo | Descrizione | Controllato da |

209| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

210| `duration_ms` | Tempo trascorso nell'esecuzione del corpo dello strumento | |

211| `success` | `true` o `false` | |

212| `error` | Stringa di categoria di errore quando l'esecuzione non è riuscita, come `Error:ENOENT` o `ShellError`. Contiene il messaggio di errore completo quando il gate è impostato | `OTEL_LOG_TOOL_DETAILS` |

213 

214**`claude_code.hook`**

215 

216Questo span viene emesso solo quando la traccia beta dettagliata è attiva, il che richiede `ENABLE_BETA_TRACING_DETAILED=1` e `BETA_TRACING_ENDPOINT` oltre alla configurazione dell'esportatore di tracce sopra. Nelle sessioni CLI interattive, ciò richiede anche che la tua organizzazione sia nella lista di autorizzazione per la funzione. Le sessioni Agent SDK e non interattive `-p` non sono controllate. Non viene emesso quando è impostato solo `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA`.

217 

218| Attributo | Descrizione | Controllato da |

219| ------------------------ | ---------------------------------------------------------------------- | ----------------------- |

220| `hook_event` | Tipo di evento hook, come `PreToolUse` | |

221| `hook_name` | Nome completo dell'hook, come `PreToolUse:Write` | |

222| `num_hooks` | Numero di comandi hook corrispondenti eseguiti | |

223| `hook_definitions` | Configurazione dell'hook serializzata in JSON | `OTEL_LOG_TOOL_DETAILS` |

224| `duration_ms` | Durata wall-clock di tutti gli hook corrispondenti | |

225| `num_success` | Conteggio degli hook completati con successo | |

226| `num_blocking` | Conteggio degli hook che hanno restituito una decisione di blocco | |

227| `num_non_blocking_error` | Conteggio degli hook che non hanno avuto esito positivo senza bloccare | |

228| `num_cancelled` | Conteggio degli hook annullati prima del completamento | |

229 

230<Note>

231 Attributi aggiuntivi che portano contenuto come `new_context`, `system_prompt_preview`, `user_system_prompt`, `tool_input`, e `response.model_output` vengono emessi solo quando la traccia beta dettagliata è attiva. Non fanno parte dello schema di span stabile. `user_system_prompt` richiede inoltre `OTEL_LOG_USER_PROMPTS=1`. Contiene solo il testo del prompt di sistema che fornisci tramite l'opzione SDK `systemPrompt` o i flag `--system-prompt` e `--append-system-prompt`, troncato a 60 KB, ed è emesso una volta per sessione piuttosto che per richiesta.

232</Note>

233 

234### Intestazioni dinamiche

235 

236Per gli ambienti aziendali che richiedono autenticazione dinamica, puoi configurare uno script per generare intestazioni dinamicamente:

237 

238#### Configurazione delle impostazioni

239 

240Aggiungi al tuo `.claude/settings.json`:

241 

242```json theme={null}

243{

244 "otelHeadersHelper": "/bin/generate_opentelemetry_headers.sh"

245}

246```

247 

248#### Requisiti dello script

249 

250Lo script deve generare JSON valido con coppie chiave-valore di stringhe che rappresentano intestazioni HTTP:

251 

252```bash theme={null}

253#!/bin/bash

254# Esempio: Intestazioni multiple

255echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"

256```

257 

258#### Comportamento di aggiornamento

259 

260Lo script dell'helper di intestazioni viene eseguito all'avvio e periodicamente in seguito per supportare l'aggiornamento dei token. Per impostazione predefinita, lo script viene eseguito ogni 29 minuti. Personalizza l'intervallo con la variabile di ambiente `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`.

261 

262### Supporto per organizzazioni multi-team

263 

264Le organizzazioni con più team o dipartimenti possono aggiungere attributi personalizzati per distinguere tra diversi gruppi utilizzando la variabile di ambiente `OTEL_RESOURCE_ATTRIBUTES`:

265 

266```bash theme={null}

267# Aggiungi attributi personalizzati per l'identificazione del team

268export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"

269```

270 

271Questi attributi personalizzati verranno inclusi in tutte le metriche e gli eventi, permettendoti di:

272 

273* Filtrare le metriche per team o dipartimento

274* Tracciare i costi per centro di costo

275* Creare dashboard specifici per team

276* Configurare avvisi per team specifici

277 

278<Warning>

279 **Requisiti di formattazione importanti per OTEL\_RESOURCE\_ATTRIBUTES:**

280 

281 La variabile di ambiente `OTEL_RESOURCE_ATTRIBUTES` utilizza coppie chiave=valore separate da virgola con requisiti di formattazione rigorosi:

282 

283 * **Nessuno spazio consentito**: I valori non possono contenere spazi. Ad esempio, `user.organizationName=My Company` non è valido

284 * **Formato**: Deve essere coppie chiave=valore separate da virgola: `key1=value1,key2=value2`

285 * **Caratteri consentiti**: Solo caratteri US-ASCII escludendo caratteri di controllo, spazi bianchi, virgolette doppie, virgole, punti e virgola e barre rovesciate

286 * **Caratteri speciali**: I caratteri al di fuori dell'intervallo consentito devono essere codificati in percentuale

287 

288 **Esempi:**

289 

290 ```bash theme={null}

291 # ❌ Non valido - contiene spazi

292 export OTEL_RESOURCE_ATTRIBUTES="org.name=John's Organization"

293 

294 # ✅ Valido - usa sottolineature o camelCase invece

295 export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"

296 export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"

297 

298 # ✅ Valido - codifica in percentuale i caratteri speciali se necessario

299 export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"

300 ```

301 

302 Nota: racchiudere i valori tra virgolette non sfugge agli spazi. Ad esempio, `org.name="My Company"` risulta nel valore letterale `"My Company"` (con virgolette incluse), non `My Company`.

303</Warning>

304 

305### Configurazioni di esempio

306 

307Imposta queste variabili di ambiente prima di eseguire `claude`. Ogni blocco mostra una configurazione completa per un diverso esportatore o scenario di distribuzione:

308 

309```bash theme={null}

310# Debug della console (intervalli di 1 secondo)

311export CLAUDE_CODE_ENABLE_TELEMETRY=1

312export OTEL_METRICS_EXPORTER=console

313export OTEL_METRIC_EXPORT_INTERVAL=1000

314 

315# OTLP/gRPC

316export CLAUDE_CODE_ENABLE_TELEMETRY=1

317export OTEL_METRICS_EXPORTER=otlp

318export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

319export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

320 

321# Prometheus

322export CLAUDE_CODE_ENABLE_TELEMETRY=1

323export OTEL_METRICS_EXPORTER=prometheus

324 

325# Esportatori multipli

326export CLAUDE_CODE_ENABLE_TELEMETRY=1

327export OTEL_METRICS_EXPORTER=console,otlp

328export OTEL_EXPORTER_OTLP_PROTOCOL=http/json

329 

330# Endpoint/backend diversi per metriche e log

331export CLAUDE_CODE_ENABLE_TELEMETRY=1

332export OTEL_METRICS_EXPORTER=otlp

333export OTEL_LOGS_EXPORTER=otlp

334export OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/protobuf

335export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://metrics.example.com:4318

336export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc

337export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317

338 

339# Solo metriche (nessun evento/log)

340export CLAUDE_CODE_ENABLE_TELEMETRY=1

341export OTEL_METRICS_EXPORTER=otlp

342export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

343export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

344 

345# Solo eventi/log (nessuna metrica)

346export CLAUDE_CODE_ENABLE_TELEMETRY=1

347export OTEL_LOGS_EXPORTER=otlp

348export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

349export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

350```

351 

352## Metriche e eventi disponibili

353 

354### Attributi standard

355 

356Tutte le metriche e gli eventi condividono questi attributi standard:

357 

358| Attributo | Descrizione | Controllato da |

359| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |

360| `session.id` | Identificatore di sessione univoco | `OTEL_METRICS_INCLUDE_SESSION_ID` (predefinito: true) |

361| `app.version` | Versione corrente di Claude Code | `OTEL_METRICS_INCLUDE_VERSION` (predefinito: false) |

362| `organization.id` | UUID dell'organizzazione (quando autenticato) | Sempre incluso quando disponibile |

363| `user.account_uuid` | UUID dell'account (quando autenticato) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (predefinito: true) |

364| `user.account_id` | ID dell'account in formato taggato corrispondente alle API di amministrazione Anthropic (quando autenticato), come `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (predefinito: true) |

365| `user.id` | Identificatore anonimo del dispositivo/installazione, generato per ogni installazione di Claude Code | Sempre incluso |

366| `user.email` | Indirizzo email dell'utente (quando autenticato tramite OAuth) | Sempre incluso quando disponibile |

367| `terminal.type` | Tipo di terminale, come `iTerm.app`, `vscode`, `cursor`, o `tmux` | Sempre incluso quando rilevato |

368 

369Gli eventi includono inoltre i seguenti attributi. Questi non vengono mai allegati alle metriche perché causerebbero cardinalità illimitata:

370 

371* `prompt.id`: UUID che correla un prompt dell'utente con tutti gli eventi successivi fino al prompt successivo. Vedi [Attributi di correlazione degli eventi](#event-correlation-attributes).

372* `workspace.host_paths`: directory dell'area di lavoro host selezionate nell'app desktop, come array di stringhe

373 

374### Metriche

375 

376Claude Code esporta le seguenti metriche:

377 

378| Nome della metrica | Descrizione | Unità |

379| ------------------------------------- | ---------------------------------------------------------------------------------- | ------ |

380| `claude_code.session.count` | Conteggio delle sessioni CLI avviate | count |

381| `claude_code.lines_of_code.count` | Conteggio delle righe di codice modificate | count |

382| `claude_code.pull_request.count` | Numero di pull request create | count |

383| `claude_code.commit.count` | Numero di commit git creati | count |

384| `claude_code.cost.usage` | Costo della sessione Claude Code | USD |

385| `claude_code.token.usage` | Numero di token utilizzati | tokens |

386| `claude_code.code_edit_tool.decision` | Conteggio delle decisioni di autorizzazione dello strumento di modifica del codice | count |

387| `claude_code.active_time.total` | Tempo attivo totale in secondi | s |

388 

389### Dettagli delle metriche

390 

391Ogni metrica include gli attributi standard elencati sopra. Le metriche con attributi aggiuntivi specifici del contesto sono indicate di seguito.

392 

393#### Contatore di sessione

394 

395Incrementato all'inizio di ogni sessione.

396 

397**Attributi**:

398 

399* Tutti gli [attributi standard](#standard-attributes)

400* `start_type`: Come la sessione è stata avviata. Uno di `"fresh"`, `"resume"`, o `"continue"`

401 

402#### Contatore di righe di codice

403 

404Incrementato quando il codice viene aggiunto o rimosso.

405 

406**Attributi**:

407 

408* Tutti gli [attributi standard](#standard-attributes)

409* `type`: (`"added"`, `"removed"`)

410 

411#### Contatore di pull request

412 

413Incrementato quando si creano pull request tramite Claude Code.

414 

415**Attributi**:

416 

417* Tutti gli [attributi standard](#standard-attributes)

418 

419#### Contatore di commit

420 

421Incrementato quando si creano commit git tramite Claude Code.

422 

423**Attributi**:

424 

425* Tutti gli [attributi standard](#standard-attributes)

426 

427#### Contatore di costo

428 

429Incrementato dopo ogni richiesta API.

430 

431**Attributi**:

432 

433* Tutti gli [attributi standard](#standard-attributes)

434* `model`: Identificatore del modello (ad esempio, "claude-sonnet-4-6")

435* `query_source`: Categoria del sottosistema che ha emesso la richiesta. Uno di `"main"`, `"subagent"`, o `"auxiliary"`

436* `speed`: `"fast"` quando la richiesta ha utilizzato la modalità veloce. Assente altrimenti

437* `effort`: [Livello di sforzo](/it/model-config#adjust-effort-level) applicato alla richiesta: `"low"`, `"medium"`, `"high"`, `"xhigh"`, o `"max"`. Assente quando il modello non supporta lo sforzo.

438 

439#### Contatore di token

440 

441Incrementato dopo ogni richiesta API.

442 

443**Attributi**:

444 

445* Tutti gli [attributi standard](#standard-attributes)

446* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)

447* `model`: Identificatore del modello (ad esempio, "claude-sonnet-4-6")

448* `query_source`: Categoria del sottosistema che ha emesso la richiesta. Uno di `"main"`, `"subagent"`, o `"auxiliary"`

449* `speed`: `"fast"` quando la richiesta ha utilizzato la modalità veloce. Assente altrimenti

450* `effort`: [Livello di sforzo](/it/model-config#adjust-effort-level) applicato alla richiesta. Vedi [Contatore di costo](#cost-counter) per i dettagli.

451 

452#### Contatore di decisione dello strumento di modifica del codice

453 

454Incrementato quando l'utente accetta o rifiuta l'utilizzo dello strumento Edit, Write o NotebookEdit.

455 

456**Attributi**:

457 

458* Tutti gli [attributi standard](#standard-attributes)

459* `tool_name`: Nome dello strumento (`"Edit"`, `"Write"`, `"NotebookEdit"`)

460* `decision`: Decisione dell'utente (`"accept"`, `"reject"`)

461* `source`: Fonte della decisione. Uno di `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"`, o `"user_reject"`. Vedi l'[Evento di decisione dello strumento](#tool-decision-event) per il significato di ogni valore.

462* `language`: Linguaggio di programmazione del file modificato, come `"TypeScript"`, `"Python"`, `"JavaScript"`, o `"Markdown"`. Restituisce `"unknown"` per estensioni di file non riconosciute.

463 

464#### Contatore di tempo attivo

465 

466Traccia il tempo effettivo trascorso utilizzando attivamente Claude Code, escludendo il tempo di inattività. Questa metrica viene incrementata durante le interazioni dell'utente (digitazione, lettura delle risposte) e durante l'elaborazione CLI (esecuzione degli strumenti, generazione della risposta AI).

467 

468**Attributi**:

469 

470* Tutti gli [attributi standard](#standard-attributes)

471* `type`: `"user"` per le interazioni da tastiera, `"cli"` per l'esecuzione degli strumenti e le risposte AI

472 

473### Eventi

474 

475Claude Code esporta i seguenti eventi tramite log/eventi OpenTelemetry (quando `OTEL_LOGS_EXPORTER` è configurato):

476 

477#### Attributi di correlazione degli eventi

478 

479Quando un utente invia un prompt, Claude Code potrebbe effettuare più chiamate API ed eseguire diversi strumenti. L'attributo `prompt.id` ti consente di collegare tutti questi eventi al singolo prompt che li ha attivati.

480 

481| Attributo | Descrizione |

482| ----------- | -------------------------------------------------------------------------------------------------------------------- |

483| `prompt.id` | Identificatore UUID v4 che collega tutti gli eventi prodotti durante l'elaborazione di un singolo prompt dell'utente |

484 

485Per tracciare tutta l'attività attivata da un singolo prompt, filtra i tuoi eventi per un valore specifico di `prompt.id`. Questo restituisce l'evento user\_prompt, eventuali eventi api\_request, e eventuali eventi tool\_result che si sono verificati durante l'elaborazione di quel prompt.

486 

487<Note>

488 `prompt.id` è intenzionalmente escluso dalle metriche perché ogni prompt genera un ID univoco, il che creerebbe un numero sempre crescente di serie temporali. Usalo solo per l'analisi a livello di evento e i trail di audit.

489</Note>

490 

491#### Evento di prompt dell'utente

492 

493Registrato quando un utente invia un prompt.

494 

495**Nome evento**: `claude_code.user_prompt`

496 

497**Attributi**:

498 

499* Tutti gli [attributi standard](#standard-attributes)

500* `event.name`: `"user_prompt"`

501* `event.timestamp`: Timestamp ISO 8601

502* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

503* `prompt_length`: Lunghezza del prompt

504* `prompt`: Contenuto del prompt (redatto per impostazione predefinita, abilita con `OTEL_LOG_USER_PROMPTS=1`)

505* `command_name`: Nome del comando quando il prompt ne invoca uno. I nomi dei comandi incorporati e in bundle come `compact` o `debug` vengono emessi così come sono; gli alias come `reset` vengono emessi come digitati piuttosto che il nome canonico. I nomi dei comandi personalizzati, plugin e MCP si riducono a `custom` o `mcp` a meno che `OTEL_LOG_TOOL_DETAILS=1` non sia impostato

506* `command_source`: Origine del comando quando presente: `builtin`, `custom`, o `mcp`. I comandi forniti dai plugin vengono segnalati come `custom`

507 

508#### Evento di risultato dello strumento

509 

510Registrato quando uno strumento completa l'esecuzione.

511 

512**Nome evento**: `claude_code.tool_result`

513 

514**Attributi**:

515 

516* Tutti gli [attributi standard](#standard-attributes)

517* `event.name`: `"tool_result"`

518* `event.timestamp`: Timestamp ISO 8601

519* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

520* `tool_name`: Nome dello strumento

521* `tool_use_id`: Identificatore univoco per questa invocazione dello strumento. Corrisponde al `tool_use_id` passato agli hooks, consentendo la correlazione tra gli eventi OTel e i dati acquisiti dagli hooks.

522* `success`: `"true"` o `"false"`

523* `duration_ms`: Tempo di esecuzione in millisecondi

524* `error_type`: Stringa di categoria di errore quando lo strumento non è riuscito, come `"Error:ENOENT"` o `"ShellError"`

525* `error` (quando `OTEL_LOG_TOOL_DETAILS=1`): Messaggio di errore completo quando lo strumento non è riuscito

526* `decision_type`: `"accept"` o `"reject"`

527* `decision_source`: Fonte della decisione. Uno di `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"`, o `"user_reject"`. Vedi l'[Evento di decisione dello strumento](#tool-decision-event) per il significato di ogni valore.

528* `tool_input_size_bytes`: Dimensione dell'input dello strumento serializzato in JSON in byte

529* `tool_result_size_bytes`: Dimensione del risultato dello strumento in byte

530* `mcp_server_scope`: Identificatore dell'ambito del server MCP (per gli strumenti MCP)

531* `tool_parameters` (quando `OTEL_LOG_TOOL_DETAILS=1`): Stringa JSON contenente parametri specifici dello strumento:

532 * Per lo strumento Bash: include `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox`, e `git_commit_id` (lo SHA del commit, quando un comando `git commit` ha successo)

533 * Per gli strumenti MCP: include `mcp_server_name`, `mcp_tool_name`

534 * Per lo strumento Skill: include `skill_name`

535 * Per lo strumento Task: include `subagent_type`

536* `tool_input` (quando `OTEL_LOG_TOOL_DETAILS=1`): Argomenti dello strumento serializzati in JSON. I singoli valori superiori a 512 caratteri vengono troncati, e il payload completo è limitato a circa 4 K caratteri. Si applica a tutti gli strumenti inclusi gli strumenti MCP.

537 

538#### Evento di richiesta API

539 

540Registrato per ogni richiesta API a Claude.

541 

542**Nome evento**: `claude_code.api_request`

543 

544**Attributi**:

545 

546* Tutti gli [attributi standard](#standard-attributes)

547* `event.name`: `"api_request"`

548* `event.timestamp`: Timestamp ISO 8601

549* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

550* `model`: Modello utilizzato (ad esempio, "claude-sonnet-4-6")

551* `cost_usd`: Costo stimato in USD

552* `duration_ms`: Durata della richiesta in millisecondi

553* `input_tokens`: Numero di token di input

554* `output_tokens`: Numero di token di output

555* `cache_read_tokens`: Numero di token letti dalla cache

556* `cache_creation_tokens`: Numero di token utilizzati per la creazione della cache

557* `request_id`: ID della richiesta API Anthropic dall'intestazione `request-id` della risposta, come `"req_011..."`. Presente solo quando l'API ne restituisce uno.

558* `speed`: `"fast"` o `"normal"`, indicando se la modalità veloce era attiva

559* `query_source`: Sottosistema che ha emesso la richiesta, come `"repl_main_thread"`, `"compact"`, o un nome di subagent

560* `effort`: [Livello di sforzo](/it/model-config#adjust-effort-level) applicato alla richiesta: `"low"`, `"medium"`, `"high"`, `"xhigh"`, o `"max"`. Assente quando il modello non supporta lo sforzo.

561 

562#### Evento di errore API

563 

564Registrato quando una richiesta API a Claude non riesce.

565 

566**Nome evento**: `claude_code.api_error`

567 

568**Attributi**:

569 

570* Tutti gli [attributi standard](#standard-attributes)

571* `event.name`: `"api_error"`

572* `event.timestamp`: Timestamp ISO 8601

573* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

574* `model`: Modello utilizzato (ad esempio, "claude-sonnet-4-6")

575* `error`: Messaggio di errore

576* `status_code`: Codice di stato HTTP come numero. Assente per errori non-HTTP come i guasti di connessione.

577* `duration_ms`: Durata della richiesta in millisecondi

578* `attempt`: Numero totale di tentativi effettuati, inclusa la richiesta iniziale (`1` significa che non si sono verificati tentativi)

579* `request_id`: ID della richiesta API Anthropic dall'intestazione `request-id` della risposta, come `"req_011..."`. Presente solo quando l'API ne restituisce uno.

580* `speed`: `"fast"` o `"normal"`, indicando se la modalità veloce era attiva

581* `query_source`: Sottosistema che ha emesso la richiesta, come `"repl_main_thread"`, `"compact"`, o un nome di subagent

582* `effort`: [Livello di sforzo](/it/model-config#adjust-effort-level) applicato alla richiesta. Assente quando il modello non supporta lo sforzo.

583 

584#### Evento di corpo della richiesta API

585 

586Registrato per ogni tentativo di richiesta API quando `OTEL_LOG_RAW_API_BODIES` è impostato. Un evento viene emesso per tentativo, quindi i tentativi con parametri regolati producono ciascuno il proprio evento.

587 

588**Nome evento**: `claude_code.api_request_body`

589 

590**Attributi**:

591 

592* Tutti gli [attributi standard](#standard-attributes)

593* `event.name`: `"api_request_body"`

594* `event.timestamp`: Timestamp ISO 8601

595* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

596* `body`: Parametri della richiesta dell'API Messages serializzati in JSON (prompt di sistema, messaggi, strumenti, ecc.), troncati a 60 KB. Il contenuto del pensiero esteso nei turni dell'assistente precedenti viene redatto. Emesso solo in modalità inline (`OTEL_LOG_RAW_API_BODIES=1`).

597* `body_ref`: Percorso assoluto a un file `<dir>/<uuid>.request.json` contenente il corpo non troncato. Emesso solo in modalità file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

598* `body_length`: Lunghezza del corpo non troncato. Byte UTF-8 quando `OTEL_LOG_RAW_API_BODIES=file:<dir>`, o unità di codice UTF-16 quando `=1`

599* `body_truncated`: `"true"` quando si è verificato il troncamento inline. Assente in modalità file e quando non si è verificato alcun troncamento.

600* `model`: Identificatore del modello dai parametri della richiesta

601* `query_source`: Sottosistema che ha emesso la richiesta (ad esempio, `"compact"`)

602 

603#### Evento di corpo della risposta API

604 

605Registrato per ogni risposta API riuscita quando `OTEL_LOG_RAW_API_BODIES` è impostato.

606 

607**Nome evento**: `claude_code.api_response_body`

608 

609**Attributi**:

610 

611* Tutti gli [attributi standard](#standard-attributes)

612* `event.name`: `"api_response_body"`

613* `event.timestamp`: Timestamp ISO 8601

614* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

615* `body`: Risposta dell'API Messages serializzata in JSON (id, blocchi di contenuto, utilizzo, motivo di arresto), troncata a 60 KB. Il contenuto del pensiero esteso viene redatto. Emesso solo in modalità inline (`OTEL_LOG_RAW_API_BODIES=1`).

616* `body_ref`: Percorso assoluto a un file `<dir>/<request_id>.response.json` contenente il corpo non troncato. Emesso solo in modalità file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

617* `body_length`: Lunghezza del corpo non troncato. Byte UTF-8 quando `OTEL_LOG_RAW_API_BODIES=file:<dir>`, o unità di codice UTF-16 quando `=1`

618* `body_truncated`: `"true"` quando si è verificato il troncamento inline. Assente in modalità file e quando non si è verificato alcun troncamento.

619* `model`: Identificatore del modello

620* `query_source`: Sottosistema che ha emesso la richiesta

621* `request_id`: ID della richiesta API Anthropic dall'intestazione `request-id` della risposta, come `"req_011..."`. Presente solo quando l'API ne restituisce uno.

622 

623#### Evento di decisione dello strumento

624 

625Registrato quando viene presa una decisione di autorizzazione dello strumento (accetta/rifiuta).

626 

627**Nome evento**: `claude_code.tool_decision`

628 

629**Attributi**:

630 

631* Tutti gli [attributi standard](#standard-attributes)

632* `event.name`: `"tool_decision"`

633* `event.timestamp`: Timestamp ISO 8601

634* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

635* `tool_name`: Nome dello strumento (ad esempio, "Read", "Edit", "Write", "NotebookEdit")

636* `tool_use_id`: Identificatore univoco per questa invocazione dello strumento. Corrisponde al `tool_use_id` passato agli hooks, consentendo la correlazione tra gli eventi OTel e i dati acquisiti dagli hooks.

637* `decision`: `"accept"` o `"reject"`

638* `source`: Fonte della decisione:

639 * `"config"`: Deciso automaticamente senza richiedere, in base alle impostazioni del progetto, alla politica gestita dall'azienda, ai flag `--allowedTools` o `--disallowedTools`, alla modalità di autorizzazione attiva, o perché lo strumento è intrinsecamente sicuro.

640 * `"hook"`: Un hook `PreToolUse` o `PermissionRequest` ha restituito la decisione.

641 * `"user_permanent"`: Emesso quando l'utente ha scelto "Consenti sempre" quando richiesto, salvando una regola alle sue impostazioni personali. Emesso anche per le chiamate successive che corrispondono a quella regola salvata. Trattato come un'accettazione.

642 * `"user_temporary"`: Emesso quando l'utente ha scelto "Sì" o "Sì, per questa sessione" quando richiesto, senza salvare una regola. Emesso anche per le chiamate successive nella stessa sessione che corrispondono a quel permesso con ambito di sessione. Trattato come un'accettazione.

643 * `"user_abort"`: Emesso quando l'utente ha chiuso il prompt di autorizzazione senza rispondere. Trattato come un rifiuto.

644 * `"user_reject"`: Emesso quando l'utente ha scelto "No" quando richiesto, o una chiamata ha corrisposto a una regola di negazione nelle sue impostazioni personali. Trattato come un rifiuto.

645 

646#### Evento di cambio della modalità di autorizzazione

647 

648Registrato quando la modalità di autorizzazione cambia, ad esempio da ciclo Shift+Tab, uscita dalla modalità piano, o un controllo del gate della modalità automatica.

649 

650**Nome evento**: `claude_code.permission_mode_changed`

651 

652**Attributi**:

653 

654* Tutti gli [attributi standard](#standard-attributes)

655* `event.name`: `"permission_mode_changed"`

656* `event.timestamp`: Timestamp ISO 8601

657* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

658* `from_mode`: La modalità di autorizzazione precedente, ad esempio `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, o `"bypassPermissions"`

659* `to_mode`: La nuova modalità di autorizzazione

660* `trigger`: Cosa ha causato il cambio. Uno di `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"`, o `"auto_opt_in"`. Assente quando la transizione proviene dall'SDK o dal bridge

661 

662#### Evento di autenticazione

663 

664Registrato quando `/login` o `/logout` si completa.

665 

666**Nome evento**: `claude_code.auth`

667 

668**Attributi**:

669 

670* Tutti gli [attributi standard](#standard-attributes)

671* `event.name`: `"auth"`

672* `event.timestamp`: Timestamp ISO 8601

673* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

674* `action`: `"login"` o `"logout"`

675* `success`: `"true"` o `"false"`

676* `auth_method`: Metodo di autenticazione, come `"oauth"`

677* `error_category`: Tipo di errore categorico quando l'azione non è riuscita. Il messaggio di errore grezzo non viene mai incluso

678* `status_code`: Codice di stato HTTP come stringa quando l'azione non è riuscita con un errore HTTP

679 

680#### Evento di connessione del server MCP

681 

682Registrato quando un server MCP si connette, si disconnette o non riesce a connettersi.

683 

684**Nome evento**: `claude_code.mcp_server_connection`

685 

686**Attributi**:

687 

688* Tutti gli [attributi standard](#standard-attributes)

689* `event.name`: `"mcp_server_connection"`

690* `event.timestamp`: Timestamp ISO 8601

691* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

692* `status`: `"connected"`, `"failed"`, o `"disconnected"`

693* `transport_type`: Trasporto del server, come `"stdio"`, `"sse"`, o `"http"`

694* `server_scope`: Ambito in cui il server è configurato, come `"user"`, `"project"`, o `"local"`

695* `duration_ms`: Durata del tentativo di connessione in millisecondi

696* `error_code`: Codice di errore quando la connessione non è riuscita

697* `server_name` (quando `OTEL_LOG_TOOL_DETAILS=1`): Nome del server configurato

698* `error` (quando `OTEL_LOG_TOOL_DETAILS=1`): Messaggio di errore completo quando la connessione non è riuscita

699 

700#### Evento di errore interno

701 

702Registrato quando Claude Code cattura un errore interno inaspettato. Viene registrato solo il nome della classe di errore e un codice di stile errno. Il messaggio di errore e la traccia dello stack non vengono mai inclusi. Questo evento non viene emesso quando si esegue su Bedrock, Vertex, o Foundry, o quando `DISABLE_ERROR_REPORTING` è impostato.

703 

704**Nome evento**: `claude_code.internal_error`

705 

706**Attributi**:

707 

708* Tutti gli [attributi standard](#standard-attributes)

709* `event.name`: `"internal_error"`

710* `event.timestamp`: Timestamp ISO 8601

711* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

712* `error_name`: Nome della classe di errore, come `"TypeError"` o `"SyntaxError"`

713* `error_code`: Codice errno di Node.js come `"ENOENT"` quando presente nell'errore

714 

715#### Evento di plugin installato

716 

717Registrato quando un plugin finisce di installarsi, sia dal comando CLI `claude plugin install` che dall'interfaccia utente interattiva `/plugin`.

718 

719**Nome evento**: `claude_code.plugin_installed`

720 

721**Attributi**:

722 

723* Tutti gli [attributi standard](#standard-attributes)

724* `event.name`: `"plugin_installed"`

725* `event.timestamp`: Timestamp ISO 8601

726* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

727* `marketplace.is_official`: `"true"` se il marketplace è un marketplace ufficiale Anthropic, `"false"` altrimenti

728* `install.trigger`: `"cli"` o `"ui"`

729* `plugin.name`: Nome del plugin installato. Per i marketplace di terze parti questo è incluso solo quando `OTEL_LOG_TOOL_DETAILS=1`

730* `plugin.version`: Versione del plugin quando dichiarata nella voce del marketplace. Per i marketplace di terze parti questo è incluso solo quando `OTEL_LOG_TOOL_DETAILS=1`

731* `marketplace.name`: Marketplace da cui è stato installato il plugin. Per i marketplace di terze parti questo è incluso solo quando `OTEL_LOG_TOOL_DETAILS=1`

732 

733#### Evento di skill attivata

734 

735Registrato quando una skill viene invocata, sia che Claude la chiami tramite lo strumento Skill sia che tu la esegua come comando `/`.

736 

737**Nome evento**: `claude_code.skill_activated`

738 

739**Attributi**:

740 

741* Tutti gli [attributi standard](#standard-attributes)

742* `event.name`: `"skill_activated"`

743* `event.timestamp`: Timestamp ISO 8601

744* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

745* `skill.name`: Nome della skill. Per le skill definite dall'utente e di terze parti il valore è il placeholder `"custom_skill"` a meno che `OTEL_LOG_TOOL_DETAILS=1`

746* `invocation_trigger`: Come la skill è stata attivata (`"user-slash"`, `"claude-proactive"`, o `"nested-skill"`)

747* `skill.source`: Da dove è stata caricata la skill (ad esempio, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)

748* `plugin.name` (quando `OTEL_LOG_TOOL_DETAILS=1` o il plugin è da un marketplace ufficiale): Nome del plugin proprietario quando la skill è fornita da un plugin

749* `marketplace.name` (quando `OTEL_LOG_TOOL_DETAILS=1` o il plugin è da un marketplace ufficiale): Marketplace del plugin proprietario da cui è stato installato, quando la skill è fornita da un plugin

750 

751#### Evento di menzione @

752 

753Registrato quando Claude Code risolve una menzione `@` in un prompt. Non ogni menzione emette un evento: i percorsi di uscita anticipata come i rifiuti di autorizzazione, i file di grandi dimensioni, gli allegati di riferimento PDF e i guasti dell'elenco delle directory vengono restituiti senza registrazione.

754 

755**Nome evento**: `claude_code.at_mention`

756 

757**Attributi**:

758 

759* Tutti gli [attributi standard](#standard-attributes)

760* `event.name`: `"at_mention"`

761* `event.timestamp`: Timestamp ISO 8601

762* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

763* `mention_type`: Tipo di menzione (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`)

764* `success`: Se la menzione è stata risolta con successo (`"true"` o `"false"`)

765 

766#### Evento di tentativi API esauriti

767 

768Registrato una volta quando una richiesta API non riesce dopo più di un tentativo. Emesso insieme all'evento `api_error` finale.

769 

770**Nome evento**: `claude_code.api_retries_exhausted`

771 

772**Attributi**:

773 

774* Tutti gli [attributi standard](#standard-attributes)

775* `event.name`: `"api_retries_exhausted"`

776* `event.timestamp`: Timestamp ISO 8601

777* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

778* `model`: Modello utilizzato

779* `error`: Messaggio di errore finale

780* `status_code`: Codice di stato HTTP come numero. Assente per errori non-HTTP.

781* `total_attempts`: Numero totale di tentativi effettuati

782* `total_retry_duration_ms`: Tempo wall-clock totale tra tutti i tentativi

783* `speed`: `"fast"` o `"normal"`

784 

785#### Evento di inizio esecuzione dell'hook

786 

787Registrato quando uno o più hook iniziano a eseguirsi per un evento hook.

788 

789**Nome evento**: `claude_code.hook_execution_start`

790 

791**Attributi**:

792 

793* Tutti gli [attributi standard](#standard-attributes)

794* `event.name`: `"hook_execution_start"`

795* `event.timestamp`: Timestamp ISO 8601

796* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

797* `hook_event`: Tipo di evento hook, come `"PreToolUse"` o `"PostToolUse"`

798* `hook_name`: Nome completo dell'hook incluso il matcher, come `"PreToolUse:Write"`

799* `num_hooks`: Numero di comandi hook corrispondenti

800* `managed_only`: `"true"` quando sono consentiti solo gli hook della politica gestita

801* `hook_source`: `"policySettings"` o `"merged"`

802* `hook_definitions`: Configurazione dell'hook serializzata in JSON. Incluso solo quando sia la traccia beta dettagliata che `OTEL_LOG_TOOL_DETAILS=1` sono abilitati

803 

804#### Evento di completamento esecuzione dell'hook

805 

806Registrato quando tutti gli hook per un evento hook hanno terminato.

807 

808**Nome evento**: `claude_code.hook_execution_complete`

809 

810**Attributi**:

811 

812* Tutti gli [attributi standard](#standard-attributes)

813* `event.name`: `"hook_execution_complete"`

814* `event.timestamp`: Timestamp ISO 8601

815* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

816* `hook_event`: Tipo di evento hook

817* `hook_name`: Nome completo dell'hook incluso il matcher

818* `num_hooks`: Numero di comandi hook corrispondenti

819* `num_success`: Conteggio che ha completato con successo

820* `num_blocking`: Conteggio che ha restituito una decisione di blocco

821* `num_non_blocking_error`: Conteggio che non ha avuto esito positivo senza bloccare

822* `num_cancelled`: Conteggio annullato prima del completamento

823* `total_duration_ms`: Durata wall-clock di tutti gli hook corrispondenti

824* `managed_only`: `"true"` quando sono consentiti solo gli hook della politica gestita

825* `hook_source`: `"policySettings"` o `"merged"`

826* `hook_definitions`: Configurazione dell'hook serializzata in JSON. Incluso solo quando sia la traccia beta dettagliata che `OTEL_LOG_TOOL_DETAILS=1` sono abilitati

827 

828#### Evento di compattazione

829 

830Registrato quando la compattazione della conversazione si completa.

831 

832**Nome evento**: `claude_code.compaction`

833 

834**Attributi**:

835 

836* Tutti gli [attributi standard](#standard-attributes)

837* `event.name`: `"compaction"`

838* `event.timestamp`: Timestamp ISO 8601

839* `event.sequence`: Contatore monotonicamente crescente per ordinare gli eventi all'interno di una sessione

840* `trigger`: `"auto"` o `"manual"`

841* `success`: `"true"` o `"false"`

842* `duration_ms`: Durata della compattazione

843* `pre_tokens`: Conteggio approssimativo dei token prima della compattazione

844* `post_tokens`: Conteggio approssimativo dei token dopo la compattazione

845* `error`: Messaggio di errore quando la compattazione non è riuscita

846 

847## Interpretazione dei dati di metriche e eventi

848 

849Le metriche e gli eventi esportati supportano una gamma di analisi:

850 

851### Monitoraggio dell'utilizzo

852 

853| Metrica | Opportunità di analisi |

854| ------------------------------------------------------------- | ----------------------------------------------------------------- |

855| `claude_code.token.usage` | Suddividi per `type` (input/output), utente, team o modello |

856| `claude_code.session.count` | Traccia l'adozione e l'engagement nel tempo |

857| `claude_code.lines_of_code.count` | Misura la produttività tracciando le aggiunte/rimozioni di codice |

858| `claude_code.commit.count` & `claude_code.pull_request.count` | Comprendi l'impatto sui flussi di lavoro di sviluppo |

859 

860### Monitoraggio dei costi

861 

862La metrica `claude_code.cost.usage` aiuta con:

863 

864* Tracciare i trend di utilizzo tra team o individui

865* Identificare sessioni ad alto utilizzo per l'ottimizzazione

866 

867<Note>

868 Le metriche di costo sono approssimazioni. Per i dati di fatturazione ufficiali, consulta il tuo provider API (Claude Console, Amazon Bedrock, o Google Cloud Vertex).

869</Note>

870 

871### Avvisi e segmentazione

872 

873Avvisi comuni da considerare:

874 

875* Picchi di costo

876* Consumo di token inusuale

877* Alto volume di sessioni da utenti specifici

878 

879Tutte le metriche possono essere segmentate per `user.account_uuid`, `user.account_id`, `organization.id`, `session.id`, `model`, e `app.version`.

880 

881### Rilevare l'esaurimento dei tentativi

882 

883Claude Code ritenta internamente le richieste API non riuscite ed emette un singolo evento `claude_code.api_error` solo dopo che rinuncia, quindi l'evento stesso è il segnale terminale per quella richiesta. I tentativi di ripetizione intermedi non vengono registrati come eventi separati.

884 

885L'attributo `attempt` sull'evento registra quanti tentativi sono stati effettuati in totale. Un valore maggiore di `CLAUDE_CODE_MAX_RETRIES` (predefinito `10`) indica che la richiesta ha esaurito tutti i tentativi su un errore transitorio. Un valore inferiore indica un errore non ritentabile come una risposta `400`.

886 

887Per distinguere una sessione che si è ripresa da una che si è bloccata, raggruppa gli eventi per `session.id` e verifica se esiste un evento `api_request` successivo dopo l'errore.

888 

889### Analisi degli eventi

890 

891I dati degli eventi forniscono informazioni dettagliate sulle interazioni di Claude Code:

892 

893**Modelli di utilizzo dello strumento**: analizza gli eventi di risultato dello strumento per identificare:

894 

895* Strumenti più frequentemente utilizzati

896* Tassi di successo dello strumento

897* Tempi di esecuzione medi dello strumento

898* Modelli di errore per tipo di strumento

899 

900**Monitoraggio delle prestazioni**: traccia le durate delle richieste API e i tempi di esecuzione dello strumento per identificare i colli di bottiglia delle prestazioni.

901 

902## Considerazioni sul backend

903 

904La scelta dei backend di metriche, log e tracce determina i tipi di analisi che puoi eseguire:

905 

906### Per le metriche

907 

908* **Database di serie temporali (ad esempio, Prometheus)**: Calcoli di velocità, metriche aggregate

909* **Archivi colonnari (ad esempio, ClickHouse)**: Query complesse, analisi di utenti univoci

910* **Piattaforme di osservabilità complete (ad esempio, Honeycomb, Datadog)**: Query avanzate, visualizzazione, avvisi

911 

912### Per eventi/log

913 

914* **Sistemi di aggregazione dei log (ad esempio, Elasticsearch, Loki)**: Ricerca full-text, analisi dei log

915* **Archivi colonnari (ad esempio, ClickHouse)**: Analisi degli eventi strutturati

916* **Piattaforme di osservabilità complete (ad esempio, Honeycomb, Datadog)**: Correlazione tra metriche e eventi

917 

918### Per tracce

919 

920Scegli un backend che supporti l'archiviazione di tracce distribuite e la correlazione degli span:

921 

922* **Sistemi di traccia distribuita (ad esempio, Jaeger, Zipkin, Grafana Tempo)**: Visualizzazione degli span, waterfall delle richieste, analisi della latenza

923* **Piattaforme di osservabilità complete (ad esempio, Honeycomb, Datadog)**: Ricerca di tracce e correlazione con metriche e log

924 

925Per le organizzazioni che richiedono metriche Daily/Weekly/Monthly Active User (DAU/WAU/MAU), considera backend che supportano query di valori univoci efficienti.

926 

927## Informazioni sul servizio

928 

929Tutte le metriche e gli eventi vengono esportati con i seguenti attributi di risorsa:

930 

931* `service.name`: `claude-code`

932* `service.version`: Versione corrente di Claude Code

933* `os.type`: Tipo di sistema operativo (ad esempio, `linux`, `darwin`, `windows`)

934* `os.version`: Stringa della versione del sistema operativo

935* `host.arch`: Architettura dell'host (ad esempio, `amd64`, `arm64`)

936* `wsl.version`: Numero di versione WSL (presente solo quando si esegue su Windows Subsystem for Linux)

937* Nome del contatore: `com.anthropic.claude_code`

938 

939## Risorse di misurazione del ROI

940 

941Per una guida completa sulla misurazione del ritorno sull'investimento per Claude Code, inclusa la configurazione della telemetria, l'analisi dei costi, le metriche di produttività e i report automatizzati, consulta la [Guida alla misurazione del ROI di Claude Code](https://github.com/anthropics/claude-code-monitoring-guide). Questo repository fornisce configurazioni Docker Compose pronte all'uso, configurazioni Prometheus e OpenTelemetry, e modelli per generare report di produttività integrati con strumenti come Linear.

942 

943## Sicurezza e privacy

944 

945* L'esportazione OpenTelemetry al tuo backend è opt-in e richiede una configurazione esplicita. Per la telemetria operazionale separata di Anthropic e come disabilitarla, vedi [Data usage](/it/data-usage#telemetry-services)

946* I contenuti dei file grezzi e i frammenti di codice non sono inclusi nelle metriche o negli eventi. I percorsi di traccia degli span sono un percorso dati separato: vedi il punto `OTEL_LOG_TOOL_CONTENT` di seguito

947* Quando autenticato tramite OAuth, `user.email` è incluso negli attributi di telemetria. Se questo è una preoccupazione per la tua organizzazione, lavora con il tuo backend di telemetria per filtrare o redarre questo campo

948* Il contenuto del prompt dell'utente non viene raccolto per impostazione predefinita. Viene registrata solo la lunghezza del prompt. Per includere il contenuto del prompt, imposta `OTEL_LOG_USER_PROMPTS=1`

949* Gli argomenti di input dello strumento e i parametri non vengono registrati per impostazione predefinita. Per includerli, imposta `OTEL_LOG_TOOL_DETAILS=1`. Quando abilitato, gli eventi `tool_result` includono un attributo `tool_parameters` con comandi Bash, nomi dei server MCP e dello strumento, e nomi delle skill, più un attributo `tool_input` con percorsi di file, URL, modelli di ricerca e altri argomenti. Gli eventi `user_prompt` includono il `command_name` verbatim per i comandi personalizzati, plugin e MCP. Gli span di traccia includono lo stesso attributo `tool_input` e attributi derivati dall'input come `file_path`. I singoli valori superiori a 512 caratteri vengono troncati e il totale è limitato a circa 4 K caratteri, ma gli argomenti potrebbero comunque contenere valori sensibili. Configura il tuo backend di telemetria per filtrare o redarre questi attributi secondo necessità

950* Il contenuto di input e output dello strumento non viene registrato negli span di traccia per impostazione predefinita. Per includerlo, imposta `OTEL_LOG_TOOL_CONTENT=1`. Quando abilitato, gli eventi di span includono il contenuto completo di input e output dello strumento troncato a 60 KB per span. Questo può includere contenuti di file grezzi dai risultati dello strumento Read e output dei comandi Bash. Configura il tuo backend di telemetria per filtrare o redarre questi attributi secondo necessità

951* I corpi grezzi della richiesta e della risposta dell'API Anthropic Messages non vengono registrati per impostazione predefinita. Per includerli, imposta `OTEL_LOG_RAW_API_BODIES`. Con `=1`, ogni chiamata API emette eventi di log `api_request_body` e `api_response_body` il cui attributo `body` è il payload serializzato in JSON, troncato a 60 KB. Con `=file:<dir>`, i corpi non troncati vengono scritti in file `.request.json` e `.response.json` in quella directory e gli eventi portano un percorso `body_ref` invece del corpo inline. Spedisci la directory con un log collector o sidecar piuttosto che attraverso il flusso di telemetria. In entrambe le modalità, i corpi contengono l'intera cronologia della conversazione (prompt di sistema, ogni turno precedente dell'utente e dell'assistente, risultati degli strumenti), quindi l'abilitazione di questa opzione implica il consenso a tutto ciò che gli altri flag di contenuto `OTEL_LOG_*` rivelerebbero. Il contenuto del pensiero esteso di Claude viene sempre redatto da questi corpi indipendentemente da altre impostazioni

952 

953## Monitoraggio di Claude Code su Amazon Bedrock

954 

955Per una guida dettagliata al monitoraggio dell'utilizzo di Claude Code per Amazon Bedrock, consulta [Claude Code Monitoring Implementation (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md).

network-config.md +132 −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# Configurazione di rete aziendale

6 

7> Configurare Claude Code per ambienti aziendali con server proxy, Autorità di Certificazione (CA) personalizzate e autenticazione Transport Layer Security (mTLS) reciproca.

8 

9Claude Code supporta varie configurazioni di rete e sicurezza aziendali attraverso variabili di ambiente. Ciò include l'instradamento del traffico attraverso server proxy aziendali, la fiducia in Autorità di Certificazione (CA) personalizzate e l'autenticazione con certificati Transport Layer Security (mTLS) reciproco per una sicurezza migliorata.

10 

11<Note>

12 Tutte le variabili di ambiente mostrate in questa pagina possono essere configurate anche in [`settings.json`](/it/settings).

13</Note>

14 

15## Configurazione del proxy

16 

17### Variabili di ambiente

18 

19Claude Code rispetta le variabili di ambiente proxy standard:

20 

21```bash theme={null}

22# Proxy HTTPS (consigliato)

23export HTTPS_PROXY=https://proxy.example.com:8080

24 

25# Proxy HTTP (se HTTPS non disponibile)

26export HTTP_PROXY=http://proxy.example.com:8080

27 

28# Ignora il proxy per richieste specifiche - formato separato da spazi

29export NO_PROXY="localhost 192.168.1.1 example.com .example.com"

30# Ignora il proxy per richieste specifiche - formato separato da virgole

31export NO_PROXY="localhost,192.168.1.1,example.com,.example.com"

32# Ignora il proxy per tutte le richieste

33export NO_PROXY="*"

34```

35 

36<Note>

37 Claude Code non supporta proxy SOCKS.

38</Note>

39 

40### Autenticazione di base

41 

42Se il proxy richiede l'autenticazione di base, includere le credenziali nell'URL del proxy:

43 

44```bash theme={null}

45export HTTPS_PROXY=http://username:password@proxy.example.com:8080

46```

47 

48<Warning>

49 Evitare di codificare le password negli script. Utilizzare variabili di ambiente o archiviazione sicura delle credenziali.

50</Warning>

51 

52<Tip>

53 Per proxy che richiedono autenticazione avanzata (NTLM, Kerberos, ecc.), considerare l'utilizzo di un servizio LLM Gateway che supporti il metodo di autenticazione.

54</Tip>

55 

56## Archivio certificati CA

57 

58Per impostazione predefinita, Claude Code si fida sia dei certificati CA Mozilla in bundle che dell'archivio certificati del sistema operativo. I proxy di ispezione TLS aziendali come CrowdStrike Falcon e Zscaler funzionano senza configurazione aggiuntiva quando il loro certificato radice è installato nell'archivio di fiducia del sistema operativo.

59 

60<Note>

61 L'integrazione dell'archivio CA di sistema richiede la distribuzione binaria nativa di Claude Code. Quando si esegue il runtime Node.js, l'archivio CA di sistema non viene unito automaticamente. In tal caso, impostare `NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem` per fidarsi di una CA radice aziendale.

62</Note>

63 

64`CLAUDE_CODE_CERT_STORE` accetta un elenco separato da virgole di fonti. I valori riconosciuti sono `bundled` per il set CA Mozilla fornito con Claude Code e `system` per l'archivio di fiducia del sistema operativo. L'impostazione predefinita è `bundled,system`.

65 

66Per fidarsi solo del set CA Mozilla in bundle:

67 

68```bash theme={null}

69export CLAUDE_CODE_CERT_STORE=bundled

70```

71 

72Per fidarsi solo dell'archivio certificati del sistema operativo:

73 

74```bash theme={null}

75export CLAUDE_CODE_CERT_STORE=system

76```

77 

78<Note>

79 `CLAUDE_CODE_CERT_STORE` non ha una chiave dello schema `settings.json` dedicata. Impostarla tramite il blocco `env` in `~/.claude/settings.json` o direttamente nell'ambiente del processo.

80</Note>

81 

82## Certificati CA personalizzati

83 

84Se l'ambiente aziendale utilizza una CA personalizzata, configurare Claude Code per fidarsi di essa direttamente:

85 

86```bash theme={null}

87export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem

88```

89 

90## Autenticazione mTLS

91 

92Per ambienti aziendali che richiedono l'autenticazione del certificato client:

93 

94```bash theme={null}

95# Certificato client per l'autenticazione

96export CLAUDE_CODE_CLIENT_CERT=/path/to/client-cert.pem

97 

98# Chiave privata del client

99export CLAUDE_CODE_CLIENT_KEY=/path/to/client-key.pem

100 

101# Facoltativo: Passphrase per la chiave privata crittografata

102export CLAUDE_CODE_CLIENT_KEY_PASSPHRASE="your-passphrase"

103```

104 

105## Requisiti di accesso alla rete

106 

107Claude Code richiede accesso ai seguenti URL. Inserire questi nella whitelist nella configurazione del proxy e nelle regole del firewall, soprattutto in ambienti di rete containerizzati o limitati.

108 

109| URL | Richiesto per |

110| ------------------------------ | ------------------------------------------------------------------------------------------------------ |

111| `api.anthropic.com` | Richieste API Claude |

112| `claude.ai` | Autenticazione account claude.ai |

113| `platform.claude.com` | Autenticazione account Anthropic Console |

114| `downloads.claude.ai` | Download eseguibili plugin; installer nativo e auto-updater nativo |

115| `storage.googleapis.com` | {/* max-version: 2.1.115 */}Installer nativo e auto-updater nativo nelle versioni precedenti a 2.1.116 |

116| `bridge.claudeusercontent.com` | Bridge WebSocket estensione [Claude in Chrome](/it/chrome) |

117 

118Se si installa Claude Code tramite npm o si gestisce la propria distribuzione binaria, gli utenti finali potrebbero non avere bisogno di accesso a `downloads.claude.ai` o `storage.googleapis.com`.

119 

120Claude Code invia anche telemetria operativa facoltativa per impostazione predefinita, che è possibile disabilitare con variabili di ambiente. Consultare [Servizi di telemetria](/it/data-usage#telemetry-services) per informazioni su come disabilitarla prima di finalizzare la whitelist.

121 

122Quando si utilizza [Amazon Bedrock](/it/amazon-bedrock), [Google Vertex AI](/it/google-vertex-ai) o [Microsoft Foundry](/it/microsoft-foundry), il traffico del modello e l'autenticazione vanno al provider invece di `api.anthropic.com`, `claude.ai` o `platform.claude.com`. Lo strumento WebFetch chiama comunque `api.anthropic.com` per il suo [controllo di sicurezza del dominio](/it/data-usage#webfetch-domain-safety-check) a meno che non si imposti `skipWebFetchPreflight: true` nelle [impostazioni](/it/settings).

123 

124[Claude Code sul web](/it/claude-code-on-the-web) e [Code Review](/it/code-review) si connettono ai repository dall'infrastruttura gestita da Anthropic. Se l'organizzazione GitHub Enterprise Cloud limita l'accesso per indirizzo IP, abilitare [l'ereditarietà della lista di indirizzi IP consentiti per le app GitHub installate](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#allowing-access-by-github-apps). L'app GitHub di Claude registra i suoi intervalli di indirizzi IP, quindi l'abilitazione di questa impostazione consente l'accesso senza configurazione manuale. Per [aggiungere gli intervalli alla lista di indirizzi consentiti manualmente](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#adding-an-allowed-ip-address) invece, o per configurare altri firewall, consultare gli [indirizzi IP dell'API Anthropic](https://platform.claude.com/docs/en/api/ip-addresses).

125 

126Per istanze [GitHub Enterprise Server](/it/github-enterprise-server) auto-ospitate dietro un firewall, inserire nella whitelist gli stessi [indirizzi IP dell'API Anthropic](https://platform.claude.com/docs/en/api/ip-addresses) in modo che l'infrastruttura Anthropic possa raggiungere l'host GHES per clonare i repository e pubblicare i commenti di revisione.

127 

128## Risorse aggiuntive

129 

130* [Impostazioni di Claude Code](/it/settings)

131* [Riferimento delle variabili di ambiente](/it/env-vars)

132* [Guida alla risoluzione dei problemi](/it/troubleshooting)

output-styles.md +121 −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# Output styles

6 

7> Adattare Claude Code per usi oltre l'ingegneria del software

8 

9Output styles consente di utilizzare Claude Code come qualsiasi tipo di agente mantenendo

10le sue capacità principali, come l'esecuzione di script locali, la lettura/scrittura di file e

11il tracciamento dei TODO.

12 

13## Output styles integrati

14 

15Lo **Default** output style di Claude Code è il prompt di sistema esistente, progettato

16per aiutarvi a completare i compiti di ingegneria del software in modo efficiente.

17 

18Ci sono due output styles integrati aggiuntivi focalizzati sull'insegnamento del

19codebase e su come Claude opera:

20 

21* **Explanatory**: Fornisce "Insights" educativi tra l'aiuto nel completamento dei compiti

22 di ingegneria del software. Aiuta a comprendere le scelte di implementazione

23 e i pattern del codebase.

24 

25* **Learning**: Modalità collaborativa di apprendimento pratico in cui Claude non solo

26 condividerà "Insights" durante la codifica, ma vi chiederà anche di contribuire con piccoli,

27 strategici pezzi di codice voi stessi. Claude Code aggiungerà marcatori `TODO(human)` nel vostro

28 codice per voi da implementare.

29 

30## Come funzionano gli output styles

31 

32Gli output styles modificano direttamente il prompt di sistema di Claude Code.

33 

34* Gli output styles personalizzati escludono istruzioni per la codifica (come la verifica del codice

35 con i test), a meno che `keep-coding-instructions` non sia true.

36* Tutti gli output styles hanno le loro istruzioni personalizzate aggiunte alla fine del

37 prompt di sistema.

38* Tutti gli output styles attivano promemoria affinché Claude aderisca alle istruzioni

39 dell'output style durante la conversazione.

40 

41L'utilizzo dei token dipende dallo stile. L'aggiunta di istruzioni al prompt di sistema

42aumenta i token di input, anche se il prompt caching riduce questo costo dopo la prima

43richiesta in una sessione. Gli output styles integrati Explanatory e Learning producono

44risposte più lunghe rispetto a Default per progettazione, il che aumenta i token di output. Per

45gli stili personalizzati, l'utilizzo dei token di output dipende da ciò che le vostre istruzioni dicono a Claude

46di produrre.

47 

48## Cambiare il vostro output style

49 

50Eseguite `/config` e selezionate **Output style** per scegliere uno stile da un menu. La vostra

51selezione viene salvata in `.claude/settings.local.json` al

52[livello del progetto locale](/it/settings).

53 

54Per impostare uno stile senza il menu, modificate direttamente il campo `outputStyle` in un

55file di impostazioni:

56 

57```json theme={null}

58{

59 "outputStyle": "Explanatory"

60}

61```

62 

63Poiché l'output style è impostato nel prompt di sistema all'avvio della sessione,

64le modifiche hanno effetto la prossima volta che avviate una nuova sessione. Questo mantiene il prompt di sistema

65stabile durante una conversazione in modo che il prompt caching possa ridurre la latenza e

66il costo.

67 

68## Creare un output style personalizzato

69 

70Gli output styles personalizzati sono file Markdown con frontmatter e il testo che verrà

71aggiunto al prompt di sistema:

72 

73```markdown theme={null}

74---

75name: My Custom Style

76description:

77 A brief description of what this style does, to be displayed to the user

78---

79 

80# Custom Style Instructions

81 

82You are an interactive CLI tool that helps users with software engineering

83tasks. [Your custom instructions here...]

84 

85## Specific Behaviors

86 

87[Define how the assistant should behave in this style...]

88```

89 

90Potete salvare questi file a livello utente (`~/.claude/output-styles`) o

91a livello di progetto (`.claude/output-styles`).

92 

93### Frontmatter

94 

95I file di output style supportano frontmatter per specificare i metadati:

96 

97| Frontmatter | Scopo | Predefinito |

98| :------------------------- | :--------------------------------------------------------------------------------- | :------------------------ |

99| `name` | Nome dell'output style, se non il nome del file | Eredita dal nome del file |

100| `description` | Descrizione dell'output style, mostrata nel picker `/config` | Nessuno |

101| `keep-coding-instructions` | Se mantenere le parti del prompt di sistema di Claude Code relative alla codifica. | false |

102 

103## Confronti con funzionalità correlate

104 

105### Output Styles vs. CLAUDE.md vs. --append-system-prompt

106 

107Gli output styles "disattivano" completamente le parti del prompt di sistema predefinito di Claude Code

108specifiche per l'ingegneria del software. Né CLAUDE.md né

109`--append-system-prompt` modificano il prompt di sistema predefinito di Claude Code. CLAUDE.md

110aggiunge i contenuti come messaggio utente *seguendo* il prompt di sistema predefinito di Claude Code. `--append-system-prompt` aggiunge il contenuto al prompt di sistema.

111 

112### Output Styles vs. [Agents](/it/sub-agents)

113 

114Gli output styles influenzano direttamente il loop dell'agente principale e influenzano solo il prompt

115di sistema. Gli agenti vengono invocati per gestire compiti specifici e possono includere impostazioni aggiuntive

116come il modello da utilizzare, gli strumenti disponibili e un contesto

117su quando utilizzare l'agente.

118 

119### Output Styles vs. [Skills](/it/skills)

120 

121Gli output styles modificano il modo in cui Claude risponde (formattazione, tono, struttura) e sono sempre attivi una volta selezionati. Skills sono prompt specifici per compiti che invocate con `/skill-name` o che Claude carica automaticamente quando rilevante. Utilizzate gli output styles per preferenze di formattazione coerenti; utilizzate skills per flussi di lavoro e compiti riutilizzabili.

overview.md +875 −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 di Claude Code

6 

7> Claude Code è uno strumento di codifica agentivo che legge la tua base di codice, modifica i file, esegue comandi e si integra con i tuoi strumenti di sviluppo. Disponibile nel tuo terminale, IDE, app desktop e browser.

8 

9export const InstallConfigurator = ({defaultSurface = 'terminal'}) => {

10 const TERM = {

11 mac: {

12 label: 'macOS / Linux',

13 cmd: 'curl -fsSL https://claude.ai/install.sh | bash'

14 },

15 win: {

16 label: 'Windows'

17 },

18 brew: {

19 label: 'Homebrew',

20 cmd: 'brew install --cask claude-code'

21 },

22 winget: {

23 label: 'WinGet',

24 cmd: 'winget install Anthropic.ClaudeCode'

25 }

26 };

27 const WIN_VARIANTS = {

28 ps: 'irm https://claude.ai/install.ps1 | iex',

29 cmd: 'curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd'

30 };

31 const TABS = [{

32 key: 'terminal',

33 label: 'Terminal'

34 }, {

35 key: 'desktop',

36 label: 'Desktop'

37 }, {

38 key: 'vscode',

39 label: 'VS Code'

40 }, {

41 key: 'jetbrains',

42 label: 'JetBrains'

43 }];

44 const ALT_TARGETS = {

45 desktop: {

46 name: 'Desktop',

47 tagline: 'The full agent in a native app for macOS and Windows.',

48 installLabel: 'Download the app',

49 installHref: 'https://claude.com/download?utm_source=claude_code&utm_medium=docs&utm_content=configurator_desktop_download',

50 guideHref: '/en/desktop-quickstart'

51 },

52 vscode: {

53 name: 'VS Code',

54 tagline: 'Review diffs, manage context, and chat without leaving your editor.',

55 installLabel: 'Install from Marketplace',

56 installHref: 'https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code',

57 altCmd: 'code --install-extension anthropic.claude-code',

58 guideHref: '/en/vs-code'

59 },

60 jetbrains: {

61 name: 'JetBrains',

62 tagline: 'Native plugin for IntelliJ, PyCharm, WebStorm, and other JetBrains IDEs.',

63 installLabel: 'Install from Marketplace',

64 installHref: 'https://plugins.jetbrains.com/plugin/27310-claude-code-beta-',

65 guideHref: '/en/jetbrains'

66 }

67 };

68 const PROVIDERS = [{

69 key: 'anthropic',

70 label: 'Anthropic'

71 }, {

72 key: 'bedrock',

73 label: 'Amazon Bedrock'

74 }, {

75 key: 'foundry',

76 label: 'Microsoft Foundry'

77 }, {

78 key: 'vertex',

79 label: 'Google Vertex AI'

80 }];

81 const PROVIDER_NOTICE = {

82 bedrock: <>

83 <strong>Configure your AWS account first.</strong> Running on Bedrock

84 requires model access enabled in the AWS console and IAM credentials.{' '}

85 <a href="/en/amazon-bedrock">Bedrock setup guide →</a>

86 </>,

87 vertex: <>

88 <strong>Configure your GCP project first.</strong> Running on Vertex AI

89 requires the Vertex API enabled and a service account with the right

90 permissions.{' '}

91 <a href="/en/google-vertex-ai">Vertex setup guide →</a>

92 </>,

93 foundry: <>

94 <strong>Configure your Azure resources first.</strong> Running on

95 Microsoft Foundry requires an Azure subscription with a Foundry resource

96 and model deployments provisioned.{' '}

97 <a href="/en/microsoft-foundry">Foundry setup guide →</a>

98 </>

99 };

100 const iconCheck = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

101 <polyline points="20 6 9 17 4 12" />

102 </svg>;

103 const iconCopy = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

104 <rect x="9" y="9" width="13" height="13" rx="2" />

105 <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />

106 </svg>;

107 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

108 <line x1="5" y1="12" x2="19" y2="12" />

109 <polyline points="12 5 19 12 12 19" />

110 </svg>;

111 const iconArrowUpRight = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

112 <line x1="7" y1="17" x2="17" y2="7" />

113 <polyline points="7 7 17 7 17 17" />

114 </svg>;

115 const iconInfo = (size = 16) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

116 <circle cx="12" cy="12" r="10" />

117 <line x1="12" y1="16" x2="12" y2="12" />

118 <line x1="12" y1="8" x2="12.01" y2="8" />

119 </svg>;

120 const [target, setTarget] = useState(defaultSurface);

121 const [team, setTeam] = useState(false);

122 const [provider, setProvider] = useState('anthropic');

123 const [pkg, setPkg] = useState(() => (/Win/).test(navigator.userAgent) ? 'win' : 'mac');

124 const [winCmd, setWinCmd] = useState(false);

125 const [copied, setCopied] = useState(null);

126 const copyTimer = useRef(null);

127 const handleCopy = async (text, key) => {

128 try {

129 await navigator.clipboard.writeText(text);

130 } catch {

131 const ta = document.createElement('textarea');

132 ta.value = text;

133 document.body.appendChild(ta);

134 ta.select();

135 document.execCommand('copy');

136 document.body.removeChild(ta);

137 }

138 clearTimeout(copyTimer.current);

139 setCopied(key);

140 copyTimer.current = setTimeout(() => setCopied(null), 1800);

141 };

142 const cardBodyCmd = (cmd, prompt) => {

143 const on = copied === 'term';

144 return <div className="cc-ic-card-body">

145 <span className="cc-ic-prompt">{prompt || '$'}</span>

146 <div className="cc-ic-cmd">{cmd}</div>

147 <button type="button" className={'cc-ic-copy' + (on ? ' cc-ic-copied' : '')} onClick={() => handleCopy(cmd, 'term')}>

148 {on ? iconCheck(13) : iconCopy(13)}

149 <span>{on ? 'Copied' : 'Copy'}</span>

150 </button>

151 </div>;

152 };

153 const isWinInstaller = pkg === 'win';

154 const isWinPrompt = pkg === 'win' || pkg === 'winget';

155 const terminalCmd = isWinInstaller ? WIN_VARIANTS[winCmd ? 'cmd' : 'ps'] : TERM[pkg].cmd;

156 const alt = ALT_TARGETS[target];

157 const showNotice = team && provider !== 'anthropic';

158 const STYLES = `

159.cc-ic {

160 --ic-slate: #141413;

161 --ic-clay: #d97757;

162 --ic-clay-deep: #c6613f;

163 --ic-gray-000: #ffffff;

164 --ic-gray-150: #f0eee6;

165 --ic-gray-550: #73726c;

166 --ic-gray-700: #3d3d3a;

167 --ic-border-subtle: rgba(31, 30, 29, 0.08);

168 --ic-border-default: rgba(31, 30, 29, 0.15);

169 --ic-border-strong: rgba(31, 30, 29, 0.3);

170 --ic-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, 'Courier New', monospace;

171 font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

172 font-size: 14px; line-height: 1.5; color: var(--ic-slate);

173 margin: 8px 0 32px;

174}

175.dark .cc-ic {

176 --ic-slate: #f0eee6;

177 --ic-gray-000: #262624;

178 --ic-gray-150: #1f1e1d;

179 --ic-gray-550: #91908a;

180 --ic-gray-700: #bfbdb4;

181 --ic-border-subtle: rgba(240, 238, 230, 0.08);

182 --ic-border-default: rgba(240, 238, 230, 0.14);

183 --ic-border-strong: rgba(240, 238, 230, 0.28);

184}

185.dark .cc-ic-check { background: transparent; }

186.dark .cc-ic-card { border: 0.5px solid var(--ic-border-subtle); }

187.dark .cc-ic-p-pill.cc-ic-active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }

188.cc-ic *, .cc-ic *::before, .cc-ic *::after { box-sizing: border-box; }

189.cc-ic a { text-decoration: none; }

190.cc-ic a:not([class]) { color: inherit; }

191.cc-ic button { font-family: inherit; cursor: pointer; }

192 

193.cc-ic-tab-strip {

194 display: inline-flex; gap: 2px;

195 padding: 4px; background: var(--ic-gray-150);

196 border-radius: 10px; overflow-x: auto;

197 max-width: 100%;

198}

199.cc-ic-tab {

200 appearance: none; background: none; border: none;

201 padding: 10px 18px; font-size: 15px; font-weight: 430;

202 color: var(--ic-gray-550); border-radius: 7px;

203 white-space: nowrap;

204 transition: color 0.12s, background-color 0.12s;

205}

206.cc-ic-tab:hover { color: var(--ic-gray-700); }

207.cc-ic-tab.cc-ic-active {

208 color: var(--ic-slate); font-weight: 500;

209 background: var(--ic-gray-000);

210 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

211}

212.dark .cc-ic-tab.cc-ic-active { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }

213 

214.cc-ic-team-wrap { padding: 16px 0 20px; }

215.cc-ic-team-toggle {

216 display: flex; align-items: center; gap: 12px; font-family: inherit;

217 padding: 12px 16px; font-size: 14px; font-weight: 430;

218 color: var(--ic-gray-700); cursor: pointer; user-select: none;

219 width: fit-content; background: var(--ic-gray-150);

220 border: 0.5px solid var(--ic-border-subtle); border-radius: 8px;

221 transition: border-color 0.15s;

222}

223.cc-ic-team-toggle:hover { border-color: var(--ic-border-default); }

224.cc-ic-team-toggle.cc-ic-checked {

225 background: rgba(217, 119, 87, 0.08);

226 border-color: rgba(217, 119, 87, 0.25);

227}

228.cc-ic-check {

229 width: 16px; height: 16px;

230 border: 1px solid var(--ic-border-strong); border-radius: 4px;

231 background: var(--ic-gray-000);

232 display: flex; align-items: center; justify-content: center;

233 flex-shrink: 0;

234}

235.cc-ic-check svg { color: #fff; display: none; }

236.cc-ic-team-toggle.cc-ic-checked .cc-ic-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); }

237.cc-ic-team-toggle.cc-ic-checked .cc-ic-check svg { display: block; }

238 

239.cc-ic-team-reveal { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }

240.cc-ic-sales {

241 display: flex; align-items: center; justify-content: space-between;

242 gap: 16px; padding: 14px 16px;

243 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

244 border-radius: 8px; flex-wrap: wrap;

245}

246.cc-ic-sales-text { font-size: 13px; color: var(--ic-gray-700); line-height: 1.5; flex: 1; min-width: 200px; }

247.cc-ic-sales-text strong { font-weight: 550; color: var(--ic-slate); }

248.cc-ic-sales-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

249.cc-ic-btn-clay {

250 display: inline-flex; align-items: center; gap: 8px;

251 background: var(--ic-clay-deep); color: #fff; border: none;

252 border-radius: 8px; padding: 8px 14px;

253 font-size: 13px; font-weight: 500;

254 transition: background-color 0.15s; white-space: nowrap;

255}

256.cc-ic-btn-clay:hover { background: var(--ic-clay); }

257.cc-ic-btn-ghost {

258 display: inline-flex; align-items: center; gap: 8px;

259 background: transparent; color: var(--ic-gray-700);

260 border: 0.5px solid var(--ic-border-default);

261 border-radius: 8px; padding: 8px 14px;

262 font-size: 13px; font-weight: 500;

263}

264.cc-ic-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

265 

266.cc-ic-provider-bar {

267 display: flex; align-items: center; gap: 12px;

268 padding: 14px 16px; background: var(--ic-gray-150);

269 border-radius: 8px; font-size: 13px; flex-wrap: wrap;

270}

271.cc-ic-provider-bar .cc-ic-label { color: var(--ic-gray-550); flex-shrink: 0; }

272.cc-ic-provider-pills { display: flex; gap: 4px; flex-wrap: wrap; }

273.cc-ic-p-pill {

274 appearance: none; border: none; background: transparent;

275 padding: 6px 12px; border-radius: 6px;

276 font-size: 13px; font-weight: 430; color: var(--ic-gray-700);

277 white-space: nowrap;

278}

279.cc-ic-p-pill:hover { background: rgba(0, 0, 0, 0.04); }

280.cc-ic-p-pill.cc-ic-active {

281 background: var(--ic-gray-000); color: var(--ic-slate);

282 font-weight: 500; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);

283}

284.cc-ic-provider-notice {

285 display: flex; padding: 16px 18px;

286 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

287 border-radius: 8px; gap: 14px; align-items: flex-start;

288}

289.cc-ic-provider-notice > svg { color: var(--ic-gray-550); margin-top: 2px; flex-shrink: 0; }

290.cc-ic-provider-notice-body { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); }

291.cc-ic-provider-notice-body strong { font-weight: 550; color: var(--ic-slate); }

292.cc-ic-provider-notice-body a { color: var(--ic-clay-deep); font-weight: 500; }

293.cc-ic-provider-notice-body a:hover { text-decoration: underline; }

294 

295.cc-ic-card { background: #141413; border-radius: 12px; overflow: hidden; }

296.cc-ic-subtabs {

297 display: flex; align-items: center;

298 background: #1a1918;

299 border-bottom: 0.5px solid rgba(255, 255, 255, 0.08);

300 padding: 0 8px; overflow-x: auto;

301}

302.cc-ic-subtab {

303 appearance: none; background: none; border: none;

304 padding: 12px 16px; font-size: 12px;

305 color: rgba(255, 255, 255, 0.5);

306 position: relative; white-space: nowrap;

307}

308.cc-ic-subtab:hover { color: rgba(255, 255, 255, 0.75); }

309.cc-ic-subtab.cc-ic-active { color: #fff; }

310.cc-ic-subtab.cc-ic-active::after {

311 content: ''; position: absolute;

312 left: 12px; right: 12px; bottom: -0.5px;

313 height: 2px; background: var(--ic-clay);

314}

315.cc-ic-shell-switch {

316 display: inline-flex; gap: 2px;

317 margin: 14px 26px 0; padding: 3px;

318 background: rgba(255, 255, 255, 0.06);

319 border: 0.5px solid rgba(255, 255, 255, 0.08);

320 border-radius: 8px;

321 font-family: inherit;

322}

323.cc-ic-shell-option {

324 font: inherit; font-size: 12px; font-weight: 500;

325 padding: 5px 12px; border-radius: 6px;

326 background: transparent; border: none;

327 color: rgba(255, 255, 255, 0.55);

328 cursor: pointer; user-select: none; white-space: nowrap;

329 transition: color 120ms ease, background-color 120ms ease;

330}

331.cc-ic-shell-option:hover { color: rgba(255, 255, 255, 0.85); }

332.cc-ic-shell-option.cc-ic-active {

333 background: rgba(255, 255, 255, 0.12);

334 color: #fff;

335 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);

336}

337 

338.cc-ic-card-body { padding: 24px 26px; display: flex; align-items: flex-start; gap: 14px; }

339.cc-ic-prompt {

340 color: var(--ic-clay); font-family: var(--ic-font-mono);

341 font-size: 17px; user-select: none; padding-top: 2px;

342}

343.cc-ic-cmd {

344 flex: 1; font-family: var(--ic-font-mono);

345 font-size: 17px; color: #f0eee6;

346 line-height: 1.55; white-space: pre-wrap; word-break: break-word;

347}

348.cc-ic-copy {

349 display: inline-flex; align-items: center; gap: 6px;

350 background: rgba(255, 255, 255, 0.08);

351 border: 0.5px solid rgba(255, 255, 255, 0.12);

352 color: rgba(255, 255, 255, 0.85);

353 padding: 7px 13px; border-radius: 8px;

354 font-size: 13px; font-weight: 500; flex-shrink: 0;

355}

356.cc-ic-copy:hover { background: rgba(255, 255, 255, 0.14); }

357.cc-ic-copy.cc-ic-copied { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); color: #fff; }

358 

359.cc-ic-below {

360 margin-top: 12px; font-size: 13px; color: var(--ic-gray-550);

361 display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline;

362}

363.cc-ic-below a { color: var(--ic-gray-700); border-bottom: 0.5px solid var(--ic-border-default); }

364.cc-ic-below a:hover { color: var(--ic-clay-deep); border-bottom-color: var(--ic-clay-deep); }

365.cc-ic-handoff {

366 padding: 22px 24px;

367 background: linear-gradient(180deg, #faf9f4 0%, #f3f1e9 100%);

368 border: 0.5px solid var(--ic-border-default);

369 border-radius: 12px;

370 box-shadow: 0 1px 2px rgba(31, 30, 29, 0.04), 0 6px 16px -4px rgba(31, 30, 29, 0.06);

371}

372.dark .cc-ic-handoff {

373 background: linear-gradient(180deg, #262624 0%, #1f1e1d 100%);

374 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 16px -4px rgba(0, 0, 0, 0.4);

375}

376.cc-ic-handoff-title {

377 font-size: 16px; font-weight: 550; color: var(--ic-slate);

378 letter-spacing: -0.01em; margin-bottom: 4px;

379}

380.cc-ic-handoff-sub {

381 font-size: 14px; line-height: 1.5; color: var(--ic-gray-700);

382 margin-bottom: 18px;

383}

384.cc-ic-handoff-actions { display: flex; gap: 10px; flex-wrap: wrap; }

385.cc-ic-handoff-alt {

386 margin-top: 12px; font-size: 12px; color: var(--ic-gray-550);

387}

388.cc-ic-handoff-alt code {

389 font-family: var(--ic-font-mono); font-size: 11px;

390 background: var(--ic-gray-150); padding: 2px 6px;

391 border-radius: 4px; color: var(--ic-gray-700);

392}

393.cc-ic-copy-sm {

394 appearance: none; border: none;

395 display: inline-flex; align-items: center; justify-content: center;

396 width: 22px; height: 22px;

397 margin-left: 4px; vertical-align: middle;

398 background: var(--ic-gray-150); color: var(--ic-gray-550);

399 border-radius: 4px;

400 transition: color 0.1s, background-color 0.1s;

401}

402.cc-ic-copy-sm:hover { color: var(--ic-gray-700); background: var(--ic-border-default); }

403.cc-ic-copy-sm.cc-ic-copied { background: var(--ic-clay-deep); color: #fff; }

404 

405@media (max-width: 720px) {

406 .cc-ic-tab { padding: 12px 14px; font-size: 14px; }

407 .cc-ic-sales-actions { width: 100%; }

408 .cc-ic-card-body { padding: 20px; }

409 .cc-ic-cmd { font-size: 15px; }

410}

411`;

412 return <div className="cc-ic not-prose">

413 <style>{STYLES}</style>

414 

415 {}

416 <div className="cc-ic-tab-strip" role="tablist">

417 {TABS.map(t => <button key={t.key} type="button" role="tab" aria-selected={target === t.key} className={'cc-ic-tab' + (target === t.key ? ' cc-ic-active' : '')} onClick={() => setTarget(t.key)}>

418 {t.label}

419 </button>)}

420 </div>

421 

422 {}

423 <div className="cc-ic-team-wrap">

424 <button type="button" role="switch" aria-checked={team} className={'cc-ic-team-toggle' + (team ? ' cc-ic-checked' : '')} onClick={() => setTeam(!team)}>

425 <span className="cc-ic-check">{iconCheck(11)}</span>

426 <span>

427 I’m buying for a team or company (SSO, AWS/Azure/GCP, central billing)

428 </span>

429 </button>

430 </div>

431 

432 {}

433 {team && <div className="cc-ic-team-reveal">

434 <div className="cc-ic-sales">

435 <div className="cc-ic-sales-text">

436 <strong>Set up your team:</strong> self-serve or talk to sales.

437 </div>

438 <div className="cc-ic-sales-actions">

439 <a href="https://claude.ai/upgrade?initialPlanType=team&amp;utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_get_started" className="cc-ic-btn-ghost">

440 Get started

441 </a>

442 <a href="https://www.anthropic.com/contact-sales?utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_contact_sales" className="cc-ic-btn-clay">

443 Contact sales {iconArrowRight()}

444 </a>

445 </div>

446 </div>

447 

448 <div className="cc-ic-provider-bar">

449 <span className="cc-ic-label">Run on</span>

450 <div className="cc-ic-provider-pills" role="radiogroup" aria-label="Provider">

451 {PROVIDERS.map(p => <button key={p.key} type="button" role="radio" aria-checked={provider === p.key} className={'cc-ic-p-pill' + (provider === p.key ? ' cc-ic-active' : '')} onClick={() => setProvider(p.key)}>

452 {p.label}

453 </button>)}

454 </div>

455 </div>

456 

457 {showNotice && <div className="cc-ic-provider-notice">

458 {iconInfo()}

459 <div className="cc-ic-provider-notice-body">

460 {PROVIDER_NOTICE[provider]}

461 </div>

462 </div>}

463 </div>}

464 

465 {}

466 {target === 'terminal' && <div className="cc-ic-card">

467 <div className="cc-ic-subtabs" role="tablist" aria-label="Install method">

468 {Object.keys(TERM).map(k => <button key={k} type="button" role="tab" aria-selected={pkg === k} className={'cc-ic-subtab' + (pkg === k ? ' cc-ic-active' : '')} onClick={() => setPkg(k)}>

469 {TERM[k].label}

470 </button>)}

471 </div>

472 {isWinInstaller && <div className="cc-ic-shell-switch" role="tablist" aria-label="Shell">

473 {[{

474 k: 'ps',

475 label: 'PowerShell'

476 }, {

477 k: 'cmd',

478 label: 'CMD'

479 }].map(({k, label}) => {

480 const active = k === 'cmd' === winCmd;

481 return <button key={k} type="button" role="tab" aria-selected={active} className={'cc-ic-shell-option' + (active ? ' cc-ic-active' : '')} onClick={() => setWinCmd(k === 'cmd')}>

482 {label}

483 </button>;

484 })}

485 </div>}

486 {cardBodyCmd(terminalCmd, isWinPrompt ? '>' : '$')}

487 </div>}

488 

489 {}

490 {target === 'terminal' && <div className="cc-ic-below">

491 {isWinInstaller && <span>

492 <a href="https://git-scm.com/downloads/win" target="_blank" rel="noopener">

493 Git for Windows

494 </a>{' '}

495 recommended. PowerShell is used if Git Bash is absent.

496 </span>}

497 {(pkg === 'brew' || pkg === 'winget') && <span>

498 Does not auto-update. Run{' '}

499 <code>{pkg === 'brew' ? 'brew upgrade claude-code' : 'winget upgrade Anthropic.ClaudeCode'}</code>{' '}

500 periodically.

501 </span>}

502 <a href="/en/troubleshoot-install">Installation troubleshooting</a>

503 </div>}

504 

505 {alt && <div className="cc-ic-handoff">

506 <div className="cc-ic-handoff-title">Claude Code for {alt.name}</div>

507 <div className="cc-ic-handoff-sub">{alt.tagline}</div>

508 <div className="cc-ic-handoff-actions">

509 <a href={alt.installHref} className="cc-ic-btn-clay" {...alt.installHref.startsWith('http') ? {

510 target: '_blank',

511 rel: 'noopener'

512 } : {}}>

513 {alt.installLabel} {iconArrowUpRight(13)}

514 </a>

515 <a href={alt.guideHref} className="cc-ic-btn-ghost">

516 {alt.name} guide {iconArrowRight(12)}

517 </a>

518 </div>

519 {alt.altCmd && <div className="cc-ic-handoff-alt">

520 or run <code>{alt.altCmd}</code>

521 <button type="button" className={'cc-ic-copy-sm' + (copied === 'alt' ? ' cc-ic-copied' : '')} onClick={() => handleCopy(alt.altCmd, 'alt')} aria-label="Copy command">

522 {copied === 'alt' ? iconCheck(11) : iconCopy(11)}

523 </button>

524 </div>}

525 </div>}

526 </div>;

527};

528 

529export const Experiment = ({flag, treatment, children}) => {

530 const VID_KEY = 'exp_vid';

531 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

532 const fnv1a = s => {

533 let h = 0x811c9dc5;

534 for (let i = 0; i < s.length; i++) {

535 h ^= s.charCodeAt(i);

536 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

537 }

538 return h >>> 0;

539 };

540 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

541 const [decision] = useState(() => {

542 const params = new URLSearchParams(location.search);

543 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

544 const force = params.get('gb-force');

545 if (force) {

546 for (const p of force.split(',')) {

547 const [k, v] = p.split(':');

548 if (k === flag) return {

549 variant: v || 'treatment',

550 track: false

551 };

552 }

553 }

554 if (navigator.globalPrivacyControl) {

555 return {

556 variant: 'control',

557 track: false

558 };

559 }

560 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

561 if (prefsMatch) {

562 try {

563 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

564 return {

565 variant: 'control',

566 track: false

567 };

568 }

569 } catch {

570 return {

571 variant: 'control',

572 track: false

573 };

574 }

575 } else {

576 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

577 if (!country || CONSENT_COUNTRIES.has(country)) {

578 return {

579 variant: 'control',

580 track: false

581 };

582 }

583 }

584 let vid;

585 try {

586 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

587 if (ajsMatch) {

588 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

589 } else {

590 vid = localStorage.getItem(VID_KEY);

591 if (!vid) {

592 vid = crypto.randomUUID();

593 }

594 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

595 }

596 try {

597 localStorage.setItem(VID_KEY, vid);

598 } catch {}

599 } catch {

600 return {

601 variant: 'control',

602 track: false

603 };

604 }

605 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

606 return {

607 variant,

608 track: true,

609 vid

610 };

611 });

612 useEffect(() => {

613 if (!decision.track) return;

614 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

615 method: 'POST',

616 headers: {

617 'Content-Type': 'application/json',

618 'x-service-name': 'claude_code_docs'

619 },

620 body: JSON.stringify({

621 events: [{

622 event_type: 'GrowthbookExperimentEvent',

623 event_data: {

624 device_id: decision.vid,

625 anonymous_id: decision.vid,

626 timestamp: new Date().toISOString(),

627 experiment_id: flag,

628 variation_id: decision.variant === 'treatment' ? 1 : 0,

629 environment: 'production'

630 }

631 }]

632 }),

633 keepalive: true

634 }).catch(() => {});

635 }, []);

636 return decision.variant === 'treatment' ? treatment : children;

637};

638 

639Claude Code è un assistente di codifica alimentato da IA che ti aiuta a creare funzionalità, correggere bug e automatizzare attività di sviluppo. Comprende l'intera tua base di codice e può lavorare su più file e strumenti per portare a termine le cose.

640 

641<div data-gb-slot="overview-install-configurator">

642 <Experiment flag="overview-install-configurator" treatment={<InstallConfigurator />} />

643</div>

644 

645## Inizia

646 

647Scegli il tuo ambiente per iniziare. La maggior parte delle superfici richiede un [abbonamento a Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_pricing) o un account [Anthropic Console](https://console.anthropic.com/). Il Terminal CLI e VS Code supportano anche [provider di terze parti](/it/third-party-integrations).

648 

649<Tabs>

650 <Tab title="Terminal">

651 Il CLI completo per lavorare con Claude Code direttamente nel tuo terminale. Modifica file, esegui comandi e gestisci l'intero progetto dalla riga di comando.

652 

653 To install Claude Code, use one of the following methods:

654 

655 <Tabs>

656 <Tab title="Native Install (Recommended)">

657 **macOS, Linux, WSL:**

658 

659 ```bash theme={null}

660 curl -fsSL https://claude.ai/install.sh | bash

661 ```

662 

663 **Windows PowerShell:**

664 

665 ```powershell theme={null}

666 irm https://claude.ai/install.ps1 | iex

667 ```

668 

669 **Windows CMD:**

670 

671 ```batch theme={null}

672 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

673 ```

674 

675 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

676 

677 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

678 

679 <Info>

680 Native installations automatically update in the background to keep you on the latest version.

681 </Info>

682 </Tab>

683 

684 <Tab title="Homebrew">

685 ```bash theme={null}

686 brew install --cask claude-code

687 ```

688 

689 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

690 

691 <Info>

692 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

693 </Info>

694 </Tab>

695 

696 <Tab title="WinGet">

697 ```powershell theme={null}

698 winget install Anthropic.ClaudeCode

699 ```

700 

701 <Info>

702 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

703 </Info>

704 </Tab>

705 </Tabs>

706 

707 You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

708 

709 Quindi avvia Claude Code in qualsiasi progetto:

710 

711 ```bash theme={null}

712 cd your-project

713 claude

714 ```

715 

716 Ti verrà chiesto di accedere al primo utilizzo. È tutto! [Continua con la Guida rapida →](/it/quickstart)

717 

718 <Tip>

719 Vedi [configurazione avanzata](/it/setup) per le opzioni di installazione, gli aggiornamenti manuali o le istruzioni di disinstallazione. Visita [risoluzione dei problemi di installazione](/it/troubleshoot-install) se riscontri problemi.

720 </Tip>

721 </Tab>

722 

723 <Tab title="VS Code">

724 L'estensione VS Code fornisce diff inline, @-mentions, revisione del piano e cronologia delle conversazioni direttamente nel tuo editor.

725 

726 * [Installa per VS Code](vscode:extension/anthropic.claude-code)

727 * [Installa per Cursor](cursor:extension/anthropic.claude-code)

728 

729 Oppure cerca "Claude Code" nella visualizzazione Estensioni (`Cmd+Shift+X` su Mac, `Ctrl+Shift+X` su Windows/Linux). Dopo l'installazione, apri il Palette dei comandi (`Cmd+Shift+P` / `Ctrl+Shift+P`), digita "Claude Code" e seleziona **Apri in Nuova Scheda**.

730 

731 [Inizia con VS Code →](/it/vs-code#get-started)

732 </Tab>

733 

734 <Tab title="App desktop">

735 Un'app standalone per eseguire Claude Code al di fuori del tuo IDE o terminale. Rivedi i diff visivamente, esegui più sessioni affiancate, pianifica attività ricorrenti e avvia sessioni cloud.

736 

737 Scarica e installa:

738 

739 * [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) (Intel e Apple Silicon)

740 * [Windows](https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs) (x64)

741 * [Windows ARM64](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs)

742 

743 Dopo l'installazione, avvia Claude, accedi e fai clic sulla scheda **Code** per iniziare a codificare. È richiesto un [abbonamento a pagamento](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_desktop_pricing).

744 

745 [Scopri di più sull'app desktop →](/it/desktop-quickstart)

746 </Tab>

747 

748 <Tab title="Web">

749 Esegui Claude Code nel tuo browser senza configurazione locale. Avvia attività a lunga esecuzione e controlla quando sono completate, lavora su repository che non hai localmente o esegui più attività in parallelo. Disponibile su browser desktop e sull'app Claude iOS.

750 

751 Inizia a codificare su [claude.ai/code](https://claude.ai/code).

752 

753 [Inizia sul web →](/it/web-quickstart)

754 </Tab>

755 

756 <Tab title="JetBrains">

757 Un plugin per IntelliJ IDEA, PyCharm, WebStorm e altri IDE JetBrains con visualizzazione diff interattiva e condivisione del contesto di selezione.

758 

759 Installa il [plugin Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) dal JetBrains Marketplace e riavvia il tuo IDE.

760 

761 [Inizia con JetBrains →](/it/jetbrains)

762 </Tab>

763</Tabs>

764 

765## Cosa puoi fare

766 

767Ecco alcuni dei modi in cui puoi utilizzare Claude Code:

768 

769<AccordionGroup>

770 <Accordion title="Automatizza il lavoro che continui a rimandare" icon="wand-magic-sparkles">

771 Claude Code gestisce i compiti noiosi che consumano la tua giornata: scrivere test per il codice non testato, correggere errori di lint in un progetto, risolvere conflitti di merge, aggiornare dipendenze e scrivere note di rilascio.

772 

773 ```bash theme={null}

774 claude "write tests for the auth module, run them, and fix any failures"

775 ```

776 </Accordion>

777 

778 <Accordion title="Crea funzionalità e correggi bug" icon="hammer">

779 Descrivi quello che vuoi in linguaggio naturale. Claude Code pianifica l'approccio, scrive il codice su più file e verifica che funzioni.

780 

781 Per i bug, incolla un messaggio di errore o descrivi il sintomo. Claude Code traccia il problema attraverso la tua base di codice, identifica la causa principale e implementa una correzione. Vedi [flussi di lavoro comuni](/it/common-workflows) per altri esempi.

782 </Accordion>

783 

784 <Accordion title="Crea commit e pull request" icon="code-branch">

785 Claude Code funziona direttamente con git. Mette in stage le modifiche, scrive messaggi di commit, crea branch e apre pull request.

786 

787 ```bash theme={null}

788 claude "commit my changes with a descriptive message"

789 ```

790 

791 In CI, puoi automatizzare la revisione del codice e il triage dei problemi con [GitHub Actions](/it/github-actions) o [GitLab CI/CD](/it/gitlab-ci-cd).

792 </Accordion>

793 

794 <Accordion title="Connetti i tuoi strumenti con MCP" icon="plug">

795 Il [Model Context Protocol (MCP)](/it/mcp) è uno standard aperto per connettere gli strumenti di IA alle fonti di dati esterne. Con MCP, Claude Code può leggere i tuoi documenti di progettazione in Google Drive, aggiornare i ticket in Jira, estrarre dati da Slack o utilizzare i tuoi strumenti personalizzati.

796 </Accordion>

797 

798 <Accordion title="Personalizza con istruzioni, skills e hooks" icon="sliders">

799 [`CLAUDE.md`](/it/memory) è un file markdown che aggiungi alla radice del tuo progetto che Claude Code legge all'inizio di ogni sessione. Usalo per impostare standard di codifica, decisioni architettoniche, librerie preferite e checklist di revisione. Claude costruisce anche [memoria automatica](/it/memory#auto-memory) mentre lavora, salvando insegnamenti come comandi di build e intuizioni di debug tra le sessioni senza che tu debba scrivere nulla.

800 

801 Crea [comandi personalizzati](/it/skills) per pacchettizzare flussi di lavoro ripetibili che il tuo team può condividere, come `/review-pr` o `/deploy-staging`.

802 

803 [Hooks](/it/hooks) ti permettono di eseguire comandi shell prima o dopo le azioni di Claude Code, come la formattazione automatica dopo ogni modifica di file o l'esecuzione di lint prima di un commit.

804 </Accordion>

805 

806 <Accordion title="Esegui team di agenti e crea agenti personalizzati" icon="users">

807 Genera [più agenti Claude Code](/it/sub-agents) che lavorano su diverse parti di un'attività contemporaneamente. Un agente principale coordina il lavoro, assegna sottoattività e unisce i risultati.

808 

809 Per flussi di lavoro completamente personalizzati, l'[Agent SDK](/it/agent-sdk/overview) ti permette di creare i tuoi agenti alimentati dagli strumenti e dalle capacità di Claude Code, con controllo completo sull'orchestrazione, l'accesso agli strumenti e i permessi.

810 </Accordion>

811 

812 <Accordion title="Pipe, script e automatizza con il CLI" icon="terminal">

813 Claude Code è componibile e segue la filosofia Unix. Pipe i log in esso, eseguilo in CI o concatenalo con altri strumenti:

814 

815 ```bash theme={null}

816 # Analizza l'output dei log recenti

817 tail -200 app.log | claude -p "Slack me if you see any anomalies"

818 

819 # Automatizza le traduzioni in CI

820 claude -p "translate new strings into French and raise a PR for review"

821 

822 # Operazioni in blocco su file

823 git diff main --name-only | claude -p "review these changed files for security issues"

824 ```

825 

826 Vedi il [riferimento CLI](/it/cli-reference) per l'insieme completo di comandi e flag.

827 </Accordion>

828 

829 <Accordion title="Pianifica attività ricorrenti" icon="clock">

830 Esegui Claude su una pianificazione per automatizzare il lavoro che si ripete: revisioni PR mattutine, analisi dei fallimenti CI durante la notte, audit delle dipendenze settimanali o sincronizzazione dei documenti dopo l'unione dei PR.

831 

832 * [Routines](/it/routines) vengono eseguite su infrastruttura gestita da Anthropic, quindi continuano a funzionare anche quando il tuo computer è spento. Possono anche attivarsi su chiamate API o eventi GitHub. Creale dal web, dall'app Desktop o eseguendo `/schedule` nel CLI.

833 * [Attività pianificate desktop](/it/desktop-scheduled-tasks) vengono eseguite sulla tua macchina, con accesso diretto ai tuoi file e strumenti locali

834 * [`/loop`](/it/scheduled-tasks) ripete un prompt all'interno di una sessione CLI per il polling rapido

835 </Accordion>

836 

837 <Accordion title="Lavora da qualsiasi luogo" icon="globe">

838 Le sessioni non sono legate a una singola superficie. Sposta il lavoro tra gli ambienti mentre il tuo contesto cambia:

839 

840 * Allontanati dalla tua scrivania e continua a lavorare dal tuo telefono o da qualsiasi browser con [Remote Control](/it/remote-control)

841 * Invia un messaggio a [Dispatch](/it/desktop#sessions-from-dispatch) con un'attività dal tuo telefono e apri la sessione Desktop che crea

842 * Avvia un'attività a lunga esecuzione sul [web](/it/claude-code-on-the-web) o [app iOS](https://apps.apple.com/app/claude-by-anthropic/id6473753684), quindi trascinala nel tuo terminale con `claude --teleport`

843 * Trasferisci una sessione di terminale all'[app Desktop](/it/desktop) con `/desktop` per la revisione visiva dei diff

844 * Instrada le attività dalla chat del team: menziona `@Claude` in [Slack](/it/slack) con un rapporto di bug e ottieni una pull request in cambio

845 </Accordion>

846</AccordionGroup>

847 

848## Usa Claude Code ovunque

849 

850Ogni superficie si connette allo stesso motore Claude Code sottostante, quindi i tuoi file CLAUDE.md, le impostazioni e i MCP server funzionano su tutti loro.

851 

852Oltre agli ambienti [Terminal](/it/quickstart), [VS Code](/it/vs-code), [JetBrains](/it/jetbrains), [Desktop](/it/desktop) e [Web](/it/claude-code-on-the-web) sopra, Claude Code si integra con flussi di lavoro CI/CD, chat e browser:

853 

854| Voglio... | Opzione migliore |

855| ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- |

856| Continuare una sessione locale dal mio telefono o da un altro dispositivo | [Remote Control](/it/remote-control) |

857| Inviare eventi da Telegram, Discord, iMessage o i miei webhook in una sessione | [Channels](/it/channels) |

858| Avviare un'attività localmente, continuare su mobile | [Web](/it/claude-code-on-the-web) o [app Claude iOS](https://apps.apple.com/app/claude-by-anthropic/id6473753684) |

859| Eseguire Claude su una pianificazione ricorrente | [Routines](/it/routines) o [Attività pianificate desktop](/it/desktop-scheduled-tasks) |

860| Automatizzare le revisioni PR e il triage dei problemi | [GitHub Actions](/it/github-actions) o [GitLab CI/CD](/it/gitlab-ci-cd) |

861| Ottenere revisione automatica del codice su ogni PR | [GitHub Code Review](/it/code-review) |

862| Instradare i rapporti di bug da Slack alle pull request | [Slack](/it/slack) |

863| Eseguire il debug di applicazioni web live | [Chrome](/it/chrome) |

864| Creare agenti personalizzati per i tuoi flussi di lavoro | [Agent SDK](/it/agent-sdk/overview) |

865 

866## Passaggi successivi

867 

868Una volta installato Claude Code, queste guide ti aiutano ad approfondire.

869 

870* [Guida rapida](/it/quickstart): esamina il tuo primo compito reale, dall'esplorazione di una base di codice al commit di una correzione

871* [Archivia istruzioni e memorie](/it/memory): dai a Claude istruzioni persistenti con file CLAUDE.md e memoria automatica

872* [Flussi di lavoro comuni](/it/common-workflows) e [best practice](/it/best-practices): modelli per ottenere il massimo da Claude Code

873* [Impostazioni](/it/settings): personalizza Claude Code per il tuo flusso di lavoro

874* [Risoluzione dei problemi](/it/troubleshooting): soluzioni per i problemi comuni

875* [code.claude.com](https://code.claude.com/): demo, prezzi e dettagli del prodotto

permission-modes.md +290 −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# Scegli una modalità di autorizzazione

6 

7> Controlla se Claude chiede prima di modificare i file o eseguire comandi. Cicla le modalità con Shift+Tab nella CLI o utilizza il selettore di modalità in VS Code, Desktop e claude.ai.

8 

9Quando Claude vuole modificare un file, eseguire un comando shell o effettuare una richiesta di rete, si ferma e ti chiede di approvare l'azione. Le modalità di autorizzazione controllano con quale frequenza questa pausa si verifica. La modalità che scegli modella il flusso di una sessione: la modalità predefinita ti consente di revisionare ogni azione mentre arriva, mentre le modalità più permissive consentono a Claude di lavorare in lunghi tratti ininterrotti e riferire quando ha finito. Scegli una maggiore supervisione per il lavoro sensibile, o meno interruzioni quando ti fidi della direzione.

10 

11## Modalità disponibili

12 

13Ogni modalità fa un diverso compromesso tra comodità e supervisione. La tabella seguente mostra cosa Claude può fare senza un prompt di autorizzazione in ogni modalità.

14 

15| Modalità | Cosa viene eseguito senza chiedere | Migliore per |

16| :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------ | :------------------------------------------------- |

17| `default` | Solo letture | Iniziare, lavoro sensibile |

18| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Letture, modifiche ai file e comandi filesystem comuni (`mkdir`, `touch`, `mv`, `cp`, ecc.) | Iterare su codice che stai revisionando |

19| [`plan`](#analyze-before-you-edit-with-plan-mode) | Solo letture | Esplorare una codebase prima di modificarla |

20| [`auto`](#eliminate-prompts-with-auto-mode) | Tutto, con controlli di sicurezza in background | Compiti lunghi, ridurre l'affaticamento dei prompt |

21| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Solo strumenti pre-approvati | CI bloccato e script |

22| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Tutto | Solo container e VM isolati |

23 

24In ogni modalità tranne `bypassPermissions`, le scritture su [percorsi protetti](#protected-paths) non vengono mai auto-approvate, proteggendo lo stato del repository e la configurazione di Claude da corruzione accidentale.

25 

26Le modalità impostano la linea di base. Stratifica [regole di autorizzazione](/it/permissions#manage-permissions) sopra per pre-approvare o bloccare strumenti specifici in qualsiasi modalità tranne `bypassPermissions`, che salta completamente il livello di autorizzazione.

27 

28## Cambia modalità di autorizzazione

29 

30Puoi cambiare modalità durante una sessione, all'avvio o come impostazione predefinita persistente. La modalità viene impostata attraverso questi controlli, non chiedendo a Claude in chat. Seleziona la tua interfaccia di seguito per vedere come cambiarla.

31 

32<Tabs>

33 <Tab title="CLI">

34 **Durante una sessione**: premi `Shift+Tab` per cicla `default` → `acceptEdits` → `plan`. La modalità corrente appare nella barra di stato. Non ogni modalità è nel ciclo predefinito:

35 

36 * `auto`: appare quando il tuo account soddisfa i [requisiti della modalità auto](#eliminate-prompts-with-auto-mode); il ciclo verso auto mostra un prompt di consenso fino a quando non lo accetti, o seleziona **No, non chiedere di nuovo** per rimuovere auto dal ciclo

37 * `bypassPermissions`: appare dopo che hai avviato con `--permission-mode bypassPermissions`, `--dangerously-skip-permissions`, o `--allow-dangerously-skip-permissions`; la variante `--allow-` aggiunge la modalità al ciclo senza attivarla

38 * `dontAsk`: non appare mai nel ciclo; impostala con `--permission-mode dontAsk`

39 

40 Le modalità opzionali abilitate si inseriscono dopo `plan`, con `bypassPermissions` per primo e `auto` per ultimo. Se hai entrambi abilitati, ciclerai attraverso `bypassPermissions` sulla strada verso `auto`.

41 

42 **All'avvio**: passa la modalità come flag.

43 

44 ```bash theme={null}

45 claude --permission-mode plan

46 ```

47 

48 **Come impostazione predefinita**: imposta `defaultMode` in [settings](/it/settings#settings-files).

49 

50 ```json theme={null}

51 {

52 "permissions": {

53 "defaultMode": "acceptEdits"

54 }

55 }

56 ```

57 

58 Lo stesso flag `--permission-mode` funziona con `-p` per [esecuzioni non interattive](/it/headless).

59 </Tab>

60 

61 <Tab title="VS Code">

62 **Durante una sessione**: fai clic sull'indicatore di modalità in fondo alla casella del prompt.

63 

64 **Come impostazione predefinita**: imposta `claudeCode.initialPermissionMode` nelle impostazioni di VS Code, o utilizza il pannello delle impostazioni dell'estensione Claude Code.

65 

66 L'indicatore di modalità mostra queste etichette, mappate alla modalità a cui ognuna si applica:

67 

68 | Etichetta UI | Modalità |

69 | :----------------- | :------------------ |

70 | Ask before edits | `default` |

71 | Edit automatically | `acceptEdits` |

72 | Plan mode | `plan` |

73 | Auto mode | `auto` |

74 | Bypass permissions | `bypassPermissions` |

75 

76 Auto mode appare nell'indicatore di modalità dopo che hai abilitato **Allow dangerously skip permissions** nelle impostazioni dell'estensione, ma rimane non disponibile fino a quando il tuo account non soddisfa ogni requisito elencato nella [sezione della modalità auto](#eliminate-prompts-with-auto-mode). L'impostazione `claudeCode.initialPermissionMode` non accetta `auto`; per avviare in modalità auto per impostazione predefinita, imposta `defaultMode` nel tuo [`settings.json`](/it/settings#settings-files) di Claude Code.

77 

78 Bypass permissions richiede anche l'interruttore **Allow dangerously skip permissions** prima che appaia nell'indicatore di modalità.

79 

80 Vedi la [guida di VS Code](/it/vs-code) per i dettagli specifici dell'estensione.

81 </Tab>

82 

83 <Tab title="JetBrains">

84 Il plugin JetBrains esegue Claude Code nel terminale IDE, quindi il cambio di modalità funziona come nella CLI: premi `Shift+Tab` per cicla, o passa `--permission-mode` quando avvii.

85 </Tab>

86 

87 <Tab title="Desktop">

88 Utilizza il selettore di modalità accanto al pulsante di invio. Auto e Bypass permissions appaiono solo dopo che li hai abilitati nelle impostazioni di Desktop. Vedi la [guida di Desktop](/it/desktop#choose-a-permission-mode).

89 </Tab>

90 

91 <Tab title="Web e mobile">

92 Utilizza il menu a discesa della modalità accanto alla casella del prompt su [claude.ai/code](https://claude.ai/code) o nell'app mobile. I prompt di autorizzazione appaiono in claude.ai per l'approvazione. Quali modalità appaiono dipende da dove viene eseguita la sessione:

93 

94 * **Sessioni cloud** su [Claude Code sul web](/it/claude-code-on-the-web): Auto accept edits e Plan mode. Ask permissions, Auto e Bypass permissions non sono disponibili.

95 * **Sessioni [Remote Control](/it/remote-control)** sulla tua macchina locale: Ask permissions, Auto accept edits e Plan mode. Auto e Bypass permissions non sono disponibili.

96 

97 Per Remote Control, puoi anche impostare la modalità di avvio quando avvii l'host:

98 

99 ```bash theme={null}

100 claude remote-control --permission-mode acceptEdits

101 ```

102 </Tab>

103</Tabs>

104 

105## Auto-approva le modifiche ai file con la modalità acceptEdits

106 

107La modalità `acceptEdits` consente a Claude di creare e modificare file nella tua directory di lavoro senza chiedere conferma. La barra di stato mostra `⏵⏵ accept edits on` mentre questa modalità è attiva.

108 

109Oltre alle modifiche ai file, la modalità `acceptEdits` auto-approva i comandi Bash filesystem comuni: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp` e `sed`. Questi comandi vengono anche auto-approvati quando prefissati con variabili di ambiente sicure come `LANG=C` o `NO_COLOR=1`, o wrapper di processo come `timeout`, `nice` o `nohup`. Come le modifiche ai file, l'auto-approvazione si applica solo ai percorsi all'interno della tua directory di lavoro o `additionalDirectories`. I percorsi al di fuori di tale ambito, le scritture su [percorsi protetti](#protected-paths) e tutti gli altri comandi Bash richiedono ancora conferma.

110 

111Quando lo [strumento PowerShell](/it/tools-reference#powershell-tool) è abilitato, la modalità `acceptEdits` auto-approva anche `Set-Content`, `Add-Content`, `Clear-Content` e `Remove-Item` su percorsi nell'ambito, insieme ai loro alias comuni. Le stesse regole di ambito e percorsi protetti si applicano.

112 

113Utilizza `acceptEdits` quando vuoi revisionare le modifiche nel tuo editor o tramite `git diff` dopo il fatto piuttosto che approvare ogni modifica inline. Premi `Shift+Tab` una volta dalla modalità predefinita per entrarvi, o avvia direttamente con essa:

114 

115```bash theme={null}

116claude --permission-mode acceptEdits

117```

118 

119## Analizza prima di modificare con plan mode

120 

121Plan mode dice a Claude di ricercare e proporre modifiche senza farle. Claude legge file, esegue comandi shell per esplorare e scrive un piano, ma non modifica il tuo codice sorgente. I prompt di autorizzazione si applicano ancora come nella modalità predefinita.

122 

123Entra in plan mode premendo `Shift+Tab` o prefissando un singolo prompt con `/plan`. Puoi anche avviare in plan mode dalla CLI:

124 

125```bash theme={null}

126claude --permission-mode plan

127```

128 

129Premi `Shift+Tab` di nuovo per uscire da plan mode senza approvare un piano.

130 

131Quando il piano è pronto, Claude lo presenta e ti chiede come procedere. Da quel prompt puoi:

132 

133* Approvare e avviare in modalità auto

134* Approvare e accettare le modifiche

135* Approvare e revisionare manualmente ogni modifica

136* Continuare a pianificare con feedback

137* Perfezionare con [Ultraplan](/it/ultraplan) per la revisione basata su browser

138 

139Ogni opzione di approvazione offre anche di cancellare il contesto di pianificazione per primo.

140 

141## Elimina i prompt con auto mode

142 

143<Note>

144 Auto mode richiede Claude Code v2.1.83 o successivo.

145</Note>

146 

147Auto mode consente a Claude di eseguire senza prompt di autorizzazione. Un modello classificatore separato esamina le azioni prima che vengano eseguite, bloccando qualsiasi cosa che si escalation oltre la tua richiesta, mira a infrastruttura non riconosciuta o sembra guidata da contenuto ostile che Claude ha letto.

148 

149<Warning>

150 Auto mode è un'anteprima di ricerca. Riduce i prompt ma non garantisce la sicurezza. Usalo per compiti in cui ti fidi della direzione generale, non come sostituto della revisione su operazioni sensibili.

151</Warning>

152 

153Auto mode è disponibile solo quando il tuo account soddisfa tutti questi requisiti:

154 

155* **Piano**: Max, Team, Enterprise o API. Non disponibile su Pro.

156* **Admin**: su Team ed Enterprise, un amministratore deve abilitarlo nelle [impostazioni di amministrazione di Claude Code](https://claude.ai/admin-settings/claude-code) prima che gli utenti possano attivarlo. Gli amministratori possono anche bloccarlo impostando `permissions.disableAutoMode` su `"disable"` nelle [impostazioni gestite](/it/permissions#managed-settings).

157* **Modello**: Claude Sonnet 4.6, Opus 4.6 o Opus 4.7 su piani Team, Enterprise e API; solo Claude Opus 4.7 su piani Max. Altri modelli, inclusi Haiku e modelli claude-3, non sono supportati.

158* **Provider**: Solo API Anthropic. Non disponibile su Bedrock, Vertex o Foundry.

159 

160Se Claude Code segnala auto mode come non disponibile, uno di questi requisiti non è soddisfatto; questo non è un'interruzione transitoria. Un messaggio separato che nomina un modello e dice che auto mode "non può determinare la sicurezza" di un'azione è un'interruzione transitoria del classificatore; vedi il [riferimento degli errori](/it/errors#auto-mode-cannot-determine-the-safety-of-an-action).

161 

162### Cosa blocca il classificatore per impostazione predefinita

163 

164Il classificatore si fida della tua directory di lavoro e dei remoti configurati del tuo repo. Tutto il resto è trattato come esterno fino a quando non [configuri l'infrastruttura attendibile](/it/auto-mode-config).

165 

166**Bloccato per impostazione predefinita**:

167 

168* Scaricare ed eseguire codice, come `curl | bash`

169* Inviare dati sensibili a endpoint esterni

170* Deploy e migrazioni di produzione

171* Eliminazione di massa su cloud storage

172* Concessione di autorizzazioni IAM o repo

173* Modifica dell'infrastruttura condivisa

174* Distruzione irreversibile di file che esistevano prima della sessione

175* Force push o push diretto a `main`

176 

177**Consentito per impostazione predefinita**:

178 

179* Operazioni su file locali nella tua directory di lavoro

180* Installazione di dipendenze dichiarate nei tuoi file di blocco o manifesti

181* Lettura di `.env` e invio di credenziali al loro API corrispondente

182* Richieste HTTP di sola lettura

183* Push al ramo su cui hai iniziato o uno che Claude ha creato

184 

185Le richieste di accesso alla rete sandbox vengono instradate attraverso il classificatore piuttosto che essere consentite per impostazione predefinita. Esegui `claude auto-mode defaults` per vedere gli elenchi di regole completi. Se le azioni di routine vengono bloccate, un amministratore può aggiungere repo attendibili, bucket e servizi tramite l'impostazione `autoMode.environment`: vedi [Configure auto mode](/it/auto-mode-config).

186 

187### Confini che dichiari nella conversazione

188 

189Il classificatore tratta i confini che dichiari nella conversazione come un segnale di blocco. Se dici a Claude "non fare il push" o "aspetta che io riveda 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 sollevi in un messaggio successivo. Il giudizio di Claude che una condizione è stata soddisfatta non lo solleva.

190 

191I 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](/it/costs#reduce-token-usage) rimuove il messaggio che lo ha dichiarato. Per una garanzia assoluta, aggiungi una [regola di negazione](/it/permissions#permission-rule-syntax).

192 

193### Quando auto mode ritorna indietro

194 

195Ogni azione negata mostra una notifica e appare in `/permissions` sotto la scheda Recently denied, dove puoi premere `r` per ritentarla con un'approvazione manuale.

196 

197Se il classificatore blocca un'azione 3 volte di fila o 20 volte totali, auto mode si mette in pausa e Claude Code riprende a richiedere. Approvare l'azione richiesta riprende auto mode. Queste soglie non sono configurabili. Qualsiasi azione consentita ripristina il contatore consecutivo, mentre il contatore totale persiste per la sessione e si ripristina solo quando il suo limite attiva un fallback.

198 

199In [modalità non interattiva](/it/headless) con il flag `-p`, i blocchi ripetuti interrompono la sessione poiché non c'è un utente a cui richiedere.

200 

201I blocchi ripetuti di solito significano che il classificatore manca di contesto sulla tua infrastruttura. Utilizza `/feedback` per segnalare falsi positivi, o fai in modo che un amministratore [configuri l'infrastruttura attendibile](/it/auto-mode-config).

202 

203<AccordionGroup>

204 <Accordion title="Come il classificatore valuta le azioni">

205 Ogni azione passa attraverso un ordine di decisione fisso. Il primo step corrispondente vince:

206 

207 1. Le azioni che corrispondono alle tue [regole allow o deny](/it/permissions#manage-permissions) si risolvono immediatamente

208 2. Le azioni di sola lettura e le modifiche ai file nella tua directory di lavoro vengono auto-approvate, ad eccezione delle scritture su [percorsi protetti](#protected-paths)

209 3. Tutto il resto va al classificatore

210 4. Se il classificatore blocca, Claude riceve il motivo e tenta un'alternativa

211 

212 All'ingresso in auto mode, le regole allow ampie che concedono l'esecuzione arbitraria di codice vengono eliminate:

213 

214 * Blanket `Bash(*)`

215 * Interpreti con wildcard come `Bash(python*)`

216 * Comandi di esecuzione del gestore di pacchetti

217 * Regole `Agent` allow

218 

219 Le regole strette come `Bash(npm test)` vengono trasferite. Le regole eliminate vengono ripristinate quando esci da auto mode.

220 

221 Il classificatore vede messaggi utente, chiamate di strumenti e il tuo contenuto CLAUDE.md. I risultati degli strumenti vengono rimossi, quindi il contenuto ostile in un file o pagina web non può manipolarlo direttamente. 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, vedi l'[annuncio di auto mode](https://claude.com/blog/auto-mode) e il [deep dive tecnico](https://www.anthropic.com/engineering/claude-code-auto-mode).

222 </Accordion>

223 

224 <Accordion title="Come auto mode gestisce i subagent">

225 Il classificatore controlla il lavoro dei [subagent](/it/sub-agents) in tre punti:

226 

227 1. Prima che un subagent inizi, la descrizione del compito delegato viene valutata, quindi un compito che sembra pericoloso viene bloccato al momento dello spawn.

228 2. Mentre il subagent viene eseguito, ognuna delle sue azioni passa attraverso il classificatore con le stesse regole della sessione padre, e qualsiasi `permissionMode` nel frontmatter del subagent viene ignorato.

229 3. Quando il subagent finisce, il classificatore esamina la sua intera cronologia di azioni; se quel controllo di ritorno segnala una preoccupazione, un avviso di sicurezza viene anteposto ai risultati del subagent.

230 </Accordion>

231 

232 <Accordion title="Costo e latenza">

233 Il classificatore viene eseguito su un modello configurato dal server che è indipendente dalla tua selezione `/model`, quindi il cambio di modelli non cambia la disponibilità del classificatore. Le chiamate del classificatore contano verso il tuo utilizzo di token. Ogni controllo invia una parte 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 da comandi shell e operazioni di rete.

234 </Accordion>

235</AccordionGroup>

236 

237## Consenti solo strumenti pre-approvati con la modalità dontAsk

238 

239La modalità `dontAsk` auto-nega ogni chiamata di strumento che altrimenti richiederebbe. Solo le azioni che corrispondono alle tue regole `permissions.allow` e ai [comandi Bash di sola lettura](/it/permissions#read-only-commands) possono essere eseguite; le regole `ask` esplicite vengono negate piuttosto che richiedere. Questo rende la modalità completamente non interattiva per pipeline CI o ambienti ristretti in cui pre-definisci esattamente cosa Claude può fare.

240 

241Impostala all'avvio con il flag:

242 

243```bash theme={null}

244claude --permission-mode dontAsk

245```

246 

247## Salta tutti i controlli con la modalità bypassPermissions

248 

249La modalità `bypassPermissions` disabilita i prompt di autorizzazione e i controlli di sicurezza in modo che le chiamate di strumenti vengono eseguite immediatamente. A partire dalla v2.1.126 questo include le scritture su [percorsi protetti](#protected-paths), che le versioni precedenti ancora richiedevano. Le rimozioni che interessano la radice del filesystem o la directory home, come `rm -rf /` e `rm -rf ~`, ancora richiedono un prompt come protezione contro gli errori del modello. Utilizza questa modalità solo in ambienti isolati come container, VM o devcontainer senza accesso a Internet, dove Claude Code non può danneggiare il tuo sistema host.

250 

251Non puoi entrare in `bypassPermissions` da una sessione che è stata avviata senza uno dei flag di abilitazione; riavvia con uno per abilitarlo:

252 

253```bash theme={null}

254claude --permission-mode bypassPermissions

255```

256 

257Il flag `--dangerously-skip-permissions` è equivalente.

258 

259<Warning>

260 `bypassPermissions` non offre protezione contro l'iniezione di prompt o azioni indesiderate. Per i controlli di sicurezza in background senza prompt, utilizza [auto mode](#eliminate-prompts-with-auto-mode) invece. Gli amministratori possono bloccare questa modalità impostando `permissions.disableBypassPermissionsMode` su `"disable"` nelle [impostazioni gestite](/it/permissions#managed-settings).

261</Warning>

262 

263## Percorsi protetti

264 

265Le scritture su un piccolo insieme di percorsi non vengono mai auto-approvate, in ogni modalità eccetto `bypassPermissions`. Questo previene la corruzione accidentale dello stato del repository e della configurazione di Claude. In `default`, `acceptEdits` e `plan` queste scritture richiedono un prompt; in `auto` vengono instradate al classificatore; in `dontAsk` vengono negate; in `bypassPermissions` vengono consentite.

266 

267Directory protette:

268 

269* `.git`

270* `.vscode`

271* `.idea`

272* `.husky`

273* `.claude`, ad eccezione di `.claude/commands`, `.claude/agents`, `.claude/skills` e `.claude/worktrees` dove Claude crea routinariamente contenuto

274 

275File protetti:

276 

277* `.gitconfig`, `.gitmodules`

278* `.bashrc`, `.bash_profile`, `.zshrc`, `.zprofile`, `.profile`

279* `.ripgreprc`

280* `.mcp.json`, `.claude.json`

281 

282## Vedi anche

283 

284* [Permissions](/it/permissions): regole allow, ask e deny; politiche gestite

285* [Configure auto mode](/it/auto-mode-config): dì al classificatore quale infrastruttura la tua organizzazione si fida

286* [Hooks](/it/hooks): logica di autorizzazione personalizzata tramite hook `PreToolUse` e `PermissionRequest`

287* [Ultraplan](/it/ultraplan): esegui plan mode in una sessione Claude Code sul web con revisione basata su browser

288* [Security](/it/security): salvaguardie e best practice

289* [Sandboxing](/it/sandboxing): isolamento del filesystem e della rete per i comandi Bash

290* [Non-interactive mode](/it/headless): esegui Claude Code con il flag `-p`

permissions.md +473 −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# Configurare le autorizzazioni

6 

7> Controlla cosa Claude Code può accedere e fare con regole di autorizzazione granulari, modalità e criteri gestiti.

8 

9Claude Code supporta autorizzazioni granulari in modo che Lei possa specificare esattamente cosa l'agente è autorizzato a fare e cosa non può fare. Le impostazioni di autorizzazione possono essere archiviate nel controllo della versione e distribuite a tutti gli sviluppatori della Sua organizzazione, nonché personalizzate dai singoli sviluppatori.

10 

11## Sistema di autorizzazione

12 

13Claude Code utilizza un sistema di autorizzazione a livelli per bilanciare potenza e sicurezza:

14 

15| Tipo di strumento | Esempio | Approvazione richiesta | Comportamento "Sì, non chiedere più" |

16| :---------------- | :-------------------- | :--------------------- | :-------------------------------------------------- |

17| Sola lettura | Letture di file, Grep | No | N/A |

18| Comandi Bash | Esecuzione shell | Sì | Permanentemente per directory di progetto e comando |

19| Modifica di file | Edit/Write di file | Sì | Fino alla fine della sessione |

20 

21## Gestire le autorizzazioni

22 

23Potete visualizzare e gestire le autorizzazioni degli strumenti di Claude Code con `/permissions`. Questa interfaccia utente elenca tutte le regole di autorizzazione e il file settings.json da cui provengono.

24 

25* Le regole **Allow** consentono a Claude Code di utilizzare lo strumento specificato senza approvazione manuale.

26* Le regole **Ask** richiedono una conferma ogni volta che Claude Code tenta di utilizzare lo strumento specificato.

27* Le regole **Deny** impediscono a Claude Code di utilizzare lo strumento specificato.

28 

29Le regole vengono valutate in ordine: **deny -> ask -> allow**. La prima regola corrispondente vince, quindi le regole deny hanno sempre la precedenza.

30 

31## Modalità di autorizzazione

32 

33Claude Code supporta diverse modalità di autorizzazione che controllano come gli strumenti vengono approvati. Vedi [Permission modes](/it/permission-modes) per quando utilizzare ciascuna. Impostate `defaultMode` nei vostri [file di impostazioni](/it/settings#settings-files):

34 

35| Modalità | Descrizione |

36| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

37| `default` | Comportamento standard: richiede l'autorizzazione al primo utilizzo di ogni strumento |

38| `acceptEdits` | Accetta automaticamente le modifiche ai file e i comandi comuni del filesystem (`mkdir`, `touch`, `mv`, `cp`, ecc.) per i percorsi nella directory di lavoro o `additionalDirectories` |

39| `plan` | Plan Mode: Claude può analizzare ma non modificare file o eseguire comandi |

40| `auto` | Auto-approva le chiamate di strumento con controlli di sicurezza in background che verificano che le azioni si allineino con la Sua richiesta. Attualmente un'anteprima di ricerca |

41| `dontAsk` | Nega automaticamente gli strumenti a meno che non siano pre-approvati tramite `/permissions` o regole `permissions.allow` |

42| `bypassPermissions` | Salta i prompt di autorizzazione. Le rimozioni che hanno come destinazione la radice del filesystem o la directory home, come `rm -rf /` e `rm -rf ~`, richiedono comunque un prompt come interruttore di protezione contro gli errori del modello |

43 

44<Warning>

45 La modalità `bypassPermissions` salta i prompt di autorizzazione, incluse le scritture in `.git`, `.claude`, `.vscode`, `.idea` e `.husky`. Le rimozioni che hanno come destinazione la radice del filesystem o la directory home, come `rm -rf /` e `rm -rf ~`, richiedono comunque un prompt come interruttore di protezione contro gli errori del modello. Utilizzate questa modalità solo in ambienti isolati come contenitori o macchine virtuali dove Claude Code non può causare danni. Gli amministratori possono impedire questa modalità impostando `permissions.disableBypassPermissionsMode` su `"disable"` nelle [impostazioni gestite](#managed-settings).

46</Warning>

47 

48Per prevenire che la modalità `bypassPermissions` o `auto` venga utilizzata, impostate `permissions.disableBypassPermissionsMode` o `permissions.disableAutoMode` su `"disable"` in qualsiasi [file di impostazioni](/it/settings#settings-files). Questi sono più utili nelle [impostazioni gestite](#managed-settings) dove non possono essere ignorati.

49 

50## Sintassi delle regole di autorizzazione

51 

52Le regole di autorizzazione seguono il formato `Tool` o `Tool(specifier)`.

53 

54### Corrispondere a tutti gli utilizzi di uno strumento

55 

56Per corrispondere a tutti gli utilizzi di uno strumento, utilizzate solo il nome dello strumento senza parentesi:

57 

58| Regola | Effetto |

59| :--------- | :-------------------------------------------- |

60| `Bash` | Corrisponde a tutti i comandi Bash |

61| `WebFetch` | Corrisponde a tutte le richieste di web fetch |

62| `Read` | Corrisponde a tutte le letture di file |

63 

64`Bash(*)` è equivalente a `Bash` e corrisponde a tutti i comandi Bash.

65 

66### Utilizzare gli specificatori per il controllo granulare

67 

68Aggiungete uno specificatore tra parentesi per corrispondere a utilizzi specifici dello strumento:

69 

70| Regola | Effetto |

71| :----------------------------- | :---------------------------------------------------------------- |

72| `Bash(npm run build)` | Corrisponde al comando esatto `npm run build` |

73| `Read(./.env)` | Corrisponde alla lettura del file `.env` nella directory corrente |

74| `WebFetch(domain:example.com)` | Corrisponde alle richieste di fetch a example.com |

75 

76### Modelli con caratteri jolly

77 

78Le regole Bash supportano modelli glob con `*`. I caratteri jolly possono apparire in qualsiasi posizione nel comando. Questa configurazione consente comandi npm e git commit mentre blocca git push:

79 

80```json theme={null}

81{

82 "permissions": {

83 "allow": [

84 "Bash(npm run *)",

85 "Bash(git commit *)",

86 "Bash(git * main)",

87 "Bash(* --version)",

88 "Bash(* --help *)"

89 ],

90 "deny": [

91 "Bash(git push *)"

92 ]

93 }

94}

95```

96 

97Lo spazio prima di `*` è importante: `Bash(ls *)` corrisponde a `ls -la` ma non a `lsof`, mentre `Bash(ls*)` corrisponde a entrambi. Il suffisso `:*` è un modo equivalente per scrivere un carattere jolly finale, quindi `Bash(ls:*)` corrisponde agli stessi comandi di `Bash(ls *)`.

98 

99La finestra di dialogo di autorizzazione scrive la forma separata da spazi quando selezionate "Sì, non chiedere più" per un prefisso di comando. La forma `:*` è riconosciuta solo alla fine di un modello. In un modello come `Bash(git:* push)`, il due punti viene trattato come un carattere letterale e non corrisponderà ai comandi git.

100 

101## Regole di autorizzazione specifiche dello strumento

102 

103### Bash

104 

105Le regole di autorizzazione Bash supportano la corrispondenza con caratteri jolly con `*`. I caratteri jolly possono apparire in qualsiasi posizione nel comando, incluso all'inizio, nel mezzo o alla fine:

106 

107* `Bash(npm run build)` corrisponde al comando Bash esatto `npm run build`

108* `Bash(npm run test *)` corrisponde ai comandi Bash che iniziano con `npm run test`

109* `Bash(npm *)` corrisponde a qualsiasi comando che inizia con `npm `

110* `Bash(* install)` corrisponde a qualsiasi comando che termina con ` install`

111* `Bash(git * main)` corrisponde a comandi come `git checkout main` e `git log --oneline main`

112 

113Un singolo `*` corrisponde a qualsiasi sequenza di caratteri inclusi gli spazi, quindi un singolo carattere jolly può estendersi su più argomenti. `Bash(git *)` corrisponde a `git log --oneline --all` e `Bash(git * main)` corrisponde sia a `git push origin main` che a `git merge main`.

114 

115Quando `*` appare alla fine con uno spazio prima (come `Bash(ls *)`), applica un confine di parola, richiedendo che il prefisso sia seguito da uno spazio o dalla fine della stringa. Ad esempio, `Bash(ls *)` corrisponde a `ls -la` ma non a `lsof`. Al contrario, `Bash(ls*)` senza spazio corrisponde sia a `ls -la` che a `lsof` perché non c'è un vincolo di confine di parola.

116 

117#### Comandi composti

118 

119<Tip>

120 Claude Code è consapevole degli operatori shell, quindi una regola come `Bash(safe-cmd *)` non gli darà il permesso di eseguire il comando `safe-cmd && other-cmd`. I separatori di comando riconosciuti sono `&&`, `||`, `;`, `|`, `|&`, `&` e newline. Una regola deve corrispondere a ogni sottocomando indipendentemente.

121</Tip>

122 

123Quando approvate un comando composto con "Sì, non chiedere più", Claude Code salva una regola separata per ogni sottocomando che richiede approvazione, piuttosto che una singola regola per la stringa completa. Ad esempio, approvando `git status && npm test` salva una regola per `npm test`, quindi le future invocazioni di `npm test` vengono riconosciute indipendentemente da cosa precede `&&`. I sottocomandi come `cd` in una sottodirectory generano la loro propria regola Read per quel percorso. Fino a 5 regole possono essere salvate per un singolo comando composto.

124 

125#### Wrapper di processo

126 

127Prima di corrispondere alle regole Bash, Claude Code rimuove un insieme fisso di wrapper di processo in modo che una regola come `Bash(npm test *)` corrisponda anche a `timeout 30 npm test`. I wrapper riconosciuti sono `timeout`, `time`, `nice`, `nohup` e `stdbuf`.

128 

129Anche `xargs` nudo viene rimosso, quindi `Bash(grep *)` corrisponde a `xargs grep pattern`. La rimozione si applica solo quando `xargs` non ha flag: un'invocazione come `xargs -n1 grep pattern` viene abbinata come comando `xargs`, quindi le regole scritte per il comando interno non la coprono.

130 

131Questo elenco di wrapper è integrato e non è configurabile. I runner dell'ambiente di sviluppo come `direnv exec`, `devbox run`, `mise exec`, `npx` e `docker exec` non sono nell'elenco. Poiché questi strumenti eseguono i loro argomenti come comando, una regola come `Bash(devbox run *)` corrisponde a qualsiasi cosa venga dopo `run`, incluso `devbox run rm -rf .`. Per approvare il lavoro all'interno di un runner dell'ambiente, scrivete una regola specifica che includa sia il runner che il comando interno, come `Bash(devbox run npm test)`. Aggiungete una regola per ogni comando interno che desiderate consentire.

132 

133I wrapper exec come `watch`, `setsid`, `ionice` e `flock` richiedono sempre un prompt e non possono essere auto-approvati da una regola di prefisso come `Bash(watch *)`. Lo stesso vale per `find` con `-exec` o `-delete`: una regola `Bash(find *)` non copre queste forme. Per approvare un'invocazione specifica, scrivete una regola di corrispondenza esatta per la stringa di comando completa.

134 

135#### Comandi di sola lettura

136 

137Claude Code riconosce un insieme integrato di comandi Bash come di sola lettura e li esegue senza un prompt di autorizzazione in ogni modalità. Questi includono `ls`, `cat`, `head`, `tail`, `grep`, `find`, `wc`, `diff`, `stat`, `du`, `cd` e forme di sola lettura di `git`. L'insieme non è configurabile; per richiedere un prompt per uno di questi comandi, aggiungete una regola `ask` o `deny` per esso.

138 

139I modelli glob non quotati sono consentiti per i comandi il cui ogni flag è di sola lettura, quindi `ls *.ts` e `wc -l src/*.py` vengono eseguiti senza un prompt. I comandi con flag in grado di scrivere o eseguire, come `find`, `sort`, `sed` e `git`, richiedono comunque un prompt quando è presente un glob non quotato perché il glob potrebbe espandersi a un flag come `-delete`.

140 

141Un `cd` in un percorso all'interno della vostra directory di lavoro o di una [directory aggiuntiva](#working-directories) è anche di sola lettura. Un comando composto come `cd packages/api && ls` viene eseguito senza un prompt quando ogni parte si qualifica da sola. La combinazione di `cd` con `git` in un comando composto richiede sempre un prompt, indipendentemente dalla directory di destinazione.

142 

143<Warning>

144 I modelli di autorizzazione Bash che tentano di vincolare gli argomenti del comando sono fragili. Ad esempio, `Bash(curl http://github.com/ *)` intende limitare curl agli URL di GitHub, ma non corrisponderà a variazioni come:

145 

146 * Opzioni prima dell'URL: `curl -X GET http://github.com/...`

147 * Protocollo diverso: `curl https://github.com/...`

148 * Reindirizzamenti: `curl -L http://bit.ly/xyz` (reindirizza a github)

149 * Variabili: `URL=http://github.com && curl $URL`

150 * Spazi extra: `curl http://github.com`

151 

152 Per un filtraggio URL più affidabile, considerate:

153 

154 * **Limitare gli strumenti di rete Bash**: utilizzate regole deny per bloccare `curl`, `wget` e comandi simili, quindi utilizzate lo strumento WebFetch con l'autorizzazione `WebFetch(domain:github.com)` per i domini consentiti

155 * **Utilizzare hook PreToolUse**: implementate un hook che convalida gli URL nei comandi Bash e blocca i domini non consentiti

156 * Istruire Claude Code sui vostri modelli curl consentiti tramite CLAUDE.md

157 

158 Nota che l'utilizzo di WebFetch da solo non impedisce l'accesso alla rete. Se Bash è consentito, Claude può comunque utilizzare `curl`, `wget` o altri strumenti per raggiungere qualsiasi URL.

159</Warning>

160 

161### PowerShell

162 

163Le regole di autorizzazione PowerShell utilizzano la stessa forma delle regole Bash. I caratteri jolly con `*` corrispondono in qualsiasi posizione, il suffisso `:*` è equivalente a un ` *` finale, e un PowerShell nudo o `PowerShell(*)` corrisponde a ogni comando. Questa configurazione consente comandi `Get-ChildItem` e `git commit` mentre blocca `Remove-Item`:

164 

165```json theme={null}

166{

167 "permissions": {

168 "allow": [

169 "PowerShell(Get-ChildItem *)",

170 "PowerShell(git commit *)"

171 ],

172 "deny": [

173 "PowerShell(Remove-Item *)"

174 ]

175 }

176}

177```

178 

179Gli alias comuni vengono canonicalizati prima della corrispondenza. Una regola scritta per il nome del cmdlet corrisponde anche ai suoi alias, quindi `PowerShell(Get-ChildItem *)` corrisponde a `gci`, `ls` e `dir` nonché. La corrispondenza non è sensibile alle maiuscole.

180 

181Claude Code analizza l'AST di PowerShell e controlla ogni comando in un comando composto indipendentemente. Gli operatori pipeline `|`, i separatori di istruzione `;` e su PowerShell 7+ gli operatori di catena `&&` e `||` dividono un comando composto in sottocomandi. Una regola deve corrispondere a ogni sottocomando affinché il comando composto sia consentito.

182 

183### Read e Edit

184 

185Le regole `Edit` si applicano a tutti gli strumenti integrati che modificano i file. Claude fa un tentativo migliore per applicare le regole `Read` a tutti gli strumenti integrati che leggono file come Grep e Glob.

186 

187<Warning>

188 Le regole deny di Read e Edit si applicano agli strumenti di file integrati di Claude, non ai sottoprocessi Bash. Una regola deny `Read(./.env)` blocca lo strumento Read ma non impedisce `cat .env` in Bash. Per l'applicazione a livello del sistema operativo che blocca tutti i processi dall'accesso a un percorso, [abilitate la sandbox](/it/sandboxing).

189</Warning>

190 

191Le regole Read e Edit seguono entrambe la specifica [gitignore](https://git-scm.com/docs/gitignore) con quattro tipi di modello distinti:

192 

193| Modello | Significato | Esempio | Corrisponde |

194| ----------------- | ------------------------------------------------- | -------------------------------- | ------------------------------ |

195| `//path` | Percorso **assoluto** dalla radice del filesystem | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

196| `~/path` | Percorso dalla directory **home** | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

197| `/path` | Percorso **relativo alla radice del progetto** | `Edit(/src/**/*.ts)` | `<project root>/src/**/*.ts` |

198| `path` o `./path` | Percorso **relativo alla directory corrente** | `Read(*.env)` | `<cwd>/*.env` |

199 

200<Warning>

201 Un modello come `/Users/alice/file` NON è un percorso assoluto. È relativo alla radice del progetto. Utilizzate `//Users/alice/file` per i percorsi assoluti.

202</Warning>

203 

204Su Windows, i percorsi vengono normalizzati in forma POSIX prima della corrispondenza. `C:\Users\alice` diventa `/c/Users/alice`, quindi utilizzate `//c/**/.env` per corrispondere ai file `.env` in qualsiasi punto su quel drive. Per corrispondere su tutti i drive, utilizzate `//**/.env`.

205 

206Esempi:

207 

208* `Edit(/docs/**)`: modifica in `<project>/docs/` (NON `/docs/` e NON `<project>/.claude/docs/`)

209* `Read(~/.zshrc)`: legge il `.zshrc` della vostra directory home

210* `Edit(//tmp/scratch.txt)`: modifica il percorso assoluto `/tmp/scratch.txt`

211* `Read(src/**)`: legge da `<current-directory>/src/`

212 

213<Note>

214 Nei modelli gitignore, `*` corrisponde ai file in una singola directory mentre `**` corrisponde ricorsivamente tra le directory. Per consentire l'accesso a tutti i file, utilizzate solo il nome dello strumento senza parentesi: `Read`, `Edit` o `Write`.

215</Note>

216 

217Quando Claude accede a un symlink, le regole di autorizzazione controllano due percorsi: il symlink stesso e il file a cui si risolve. Le regole allow e deny trattano quella coppia diversamente: le regole allow ricadono nel richiedere un prompt, mentre le regole deny bloccano completamente.

218 

219* **Regole allow**: si applicano solo quando sia il percorso del symlink che il suo target corrispondono. Un symlink all'interno di una directory consentita che punta al di fuori di essa richiede comunque un prompt.

220* **Regole deny**: si applicano quando il percorso del symlink o il suo target corrisponde. Un symlink che punta a un file negato è esso stesso negato.

221 

222Ad esempio, con `Read(./project/**)` consentito e `Read(~/.ssh/**)` negato, un symlink in `./project/key` che punta a `~/.ssh/id_rsa` viene bloccato: il target non supera la regola allow e corrisponde alla regola deny.

223 

224### WebFetch

225 

226* `WebFetch(domain:example.com)` corrisponde alle richieste di fetch a example.com

227 

228### MCP

229 

230* `mcp__puppeteer` corrisponde a qualsiasi strumento fornito dal server `puppeteer` (nome configurato in Claude Code)

231* `mcp__puppeteer__*` sintassi con caratteri jolly che corrisponde anche a tutti gli strumenti dal server `puppeteer`

232* `mcp__puppeteer__puppeteer_navigate` corrisponde allo strumento `puppeteer_navigate` fornito dal server `puppeteer`

233 

234### Agent (subagents)

235 

236Utilizzate le regole `Agent(AgentName)` per controllare quali [subagents](/it/sub-agents) Claude può utilizzare:

237 

238* `Agent(Explore)` corrisponde al subagent Explore

239* `Agent(Plan)` corrisponde al subagent Plan

240* `Agent(my-custom-agent)` corrisponde a un subagent personalizzato denominato `my-custom-agent`

241 

242Aggiungete queste regole all'array `deny` nelle vostre impostazioni o utilizzate il flag CLI `--disallowedTools` per disabilitare agenti specifici. Per disabilitare l'agente Explore:

243 

244```json theme={null}

245{

246 "permissions": {

247 "deny": ["Agent(Explore)"]

248 }

249}

250```

251 

252## Estendere le autorizzazioni con hook

253 

254Gli [hook di Claude Code](/it/hooks-guide) forniscono un modo per registrare comandi shell personalizzati per eseguire la valutazione delle autorizzazioni in fase di esecuzione. Quando Claude Code effettua una chiamata di strumento, gli hook PreToolUse vengono eseguiti prima del prompt di autorizzazione. L'output dell'hook può negare la chiamata dello strumento, forzare un prompt o saltare il prompt per consentire alla chiamata di procedere.

255 

256Le decisioni dell'hook non bypassano le regole di autorizzazione. Le regole deny e ask vengono valutate indipendentemente da ciò che un hook PreToolUse restituisce, quindi 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.

257 

258Un hook di blocco ha anche la precedenza sulle regole allow. Un hook che esce con codice 2 interrompe la chiamata dello strumento prima che le regole di autorizzazione vengono valutate, quindi il blocco si applica anche quando una regola allow consentirebbe altrimenti la chiamata. Per eseguire tutti i comandi Bash senza prompt tranne alcuni che desiderate bloccare, aggiungete `"Bash"` al vostro elenco allow e registrate un hook PreToolUse che rifiuta quei comandi specifici. Vedi [Bloccare le modifiche ai file protetti](/it/hooks-guide#block-edits-to-protected-files) per uno script di hook che potete adattare.

259 

260## Directory di lavoro

261 

262Per impostazione predefinita, Claude ha accesso ai file nella directory in cui è stato avviato. Potete estendere questo accesso:

263 

264* **Durante l'avvio**: utilizzate l'argomento CLI `--add-dir <path>`

265* **Durante la sessione**: utilizzate il comando `/add-dir`

266* **Configurazione persistente**: aggiungete a `additionalDirectories` nei [file di impostazioni](/it/settings#settings-files)

267 

268I file nelle directory aggiuntive seguono le stesse regole di autorizzazione della directory di lavoro originale: diventano leggibili senza prompt e le autorizzazioni di modifica dei file seguono la modalità di autorizzazione corrente.

269 

270### Le directory aggiuntive concedono l'accesso ai file, non la configurazione

271 

272L'aggiunta di una directory estende dove Claude può leggere e modificare i file. Non rende quella directory una radice di configurazione completa: la maggior parte della configurazione `.claude/` non viene scoperta dalle directory aggiuntive, anche se alcuni tipi vengono caricati come eccezioni.

273 

274I seguenti tipi di configurazione vengono caricati dalle directory `--add-dir`:

275 

276| Configurazione | Caricato da `--add-dir` |

277| :----------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

278| [Skills](/it/skills) in `.claude/skills/` | Sì, con ricaricamento live |

279| Impostazioni plugin in `.claude/settings.json` | Solo `enabledPlugins` e `extraKnownMarketplaces` |

280| File [CLAUDE.md](/it/memory), `.claude/rules/` e `CLAUDE.local.md` | Solo quando `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1` è impostato. `CLAUDE.local.md` richiede inoltre l'impostazione `local` source, che è abilitata per impostazione predefinita |

281 

282Tutto il resto, inclusi subagents, commands, output styles, hooks e altre impostazioni, viene scoperto solo dalla directory di lavoro corrente e dai suoi genitori, dalla vostra directory utente in `~/.claude/` e dalle impostazioni gestite. Per condividere quella configurazione tra progetti, utilizzate uno di questi approcci:

283 

284* **Configurazione a livello utente**: posizionate i file in `~/.claude/agents/`, `~/.claude/output-styles/` o `~/.claude/settings.json` per renderli disponibili in ogni progetto

285* **Plugin**: pacchetto e distribuite la configurazione come [plugin](/it/plugins) che i team possono installare

286* **Avviate dalla directory di configurazione**: eseguite Claude Code dalla directory contenente la configurazione `.claude/` che desiderate

287 

288## Come le autorizzazioni interagiscono con il sandboxing

289 

290Le autorizzazioni e il [sandboxing](/it/sandboxing) sono livelli di sicurezza complementari:

291 

292* **Autorizzazioni** controllano quali strumenti Claude Code può utilizzare e quali file o domini può accedere. Si applicano a tutti gli strumenti (Bash, Read, Edit, WebFetch, MCP e altri).

293* **Sandboxing** fornisce l'applicazione a livello del sistema operativo che limita l'accesso al filesystem e alla rete dello strumento Bash. Si applica solo ai comandi Bash e ai loro processi figlio.

294 

295Utilizzate entrambi per la difesa in profondità:

296 

297* Le regole deny di autorizzazione impediscono a Claude di tentare anche di accedere alle risorse limitate

298* Le restrizioni sandbox impediscono ai comandi Bash di raggiungere risorse al di fuori dei confini definiti, anche se un'iniezione di prompt bypassa il processo decisionale di Claude

299* Le restrizioni del filesystem nella sandbox utilizzano le regole deny di Read e Edit, non una configurazione sandbox separata

300* Le restrizioni di rete combinano le regole di autorizzazione WebFetch con gli elenchi `allowedDomains` e `deniedDomains` della sandbox

301 

302Quando il sandboxing è abilitato con `autoAllowBashIfSandboxed: true`, che è l'impostazione predefinita, i comandi Bash in sandbox vengono eseguiti senza richiedere un prompt anche se le vostre autorizzazioni includono `ask: Bash(*)`. Il confine della sandbox sostituisce il prompt per comando. Le regole deny esplicite si applicano ancora, e i comandi `rm` o `rmdir` che hanno come destinazione `/`, la vostra directory home o altri percorsi critici del sistema attivano comunque un prompt. Consultate [modalità sandbox](/it/sandboxing#sandbox-modes) per modificare questo comportamento.

303 

304## Impostazioni gestite

305 

306Per le organizzazioni che necessitano di un controllo centralizzato sulla configurazione di Claude Code, gli amministratori possono distribuire impostazioni gestite che non possono essere ignorate dalle impostazioni utente o di progetto. Queste impostazioni di criteri seguono lo stesso formato dei file di impostazioni regolari e possono essere fornite tramite criteri MDM/a livello del sistema operativo, file di impostazioni gestite o [impostazioni gestite dal server](/it/server-managed-settings). Vedi [file di impostazioni](/it/settings#settings-files) per i meccanismi di consegna e i percorsi dei file.

307 

308### Impostazioni solo gestite

309 

310Le seguenti impostazioni sono efficaci solo nelle impostazioni gestite. Posizionarle nei file di impostazioni utente o di progetto non ha alcun effetto.

311 

312| Impostazione | Descrizione |

313| :--------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

314| `allowedChannelPlugins` | Elenco di autorizzazione dei plugin di canale che possono inviare messaggi. Sostituisce l'elenco di autorizzazione Anthropic predefinito quando impostato. Richiede `channelsEnabled: true`. Vedi [Limitare quali plugin di canale possono essere eseguiti](/it/channels#restrict-which-channel-plugins-can-run) |

315| `allowManagedHooksOnly` | Quando `true`, solo gli hook gestiti, gli hook SDK e gli hook dai plugin force-enabled nelle impostazioni gestite `enabledPlugins` vengono caricati. Gli hook utente, progetto e tutti gli altri plugin vengono bloccati |

316| `allowManagedMcpServersOnly` | Quando `true`, solo `allowedMcpServers` dalle impostazioni gestite sono rispettati. `deniedMcpServers` si unisce comunque da tutte le fonti. Vedi [Configurazione MCP gestita](/it/mcp#managed-mcp-configuration) |

317| `allowManagedPermissionRulesOnly` | Quando `true`, impedisce alle impostazioni utente e di progetto di definire regole di autorizzazione `allow`, `ask` o `deny`. Si applicano solo le regole nelle impostazioni gestite |

318| `blockedMarketplaces` | Elenco di blocco delle fonti del marketplace. Le fonti bloccate vengono controllate prima del download, quindi non toccano mai il filesystem. Vedi [restrizioni marketplace gestite](/it/plugin-marketplaces#managed-marketplace-restrictions) |

319| `channelsEnabled` | Consenti [channels](/it/channels) per gli utenti Team e Enterprise. Non impostato o `false` blocca la consegna dei messaggi di canale indipendentemente da ciò che gli utenti passano a `--channels` |

320| `forceRemoteSettingsRefresh` | Quando `true`, blocca l'avvio della CLI fino a quando le impostazioni gestite remote non vengono recuperate di recente ed esce se il recupero non riesce. Vedi [applicazione fail-closed](/it/server-managed-settings#enforce-fail-closed-startup) |

321| `pluginTrustMessage` | Messaggio personalizzato aggiunto all'avviso di fiducia del plugin mostrato prima dell'installazione |

322| `sandbox.filesystem.allowManagedReadPathsOnly` | Quando `true`, solo i percorsi `filesystem.allowRead` dalle impostazioni gestite sono rispettati. `denyRead` si unisce comunque da tutte le fonti |

323| `sandbox.network.allowManagedDomainsOnly` | Quando `true`, solo `allowedDomains` e le regole allow `WebFetch(domain:...)` dalle impostazioni gestite sono rispettate. I domini non consentiti vengono bloccati automaticamente senza richiedere all'utente. I domini negati si uniscono comunque da tutte le fonti |

324| `strictKnownMarketplaces` | Controlla quali marketplace di plugin gli utenti possono aggiungere e installare plugin da. Vedi [restrizioni marketplace gestite](/it/plugin-marketplaces#managed-marketplace-restrictions) |

325| `wslInheritsWindowsSettings` | Quando `true` nella chiave del registro HKLM di Windows o in `C:\Program Files\ClaudeCode\managed-settings.json`, WSL legge le impostazioni gestite dalla catena di criteri di Windows oltre a `/etc/claude-code`. Vedi [File di impostazioni](/it/settings#settings-files) |

326 

327`disableBypassPermissionsMode` è tipicamente posizionato nelle impostazioni gestite per applicare la politica organizzativa, ma funziona da qualsiasi ambito. Un utente può impostarlo nelle proprie impostazioni per bloccarsi dalla modalità bypass.

328 

329<Note>

330 L'accesso a [Remote Control](/it/remote-control) e [sessioni web](/it/claude-code-on-the-web) non è controllato da una chiave di impostazioni gestite. Nei piani Team e Enterprise, un amministratore abilita o disabilita queste funzioni nelle [impostazioni di amministrazione di Claude Code](https://claude.ai/admin-settings/claude-code).

331</Note>

332 

333## Esaminare i rifiuti della modalità auto

334 

335Quando la [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode) nega una chiamata di strumento, appare una notifica e l'azione negata viene registrata in `/permissions` nella scheda Recently denied. Premete `r` su un'azione negata per contrassegnarla per il retry: quando uscite dalla finestra di dialogo, Claude Code invia un messaggio dicendo al modello che può riprovare quella chiamata di strumento e riprende la conversazione.

336 

337Per reagire ai rifiuti a livello di programmazione, utilizzate l'[hook `PermissionDenied`](/it/hooks#permissiondenied).

338 

339## Configurare il classificatore della modalità auto

340 

341La [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode) utilizza un modello di classificazione per decidere se ogni azione è sicura da eseguire senza richiedere. Per impostazione predefinita, si fida solo della directory di lavoro e, se presente, dei remoti del repository corrente. Azioni come il push verso l'organizzazione di controllo del codice sorgente della vostra azienda o la scrittura in un bucket cloud del team verranno bloccate come potenziale esfiltrazione di dati.

342 

343Per regolare ciò che il classificatore consente o blocca, aggiungete istruzioni al vostro file [CLAUDE.md](/it/memory). Il classificatore legge CLAUDE.md dalle directory affidabili insieme alla conversazione, quindi un'istruzione come "non forzare mai il push" guida sia Claude che il classificatore contemporaneamente. Iniziate qui per le convenzioni di progetto e le regole comportamentali.

344 

345Per le regole che si applicano tra i progetti, come l'infrastruttura affidabile o le regole di negazione a livello organizzativo, utilizzate il blocco di impostazioni `autoMode`. Il classificatore legge `autoMode` dalle impostazioni utente, `.claude/settings.local.json` e impostazioni gestite. Non legge dalle impostazioni di progetto condivise in `.claude/settings.json`, perché un repository archiviato potrebbe altrimenti iniettare le sue proprie regole allow.

346 

347| Ambito | File | Utilizzare per |

348| :---------------------------- | :---------------------------- | :----------------------------------------------------------- |

349| Un sviluppatore | `~/.claude/settings.json` | Infrastruttura affidabile personale |

350| Un progetto, uno sviluppatore | `.claude/settings.local.json` | Bucket o servizi affidabili per progetto, gitignored |

351| Organizzazione | Impostazioni gestite | Infrastruttura affidabile applicata a tutti gli sviluppatori |

352 

353Le voci da ogni ambito vengono combinate. Uno sviluppatore può estendere `environment`, `allow` e `soft_deny` con voci personali ma non può rimuovere le voci fornite dalle impostazioni gestite. Poiché le regole allow agiscono come eccezioni alle regole di blocco all'interno del classificatore, una voce `allow` aggiunta da uno sviluppatore può ignorare una voce `soft_deny` dell'organizzazione: la combinazione è additiva, non un confine di criteri rigido. Se avete bisogno di una regola che gli sviluppatori non possono aggirare, utilizzate `permissions.deny` nelle impostazioni gestite, che blocca le azioni prima che il classificatore venga consultato.

354 

355### Definire l'infrastruttura affidabile

356 

357Per la maggior parte delle organizzazioni, `autoMode.environment` è l'unico campo che dovete impostare. Dice al classificatore quali repository, bucket e domini sono affidabili, senza toccare le regole di blocco e allow integrate. Il classificatore utilizza `environment` per decidere cosa significa "esterno": qualsiasi destinazione non elencata è un potenziale obiettivo di esfiltrazione.

358 

359```json theme={null}

360{

361 "autoMode": {

362 "environment": [

363 "Source control: github.example.com/acme-corp and all repos under it",

364 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

365 "Trusted internal domains: *.corp.example.com, api.internal.example.com",

366 "Key internal services: Jenkins at ci.example.com, Artifactory at artifacts.example.com"

367 ]

368 }

369}

370```

371 

372Le voci sono prosa, non regex o modelli di strumento. Il classificatore le legge come regole in linguaggio naturale. Scrivitele come descrivereste la vostra infrastruttura a un nuovo ingegnere. Una sezione environment approfondita copre:

373 

374* **Organizzazione**: il nome della vostra azienda e per cosa Claude Code viene utilizzato principalmente, come sviluppo software, automazione dell'infrastruttura o ingegneria dei dati

375* **Controllo del codice sorgente**: ogni organizzazione GitHub, GitLab o Bitbucket a cui i vostri sviluppatori eseguono il push

376* **Provider cloud e bucket affidabili**: nomi di bucket o prefissi che Claude dovrebbe essere in grado di leggere e scrivere

377* **Domini interni affidabili**: nomi host per API, dashboard e servizi all'interno della vostra rete, come `*.internal.example.com`

378* **Servizi interni chiave**: CI, registri di artefatti, indici di pacchetti interni, strumenti di incidenti

379* **Contesto aggiuntivo**: vincoli di settore regolamentato, infrastruttura multi-tenant o requisiti di conformità che influiscono su ciò che il classificatore dovrebbe trattare come rischioso

380 

381Un modello di partenza utile: compilate i campi tra parentesi e rimuovete le righe che non si applicano:

382 

383```json theme={null}

384{

385 "autoMode": {

386 "environment": [

387 "Organization: {COMPANY_NAME}. Primary use: {PRIMARY_USE_CASE, e.g. software development, infrastructure automation}",

388 "Source control: {SOURCE_CONTROL, e.g. GitHub org github.example.com/acme-corp}",

389 "Cloud provider(s): {CLOUD_PROVIDERS, e.g. AWS, GCP, Azure}",

390 "Trusted cloud buckets: {TRUSTED_BUCKETS, e.g. s3://acme-builds, gs://acme-datasets}",

391 "Trusted internal domains: {TRUSTED_DOMAINS, e.g. *.internal.example.com, api.example.com}",

392 "Key internal services: {SERVICES, e.g. Jenkins at ci.example.com, Artifactory at artifacts.example.com}",

393 "Additional context: {EXTRA, e.g. regulated industry, multi-tenant infrastructure, compliance requirements}"

394 ]

395 }

396}

397```

398 

399Più contesto specifico fornite, meglio il classificatore può distinguere le operazioni interne di routine dai tentativi di esfiltrazione.

400 

401Non è necessario compilare tutto in una volta. Un rollout ragionevole: iniziate con i valori predefiniti e aggiungete la vostra organizzazione di controllo del codice sorgente e i servizi interni chiave, che risolvono i falsi positivi più comuni come il push nei vostri repository. Aggiungete i domini affidabili e i bucket cloud successivamente. Compilate il resto man mano che i blocchi si presentano.

402 

403### Ignorare le regole di blocco e allow

404 

405Due campi aggiuntivi vi consentono di sostituire gli elenchi di regole integrate del classificatore: `autoMode.soft_deny` controlla cosa viene bloccato e `autoMode.allow` controlla quali eccezioni si applicano. Ognuno è un array di descrizioni in prosa, lette come regole in linguaggio naturale.

406 

407All'interno del classificatore, la precedenza è: le regole `soft_deny` bloccano per prime, quindi le regole `allow` ignorano come eccezioni, quindi l'intento esplicito dell'utente ignora entrambi. Se il messaggio dell'utente descrive direttamente e specificamente l'azione esatta che Claude sta per intraprendere, il classificatore la consente anche se una regola `soft_deny` corrisponde. Le richieste generali non contano: chiedere a Claude di "pulire il repository" non autorizza il force-push, ma chiedere a Claude di "force-push questo ramo" sì.

408 

409Per allentare: rimuovete le regole da `soft_deny` quando i valori predefiniti bloccano qualcosa che la vostra pipeline già protegge con revisione PR, CI o ambienti di staging, o aggiungete a `allow` quando il classificatore contrassegna ripetutamente un modello di routine che le eccezioni predefinite non coprono. Per stringere: aggiungete a `soft_deny` per i rischi specifici del vostro ambiente che i valori predefiniti mancano, o rimuovete da `allow` per mantenere un'eccezione predefinita alle regole di blocco. In tutti i casi, eseguite `claude auto-mode defaults` per ottenere gli elenchi predefiniti completi, quindi copiate e modificate: non iniziate mai da un elenco vuoto.

410 

411```json theme={null}

412{

413 "autoMode": {

414 "environment": [

415 "Source control: github.example.com/acme-corp and all repos under it"

416 ],

417 "allow": [

418 "Deploying to the staging namespace is allowed: staging is isolated from production and resets nightly",

419 "Writing to s3://acme-scratch/ is allowed: ephemeral bucket with a 7-day lifecycle policy"

420 ],

421 "soft_deny": [

422 "Never run database migrations outside the migrations CLI, even against dev databases",

423 "Never modify files under infra/terraform/prod/: production infrastructure changes go through the review workflow",

424 "...copy full default soft_deny list here first, then add your rules..."

425 ]

426 }

427}

428```

429 

430<Danger>

431 Impostare `allow` o `soft_deny` sostituisce l'intero elenco predefinito per quella sezione. Se impostate `soft_deny` con una singola voce, ogni regola di blocco integrata viene scartata: force push, esfiltrazione di dati, `curl | bash`, deploy di produzione e tutte le altre regole di blocco predefinite diventano consentite. Per personalizzare in modo sicuro, eseguite `claude auto-mode defaults` per stampare le regole integrate, copiatele nel vostro file di impostazioni, quindi rivedete ogni regola rispetto alla vostra pipeline e tolleranza al rischio. Rimuovete solo le regole per i rischi che la vostra infrastruttura già mitiga.

432</Danger>

433 

434Le tre sezioni vengono valutate indipendentemente, quindi impostare solo `environment` lascia intatti gli elenchi predefiniti `allow` e `soft_deny`.

435 

436### Ispezionare i valori predefiniti e la vostra configurazione effettiva

437 

438Poiché impostare `allow` o `soft_deny` sostituisce i valori predefiniti, iniziate qualsiasi personalizzazione copiando gli elenchi predefiniti completi. Tre sottocomandi CLI vi aiutano a ispezionare e convalidare:

439 

440```bash theme={null}

441claude auto-mode defaults # the built-in environment, allow, and soft_deny rules

442claude auto-mode config # what the classifier actually uses: your settings where set, defaults otherwise

443claude auto-mode critique # get AI feedback on your custom allow and soft_deny rules

444```

445 

446Salvate l'output di `claude auto-mode defaults` in un file, modificate gli elenchi per corrispondere alla vostra politica e incollate il risultato nel vostro file di impostazioni. Dopo il salvataggio, eseguite `claude auto-mode config` per confermare che le regole effettive sono quelle che vi aspettate. Se avete scritto regole personalizzate, `claude auto-mode critique` le rivede e contrassegna le voci che sono ambigue, ridondanti o probabilmente causeranno falsi positivi.

447 

448## Precedenza delle impostazioni

449 

450Le regole di autorizzazione seguono la stessa [precedenza delle impostazioni](/it/settings#settings-precedence) di tutte le altre impostazioni di Claude Code:

451 

4521. **Impostazioni gestite**: non possono essere ignorate da nessun altro livello, inclusi gli argomenti della riga di comando

4532. **Argomenti della riga di comando**: override temporanei della sessione

4543. **Impostazioni di progetto locale** (`.claude/settings.local.json`)

4554. **Impostazioni di progetto condivise** (`.claude/settings.json`)

4565. **Impostazioni utente** (`~/.claude/settings.json`)

457 

458Se uno strumento viene negato a qualsiasi livello, nessun altro livello può consentirlo. Ad esempio, un deny delle impostazioni gestite non può essere ignorato da `--allowedTools` e `--disallowedTools` può aggiungere restrizioni oltre a quelle definite dalle impostazioni gestite.

459 

460Se un'autorizzazione è consentita nelle impostazioni utente ma negata nelle impostazioni di progetto, l'impostazione di progetto ha la precedenza e l'autorizzazione viene bloccata.

461 

462## Configurazioni di esempio

463 

464Questo [repository](https://github.com/anthropics/claude-code/tree/main/examples/settings) include configurazioni di impostazioni iniziali per scenari di distribuzione comuni. Utilizzatele come punti di partenza e adattatele alle vostre esigenze.

465 

466## Vedi anche

467 

468* [Settings](/it/settings): riferimento di configurazione completo inclusa la tabella delle impostazioni di autorizzazione

469* [Configure auto mode](/it/auto-mode-config): comunicate al classificatore della modalità auto quale infrastruttura la vostra organizzazione ritiene affidabile

470* [Sandboxing](/it/sandboxing): isolamento del filesystem e della rete a livello del sistema operativo per i comandi Bash

471* [Authentication](/it/authentication): configurate l'accesso utente a Claude Code

472* [Security](/it/security): salvaguardie di sicurezza e best practice

473* [Hooks](/it/hooks-guide): automatizzate i flussi di lavoro ed estendete la valutazione delle autorizzazioni

platforms.md +78 −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# Piattaforme e integrazioni

6 

7> Scegli dove eseguire Claude Code e cosa collegare. Confronta CLI, Desktop, VS Code, JetBrains, web e integrazioni come Chrome, Slack e CI/CD.

8 

9Claude Code esegue lo stesso motore sottostante ovunque, ma ogni superficie è ottimizzata per un modo diverso di lavorare. Questa pagina ti aiuta a scegliere la piattaforma giusta per il tuo flusso di lavoro e a collegare gli strumenti che già utilizzi.

10 

11## Dove eseguire Claude Code

12 

13Scegli una piattaforma in base a come preferisci lavorare e dove si trova il tuo progetto.

14 

15| Piattaforma | Ideale per | Cosa ottieni |

16| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |

17| [CLI](/it/quickstart) | Flussi di lavoro da terminale, scripting, server remoti | Set completo di funzionalità, [Agent SDK](/it/headless), provider di terze parti |

18| [Desktop](/it/desktop) | Revisione visiva, sessioni parallele, configurazione gestita | Visualizzatore diff, anteprima app, [computer use](/it/desktop#let-claude-use-your-computer) e [Dispatch](/it/desktop#sessions-from-dispatch) su Pro e Max |

19| [VS Code](/it/vs-code) | Lavorare all'interno di VS Code senza passare a un terminale | Diff inline, terminale integrato, contesto file |

20| [JetBrains](/it/jetbrains) | Lavorare all'interno di IntelliJ, PyCharm, WebStorm o altri IDE JetBrains | Visualizzatore diff, condivisione selezione, sessione terminale |

21| [Web](/it/claude-code-on-the-web) | Attività a lunga esecuzione che non richiedono molto controllo, o lavoro che dovrebbe continuare quando sei offline | Cloud gestito da Anthropic, continua dopo la disconnessione |

22 

23La CLI è la superficie più completa per il lavoro nativo da terminale: scripting, provider di terze parti e Agent SDK sono solo CLI. Desktop e le estensioni IDE scambiano alcune funzionalità solo CLI per revisione visiva e integrazione editor più stretta. Il web viene eseguito nel cloud di Anthropic, quindi le attività continuano dopo la disconnessione.

24 

25Puoi mescolare superfici sullo stesso progetto. La configurazione, la memoria del progetto e i server MCP sono condivisi tra le superfici locali.

26 

27## Collega i tuoi strumenti

28 

29Le integrazioni consentono a Claude di lavorare con servizi al di fuori della tua base di codice.

30 

31| Integrazione | Cosa fa | Usala per |

32| :----------------------------------- | :---------------------------------------------------- | :-------------------------------------------------------------------- |

33| [Chrome](/it/chrome) | Controlla il tuo browser con le tue sessioni connesse | Test di app web, compilazione moduli, automazione siti senza API |

34| [GitHub Actions](/it/github-actions) | Esegue Claude nella tua pipeline CI | Revisioni PR automatizzate, triage problemi, manutenzione programmata |

35| [GitLab CI/CD](/it/gitlab-ci-cd) | Come GitHub Actions per GitLab | Automazione guidata da CI su GitLab |

36| [Code Review](/it/code-review) | Rivede automaticamente ogni PR | Catturare bug prima della revisione umana |

37| [Slack](/it/slack) | Risponde alle menzioni `@Claude` nei tuoi canali | Trasformare segnalazioni di bug in pull request dalla chat del team |

38 

39Per integrazioni non elencate qui, [server MCP](/it/mcp) e [connettori](/it/desktop#connect-external-tools) ti permettono di collegare quasi tutto: Linear, Notion, Google Drive o le tue API interne.

40 

41## Lavora quando sei lontano dal tuo terminale

42 

43Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.

44 

45| | Trigger | Claude runs on | Setup | Best for |

46| :--------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |

47| [Dispatch](/en/desktop#sessions-from-dispatch) | Message a task from the Claude mobile app | Your machine (Desktop) | [Pair the mobile app with Desktop](https://support.claude.com/en/articles/13947068) | Delegating work while you're away, minimal setup |

48| [Remote Control](/en/remote-control) | Drive a running session from [claude.ai/code](https://claude.ai/code) or the Claude mobile app | Your machine (CLI or VS Code) | Run `claude remote-control` | Steering in-progress work from another device |

49| [Channels](/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/en/channels#quickstart) or [build your own](/en/channels-reference) | Reacting to external events like CI failures or chat messages |

50| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |

51| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |

52 

53Se non sei sicuro da dove iniziare, [installa la CLI](/it/quickstart) ed eseguila in una directory di progetto. Se preferisci non usare un terminale, [Desktop](/it/desktop-quickstart) ti offre lo stesso motore con un'interfaccia grafica.

54 

55## Risorse correlate

56 

57### Piattaforme

58 

59* [Guida rapida CLI](/it/quickstart): installa ed esegui il tuo primo comando nel terminale

60* [Desktop](/it/desktop): revisione diff visiva, sessioni parallele, computer use e Dispatch

61* [VS Code](/it/vs-code): l'estensione Claude Code all'interno del tuo editor

62* [JetBrains](/it/jetbrains): l'estensione per IntelliJ, PyCharm e altri IDE JetBrains

63* [Claude Code sul web](/it/claude-code-on-the-web): sessioni cloud che continuano a funzionare quando ti disconnetti

64 

65### Integrazioni

66 

67* [Chrome](/it/chrome): automatizza attività del browser con le tue sessioni connesse

68* [GitHub Actions](/it/github-actions): esegui Claude nella tua pipeline CI

69* [GitLab CI/CD](/it/gitlab-ci-cd): lo stesso per GitLab

70* [Code Review](/it/code-review): revisione automatica su ogni pull request

71* [Slack](/it/slack): invia attività dalla chat del team, ricevi PR indietro

72 

73### Accesso remoto

74 

75* [Dispatch](/it/desktop#sessions-from-dispatch): invia un'attività dal tuo telefono e può generare una sessione Desktop

76* [Remote Control](/it/remote-control): guida una sessione in esecuzione dal tuo telefono o browser

77* [Channels](/it/channels): invia eventi da app di chat o dai tuoi server in una sessione

78* [Attività programmate](/it/scheduled-tasks): esegui prompt su base ricorrente

plugin-dependencies.md +153 −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# Vincola le versioni delle dipendenze dei plugin

6 

7> Dichiara vincoli di versione sulle dipendenze dei plugin in modo che il tuo plugin continui a funzionare quando un plugin upstream rilascia una modifica che rompe la compatibilità.

8 

9Un plugin può dipendere da altri plugin elencandoli in `plugin.json` o nella sua voce del marketplace. Per impostazione predefinita, una dipendenza traccia la versione più recente disponibile, quindi un rilascio upstream può modificare la dipendenza del tuo plugin senza preavviso. I vincoli di versione consentono di mantenere una dipendenza a un intervallo di versione testato fino a quando non scegli di passare a una versione più recente.

10 

11Quando installi un plugin che dichiara dipendenze, Claude Code le risolve e le installa automaticamente ed elenca quali dipendenze sono state aggiunte alla fine dell'output di installazione. Se una dipendenza successivamente scompare, `/reload-plugins` e l'aggiornamento automatico dei plugin in background la reinstallano, a condizione che il suo marketplace sia già nei marketplace configurati. L'esecuzione nuova di `claude plugin install` sul plugin dipendente, o l'aggiunta di un marketplace con `claude plugin marketplace add`, risolve anche eventuali dipendenze mancanti in sospeso. Le dipendenze da un marketplace che non hai aggiunto rimangono non risolte.

12 

13Questa guida è per gli autori di plugin che dichiarano dipendenze in `plugin.json` e per i manutentori del marketplace che taggano i rilasci. Per installare plugin che hanno dipendenze, vedi [Scopri e installa plugin](/it/discover-plugins). Per lo schema completo del manifest, vedi il [Riferimento dei plugin](/it/plugins-reference).

14 

15<Note>

16 I vincoli di versione delle dipendenze richiedono Claude Code v2.1.110 o successivo.

17</Note>

18 

19## Perché vincolare le versioni delle dipendenze

20 

21Considera un marketplace interno in cui due team pubblicano plugin. Il team della piattaforma mantiene `secrets-vault`, un server MCP che avvolge un backend di segreti. Il team di deploy mantiene `deploy-kit`, che chiama `secrets-vault` per recuperare le credenziali durante i deploy.

22 

23`deploy-kit` è testato rispetto a `secrets-vault` v2.1.0. Senza un vincolo di versione, la prossima volta che il team della piattaforma tagga un rilascio che rinomina uno strumento MCP, l'aggiornamento automatico sposta `secrets-vault` di ogni ingegnere alla nuova versione e `deploy-kit` si rompe.

24 

25Con un vincolo di versione, `deploy-kit` dichiara che ha bisogno di `secrets-vault` nell'intervallo `~2.1.0`. Gli ingegneri con `deploy-kit` installato rimangono sulla patch `2.1.x` più alta corrispondente. Il team di deploy esegue l'aggiornamento secondo il proprio programma pubblicando una nuova versione di `deploy-kit` con un vincolo più ampio.

26 

27## Dichiara una dipendenza con un vincolo di versione

28 

29Elenca le dipendenze nell'array `dependencies` del file `.claude-plugin/plugin.json` del tuo plugin. Ogni voce è un nome di plugin o un oggetto con un vincolo di versione.

30 

31Il seguente manifest dichiara una dipendenza senza versione e una dipendenza vincolata:

32 

33```json .claude-plugin/plugin.json theme={null}

34{

35 "name": "deploy-kit",

36 "version": "3.1.0",

37 "dependencies": [

38 "audit-logger",

39 { "name": "secrets-vault", "version": "~2.1.0" }

40 ]

41}

42```

43 

44Una voce può essere una stringa semplice con solo il nome del plugin, come `"audit-logger"` nell'esempio sopra, che dipende da qualsiasi versione fornita dal marketplace di quel plugin. Per un maggiore controllo, usa un oggetto con questi campi:

45 

46| Campo | Tipo | Descrizione |

47| :------------ | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

48| `name` | string | Nome del plugin. Si risolve all'interno dello stesso marketplace del plugin dichiarante. Obbligatorio. |

49| `version` | string | Un [intervallo semver](https://github.com/npm/node-semver#ranges) come `~2.1.0`, `^2.0`, `>=1.4`, o `=2.1.0`. La dipendenza viene recuperata alla versione taggata più alta che soddisfa questo intervallo. |

50| `marketplace` | string | Un marketplace diverso in cui risolvere `name`. Le dipendenze cross-marketplace sono bloccate a meno che il marketplace di destinazione non sia elencato in [`allowCrossMarketplaceDependenciesOn`](#depend-on-a-plugin-from-another-marketplace) nel file `marketplace.json` del marketplace root. |

51 

52Il campo `version` accetta qualsiasi espressione supportata dal pacchetto `semver` di Node, inclusi intervalli caret, tilde, hyphen e comparator. Le versioni pre-release come `2.0.0-beta.1` sono escluse a meno che il tuo intervallo non opti per un suffisso pre-release come `^2.0.0-0`.

53 

54## Dipendi da un plugin di un altro marketplace

55 

56Per impostazione predefinita, Claude Code rifiuta di installare automaticamente una dipendenza che si trova in un marketplace diverso da quello del plugin che la dichiara. Questo impedisce a un marketplace di estrarre silenziosamente plugin da una fonte che non hai revisionato.

57 

58Per consentirlo, il manutentore del marketplace root aggiunge il nome del marketplace di destinazione a `allowCrossMarketplaceDependenciesOn` in `marketplace.json`. Il marketplace root è quello che ospita il plugin che l'utente sta installando; solo la sua lista di autorizzazione viene consultata, quindi la fiducia non si propaga attraverso i marketplace intermedi.

59 

60Il seguente `marketplace.json` consente a `deploy-kit` di dipendere da un plugin di `acme-shared`:

61 

62```json .claude-plugin/marketplace.json theme={null}

63{

64 "name": "acme-tools",

65 "owner": { "name": "Acme" },

66 "allowCrossMarketplaceDependenciesOn": ["acme-shared"],

67 "plugins": [

68 {

69 "name": "deploy-kit",

70 "source": "./deploy-kit",

71 "dependencies": [

72 { "name": "audit-logger", "marketplace": "acme-shared" }

73 ]

74 }

75 ]

76}

77```

78 

79Se il campo è mancante o non include il marketplace di destinazione, l'installazione fallisce con un errore `cross-marketplace` che nomina il campo da impostare. Gli utenti possono comunque installare manualmente la dipendenza per prima, il che soddisfa il vincolo senza modificare la lista di autorizzazione.

80 

81## Tagga i rilasci dei plugin per la risoluzione della versione

82 

83I vincoli di versione si risolvono rispetto ai tag git nel repository del marketplace. Affinché Claude Code trovi le versioni disponibili di una dipendenza, i rilasci del plugin upstream devono essere taggati usando una convenzione di denominazione specifica.

84 

85Tagga ogni rilascio come `{plugin-name}--v{version}`, dove `{version}` corrisponde al campo `version` nel file `plugin.json` di quel commit. Dalla directory del plugin, esegui:

86 

87```bash theme={null}

88claude plugin tag --push

89```

90 

91Il comando `claude plugin tag` deriva il nome del tag dal manifesto del plugin e dalla voce del marketplace che lo contiene. Prima di creare il tag, convalida il contenuto del plugin, verifica che `plugin.json` e la voce del marketplace concordino sulla versione, richiede un albero di lavoro pulito nella directory del plugin e rifiuta se il tag esiste già. Aggiungi `--dry-run` per vedere cosa verrebbe taggato senza crearlo. Eseguire direttamente `git tag secrets-vault--v2.1.0` è equivalente se mantieni `plugin.json` e la voce del marketplace sincronizzati da solo.

92 

93Il prefisso del nome del plugin consente a un repository del marketplace di ospitare più plugin con linee di versione indipendenti. Il separatore `--v` viene analizzato come una corrispondenza di prefisso sul nome completo del plugin, quindi i nomi dei plugin che contengono trattini vengono gestiti correttamente.

94 

95Quando installi un plugin che dichiara `{ "name": "secrets-vault", "version": "~2.1.0" }`, Claude Code elenca i tag del marketplace, filtra quelli che iniziano con `secrets-vault--v` e recupera la versione più alta che soddisfa `~2.1.0`. Se non esiste un tag corrispondente, il plugin dipendente viene disabilitato con un errore che elenca le versioni disponibili.

96 

97Il semver del tag risolto viene registrato separatamente dalla `version` di `plugin.json`, quindi i controlli dei vincoli utilizzano il tag che è stato effettivamente recuperato anche se `plugin.json` in quel commit ha un valore obsoleto. Il nome della directory della cache per un'installazione risolta da tag include un suffisso SHA del commit di 12 caratteri, quindi se un manutentore sposta forzatamente un tag a un commit diverso, l'installazione successiva ottiene una directory della cache nuova invece di riutilizzare contenuti obsoleti.

98 

99<Note>

100 Per le fonti del marketplace `npm`, il vincolo non controlla quale versione viene recuperata, poiché la risoluzione basata su tag si applica solo alle fonti supportate da git. Il vincolo viene comunque controllato al momento del caricamento e il plugin dipendente viene disabilitato con `dependency-version-unsatisfied` se la versione installata non lo soddisfa.

101</Note>

102 

103## Come i vincoli interagiscono

104 

105Quando più plugin installati vincolano la stessa dipendenza, Claude Code interseca i loro intervalli e risolve la dipendenza alla versione più alta che soddisfa tutti loro. La tabella seguente mostra come si risolvono le combinazioni comuni.

106 

107| Plugin A richiede | Plugin B richiede | Risultato |

108| :---------------- | :---------------- | :------------------------------------------------------------------------------------------------------------------------ |

109| `^2.0` | `>=2.1` | Un'installazione al tag `2.x` più alto a o sopra `2.1.0`. Entrambi i plugin si caricano. |

110| `~2.1` | `~3.0` | L'installazione del plugin B fallisce con `range-conflict`. Plugin A e la dipendenza rimangono come erano. |

111| `=2.1.0` | nessuno | La dipendenza rimane a `2.1.0`. L'aggiornamento automatico salta le versioni più recenti mentre il plugin A è installato. |

112 

113L'aggiornamento automatico recupera una dipendenza vincolata al tag git più alto che soddisfa l'intervallo di ogni plugin installato, piuttosto che alla versione più recente del marketplace, quindi la dipendenza continua a ricevere aggiornamenti all'interno del suo intervallo consentito. Se nessun tag soddisfa tutti gli intervalli, l'aggiornamento viene saltato e il salto appare in `/doctor` e nella scheda Errori di `/plugin`, nominando il plugin vincolante.

114 

115Quando disinstalli l'ultimo plugin che vincola una dipendenza, la dipendenza non viene più mantenuta e riprende a tracciare la sua voce del marketplace al prossimo aggiornamento.

116 

117## Rimuovi le dipendenze auto-installate orfane

118 

119Le dipendenze auto-installate rimangono su disco dopo che i plugin che le hanno installate vengono disinstallati, nel caso in cui tu voglia reinstallare un plugin dipendente o desideri continuare a utilizzare la dipendenza direttamente. Per pulirle, esegui `claude plugin prune` per elencare le dipendenze auto-installate che non hanno più alcun plugin installato che le richiede e rimuoverle dopo un prompt di conferma. Questo richiede Claude Code v2.1.121 o successivo.

120 

121```bash theme={null}

122claude plugin prune

123```

124 

125Per impostazione predefinita, prune opera a livello di utente. Usa `--scope project` o `--scope local` per indirizzare un ambito diverso. Passa `--dry-run` per elencare cosa verrebbe rimosso senza modificare nulla. Passa `-y` per saltare il prompt di conferma. Quando stdin o stdout non è un terminale, prune elenca gli orfani e esce senza rimuoverli a meno che non venga passato `-y`.

126 

127Per eseguire prune come parte di una disinstallazione, passa `--prune` a `claude plugin uninstall`. Dopo aver rimosso il plugin denominato, Claude Code scansiona e rimuove eventuali dipendenze auto-installate che sono ora orfane. I plugin che hai installato tu stesso non vengono mai eliminati, solo quelli installati automaticamente attraverso l'array `dependencies` di un altro plugin.

128 

129Ad esempio, per disinstallare `deploy-kit` e pulire le dipendenze che lascia dietro:

130 

131```bash theme={null}

132claude plugin uninstall deploy-kit --prune

133```

134 

135## Risolvi gli errori delle dipendenze

136 

137I problemi di dipendenza emergono in `claude plugin list`, nell'interfaccia `/plugin` e in `/doctor`. Il plugin interessato viene disabilitato fino a quando non risolvi l'errore. Gli errori più comuni e le loro correzioni sono elencati di seguito.

138 

139| Errore | Significato | Come risolvere |

140| :------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

141| `dependency-unsatisfied` | Una dipendenza dichiarata non è installata, oppure è installata ma disabilitata. | Esegui il comando `claude plugin install` mostrato nel messaggio di errore. Se il marketplace della dipendenza non è ancora configurato, aggiungilo con `claude plugin marketplace add` e Claude Code risolve la dipendenza automaticamente. Se la dipendenza è disabilitata, abilitala. |

142| `range-conflict` | I requisiti di versione per una dipendenza non possono essere combinati. Il messaggio di errore nomina la causa: nessuna versione soddisfa tutti gli intervalli, un intervallo non è una sintassi semver valida, o gli intervalli combinati sono troppo complessi da intersecare. | Disinstalla o aggiorna uno dei plugin in conflitto, correggi qualsiasi stringa `version` non valida, semplifica le catene `\|\|` lunghe, o chiedi all'autore upstream di ampliare il suo vincolo. |

143| `dependency-version-unsatisfied` | La versione della dipendenza installata è al di fuori dell'intervallo dichiarato di questo plugin. | Esegui `claude plugin install <dependency>@<marketplace>` per ri-risolvere la dipendenza rispetto a tutti i vincoli attuali. |

144| `no-matching-tag` | Il repository della dipendenza non ha un tag `{name}--v*` che soddisfa l'intervallo. | Verifica che l'upstream abbia taggato i rilasci usando la convenzione sopra, o rilassa il tuo intervallo. |

145 

146Per controllare questi errori a livello di programmazione, esegui `claude plugin list --json` e leggi il campo `errors` su ogni plugin.

147 

148## Vedi anche

149 

150* [Crea plugin](/it/plugins): costruisci plugin con skills, agent e hooks

151* [Crea e distribuisci un marketplace di plugin](/it/plugin-marketplaces): ospita plugin per il tuo team

152* [Riferimento dei plugin](/it/plugins-reference#plugin-manifest-schema): lo schema completo di `plugin.json`

153* [Gestione delle versioni](/it/plugins-reference#version-management): come la versione di un plugin viene risolta e utilizzata come chiave di cache

plugin-marketplaces.md +1054 −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 e distribuire un marketplace di plugin

6 

7> Crea e ospita marketplace di plugin per distribuire estensioni Claude Code tra team e comunità.

8 

9Un **plugin marketplace** è un catalogo che ti consente di distribuire plugin ad altri. I marketplace forniscono scoperta centralizzata, tracciamento delle versioni, aggiornamenti automatici e supporto per più tipi di fonte (repository git, percorsi locali e altro). Questa guida ti mostra come creare il tuo marketplace per condividere plugin con il tuo team o comunità.

10 

11Stai cercando di installare plugin da un marketplace esistente? Vedi [Scopri e installa plugin precostruiti](/it/discover-plugins).

12 

13## Panoramica

14 

15La creazione e la distribuzione di un marketplace comporta:

16 

171. **Creazione di plugin**: crea uno o più plugin con skills, agenti, hooks, server MCP o server LSP. Questa guida presuppone che tu abbia già plugin da distribuire; vedi [Crea plugin](/it/plugins) per i dettagli su come crearli.

182. **Creazione di un file marketplace**: definisci un `marketplace.json` che elenca i tuoi plugin e dove trovarli (vedi [Crea il file marketplace](#create-the-marketplace-file)).

193. **Ospita il marketplace**: esegui il push su GitHub, GitLab o un altro host git (vedi [Ospita e distribuisci marketplace](#host-and-distribute-marketplaces)).

204. **Condividi con gli utenti**: gli utenti aggiungono il tuo marketplace con `/plugin marketplace add` e installano singoli plugin (vedi [Scopri e installa plugin](/it/discover-plugins)).

21 

22Una volta che il tuo marketplace è attivo, puoi aggiornarlo eseguendo il push delle modifiche al tuo repository. Gli utenti aggiornano la loro copia locale con `/plugin marketplace update`.

23 

24## Procedura dettagliata: creare un marketplace locale

25 

26Questo esempio crea un marketplace con un plugin: una skill `/quality-review` per le revisioni del codice. Creerai la struttura delle directory, aggiungerai una skill, creerai il manifest del plugin e il catalogo del marketplace, quindi lo installerai e lo testerai.

27 

28<Steps>

29 <Step title="Crea la struttura delle directory">

30 ```bash theme={null}

31 mkdir -p my-marketplace/.claude-plugin

32 mkdir -p my-marketplace/plugins/quality-review-plugin/.claude-plugin

33 mkdir -p my-marketplace/plugins/quality-review-plugin/skills/quality-review

34 ```

35 </Step>

36 

37 <Step title="Crea la skill">

38 Crea un file `SKILL.md` che definisce cosa fa la skill `/quality-review`.

39 

40 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}

41 ---

42 description: Rivedi il codice per bug, sicurezza e prestazioni

43 disable-model-invocation: true

44 ---

45 

46 Rivedi il codice che ho selezionato o i cambiamenti recenti per:

47 - Potenziali bug o casi limite

48 - Problemi di sicurezza

49 - Problemi di prestazioni

50 - Miglioramenti di leggibilità

51 

52 Sii conciso e pratico.

53 ```

54 </Step>

55 

56 <Step title="Crea il manifest del plugin">

57 Crea un file `plugin.json` che descrive il plugin. Il manifest va nella directory `.claude-plugin/`.

58 

59 ```json my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json theme={null}

60 {

61 "name": "quality-review-plugin",

62 "description": "Aggiunge una skill /quality-review per revisioni rapide del codice",

63 "version": "1.0.0"

64 }

65 ```

66 

67 <Note>

68 Impostare `version` significa che gli utenti ricevono aggiornamenti solo quando modifichi questo campo, quindi incrementalo ad ogni rilascio. Se ometti `version` e ospiti questo marketplace in git, ogni commit conta automaticamente come una nuova versione. Vedi [Risoluzione della versione](#version-resolution-and-release-channels) per scegliere l'approccio giusto.

69 </Note>

70 </Step>

71 

72 <Step title="Crea il file marketplace">

73 Crea il catalogo marketplace che elenca il tuo plugin.

74 

75 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}

76 {

77 "name": "my-plugins",

78 "owner": {

79 "name": "Your Name"

80 },

81 "plugins": [

82 {

83 "name": "quality-review-plugin",

84 "source": "./plugins/quality-review-plugin",

85 "description": "Aggiunge una skill /quality-review per revisioni rapide del codice"

86 }

87 ]

88 }

89 ```

90 </Step>

91 

92 <Step title="Aggiungi e installa">

93 Aggiungi il marketplace e installa il plugin.

94 

95 ```shell theme={null}

96 /plugin marketplace add ./my-marketplace

97 /plugin install quality-review-plugin@my-plugins

98 ```

99 </Step>

100 

101 <Step title="Provalo">

102 Seleziona del codice nel tuo editor ed esegui la tua nuova skill.

103 

104 ```shell theme={null}

105 /quality-review

106 ```

107 </Step>

108</Steps>

109 

110Per saperne di più su cosa possono fare i plugin, inclusi hooks, agenti, server MCP e server LSP, vedi [Plugins](/it/plugins).

111 

112<Note>

113 **Come vengono installati i plugin**: Quando gli utenti installano un plugin, Claude Code copia la directory del plugin in una posizione cache. Ciò significa che i plugin non possono fare riferimento a file al di fuori della loro directory utilizzando percorsi come `../shared-utils`, perché quei file non verranno copiati.

114 

115 Se hai bisogno di condividere file tra plugin, usa symlink. Vedi [Plugin caching and file resolution](/it/plugins-reference#plugin-caching-and-file-resolution) per i dettagli.

116</Note>

117 

118## Crea il file marketplace

119 

120Crea `.claude-plugin/marketplace.json` nella radice del tuo repository. Questo file definisce il nome del tuo marketplace, le informazioni del proprietario e un elenco di plugin con le loro fonti.

121 

122Ogni voce di plugin ha bisogno almeno di un `name` e di una `source` (da dove recuperarla). Vedi lo [schema completo](#marketplace-schema) di seguito per tutti i campi disponibili.

123 

124```json theme={null}

125{

126 "name": "company-tools",

127 "owner": {

128 "name": "DevTools Team",

129 "email": "devtools@example.com"

130 },

131 "plugins": [

132 {

133 "name": "code-formatter",

134 "source": "./plugins/formatter",

135 "description": "Formattazione automatica del codice al salvataggio",

136 "version": "2.1.0",

137 "author": {

138 "name": "DevTools Team"

139 }

140 },

141 {

142 "name": "deployment-tools",

143 "source": {

144 "source": "github",

145 "repo": "company/deploy-plugin"

146 },

147 "description": "Strumenti di automazione della distribuzione"

148 }

149 ]

150}

151```

152 

153## Schema del marketplace

154 

155### Campi obbligatori

156 

157| Campo | Tipo | Descrizione | Esempio |

158| :-------- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------- |

159| `name` | string | Identificatore del marketplace (kebab-case, senza spazi). Questo è pubblico: gli utenti lo vedono quando installano plugin (ad esempio, `/plugin install my-tool@your-marketplace`). | `"acme-tools"` |

160| `owner` | object | Informazioni sul manutentore del marketplace ([vedi i campi di seguito](#owner-fields)) | |

161| `plugins` | array | Elenco dei plugin disponibili | Vedi di seguito |

162 

163<Note>

164 **Nomi riservati**: I seguenti nomi di marketplace sono riservati per uso ufficiale di Anthropic e non possono essere utilizzati da marketplace di terze parti: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `knowledge-work-plugins`, `life-sciences`. Anche i nomi che impersonano marketplace ufficiali (come `official-claude-plugins` o `anthropic-tools-v2`) sono bloccati.

165</Note>

166 

167### Campi del proprietario

168 

169| Campo | Tipo | Obbligatorio | Descrizione |

170| :------ | :----- | :----------- | :----------------------------------- |

171| `name` | string | Sì | Nome del manutentore o del team |

172| `email` | string | No | Email di contatto per il manutentore |

173 

174### Campi opzionali

175 

176| Campo | Tipo | Descrizione |

177| :------------------------------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

178| `$schema` | string | URL dello schema JSON per l'autocompletamento dell'editor e la convalida. Claude Code ignora questo campo al momento del caricamento. |

179| `description` | string | Breve descrizione del marketplace |

180| `version` | string | Versione del manifest del marketplace |

181| `metadata.pluginRoot` | string | Directory di base anteposta ai percorsi di fonte del plugin relativo (ad esempio, `"./plugins"` ti consente di scrivere `"source": "formatter"` invece di `"source": "./plugins/formatter"`) |

182| `allowCrossMarketplaceDependenciesOn` | array | Altri marketplace su cui i plugin in questo marketplace possono dipendere. Le dipendenze da un marketplace non elencato qui sono bloccate all'installazione. Vedi [Dipendi da un plugin di un altro marketplace](/it/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |

183 

184`description` e `version` sono accettati anche sotto `metadata` per compatibilità con le versioni precedenti.

185 

186## Voci di plugin

187 

188Ogni voce di plugin nell'array `plugins` descrive un plugin e dove trovarlo. Puoi includere qualsiasi campo dallo [schema del manifest del plugin](/it/plugins-reference#plugin-manifest-schema) (come `description`, `version`, `author`, `commands`, `hooks`, ecc.), più questi campi specifici del marketplace: `source`, `category`, `tags` e `strict`.

189 

190### Campi obbligatori

191 

192| Campo | Tipo | Descrizione |

193| :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

194| `name` | string | Identificatore del plugin (kebab-case, senza spazi). Questo è pubblico: gli utenti lo vedono quando installano (ad esempio, `/plugin install my-plugin@marketplace`). |

195| `source` | string\|object | Da dove recuperare il plugin (vedi [Plugin sources](#plugin-sources) di seguito) |

196 

197### Campi di plugin opzionali

198 

199**Campi di metadati standard:**

200 

201| Campo | Tipo | Descrizione |

202| :------------ | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

203| `description` | string | Breve descrizione del plugin |

204| `version` | string | Versione del plugin. Se impostato (qui o in `plugin.json`), il plugin è bloccato a questa stringa e gli utenti ricevono aggiornamenti solo quando cambia. Ometti per tornare al SHA del commit git. Vedi [Version resolution](#version-resolution-and-release-channels). |

205| `author` | object | Informazioni sull'autore del plugin (`name` obbligatorio, `email` opzionale) |

206| `homepage` | string | URL della homepage o della documentazione del plugin |

207| `repository` | string | URL del repository del codice sorgente |

208| `license` | string | Identificatore di licenza SPDX (ad esempio, MIT, Apache-2.0) |

209| `keywords` | array | Tag per la scoperta e la categorizzazione dei plugin |

210| `category` | string | Categoria del plugin per l'organizzazione |

211| `tags` | array | Tag per la ricercabilità |

212| `strict` | boolean | Controlla se `plugin.json` è l'autorità per le definizioni dei componenti (predefinito: true). Vedi [Strict mode](#strict-mode) di seguito. |

213 

214**Campi di configurazione dei componenti:**

215 

216| Campo | Tipo | Descrizione |

217| :----------- | :------------- | :------------------------------------------------------------------------------ |

218| `skills` | string\|array | Percorsi personalizzati alle directory delle skill contenenti `<name>/SKILL.md` |

219| `commands` | string\|array | Percorsi personalizzati ai file di skill flat `.md` o alle directory |

220| `agents` | string\|array | Percorsi personalizzati ai file degli agenti |

221| `hooks` | string\|object | Configurazione degli hook personalizzati o percorso al file degli hook |

222| `mcpServers` | string\|object | Configurazioni del server MCP o percorso alla configurazione MCP |

223| `lspServers` | string\|object | Configurazioni del server LSP o percorso alla configurazione LSP |

224 

225## Plugin sources

226 

227Le plugin sources indicano a Claude Code dove recuperare ogni singolo plugin elencato nel tuo marketplace. Questi sono impostati nel campo `source` di ogni voce di plugin in `marketplace.json`.

228 

229Una volta che un plugin viene clonato o copiato nella macchina locale, viene copiato nella cache del plugin locale con versione in `~/.claude/plugins/cache`.

230 

231| Source | Tipo | Campi | Note |

232| ----------------- | --------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

233| Percorso relativo | `string` (ad es. `"./my-plugin"`) | nessuno | Directory locale all'interno del repository del marketplace. Deve iniziare con `./`. Risolto relativamente alla radice del marketplace, non alla directory `.claude-plugin/` |

234| `github` | object | `repo`, `ref?`, `sha?` | |

235| `url` | object | `url`, `ref?`, `sha?` | Fonte URL Git |

236| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Sottodirectory all'interno di un repository git. Clona in modo sparso per ridurre al minimo la larghezza di banda per i monorepo |

237| `npm` | object | `package`, `version?`, `registry?` | Installato tramite `npm install` |

238 

239<Note>

240 **Marketplace sources vs plugin sources**: Questi sono concetti diversi che controllano cose diverse.

241 

242 * **Marketplace source** — dove recuperare il catalogo `marketplace.json` stesso. Impostato quando gli utenti eseguono `/plugin marketplace add` o nelle impostazioni `extraKnownMarketplaces`. Supporta `ref` (branch/tag) ma non `sha`.

243 * **Plugin source** — dove recuperare un singolo plugin elencato nel marketplace. Impostato nel campo `source` di ogni voce di plugin all'interno di `marketplace.json`. Supporta sia `ref` (branch/tag) che `sha` (commit esatto).

244 

245 Ad esempio, un marketplace ospitato in `acme-corp/plugin-catalog` (marketplace source) può elencare un plugin recuperato da `acme-corp/code-formatter` (plugin source). La marketplace source e la plugin source puntano a repository diversi e sono fissate indipendentemente.

246</Note>

247 

248### Percorsi relativi

249 

250Per i plugin nello stesso repository, usa un percorso che inizia con `./`:

251 

252```json theme={null}

253{

254 "name": "my-plugin",

255 "source": "./plugins/my-plugin"

256}

257```

258 

259I percorsi si risolvono relativamente alla radice del marketplace, che è la directory contenente `.claude-plugin/`. Nell'esempio sopra, `./plugins/my-plugin` punta a `<repo>/plugins/my-plugin`, anche se `marketplace.json` si trova in `<repo>/.claude-plugin/marketplace.json`. Non usare `../` per fare riferimento a percorsi al di fuori della radice del marketplace.

260 

261<Note>

262 I percorsi relativi funzionano solo quando gli utenti aggiungono il tuo marketplace tramite Git (GitHub, GitLab o URL git). Se gli utenti aggiungono il tuo marketplace tramite un URL diretto al file `marketplace.json`, i percorsi relativi non si risolveranno correttamente. Per la distribuzione basata su URL, usa invece GitHub, npm o fonti URL git. Vedi [Troubleshooting](#plugins-with-relative-paths-fail-in-url-based-marketplaces) per i dettagli.

263</Note>

264 

265### Repository GitHub

266 

267```json theme={null}

268{

269 "name": "github-plugin",

270 "source": {

271 "source": "github",

272 "repo": "owner/plugin-repo"

273 }

274}

275```

276 

277Puoi fissare a un branch, tag o commit specifico:

278 

279```json theme={null}

280{

281 "name": "github-plugin",

282 "source": {

283 "source": "github",

284 "repo": "owner/plugin-repo",

285 "ref": "v2.0.0",

286 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

287 }

288}

289```

290 

291| Campo | Tipo | Descrizione |

292| :----- | :----- | :-------------------------------------------------------------------------------------- |

293| `repo` | string | Obbligatorio. Repository GitHub nel formato `owner/repo` |

294| `ref` | string | Opzionale. Branch o tag Git (predefinito al branch predefinito del repository) |

295| `sha` | string | Opzionale. SHA del commit git completo a 40 caratteri per fissare a una versione esatta |

296 

297### Repository Git

298 

299```json theme={null}

300{

301 "name": "git-plugin",

302 "source": {

303 "source": "url",

304 "url": "https://gitlab.com/team/plugin.git"

305 }

306}

307```

308 

309Puoi fissare a un branch, tag o commit specifico:

310 

311```json theme={null}

312{

313 "name": "git-plugin",

314 "source": {

315 "source": "url",

316 "url": "https://gitlab.com/team/plugin.git",

317 "ref": "main",

318 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

319 }

320}

321```

322 

323| Campo | Tipo | Descrizione |

324| :---- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

325| `url` | string | Obbligatorio. URL completo del repository git (`https://` o `git@`). Il suffisso `.git` è opzionale, quindi gli URL di Azure DevOps e AWS CodeCommit senza il suffisso funzionano |

326| `ref` | string | Opzionale. Branch o tag Git (predefinito al branch predefinito del repository) |

327| `sha` | string | Opzionale. SHA del commit git completo a 40 caratteri per fissare a una versione esatta |

328 

329### Sottodirectory Git

330 

331Usa `git-subdir` per puntare a un plugin che si trova all'interno di una sottodirectory di un repository git. Claude Code utilizza un clone parziale e sparso per recuperare solo la sottodirectory, riducendo al minimo la larghezza di banda per i grandi monorepo.

332 

333```json theme={null}

334{

335 "name": "my-plugin",

336 "source": {

337 "source": "git-subdir",

338 "url": "https://github.com/acme-corp/monorepo.git",

339 "path": "tools/claude-plugin"

340 }

341}

342```

343 

344Puoi fissare a un branch, tag o commit specifico:

345 

346```json theme={null}

347{

348 "name": "my-plugin",

349 "source": {

350 "source": "git-subdir",

351 "url": "https://github.com/acme-corp/monorepo.git",

352 "path": "tools/claude-plugin",

353 "ref": "v2.0.0",

354 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

355 }

356}

357```

358 

359Il campo `url` accetta anche una scorciatoia GitHub (`owner/repo`) o URL SSH (`git@github.com:owner/repo.git`).

360 

361| Campo | Tipo | Descrizione |

362| :----- | :----- | :-------------------------------------------------------------------------------------------------------------------------- |

363| `url` | string | Obbligatorio. URL del repository Git, scorciatoia GitHub `owner/repo` o URL SSH |

364| `path` | string | Obbligatorio. Percorso della sottodirectory all'interno del repo contenente il plugin (ad esempio, `"tools/claude-plugin"`) |

365| `ref` | string | Opzionale. Branch o tag Git (predefinito al branch predefinito del repository) |

366| `sha` | string | Opzionale. SHA del commit git completo a 40 caratteri per fissare a una versione esatta |

367 

368### Pacchetti npm

369 

370I plugin distribuiti come pacchetti npm vengono installati utilizzando `npm install`. Questo funziona con qualsiasi pacchetto nel registro npm pubblico o in un registro privato ospitato dal tuo team.

371 

372```json theme={null}

373{

374 "name": "my-npm-plugin",

375 "source": {

376 "source": "npm",

377 "package": "@acme/claude-plugin"

378 }

379}

380```

381 

382Per fissare a una versione specifica, aggiungi il campo `version`:

383 

384```json theme={null}

385{

386 "name": "my-npm-plugin",

387 "source": {

388 "source": "npm",

389 "package": "@acme/claude-plugin",

390 "version": "2.1.0"

391 }

392}

393```

394 

395Per installare da un registro privato o interno, aggiungi il campo `registry`:

396 

397```json theme={null}

398{

399 "name": "my-npm-plugin",

400 "source": {

401 "source": "npm",

402 "package": "@acme/claude-plugin",

403 "version": "^2.0.0",

404 "registry": "https://npm.example.com"

405 }

406}

407```

408 

409| Campo | Tipo | Descrizione |

410| :--------- | :----- | :-------------------------------------------------------------------------------------------------------------- |

411| `package` | string | Obbligatorio. Nome del pacchetto o pacchetto con scope (ad esempio, `@org/plugin`) |

412| `version` | string | Opzionale. Versione o intervallo di versione (ad esempio, `2.1.0`, `^2.0.0`, `~1.5.0`) |

413| `registry` | string | Opzionale. URL del registro npm personalizzato. Predefinito al registro npm del sistema (tipicamente npmjs.org) |

414 

415### Voci di plugin avanzate

416 

417Questo esempio mostra una voce di plugin che utilizza molti dei campi opzionali, inclusi percorsi personalizzati per comandi, agenti, hooks e server MCP:

418 

419```json theme={null}

420{

421 "name": "enterprise-tools",

422 "source": {

423 "source": "github",

424 "repo": "company/enterprise-plugin"

425 },

426 "description": "Strumenti di automazione del flusso di lavoro aziendale",

427 "version": "2.1.0",

428 "author": {

429 "name": "Enterprise Team",

430 "email": "enterprise@example.com"

431 },

432 "homepage": "https://docs.example.com/plugins/enterprise-tools",

433 "repository": "https://github.com/company/enterprise-plugin",

434 "license": "MIT",

435 "keywords": ["enterprise", "workflow", "automation"],

436 "category": "productivity",

437 "commands": [

438 "./commands/core/",

439 "./commands/enterprise/",

440 "./commands/experimental/preview.md"

441 ],

442 "agents": ["./agents/security-reviewer.md", "./agents/compliance-checker.md"],

443 "hooks": {

444 "PostToolUse": [

445 {

446 "matcher": "Write|Edit",

447 "hooks": [

448 {

449 "type": "command",

450 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"

451 }

452 ]

453 }

454 ]

455 },

456 "mcpServers": {

457 "enterprise-db": {

458 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

459 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]

460 }

461 },

462 "strict": false

463}

464```

465 

466Cose importanti da notare:

467 

468* **`commands` e `agents`**: Puoi specificare più directory o singoli file. I percorsi sono relativi alla radice del plugin.

469* **`${CLAUDE_PLUGIN_ROOT}`**: Usa questa variabile nelle configurazioni degli hook e del server MCP per fare riferimento ai file all'interno della directory di installazione del plugin. Questo è necessario perché i plugin vengono copiati in una posizione cache quando installati. Per le dipendenze o lo stato che dovrebbe sopravvivere agli aggiornamenti dei plugin, usa [`${CLAUDE_PLUGIN_DATA}`](/it/plugins-reference#persistent-data-directory) invece.

470* **`strict: false`**: Poiché è impostato su false, il plugin non ha bisogno del suo `plugin.json`. La voce del marketplace definisce tutto. Vedi [Strict mode](#strict-mode) di seguito.

471 

472### Strict mode

473 

474Il campo `strict` controlla se `plugin.json` è l'autorità per le definizioni dei componenti (skills, agenti, hooks, server MCP, stili di output).

475 

476| Valore | Comportamento |

477| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

478| `true` (predefinito) | `plugin.json` è l'autorità. La voce del marketplace può integrarla con componenti aggiuntivi e entrambe le fonti vengono unite. |

479| `false` | La voce del marketplace è la definizione completa. Se il plugin ha anche un `plugin.json` che dichiara componenti, è un conflitto e il plugin non riesce a caricarsi. |

480 

481**Quando usare ogni modalità:**

482 

483* **`strict: true`**: il plugin ha il suo `plugin.json` e gestisce i suoi componenti. La voce del marketplace può aggiungere skill o hook extra in cima. Questo è il predefinito e funziona per la maggior parte dei plugin.

484* **`strict: false`**: l'operatore del marketplace vuole il controllo completo. Il repository del plugin fornisce file grezzi e la voce del marketplace definisce quali di questi file sono esposti come skill, agenti, hook, ecc. Utile quando il marketplace ristruttura o cura i componenti di un plugin diversamente da quanto previsto dall'autore del plugin.

485 

486## Ospita e distribuisci marketplace

487 

488### Ospita su GitHub (consigliato)

489 

490GitHub fornisce il metodo di distribuzione più semplice:

491 

4921. **Crea un repository**: Configura un nuovo repository per il tuo marketplace

4932. **Aggiungi il file marketplace**: Crea `.claude-plugin/marketplace.json` con le tue definizioni di plugin

4943. **Condividi con i team**: Gli utenti aggiungono il tuo marketplace con `/plugin marketplace add owner/repo`

495 

496**Vantaggi**: Controllo della versione integrato, tracciamento dei problemi e funzionalità di collaborazione del team.

497 

498### Ospita su altri servizi git

499 

500Qualsiasi servizio di hosting git funziona, come GitLab, Bitbucket e server self-hosted. Gli utenti aggiungono con l'URL completo del repository:

501 

502```shell theme={null}

503/plugin marketplace add https://gitlab.com/company/plugins.git

504```

505 

506### Repository privati

507 

508Claude Code supporta l'installazione di plugin da repository privati. Per l'installazione manuale e gli aggiornamenti, Claude Code utilizza i tuoi helper di credenziali git esistenti, quindi l'accesso HTTPS tramite `gh auth login`, Keychain di macOS o `git-credential-store` funziona come nel tuo terminale. L'accesso SSH funziona finché l'host è già nel tuo file `known_hosts` e la chiave è caricata in `ssh-agent`, poiché Claude Code sopprime i prompt SSH interattivi per l'impronta digitale dell'host e la passphrase della chiave.

509 

510Gli aggiornamenti automatici in background vengono eseguiti all'avvio senza helper di credenziali, poiché i prompt interattivi bloccherebbero l'avvio di Claude Code. Per abilitare gli aggiornamenti automatici per i marketplace privati, imposta il token di autenticazione appropriato nel tuo ambiente:

511 

512| Provider | Variabili di ambiente | Note |

513| :-------- | :-------------------------- | :------------------------------------------------- |

514| GitHub | `GITHUB_TOKEN` o `GH_TOKEN` | Token di accesso personale o token di GitHub App |

515| GitLab | `GITLAB_TOKEN` o `GL_TOKEN` | Token di accesso personale o token di progetto |

516| Bitbucket | `BITBUCKET_TOKEN` | Password dell'app o token di accesso al repository |

517 

518Imposta il token nella configurazione della tua shell (ad esempio, `.bashrc`, `.zshrc`) o passalo quando esegui Claude Code:

519 

520```bash theme={null}

521export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx

522```

523 

524<Note>

525 Per gli ambienti CI/CD, configura il token come variabile di ambiente segreta. GitHub Actions fornisce automaticamente `GITHUB_TOKEN` per i repository nella stessa organizzazione.

526</Note>

527 

528### Testa localmente prima della distribuzione

529 

530Testa il tuo marketplace localmente prima di condividerlo:

531 

532```shell theme={null}

533/plugin marketplace add ./my-local-marketplace

534/plugin install test-plugin@my-local-marketplace

535```

536 

537Per l'intera gamma di comandi add (GitHub, URL Git, percorsi locali, URL remoti), vedi [Aggiungi marketplace](/it/discover-plugins#add-marketplaces).

538 

539### Richiedi marketplace per il tuo team

540 

541Puoi configurare il tuo repository in modo che i membri del team vengano automaticamente invitati a installare il tuo marketplace quando fidano della cartella del progetto. Aggiungi il tuo marketplace a `.claude/settings.json`:

542 

543```json theme={null}

544{

545 "extraKnownMarketplaces": {

546 "company-tools": {

547 "source": {

548 "source": "github",

549 "repo": "your-org/claude-plugins"

550 }

551 }

552 }

553}

554```

555 

556Puoi anche specificare quali plugin devono essere abilitati per impostazione predefinita:

557 

558```json theme={null}

559{

560 "enabledPlugins": {

561 "code-formatter@company-tools": true,

562 "deployment-tools@company-tools": true

563 }

564}

565```

566 

567Per le opzioni di configurazione complete, vedi [Plugin settings](/it/settings#plugin-settings).

568 

569<Note>

570 Se usi una fonte locale `directory` o `file` con un percorso relativo, il percorso si risolve rispetto al checkout principale del tuo repository. Quando esegui Claude Code da un git worktree, il percorso punta ancora al checkout principale, quindi tutti i worktree condividono la stessa posizione del marketplace. Lo stato del marketplace viene archiviato una volta per utente in `~/.claude/plugins/known_marketplaces.json`, non per progetto.

571</Note>

572 

573### Pre-popola plugin per i container

574 

575Per le immagini container e gli ambienti CI, puoi pre-popolare una directory di plugin al momento della compilazione in modo che Claude Code si avvii con marketplace e plugin già disponibili, senza clonare nulla al runtime. Imposta la variabile di ambiente `CLAUDE_CODE_PLUGIN_SEED_DIR` per puntare a questa directory.

576 

577Per stratificare più directory seed, separa i percorsi con `:` su Unix o `;` su Windows. Claude Code cerca ogni directory in ordine e il primo seed che contiene un determinato marketplace o cache di plugin vince.

578 

579La directory seed rispecchia la struttura di `~/.claude/plugins`:

580 

581```

582$CLAUDE_CODE_PLUGIN_SEED_DIR/

583 known_marketplaces.json

584 marketplaces/<name>/...

585 cache/<marketplace>/<plugin>/<version>/...

586```

587 

588Per costruire una directory seed, esegui Claude Code una volta durante la compilazione dell'immagine, installa i plugin di cui hai bisogno, quindi copia la directory `~/.claude/plugins` risultante nella tua immagine e punta `CLAUDE_CODE_PLUGIN_SEED_DIR` ad essa.

589 

590Per saltare il passaggio di copia, imposta `CLAUDE_CODE_PLUGIN_CACHE_DIR` sul tuo percorso seed di destinazione durante la compilazione in modo che i plugin si installino direttamente lì:

591 

592```bash theme={null}

593CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/plugins

594CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install my-tool@your-plugins

595```

596 

597Quindi imposta `CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed` nell'ambiente di runtime del tuo container in modo che Claude Code legga dal seed all'avvio.

598 

599All'avvio, Claude Code registra i marketplace trovati nel `known_marketplaces.json` del seed nella configurazione primaria e utilizza le cache dei plugin trovate sotto `cache/` al posto senza ri-clonare. Questo funziona sia in modalità interattiva che in modalità non interattiva con il flag `-p`.

600 

601Dettagli del comportamento:

602 

603* **Sola lettura**: la directory seed non viene mai scritta. Gli aggiornamenti automatici sono disabilitati per i marketplace seed poiché git pull fallirebbe su un filesystem di sola lettura.

604* **Le voci seed hanno precedenza**: i marketplace dichiarati nel seed sovrascrivono qualsiasi voce corrispondente nella configurazione dell'utente ad ogni avvio. Per rinunciare a un plugin seed, usa `/plugin disable` piuttosto che rimuovere il marketplace.

605* **Risoluzione del percorso**: Claude Code individua il contenuto del marketplace sondando `$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/` al runtime, non fidandosi dei percorsi archiviati all'interno del JSON del seed. Ciò significa che il seed funziona correttamente anche quando montato in un percorso diverso da dove è stato compilato.

606* **La mutazione è bloccata**: l'esecuzione di `/plugin marketplace remove` o `/plugin marketplace update` su un marketplace gestito da seed non riesce con una guida per chiedere al tuo amministratore di aggiornare l'immagine seed.

607* **Compone con le impostazioni**: se `extraKnownMarketplaces` o `enabledPlugins` dichiarano un marketplace che esiste già nel seed, Claude Code utilizza la copia del seed invece di clonare.

608 

609### Restrizioni del marketplace gestito

610 

611Per le organizzazioni che richiedono un controllo rigoroso sulle fonti dei plugin, gli amministratori possono limitare quali marketplace di plugin gli utenti possono aggiungere utilizzando l'impostazione [`strictKnownMarketplaces`](/it/settings#strictknownmarketplaces) nelle impostazioni gestite.

612 

613Quando `strictKnownMarketplaces` è configurato nelle impostazioni gestite, il comportamento della restrizione dipende dal valore:

614 

615| Valore | Comportamento |

616| -------------------------- | --------------------------------------------------------------------------------------------------------- |

617| Non definito (predefinito) | Nessuna restrizione. Gli utenti possono aggiungere qualsiasi marketplace |

618| Array vuoto `[]` | Blocco completo. Gli utenti non possono aggiungere nuovi marketplace |

619| Elenco di fonti | Gli utenti possono aggiungere solo marketplace che corrispondono esattamente all'elenco di autorizzazione |

620 

621#### Configurazioni comuni

622 

623Disabilita tutti gli aggiunte di marketplace:

624 

625```json theme={null}

626{

627 "strictKnownMarketplaces": []

628}

629```

630 

631Consenti solo marketplace specifici:

632 

633```json theme={null}

634{

635 "strictKnownMarketplaces": [

636 {

637 "source": "github",

638 "repo": "acme-corp/approved-plugins"

639 },

640 {

641 "source": "github",

642 "repo": "acme-corp/security-tools",

643 "ref": "v2.0"

644 },

645 {

646 "source": "url",

647 "url": "https://plugins.example.com/marketplace.json"

648 }

649 ]

650}

651```

652 

653Consenti tutti i marketplace da un server git interno utilizzando la corrispondenza del modello regex sull'host. Questo è l'approccio consigliato per [GitHub Enterprise Server](/it/github-enterprise-server#plugin-marketplaces-on-ghes) o istanze GitLab self-hosted:

654 

655```json theme={null}

656{

657 "strictKnownMarketplaces": [

658 {

659 "source": "hostPattern",

660 "hostPattern": "^github\\.example\\.com$"

661 }

662 ]

663}

664```

665 

666Consenti marketplace basati su filesystem da una directory specifica utilizzando la corrispondenza del modello regex sul percorso:

667 

668```json theme={null}

669{

670 "strictKnownMarketplaces": [

671 {

672 "source": "pathPattern",

673 "pathPattern": "^/opt/approved/"

674 }

675 ]

676}

677```

678 

679Usa `".*"` come `pathPattern` per consentire qualsiasi percorso del filesystem controllando comunque le fonti di rete con `hostPattern`.

680 

681<Note>

682 `strictKnownMarketplaces` limita ciò che gli utenti possono aggiungere, ma non registra i marketplace di per sé. Per rendere i marketplace consentiti disponibili automaticamente senza che gli utenti eseguano `/plugin marketplace add`, abbinalo a [`extraKnownMarketplaces`](/it/settings#extraknownmarketplaces) nello stesso `managed-settings.json`. Vedi [Usare entrambi insieme](/it/settings#strictknownmarketplaces).

683</Note>

684 

685#### Come funzionano le restrizioni

686 

687Le restrizioni vengono convalidate prima di qualsiasi operazione di rete o del filesystem. Il controllo viene eseguito all'aggiunta del marketplace e all'installazione, aggiornamento, aggiornamento e auto-aggiornamento del plugin. Se un marketplace è stato aggiunto prima della configurazione della policy e la sua fonte non corrisponde più all'elenco di autorizzazione, Claude Code rifiuta di installare o aggiornare i plugin da esso. Lo stesso controllo si applica a `blockedMarketplaces`.

688 

689L'elenco di autorizzazione utilizza la corrispondenza esatta per la maggior parte dei tipi di fonte. Affinché un marketplace sia consentito, tutti i campi specificati devono corrispondere esattamente:

690 

691* Per le fonti GitHub: `repo` è obbligatorio e `ref` o `path` devono corrispondere anche se specificati nell'elenco di autorizzazione

692* Per le fonti URL: l'URL completo deve corrispondere esattamente

693* Per le fonti `hostPattern`: l'host del marketplace viene confrontato con il modello regex

694* Per le fonti `pathPattern`: il percorso del filesystem del marketplace viene confrontato con il modello regex

695 

696Poiché `strictKnownMarketplaces` è impostato nelle [impostazioni gestite](/it/settings#settings-files), le configurazioni individuali degli utenti e dei progetti non possono ignorare queste restrizioni.

697 

698Per i dettagli di configurazione completi inclusi tutti i tipi di fonte supportati e il confronto con `extraKnownMarketplaces`, vedi il [riferimento strictKnownMarketplaces](/it/settings#strictknownmarketplaces).

699 

700### Risoluzione della versione e canali di rilascio

701 

702Le versioni dei plugin determinano i percorsi della cache e il rilevamento degli aggiornamenti: se la versione risolta corrisponde a quella che un utente ha già, `/plugin update` e l'auto-aggiornamento saltano il plugin.

703 

704Claude Code risolve la versione di un plugin dal primo di questi che è impostato:

705 

7061. `version` nel `plugin.json` del plugin

7072. `version` nella voce del marketplace del plugin

7083. Lo SHA del commit git della fonte del plugin

709 

710Per i tipi di fonte basati su git `github`, `url`, `git-subdir` e i percorsi relativi all'interno di un marketplace ospitato su git, puoi omettere completamente `version` e ogni nuovo commit viene trattato come una nuova versione. Questa è la configurazione più semplice per i plugin interni o in fase di sviluppo attivo.

711 

712<Warning>

713 Impostare `version` fissa il plugin. Se `plugin.json` dichiara `"version": "1.0.0"`, spingere nuovi commit senza cambiare quella stringa non fa nulla per gli utenti esistenti, perché Claude Code vede la stessa versione e mantiene la copia in cache. Aumenta il campo ad ogni rilascio, o omettilo per usare lo SHA del commit.

714 

715 Evita di impostare `version` sia in `plugin.json` che nella voce del marketplace. Il valore `plugin.json` vince sempre silenziosamente, quindi una versione del manifest obsoleta può mascherare una versione che hai impostato in `marketplace.json`.

716</Warning>

717 

718#### Configura i canali di rilascio

719 

720Per supportare i canali di rilascio "stable" e "latest" per i tuoi plugin, puoi configurare due marketplace che puntano a diversi ref o SHA dello stesso repo. Puoi quindi assegnare i due marketplace a diversi gruppi di utenti tramite [impostazioni gestite](/it/settings#settings-files).

721 

722<Warning>

723 Ogni canale deve risolversi a una versione diversa. Se usi versioni esplicite, `plugin.json` deve dichiarare una `version` diversa in ogni ref o SHA fissato. Se ometti `version`, gli SHA dei commit distinti già distinguono i canali. Se due ref si risolvono alla stessa stringa di versione, Claude Code li tratta come identici e salta l'aggiornamento.

724</Warning>

725 

726##### Esempio

727 

728```json theme={null}

729{

730 "name": "stable-tools",

731 "plugins": [

732 {

733 "name": "code-formatter",

734 "source": {

735 "source": "github",

736 "repo": "acme-corp/code-formatter",

737 "ref": "stable"

738 }

739 }

740 ]

741}

742```

743 

744```json theme={null}

745{

746 "name": "latest-tools",

747 "plugins": [

748 {

749 "name": "code-formatter",

750 "source": {

751 "source": "github",

752 "repo": "acme-corp/code-formatter",

753 "ref": "latest"

754 }

755 }

756 ]

757}

758```

759 

760##### Assegna i canali ai gruppi di utenti

761 

762Assegna ogni marketplace al gruppo di utenti appropriato tramite impostazioni gestite. Ad esempio, il gruppo stabile riceve:

763 

764```json theme={null}

765{

766 "extraKnownMarketplaces": {

767 "stable-tools": {

768 "source": {

769 "source": "github",

770 "repo": "acme-corp/stable-tools"

771 }

772 }

773 }

774}

775```

776 

777Il gruppo early-access riceve invece `latest-tools`:

778 

779```json theme={null}

780{

781 "extraKnownMarketplaces": {

782 "latest-tools": {

783 "source": {

784 "source": "github",

785 "repo": "acme-corp/latest-tools"

786 }

787 }

788 }

789}

790```

791 

792#### Fissa le versioni delle dipendenze

793 

794Un plugin può vincolare le sue dipendenze a un intervallo semver in modo che gli aggiornamenti a una dipendenza non interrompano il plugin dipendente. Vedi [Vincola le versioni delle dipendenze dei plugin](/it/plugin-dependencies) per la convenzione del tag git `{plugin-name}--v{version}`, la sintassi dell'intervallo e come più vincoli sulla stessa dipendenza vengono combinati.

795 

796## Validazione e test

797 

798Testa il tuo marketplace prima di condividerlo.

799 

800Valida la sintassi JSON del tuo marketplace:

801 

802```bash theme={null}

803claude plugin validate .

804```

805 

806O da Claude Code:

807 

808```shell theme={null}

809/plugin validate .

810```

811 

812Aggiungi il marketplace per il test:

813 

814```shell theme={null}

815/plugin marketplace add ./path/to/marketplace

816```

817 

818Installa un plugin di test per verificare che tutto funzioni:

819 

820```shell theme={null}

821/plugin install test-plugin@marketplace-name

822```

823 

824Per i flussi di lavoro di test completi dei plugin, vedi [Testa i tuoi plugin localmente](/it/plugins#test-your-plugins-locally). Per la risoluzione dei problemi tecnici, vedi [Plugins reference](/it/plugins-reference).

825 

826## Gestisci marketplace dalla CLI

827 

828Claude Code fornisce sottocomandi `claude plugin marketplace` non interattivi per lo scripting e l'automazione. Questi sono equivalenti ai comandi `/plugin marketplace` disponibili in una sessione interattiva.

829 

830### Plugin marketplace add

831 

832Aggiungi un marketplace da un repository GitHub, URL git, URL remoto o percorso locale.

833 

834```bash theme={null}

835claude plugin marketplace add <source> [options]

836```

837 

838**Argomenti:**

839 

840* `<source>`: Scorciatoia GitHub `owner/repo`, URL git, URL remoto a un file `marketplace.json` o percorso di directory locale. Per fissare a un branch o tag, aggiungi `@ref` alla scorciatoia GitHub o `#ref` a un URL git

841 

842**Opzioni:**

843 

844| Opzione | Descrizione | Predefinito |

845| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | :---------- |

846| `--scope <scope>` | Dove dichiarare il marketplace: `user`, `project` o `local`. Vedi [Plugin installation scopes](/it/plugins-reference#plugin-installation-scopes) | `user` |

847| `--sparse <paths...>` | Limita il checkout a directory specifiche tramite git sparse-checkout. Utile per i monorepo | |

848 

849Aggiungi un marketplace da GitHub utilizzando la scorciatoia `owner/repo`:

850 

851```bash theme={null}

852claude plugin marketplace add acme-corp/claude-plugins

853```

854 

855Fissa a un branch o tag specifico con `@ref`:

856 

857```bash theme={null}

858claude plugin marketplace add acme-corp/claude-plugins@v2.0

859```

860 

861Aggiungi da un URL git su un host non-GitHub:

862 

863```bash theme={null}

864claude plugin marketplace add https://gitlab.example.com/team/plugins.git

865```

866 

867Aggiungi da un URL remoto che serve il file `marketplace.json` direttamente:

868 

869```bash theme={null}

870claude plugin marketplace add https://example.com/marketplace.json

871```

872 

873Aggiungi da una directory locale per il test:

874 

875```bash theme={null}

876claude plugin marketplace add ./my-marketplace

877```

878 

879Dichiara il marketplace a livello di progetto in modo che sia condiviso con il tuo team tramite `.claude/settings.json`:

880 

881```bash theme={null}

882claude plugin marketplace add acme-corp/claude-plugins --scope project

883```

884 

885Per un monorepo, limita il checkout alle directory che contengono il contenuto del plugin:

886 

887```bash theme={null}

888claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins

889```

890 

891### Plugin marketplace list

892 

893Elenca tutti i marketplace configurati.

894 

895```bash theme={null}

896claude plugin marketplace list [options]

897```

898 

899**Opzioni:**

900 

901| Opzione | Descrizione |

902| :------- | :--------------- |

903| `--json` | Output come JSON |

904 

905### Plugin marketplace remove

906 

907Rimuovi un marketplace configurato. L'alias `rm` è accettato anche.

908 

909```bash theme={null}

910claude plugin marketplace remove <name>

911```

912 

913**Argomenti:**

914 

915* `<name>`: nome del marketplace da rimuovere, come mostrato da `claude plugin marketplace list`. Questo è il `name` da `marketplace.json`, non la fonte che hai passato a `add`

916 

917<Warning>

918 La rimozione di un marketplace disinstalla anche tutti i plugin che hai installato da esso. Per aggiornare un marketplace senza perdere i plugin installati, usa `claude plugin marketplace update` invece.

919</Warning>

920 

921### Plugin marketplace update

922 

923Aggiorna i marketplace dalle loro fonti per recuperare nuovi plugin e cambiamenti di versione.

924 

925```bash theme={null}

926claude plugin marketplace update [name]

927```

928 

929**Argomenti:**

930 

931* `[name]`: nome del marketplace da aggiornare, come mostrato da `claude plugin marketplace list`. Aggiorna tutti i marketplace se omesso

932 

933Sia `remove` che `update` non riescono quando eseguiti su un marketplace gestito da seed, che è di sola lettura. Quando si aggiornano tutti i marketplace, le voci gestite da seed vengono saltate e gli altri marketplace si aggiornano comunque. Per modificare i plugin forniti da seed, chiedi al tuo amministratore di aggiornare l'immagine seed. Vedi [Pre-popola plugin per i container](#pre-populate-plugins-for-containers).

934 

935## Troubleshooting

936 

937### Marketplace non carica

938 

939**Sintomi**: Non riesci ad aggiungere il marketplace o a vedere i plugin da esso

940 

941**Soluzioni**:

942 

943* Verifica che l'URL del marketplace sia accessibile

944* Controlla che `.claude-plugin/marketplace.json` esista nel percorso specificato

945* Assicurati che la sintassi JSON sia valida e che il frontmatter sia ben formato utilizzando `claude plugin validate` o `/plugin validate`

946* Per i repository privati, conferma di avere i permessi di accesso

947 

948### Errori di validazione del marketplace

949 

950Esegui `claude plugin validate .` o `/plugin validate .` dalla directory del tuo marketplace per verificare i problemi. Il validatore controlla `plugin.json`, il frontmatter di skill/agente/comando e `hooks/hooks.json` per errori di sintassi e schema. Errori comuni:

951 

952| Errore | Causa | Soluzione |

953| :------------------------------------------------ | :---------------------------------------------------- | :------------------------------------------------------------------------------------------------------ |

954| `File not found: .claude-plugin/marketplace.json` | Manifest mancante | Crea `.claude-plugin/marketplace.json` con i campi obbligatori |

955| `Invalid JSON syntax: Unexpected token...` | Errore di sintassi JSON in marketplace.json | Controlla le virgole mancanti, le virgole extra o le stringhe non quotate |

956| `Duplicate plugin name "x" found in marketplace` | Due plugin condividono lo stesso nome | Dai a ogni plugin un valore `name` univoco |

957| `plugins[0].source: Path contains ".."` | Il percorso di fonte contiene `..` | Usa percorsi relativi alla radice del marketplace senza `..`. Vedi [Percorsi relativi](#relative-paths) |

958| `YAML frontmatter failed to parse: ...` | YAML non valido in un file di skill, agente o comando | Correggi la sintassi YAML nel blocco frontmatter. Al runtime questo file si carica senza metadati. |

959| `Invalid JSON syntax: ...` (hooks.json) | `hooks/hooks.json` malformato | Correggi la sintassi JSON. Un `hooks/hooks.json` malformato impedisce al plugin intero di caricarsi. |

960 

961**Avvisi** (non bloccanti):

962 

963* `Marketplace has no plugins defined`: aggiungi almeno un plugin all'array `plugins`

964* `No marketplace description provided`: aggiungi una `description` di livello superiore per aiutare gli utenti a comprendere il tuo marketplace

965* `Plugin name "x" is not kebab-case`: il nome del plugin contiene lettere maiuscole, spazi o caratteri speciali. Rinomina in lettere minuscole, cifre e trattini solo (ad esempio, `my-plugin`). Claude Code accetta altre forme, ma la sincronizzazione del marketplace Claude.ai le rifiuta.

966 

967### Errori di installazione del plugin

968 

969**Sintomi**: Il marketplace appare ma l'installazione del plugin non riesce

970 

971**Soluzioni**:

972 

973* Verifica che gli URL di fonte del plugin siano accessibili

974* Controlla che le directory dei plugin contengano i file richiesti

975* Per le fonti GitHub, assicurati che i repository siano pubblici o che tu abbia accesso

976* Testa manualmente le fonti dei plugin clonando/scaricando

977 

978### L'autenticazione del repository privato non riesce

979 

980**Sintomi**: Errori di autenticazione durante l'installazione di plugin da repository privati

981 

982**Soluzioni**:

983 

984Per l'installazione manuale e gli aggiornamenti:

985 

986* Verifica di essere autenticato con il tuo provider git (ad esempio, esegui `gh auth status` per GitHub)

987* Controlla che il tuo helper di credenziali sia configurato correttamente: `git config --global credential.helper`

988* Prova a clonare il repository manualmente per verificare che le tue credenziali funzionino

989 

990Per gli aggiornamenti automatici in background:

991 

992* Imposta il token appropriato nel tuo ambiente: `echo $GITHUB_TOKEN`

993* Controlla che il token abbia i permessi richiesti (accesso in lettura al repository)

994* Per GitHub, assicurati che il token abbia lo scope `repo` per i repository privati

995* Per GitLab, assicurati che il token abbia almeno lo scope `read_repository`

996* Verifica che il token non sia scaduto

997 

998### Gli aggiornamenti del marketplace non riescono in ambienti offline

999 

1000**Sintomi**: Il `git pull` del marketplace non riesce e Claude Code cancella la cache esistente, causando l'indisponibilità dei plugin.

1001 

1002**Causa**: Per impostazione predefinita, quando un `git pull` non riesce, Claude Code rimuove il clone obsoleto e tenta di ri-clonare. In ambienti offline o airgapped, la ri-clonazione non riesce allo stesso modo, lasciando la directory del marketplace vuota.

1003 

1004**Soluzione**: Imposta `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` per mantenere la cache esistente quando il pull non riesce invece di cancellarla:

1005 

1006```bash theme={null}

1007export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1

1008```

1009 

1010Con questa variabile impostata, Claude Code mantiene il clone obsoleto del marketplace in caso di fallimento di `git pull` e continua a utilizzare lo stato ultimo noto come buono. Per distribuzioni completamente offline in cui il repository non sarà mai raggiungibile, utilizza [`CLAUDE_CODE_PLUGIN_SEED_DIR`](#pre-populate-plugins-for-containers) per pre-popolare la directory dei plugin al momento della compilazione.

1011 

1012### Le operazioni Git scadono

1013 

1014**Sintomi**: L'installazione del plugin o gli aggiornamenti del marketplace non riescono con un errore di timeout come "Git clone timed out after 120s" o "Git pull timed out after 120s".

1015 

1016**Causa**: Claude Code utilizza un timeout di 120 secondi per tutte le operazioni git, inclusa la clonazione dei repository dei plugin e il pull degli aggiornamenti del marketplace. I repository di grandi dimensioni o le connessioni di rete lente possono superare questo limite.

1017 

1018**Soluzione**: Aumenta il timeout utilizzando la variabile di ambiente `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`. Il valore è in millisecondi:

1019 

1020```bash theme={null}

1021export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 minuti

1022```

1023 

1024### I plugin con percorsi relativi non riescono nei marketplace basati su URL

1025 

1026**Sintomi**: Hai aggiunto un marketplace tramite URL (come `https://example.com/marketplace.json`), ma i plugin con fonti di percorso relativo come `"./plugins/my-plugin"` non riescono a installare con errori "path not found".

1027 

1028**Causa**: I marketplace basati su URL scaricano solo il file `marketplace.json` stesso. Non scaricano i file dei plugin dal server. I percorsi relativi nella voce del marketplace fanno riferimento a file sul server remoto che non sono stati scaricati.

1029 

1030**Soluzioni**:

1031 

1032* **Usa fonti esterne**: Cambia le voci dei plugin per usare GitHub, npm o fonti URL git invece di percorsi relativi:

1033 ```json theme={null}

1034 { "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }

1035 ```

1036* **Usa un marketplace basato su Git**: Ospita il tuo marketplace in un repository Git e aggiungilo con l'URL git. I marketplace basati su Git clonano l'intero repository, rendendo i percorsi relativi funzionanti correttamente.

1037 

1038### File non trovati dopo l'installazione

1039 

1040**Sintomi**: Il plugin si installa ma i riferimenti ai file non riescono, specialmente i file al di fuori della directory del plugin

1041 

1042**Causa**: I plugin vengono copiati in una directory cache piuttosto che utilizzati in-place. I percorsi che fanno riferimento a file al di fuori della directory del plugin (come `../shared-utils`) non funzioneranno perché quei file non vengono copiati.

1043 

1044**Soluzioni**: Vedi [Plugin caching and file resolution](/it/plugins-reference#plugin-caching-and-file-resolution) per le soluzioni alternative inclusi symlink e ristrutturazione delle directory.

1045 

1046Per ulteriori strumenti di debug e problemi comuni, vedi [Debugging and development tools](/it/plugins-reference#debugging-and-development-tools).

1047 

1048## Vedi anche

1049 

1050* [Scopri e installa plugin precostruiti](/it/discover-plugins) - Installazione di plugin da marketplace esistenti

1051* [Plugins](/it/plugins) - Creazione dei tuoi plugin

1052* [Plugins reference](/it/plugins-reference) - Specifiche tecniche complete e schemi

1053* [Plugin settings](/it/settings#plugin-settings) - Opzioni di configurazione dei plugin

1054* [strictKnownMarketplaces reference](/it/settings#strictknownmarketplaces) - Restrizioni del marketplace gestito

plugins.md +454 −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 plugin

6 

7> Crea plugin personalizzati per estendere Claude Code con skills, agents, hooks e MCP servers.

8 

9I plugin ti permettono di estendere Claude Code con funzionalità personalizzate che possono essere condivise tra progetti e team. Questa guida copre la creazione dei tuoi plugin con skills, agents, hooks e MCP servers.

10 

11Stai cercando di installare plugin esistenti? Vedi [Scopri e installa plugin](/it/discover-plugins). Per le specifiche tecniche complete, vedi [Riferimento plugin](/it/plugins-reference).

12 

13## Quando usare plugin rispetto alla configurazione standalone

14 

15Claude Code supporta due modi per aggiungere skills, agents e hooks personalizzati:

16 

17| Approccio | Nomi skill | Migliore per |

18| :------------------------------------------------------ | :------------------- | :-------------------------------------------------------------------------------------------------------- |

19| **Standalone** (directory `.claude/`) | `/hello` | Flussi di lavoro personali, personalizzazioni specifiche del progetto, esperimenti rapidi |

20| **Plugin** (directory con `.claude-plugin/plugin.json`) | `/plugin-name:hello` | Condivisione con i colleghi, distribuzione alla comunità, rilasci versionati, riutilizzabili tra progetti |

21 

22**Usa la configurazione standalone quando**:

23 

24* Stai personalizzando Claude Code per un singolo progetto

25* La configurazione è personale e non ha bisogno di essere condivisa

26* Stai sperimentando con skills o hooks prima di pacchettizzarli

27* Vuoi nomi skill brevi come `/hello` o `/deploy`

28 

29**Usa i plugin quando**:

30 

31* Vuoi condividere funzionalità con il tuo team o comunità

32* Hai bisogno degli stessi skills/agents in più progetti

33* Vuoi il controllo della versione e aggiornamenti facili per le tue estensioni

34* Stai distribuendo tramite un marketplace

35* Sei d'accordo con skills con namespace come `/my-plugin:hello` (il namespace previene conflitti tra plugin)

36 

37<Tip>

38 Inizia con la configurazione standalone in `.claude/` per un'iterazione rapida, poi [converti in un plugin](#convert-existing-configurations-to-plugins) quando sei pronto a condividere.

39</Tip>

40 

41## Quickstart

42 

43Questo quickstart ti guida attraverso la creazione di un plugin con uno skill personalizzato. Creerai un manifest (il file di configurazione che definisce il tuo plugin), aggiungerai uno skill e lo testerai localmente usando il flag `--plugin-dir`.

44 

45### Prerequisiti

46 

47* Claude Code [installato e autenticato](/it/quickstart#step-1-install-claude-code)

48 

49<Note>

50 Se non vedi il comando `/plugin`, aggiorna Claude Code all'ultima versione. Vedi [Troubleshooting](/it/troubleshooting) per le istruzioni di aggiornamento.

51</Note>

52 

53### Crea il tuo primo plugin

54 

55<Steps>

56 <Step title="Crea la directory del plugin">

57 Ogni plugin vive nella sua directory contenente un manifest e i tuoi skills, agents o hooks. Creane uno ora:

58 

59 ```bash theme={null}

60 mkdir my-first-plugin

61 ```

62 </Step>

63 

64 <Step title="Crea il manifest del plugin">

65 Il file manifest in `.claude-plugin/plugin.json` definisce l'identità del tuo plugin: il suo nome, descrizione e versione. Claude Code usa questi metadati per visualizzare il tuo plugin nel plugin manager.

66 

67 Crea la directory `.claude-plugin` dentro la cartella del tuo plugin:

68 

69 ```bash theme={null}

70 mkdir my-first-plugin/.claude-plugin

71 ```

72 

73 Poi crea `my-first-plugin/.claude-plugin/plugin.json` con questo contenuto:

74 

75 ```json my-first-plugin/.claude-plugin/plugin.json theme={null}

76 {

77 "name": "my-first-plugin",

78 "description": "A greeting plugin to learn the basics",

79 "version": "1.0.0",

80 "author": {

81 "name": "Your Name"

82 }

83 }

84 ```

85 

86 | Campo | Scopo |

87 | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

88 | `name` | Identificatore univoco e namespace dello skill. Gli skill sono prefissati con questo (ad es., `/my-first-plugin:hello`). |

89 | `description` | Mostrato nel plugin manager quando si sfogliano o si installano plugin. |

90 | `version` | Opzionale. Se impostato, gli utenti ricevono aggiornamenti solo quando aumenti questo campo. Se omesso e il tuo plugin è distribuito tramite git, viene utilizzato il commit SHA e ogni commit conta come una nuova versione. Vedi [gestione della versione](/it/plugins-reference#version-management). |

91 | `author` | Opzionale. Utile per l'attribuzione. |

92 

93 Per campi aggiuntivi come `homepage`, `repository` e `license`, vedi lo [schema manifest completo](/it/plugins-reference#plugin-manifest-schema).

94 </Step>

95 

96 <Step title="Aggiungi uno skill">

97 Gli skill vivono nella directory `skills/`. Ogni skill è una cartella contenente un file `SKILL.md`. Il nome della cartella diventa il nome dello skill, prefissato con il namespace del plugin (`hello/` in un plugin denominato `my-first-plugin` crea `/my-first-plugin:hello`).

98 

99 Crea una directory skill nella cartella del tuo plugin:

100 

101 ```bash theme={null}

102 mkdir -p my-first-plugin/skills/hello

103 ```

104 

105 Poi crea `my-first-plugin/skills/hello/SKILL.md` con questo contenuto:

106 

107 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

108 ---

109 description: Greet the user with a friendly message

110 disable-model-invocation: true

111 ---

112 

113 Greet the user warmly and ask how you can help them today.

114 ```

115 </Step>

116 

117 <Step title="Testa il tuo plugin">

118 Esegui Claude Code con il flag `--plugin-dir` per caricare il tuo plugin:

119 

120 ```bash theme={null}

121 claude --plugin-dir ./my-first-plugin

122 ```

123 

124 Una volta che Claude Code si avvia, prova il tuo nuovo skill:

125 

126 ```shell theme={null}

127 /my-first-plugin:hello

128 ```

129 

130 Vedrai Claude rispondere con un saluto. Esegui `/help` per vedere il tuo skill elencato sotto il namespace del plugin.

131 

132 <Note>

133 **Perché il namespace?** Gli skill del plugin hanno sempre il namespace (come `/my-first-plugin:hello`) per prevenire conflitti quando più plugin hanno skill con lo stesso nome.

134 

135 Per cambiare il prefisso del namespace, aggiorna il campo `name` in `plugin.json`.

136 </Note>

137 </Step>

138 

139 <Step title="Aggiungi argomenti dello skill">

140 Rendi il tuo skill dinamico accettando input dell'utente. Il placeholder `$ARGUMENTS` cattura qualsiasi testo che l'utente fornisce dopo il nome dello skill.

141 

142 Aggiorna il tuo file `SKILL.md`:

143 

144 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

145 ---

146 description: Greet the user with a personalized message

147 ---

148 

149 # Hello Skill

150 

151 Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.

152 ```

153 

154 Esegui `/reload-plugins` per raccogliere i cambiamenti, poi prova lo skill con il tuo nome:

155 

156 ```shell theme={null}

157 /my-first-plugin:hello Alex

158 ```

159 

160 Claude ti saluterà per nome. Per ulteriori informazioni sul passaggio di argomenti agli skill, vedi [Skills](/it/skills#pass-arguments-to-skills).

161 </Step>

162</Steps>

163 

164Hai creato e testato con successo un plugin con questi componenti chiave:

165 

166* **Plugin manifest** (`.claude-plugin/plugin.json`): descrive i metadati del tuo plugin

167* **Directory skills** (`skills/`): contiene i tuoi skill personalizzati

168* **Argomenti dello skill** (`$ARGUMENTS`): cattura l'input dell'utente per il comportamento dinamico

169 

170<Tip>

171 Il flag `--plugin-dir` è utile per lo sviluppo e il test. Quando sei pronto a condividere il tuo plugin con altri, vedi [Crea e distribuisci un marketplace di plugin](/it/plugin-marketplaces).

172</Tip>

173 

174## Panoramica della struttura del plugin

175 

176Hai creato un plugin con uno skill, ma i plugin possono includere molto di più: agents personalizzati, hooks, MCP servers, LSP servers e monitor in background.

177 

178<Warning>

179 **Errore comune**: Non mettere `commands/`, `agents/`, `skills/` o `hooks/` dentro la directory `.claude-plugin/`. Solo `plugin.json` va dentro `.claude-plugin/`. Tutte le altre directory devono essere al livello radice del plugin.

180</Warning>

181 

182| Directory | Posizione | Scopo |

183| :---------------- | :---------------- | :----------------------------------------------------------------------------------------- |

184| `.claude-plugin/` | Radice del plugin | Contiene il manifest `plugin.json` (opzionale se i componenti usano posizioni predefinite) |

185| `skills/` | Radice del plugin | Skills come directory `<name>/SKILL.md` |

186| `commands/` | Radice del plugin | Skills come file Markdown flat. Usa `skills/` per i nuovi plugin |

187| `agents/` | Radice del plugin | Definizioni di agent personalizzati |

188| `hooks/` | Radice del plugin | Gestori di eventi in `hooks.json` |

189| `.mcp.json` | Radice del plugin | Configurazioni del server MCP |

190| `.lsp.json` | Radice del plugin | Configurazioni del server LSP per l'intelligenza del codice |

191| `monitors/` | Radice del plugin | Configurazioni del monitor in background in `monitors.json` |

192| `bin/` | Radice del plugin | Eseguibili aggiunti al `PATH` dello strumento Bash mentre il plugin è abilitato |

193| `settings.json` | Radice del plugin | [Impostazioni](/it/settings) predefinite applicate quando il plugin è abilitato |

194 

195<Note>

196 **Prossimi passi**: Pronto ad aggiungere più funzionalità? Vai a [Sviluppa plugin più complessi](#develop-more-complex-plugins) per aggiungere agents, hooks, MCP servers e LSP servers. Per le specifiche tecniche complete di tutti i componenti del plugin, vedi [Riferimento plugin](/it/plugins-reference).

197</Note>

198 

199## Sviluppa plugin più complessi

200 

201Una volta che hai familiarità con i plugin di base, puoi creare estensioni più sofisticate.

202 

203### Aggiungi Skills al tuo plugin

204 

205I plugin possono includere [Agent Skills](/it/skills) per estendere le capacità di Claude. Gli skill sono invocati dal modello: Claude li usa automaticamente in base al contesto dell'attività.

206 

207Aggiungi una directory `skills/` alla radice del tuo plugin con cartelle Skill contenenti file `SKILL.md`:

208 

209```text theme={null}

210my-plugin/

211├── .claude-plugin/

212│ └── plugin.json

213└── skills/

214 └── code-review/

215 └── SKILL.md

216```

217 

218Ogni `SKILL.md` contiene frontmatter YAML e istruzioni. Includi una `description` in modo che Claude sappia quando usare lo skill:

219 

220```yaml theme={null}

221---

222description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.

223---

224 

225When reviewing code, check for:

2261. Code organization and structure

2272. Error handling

2283. Security concerns

2294. Test coverage

230```

231 

232Dopo aver installato il plugin, esegui `/reload-plugins` per caricare gli Skills. Per una guida completa sulla creazione di Skill inclusa la divulgazione progressiva e le restrizioni degli strumenti, vedi [Agent Skills](/it/skills).

233 

234### Aggiungi server LSP al tuo plugin

235 

236<Tip>

237 Per linguaggi comuni come TypeScript, Python e Rust, installa i plugin LSP pre-costruiti dal marketplace ufficiale. Crea plugin LSP personalizzati solo quando hai bisogno di supporto per linguaggi non ancora coperti.

238</Tip>

239 

240I plugin LSP (Language Server Protocol) danno a Claude l'intelligenza del codice in tempo reale. Se hai bisogno di supportare un linguaggio che non ha un plugin LSP ufficiale, puoi crearne uno tuo aggiungendo un file `.lsp.json` al tuo plugin:

241 

242```json .lsp.json theme={null}

243{

244 "go": {

245 "command": "gopls",

246 "args": ["serve"],

247 "extensionToLanguage": {

248 ".go": "go"

249 }

250 }

251}

252```

253 

254Gli utenti che installano il tuo plugin devono avere il binario del language server installato sulla loro macchina.

255 

256Per le opzioni di configurazione LSP complete, vedi [LSP servers](/it/plugins-reference#lsp-servers).

257 

258### Aggiungi monitor in background al tuo plugin

259 

260I monitor in background permettono al tuo plugin di osservare log, file o stato esterno in background e notificare Claude quando gli eventi arrivano. Claude Code avvia automaticamente ogni monitor quando il plugin è attivo, quindi non hai bisogno di istruire Claude ad avviare la sorveglianza.

261 

262Aggiungi un file `monitors/monitors.json` alla radice del plugin con un array di voci di monitor:

263 

264```json monitors/monitors.json theme={null}

265[

266 {

267 "name": "error-log",

268 "command": "tail -F ./logs/error.log",

269 "description": "Application error log"

270 }

271]

272```

273 

274Ogni riga stdout da `command` viene consegnata a Claude come notifica durante la sessione. Per lo schema completo, incluso il trigger `when` e la sostituzione delle variabili, vedi [Monitors](/it/plugins-reference#monitors).

275 

276### Spedisci impostazioni predefinite con il tuo plugin

277 

278I plugin possono includere un file `settings.json` alla radice del plugin per applicare la configurazione predefinita quando il plugin è abilitato. Attualmente, sono supportate solo le chiavi `agent` e `subagentStatusLine`.

279 

280Impostare `agent` attiva uno dei [custom agents](/it/sub-agents) del plugin come thread principale, applicando il suo system prompt, le restrizioni degli strumenti e il modello. Questo consente a un plugin di cambiare il comportamento predefinito di Claude Code quando abilitato.

281 

282```json settings.json theme={null}

283{

284 "agent": "security-reviewer"

285}

286```

287 

288Questo esempio attiva l'agent `security-reviewer` definito nella directory `agents/` del plugin. Le impostazioni da `settings.json` hanno priorità rispetto alle `settings` dichiarate in `plugin.json`. Le chiavi sconosciute vengono silenziosamente ignorate.

289 

290### Organizza plugin complessi

291 

292Per i plugin con molti componenti, organizza la tua struttura di directory per funzionalità. Per i layout di directory completi e i modelli di organizzazione, vedi [Struttura della directory del plugin](/it/plugins-reference#plugin-directory-structure).

293 

294### Testa i tuoi plugin localmente

295 

296Usa il flag `--plugin-dir` per testare i plugin durante lo sviluppo. Questo carica il tuo plugin direttamente senza richiedere l'installazione.

297 

298```bash theme={null}

299claude --plugin-dir ./my-plugin

300```

301 

302Quando un plugin `--plugin-dir` ha lo stesso nome di un plugin marketplace installato, la copia locale ha la precedenza per quella sessione. Questo ti consente di testare le modifiche a un plugin che hai già installato senza disinstallarlo prima. I plugin marketplace forzatamente abilitati dalle impostazioni gestite sono l'unica eccezione e non possono essere sovrascritti.

303 

304Man mano che apporti modifiche al tuo plugin, esegui `/reload-plugins` per raccogliere gli aggiornamenti senza riavviare. Questo ricarica plugin, skills, agents, hooks, MCP servers del plugin e LSP servers del plugin. Testa i componenti del tuo plugin:

305 

306* Prova i tuoi skill con `/plugin-name:skill-name`

307* Verifica che gli agents appaiano in `/agents`

308* Verifica che gli hooks funzionino come previsto

309 

310<Tip>

311 Puoi caricare più plugin contemporaneamente specificando il flag più volte:

312 

313 ```bash theme={null}

314 claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two

315 ```

316</Tip>

317 

318### Esegui il debug dei problemi del plugin

319 

320Se il tuo plugin non funziona come previsto:

321 

3221. **Controlla la struttura**: Assicurati che le tue directory siano alla radice del plugin, non dentro `.claude-plugin/`

3232. **Testa i componenti individualmente**: Controlla ogni skill, agent e hook separatamente

3243. **Usa strumenti di validazione e debug**: Vedi [Strumenti di debug e sviluppo](/it/plugins-reference#debugging-and-development-tools) per i comandi CLI e le tecniche di troubleshooting

325 

326### Condividi i tuoi plugin

327 

328Quando il tuo plugin è pronto per essere condiviso:

329 

3301. **Aggiungi documentazione**: Includi un `README.md` con istruzioni di installazione e utilizzo

3312. **Scegli una strategia di versionamento**: Decidi se impostare una `version` esplicita o affidarti al commit SHA di git. Vedi [gestione della versione](/it/plugins-reference#version-management)

3323. **Crea o usa un marketplace**: Distribuisci tramite [marketplace di plugin](/it/plugin-marketplaces) per l'installazione

3334. **Testa con altri**: Fai testare il plugin ai colleghi del team prima di una distribuzione più ampia

334 

335Una volta che il tuo plugin è in un marketplace, altri possono installarlo usando le istruzioni in [Scopri e installa plugin](/it/discover-plugins). Per mantenere un plugin interno al tuo team, ospita il marketplace in un [repository privato](/it/plugin-marketplaces#private-repositories).

336 

337### Invia il tuo plugin al marketplace ufficiale

338 

339Per inviare un plugin al marketplace ufficiale di Anthropic, usa uno dei moduli di invio in-app:

340 

341* **Claude.ai**: [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

342* **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

343 

344Una volta che il tuo plugin è elencato, puoi avere il tuo CLI che invita gli utenti di Claude Code a installarlo. Vedi [Consiglia il tuo plugin dal tuo CLI](/it/plugin-hints).

345 

346<Note>

347 Per le specifiche tecniche complete, le tecniche di debug e le strategie di distribuzione, vedi [Riferimento plugin](/it/plugins-reference).

348</Note>

349 

350## Converti configurazioni esistenti in plugin

351 

352Se hai già skill o hooks nella tua directory `.claude/`, puoi convertirli in un plugin per una condivisione e distribuzione più facile.

353 

354### Passaggi di migrazione

355 

356<Steps>

357 <Step title="Crea la struttura del plugin">

358 Crea una nuova directory plugin:

359 

360 ```bash theme={null}

361 mkdir -p my-plugin/.claude-plugin

362 ```

363 

364 Crea il file manifest in `my-plugin/.claude-plugin/plugin.json`:

365 

366 ```json my-plugin/.claude-plugin/plugin.json theme={null}

367 {

368 "name": "my-plugin",

369 "description": "Migrated from standalone configuration",

370 "version": "1.0.0"

371 }

372 ```

373 </Step>

374 

375 <Step title="Copia i tuoi file esistenti">

376 Copia le tue configurazioni esistenti nella directory del plugin:

377 

378 ```bash theme={null}

379 # Copy commands

380 cp -r .claude/commands my-plugin/

381 

382 # Copy agents (if any)

383 cp -r .claude/agents my-plugin/

384 

385 # Copy skills (if any)

386 cp -r .claude/skills my-plugin/

387 ```

388 </Step>

389 

390 <Step title="Migra gli hook">

391 Se hai hook nelle tue impostazioni, crea una directory hooks:

392 

393 ```bash theme={null}

394 mkdir my-plugin/hooks

395 ```

396 

397 Crea `my-plugin/hooks/hooks.json` con la tua configurazione degli hook. Copia l'oggetto `hooks` dal tuo `.claude/settings.json` o `settings.local.json`, poiché il formato è lo stesso. Il comando riceve l'input dell'hook come JSON su stdin, quindi usa `jq` per estrarre il percorso del file:

398 

399 ```json my-plugin/hooks/hooks.json theme={null}

400 {

401 "hooks": {

402 "PostToolUse": [

403 {

404 "matcher": "Write|Edit",

405 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]

406 }

407 ]

408 }

409 }

410 ```

411 </Step>

412 

413 <Step title="Testa il tuo plugin migrato">

414 Carica il tuo plugin per verificare che tutto funzioni:

415 

416 ```bash theme={null}

417 claude --plugin-dir ./my-plugin

418 ```

419 

420 Testa ogni componente: esegui i tuoi comandi, verifica che gli agents appaiano in `/agents` e verifica che gli hook si attivino correttamente.

421 </Step>

422</Steps>

423 

424### Cosa cambia durante la migrazione

425 

426| Standalone (`.claude/`) | Plugin |

427| :---------------------------------------------- | :--------------------------------------- |

428| Disponibile solo in un progetto | Può essere condiviso tramite marketplace |

429| File in `.claude/commands/` | File in `plugin-name/commands/` |

430| Hook in `settings.json` | Hook in `hooks/hooks.json` |

431| Deve essere copiato manualmente per condividere | Installa con `/plugin install` |

432 

433<Note>

434 Dopo la migrazione, puoi rimuovere i file originali da `.claude/` per evitare duplicati. La versione del plugin avrà la precedenza quando caricata.

435</Note>

436 

437## Prossimi passi

438 

439Ora che comprendi il sistema di plugin di Claude Code, ecco i percorsi suggeriti per diversi obiettivi:

440 

441### Per gli utenti di plugin

442 

443* [Scopri e installa plugin](/it/discover-plugins): sfoglia i marketplace e installa i plugin

444* [Configura marketplace del team](/it/discover-plugins#configure-team-marketplaces): configura plugin a livello di repository per il tuo team

445 

446### Per gli sviluppatori di plugin

447 

448* [Crea e distribuisci un marketplace](/it/plugin-marketplaces): pacchetto e condividi i tuoi plugin

449* [Riferimento plugin](/it/plugins-reference): specifiche tecniche complete

450* Approfondisci componenti specifici del plugin:

451 * [Skills](/it/skills): dettagli dello sviluppo dello skill

452 * [Subagents](/it/sub-agents): configurazione e capacità dell'agent

453 * [Hooks](/it/hooks): gestione degli eventi e automazione

454 * [MCP](/it/mcp): integrazione di strumenti esterni

plugins-reference.md +1011 −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# Riferimento dei plugin

6 

7> Riferimento tecnico completo per il sistema di plugin di Claude Code, inclusi schemi, comandi CLI e specifiche dei componenti.

8 

9<Tip>

10 Stai cercando di installare plugin? Vedi [Scopri e installa plugin](/it/discover-plugins). Per creare plugin, vedi [Plugin](/it/plugins). Per distribuire plugin, vedi [Marketplace dei plugin](/it/plugin-marketplaces).

11</Tip>

12 

13Questo riferimento fornisce specifiche tecniche complete per il sistema di plugin di Claude Code, inclusi schemi dei componenti, comandi CLI e strumenti di sviluppo.

14 

15Un **plugin** è una directory autonoma di componenti che estende Claude Code con funzionalità personalizzate. I componenti del plugin includono skills, agents, hooks, server MCP, server LSP e monitor.

16 

17## Riferimento dei componenti del plugin

18 

19### Skills

20 

21I plugin aggiungono skills a Claude Code, creando scorciatoie `/name` che Lei o Claude potete invocare.

22 

23**Posizione**: Directory `skills/` o `commands/` nella radice del plugin

24 

25**Formato file**: Le skills sono directory con `SKILL.md`; i comandi sono semplici file markdown

26 

27**Struttura della skill**:

28 

29```text theme={null}

30skills/

31├── pdf-processor/

32│ ├── SKILL.md

33│ ├── reference.md (opzionale)

34│ └── scripts/ (opzionale)

35└── code-reviewer/

36 └── SKILL.md

37```

38 

39**Comportamento dell'integrazione**:

40 

41* Le skills e i comandi vengono rilevati automaticamente quando il plugin viene installato

42* Claude può invocarli automaticamente in base al contesto dell'attività

43* Le skills possono includere file di supporto insieme a SKILL.md

44 

45Per i dettagli completi, vedi [Skills](/it/skills).

46 

47### Agents

48 

49I plugin possono fornire subagents specializzati per attività specifiche che Claude può invocare automaticamente quando appropriato.

50 

51**Posizione**: Directory `agents/` nella radice del plugin

52 

53**Formato file**: File markdown che descrivono le capacità dell'agent

54 

55**Struttura dell'agent**:

56 

57```markdown theme={null}

58---

59name: agent-name

60description: In cosa si specializza questo agent e quando Claude dovrebbe invocarlo

61model: sonnet

62effort: medium

63maxTurns: 20

64disallowedTools: Write, Edit

65---

66 

67Prompt di sistema dettagliato per l'agent che descrive il suo ruolo, competenza e comportamento.

68```

69 

70I plugin agents supportano i campi frontmatter `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background` e `isolation`. L'unico valore valido per `isolation` è `"worktree"`. Per motivi di sicurezza, `hooks`, `mcpServers` e `permissionMode` non sono supportati per gli agents forniti dai plugin.

71 

72**Punti di integrazione**:

73 

74* Gli agents appaiono nell'interfaccia `/agents`

75* Claude può invocare gli agents automaticamente in base al contesto dell'attività

76* Gli agents possono essere invocati manualmente dagli utenti

77* I plugin agents funzionano insieme agli agents Claude integrati

78 

79Per i dettagli completi, vedi [Subagents](/it/sub-agents).

80 

81### Hooks

82 

83I plugin possono fornire gestori di eventi che rispondono automaticamente agli eventi di Claude Code.

84 

85**Posizione**: `hooks/hooks.json` nella radice del plugin, o inline in plugin.json

86 

87**Formato**: Configurazione JSON con matcher di eventi e azioni

88 

89**Configurazione dell'hook**:

90 

91```json theme={null}

92{

93 "hooks": {

94 "PostToolUse": [

95 {

96 "matcher": "Write|Edit",

97 "hooks": [

98 {

99 "type": "command",

100 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format-code.sh"

101 }

102 ]

103 }

104 ]

105 }

106}

107```

108 

109I plugin hooks rispondono agli stessi eventi del ciclo di vita degli [hooks definiti dall'utente](/it/hooks):

110 

111| Event | When it fires |

112| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

113| `SessionStart` | When a session begins or resumes |

114| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

115| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

116| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

117| `PreToolUse` | Before a tool call executes. Can block it |

118| `PermissionRequest` | When a permission dialog appears |

119| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

120| `PostToolUse` | After a tool call succeeds |

121| `PostToolUseFailure` | After a tool call fails |

122| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

123| `Notification` | When Claude Code sends a notification |

124| `SubagentStart` | When a subagent is spawned |

125| `SubagentStop` | When a subagent finishes |

126| `TaskCreated` | When a task is being created via `TaskCreate` |

127| `TaskCompleted` | When a task is being marked as completed |

128| `Stop` | When Claude finishes responding |

129| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

130| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

131| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

132| `ConfigChange` | When a configuration file changes during a session |

133| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

134| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

135| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

136| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

137| `PreCompact` | Before context compaction |

138| `PostCompact` | After context compaction completes |

139| `Elicitation` | When an MCP server requests user input during a tool call |

140| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

141| `SessionEnd` | When a session terminates |

142 

143**Tipi di hook**:

144 

145* `command`: esegui comandi shell o script

146* `http`: invia l'evento JSON come richiesta POST a un URL

147* `mcp_tool`: chiama uno strumento su un server [MCP](/it/mcp) configurato

148* `prompt`: valuta un prompt con un LLM (usa il placeholder `$ARGUMENTS` per il contesto)

149* `agent`: esegui un verificatore agentico con strumenti per attività di verifica complesse

150 

151### MCP servers

152 

153I plugin possono raggruppare server Model Context Protocol (MCP) per connettere Claude Code con strumenti e servizi esterni.

154 

155**Posizione**: `.mcp.json` nella radice del plugin, o inline in plugin.json

156 

157**Formato**: Configurazione standard del server MCP

158 

159**Configurazione del server MCP**:

160 

161```json theme={null}

162{

163 "mcpServers": {

164 "plugin-database": {

165 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

166 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

167 "env": {

168 "DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"

169 }

170 },

171 "plugin-api-client": {

172 "command": "npx",

173 "args": ["@company/mcp-server", "--plugin-mode"],

174 "cwd": "${CLAUDE_PLUGIN_ROOT}"

175 }

176 }

177}

178```

179 

180**Comportamento dell'integrazione**:

181 

182* I server MCP del plugin si avviano automaticamente quando il plugin è abilitato

183* I server appaiono come strumenti MCP standard nel toolkit di Claude

184* Le capacità del server si integrano perfettamente con gli strumenti esistenti di Claude

185* I server del plugin possono essere configurati indipendentemente dai server MCP dell'utente

186 

187### LSP servers

188 

189<Tip>

190 Stai cercando di usare plugin LSP? Installali dal marketplace ufficiale: cerca "lsp" nella scheda Discover di `/plugin`. Questa sezione documenta come creare plugin LSP per linguaggi non coperti dal marketplace ufficiale.

191</Tip>

192 

193I plugin possono fornire server [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP) per dare a Claude intelligenza del codice in tempo reale mentre lavori sul tuo codebase.

194 

195L'integrazione LSP fornisce:

196 

197* **Diagnostica istantanea**: Claude vede errori e avvisi immediatamente dopo ogni modifica

198* **Navigazione del codice**: vai alla definizione, trova riferimenti e informazioni al passaggio del mouse

199* **Consapevolezza del linguaggio**: informazioni sul tipo e documentazione per i simboli del codice

200 

201**Posizione**: `.lsp.json` nella radice del plugin, o inline in `plugin.json`

202 

203**Formato**: Configurazione JSON che mappa i nomi dei server di linguaggio alle loro configurazioni

204 

205**Formato del file `.lsp.json`**:

206 

207```json theme={null}

208{

209 "go": {

210 "command": "gopls",

211 "args": ["serve"],

212 "extensionToLanguage": {

213 ".go": "go"

214 }

215 }

216}

217```

218 

219**Inline in `plugin.json`**:

220 

221```json theme={null}

222{

223 "name": "my-plugin",

224 "lspServers": {

225 "go": {

226 "command": "gopls",

227 "args": ["serve"],

228 "extensionToLanguage": {

229 ".go": "go"

230 }

231 }

232 }

233}

234```

235 

236**Campi obbligatori:**

237 

238| Campo | Descrizione |

239| :-------------------- | :------------------------------------------------------------ |

240| `command` | Il binario LSP da eseguire (deve essere in PATH) |

241| `extensionToLanguage` | Mappa le estensioni di file agli identificatori di linguaggio |

242 

243**Campi opzionali:**

244 

245| Campo | Descrizione |

246| :---------------------- | :---------------------------------------------------------------- |

247| `args` | Argomenti della riga di comando per il server LSP |

248| `transport` | Trasporto di comunicazione: `stdio` (predefinito) o `socket` |

249| `env` | Variabili di ambiente da impostare all'avvio del server |

250| `initializationOptions` | Opzioni passate al server durante l'inizializzazione |

251| `settings` | Impostazioni passate tramite `workspace/didChangeConfiguration` |

252| `workspaceFolder` | Percorso della cartella di lavoro per il server |

253| `startupTimeout` | Tempo massimo di attesa per l'avvio del server (millisecondi) |

254| `shutdownTimeout` | Tempo massimo di attesa per l'arresto graduale (millisecondi) |

255| `restartOnCrash` | Se riavviare automaticamente il server in caso di arresto anomalo |

256| `maxRestarts` | Numero massimo di tentativi di riavvio prima di rinunciare |

257 

258<Warning>

259 **Devi installare il binario del server di linguaggio separatamente.** I plugin LSP configurano come Claude Code si connette a un server di linguaggio, ma non includono il server stesso. Se vedi `Executable not found in $PATH` nella scheda Errors di `/plugin`, installa il binario richiesto per il tuo linguaggio.

260</Warning>

261 

262**Plugin LSP disponibili:**

263 

264| Plugin | Server di linguaggio | Comando di installazione |

265| :--------------- | :------------------------- | :---------------------------------------------------------------------------------------------- |

266| `pyright-lsp` | Pyright (Python) | `pip install pyright` o `npm install -g pyright` |

267| `typescript-lsp` | TypeScript Language Server | `npm install -g typescript-language-server typescript` |

268| `rust-lsp` | rust-analyzer | [Vedi installazione di rust-analyzer](https://rust-analyzer.github.io/manual.html#installation) |

269 

270Installa il server di linguaggio per primo, quindi installa il plugin dal marketplace.

271 

272### Monitors

273 

274I plugin possono dichiarare monitor in background che Claude Code avvia automaticamente quando il plugin è attivo. Ogni monitor esegue un comando shell per la durata della sessione e fornisce ogni riga stdout a Claude come notifica, in modo che Claude possa reagire alle voci di log, ai cambiamenti di stato o agli eventi sottoposti a polling senza essere chiesto di avviare il watch stesso.

275 

276I monitor dei plugin utilizzano lo stesso meccanismo dello [strumento Monitor](/it/tools-reference#monitor-tool) e condividono i suoi vincoli di disponibilità. Vengono eseguiti solo in sessioni CLI interattive, vengono eseguiti senza sandbox allo stesso livello di fiducia degli [hooks](#hooks) e vengono saltati su host in cui lo strumento Monitor non è disponibile.

277 

278<Note>

279 I monitor dei plugin richiedono Claude Code v2.1.105 o successivo.

280</Note>

281 

282**Posizione**: `monitors/monitors.json` nella radice del plugin, o inline in `plugin.json`

283 

284**Formato**: Array JSON di voci di monitor

285 

286Il seguente `monitors/monitors.json` monitora un endpoint di stato di distribuzione e un log di errore locale:

287 

288```json theme={null}

289[

290 {

291 "name": "deploy-status",

292 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/poll-deploy.sh ${user_config.api_endpoint}",

293 "description": "Deployment status changes"

294 },

295 {

296 "name": "error-log",

297 "command": "tail -F ./logs/error.log",

298 "description": "Application error log",

299 "when": "on-skill-invoke:debug"

300 }

301]

302```

303 

304Per dichiarare monitor inline, imposta la chiave `monitors` in `plugin.json` sullo stesso array. Per caricare da un percorso non predefinito, imposta `monitors` su una stringa di percorso relativo come `"./config/monitors.json"`.

305 

306**Campi obbligatori:**

307 

308| Campo | Descrizione |

309| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------ |

310| `name` | Identificatore univoco all'interno del plugin. Previene processi duplicati quando il plugin si ricarica o una skill viene invocata di nuovo |

311| `command` | Comando shell eseguito come processo in background persistente nella directory di lavoro della sessione |

312| `description` | Breve riepilogo di ciò che viene monitorato. Mostrato nel pannello attività e nei riepiloghi delle notifiche |

313 

314**Campi opzionali:**

315 

316| Campo | Descrizione |

317| :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

318| `when` | Controlla quando il monitor si avvia. `"always"` lo avvia all'avvio della sessione e al ricaricamento del plugin, ed è il predefinito. `"on-skill-invoke:<skill-name>"` lo avvia la prima volta che la skill denominata in questo plugin viene inviata |

319 

320Il valore `command` supporta le stesse [sostituzioni di variabili](#environment-variables) delle configurazioni dei server MCP e LSP: `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}`, `${user_config.*}` e qualsiasi `${ENV_VAR}` dall'ambiente. Prefissa il comando con `cd "${CLAUDE_PLUGIN_ROOT}" && ` se lo script ha bisogno di essere eseguito dalla directory del plugin stesso.

321 

322La disabilitazione di un plugin a metà sessione non interrompe i monitor già in esecuzione. Si interrompono quando la sessione termina.

323 

324### Themes

325 

326I plugin possono fornire temi di colore che appaiono in `/theme` insieme ai preset integrati e ai temi locali dell'utente. Un tema è un file JSON in `themes/` con un preset `base` e una mappa sparsa `overrides` di token di colore.

327 

328```json theme={null}

329{

330 "name": "Dracula",

331 "base": "dark",

332 "overrides": {

333 "claude": "#bd93f9",

334 "error": "#ff5555",

335 "success": "#50fa7b"

336 }

337}

338```

339 

340Selezionando un tema del plugin si persiste `custom:<plugin-name>:<slug>` nella configurazione dell'utente. I temi del plugin sono di sola lettura; premendo `Ctrl+E` su uno in `/theme` lo copia in `~/.claude/themes/` in modo che l'utente possa modificare la copia.

341 

342***

343 

344## Ambiti di installazione del plugin

345 

346Quando installi un plugin, scegli un **ambito** che determina dove il plugin è disponibile e chi altro può usarlo:

347 

348| Ambito | File di impostazioni | Caso d'uso |

349| :-------- | :-------------------------------------------------- | :------------------------------------------------------------- |

350| `user` | `~/.claude/settings.json` | Plugin personali disponibili in tutti i progetti (predefinito) |

351| `project` | `.claude/settings.json` | Plugin del team condivisi tramite controllo della versione |

352| `local` | `.claude/settings.local.json` | Plugin specifici del progetto, gitignored |

353| `managed` | [Impostazioni gestite](/it/settings#settings-files) | Plugin gestiti (sola lettura, solo aggiornamento) |

354 

355I plugin utilizzano lo stesso sistema di ambito di altre configurazioni di Claude Code. Per le istruzioni di installazione e i flag di ambito, vedi [Installa plugin](/it/discover-plugins#install-plugins). Per una spiegazione completa degli ambiti, vedi [Ambiti di configurazione](/it/settings#configuration-scopes).

356 

357***

358 

359## Schema del manifest del plugin

360 

361Il file `.claude-plugin/plugin.json` definisce i metadati e la configurazione del tuo plugin. Questa sezione documenta tutti i campi e le opzioni supportati.

362 

363Il manifest è opzionale. Se omesso, Claude Code scopre automaticamente i componenti nelle [posizioni predefinite](#file-locations-reference) e deriva il nome del plugin dal nome della directory. Usa un manifest quando hai bisogno di fornire metadati o percorsi di componenti personalizzati.

364 

365### Schema completo

366 

367```json theme={null}

368{

369 "name": "plugin-name",

370 "version": "1.2.0",

371 "description": "Brief plugin description",

372 "author": {

373 "name": "Author Name",

374 "email": "author@example.com",

375 "url": "https://github.com/author"

376 },

377 "homepage": "https://docs.example.com/plugin",

378 "repository": "https://github.com/author/plugin",

379 "license": "MIT",

380 "keywords": ["keyword1", "keyword2"],

381 "skills": "./custom/skills/",

382 "commands": ["./custom/commands/special.md"],

383 "agents": ["./custom/agents/reviewer.md"],

384 "hooks": "./config/hooks.json",

385 "mcpServers": "./mcp-config.json",

386 "outputStyles": "./styles/",

387 "themes": "./themes/",

388 "lspServers": "./.lsp.json",

389 "monitors": "./monitors.json",

390 "dependencies": [

391 "helper-lib",

392 { "name": "secrets-vault", "version": "~2.1.0" }

393 ]

394}

395```

396 

397### Campi obbligatori

398 

399Se includi un manifest, `name` è l'unico campo obbligatorio.

400 

401| Campo | Tipo | Descrizione | Esempio |

402| :----- | :----- | :----------------------------------------------- | :------------------- |

403| `name` | string | Identificatore univoco (kebab-case, senza spazi) | `"deployment-tools"` |

404 

405Questo nome viene utilizzato per lo spazio dei nomi dei componenti. Ad esempio, nell'interfaccia utente, l'agent `agent-creator` per il plugin con nome `plugin-dev` apparirà come `plugin-dev:agent-creator`.

406 

407### Campi di metadati

408 

409| Campo | Tipo | Descrizione | Esempio |

410| :------------ | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

411| `$schema` | string | URL dello schema JSON per l'autocompletamento dell'editor e la convalida. Claude Code ignora questo campo al momento del caricamento. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |

412| `version` | string | Opzionale. Versione semantica. L'impostazione di questo valore fissa il plugin a quella stringa di versione, quindi gli utenti ricevono aggiornamenti solo quando la modifichi. Se omesso, Claude Code ricade sulla SHA del commit git, quindi ogni commit viene trattato come una nuova versione. Se impostato anche nella voce del marketplace, `plugin.json` ha priorità. Vedi [Gestione delle versioni](#version-management). | `"2.1.0"` |

413| `description` | string | Breve spiegazione dello scopo del plugin | `"Deployment automation tools"` |

414| `author` | object | Informazioni sull'autore | `{"name": "Dev Team", "email": "dev@company.com"}` |

415| `homepage` | string | URL della documentazione | `"https://docs.example.com"` |

416| `repository` | string | URL del codice sorgente | `"https://github.com/user/plugin"` |

417| `license` | string | Identificatore della licenza | `"MIT"`, `"Apache-2.0"` |

418| `keywords` | array | Tag di scoperta | `["deployment", "ci-cd"]` |

419 

420### Campi del percorso del componente

421 

422| Campo | Tipo | Descrizione | Esempio |

423| :------------- | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

424| `skills` | string\|array | Directory di skills personalizzate contenenti `<name>/SKILL.md` (sostituisce il valore predefinito `skills/`) | `"./custom/skills/"` |

425| `commands` | string\|array | File di skill markdown flat personalizzati o directory (sostituisce il valore predefinito `commands/`) | `"./custom/cmd.md"` o `["./cmd1.md"]` |

426| `agents` | string\|array | File di agent personalizzati (sostituisce il valore predefinito `agents/`) | `"./custom/agents/reviewer.md"` |

427| `hooks` | string\|array\|object | Percorsi di configurazione degli hooks o configurazione inline | `"./my-extra-hooks.json"` |

428| `mcpServers` | string\|array\|object | Percorsi di configurazione MCP o configurazione inline | `"./my-extra-mcp-config.json"` |

429| `outputStyles` | string\|array | File/directory di stili di output personalizzati (sostituisce il valore predefinito `output-styles/`) | `"./styles/"` |

430| `themes` | string\|array | File/directory di temi di colore (sostituisce il valore predefinito `themes/`). Vedi [Themes](#themes) | `"./themes/"` |

431| `lspServers` | string\|array\|object | Configurazioni [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) per l'intelligenza del codice (vai alla definizione, trova riferimenti, ecc.) | `"./.lsp.json"` |

432| `monitors` | string\|array | Configurazioni di [Monitor](/it/tools-reference#monitor-tool) in background che si avviano automaticamente quando il plugin è attivo. Vedi [Monitors](#monitors) | `"./monitors.json"` |

433| `userConfig` | object | Valori configurabili dall'utente richiesti al momento dell'abilitazione. Vedi [Configurazione utente](#user-configuration) | Vedi sotto |

434| `channels` | array | Dichiarazioni di canale per l'iniezione di messaggi (stile Telegram, Slack, Discord). Vedi [Channels](#channels) | Vedi sotto |

435| `dependencies` | array | Altri plugin richiesti da questo plugin, facoltativamente con vincoli di versione semver. Vedi [Vincola le versioni delle dipendenze del plugin](/it/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

436 

437### Configurazione utente

438 

439Il campo `userConfig` dichiara i valori per i quali Claude Code chiede all'utente quando il plugin è abilitato. Usa questo invece di richiedere agli utenti di modificare manualmente `settings.json`.

440 

441```json theme={null}

442{

443 "userConfig": {

444 "api_endpoint": {

445 "type": "string",

446 "title": "API endpoint",

447 "description": "Your team's API endpoint"

448 },

449 "api_token": {

450 "type": "string",

451 "title": "API token",

452 "description": "API authentication token",

453 "sensitive": true

454 }

455 }

456}

457```

458 

459Le chiavi devono essere identificatori validi. Ogni opzione supporta questi campi:

460 

461| Campo | Obbligatorio | Descrizione |

462| :------------ | :----------- | :--------------------------------------------------------------------------------------------------- |

463| `type` | Sì | Uno di `string`, `number`, `boolean`, `directory`, o `file` |

464| `title` | Sì | Etichetta mostrata nella finestra di dialogo di configurazione |

465| `description` | Sì | Testo di aiuto mostrato sotto il campo |

466| `sensitive` | No | Se `true`, maschera l'input e archivia il valore nell'archiviazione sicura invece di `settings.json` |

467| `required` | No | Se `true`, la convalida non riesce quando il campo è vuoto |

468| `default` | No | Valore utilizzato quando l'utente non fornisce nulla |

469| `multiple` | No | Per il tipo `string`, consenti un array di stringhe |

470| `min` / `max` | No | Limiti per il tipo `number` |

471 

472Ogni valore è disponibile per la sostituzione come `${user_config.KEY}` nelle configurazioni dei server MCP e LSP, nei comandi degli hooks, nei comandi dei monitor e nel contenuto delle skills e degli agents (solo per i valori non sensibili). Tutti i valori vengono esportati ai sottoprocessi del plugin come variabili di ambiente `CLAUDE_PLUGIN_OPTION_<KEY>`.

473 

474I valori non sensibili vengono archiviati in `settings.json` sotto `pluginConfigs[<plugin-id>].options`. I valori sensibili vanno al portachiavi di sistema (o `~/.claude/.credentials.json` dove il portachiavi non è disponibile). L'archiviazione del portachiavi è condivisa con i token OAuth e ha un limite totale approssimativo di 2 KB, quindi mantieni i valori sensibili piccoli.

475 

476### Channels

477 

478Il campo `channels` consente a un plugin di dichiarare uno o più canali di messaggi che iniettano contenuto nella conversazione. Ogni canale si associa a un server MCP fornito dal plugin.

479 

480```json theme={null}

481{

482 "channels": [

483 {

484 "server": "telegram",

485 "userConfig": {

486 "bot_token": {

487 "type": "string",

488 "title": "Bot token",

489 "description": "Telegram bot token",

490 "sensitive": true

491 },

492 "owner_id": {

493 "type": "string",

494 "title": "Owner ID",

495 "description": "Your Telegram user ID"

496 }

497 }

498 }

499 ]

500}

501```

502 

503Il campo `server` è obbligatorio e deve corrispondere a una chiave in `mcpServers` del plugin. Il `userConfig` facoltativo per canale utilizza lo stesso schema del campo di livello superiore, consentendo al plugin di richiedere token bot o ID proprietario quando il plugin è abilitato.

504 

505### Regole del comportamento del percorso

506 

507Per `skills`, `commands`, `agents`, `outputStyles`, `themes` e `monitors`, un percorso personalizzato sostituisce il valore predefinito. Se il manifest specifica `skills`, la directory predefinita `skills/` non viene scansionata; se specifica `monitors`, il valore predefinito `monitors/monitors.json` non viene caricato. [Hooks](#hooks), [MCP servers](#mcp-servers) e [LSP servers](#lsp-servers) hanno semantica diversa per gestire più fonti.

508 

509* Tutti i percorsi devono essere relativi alla radice del plugin e iniziare con `./`

510* I componenti dai percorsi personalizzati utilizzano le stesse regole di denominazione e spazio dei nomi

511* È possibile specificare più percorsi come array

512* Per mantenere la directory predefinita e aggiungere più percorsi per skills, commands, agents o output styles, includi il valore predefinito nel tuo array: `"skills": ["./skills/", "./extras/"]`

513* Quando un percorso di skill punta a una directory che contiene direttamente un `SKILL.md`, ad esempio `"skills": ["./"]` che punta alla radice del plugin, il campo frontmatter `name` in `SKILL.md` determina il nome di invocazione della skill. Questo fornisce un nome stabile indipendentemente dalla directory di installazione. Se `name` non è impostato nel frontmatter, il nome della directory viene utilizzato come fallback.

514 

515**Esempi di percorso**:

516 

517```json theme={null}

518{

519 "commands": [

520 "./specialized/deploy.md",

521 "./utilities/batch-process.md"

522 ],

523 "agents": [

524 "./custom-agents/reviewer.md",

525 "./custom-agents/tester.md"

526 ]

527}

528```

529 

530### Variabili di ambiente

531 

532Claude Code fornisce due variabili per fare riferimento ai percorsi del plugin. Entrambe vengono sostituite inline ovunque appaiano nel contenuto delle skills, nel contenuto degli agents, nei comandi degli hooks, nei comandi dei monitor e nelle configurazioni dei server MCP o LSP. Entrambe vengono anche esportate come variabili di ambiente ai processi degli hooks e ai sottoprocessi dei server MCP o LSP.

533 

534**`${CLAUDE_PLUGIN_ROOT}`**: il percorso assoluto della directory di installazione del tuo plugin. Usalo per fare riferimento a script, binari e file di configurazione forniti con il plugin. Questo percorso cambia quando il plugin viene aggiornato, quindi i file che scrivi qui non sopravvivono a un aggiornamento.

535 

536**`${CLAUDE_PLUGIN_DATA}`**: una directory persistente per lo stato del plugin che sopravvive agli aggiornamenti. Usalo per le dipendenze installate come `node_modules` o ambienti virtuali Python, codice generato, cache e qualsiasi altro file che dovrebbe persistere tra le versioni del plugin. La directory viene creata automaticamente la prima volta che questa variabile viene referenziata.

537 

538```json theme={null}

539{

540 "hooks": {

541 "PostToolUse": [

542 {

543 "hooks": [

544 {

545 "type": "command",

546 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/process.sh"

547 }

548 ]

549 }

550 ]

551 }

552}

553```

554 

555#### Directory di dati persistenti

556 

557La directory `${CLAUDE_PLUGIN_DATA}` si risolve in `~/.claude/plugins/data/{id}/`, dove `{id}` è l'identificatore del plugin con caratteri al di fuori di `a-z`, `A-Z`, `0-9`, `_` e `-` sostituiti da `-`. Per un plugin installato come `formatter@my-marketplace`, la directory è `~/.claude/plugins/data/formatter-my-marketplace/`.

558 

559Un uso comune è installare le dipendenze del linguaggio una volta e riutilizzarle tra le sessioni e gli aggiornamenti del plugin. Poiché la directory dei dati sopravvive a qualsiasi singola versione del plugin, un controllo dell'esistenza della directory da solo non può rilevare quando un aggiornamento cambia il manifest delle dipendenze del plugin. Il modello consigliato confronta il manifest fornito con una copia nella directory dei dati e reinstalla quando differiscono.

560 

561Questo hook `SessionStart` installa `node_modules` alla prima esecuzione e di nuovo ogni volta che un aggiornamento del plugin include un `package.json` modificato:

562 

563```json theme={null}

564{

565 "hooks": {

566 "SessionStart": [

567 {

568 "hooks": [

569 {

570 "type": "command",

571 "command": "diff -q \"${CLAUDE_PLUGIN_ROOT}/package.json\" \"${CLAUDE_PLUGIN_DATA}/package.json\" >/dev/null 2>&1 || (cd \"${CLAUDE_PLUGIN_DATA}\" && cp \"${CLAUDE_PLUGIN_ROOT}/package.json\" . && npm install) || rm -f \"${CLAUDE_PLUGIN_DATA}/package.json\""

572 }

573 ]

574 }

575 ]

576 }

577}

578```

579 

580Il `diff` esce con codice diverso da zero quando la copia archiviata è mancante o differisce da quella fornita, coprendo sia la prima esecuzione che gli aggiornamenti che cambiano le dipendenze. Se `npm install` non riesce, il trailing `rm` rimuove il manifest copiato in modo che la prossima sessione riprovi.

581 

582Gli script forniti in `${CLAUDE_PLUGIN_ROOT}` possono quindi essere eseguiti contro il `node_modules` persistente:

583 

584```json theme={null}

585{

586 "mcpServers": {

587 "routines": {

588 "command": "node",

589 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

590 "env": {

591 "NODE_PATH": "${CLAUDE_PLUGIN_DATA}/node_modules"

592 }

593 }

594 }

595}

596```

597 

598La directory dei dati viene eliminata automaticamente quando disinstalli il plugin dall'ultimo ambito in cui è installato. L'interfaccia `/plugin` mostra la dimensione della directory e chiede conferma prima di eliminare. La CLI elimina per impostazione predefinita; passa [`--keep-data`](#plugin-uninstall) per preservarla.

599 

600***

601 

602## Caching del plugin e risoluzione dei file

603 

604I plugin vengono specificati in uno di due modi:

605 

606* Tramite `claude --plugin-dir`, per la durata di una sessione.

607* Tramite un marketplace, installato per sessioni future.

608 

609Per motivi di sicurezza e verifica, Claude Code copia i plugin del *marketplace* nella **cache dei plugin** locale dell'utente (`~/.claude/plugins/cache`) piuttosto che usarli sul posto. Comprendere questo comportamento è importante quando si sviluppano plugin che fanno riferimento a file esterni.

610 

611Ogni versione installata è una directory separata nella cache. Quando aggiorni o disinstalli un plugin, la directory della versione precedente viene contrassegnata come orfana e rimossa automaticamente 7 giorni dopo. Il periodo di grazia consente alle sessioni di Claude Code concorrenti che hanno già caricato la versione precedente di continuare a funzionare senza errori.

612 

613Gli strumenti Glob e Grep di Claude saltano le directory delle versioni orfane durante le ricerche, quindi i risultati dei file non includono il codice del plugin obsoleto.

614 

615### Limitazioni dell'attraversamento dei percorsi

616 

617I plugin installati non possono fare riferimento a file al di fuori della loro directory. I percorsi che attraversano al di fuori della radice del plugin (come `../shared-utils`) non funzioneranno dopo l'installazione perché questi file esterni non vengono copiati nella cache.

618 

619### Lavorare con dipendenze esterne

620 

621Se il tuo plugin ha bisogno di accedere a file al di fuori della sua directory, puoi creare link simbolici a file esterni all'interno della directory del tuo plugin. I symlink vengono preservati nella cache piuttosto che dereferenziati e si risolvono al loro target in fase di esecuzione. Il seguente comando crea un link dall'interno della directory del tuo plugin a una posizione di utilità condivise:

622 

623```bash theme={null}

624ln -s /path/to/shared-utils ./shared-utils

625```

626 

627Questo fornisce flessibilità mantenendo i vantaggi di sicurezza del sistema di caching.

628 

629***

630 

631## Struttura della directory del plugin

632 

633### Layout standard del plugin

634 

635Un plugin completo segue questa struttura:

636 

637```text theme={null}

638enterprise-plugin/

639├── .claude-plugin/ # Directory dei metadati (opzionale)

640│ └── plugin.json # manifest del plugin

641├── skills/ # Skills

642│ ├── code-reviewer/

643│ │ └── SKILL.md

644│ └── pdf-processor/

645│ ├── SKILL.md

646│ └── scripts/

647├── commands/ # Skills come file markdown flat

648│ ├── status.md

649│ └── logs.md

650├── agents/ # Definizioni dei subagent

651│ ├── security-reviewer.md

652│ ├── performance-tester.md

653│ └── compliance-checker.md

654├── output-styles/ # Definizioni dello stile di output

655│ └── terse.md

656├── themes/ # Definizioni del tema colore

657│ └── dracula.json

658├── monitors/ # Configurazioni dei monitor in background

659│ └── monitors.json

660├── hooks/ # Configurazioni degli hook

661│ ├── hooks.json # Configurazione principale degli hook

662│ └── security-hooks.json # Hook aggiuntivi

663├── bin/ # Eseguibili del plugin aggiunti a PATH

664│ └── my-tool # Invocabile come comando bare nello strumento Bash

665├── settings.json # Impostazioni predefinite per il plugin

666├── .mcp.json # Definizioni del server MCP

667├── .lsp.json # Configurazioni del server LSP

668├── scripts/ # Script degli hook e utilità

669│ ├── security-scan.sh

670│ ├── format-code.py

671│ └── deploy.js

672├── LICENSE # File di licenza

673└── CHANGELOG.md # Cronologia delle versioni

674```

675 

676<Warning>

677 La directory `.claude-plugin/` contiene il file `plugin.json`. Tutte le altre directory (commands/, agents/, skills/, output-styles/, themes/, monitors/, hooks/) devono essere nella radice del plugin, non all'interno di `.claude-plugin/`.

678</Warning>

679 

680### Riferimento delle posizioni dei file

681 

682| Componente | Posizione predefinita | Scopo |

683| :---------------- | :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

684| **Manifest** | `.claude-plugin/plugin.json` | Metadati e configurazione del plugin (opzionale) |

685| **Skills** | `skills/` | Skills con struttura `<name>/SKILL.md` |

686| **Commands** | `commands/` | Skills come file Markdown flat. Usa `skills/` per i nuovi plugin |

687| **Agents** | `agents/` | File Markdown del subagent |

688| **Output styles** | `output-styles/` | Definizioni dello stile di output |

689| **Themes** | `themes/` | Definizioni del tema colore |

690| **Hooks** | `hooks/hooks.json` | Configurazione degli hook |

691| **MCP servers** | `.mcp.json` | Definizioni del server MCP |

692| **LSP servers** | `.lsp.json` | Configurazioni del server di linguaggio |

693| **Monitors** | `monitors/monitors.json` | Configurazioni dei monitor in background |

694| **Executables** | `bin/` | Eseguibili aggiunti al `PATH` dello strumento Bash. I file qui sono invocabili come comandi bare in qualsiasi chiamata dello strumento Bash mentre il plugin è abilitato |

695| **Settings** | `settings.json` | Configurazione predefinita applicata quando il plugin è abilitato. Attualmente sono supportate solo le chiavi [`agent`](/it/sub-agents) e [`subagentStatusLine`](/it/statusline#subagent-status-lines) |

696 

697***

698 

699## Riferimento dei comandi CLI

700 

701Claude Code fornisce comandi CLI per la gestione non interattiva dei plugin, utile per scripting e automazione.

702 

703### plugin install

704 

705Installa un plugin dai marketplace disponibili.

706 

707```bash theme={null}

708claude plugin install <plugin> [options]

709```

710 

711**Argomenti:**

712 

713* `<plugin>`: Nome del plugin o `plugin-name@marketplace-name` per un marketplace specifico

714 

715**Opzioni:**

716 

717| Opzione | Descrizione | Predefinito |

718| :-------------------- | :---------------------------------------------------- | :---------- |

719| `-s, --scope <scope>` | Ambito di installazione: `user`, `project`, o `local` | `user` |

720| `-h, --help` | Visualizza la guida per il comando | |

721 

722L'ambito determina quale file di impostazioni viene aggiunto al plugin installato. Ad esempio, `--scope project` scrive in `enabledPlugins` in .claude/settings.json, rendendo il plugin disponibile a tutti coloro che clonano il repository del progetto.

723 

724**Esempi:**

725 

726```bash theme={null}

727# Installa nell'ambito utente (predefinito)

728claude plugin install formatter@my-marketplace

729 

730# Installa nell'ambito del progetto (condiviso con il team)

731claude plugin install formatter@my-marketplace --scope project

732 

733# Installa nell'ambito locale (gitignored)

734claude plugin install formatter@my-marketplace --scope local

735```

736 

737### plugin uninstall

738 

739Rimuovi un plugin installato.

740 

741```bash theme={null}

742claude plugin uninstall <plugin> [options]

743```

744 

745**Argomenti:**

746 

747* `<plugin>`: Nome del plugin o `plugin-name@marketplace-name`

748 

749**Opzioni:**

750 

751| Opzione | Descrizione | Predefinito |

752| :-------------------- | :--------------------------------------------------------------------------------------------------------------- | :---------- |

753| `-s, --scope <scope>` | Disinstalla dall'ambito: `user`, `project`, o `local` | `user` |

754| `--keep-data` | Preserva la [directory di dati persistenti](#persistent-data-directory) del plugin | |

755| `--prune` | Rimuovi anche le dipendenze auto-installate che nessun altro plugin richiede. Vedi [plugin prune](#plugin-prune) | |

756| `-y, --yes` | Salta il prompt di conferma `--prune`. Richiesto quando stdin non è un TTY | |

757| `-h, --help` | Visualizza la guida per il comando | |

758 

759**Alias:** `remove`, `rm`

760 

761Per impostazione predefinita, la disinstallazione dall'ultimo ambito rimanente elimina anche la directory `${CLAUDE_PLUGIN_DATA}` del plugin. Usa `--keep-data` per preservarla, ad esempio quando reinstalli dopo aver testato una nuova versione.

762 

763### plugin prune

764 

765Rimuovi le dipendenze auto-installate dei plugin che non sono più richieste da nessun plugin installato. Le dipendenze che Claude Code ha incluso per soddisfare il campo [`dependencies`](/it/plugin-dependencies) di un altro plugin vengono rimosse; i plugin che hai installato direttamente non vengono mai toccati.

766 

767```bash theme={null}

768claude plugin prune [options]

769```

770 

771**Opzioni:**

772 

773| Opzione | Descrizione | Predefinito |

774| :-------------------- | :--------------------------------------------------------------- | :---------- |

775| `-s, --scope <scope>` | Pulisci all'ambito: `user`, `project`, o `local` | `user` |

776| `--dry-run` | Elenca cosa verrebbe rimosso senza rimuovere nulla | |

777| `-y, --yes` | Salta il prompt di conferma. Richiesto quando stdin non è un TTY | |

778| `-h, --help` | Visualizza la guida per il comando | |

779 

780**Alias:** `autoremove`

781 

782Il comando elenca le dipendenze orfane e chiede conferma prima di rimuoverle. Per rimuovere un plugin e pulire le sue dipendenze in un unico passaggio, esegui `claude plugin uninstall <plugin> --prune`.

783 

784<Note>

785 `claude plugin prune` richiede Claude Code v2.1.121 o successivo.

786</Note>

787 

788### plugin enable

789 

790Abilita un plugin disabilitato.

791 

792```bash theme={null}

793claude plugin enable <plugin> [options]

794```

795 

796**Argomenti:**

797 

798* `<plugin>`: Nome del plugin o `plugin-name@marketplace-name`

799 

800**Opzioni:**

801 

802| Opzione | Descrizione | Predefinito |

803| :-------------------- | :------------------------------------------------ | :---------- |

804| `-s, --scope <scope>` | Ambito da abilitare: `user`, `project`, o `local` | `user` |

805| `-h, --help` | Visualizza la guida per il comando | |

806 

807### plugin disable

808 

809Disabilita un plugin senza disinstallarlo.

810 

811```bash theme={null}

812claude plugin disable <plugin> [options]

813```

814 

815**Argomenti:**

816 

817* `<plugin>`: Nome del plugin o `plugin-name@marketplace-name`

818 

819**Opzioni:**

820 

821| Opzione | Descrizione | Predefinito |

822| :-------------------- | :--------------------------------------------------- | :---------- |

823| `-s, --scope <scope>` | Ambito da disabilitare: `user`, `project`, o `local` | `user` |

824| `-h, --help` | Visualizza la guida per il comando | |

825 

826### plugin update

827 

828Aggiorna un plugin all'ultima versione.

829 

830```bash theme={null}

831claude plugin update <plugin> [options]

832```

833 

834**Argomenti:**

835 

836* `<plugin>`: Nome del plugin o `plugin-name@marketplace-name`

837 

838**Opzioni:**

839 

840| Opzione | Descrizione | Predefinito |

841| :-------------------- | :------------------------------------------------------------ | :---------- |

842| `-s, --scope <scope>` | Ambito da aggiornare: `user`, `project`, `local`, o `managed` | `user` |

843| `-h, --help` | Visualizza la guida per il comando | |

844 

845***

846 

847### plugin list

848 

849Elenca i plugin installati con la loro versione, marketplace di origine e stato di abilitazione.

850 

851```bash theme={null}

852claude plugin list [options]

853```

854 

855**Opzioni:**

856 

857| Opzione | Descrizione | Predefinito |

858| :------------ | :------------------------------------------------------------ | :---------- |

859| `--json` | Output come JSON | |

860| `--available` | Includi plugin disponibili dai marketplace. Richiede `--json` | |

861| `-h, --help` | Visualizza la guida per il comando | |

862 

863### plugin tag

864 

865Crea un tag git di rilascio per il plugin nella directory corrente. Esegui dall'interno della cartella del plugin. Vedi [Tag plugin releases](/it/plugin-dependencies#tag-plugin-releases-for-version-resolution).

866 

867```bash theme={null}

868claude plugin tag [options]

869```

870 

871**Opzioni:**

872 

873| Opzione | Descrizione | Predefinito |

874| :------------ | :------------------------------------------------------------------- | :---------- |

875| `--push` | Esegui il push del tag al repository remoto dopo averlo creato | |

876| `--dry-run` | Stampa cosa verrebbe taggato senza creare il tag | |

877| `-f, --force` | Crea il tag anche se l'albero di lavoro è sporco o il tag esiste già | |

878| `-h, --help` | Visualizza la guida per il comando | |

879 

880***

881 

882## Strumenti di debug e sviluppo

883 

884### Comandi di debug

885 

886Usa `claude --debug` per vedere i dettagli del caricamento del plugin:

887 

888Questo mostra:

889 

890* Quali plugin vengono caricati

891* Eventuali errori nei manifest del plugin

892* Registrazione di skill, agent e hook

893* Inizializzazione del server MCP

894 

895### Problemi comuni

896 

897| Problema | Causa | Soluzione |

898| :---------------------------------- | :---------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

899| Plugin non caricato | `plugin.json` non valido | Esegui `claude plugin validate` o `/plugin validate` per controllare `plugin.json`, il frontmatter di skill/agent/command e `hooks/hooks.json` per errori di sintassi e schema |

900| Skills non visualizzate | Struttura della directory errata | Assicurati che `skills/` o `commands/` sia alla radice del plugin, non all'interno di `.claude-plugin/` |

901| Hooks non attivati | Script non eseguibile | Esegui `chmod +x script.sh` |

902| Server MCP non riesce | `${CLAUDE_PLUGIN_ROOT}` mancante | Usa la variabile per tutti i percorsi del plugin |

903| Errori di percorso | Percorsi assoluti utilizzati | Tutti i percorsi devono essere relativi e iniziare con `./` |

904| LSP `Executable not found in $PATH` | Server di linguaggio non installato | Installa il binario (ad es., `npm install -g typescript-language-server typescript`) |

905 

906### Messaggi di errore di esempio

907 

908**Errori di convalida del manifest**:

909 

910* `Invalid JSON syntax: Unexpected token } in JSON at position 142`: controlla la mancanza di virgole, virgole extra o stringhe non quotate

911* `Plugin has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Required`: un campo obbligatorio è mancante

912* `Plugin has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...`: errore di sintassi JSON

913 

914**Errori di caricamento del plugin**:

915 

916* `Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.`: il percorso del comando esiste ma non contiene file di comando validi

917* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.`: il percorso `source` in marketplace.json punta a una directory inesistente

918* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.`: rimuovi le definizioni di componenti duplicate o rimuovi `strict: false` nella voce del marketplace

919 

920### Risoluzione dei problemi degli hook

921 

922**Script dell'hook non in esecuzione**:

923 

9241. Controlla che lo script sia eseguibile: `chmod +x ./scripts/your-script.sh`

9252. Verifica la riga shebang: La prima riga dovrebbe essere `#!/bin/bash` o `#!/usr/bin/env bash`

9263. Controlla che il percorso usi `${CLAUDE_PLUGIN_ROOT}`: `"command": "${CLAUDE_PLUGIN_ROOT}/scripts/your-script.sh"`

9274. Testa lo script manualmente: `./scripts/your-script.sh`

928 

929**Hook non attivato su eventi previsti**:

930 

9311. Verifica che il nome dell'evento sia corretto (sensibile alle maiuscole): `PostToolUse`, non `postToolUse`

9322. Controlla che il pattern del matcher corrisponda ai tuoi tool: `"matcher": "Write|Edit"` per le operazioni sui file

9333. Conferma che il tipo di hook sia valido: `command`, `http`, `mcp_tool`, `prompt`, o `agent`

934 

935### Risoluzione dei problemi del server MCP

936 

937**Server non si avvia**:

938 

9391. Controlla che il comando esista e sia eseguibile

9402. Verifica che tutti i percorsi utilizzino la variabile `${CLAUDE_PLUGIN_ROOT}`

9413. Controlla i log del server MCP: `claude --debug` mostra gli errori di inizializzazione

9424. Testa il server manualmente al di fuori di Claude Code

943 

944**Strumenti del server non visualizzati**:

945 

9461. Assicurati che il server sia configurato correttamente in `.mcp.json` o `plugin.json`

9472. Verifica che il server implementi correttamente il protocollo MCP

9483. Controlla i timeout di connessione nell'output di debug

949 

950### Errori di struttura della directory

951 

952**Sintomi**: Il plugin si carica ma i componenti (skills, agents, hooks) sono mancanti.

953 

954**Struttura corretta**: I componenti devono essere nella radice del plugin, non all'interno di `.claude-plugin/`. Solo `plugin.json` appartiene a `.claude-plugin/`.

955 

956```text theme={null}

957my-plugin/

958├── .claude-plugin/

959│ └── plugin.json ← Solo manifest qui

960├── commands/ ← A livello di radice

961├── agents/ ← A livello di radice

962└── hooks/ ← A livello di radice

963```

964 

965Se i tuoi componenti sono all'interno di `.claude-plugin/`, spostali nella radice del plugin.

966 

967**Checklist di debug**:

968 

9691. Esegui `claude --debug` e cerca i messaggi "loading plugin"

9702. Controlla che ogni directory di componenti sia elencata nell'output di debug

9713. Verifica che i permessi dei file consentano la lettura dei file del plugin

972 

973***

974 

975## Riferimento di distribuzione e versioning

976 

977### Gestione della versione

978 

979Claude Code utilizza la versione del plugin come chiave di cache che determina se un aggiornamento è disponibile. Quando esegui `/plugin update` o l'aggiornamento automatico si attiva, Claude Code calcola la versione corrente e salta l'aggiornamento se corrisponde a quella già installata.

980 

981La versione viene risolta dal primo di questi che è impostato:

982 

9831. Il campo `version` nel `plugin.json` del plugin

9842. Il campo `version` nella voce del marketplace del plugin in `marketplace.json`

9853. Lo SHA del commit git del plugin, per le fonti `github`, `url`, `git-subdir` e relative-path in un marketplace ospitato su git

9864. `unknown`, per le fonti `npm` o le directory locali non all'interno di un repository git

987 

988Questo ti offre due modi per versionare un plugin:

989 

990| Approccio | Come | Comportamento dell'aggiornamento | Migliore per |

991| :---------------------- | :------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------- |

992| **Versione esplicita** | Imposta `"version": "2.1.0"` in `plugin.json` | Gli utenti ricevono aggiornamenti solo quando aumenti questo campo. Spingere nuovi commit senza aumentarlo non ha effetto, e `/plugin update` segnala "already at the latest version". | Plugin pubblicati con cicli di rilascio stabili |

993| **Versione Commit-SHA** | Ometti `version` sia da `plugin.json` che dalla voce del marketplace | Gli utenti ricevono aggiornamenti ad ogni nuovo commit alla fonte git del plugin | Plugin interni o di team in sviluppo attivo |

994 

995<Warning>

996 Se imposti `version` in `plugin.json`, devi aumentarlo ogni volta che desideri che gli utenti ricevano le modifiche. Spingere nuovi commit da solo non è sufficiente, perché Claude Code vede la stessa stringa di versione e mantiene la copia in cache. Se stai iterando rapidamente, lascia `version` non impostato in modo che lo SHA del commit git venga utilizzato invece.

997</Warning>

998 

999Se utilizzi versioni esplicite, segui il [versionamento semantico](https://semver.org) (`MAJOR.MINOR.PATCH`): aumenta MAJOR per modifiche di rilievo, MINOR per nuove funzionalità, PATCH per correzioni di bug. Documenta le modifiche in un `CHANGELOG.md`.

1000 

1001***

1002 

1003## Vedi anche

1004 

1005* [Plugin](/it/plugins) - Tutorial e utilizzo pratico

1006* [Marketplace dei plugin](/it/plugin-marketplaces) - Creazione e gestione dei marketplace

1007* [Skills](/it/skills) - Dettagli dello sviluppo delle skill

1008* [Subagents](/it/sub-agents) - Configurazione e capacità dell'agent

1009* [Hooks](/it/hooks) - Gestione degli eventi e automazione

1010* [MCP](/it/mcp) - Integrazione di strumenti esterni

1011* [Impostazioni](/it/settings) - Opzioni di configurazione per i plugin

quickstart.md +976 −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# Guida rapida

6 

7> Benvenuto in Claude Code!

8 

9export const InstallConfigurator = ({defaultSurface = 'terminal'}) => {

10 const TERM = {

11 mac: {

12 label: 'macOS / Linux',

13 cmd: 'curl -fsSL https://claude.ai/install.sh | bash'

14 },

15 win: {

16 label: 'Windows'

17 },

18 brew: {

19 label: 'Homebrew',

20 cmd: 'brew install --cask claude-code'

21 },

22 winget: {

23 label: 'WinGet',

24 cmd: 'winget install Anthropic.ClaudeCode'

25 }

26 };

27 const WIN_VARIANTS = {

28 ps: 'irm https://claude.ai/install.ps1 | iex',

29 cmd: 'curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd'

30 };

31 const TABS = [{

32 key: 'terminal',

33 label: 'Terminal'

34 }, {

35 key: 'desktop',

36 label: 'Desktop'

37 }, {

38 key: 'vscode',

39 label: 'VS Code'

40 }, {

41 key: 'jetbrains',

42 label: 'JetBrains'

43 }];

44 const ALT_TARGETS = {

45 desktop: {

46 name: 'Desktop',

47 tagline: 'The full agent in a native app for macOS and Windows.',

48 installLabel: 'Download the app',

49 installHref: 'https://claude.com/download?utm_source=claude_code&utm_medium=docs&utm_content=configurator_desktop_download',

50 guideHref: '/en/desktop-quickstart'

51 },

52 vscode: {

53 name: 'VS Code',

54 tagline: 'Review diffs, manage context, and chat without leaving your editor.',

55 installLabel: 'Install from Marketplace',

56 installHref: 'https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code',

57 altCmd: 'code --install-extension anthropic.claude-code',

58 guideHref: '/en/vs-code'

59 },

60 jetbrains: {

61 name: 'JetBrains',

62 tagline: 'Native plugin for IntelliJ, PyCharm, WebStorm, and other JetBrains IDEs.',

63 installLabel: 'Install from Marketplace',

64 installHref: 'https://plugins.jetbrains.com/plugin/27310-claude-code-beta-',

65 guideHref: '/en/jetbrains'

66 }

67 };

68 const PROVIDERS = [{

69 key: 'anthropic',

70 label: 'Anthropic'

71 }, {

72 key: 'bedrock',

73 label: 'Amazon Bedrock'

74 }, {

75 key: 'foundry',

76 label: 'Microsoft Foundry'

77 }, {

78 key: 'vertex',

79 label: 'Google Vertex AI'

80 }];

81 const PROVIDER_NOTICE = {

82 bedrock: <>

83 <strong>Configure your AWS account first.</strong> Running on Bedrock

84 requires model access enabled in the AWS console and IAM credentials.{' '}

85 <a href="/en/amazon-bedrock">Bedrock setup guide →</a>

86 </>,

87 vertex: <>

88 <strong>Configure your GCP project first.</strong> Running on Vertex AI

89 requires the Vertex API enabled and a service account with the right

90 permissions.{' '}

91 <a href="/en/google-vertex-ai">Vertex setup guide →</a>

92 </>,

93 foundry: <>

94 <strong>Configure your Azure resources first.</strong> Running on

95 Microsoft Foundry requires an Azure subscription with a Foundry resource

96 and model deployments provisioned.{' '}

97 <a href="/en/microsoft-foundry">Foundry setup guide →</a>

98 </>

99 };

100 const iconCheck = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

101 <polyline points="20 6 9 17 4 12" />

102 </svg>;

103 const iconCopy = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

104 <rect x="9" y="9" width="13" height="13" rx="2" />

105 <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />

106 </svg>;

107 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

108 <line x1="5" y1="12" x2="19" y2="12" />

109 <polyline points="12 5 19 12 12 19" />

110 </svg>;

111 const iconArrowUpRight = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

112 <line x1="7" y1="17" x2="17" y2="7" />

113 <polyline points="7 7 17 7 17 17" />

114 </svg>;

115 const iconInfo = (size = 16) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

116 <circle cx="12" cy="12" r="10" />

117 <line x1="12" y1="16" x2="12" y2="12" />

118 <line x1="12" y1="8" x2="12.01" y2="8" />

119 </svg>;

120 const [target, setTarget] = useState(defaultSurface);

121 const [team, setTeam] = useState(false);

122 const [provider, setProvider] = useState('anthropic');

123 const [pkg, setPkg] = useState(() => (/Win/).test(navigator.userAgent) ? 'win' : 'mac');

124 const [winCmd, setWinCmd] = useState(false);

125 const [copied, setCopied] = useState(null);

126 const copyTimer = useRef(null);

127 const handleCopy = async (text, key) => {

128 try {

129 await navigator.clipboard.writeText(text);

130 } catch {

131 const ta = document.createElement('textarea');

132 ta.value = text;

133 document.body.appendChild(ta);

134 ta.select();

135 document.execCommand('copy');

136 document.body.removeChild(ta);

137 }

138 clearTimeout(copyTimer.current);

139 setCopied(key);

140 copyTimer.current = setTimeout(() => setCopied(null), 1800);

141 };

142 const cardBodyCmd = (cmd, prompt) => {

143 const on = copied === 'term';

144 return <div className="cc-ic-card-body">

145 <span className="cc-ic-prompt">{prompt || '$'}</span>

146 <div className="cc-ic-cmd">{cmd}</div>

147 <button type="button" className={'cc-ic-copy' + (on ? ' cc-ic-copied' : '')} onClick={() => handleCopy(cmd, 'term')}>

148 {on ? iconCheck(13) : iconCopy(13)}

149 <span>{on ? 'Copied' : 'Copy'}</span>

150 </button>

151 </div>;

152 };

153 const isWinInstaller = pkg === 'win';

154 const isWinPrompt = pkg === 'win' || pkg === 'winget';

155 const terminalCmd = isWinInstaller ? WIN_VARIANTS[winCmd ? 'cmd' : 'ps'] : TERM[pkg].cmd;

156 const alt = ALT_TARGETS[target];

157 const showNotice = team && provider !== 'anthropic';

158 const STYLES = `

159.cc-ic {

160 --ic-slate: #141413;

161 --ic-clay: #d97757;

162 --ic-clay-deep: #c6613f;

163 --ic-gray-000: #ffffff;

164 --ic-gray-150: #f0eee6;

165 --ic-gray-550: #73726c;

166 --ic-gray-700: #3d3d3a;

167 --ic-border-subtle: rgba(31, 30, 29, 0.08);

168 --ic-border-default: rgba(31, 30, 29, 0.15);

169 --ic-border-strong: rgba(31, 30, 29, 0.3);

170 --ic-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, 'Courier New', monospace;

171 font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

172 font-size: 14px; line-height: 1.5; color: var(--ic-slate);

173 margin: 8px 0 32px;

174}

175.dark .cc-ic {

176 --ic-slate: #f0eee6;

177 --ic-gray-000: #262624;

178 --ic-gray-150: #1f1e1d;

179 --ic-gray-550: #91908a;

180 --ic-gray-700: #bfbdb4;

181 --ic-border-subtle: rgba(240, 238, 230, 0.08);

182 --ic-border-default: rgba(240, 238, 230, 0.14);

183 --ic-border-strong: rgba(240, 238, 230, 0.28);

184}

185.dark .cc-ic-check { background: transparent; }

186.dark .cc-ic-card { border: 0.5px solid var(--ic-border-subtle); }

187.dark .cc-ic-p-pill.cc-ic-active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }

188.cc-ic *, .cc-ic *::before, .cc-ic *::after { box-sizing: border-box; }

189.cc-ic a { text-decoration: none; }

190.cc-ic a:not([class]) { color: inherit; }

191.cc-ic button { font-family: inherit; cursor: pointer; }

192 

193.cc-ic-tab-strip {

194 display: inline-flex; gap: 2px;

195 padding: 4px; background: var(--ic-gray-150);

196 border-radius: 10px; overflow-x: auto;

197 max-width: 100%;

198}

199.cc-ic-tab {

200 appearance: none; background: none; border: none;

201 padding: 10px 18px; font-size: 15px; font-weight: 430;

202 color: var(--ic-gray-550); border-radius: 7px;

203 white-space: nowrap;

204 transition: color 0.12s, background-color 0.12s;

205}

206.cc-ic-tab:hover { color: var(--ic-gray-700); }

207.cc-ic-tab.cc-ic-active {

208 color: var(--ic-slate); font-weight: 500;

209 background: var(--ic-gray-000);

210 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

211}

212.dark .cc-ic-tab.cc-ic-active { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }

213 

214.cc-ic-team-wrap { padding: 16px 0 20px; }

215.cc-ic-team-toggle {

216 display: flex; align-items: center; gap: 12px; font-family: inherit;

217 padding: 12px 16px; font-size: 14px; font-weight: 430;

218 color: var(--ic-gray-700); cursor: pointer; user-select: none;

219 width: fit-content; background: var(--ic-gray-150);

220 border: 0.5px solid var(--ic-border-subtle); border-radius: 8px;

221 transition: border-color 0.15s;

222}

223.cc-ic-team-toggle:hover { border-color: var(--ic-border-default); }

224.cc-ic-team-toggle.cc-ic-checked {

225 background: rgba(217, 119, 87, 0.08);

226 border-color: rgba(217, 119, 87, 0.25);

227}

228.cc-ic-check {

229 width: 16px; height: 16px;

230 border: 1px solid var(--ic-border-strong); border-radius: 4px;

231 background: var(--ic-gray-000);

232 display: flex; align-items: center; justify-content: center;

233 flex-shrink: 0;

234}

235.cc-ic-check svg { color: #fff; display: none; }

236.cc-ic-team-toggle.cc-ic-checked .cc-ic-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); }

237.cc-ic-team-toggle.cc-ic-checked .cc-ic-check svg { display: block; }

238 

239.cc-ic-team-reveal { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }

240.cc-ic-sales {

241 display: flex; align-items: center; justify-content: space-between;

242 gap: 16px; padding: 14px 16px;

243 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

244 border-radius: 8px; flex-wrap: wrap;

245}

246.cc-ic-sales-text { font-size: 13px; color: var(--ic-gray-700); line-height: 1.5; flex: 1; min-width: 200px; }

247.cc-ic-sales-text strong { font-weight: 550; color: var(--ic-slate); }

248.cc-ic-sales-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

249.cc-ic-btn-clay {

250 display: inline-flex; align-items: center; gap: 8px;

251 background: var(--ic-clay-deep); color: #fff; border: none;

252 border-radius: 8px; padding: 8px 14px;

253 font-size: 13px; font-weight: 500;

254 transition: background-color 0.15s; white-space: nowrap;

255}

256.cc-ic-btn-clay:hover { background: var(--ic-clay); }

257.cc-ic-btn-ghost {

258 display: inline-flex; align-items: center; gap: 8px;

259 background: transparent; color: var(--ic-gray-700);

260 border: 0.5px solid var(--ic-border-default);

261 border-radius: 8px; padding: 8px 14px;

262 font-size: 13px; font-weight: 500;

263}

264.cc-ic-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

265 

266.cc-ic-provider-bar {

267 display: flex; align-items: center; gap: 12px;

268 padding: 14px 16px; background: var(--ic-gray-150);

269 border-radius: 8px; font-size: 13px; flex-wrap: wrap;

270}

271.cc-ic-provider-bar .cc-ic-label { color: var(--ic-gray-550); flex-shrink: 0; }

272.cc-ic-provider-pills { display: flex; gap: 4px; flex-wrap: wrap; }

273.cc-ic-p-pill {

274 appearance: none; border: none; background: transparent;

275 padding: 6px 12px; border-radius: 6px;

276 font-size: 13px; font-weight: 430; color: var(--ic-gray-700);

277 white-space: nowrap;

278}

279.cc-ic-p-pill:hover { background: rgba(0, 0, 0, 0.04); }

280.cc-ic-p-pill.cc-ic-active {

281 background: var(--ic-gray-000); color: var(--ic-slate);

282 font-weight: 500; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);

283}

284.cc-ic-provider-notice {

285 display: flex; padding: 16px 18px;

286 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

287 border-radius: 8px; gap: 14px; align-items: flex-start;

288}

289.cc-ic-provider-notice > svg { color: var(--ic-gray-550); margin-top: 2px; flex-shrink: 0; }

290.cc-ic-provider-notice-body { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); }

291.cc-ic-provider-notice-body strong { font-weight: 550; color: var(--ic-slate); }

292.cc-ic-provider-notice-body a { color: var(--ic-clay-deep); font-weight: 500; }

293.cc-ic-provider-notice-body a:hover { text-decoration: underline; }

294 

295.cc-ic-card { background: #141413; border-radius: 12px; overflow: hidden; }

296.cc-ic-subtabs {

297 display: flex; align-items: center;

298 background: #1a1918;

299 border-bottom: 0.5px solid rgba(255, 255, 255, 0.08);

300 padding: 0 8px; overflow-x: auto;

301}

302.cc-ic-subtab {

303 appearance: none; background: none; border: none;

304 padding: 12px 16px; font-size: 12px;

305 color: rgba(255, 255, 255, 0.5);

306 position: relative; white-space: nowrap;

307}

308.cc-ic-subtab:hover { color: rgba(255, 255, 255, 0.75); }

309.cc-ic-subtab.cc-ic-active { color: #fff; }

310.cc-ic-subtab.cc-ic-active::after {

311 content: ''; position: absolute;

312 left: 12px; right: 12px; bottom: -0.5px;

313 height: 2px; background: var(--ic-clay);

314}

315.cc-ic-shell-switch {

316 display: inline-flex; gap: 2px;

317 margin: 14px 26px 0; padding: 3px;

318 background: rgba(255, 255, 255, 0.06);

319 border: 0.5px solid rgba(255, 255, 255, 0.08);

320 border-radius: 8px;

321 font-family: inherit;

322}

323.cc-ic-shell-option {

324 font: inherit; font-size: 12px; font-weight: 500;

325 padding: 5px 12px; border-radius: 6px;

326 background: transparent; border: none;

327 color: rgba(255, 255, 255, 0.55);

328 cursor: pointer; user-select: none; white-space: nowrap;

329 transition: color 120ms ease, background-color 120ms ease;

330}

331.cc-ic-shell-option:hover { color: rgba(255, 255, 255, 0.85); }

332.cc-ic-shell-option.cc-ic-active {

333 background: rgba(255, 255, 255, 0.12);

334 color: #fff;

335 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);

336}

337 

338.cc-ic-card-body { padding: 24px 26px; display: flex; align-items: flex-start; gap: 14px; }

339.cc-ic-prompt {

340 color: var(--ic-clay); font-family: var(--ic-font-mono);

341 font-size: 17px; user-select: none; padding-top: 2px;

342}

343.cc-ic-cmd {

344 flex: 1; font-family: var(--ic-font-mono);

345 font-size: 17px; color: #f0eee6;

346 line-height: 1.55; white-space: pre-wrap; word-break: break-word;

347}

348.cc-ic-copy {

349 display: inline-flex; align-items: center; gap: 6px;

350 background: rgba(255, 255, 255, 0.08);

351 border: 0.5px solid rgba(255, 255, 255, 0.12);

352 color: rgba(255, 255, 255, 0.85);

353 padding: 7px 13px; border-radius: 8px;

354 font-size: 13px; font-weight: 500; flex-shrink: 0;

355}

356.cc-ic-copy:hover { background: rgba(255, 255, 255, 0.14); }

357.cc-ic-copy.cc-ic-copied { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); color: #fff; }

358 

359.cc-ic-below {

360 margin-top: 12px; font-size: 13px; color: var(--ic-gray-550);

361 display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline;

362}

363.cc-ic-below a { color: var(--ic-gray-700); border-bottom: 0.5px solid var(--ic-border-default); }

364.cc-ic-below a:hover { color: var(--ic-clay-deep); border-bottom-color: var(--ic-clay-deep); }

365.cc-ic-handoff {

366 padding: 22px 24px;

367 background: linear-gradient(180deg, #faf9f4 0%, #f3f1e9 100%);

368 border: 0.5px solid var(--ic-border-default);

369 border-radius: 12px;

370 box-shadow: 0 1px 2px rgba(31, 30, 29, 0.04), 0 6px 16px -4px rgba(31, 30, 29, 0.06);

371}

372.dark .cc-ic-handoff {

373 background: linear-gradient(180deg, #262624 0%, #1f1e1d 100%);

374 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 16px -4px rgba(0, 0, 0, 0.4);

375}

376.cc-ic-handoff-title {

377 font-size: 16px; font-weight: 550; color: var(--ic-slate);

378 letter-spacing: -0.01em; margin-bottom: 4px;

379}

380.cc-ic-handoff-sub {

381 font-size: 14px; line-height: 1.5; color: var(--ic-gray-700);

382 margin-bottom: 18px;

383}

384.cc-ic-handoff-actions { display: flex; gap: 10px; flex-wrap: wrap; }

385.cc-ic-handoff-alt {

386 margin-top: 12px; font-size: 12px; color: var(--ic-gray-550);

387}

388.cc-ic-handoff-alt code {

389 font-family: var(--ic-font-mono); font-size: 11px;

390 background: var(--ic-gray-150); padding: 2px 6px;

391 border-radius: 4px; color: var(--ic-gray-700);

392}

393.cc-ic-copy-sm {

394 appearance: none; border: none;

395 display: inline-flex; align-items: center; justify-content: center;

396 width: 22px; height: 22px;

397 margin-left: 4px; vertical-align: middle;

398 background: var(--ic-gray-150); color: var(--ic-gray-550);

399 border-radius: 4px;

400 transition: color 0.1s, background-color 0.1s;

401}

402.cc-ic-copy-sm:hover { color: var(--ic-gray-700); background: var(--ic-border-default); }

403.cc-ic-copy-sm.cc-ic-copied { background: var(--ic-clay-deep); color: #fff; }

404 

405@media (max-width: 720px) {

406 .cc-ic-tab { padding: 12px 14px; font-size: 14px; }

407 .cc-ic-sales-actions { width: 100%; }

408 .cc-ic-card-body { padding: 20px; }

409 .cc-ic-cmd { font-size: 15px; }

410}

411`;

412 return <div className="cc-ic not-prose">

413 <style>{STYLES}</style>

414 

415 {}

416 <div className="cc-ic-tab-strip" role="tablist">

417 {TABS.map(t => <button key={t.key} type="button" role="tab" aria-selected={target === t.key} className={'cc-ic-tab' + (target === t.key ? ' cc-ic-active' : '')} onClick={() => setTarget(t.key)}>

418 {t.label}

419 </button>)}

420 </div>

421 

422 {}

423 <div className="cc-ic-team-wrap">

424 <button type="button" role="switch" aria-checked={team} className={'cc-ic-team-toggle' + (team ? ' cc-ic-checked' : '')} onClick={() => setTeam(!team)}>

425 <span className="cc-ic-check">{iconCheck(11)}</span>

426 <span>

427 I’m buying for a team or company (SSO, AWS/Azure/GCP, central billing)

428 </span>

429 </button>

430 </div>

431 

432 {}

433 {team && <div className="cc-ic-team-reveal">

434 <div className="cc-ic-sales">

435 <div className="cc-ic-sales-text">

436 <strong>Set up your team:</strong> self-serve or talk to sales.

437 </div>

438 <div className="cc-ic-sales-actions">

439 <a href="https://claude.ai/upgrade?initialPlanType=team&amp;utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_get_started" className="cc-ic-btn-ghost">

440 Get started

441 </a>

442 <a href="https://www.anthropic.com/contact-sales?utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_contact_sales" className="cc-ic-btn-clay">

443 Contact sales {iconArrowRight()}

444 </a>

445 </div>

446 </div>

447 

448 <div className="cc-ic-provider-bar">

449 <span className="cc-ic-label">Run on</span>

450 <div className="cc-ic-provider-pills" role="radiogroup" aria-label="Provider">

451 {PROVIDERS.map(p => <button key={p.key} type="button" role="radio" aria-checked={provider === p.key} className={'cc-ic-p-pill' + (provider === p.key ? ' cc-ic-active' : '')} onClick={() => setProvider(p.key)}>

452 {p.label}

453 </button>)}

454 </div>

455 </div>

456 

457 {showNotice && <div className="cc-ic-provider-notice">

458 {iconInfo()}

459 <div className="cc-ic-provider-notice-body">

460 {PROVIDER_NOTICE[provider]}

461 </div>

462 </div>}

463 </div>}

464 

465 {}

466 {target === 'terminal' && <div className="cc-ic-card">

467 <div className="cc-ic-subtabs" role="tablist" aria-label="Install method">

468 {Object.keys(TERM).map(k => <button key={k} type="button" role="tab" aria-selected={pkg === k} className={'cc-ic-subtab' + (pkg === k ? ' cc-ic-active' : '')} onClick={() => setPkg(k)}>

469 {TERM[k].label}

470 </button>)}

471 </div>

472 {isWinInstaller && <div className="cc-ic-shell-switch" role="tablist" aria-label="Shell">

473 {[{

474 k: 'ps',

475 label: 'PowerShell'

476 }, {

477 k: 'cmd',

478 label: 'CMD'

479 }].map(({k, label}) => {

480 const active = k === 'cmd' === winCmd;

481 return <button key={k} type="button" role="tab" aria-selected={active} className={'cc-ic-shell-option' + (active ? ' cc-ic-active' : '')} onClick={() => setWinCmd(k === 'cmd')}>

482 {label}

483 </button>;

484 })}

485 </div>}

486 {cardBodyCmd(terminalCmd, isWinPrompt ? '>' : '$')}

487 </div>}

488 

489 {}

490 {target === 'terminal' && <div className="cc-ic-below">

491 {isWinInstaller && <span>

492 <a href="https://git-scm.com/downloads/win" target="_blank" rel="noopener">

493 Git for Windows

494 </a>{' '}

495 recommended. PowerShell is used if Git Bash is absent.

496 </span>}

497 {(pkg === 'brew' || pkg === 'winget') && <span>

498 Does not auto-update. Run{' '}

499 <code>{pkg === 'brew' ? 'brew upgrade claude-code' : 'winget upgrade Anthropic.ClaudeCode'}</code>{' '}

500 periodically.

501 </span>}

502 <a href="/en/troubleshoot-install">Installation troubleshooting</a>

503 </div>}

504 

505 {alt && <div className="cc-ic-handoff">

506 <div className="cc-ic-handoff-title">Claude Code for {alt.name}</div>

507 <div className="cc-ic-handoff-sub">{alt.tagline}</div>

508 <div className="cc-ic-handoff-actions">

509 <a href={alt.installHref} className="cc-ic-btn-clay" {...alt.installHref.startsWith('http') ? {

510 target: '_blank',

511 rel: 'noopener'

512 } : {}}>

513 {alt.installLabel} {iconArrowUpRight(13)}

514 </a>

515 <a href={alt.guideHref} className="cc-ic-btn-ghost">

516 {alt.name} guide {iconArrowRight(12)}

517 </a>

518 </div>

519 {alt.altCmd && <div className="cc-ic-handoff-alt">

520 or run <code>{alt.altCmd}</code>

521 <button type="button" className={'cc-ic-copy-sm' + (copied === 'alt' ? ' cc-ic-copied' : '')} onClick={() => handleCopy(alt.altCmd, 'alt')} aria-label="Copy command">

522 {copied === 'alt' ? iconCheck(11) : iconCopy(11)}

523 </button>

524 </div>}

525 </div>}

526 </div>;

527};

528 

529export const Experiment = ({flag, treatment, children}) => {

530 const VID_KEY = 'exp_vid';

531 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

532 const fnv1a = s => {

533 let h = 0x811c9dc5;

534 for (let i = 0; i < s.length; i++) {

535 h ^= s.charCodeAt(i);

536 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

537 }

538 return h >>> 0;

539 };

540 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

541 const [decision] = useState(() => {

542 const params = new URLSearchParams(location.search);

543 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

544 const force = params.get('gb-force');

545 if (force) {

546 for (const p of force.split(',')) {

547 const [k, v] = p.split(':');

548 if (k === flag) return {

549 variant: v || 'treatment',

550 track: false

551 };

552 }

553 }

554 if (navigator.globalPrivacyControl) {

555 return {

556 variant: 'control',

557 track: false

558 };

559 }

560 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

561 if (prefsMatch) {

562 try {

563 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

564 return {

565 variant: 'control',

566 track: false

567 };

568 }

569 } catch {

570 return {

571 variant: 'control',

572 track: false

573 };

574 }

575 } else {

576 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

577 if (!country || CONSENT_COUNTRIES.has(country)) {

578 return {

579 variant: 'control',

580 track: false

581 };

582 }

583 }

584 let vid;

585 try {

586 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

587 if (ajsMatch) {

588 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

589 } else {

590 vid = localStorage.getItem(VID_KEY);

591 if (!vid) {

592 vid = crypto.randomUUID();

593 }

594 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

595 }

596 try {

597 localStorage.setItem(VID_KEY, vid);

598 } catch {}

599 } catch {

600 return {

601 variant: 'control',

602 track: false

603 };

604 }

605 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

606 return {

607 variant,

608 track: true,

609 vid

610 };

611 });

612 useEffect(() => {

613 if (!decision.track) return;

614 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

615 method: 'POST',

616 headers: {

617 'Content-Type': 'application/json',

618 'x-service-name': 'claude_code_docs'

619 },

620 body: JSON.stringify({

621 events: [{

622 event_type: 'GrowthbookExperimentEvent',

623 event_data: {

624 device_id: decision.vid,

625 anonymous_id: decision.vid,

626 timestamp: new Date().toISOString(),

627 experiment_id: flag,

628 variation_id: decision.variant === 'treatment' ? 1 : 0,

629 environment: 'production'

630 }

631 }]

632 }),

633 keepalive: true

634 }).catch(() => {});

635 }, []);

636 return decision.variant === 'treatment' ? treatment : children;

637};

638 

639Questa guida rapida ti permetterà di utilizzare l'assistenza alla codifica basata su IA in pochi minuti. Alla fine, comprenderai come utilizzare Claude Code per le attività di sviluppo comuni.

640 

641<Experiment flag="quickstart-install-configurator" treatment={<InstallConfigurator />} />

642 

643## Prima di iniziare

644 

645Assicurati di avere:

646 

647* Un terminale o un prompt dei comandi aperto

648 * Se non hai mai utilizzato il terminale prima, consulta la [guida del terminale](/it/terminal-guide)

649* Un progetto di codice con cui lavorare

650* Un [abbonamento Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Teams o Enterprise), un account [Claude Console](https://console.anthropic.com/) o accesso tramite un [provider cloud supportato](/it/third-party-integrations)

651 

652<Note>

653 Questa guida copre il CLI del terminale. Claude Code è disponibile anche sul [web](https://claude.ai/code), come [app desktop](/it/desktop), in [VS Code](/it/vs-code) e [IDE JetBrains](/it/jetbrains), in [Slack](/it/slack) e in CI/CD con [GitHub Actions](/it/github-actions) e [GitLab](/it/gitlab-ci-cd). Vedi [tutte le interfacce](/it/overview#use-claude-code-everywhere).

654</Note>

655 

656## Passaggio 1: Installa Claude Code

657 

658To install Claude Code, use one of the following methods:

659 

660<Tabs>

661 <Tab title="Native Install (Recommended)">

662 **macOS, Linux, WSL:**

663 

664 ```bash theme={null}

665 curl -fsSL https://claude.ai/install.sh | bash

666 ```

667 

668 **Windows PowerShell:**

669 

670 ```powershell theme={null}

671 irm https://claude.ai/install.ps1 | iex

672 ```

673 

674 **Windows CMD:**

675 

676 ```batch theme={null}

677 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

678 ```

679 

680 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

681 

682 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

683 

684 <Info>

685 Native installations automatically update in the background to keep you on the latest version.

686 </Info>

687 </Tab>

688 

689 <Tab title="Homebrew">

690 ```bash theme={null}

691 brew install --cask claude-code

692 ```

693 

694 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

695 

696 <Info>

697 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

698 </Info>

699 </Tab>

700 

701 <Tab title="WinGet">

702 ```powershell theme={null}

703 winget install Anthropic.ClaudeCode

704 ```

705 

706 <Info>

707 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

708 </Info>

709 </Tab>

710</Tabs>

711 

712You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

713 

714## Passaggio 2: Accedi al tuo account

715 

716Claude Code richiede un account per essere utilizzato. Quando avvii una sessione interattiva con il comando `claude`, dovrai effettuare l'accesso:

717 

718```bash theme={null}

719claude

720# Ti verrà chiesto di effettuare l'accesso al primo utilizzo

721```

722 

723```bash theme={null}

724/login

725# Segui i prompt per accedere con il tuo account

726```

727 

728Puoi accedere utilizzando uno di questi tipi di account:

729 

730* [Claude Pro, Max, Teams o Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (consigliato)

731* [Claude Console](https://console.anthropic.com/) (accesso API con crediti prepagati). Al primo accesso, uno spazio di lavoro "Claude Code" viene creato automaticamente nella Console per il tracciamento centralizzato dei costi.

732* [Amazon Bedrock, Google Vertex AI o Microsoft Foundry](/it/third-party-integrations) (provider cloud aziendali)

733 

734Una volta effettuato l'accesso, le tue credenziali vengono archiviate e non dovrai accedere di nuovo. Per cambiare account in seguito, utilizza il comando `/login`.

735 

736## Passaggio 3: Avvia la tua prima sessione

737 

738Apri il tuo terminale in qualsiasi directory del progetto e avvia Claude Code:

739 

740```bash theme={null}

741cd /path/to/your/project

742claude

743```

744 

745Vedrai la schermata di benvenuto di Claude Code con le informazioni della tua sessione, le conversazioni recenti e gli ultimi aggiornamenti. Digita `/help` per i comandi disponibili o `/resume` per continuare una conversazione precedente.

746 

747<Tip>

748 Dopo aver effettuato l'accesso (Passaggio 2), le tue credenziali vengono archiviate sul tuo sistema. Scopri di più in [Gestione delle credenziali](/it/authentication#credential-management).

749</Tip>

750 

751## Passaggio 4: Fai la tua prima domanda

752 

753Iniziamo con la comprensione della tua base di codice. Prova uno di questi comandi:

754 

755```text theme={null}

756cosa fa questo progetto?

757```

758 

759Claude analizzerà i tuoi file e fornirà un riepilogo. Puoi anche fare domande più specifiche:

760 

761```text theme={null}

762quali tecnologie utilizza questo progetto?

763```

764 

765```text theme={null}

766dov'è il punto di ingresso principale?

767```

768 

769```text theme={null}

770spiega la struttura delle cartelle

771```

772 

773Puoi anche chiedere a Claude informazioni sulle sue stesse capacità:

774 

775```text theme={null}

776cosa può fare Claude Code?

777```

778 

779```text theme={null}

780come creo skill personalizzate in Claude Code?

781```

782 

783```text theme={null}

784Claude Code può funzionare con Docker?

785```

786 

787<Note>

788 Claude Code legge i file del tuo progetto secondo le necessità. Non devi aggiungere manualmente il contesto.

789</Note>

790 

791## Passaggio 5: Fai il tuo primo cambio di codice

792 

793Ora facciamo in modo che Claude Code faccia un po' di codifica vera. Prova un'attività semplice:

794 

795```text theme={null}

796aggiungi una funzione hello world al file principale

797```

798 

799Claude Code farà:

800 

8011. Trovare il file appropriato

8022. Mostrarti le modifiche proposte

8033. Chiedere la tua approvazione

8044. Effettuare la modifica

805 

806<Note>

807 Claude Code chiede sempre il permesso prima di modificare i file. Puoi approvare i singoli cambiamenti o abilitare la modalità "Accetta tutto" per una sessione.

808</Note>

809 

810## Passaggio 6: Usa Git con Claude Code

811 

812Claude Code rende le operazioni Git conversazionali:

813 

814```text theme={null}

815quali file ho modificato?

816```

817 

818```text theme={null}

819esegui il commit delle mie modifiche con un messaggio descrittivo

820```

821 

822Puoi anche richiedere operazioni Git più complesse:

823 

824```text theme={null}

825crea un nuovo branch chiamato feature/quickstart

826```

827 

828```text theme={null}

829mostrami gli ultimi 5 commit

830```

831 

832```text theme={null}

833aiutami a risolvere i conflitti di merge

834```

835 

836## Passaggio 7: Correggi un bug o aggiungi una funzionalità

837 

838Claude è abile nel debug e nell'implementazione di funzionalità.

839 

840Descrivi quello che vuoi in linguaggio naturale:

841 

842```text theme={null}

843aggiungi la convalida dell'input al modulo di registrazione dell'utente

844```

845 

846O correggi i problemi esistenti:

847 

848```text theme={null}

849c'è un bug in cui gli utenti possono inviare moduli vuoti - correggilo

850```

851 

852Claude Code farà:

853 

854* Individuare il codice rilevante

855* Comprendere il contesto

856* Implementare una soluzione

857* Eseguire i test se disponibili

858 

859## Passaggio 8: Prova altri flussi di lavoro comuni

860 

861Ci sono diversi modi per lavorare con Claude:

862 

863**Refactoring del codice**

864 

865```text theme={null}

866refactorizza il modulo di autenticazione per utilizzare async/await invece di callback

867```

868 

869**Scrivi test**

870 

871```text theme={null}

872scrivi unit test per le funzioni della calcolatrice

873```

874 

875**Aggiorna la documentazione**

876 

877```text theme={null}

878aggiorna il README con le istruzioni di installazione

879```

880 

881**Revisione del codice**

882 

883```text theme={null}

884rivedi le mie modifiche e suggerisci miglioramenti

885```

886 

887<Tip>

888 Parla a Claude come faresti con un collega utile. Descrivi quello che vuoi ottenere e ti aiuterà a raggiungerlo.

889</Tip>

890 

891## Comandi essenziali

892 

893Ecco i comandi più importanti per l'uso quotidiano:

894 

895| Comando | Cosa fa | Esempio |

896| ------------------- | -------------------------------------------------------------- | ----------------------------------- |

897| `claude` | Avvia la modalità interattiva | `claude` |

898| `claude "task"` | Esegui un'attività una tantum | `claude "fix the build error"` |

899| `claude -p "query"` | Esegui una query una tantum, quindi esci | `claude -p "explain this function"` |

900| `claude -c` | Continua la conversazione più recente nella directory corrente | `claude -c` |

901| `claude -r` | Riprendi una conversazione precedente | `claude -r` |

902| `claude commit` | Crea un commit Git | `claude commit` |

903| `/clear` | Cancella la cronologia della conversazione | `/clear` |

904| `/help` | Mostra i comandi disponibili | `/help` |

905| `exit` o Ctrl+C | Esci da Claude Code | `exit` |

906 

907Vedi il [riferimento CLI](/it/cli-reference) per un elenco completo dei comandi.

908 

909## Suggerimenti professionali per i principianti

910 

911Per ulteriori informazioni, vedi [best practices](/it/best-practices) e [flussi di lavoro comuni](/it/common-workflows).

912 

913<AccordionGroup>

914 <Accordion title="Sii specifico con le tue richieste">

915 Invece di: "correggi il bug"

916 

917 Prova: "correggi il bug di accesso in cui gli utenti vedono una schermata vuota dopo aver inserito credenziali errate"

918 </Accordion>

919 

920 <Accordion title="Usa istruzioni passo dopo passo">

921 Suddividi i compiti complessi in passaggi:

922 

923 ```text theme={null}

924 1. crea una nuova tabella di database per i profili utente

925 2. crea un endpoint API per ottenere e aggiornare i profili utente

926 3. costruisci una pagina web che consenta agli utenti di visualizzare e modificare le loro informazioni

927 ```

928 </Accordion>

929 

930 <Accordion title="Lascia che Claude esplori prima">

931 Prima di apportare modifiche, lascia che Claude comprenda il tuo codice:

932 

933 ```text theme={null}

934 analizza lo schema del database

935 ```

936 

937 ```text theme={null}

938 costruisci una dashboard che mostra i prodotti che vengono restituiti più frequentemente dai nostri clienti nel Regno Unito

939 ```

940 </Accordion>

941 

942 <Accordion title="Risparmia tempo con le scorciatoie">

943 * Premi `?` per vedere tutte le scorciatoie da tastiera disponibili

944 * Usa Tab per il completamento dei comandi

945 * Premi ↑ per la cronologia dei comandi

946 * Digita `/` per vedere tutti i comandi e le skill

947 </Accordion>

948</AccordionGroup>

949 

950## Cosa fare dopo?

951 

952Ora che hai imparato le nozioni di base, esplora funzionalità più avanzate:

953 

954<CardGroup cols={2}>

955 <Card title="Come funziona Claude Code" icon="microchip" href="/it/how-claude-code-works">

956 Comprendi il loop agentico, gli strumenti integrati e come Claude Code interagisce con il tuo progetto

957 </Card>

958 

959 <Card title="Best practices" icon="star" href="/it/best-practices">

960 Ottieni risultati migliori con prompt efficaci e configurazione del progetto

961 </Card>

962 

963 <Card title="Flussi di lavoro comuni" icon="graduation-cap" href="/it/common-workflows">

964 Guide passo dopo passo per attività comuni

965 </Card>

966 

967 <Card title="Estendi Claude Code" icon="puzzle-piece" href="/it/features-overview">

968 Personalizza con CLAUDE.md, skills, hooks, MCP e altro

969 </Card>

970</CardGroup>

971 

972## Ottenere aiuto

973 

974* **In Claude Code**: Digita `/help` o chiedi "come faccio a..."

975* **Documentazione**: Sei qui! Sfoglia altre guide

976* **Community**: Unisciti al nostro [Discord](https://www.anthropic.com/discord) per suggerimenti e supporto

remote-control.md +259 −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# Continua le sessioni locali da qualsiasi dispositivo con Remote Control

6 

7> Continua una sessione locale di Claude Code dal tuo telefono, tablet o da qualsiasi browser utilizzando Remote Control. Funziona con claude.ai/code e l'app Claude per dispositivi mobili.

8 

9<Note>

10 Remote Control è in anteprima di ricerca ed è disponibile su tutti i piani. Su Team e Enterprise, è disabilitato per impostazione predefinita fino a quando un amministratore non abilita l'interruttore Remote Control nelle [impostazioni di amministrazione di Claude Code](https://claude.ai/admin-settings/claude-code).

11</Note>

12 

13Remote Control connette [claude.ai/code](https://claude.ai/code) o l'app Claude per [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) e [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) a una sessione di Claude Code in esecuzione sulla tua macchina. Avvia un'attività alla tua scrivania, quindi riprendi dal tuo telefono sul divano o da un browser su un altro computer.

14 

15Quando avvii una sessione Remote Control sulla tua macchina, Claude continua a funzionare localmente per tutto il tempo, quindi nulla si sposta nel cloud. Con Remote Control puoi:

16 

17* **Utilizzare il tuo ambiente locale completo da remoto**: il tuo filesystem, i [server MCP](/it/mcp), gli strumenti e la configurazione del progetto rimangono disponibili, e digitando `@` l'autocompletamento completa i percorsi dei file dal tuo progetto locale

18* **Lavorare da entrambe le superfici contemporaneamente**: la conversazione rimane sincronizzata su tutti i dispositivi connessi, quindi puoi inviare messaggi dal tuo terminale, browser e telefono in modo intercambiabile

19* **Sopravvivere alle interruzioni**: se il tuo laptop va in sospensione o la tua rete si interrompe, la sessione si riconnette automaticamente quando la tua macchina torna online

20 

21A differenza di [Claude Code sul web](/it/claude-code-on-the-web), che funziona su infrastrutture cloud, le sessioni Remote Control vengono eseguite direttamente sulla tua macchina e interagiscono con il tuo filesystem locale. Le interfacce web e mobile sono solo una finestra in quella sessione locale.

22 

23<Note>

24 Remote Control richiede Claude Code v2.1.51 o successivo. Controlla la tua versione con `claude --version`.

25</Note>

26 

27Questa pagina copre la configurazione, come avviare e connettersi alle sessioni, e come Remote Control si confronta con Claude Code sul web.

28 

29## Requisiti

30 

31Prima di utilizzare Remote Control, conferma che il tuo ambiente soddisfi queste condizioni:

32 

33* **Abbonamento**: disponibile su piani Pro, Max, Team e Enterprise. Le chiavi API non sono supportate. Su Team e Enterprise, un amministratore deve prima abilitare l'interruttore Remote Control nelle [impostazioni di amministrazione di Claude Code](https://claude.ai/admin-settings/claude-code).

34* **Autenticazione**: esegui `claude` e utilizza `/login` per accedere tramite claude.ai se non l'hai già fatto.

35* **Fiducia dell'area di lavoro**: esegui `claude` nella directory del tuo progetto almeno una volta per accettare la finestra di dialogo di fiducia dell'area di lavoro.

36 

37## Avvia una sessione Remote Control

38 

39Puoi avviare una sessione Remote Control dalla CLI o dall'estensione VS Code. La CLI offre tre modalità di invocazione; VS Code utilizza il comando `/remote-control`.

40 

41<Tabs>

42 <Tab title="Modalità server">

43 Accedi alla directory del tuo progetto ed esegui:

44 

45 ```bash theme={null}

46 claude remote-control

47 ```

48 

49 Il processo rimane in esecuzione nel tuo terminale in modalità server, in attesa di connessioni remote. Visualizza un URL di sessione che puoi utilizzare per [connetterti da un altro dispositivo](#connect-from-another-device), e puoi premere la barra spaziatrice per mostrare un codice QR per un accesso rapido dal tuo telefono. Mentre una sessione remota è attiva, il terminale mostra lo stato della connessione e l'attività dello strumento.

50 

51 Flag disponibili:

52 

53 | Flag | Descrizione |

54 | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

55 | `--name "My Project"` | Imposta un titolo di sessione personalizzato visibile nell'elenco delle sessioni su claude.ai/code. |

56 | `--remote-control-session-name-prefix <prefix>` | Prefisso per i nomi di sessione generati automaticamente quando non è impostato un nome esplicito. 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. |

57 | `--spawn <mode>` | Come il server crea le sessioni.<br />• `same-dir` (predefinito): tutte le sessioni condividono la directory di lavoro corrente, quindi possono entrare in conflitto se modificano gli stessi file.<br />• `worktree`: ogni sessione su richiesta ottiene il proprio [git worktree](/it/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees). Richiede un repository git.<br />• `session`: modalità a sessione singola. Serve esattamente una sessione e rifiuta connessioni aggiuntive. Impostato solo all'avvio.<br />Premi `w` durante l'esecuzione per attivare/disattivare tra `same-dir` e `worktree`. |

58 | `--capacity <N>` | Numero massimo di sessioni simultanee. Il valore predefinito è 32. Non può essere utilizzato con `--spawn=session`. |

59 | `--verbose` | Mostra log dettagliati di connessione e sessione. |

60 | `--sandbox` / `--no-sandbox` | Abilita o disabilita il [sandboxing](/it/sandboxing) per l'isolamento del filesystem e della rete. Disabilitato per impostazione predefinita. |

61 </Tab>

62 

63 <Tab title="Sessione interattiva">

64 Per avviare una normale sessione interattiva di Claude Code con Remote Control abilitato, utilizza il flag `--remote-control` (o `--rc`):

65 

66 ```bash theme={null}

67 claude --remote-control

68 ```

69 

70 Facoltativamente passa un nome per la sessione:

71 

72 ```bash theme={null}

73 claude --remote-control "My Project"

74 ```

75 

76 Questo ti dà una sessione interattiva completa nel tuo terminale che puoi anche controllare da claude.ai o dall'app Claude. A differenza di `claude remote-control` (modalità server), puoi digitare messaggi localmente mentre la sessione è anche disponibile da remoto.

77 </Tab>

78 

79 <Tab title="Da una sessione esistente">

80 Se sei già in una sessione di Claude Code e vuoi continuarla da remoto, utilizza il comando `/remote-control` (o `/rc`):

81 

82 ```text theme={null}

83 /remote-control

84 ```

85 

86 Passa un nome come argomento per impostare un titolo di sessione personalizzato:

87 

88 ```text theme={null}

89 /remote-control My Project

90 ```

91 

92 Questo avvia una sessione Remote Control che mantiene la cronologia della conversazione corrente e visualizza un URL di sessione e un codice QR che puoi utilizzare per [connetterti da un altro dispositivo](#connect-from-another-device). I flag `--verbose`, `--sandbox` e `--no-sandbox` non sono disponibili con questo comando.

93 </Tab>

94 

95 <Tab title="VS Code">

96 Nell'[estensione VS Code di Claude Code](/it/vs-code), digita `/remote-control` o `/rc` nella casella del prompt, oppure apri il menu dei comandi con `/` e selezionalo. Richiede Claude Code v2.1.79 o successivo.

97 

98 ```text theme={null}

99 /remote-control

100 ```

101 

102 Un banner appare sopra la casella del prompt mostrando lo stato della connessione. Una volta connesso, fai clic su **Open in browser** nel banner per andare direttamente alla sessione, oppure trovala nell'elenco delle sessioni su [claude.ai/code](https://claude.ai/code). L'URL della sessione è anche pubblicato nella conversazione.

103 

104 Per disconnetterti, fai clic sull'icona di chiusura sul banner o esegui `/remote-control` di nuovo.

105 

106 A differenza della CLI, il comando VS Code non accetta un argomento di nome e non visualizza un codice QR. Il titolo della sessione è derivato dalla cronologia della conversazione o dal primo prompt.

107 </Tab>

108</Tabs>

109 

110### Connettiti da un altro dispositivo

111 

112Una volta che una sessione Remote Control è attiva, hai alcuni modi per connetterti da un altro dispositivo:

113 

114* **Apri l'URL della sessione** in qualsiasi browser per andare direttamente alla sessione su [claude.ai/code](https://claude.ai/code).

115* **Scansiona il codice QR** mostrato accanto all'URL della sessione per aprirlo direttamente nell'app Claude. Con `claude remote-control`, premi la barra spaziatrice per attivare/disattivare la visualizzazione del codice QR.

116* **Apri [claude.ai/code](https://claude.ai/code) o l'app Claude** e trova la sessione per nome nell'elenco delle sessioni. Le sessioni Remote Control mostrano un'icona di computer con un punto di stato verde quando sono online.

117 

118Il titolo della sessione remota viene scelto in questo ordine:

119 

1201. Il nome che hai passato a `--name`, `--remote-control`, o `/remote-control`

1212. Il titolo che hai impostato con `/rename`

1223. L'ultimo messaggio significativo nella cronologia della conversazione esistente

1234. Un nome generato automaticamente come `myhost-graceful-unicorn`, dove `myhost` è il nome host della tua macchina o il prefisso che hai impostato con `--remote-control-session-name-prefix`

124 

125Se non hai impostato un nome esplicito, il titolo si aggiorna per riflettere il tuo prompt una volta che ne invii uno.

126 

127Se l'ambiente ha già una sessione attiva, ti verrà chiesto se continuarla o avviarne una nuova.

128 

129Se non hai ancora l'app Claude, utilizza il comando `/mobile` all'interno di Claude Code per visualizzare un codice QR di download per [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) o [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude).

130 

131### Abilita Remote Control per tutte le sessioni

132 

133Per impostazione predefinita, Remote Control si attiva solo quando esegui esplicitamente `claude remote-control`, `claude --remote-control`, o `/remote-control`. Per abilitarlo automaticamente per ogni sessione interattiva, esegui `/config` all'interno di Claude Code e imposta **Enable Remote Control for all sessions** su `true`. Impostalo di nuovo su `false` per disabilitarlo.

134 

135Con questa impostazione attiva, ogni processo Claude Code interattivo registra una sessione remota. Se esegui più istanze, ognuna ottiene il proprio ambiente e sessione. Per eseguire più sessioni simultanee da un singolo processo, utilizza invece la [modalità server](#start-a-remote-control-session).

136 

137## Connessione e sicurezza

138 

139La tua sessione locale di Claude Code effettua solo richieste HTTPS in uscita e non apre mai porte in ingresso sulla tua macchina. Quando avvii Remote Control, si registra con l'API Anthropic e esegue il polling per il lavoro. Quando ti connetti da un altro dispositivo, il server instrada i messaggi tra il client web o mobile e la tua sessione locale su una connessione in streaming.

140 

141Tutto il traffico viaggia attraverso l'API Anthropic su TLS, lo stesso trasporto di sicurezza di qualsiasi sessione di Claude Code. La connessione utilizza più credenziali di breve durata, ognuna limitata a un singolo scopo e con scadenza indipendente.

142 

143## Remote Control vs Claude Code sul web

144 

145Remote Control e [Claude Code sul web](/it/claude-code-on-the-web) utilizzano entrambi l'interfaccia claude.ai/code. La differenza chiave è dove viene eseguita la sessione: Remote Control viene eseguito sulla tua macchina, quindi i tuoi server MCP locali, strumenti e configurazione del progetto rimangono disponibili. Claude Code sul web viene eseguito nell'infrastruttura cloud gestita da Anthropic.

146 

147Utilizza Remote Control quando sei nel mezzo di un lavoro locale e vuoi continuare da un altro dispositivo. Utilizza Claude Code sul web quando vuoi avviare un'attività senza alcuna configurazione locale, lavorare su un repository che non hai clonato, o eseguire più attività in parallelo.

148 

149## Notifiche push mobili

150 

151Quando Remote Control è attivo, Claude può inviare notifiche push al tuo telefono.

152 

153Claude decide quando inviare una notifica. Tipicamente ne invia una quando un'attività a lunga esecuzione termina o quando ha bisogno di una decisione da te per continuare. Puoi anche richiedere una notifica nel tuo prompt, ad esempio `notify me when the tests finish`. Oltre all'interruttore on/off qui sotto, non c'è configurazione per evento.

154 

155<Note>

156 Le notifiche push mobili richiedono Claude Code v2.1.110 o successivo.

157</Note>

158 

159Per configurare le notifiche push mobili:

160 

161<Steps>

162 <Step title="Installa l'app Claude per dispositivi mobili">

163 Scarica l'app Claude per [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) o [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude).

164 </Step>

165 

166 <Step title="Accedi con il tuo account Claude Code">

167 Utilizza lo stesso account e organizzazione che usi per Claude Code nel terminale.

168 </Step>

169 

170 <Step title="Consenti le notifiche">

171 Accetta il prompt di autorizzazione delle notifiche dal sistema operativo.

172 </Step>

173 

174 <Step title="Abilita push in Claude Code">

175 Nel tuo terminale, esegui `/config` e abilita **Push when Claude decides**.

176 </Step>

177</Steps>

178 

179Se le notifiche non arrivano:

180 

181* Se `/config` mostra **No mobile registered**, apri l'app Claude sul tuo telefono in modo che possa aggiornare il suo token push. L'avviso si cancella la prossima volta che Remote Control si connette.

182* Su iOS, le modalità Focus e i riepiloghi delle notifiche possono sopprimere o ritardare le notifiche push. Controlla Impostazioni → Notifiche → Claude.

183* Su Android, l'ottimizzazione aggressiva della batteria può ritardare la consegna. Escludi l'app Claude dall'ottimizzazione della batteria nelle impostazioni di sistema.

184 

185## Limitazioni

186 

187* **Una sessione remota per processo interattivo**: al di fuori della modalità server, ogni istanza di Claude Code supporta una sessione remota alla volta. Utilizza la [modalità server](#start-a-remote-control-session) per eseguire più sessioni simultanee da un singolo processo.

188* **Il processo locale deve continuare a funzionare**: Remote Control viene eseguito come processo locale. Se chiudi il terminale, esci da VS Code, o altrimenti interrompi il processo `claude`, la sessione termina.

189* **Interruzione di rete prolungata**: se la tua macchina è accesa ma non riesce a raggiungere la rete per più di circa 10 minuti, la sessione scade e il processo esce. Esegui di nuovo `claude remote-control` per avviare una nuova sessione.

190* **Ultraplan disconnette Remote Control**: avviare una sessione [ultraplan](/it/ultraplan) disconnette qualsiasi sessione Remote Control attiva perché entrambe le funzioni occupano l'interfaccia claude.ai/code e solo una può essere connessa alla volta.

191* **Alcuni comandi sono solo locali**: i comandi che aprono un selettore interattivo nel terminale, come `/mcp`, `/plugin`, o `/resume`, funzionano solo dalla CLI locale. I comandi che producono output di testo, inclusi `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/extra-usage`, `/recap`, e `/reload-plugins`, funzionano da mobile e web.

192 

193## Risoluzione dei problemi

194 

195### "Remote Control requires a claude.ai subscription"

196 

197Non sei autenticato con un account claude.ai. Esegui `claude auth login` e scegli l'opzione claude.ai. Se `ANTHROPIC_API_KEY` è impostato nel tuo ambiente, annulla l'impostazione prima.

198 

199### "Remote Control requires a full-scope login token"

200 

201Sei autenticato con un token di lunga durata da `claude setup-token` o dalla variabile di ambiente `CLAUDE_CODE_OAUTH_TOKEN`. Questi token sono limitati solo all'inferenza e non possono stabilire sessioni Remote Control. Esegui `claude auth login` per autenticarti con un token di sessione a scopo completo.

202 

203### "Unable to determine your organization for Remote Control eligibility"

204 

205Le informazioni dell'account memorizzate nella cache sono obsolete o incomplete. Esegui `claude auth login` per aggiornarlo.

206 

207### "Remote Control is not yet enabled for your account"

208 

209Il controllo di idoneità può fallire con determinate variabili di ambiente presenti:

210 

211* `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` o `DISABLE_TELEMETRY`: annulla l'impostazione e riprova.

212* `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, o `CLAUDE_CODE_USE_FOUNDRY`: Remote Control richiede l'autenticazione claude.ai e non funziona con provider di terze parti.

213 

214Se nessuno di questi è impostato, esegui `/logout` quindi `/login` per aggiornare.

215 

216### "Remote Control is disabled by your organization's policy"

217 

218Questo errore ha tre cause distinte. Esegui prima `/status` per vedere quale metodo di accesso e abbonamento stai utilizzando.

219 

220* **Sei autenticato con una chiave API o un account Console**: Remote Control richiede OAuth claude.ai. Esegui `/login` e scegli l'opzione claude.ai. Se `ANTHROPIC_API_KEY` è impostato nel tuo ambiente, annulla l'impostazione.

221* **Il tuo amministratore di Team o Enterprise non l'ha abilitato**: Remote Control è disabilitato per impostazione predefinita su questi piani. Un amministratore può abilitarlo su [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) attivando l'interruttore **Remote Control**. Questa è un'impostazione organizzativa lato server, non una chiave di [impostazioni gestite](/it/permissions#managed-only-settings).

222* **L'interruttore di amministrazione è disattivato**: la tua organizzazione ha una configurazione di conservazione dei dati o conformità incompatibile con Remote Control. Questo non può essere modificato dal pannello di amministrazione. Contatta il supporto Anthropic per discutere le opzioni.

223 

224### "Remote credentials fetch failed"

225 

226Claude Code non ha potuto ottenere una credenziale di breve durata dall'API Anthropic per stabilire la connessione. Esegui di nuovo con `--verbose` per vedere l'errore completo:

227 

228```bash theme={null}

229claude remote-control --verbose

230```

231 

232Cause comuni:

233 

234* Non sei connesso: esegui `claude` e utilizza `/login` per autenticarti con il tuo account claude.ai. L'autenticazione con chiave API non è supportata per Remote Control.

235* Problema di rete o proxy: un firewall o proxy potrebbe bloccare la richiesta HTTPS in uscita. Remote Control richiede l'accesso all'API Anthropic sulla porta 443.

236* Creazione della sessione non riuscita: se vedi anche `Session creation failed — see debug log`, l'errore si è verificato in precedenza nella configurazione. Verifica che il tuo abbonamento sia attivo.

237 

238## Scegli l'approccio giusto

239 

240Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.

241 

242| | Trigger | Claude runs on | Setup | Best for |

243| :--------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |

244| [Dispatch](/en/desktop#sessions-from-dispatch) | Message a task from the Claude mobile app | Your machine (Desktop) | [Pair the mobile app with Desktop](https://support.claude.com/en/articles/13947068) | Delegating work while you're away, minimal setup |

245| [Remote Control](/en/remote-control) | Drive a running session from [claude.ai/code](https://claude.ai/code) or the Claude mobile app | Your machine (CLI or VS Code) | Run `claude remote-control` | Steering in-progress work from another device |

246| [Channels](/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/en/channels#quickstart) or [build your own](/en/channels-reference) | Reacting to external events like CI failures or chat messages |

247| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |

248| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |

249 

250## Risorse correlate

251 

252* [Claude Code sul web](/it/claude-code-on-the-web): esegui sessioni in ambienti cloud gestiti da Anthropic invece che sulla tua macchina

253* [Ultraplan](/it/ultraplan): avvia una sessione di pianificazione cloud dal tuo terminale e rivedi il piano nel tuo browser

254* [Canali](/it/channels): inoltra Telegram, Discord o iMessage in una sessione in modo che Claude reagisca ai messaggi mentre sei assente

255* [Dispatch](/it/desktop#sessions-from-dispatch): invia un'attività dal tuo telefono e può generare una sessione Desktop per gestirla

256* [Autenticazione](/it/authentication): configura `/login` e gestisci le credenziali per claude.ai

257* [Riferimento CLI](/it/cli-reference): elenco completo di flag e comandi incluso `claude remote-control`

258* [Sicurezza](/it/security): come le sessioni Remote Control si adattano al modello di sicurezza di Claude Code

259* [Utilizzo dei dati](/it/data-usage): quali dati fluiscono attraverso l'API Anthropic durante le sessioni locali e remote

routines.md +317 −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# Automatizzare il lavoro con le routine

6 

7> Metti Claude Code in modalità automatica. Definisci routine che vengono eseguite secondo una pianificazione, attivate da chiamate API o che reagiscono agli eventi di GitHub dall'infrastruttura cloud gestita da Anthropic.

8 

9<Note>

10 Le routine sono in anteprima di ricerca. Il comportamento, i limiti e la superficie dell'API potrebbero cambiare.

11</Note>

12 

13Una routine è una configurazione salvata di Claude Code: un prompt, uno o più repository e un set di [connectors](/it/mcp), confezionati una volta ed eseguiti automaticamente. Le routine vengono eseguite su infrastruttura cloud gestita da Anthropic, quindi continuano a funzionare quando il tuo laptop è chiuso.

14 

15Ogni routine può avere uno o più trigger collegati:

16 

17* **Scheduled**: eseguire su una cadenza ricorrente come oraria, notturna o settimanale

18* **API**: attivare su richiesta inviando un POST HTTP a un endpoint per routine con un token bearer

19* **GitHub**: eseguire automaticamente in risposta agli eventi del repository come pull request o release

20 

21Una singola routine può combinare trigger. Ad esempio, una routine di revisione PR può essere eseguita di notte, attivata da uno script di distribuzione e anche reagire a ogni nuovo PR.

22 

23Le routine sono disponibili sui piani Pro, Max, Team ed Enterprise con [Claude Code sul web](/it/claude-code-on-the-web) abilitato. Creale e gestiscile su [claude.ai/code/routines](https://claude.ai/code/routines), oppure dalla CLI con `/schedule`.

24 

25Questa pagina copre la creazione di una routine, la configurazione di ogni tipo di trigger, la gestione delle esecuzioni e come si applicano i limiti di utilizzo.

26 

27## Esempi di casi d'uso

28 

29Ogni esempio abbina un tipo di trigger al tipo di lavoro per cui le routine sono adatte: incustodito, ripetibile e legato a un risultato chiaro.

30 

31**Manutenzione del backlog.** Un trigger di pianificazione viene eseguito ogni sera feriale rispetto al tuo issue tracker tramite un connector. La routine legge i problemi aperti dall'ultima esecuzione, applica etichette, assegna proprietari in base all'area di codice referenziata e pubblica un riepilogo su Slack in modo che il team inizi la giornata con una coda curata.

32 

33**Triage degli avvisi.** Il tuo strumento di monitoraggio chiama l'endpoint API della routine quando viene superata una soglia di errore, passando il corpo dell'avviso come `text`. La routine estrae la traccia dello stack, la correla con i commit recenti nel repository e apre una pull request in bozza con una correzione proposta e un collegamento all'avviso. L'on-call esamina il PR invece di iniziare da un terminale vuoto.

34 

35**Revisione del codice personalizzata.** Un trigger GitHub viene eseguito su `pull_request.opened`. La routine applica la tua lista di controllo di revisione del team, lascia commenti inline per problemi di sicurezza, prestazioni e stile e aggiunge un commento di riepilogo in modo che i revisori umani possano concentrarsi sulla progettazione invece di controlli meccanici.

36 

37**Verifica della distribuzione.** La tua pipeline CD chiama l'endpoint API della routine dopo ogni distribuzione in produzione. La routine esegue controlli di fumo rispetto alla nuova build, scansiona i log degli errori per regressioni e pubblica un go o no-go nel canale di rilascio prima che la finestra di distribuzione si chiuda.

38 

39**Drift della documentazione.** Un trigger di pianificazione viene eseguito settimanalmente. La routine scansiona i PR uniti dall'ultima esecuzione, contrassegna la documentazione che fa riferimento alle API modificate e apre PR di aggiornamento rispetto al repository della documentazione per un editor da rivedere.

40 

41**Porting della libreria.** Un trigger GitHub viene eseguito su `pull_request.closed` filtrato per PR uniti in un repository SDK. La routine porta la modifica a un SDK parallelo in un'altra lingua e apre un PR corrispondente, mantenendo le due librerie sincronizzate senza che un umano reimplementi ogni modifica.

42 

43Le sezioni seguenti illustrano come creare una routine e configurare ognuno di questi tipi di trigger.

44 

45## Creare una routine

46 

47Crea una routine dal web, dall'app Desktop o dalla CLI. Tutte e tre le superfici scrivono nello stesso account cloud, quindi una routine che crei nella CLI appare su claude.ai/code/routines immediatamente. Nell'app Desktop, fai clic su **New task** e scegli **New remote task**; scegliere **New local task** crea invece un [local Desktop scheduled task](/it/desktop-scheduled-tasks), che viene eseguito sulla tua macchina e non è una routine.

48 

49Il modulo di creazione configura il prompt della routine, i repository, l'ambiente, i connector e i trigger.

50 

51Le routine vengono eseguite autonomamente come sessioni cloud complete di Claude Code: non c'è un selettore di modalità di autorizzazione e nessun prompt di approvazione durante un'esecuzione. La sessione può eseguire comandi shell, utilizzare [skills](/it/skills) impegnate nel repository clonato e chiamare qualsiasi connector incluso. Ciò che una routine può raggiungere è determinato dai repository che selezioni e dalla loro impostazione di branch-push, dall'[ambiente](/it/claude-code-on-the-web#the-cloud-environment) accesso di rete e variabili, e dai connector che includi. Delimita ognuno di questi a ciò di cui la routine ha effettivamente bisogno.

52 

53Le routine appartengono al tuo account claude.ai individuale. Non sono condivise con i compagni di squadra e contano rispetto al limite di esecuzione giornaliero del tuo account. Tutto ciò che una routine fa attraverso la tua identità GitHub connessa o i connector appare come te: i commit e le pull request portano il tuo utente GitHub e i messaggi Slack, i ticket Linear o altre azioni del connector utilizzano i tuoi account collegati per quei servizi.

54 

55### Creare dal web

56 

57<Steps>

58 <Step title="Apri il modulo di creazione">

59 Visita [claude.ai/code/routines](https://claude.ai/code/routines) e fai clic su **New routine**.

60 </Step>

61 

62 <Step title="Nomina la routine e scrivi il prompt">

63 Dai alla routine un nome descrittivo e scrivi il prompt che Claude esegue ogni volta. Il prompt è la parte più importante: la routine viene eseguita autonomamente, quindi il prompt deve essere autonomo ed esplicito su cosa fare e come appare il successo.

64 

65 L'input del prompt include un selettore di modello. Claude utilizza il modello selezionato su ogni esecuzione.

66 </Step>

67 

68 <Step title="Seleziona i repository">

69 Aggiungi uno o più repository GitHub per cui Claude possa lavorare. Ogni repository viene clonato all'inizio di un'esecuzione, a partire dal ramo predefinito. Claude crea rami con prefisso `claude/` per le sue modifiche. Per consentire i push a qualsiasi ramo, abilita **Allow unrestricted branch pushes** per quel repository.

70 </Step>

71 

72 <Step title="Seleziona un ambiente">

73 Scegli un [cloud environment](/it/claude-code-on-the-web#the-cloud-environment) per la routine. Gli ambienti controllano a cosa ha accesso la sessione cloud:

74 

75 * **Network access**: imposta il livello di accesso a Internet disponibile durante ogni esecuzione

76 * **Environment variables**: fornisci chiavi API, token o altri segreti che Claude può utilizzare

77 * **Setup script**: installa le dipendenze e gli strumenti di cui la routine ha bisogno. Il risultato è [cached](/it/claude-code-on-the-web#environment-caching), quindi lo script non viene rieseguito su ogni sessione

78 

79 Un ambiente **Default** è fornito. Per utilizzare un ambiente personalizzato, [creane uno](/it/claude-code-on-the-web#the-cloud-environment) prima di creare la routine.

80 </Step>

81 

82 <Step title="Seleziona un trigger">

83 Sotto **Select a trigger**, scegli come inizia la routine. Puoi scegliere un tipo di trigger o combinarne diversi.

84 

85 <Tabs>

86 <Tab title="Schedule">

87 Scegli una frequenza preimpostata: oraria, giornaliera, giorni feriali o settimanale. Vedi [Add a schedule trigger](#add-a-schedule-trigger) per la gestione del fuso orario, lo sfasamento e gli intervalli cron personalizzati.

88 </Tab>

89 

90 <Tab title="GitHub event">

91 Seleziona il repository, l'evento a cui reagire e filtri facoltativi. Vedi [Add a GitHub trigger](#add-a-github-trigger) per l'elenco completo degli eventi supportati e dei campi di filtro.

92 </Tab>

93 

94 <Tab title="API">

95 Seleziona **API** qui, quindi salva la routine. L'URL e il token vengono generati dopo il salvataggio della routine, poiché dipendono dall'ID della routine. Vedi [Add an API trigger](#add-an-api-trigger) per copiare l'URL e generare un token.

96 </Tab>

97 </Tabs>

98 </Step>

99 

100 <Step title="Rivedi i connector">

101 Tutti i tuoi [MCP connectors](/it/mcp) connessi sono inclusi per impostazione predefinita. Rimuovi quelli che la routine non necessita. I connector danno a Claude accesso ai servizi esterni come Slack, Linear o Google Drive durante ogni esecuzione.

102 </Step>

103 

104 <Step title="Crea la routine">

105 Fai clic su **Create**. La routine appare nell'elenco e viene eseguita la prossima volta che uno dei suoi trigger corrisponde. Per avviare un'esecuzione immediatamente, fai clic su **Run now** nella pagina dei dettagli della routine.

106 

107 Ogni esecuzione crea una nuova sessione insieme alle tue altre sessioni, dove puoi vedere cosa ha fatto Claude, rivedere le modifiche e creare una pull request.

108 </Step>

109</Steps>

110 

111### Creare dalla CLI

112 

113Esegui `/schedule` in qualsiasi sessione per creare una routine pianificata in modo conversazionale. Puoi anche passare una descrizione direttamente, come in `/schedule daily PR review at 9am`. Claude esamina le stesse informazioni che il modulo web raccoglie, quindi salva la routine nel tuo account.

114 

115`/schedule` nella CLI crea solo routine pianificate. Per aggiungere un trigger API o GitHub, modifica la routine sul web su [claude.ai/code/routines](https://claude.ai/code/routines).

116 

117La CLI supporta anche la gestione delle routine esistenti. Esegui `/schedule list` per vedere tutte le routine, `/schedule update` per modificarne una o `/schedule run` per attivarla immediatamente.

118 

119### Creare dall'app Desktop

120 

121Apri la pagina **Schedule** nell'app Desktop, fai clic su **New task** e scegli **New remote task**. L'app Desktop mostra sia i local scheduled task che le routine nella stessa griglia. Vedi [Desktop scheduled tasks](/it/desktop-scheduled-tasks) per i dettagli sull'opzione locale.

122 

123## Configurare i trigger

124 

125Una routine inizia quando uno dei suoi trigger corrisponde. Puoi allegare qualsiasi combinazione di trigger di pianificazione, API e GitHub alla stessa routine e aggiungerli o rimuoverli in qualsiasi momento dalla sezione **Select a trigger** del modulo di modifica della routine.

126 

127### Aggiungi un trigger di pianificazione

128 

129Un trigger di pianificazione esegue la routine su una cadenza ricorrente. Scegli una frequenza preimpostata nella sezione **Select a trigger**: oraria, giornaliera, giorni feriali o settimanale. I tempi vengono inseriti nella tua zona locale e convertiti automaticamente, quindi la routine viene eseguita a quell'ora di parete indipendentemente da dove si trova l'infrastruttura cloud.

130 

131Le esecuzioni possono iniziare alcuni minuti dopo l'ora pianificata a causa dello sfasamento. L'offset è coerente per ogni routine.

132 

133Per un intervallo personalizzato come ogni due ore o il primo di ogni mese, scegli il preset più vicino nel modulo, quindi esegui `/schedule update` nella CLI per impostare un'espressione cron specifica. L'intervallo minimo è un'ora; le espressioni che vengono eseguite più frequentemente vengono rifiutate.

134 

135### Aggiungi un trigger API

136 

137Un trigger API fornisce a una routine un endpoint HTTP dedicato. POSTing all'endpoint con il token bearer della routine avvia una nuova sessione e restituisce un URL di sessione. Usalo per collegare Claude Code nei sistemi di avviso, pipeline di distribuzione, strumenti interni o ovunque tu possa fare una richiesta HTTP autenticata.

138 

139I trigger API vengono aggiunti a una routine esistente dal web. La CLI attualmente non può creare o revocare token.

140 

141<Steps>

142 <Step title="Apri la routine per la modifica">

143 Vai a [claude.ai/code/routines](https://claude.ai/code/routines), fai clic sulla routine che desideri attivare tramite API, quindi fai clic sull'icona della matita per aprire **Edit routine**.

144 </Step>

145 

146 <Step title="Aggiungi un trigger API">

147 Scorri fino alla sezione **Select a trigger** sotto il prompt, fai clic su **Add another trigger** e scegli **API**.

148 </Step>

149 

150 <Step title="Copia l'URL e genera un token">

151 Il modale mostra l'URL per questa routine insieme a un comando curl di esempio. Copia l'URL, quindi fai clic su **Generate token** e copia il token immediatamente. Il token viene mostrato una sola volta e non può essere recuperato in seguito, quindi archivialo in un luogo sicuro come l'archivio segreto del tuo strumento di avviso.

152 </Step>

153 

154 <Step title="Chiama l'endpoint">

155 Invia il token nell'intestazione `Authorization: Bearer` quando POST all'URL. La sezione [Trigger a routine](#trigger-a-routine) di seguito mostra un esempio completo.

156 </Step>

157</Steps>

158 

159Ogni routine ha il suo token, limitato all'attivazione di quella routine sola. Per ruotarlo o revocarlo, torna allo stesso modale e fai clic su **Regenerate** o **Revoke**.

160 

161#### Attiva una routine

162 

163Invia una richiesta POST all'endpoint `/fire` con il token bearer nell'intestazione `Authorization`. Il corpo della richiesta accetta un campo `text` facoltativo per il contesto specifico dell'esecuzione come un corpo di avviso o un log in errore, passato alla routine insieme al suo prompt salvato. Il valore è testo libero e non viene analizzato: se invii JSON o un altro payload strutturato, la routine lo riceve come stringa letterale.

164 

165L'esempio seguente attiva una routine da una shell:

166 

167```bash theme={null}

168curl -X POST https://api.anthropic.com/v1/claude_code/routines/trig_01ABCDEFGHJKLMNOPQRSTUVW/fire \

169 -H "Authorization: Bearer sk-ant-oat01-xxxxx" \

170 -H "anthropic-beta: experimental-cc-routine-2026-04-01" \

171 -H "anthropic-version: 2023-06-01" \

172 -H "Content-Type: application/json" \

173 -d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'

174```

175 

176Una richiesta riuscita restituisce un corpo JSON con il nuovo ID di sessione e l'URL:

177 

178```json theme={null}

179{

180 "type": "routine_fire",

181 "claude_code_session_id": "session_01HJKLMNOPQRSTUVWXYZ",

182 "claude_code_session_url": "https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ"

183}

184```

185 

186Apri l'URL della sessione in un browser per guardare l'esecuzione in tempo reale, rivedere le modifiche o continuare la conversazione manualmente.

187 

188<Warning>

189 L'endpoint `/fire` viene fornito con l'intestazione beta `experimental-cc-routine-2026-04-01`. Le forme di richiesta e risposta, i limiti di velocità e la semantica dei token potrebbero cambiare mentre la funzione è in anteprima di ricerca. Le modifiche di rilievo vengono fornite dietro nuove versioni di intestazione beta con data, e le due versioni di intestazione precedenti più recenti continuano a funzionare in modo che i chiamanti abbiano tempo per migrare.

190</Warning>

191 

192#### Riferimento API

193 

194Per il riferimento API completo, incluse tutte le risposte di errore, le regole di convalida e i limiti dei campi, vedi [Trigger a routine via API](https://platform.claude.com/docs/it/api/claude-code/routines-fire) nella documentazione della piattaforma Claude.

195 

196L'endpoint `/fire` è disponibile solo per gli utenti di claude.ai e non fa parte della superficie dell'API della piattaforma Claude.

197 

198### Aggiungi un trigger GitHub

199 

200Un trigger GitHub avvia una nuova sessione automaticamente quando si verifica un evento corrispondente su un repository connesso. Ogni evento corrispondente avvia la sua sessione.

201 

202<Note>

203 Durante l'anteprima di ricerca, gli eventi webhook di GitHub sono soggetti a limiti orari per routine e per account. Gli eventi oltre il limite vengono eliminati fino al ripristino della finestra. Vedi i tuoi limiti attuali su [claude.ai/code/routines](https://claude.ai/code/routines).

204</Note>

205 

206I trigger GitHub vengono configurati solo dall'interfaccia utente web.

207 

208<Steps>

209 <Step title="Apri la routine per la modifica">

210 Vai a [claude.ai/code/routines](https://claude.ai/code/routines), fai clic sulla routine, quindi fai clic sull'icona della matita per aprire **Edit routine**.

211 </Step>

212 

213 <Step title="Aggiungi un trigger di evento GitHub">

214 Scorri fino alla sezione **Select a trigger**, fai clic su **Add another trigger** e scegli **GitHub event**.

215 </Step>

216 

217 <Step title="Installa l'app Claude GitHub">

218 L'app Claude GitHub deve essere installata sul repository a cui desideri sottoscriverti. La configurazione del trigger ti chiede di installarla se non lo è già.

219 

220 <Note>

221 L'esecuzione di `/web-setup` nella CLI concede l'accesso al repository per la clonazione, ma non installa l'app Claude GitHub e non abilita la consegna del webhook. I trigger GitHub richiedono l'installazione dell'app Claude GitHub, che la configurazione del trigger ti chiede di fare.

222 </Note>

223 </Step>

224 

225 <Step title="Configura il trigger">

226 Seleziona il repository, scegli un evento dall'elenco [supported events](#supported-events) e facoltativamente aggiungi filtri. Salva il trigger.

227 </Step>

228</Steps>

229 

230#### Eventi supportati

231 

232I trigger GitHub possono sottoscriversi a una delle seguenti categorie di eventi. All'interno di ogni categoria puoi scegliere un'azione specifica, come `pull_request.opened`, o reagire a tutte le azioni nella categoria.

233 

234| Event | Triggers when |

235| :----------- | :---------------------------------------------------------------------------------------- |

236| Pull request | Un PR viene aperto, chiuso, assegnato, etichettato, sincronizzato o altrimenti aggiornato |

237| Release | Un rilascio viene creato, pubblicato, modificato o eliminato |

238 

239#### Filtra le pull request

240 

241Usa i filtri per restringere quali pull request avviano una nuova sessione. Tutte le condizioni di filtro devono corrispondere affinché la routine si attivi. I campi di filtro disponibili sono:

242 

243| Filter | Matches |

244| :---------- | :------------------------------------ |

245| Author | Nome utente GitHub dell'autore del PR |

246| Title | Testo del titolo del PR |

247| Body | Testo della descrizione del PR |

248| Base branch | Ramo a cui il PR è destinato |

249| Head branch | Ramo da cui proviene il PR |

250| Labels | Etichette applicate al PR |

251| Is draft | Se il PR è in stato di bozza |

252| Is merged | Se il PR è stato unito |

253 

254Ogni filtro abbina un campo a un operatore: equals, contains, starts with, is one of, is not one of o matches regex.

255 

256L'operatore `matches regex` testa l'intero valore del campo, non una sottostringa al suo interno. Per abbinare qualsiasi titolo contenente `hotfix`, scrivi `.*hotfix.*`. Senza il `.*` circostante, il filtro corrisponde solo a un titolo che è esattamente `hotfix` senza nulla prima o dopo. Per l'abbinamento di sottostringa letterale senza sintassi regex, usa l'operatore `contains`.

257 

258Alcuni esempi di combinazioni di filtri:

259 

260* **Auth module review**: base branch `main`, head branch contains `auth-provider`. Invia qualsiasi PR che tocca l'autenticazione a un revisore focalizzato.

261* **Ready-for-review only**: is draft is `false`. Salta le bozze in modo che la routine venga eseguita solo quando il PR è pronto per la revisione.

262* **Label-gated backport**: labels include `needs-backport`. Attiva una routine di port-to-another-branch solo quando un manutentore etichetta il PR.

263 

264#### Come le sessioni si mappano agli eventi

265 

266Ogni evento GitHub corrispondente avvia una nuova sessione. Il riutilizzo della sessione tra gli eventi non è disponibile per le routine attivate da GitHub, quindi due aggiornamenti PR producono due sessioni indipendenti.

267 

268## Gestisci le routine

269 

270Fai clic su una routine nell'elenco per aprire la sua pagina di dettagli. La pagina dei dettagli mostra i repository della routine, i connector, il prompt, la pianificazione, i token API, i trigger GitHub e un elenco delle esecuzioni passate.

271 

272### Visualizza e interagisci con le esecuzioni

273 

274Fai clic su qualsiasi esecuzione per aprirla come sessione completa. Da lì puoi vedere cosa ha fatto Claude, rivedere le modifiche, creare una pull request o continuare la conversazione. Ogni sessione di esecuzione funziona come qualsiasi altra sessione: usa il menu a discesa accanto al titolo della sessione per rinominare, archiviare o eliminare.

275 

276### Modifica e controlla le routine

277 

278Dalla pagina dei dettagli della routine puoi:

279 

280* Fai clic su **Run now** per avviare un'esecuzione immediatamente senza aspettare l'ora pianificata successiva.

281* Usa l'interruttore nella sezione **Repeats** per mettere in pausa o riprendere la pianificazione. Le routine in pausa mantengono la loro configurazione ma non vengono eseguite fino a quando non le riabiliti.

282* Fai clic sull'icona della matita per aprire **Edit routine** e modificare il nome, il prompt, i repository, l'ambiente, i connector o uno qualsiasi dei trigger della routine. La sezione **Select a trigger** è dove aggiungi o rimuovi pianificazioni, token API e trigger di eventi GitHub.

283* Fai clic sull'icona di eliminazione per rimuovere la routine. Le sessioni passate create dalla routine rimangono nell'elenco delle sessioni.

284 

285### Repository e autorizzazioni di ramo

286 

287Le routine necessitano dell'accesso a GitHub per clonare i repository. Quando crei una routine dalla CLI con `/schedule`, Claude verifica se il tuo account ha GitHub connesso e ti chiede di eseguire `/web-setup` se non lo è. Vedi [GitHub authentication options](/it/claude-code-on-the-web#github-authentication-options) per i due modi per concedere l'accesso.

288 

289Ogni repository che aggiungi viene clonato su ogni esecuzione. Claude inizia dal ramo predefinito del repository a meno che il tuo prompt non specifichi diversamente.

290 

291Per impostazione predefinita, Claude può solo eseguire il push ai rami con prefisso `claude/`. Questo impedisce alle routine di modificare accidentalmente rami protetti o di lunga durata. Per rimuovere questa restrizione per un repository specifico, abilita **Allow unrestricted branch pushes** per quel repository quando crei o modifichi la routine.

292 

293### Connector

294 

295Le routine possono utilizzare i tuoi MCP connector connessi per leggere e scrivere nei servizi esterni durante ogni esecuzione. Ad esempio, una routine che triage le richieste di supporto potrebbe leggere da un canale Slack e creare problemi in Linear.

296 

297Quando crei una routine, tutti i tuoi connector attualmente connessi sono inclusi per impostazione predefinita. Rimuovi quelli non necessari per limitare a quali strumenti Claude ha accesso durante l'esecuzione. Puoi anche aggiungere connector direttamente dal modulo della routine.

298 

299Per gestire o aggiungere connector al di fuori del modulo della routine, visita **Settings > Connectors** su claude.ai o usa `/schedule update` nella CLI.

300 

301### Ambienti

302 

303Ogni routine viene eseguita in un [cloud environment](/it/claude-code-on-the-web#the-cloud-environment) che controlla l'accesso di rete, le variabili di ambiente e gli script di configurazione. Configura gli ambienti prima di creare una routine per dare a Claude accesso alle API, installare dipendenze o limitare l'ambito di rete. Vedi [cloud environment](/it/claude-code-on-the-web#the-cloud-environment) per la guida di configurazione completa.

304 

305## Utilizzo e limiti

306 

307Le routine riducono l'utilizzo dell'abbonamento allo stesso modo delle sessioni interattive. Oltre ai limiti di abbonamento standard, le routine hanno un limite giornaliero su quante esecuzioni possono iniziare per account. Vedi il tuo consumo attuale e le esecuzioni di routine giornaliere rimanenti su [claude.ai/code/routines](https://claude.ai/code/routines) o [claude.ai/settings/usage](https://claude.ai/settings/usage).

308 

309Quando una routine raggiunge il limite giornaliero o il limite di utilizzo dell'abbonamento, le organizzazioni con utilizzo extra abilitato possono continuare a eseguire routine su eccedenza misurata. Senza utilizzo extra, le esecuzioni aggiuntive vengono rifiutate fino al ripristino della finestra. Abilita l'utilizzo extra da **Settings > Billing** su claude.ai.

310 

311## Risorse correlate

312 

313* [`/loop` e pianificazione in-sessione](/it/scheduled-tasks): pianifica attività locali all'interno di una sessione CLI aperta

314* [Desktop scheduled tasks](/it/desktop-scheduled-tasks): attività pianificate locali che vengono eseguite sulla tua macchina con accesso ai file locali

315* [Cloud environment](/it/claude-code-on-the-web#the-cloud-environment): configura l'ambiente di runtime per le sessioni cloud

316* [MCP connectors](/it/mcp): connetti servizi esterni come Slack, Linear e Google Drive

317* [GitHub Actions](/it/github-actions): esegui Claude nella tua pipeline CI su eventi del repository

sandboxing.md +329 −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# Sandboxing

6 

7> Scopri come lo strumento bash in sandbox di Claude Code fornisce isolamento del filesystem e della rete per un'esecuzione dell'agente più sicura e autonoma.

8 

9## Panoramica

10 

11Claude Code include il sandboxing nativo per fornire un ambiente più sicuro per l'esecuzione dell'agente, riducendo la necessità di prompt di autorizzazione costanti. Invece di chiedere autorizzazione per ogni comando bash, il sandboxing crea confini definiti in anticipo dove Claude Code può lavorare più liberamente con rischio ridotto.

12 

13Lo strumento bash in sandbox utilizza primitive a livello del sistema operativo per applicare sia l'isolamento del filesystem che della rete.

14 

15## Perché il sandboxing è importante

16 

17La sicurezza tradizionale basata su autorizzazioni richiede l'approvazione costante dell'utente per i comandi bash. Sebbene questo fornisca controllo, può portare a:

18 

19* **Affaticamento da approvazione**: Fare clic ripetutamente su "approva" può causare agli utenti di prestare meno attenzione a ciò che stanno approvando

20* **Produttività ridotta**: Le interruzioni costanti rallentano i flussi di lavoro di sviluppo

21* **Autonomia limitata**: Claude Code non può lavorare in modo efficiente quando è in attesa di approvazioni

22 

23Il sandboxing affronta queste sfide:

24 

251. **Definendo confini chiari**: Specifica esattamente quali directory e host di rete Claude Code può accedere

262. **Riducendo i prompt di autorizzazione**: I comandi sicuri all'interno della sandbox non richiedono approvazione

273. **Mantenendo la sicurezza**: I tentativi di accedere a risorse al di fuori della sandbox attivano notifiche immediate

284. **Abilitando l'autonomia**: Claude Code può funzionare più indipendentemente entro limiti definiti

29 

30<Warning>

31 Il sandboxing efficace richiede **sia** l'isolamento del filesystem che della rete. Senza isolamento della rete, un agente compromesso potrebbe esfiltare file sensibili come chiavi SSH. Senza isolamento del filesystem, un agente compromesso potrebbe backdoor le risorse di sistema per ottenere accesso alla rete. Quando si configura il sandboxing è importante assicurarsi che le impostazioni configurate non creino bypass in questi sistemi.

32</Warning>

33 

34## Come funziona

35 

36### Isolamento del filesystem

37 

38Lo strumento bash in sandbox limita l'accesso al file system a directory specifiche:

39 

40* **Comportamento di scrittura predefinito**: Accesso in lettura e scrittura alla directory di lavoro corrente e alle sue sottodirectory

41* **Comportamento di lettura predefinito**: Accesso in lettura all'intero computer, ad eccezione di determinate directory negate

42* **Accesso bloccato**: Non è possibile modificare file al di fuori della directory di lavoro corrente senza autorizzazione esplicita

43* **Configurabile**: Definisci percorsi consentiti e negati personalizzati tramite le impostazioni

44 

45È possibile concedere l'accesso in scrittura a percorsi aggiuntivi utilizzando `sandbox.filesystem.allowWrite` nelle impostazioni. Queste restrizioni sono applicate a livello del sistema operativo (Seatbelt su macOS, bubblewrap su Linux), quindi si applicano a tutti i comandi dei sottoprocessi, inclusi strumenti come `kubectl`, `terraform` e `npm`, non solo agli strumenti di file di Claude.

46 

47### Isolamento della rete

48 

49L'accesso alla rete è controllato tramite un server proxy in esecuzione al di fuori della sandbox:

50 

51* **Restrizioni di dominio**: Solo i domini approvati possono essere accessibili

52* **Conferma dell'utente**: Le nuove richieste di dominio attivano prompt di autorizzazione (a meno che [`allowManagedDomainsOnly`](/it/settings#sandbox-settings) non sia abilitato, che blocca automaticamente i domini non consentiti)

53* **Supporto proxy personalizzato**: Gli utenti avanzati possono implementare regole personalizzate sul traffico in uscita

54* **Copertura completa**: Le restrizioni si applicano a tutti gli script, programmi e sottoprocessi generati dai comandi

55 

56### Applicazione a livello del sistema operativo

57 

58Lo strumento bash in sandbox sfrutta le primitive di sicurezza del sistema operativo:

59 

60* **macOS**: Utilizza Seatbelt per l'applicazione della sandbox

61* **Linux**: Utilizza [bubblewrap](https://github.com/containers/bubblewrap) per l'isolamento

62* **WSL2**: Utilizza bubblewrap, come Linux

63 

64WSL1 non è supportato perché bubblewrap richiede funzionalità del kernel disponibili solo in WSL2.

65 

66Queste restrizioni a livello del sistema operativo assicurano che tutti i processi figlio generati dai comandi di Claude Code ereditino gli stessi confini di sicurezza.

67 

68## Iniziare

69 

70### Prerequisiti

71 

72Su **macOS**, il sandboxing funziona subito utilizzando il framework Seatbelt integrato.

73 

74Su **Linux e WSL2**, installa prima i pacchetti richiesti:

75 

76<Tabs>

77 <Tab title="Ubuntu/Debian">

78 ```bash theme={null}

79 sudo apt-get install bubblewrap socat

80 ```

81 </Tab>

82 

83 <Tab title="Fedora">

84 ```bash theme={null}

85 sudo dnf install bubblewrap socat

86 ```

87 </Tab>

88</Tabs>

89 

90WSL1 non supporta il sandboxing perché manca dei primitivi dello spazio dei nomi Linux richiesti. Se vedi `Sandboxing requires WSL2`, aggiorna la tua distribuzione a WSL2 o esegui Claude Code senza sandboxing.

91 

92Su WSL2, i comandi sandboxati non possono avviare binari Windows come `cmd.exe`, `powershell.exe`, o qualsiasi cosa sotto `/mnt/c/`. WSL li passa all'host Windows su un socket Unix, che la sandbox blocca. Se un comando ha bisogno di invocare un binario Windows, aggiungilo a [`excludedCommands`](/it/settings#sandbox-settings) in modo che venga eseguito al di fuori della sandbox.

93 

94### Abilita il sandboxing

95 

96È possibile abilitare il sandboxing eseguendo il comando `/sandbox`:

97 

98```text theme={null}

99/sandbox

100```

101 

102Questo apre un menu in cui è possibile scegliere tra le modalità sandbox. Se le dipendenze richieste sono mancanti (come `bubblewrap` o `socat` su Linux), il menu visualizza le istruzioni di installazione per la piattaforma.

103 

104Per impostazione predefinita, se la sandbox non può avviarsi (dipendenze mancanti o piattaforma non supportata), Claude Code mostra un avviso ed esegue i comandi senza sandboxing. Per rendere questo un errore grave, imposta [`sandbox.failIfUnavailable`](/it/settings#sandbox-settings) su `true`. Questo è destinato a distribuzioni gestite che richiedono il sandboxing come gate di sicurezza.

105 

106### Modalità sandbox

107 

108Claude Code offre due modalità sandbox:

109 

110**Modalità auto-allow**: I comandi Bash tenteranno di eseguire all'interno della sandbox e sono automaticamente consentiti senza richiedere autorizzazione. I comandi che non possono essere sandboxati (come quelli che necessitano di accesso alla rete a host non consentiti) ricadono nel flusso di autorizzazione regolare. Le regole di negazione esplicita sono sempre rispettate, e i comandi `rm` o `rmdir` che puntano a `/`, alla tua directory home o ad altri percorsi critici del sistema attivano comunque una richiesta di autorizzazione. Le regole Ask si applicano solo ai comandi che ricadono nel flusso di autorizzazione regolare.

111 

112**Modalità autorizzazioni regolari**: Tutti i comandi bash passano attraverso il flusso di autorizzazione standard, anche quando sandboxati. Questo fornisce più controllo ma richiede più approvazioni.

113 

114In entrambe le modalità, la sandbox applica le stesse restrizioni di filesystem e rete. La differenza è solo se i comandi sandboxati sono auto-approvati o richiedono autorizzazione esplicita.

115 

116<Info>

117 La modalità auto-allow funziona indipendentemente dall'impostazione della modalità di autorizzazione. Anche se non sei in modalità "accetta modifiche", i comandi bash sandboxati verranno eseguiti automaticamente quando auto-allow è abilitato. Ciò significa che i comandi bash che modificano file entro i confini della sandbox verranno eseguiti senza richiedere, anche quando gli strumenti di modifica dei file normalmente richiederebbero approvazione.

118</Info>

119 

120### Configura il sandboxing

121 

122Personalizza il comportamento della sandbox tramite il file `settings.json`. Vedi [Settings](/it/settings#sandbox-settings) per il riferimento di configurazione completo.

123 

124#### Concessione dell'accesso in scrittura dei sottoprocessi a percorsi specifici

125 

126Per impostazione predefinita, i comandi sandboxati possono scrivere solo nella directory di lavoro corrente. Se i comandi dei sottoprocessi come `kubectl`, `terraform` o `npm` devono scrivere al di fuori della directory del progetto, utilizza `sandbox.filesystem.allowWrite` per concedere l'accesso a percorsi specifici:

127 

128```json theme={null}

129{

130 "sandbox": {

131 "enabled": true,

132 "filesystem": {

133 "allowWrite": ["~/.kube", "/tmp/build"]

134 }

135 }

136}

137```

138 

139Questi percorsi sono applicati a livello del sistema operativo, quindi tutti i comandi in esecuzione all'interno della sandbox, inclusi i loro processi figlio, li rispettano. Questo è l'approccio consigliato quando uno strumento ha bisogno di accesso in scrittura a una posizione specifica, piuttosto che escludere completamente lo strumento dalla sandbox con `excludedCommands`.

140 

141Quando `allowWrite` (o `denyWrite`/`denyRead`/`allowRead`) è definito in più [ambiti di impostazioni](/it/settings#settings-precedence), gli array sono **uniti**, il che significa che i percorsi da ogni ambito sono combinati, non sostituiti. Ad esempio, se le impostazioni gestite consentono scritture in `/opt/company-tools` e un utente aggiunge `~/.kube` nelle sue impostazioni personali, entrambi i percorsi sono inclusi nella configurazione finale della sandbox. Ciò significa che gli utenti e i progetti possono estendere l'elenco senza duplicare o sovrascrivere i percorsi impostati da ambiti con priorità più alta.

142 

143I prefissi di percorso controllano come i percorsi vengono risolti:

144 

145| Prefisso | Significato | Esempio |

146| :--------------------- | :------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------- |

147| `/` | Percorso assoluto dalla radice del filesystem | `/tmp/build` rimane `/tmp/build` |

148| `~/` | Relativo alla directory home | `~/.kube` diventa `$HOME/.kube` |

149| `./` o nessun prefisso | Relativo alla radice del progetto per le impostazioni del progetto, o a `~/.claude` per le impostazioni dell'utente | `./output` in `.claude/settings.json` si risolve in `<project-root>/output` |

150 

151Il prefisso precedente `//path` per i percorsi assoluti funziona ancora. Se in precedenza hai utilizzato `/path` aspettandoti una risoluzione relativa al progetto, passa a `./path`. Questa sintassi differisce dalle [regole di autorizzazione Read e Edit](/it/permissions#read-and-edit), che utilizzano `//path` per assoluto e `/path` per relativo al progetto. I percorsi del filesystem della sandbox utilizzano convenzioni standard: `/tmp/build` è un percorso assoluto.

152 

153È inoltre possibile negare l'accesso in scrittura o lettura utilizzando `sandbox.filesystem.denyWrite` e `sandbox.filesystem.denyRead`. Questi vengono uniti con qualsiasi percorso dalle regole di autorizzazione `Edit(...)` e `Read(...)`. Per ri-consentire la lettura di percorsi specifici all'interno di una regione negata, utilizza `sandbox.filesystem.allowRead`, che ha la precedenza su `denyRead`. Quando `allowManagedReadPathsOnly` è abilitato nelle impostazioni gestite, solo le voci `allowRead` gestite sono rispettate; le voci `allowRead` dell'utente, del progetto e locali vengono ignorate. `denyRead` continua a unirsi da tutte le fonti.

154 

155Ad esempio, per bloccare la lettura dall'intera directory home consentendo comunque letture dal progetto corrente, aggiungi questo al `.claude/settings.json` del tuo progetto:

156 

157```json theme={null}

158{

159 "sandbox": {

160 "enabled": true,

161 "filesystem": {

162 "denyRead": ["~/"],

163 "allowRead": ["."]

164 }

165 }

166}

167```

168 

169Il `.` in `allowRead` si risolve nella radice del progetto perché questa configurazione si trova nelle impostazioni del progetto. Se hai posizionato la stessa configurazione in `~/.claude/settings.json`, `.` si risolverebbe in `~/.claude` invece, e i file del progetto rimarrebbero bloccati dalla regola `denyRead`.

170 

171<Tip>

172 Non tutti i comandi sono compatibili con il sandboxing subito. Alcuni appunti che potrebbero aiutarti a ottenere il massimo dalla sandbox:

173 

174 * Molti strumenti CLI richiedono l'accesso a determinati host. Man mano che utilizzi questi strumenti, richiederanno l'autorizzazione per accedere a determinati host. Concedere l'autorizzazione consentirà loro di accedere a questi host ora e in futuro, consentendo loro di eseguire in modo sicuro all'interno della sandbox.

175 * `watchman` è incompatibile con l'esecuzione nella sandbox. Se stai eseguendo `jest`, considera di utilizzare `jest --no-watchman`

176 * `docker` è incompatibile con l'esecuzione nella sandbox. Considera di specificare `docker *` in `excludedCommands` per forzarlo a eseguire al di fuori della sandbox.

177</Tip>

178 

179<Note>

180 Claude Code include un meccanismo di escape hatch intenzionale che consente ai comandi di eseguire al di fuori della sandbox quando necessario. Quando un comando non riesce a causa di restrizioni della sandbox (come problemi di connettività di rete o strumenti incompatibili), Claude viene richiesto di analizzare l'errore e potrebbe riprovare il comando con il parametro `dangerouslyDisableSandbox`. I comandi che utilizzano questo parametro passano attraverso il flusso di autorizzazioni normale di Claude Code richiedendo l'autorizzazione dell'utente per l'esecuzione. Ciò consente a Claude Code di gestire i casi limite in cui determinati strumenti o operazioni di rete non possono funzionare entro i vincoli della sandbox.

181 

182 È possibile disabilitare questo escape hatch impostando `"allowUnsandboxedCommands": false` nelle [impostazioni della sandbox](/it/settings#sandbox-settings). Quando disabilitato, il parametro `dangerouslyDisableSandbox` viene completamente ignorato e tutti i comandi devono essere eseguiti sandboxati o essere esplicitamente elencati in `excludedCommands`.

183</Note>

184 

185## Vantaggi della sicurezza

186 

187### Protezione contro l'iniezione di prompt

188 

189Anche se un attaccante manipola con successo il comportamento di Claude Code attraverso l'iniezione di prompt, la sandbox assicura che il sistema rimanga sicuro:

190 

191**Protezione del filesystem:**

192 

193* Non è possibile modificare file di configurazione critici come `~/.bashrc`

194* Non è possibile modificare file a livello di sistema in `/bin/`

195* Non è possibile leggere file che sono negati nelle [impostazioni di autorizzazione di Claude](/it/permissions#manage-permissions)

196 

197**Protezione della rete:**

198 

199* Non è possibile esfiltare dati a server controllati dall'attaccante

200* Non è possibile scaricare script dannosi da domini non autorizzati

201* Non è possibile effettuare chiamate API inaspettate a servizi non approvati

202* Non è possibile contattare alcun dominio non esplicitamente consentito

203 

204**Monitoraggio e controllo:**

205 

206* Tutti i tentativi di accesso al di fuori della sandbox sono bloccati a livello del sistema operativo

207* Ricevi notifiche immediate quando i confini vengono testati

208* È possibile scegliere di negare, consentire una volta o aggiornare permanentemente la configurazione

209 

210### Superficie di attacco ridotta

211 

212Il sandboxing limita il danno potenziale da:

213 

214* **Dipendenze dannose**: Pacchetti NPM o altre dipendenze con codice dannoso

215* **Script compromessi**: Script di compilazione o strumenti con vulnerabilità di sicurezza

216* **Ingegneria sociale**: Attacchi che ingannano gli utenti nel far eseguire comandi pericolosi

217* **Iniezione di prompt**: Attacchi che ingannano Claude nel far eseguire comandi pericolosi

218 

219### Funzionamento trasparente

220 

221Quando Claude Code tenta di accedere a risorse di rete al di fuori della sandbox:

222 

2231. L'operazione viene bloccata a livello del sistema operativo

2242. Ricevi una notifica immediata

2253. È possibile scegliere di:

226 * Negare la richiesta

227 * Consentirla una volta

228 * Aggiornare la configurazione della sandbox per consentirla permanentemente

229 

230## Limitazioni della sicurezza

231 

232* Limitazioni del sandboxing della rete: Il sistema di filtraggio della rete funziona limitando i domini a cui i processi possono connettersi. Non ispeziona altrimenti il traffico che passa attraverso il proxy e gli utenti sono responsabili di assicurarsi che consentano solo domini affidabili nella loro politica.

233 

234<Warning>

235 Gli utenti dovrebbero essere consapevoli dei potenziali rischi derivanti dal consentire domini ampi come `github.com` che potrebbero consentire l'esfiltrazione di dati. Inoltre, in alcuni casi potrebbe essere possibile aggirare il filtraggio della rete attraverso il [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting).

236</Warning>

237 

238* Escalation dei privilegi tramite Unix Sockets: La configurazione `allowUnixSockets` può inavvertitamente concedere l'accesso a potenti servizi di sistema che potrebbero portare a bypass della sandbox. Ad esempio, se viene utilizzato per consentire l'accesso a `/var/run/docker.sock` questo concederebbe effettivamente l'accesso al sistema host sfruttando il socket docker. Gli utenti sono incoraggiati a considerare attentamente qualsiasi socket unix che consentono attraverso la sandbox.

239* Escalation dei permessi del filesystem: I permessi di scrittura del filesystem eccessivamente ampi possono abilitare attacchi di escalation dei privilegi. Consentire scritture a directory contenenti eseguibili in `$PATH`, directory di configurazione di sistema o file di configurazione della shell dell'utente (`.bashrc`, `.zshrc`) può portare all'esecuzione di codice in diversi contesti di sicurezza quando altri utenti o processi di sistema accedono a questi file.

240* Forza della sandbox Linux: L'implementazione Linux fornisce un forte isolamento del filesystem e della rete ma include una modalità `enableWeakerNestedSandbox` che le consente di funzionare all'interno di ambienti Docker senza namespace privilegiati. Questa opzione indebolisce considerevolmente la sicurezza e dovrebbe essere utilizzata solo nei casi in cui l'isolamento aggiuntivo è altrimenti applicato.

241 

242## Come il sandboxing si relaziona alle autorizzazioni

243 

244Il sandboxing e le [autorizzazioni](/it/permissions) sono livelli di sicurezza complementari che funzionano insieme:

245 

246* **Autorizzazioni** controllano quali strumenti Claude Code può utilizzare e vengono valutate prima che qualsiasi strumento venga eseguito. Si applicano a tutti gli strumenti: Bash, Read, Edit, WebFetch, MCP e altri.

247* **Sandboxing** fornisce l'applicazione a livello del sistema operativo che limita ciò che i comandi Bash possono accedere a livello di filesystem e rete. Si applica solo ai comandi Bash e ai loro processi figlio.

248 

249Le restrizioni di filesystem e rete sono configurate sia tramite le impostazioni della sandbox che le regole di autorizzazione:

250 

251* Utilizza `sandbox.filesystem.allowWrite` per concedere l'accesso in scrittura dei sottoprocessi a percorsi al di fuori della directory di lavoro

252* Utilizza `sandbox.filesystem.denyWrite` e `sandbox.filesystem.denyRead` per bloccare l'accesso dei sottoprocessi a percorsi specifici

253* Utilizza `sandbox.filesystem.allowRead` per ri-consentire la lettura di percorsi specifici all'interno di una regione `denyRead`

254* Utilizza le regole di negazione `Read` e `Edit` per bloccare l'accesso a file o directory specifici

255* Utilizza le regole di consentimento/negazione `WebFetch` per controllare l'accesso al dominio

256* Utilizza la sandbox `allowedDomains` per controllare quali domini i comandi Bash possono raggiungere

257* Utilizza la sandbox `deniedDomains` per bloccare domini specifici anche quando un wildcard `allowedDomains` più ampio altrimenti li permetterebbe

258 

259I percorsi dalle impostazioni `sandbox.filesystem` e dalle regole di autorizzazione vengono uniti insieme nella configurazione finale della sandbox.

260 

261Questo [repository](https://github.com/anthropics/claude-code/tree/main/examples/settings) include configurazioni di impostazioni iniziali per scenari di distribuzione comuni, inclusi esempi specifici della sandbox. Utilizzali come punti di partenza e adattali alle tue esigenze.

262 

263## Utilizzo avanzato

264 

265### Configurazione proxy personalizzata

266 

267Per le organizzazioni che richiedono una sicurezza di rete avanzata, è possibile implementare un proxy personalizzato per:

268 

269* Decrittare e ispezionare il traffico HTTPS

270* Applicare regole di filtraggio personalizzate

271* Registrare tutte le richieste di rete

272* Integrarsi con l'infrastruttura di sicurezza esistente

273 

274```json theme={null}

275{

276 "sandbox": {

277 "network": {

278 "httpProxyPort": 8080,

279 "socksProxyPort": 8081

280 }

281 }

282}

283```

284 

285### Integrazione con gli strumenti di sicurezza esistenti

286 

287Lo strumento bash in sandbox funziona insieme a:

288 

289* **Regole di autorizzazione**: Combina con [impostazioni di autorizzazione](/it/permissions) per la difesa in profondità

290* **Contenitori di sviluppo**: Utilizza con [dev containers](/it/devcontainer) per un isolamento aggiuntivo

291* **Politiche aziendali**: Applica le configurazioni della sandbox tramite [impostazioni gestite](/it/settings#settings-precedence)

292 

293## Best practice

294 

2951. **Inizia restrittivo**: Inizia con autorizzazioni minime e espandi secondo le necessità

2962. **Monitora i log**: Rivedi i tentativi di violazione della sandbox per comprendere le esigenze di Claude Code

2973. **Utilizza configurazioni specifiche dell'ambiente**: Diverse regole sandbox per contesti di sviluppo rispetto a produzione

2984. **Combina con autorizzazioni**: Utilizza il sandboxing insieme alle politiche IAM per una sicurezza completa

2995. **Testa le configurazioni**: Verifica che le impostazioni della sandbox non blocchino i flussi di lavoro legittimi

300 

301## Open source

302 

303Il runtime della sandbox è disponibile come pacchetto npm open source per l'uso nei tuoi progetti di agente. Ciò consente alla comunità più ampia degli agenti AI di costruire sistemi autonomi più sicuri. Questo può anche essere utilizzato per sandboxare altri programmi che potresti desiderare di eseguire. Ad esempio, per sandboxare un server MCP potresti eseguire:

304 

305```bash theme={null}

306npx @anthropic-ai/sandbox-runtime <command-to-sandbox>

307```

308 

309Per i dettagli di implementazione e il codice sorgente, visita il [repository GitHub](https://github.com/anthropic-experimental/sandbox-runtime).

310 

311## Limitazioni

312 

313* **Overhead di prestazioni**: Minimo, ma alcune operazioni del filesystem potrebbero essere leggermente più lente

314* **Compatibilità**: Alcuni strumenti che richiedono modelli di accesso al sistema specifici potrebbero necessitare di regolazioni di configurazione, o potrebbero anche dover essere eseguiti al di fuori della sandbox

315* **Supporto della piattaforma**: Supporta macOS, Linux e WSL2. WSL1 non è supportato. Il supporto nativo di Windows è pianificato.

316 

317## Cosa il sandboxing non copre

318 

319La sandbox isola i sottoprocessi Bash. Altri strumenti operano sotto confini diversi:

320 

321* **Strumenti di file integrati**: Read, Edit e Write utilizzano il sistema di autorizzazione direttamente piuttosto che eseguire attraverso la sandbox. Vedi [autorizzazioni](/it/permissions).

322* **Utilizzo del computer**: quando Claude apre app e controlla lo schermo, viene eseguito sul tuo desktop effettivo piuttosto che in un ambiente isolato. I prompt di autorizzazione per app gating ogni applicazione. Vedi [utilizzo del computer nella CLI](/it/computer-use) o [utilizzo del computer in Desktop](/it/desktop#let-claude-use-your-computer).

323 

324## Vedi anche

325 

326* [Security](/it/security) - Funzionalità di sicurezza complete e best practice

327* [Permissions](/it/permissions) - Configurazione delle autorizzazioni e controllo dell'accesso

328* [Settings](/it/settings) - Riferimento di configurazione completo

329* [CLI reference](/it/cli-reference) - Opzioni della riga di comando

scheduled-tasks.md +213 −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# Eseguire prompt in base a una pianificazione

6 

7> Utilizzare /loop e gli strumenti di pianificazione cron per eseguire prompt ripetutamente, eseguire il polling dello stato o impostare promemoria una tantum all'interno di una sessione Claude Code.

8 

9<Note>

10 Le attività pianificate richiedono Claude Code v2.1.72 o versione successiva. Controllare la versione con `claude --version`.

11</Note>

12 

13Le attività pianificate consentono a Claude di rieseguire automaticamente un prompt a intervalli regolari. Utilizzarle per eseguire il polling di una distribuzione, monitorare una PR, controllare una compilazione a lunga esecuzione o ricordarsi di fare qualcosa più tardi nella sessione. Per reagire agli eventi man mano che si verificano invece di eseguire il polling, vedere [Channels](/it/channels): il vostro CI può inviare il fallimento direttamente nella sessione.

14 

15Le attività hanno ambito di sessione: vivono nella conversazione corrente e si interrompono quando si avvia una nuova. La ripresa con `--resume` o `--continue` ripristina qualsiasi attività che non sia [scaduta](#seven-day-expiry): un'attività ricorrente creata negli ultimi 7 giorni, oppure una singola la cui ora pianificata non è ancora passata. Per la pianificazione che sopravvive indipendentemente da qualsiasi sessione, utilizzare [Routines](/it/routines), [Attività pianificate Desktop](/it/desktop-scheduled-tasks) o [GitHub Actions](/it/github-actions).

16 

17## Confrontare le opzioni di pianificazione

18 

19Claude Code offers three ways to schedule recurring or one-off work:

20 

21| | [Cloud](/en/routines) | [Desktop](/en/desktop-scheduled-tasks) | [`/loop`](/en/scheduled-tasks) |

22| :------------------------- | :----------------------------- | :------------------------------------- | :---------------------------------- |

23| Runs on | Anthropic cloud | Your machine | Your machine |

24| Requires machine on | No | Yes | Yes |

25| Requires open session | No | No | Yes |

26| Persistent across restarts | Yes | Yes | Restored on `--resume` if unexpired |

27| Access to local files | No (fresh clone) | Yes | Yes |

28| MCP servers | Connectors configured per task | [Config files](/en/mcp) and connectors | Inherits from session |

29| Permission prompts | No (runs autonomously) | Configurable per task | Inherits from session |

30| Customizable schedule | Via `/schedule` in the CLI | Yes | Yes |

31| Minimum interval | 1 hour | 1 minute | 1 minute |

32 

33<Tip>

34 Use **cloud tasks** for work that should run reliably without your machine. Use **Desktop tasks** when you need access to local files and tools. Use **`/loop`** for quick polling during a session.

35</Tip>

36 

37## Eseguire un prompt ripetutamente con /loop

38 

39Lo [skill bundled](/it/commands) `/loop` è il modo più rapido per eseguire un prompt ripetutamente mentre la sessione rimane aperta. Sia l'intervallo che il prompt sono facoltativi, e quello che fornite determina il comportamento del ciclo.

40 

41| Quello che fornite | Esempio | Cosa accade |

42| :----------------------- | :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------- |

43| Intervallo e prompt | `/loop 5m check the deploy` | Il vostro prompt viene eseguito su un [programma fisso](#run-on-a-fixed-interval) |

44| Solo prompt | `/loop check the deploy` | Il vostro prompt viene eseguito a un [intervallo scelto da Claude](#let-claude-choose-the-interval) ad ogni iterazione |

45| Solo intervallo, o nulla | `/loop` | Il [prompt di manutenzione integrato](#run-the-built-in-maintenance-prompt) viene eseguito, oppure il vostro `loop.md` se esiste |

46 

47Potete anche passare un altro comando come prompt, ad esempio `/loop 20m /review-pr 1234`, per rieseguire un flusso di lavoro confezionato ad ogni iterazione.

48 

49### Eseguire su un intervallo fisso

50 

51Quando fornite un intervallo, Claude lo converte in un'espressione cron, pianifica il processo e conferma la cadenza e l'ID del processo.

52 

53```text theme={null}

54/loop 5m check if the deployment finished and tell me what happened

55```

56 

57L'intervallo può precedere il prompt come token nudo come `30m`, oppure seguirlo come clausola come `every 2 hours`. Le unità supportate sono `s` per secondi, `m` per minuti, `h` per ore e `d` per giorni.

58 

59I secondi vengono arrotondati al minuto più vicino poiché cron ha una granularità di un minuto. Gli intervalli che non si dividono uniformemente in un passo cron pulito, come `7m` o `90m`, vengono arrotondati all'intervallo più vicino che lo fa e Claude vi dice quale ha scelto.

60 

61### Lasciare che Claude scelga l'intervallo

62 

63Quando omettete l'intervallo, Claude ne sceglie uno dinamicamente invece di eseguire su un programma cron fisso. Dopo ogni iterazione sceglie un ritardo tra un minuto e un'ora in base a quello che ha osservato: attese brevi mentre una compilazione sta terminando o una PR è attiva, attese più lunghe quando non c'è nulla in sospeso. Il ritardo scelto e il motivo sono stampati alla fine di ogni iterazione.

64 

65L'esempio seguente controlla CI e i commenti di revisione, con Claude che attende più a lungo tra le iterazioni una volta che la PR diventa silenziosa:

66 

67```text theme={null}

68/loop check whether CI passed and address any review comments

69```

70 

71Quando chiedete un programma `/loop` dinamico, Claude potrebbe utilizzare direttamente lo [strumento Monitor](/it/tools-reference#monitor-tool). Monitor esegue uno script in background e trasmette ogni riga di output, il che evita completamente il polling ed è spesso più efficiente in termini di token e più reattivo rispetto alla riesecuzione di un prompt a intervalli.

72 

73Un ciclo pianificato dinamicamente appare nel vostro [elenco di attività pianificate](#manage-scheduled-tasks) come qualsiasi altra attività, quindi potete elencarla o annullarla nello stesso modo. Le [regole di jitter](#jitter) non si applicano ad esso, ma la [scadenza di sette giorni](#seven-day-expiry) sì: il ciclo termina automaticamente sette giorni dopo averlo avviato.

74 

75<Note>

76 Su Bedrock, Vertex AI e Microsoft Foundry, un prompt senza intervallo viene eseguito su un programma fisso di 10 minuti.

77</Note>

78 

79### Eseguire il prompt di manutenzione integrato

80 

81Quando omettete il prompt, Claude utilizza un prompt di manutenzione integrato invece di uno che fornite. Ad ogni iterazione lavora attraverso quanto segue, in ordine:

82 

83* continuare qualsiasi lavoro non terminato dalla conversazione

84* prendersi cura della pull request del ramo corrente: commenti di revisione, esecuzioni CI non riuscite, conflitti di merge

85* eseguire passaggi di pulizia come cacce ai bug o semplificazione quando non c'è nulla di altro in sospeso

86 

87Claude non avvia nuove iniziative al di fuori di tale ambito, e le azioni irreversibili come il push o l'eliminazione procedono solo quando continuano qualcosa che il trascritto ha già autorizzato.

88 

89```text theme={null}

90/loop

91```

92 

93Un `/loop` nudo esegue questo prompt a un [intervallo scelto dinamicamente](#let-claude-choose-the-interval). Aggiungete un intervallo, ad esempio `/loop 15m`, per eseguirlo su un programma fisso. Per sostituire il prompt integrato con il vostro predefinito, vedere [Personalizzare il prompt predefinito con loop.md](#customize-the-default-prompt-with-loop-md).

94 

95<Note>

96 Su Bedrock, Vertex AI e Microsoft Foundry, `/loop` senza prompt stampa il messaggio di utilizzo invece di avviare il ciclo di manutenzione.

97</Note>

98 

99### Personalizzare il prompt predefinito con loop.md

100 

101Un file `loop.md` sostituisce il prompt di manutenzione integrato con le vostre istruzioni. Definisce un singolo prompt predefinito per un `/loop` nudo, non un elenco di attività pianificate separate, ed è ignorato ogni volta che fornite un prompt sulla riga di comando. Per pianificare prompt aggiuntivi insieme ad esso, utilizzate `/loop <prompt>` o [chiedete direttamente a Claude](#manage-scheduled-tasks).

102 

103Claude cerca il file in due posizioni e utilizza il primo che trova.

104 

105| Percorso | Ambito |

106| :------------------ | :---------------------------------------------------------------------------------- |

107| `.claude/loop.md` | A livello di progetto. Ha la precedenza quando entrambi i file esistono. |

108| `~/.claude/loop.md` | A livello di utente. Si applica in qualsiasi progetto che non definisce il proprio. |

109 

110Il file è Markdown semplice senza struttura richiesta. Scrivete come se steste digitando il prompt `/loop` direttamente. L'esempio seguente mantiene un ramo di rilascio sano:

111 

112```markdown title=".claude/loop.md" theme={null}

113Check the `release/next` PR. If CI is red, pull the failing job log,

114diagnose, and push a minimal fix. If new review comments have arrived,

115address each one and resolve the thread. If everything is green and

116quiet, say so in one line.

117```

118 

119Le modifiche a `loop.md` hanno effetto alla successiva iterazione, quindi potete perfezionare le istruzioni mentre un ciclo è in esecuzione. Quando nessun `loop.md` esiste in nessuna posizione, il ciclo ritorna al prompt di manutenzione integrato. Mantenete il file conciso: il contenuto oltre 25.000 byte viene troncato.

120 

121### Interrompere un ciclo

122 

123Per interrompere un `/loop` mentre è in attesa della successiva iterazione, premete `Esc`. Questo cancella il risveglio in sospeso in modo che il ciclo non si attivi di nuovo. Le attività pianificate [chiedendo direttamente a Claude](#manage-scheduled-tasks) non sono interessate da `Esc` e rimangono in posizione fino a quando non le eliminate.

124 

125## Impostare un promemoria una tantum

126 

127Per promemoria una tantum, descrivete quello che volete in linguaggio naturale invece di utilizzare `/loop`. Claude pianifica un'attività a fuoco singolo che si elimina dopo l'esecuzione.

128 

129```text theme={null}

130remind me at 3pm to push the release branch

131```

132 

133```text theme={null}

134in 45 minutes, check whether the integration tests passed

135```

136 

137Claude fissa l'ora di attivazione a un minuto e un'ora specifici utilizzando un'espressione cron e conferma quando si attiverà.

138 

139## Gestire le attività pianificate

140 

141Chiedete a Claude in linguaggio naturale di elencare o annullare le attività, oppure fate riferimento direttamente agli strumenti sottostanti.

142 

143```text theme={null}

144what scheduled tasks do I have?

145```

146 

147```text theme={null}

148cancel the deploy check job

149```

150 

151Dietro le quinte, Claude utilizza questi strumenti:

152 

153| Strumento | Scopo |

154| :----------- | :------------------------------------------------------------------------------------------------------------------------------------ |

155| `CronCreate` | Pianificare una nuova attività. Accetta un'espressione cron a 5 campi, il prompt da eseguire e se ricorre o si attiva una sola volta. |

156| `CronList` | Elencare tutte le attività pianificate con i loro ID, pianificazioni e prompt. |

157| `CronDelete` | Annullare un'attività per ID. |

158 

159Ogni attività pianificata ha un ID di 8 caratteri che potete passare a `CronDelete`. Una sessione può contenere fino a 50 attività pianificate contemporaneamente.

160 

161## Come vengono eseguite le attività pianificate

162 

163Lo scheduler controlla ogni secondo le attività dovute e le accoda a bassa priorità. Un prompt pianificato si attiva tra i vostri turni, non mentre Claude sta rispondendo. Se Claude è occupato quando un'attività scade, il prompt attende fino al termine del turno corrente.

164 

165Tutti i tempi vengono interpretati nel vostro fuso orario locale. Un'espressione cron come `0 9 * * *` significa le 9 del mattino ovunque stiate eseguendo Claude Code, non UTC.

166 

167### Jitter

168 

169Per evitare che ogni sessione colpisca l'API nello stesso momento del muro, lo scheduler aggiunge un piccolo offset deterministico ai tempi di attivazione:

170 

171* Le attività ricorrenti si attivano fino al 10% del loro periodo in ritardo, limitato a 15 minuti. Un processo orario potrebbe attivarsi da `:00` a `:06`.

172* Le attività una tantum pianificate per l'inizio o la fine dell'ora si attivano fino a 90 secondi prima.

173 

174L'offset è derivato dall'ID dell'attività, quindi la stessa attività ottiene sempre lo stesso offset. Se il timing esatto è importante, scegliete un minuto che non sia `:00` o `:30`, ad esempio `3 9 * * *` invece di `0 9 * * *`, e il jitter una tantum non si applicherà.

175 

176### Scadenza di sette giorni

177 

178Le attività ricorrenti scadono automaticamente 7 giorni dopo la creazione. L'attività si attiva un'ultima volta, quindi si elimina. Questo limita il tempo di esecuzione di un ciclo dimenticato. Se avete bisogno che un'attività ricorrente duri più a lungo, annullate e ricreate prima che scada, oppure utilizzate [Routines](/it/routines) o [Attività pianificate Desktop](/it/desktop-scheduled-tasks) per la pianificazione durevole.

179 

180## Riferimento dell'espressione cron

181 

182`CronCreate` accetta espressioni cron standard a 5 campi: `minute hour day-of-month month day-of-week`. Tutti i campi supportano caratteri jolly (`*`), valori singoli (`5`), step (`*/15`), intervalli (`1-5`) e elenchi separati da virgole (`1,15,30`).

183 

184| Esempio | Significato |

185| :------------- | :--------------------------------------- |

186| `*/5 * * * *` | Ogni 5 minuti |

187| `0 * * * *` | Ogni ora in punto |

188| `7 * * * *` | Ogni ora alle 7 minuti passati |

189| `0 9 * * *` | Ogni giorno alle 9 del mattino locale |

190| `0 9 * * 1-5` | Giorni feriali alle 9 del mattino locale |

191| `30 14 15 3 *` | 15 marzo alle 14:30 locale |

192 

193Day-of-week utilizza `0` o `7` per domenica fino a `6` per sabato. La sintassi estesa come `L`, `W`, `?` e gli alias dei nomi come `MON` o `JAN` non sono supportati.

194 

195Quando sia day-of-month che day-of-week sono vincolati, una data corrisponde se uno dei campi corrisponde. Questo segue la semantica standard di vixie-cron.

196 

197## Disabilitare le attività pianificate

198 

199Impostare `CLAUDE_CODE_DISABLE_CRON=1` nel vostro ambiente per disabilitare completamente lo scheduler. Gli strumenti cron e `/loop` diventano non disponibili e tutte le attività già pianificate smettono di attivarsi. Vedere [Variabili di ambiente](/it/env-vars) per l'elenco completo dei flag di disabilitazione.

200 

201## Limitazioni

202 

203La pianificazione con ambito di sessione ha vincoli intrinseci:

204 

205* Le attività si attivano solo mentre Claude Code è in esecuzione e inattivo. La chiusura del terminale o l'uscita dalla sessione le interrompe.

206* Nessun recupero per attivazioni perse. Se l'ora pianificata di un'attività passa mentre Claude è occupato in una richiesta a lunga esecuzione, si attiva una sola volta quando Claude diventa inattivo, non una volta per ogni intervallo perso.

207* L'avvio di una nuova conversazione cancella tutte le attività con ambito di sessione. La ripresa con `claude --resume` o `claude --continue` ripristina le attività che non sono scadute: attività ricorrenti entro sette giorni dalla creazione, e attività una tantum la cui ora pianificata non è ancora passata. Le attività Bash in background e monitor non vengono mai ripristinate al riavvio.

208 

209Per l'automazione basata su cron che deve essere eseguita senza supervisione:

210 

211* [Routines](/it/routines): eseguite su infrastruttura gestita da Anthropic su un programma, tramite chiamata API o su eventi GitHub

212* [GitHub Actions](/it/github-actions): utilizzare un trigger `schedule` in CI

213* [Attività pianificate Desktop](/it/desktop-scheduled-tasks): eseguite localmente sulla vostra macchina

security.md +143 −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# Sicurezza

6 

7> Scopri le misure di sicurezza di Claude Code e le migliori pratiche per un utilizzo sicuro.

8 

9## Come affrontiamo la sicurezza

10 

11### Fondamento della sicurezza

12 

13La sicurezza del vostro codice è fondamentale. Claude Code è costruito con la sicurezza al centro, sviluppato secondo il programma di sicurezza completo di Anthropic. Scopri di più e accedi alle risorse (rapporto SOC 2 Type 2, certificato ISO 27001, ecc.) presso [Anthropic Trust Center](https://trust.anthropic.com).

14 

15### Architettura basata su permessi

16 

17Claude Code utilizza permessi di sola lettura rigorosi per impostazione predefinita. Quando sono necessarie azioni aggiuntive (modifica di file, esecuzione di test, esecuzione di comandi), Claude Code richiede un'autorizzazione esplicita. Gli utenti controllano se approvare le azioni una sola volta o consentirle automaticamente.

18 

19Abbiamo progettato Claude Code per essere trasparente e sicuro. Ad esempio, richiediamo l'approvazione per i comandi bash prima di eseguirli, dandovi il controllo diretto. Questo approccio consente agli utenti e alle organizzazioni di configurare i permessi direttamente.

20 

21Per la configurazione dettagliata dei permessi, vedere [Permissions](/it/permissions).

22 

23### Protezioni integrate

24 

25Per mitigare i rischi nei sistemi agentici:

26 

27* **Strumento bash in sandbox**: [Sandbox](/it/sandboxing) comandi bash con isolamento del filesystem e della rete, riducendo i prompt di permesso mantenendo la sicurezza. Abilita con `/sandbox` per definire i confini dove Claude Code può lavorare autonomamente

28* **Restrizione dell'accesso in scrittura**: Claude Code può scrivere solo nella cartella in cui è stato avviato e nelle sue sottocartelle, non può modificare file nelle directory padre senza autorizzazione esplicita. Mentre Claude Code può leggere file al di fuori della directory di lavoro (utile per accedere alle librerie di sistema e alle dipendenze), le operazioni di scrittura sono strettamente limitate all'ambito del progetto, creando un chiaro confine di sicurezza

29* **Mitigazione dell'affaticamento da prompt**: Supporto per l'allowlisting di comandi sicuri utilizzati frequentemente per utente, per codebase o per organizzazione

30* **Modalità Accept Edits**: Accetta in batch più modifiche mantenendo i prompt di permesso per i comandi con effetti collaterali

31 

32### Responsabilità dell'utente

33 

34Claude Code ha solo i permessi che gli concedete. Siete responsabili della revisione del codice e dei comandi proposti per la sicurezza prima dell'approvazione.

35 

36## Proteggiti dall'iniezione di prompt

37 

38L'iniezione di prompt è una tecnica in cui un attaccante tenta di ignorare o manipolare le istruzioni di un assistente AI inserendo testo dannoso. Claude Code include diversi meccanismi di protezione contro questi attacchi:

39 

40### Protezioni fondamentali

41 

42* **Sistema di permessi**: Le operazioni sensibili richiedono un'approvazione esplicita

43* **Analisi consapevole del contesto**: Rileva istruzioni potenzialmente dannose analizzando la richiesta completa

44* **Sanitizzazione dell'input**: Previene l'iniezione di comandi elaborando gli input dell'utente

45* **Blocklist di comandi**: Blocca i comandi rischiosi che recuperano contenuti arbitrari dal web come `curl` e `wget` per impostazione predefinita. Quando esplicitamente consentiti, siate consapevoli delle [limitazioni del modello di permesso](/it/permissions#tool-specific-permission-rules)

46 

47### Misure di protezione della privacy

48 

49Abbiamo implementato diversi meccanismi di protezione per proteggere i vostri dati, tra cui:

50 

51* Periodi di conservazione limitati per le informazioni sensibili (consultare il [Privacy Center](https://privacy.anthropic.com/en/articles/10023548-how-long-do-you-store-my-data) per ulteriori informazioni)

52* Accesso limitato ai dati della sessione utente

53* Controllo dell'utente sulle preferenze di addestramento dei dati. Gli utenti consumer possono modificare le loro [impostazioni di privacy](https://claude.ai/settings/privacy) in qualsiasi momento.

54 

55Per i dettagli completi, consultare i nostri [Termini di servizio commerciali](https://www.anthropic.com/legal/commercial-terms) (per utenti Team, Enterprise e API) o [Termini consumer](https://www.anthropic.com/legal/consumer-terms) (per utenti Free, Pro e Max) e [Informativa sulla privacy](https://www.anthropic.com/legal/privacy).

56 

57### Misure di protezione aggiuntive

58 

59* **Approvazione della richiesta di rete**: Gli strumenti che effettuano richieste di rete richiedono l'approvazione dell'utente per impostazione predefinita

60* **Finestre di contesto isolate**: Web fetch utilizza una finestra di contesto separata per evitare di iniettare prompt potenzialmente dannosi

61* **Verifica della fiducia**: Le prime esecuzioni di codebase e i nuovi server MCP richiedono la verifica della fiducia

62 * Nota: La verifica della fiducia è disabilitata quando si esegue in modo non interattivo con il flag `-p`

63* **Rilevamento dell'iniezione di comandi**: I comandi bash sospetti richiedono l'approvazione manuale anche se precedentemente allowlisted

64* **Corrispondenza fail-closed**: I comandi non corrispondenti richiedono per impostazione predefinita l'approvazione manuale

65* **Descrizioni in linguaggio naturale**: I comandi bash complessi includono spiegazioni per la comprensione dell'utente

66* **Archiviazione sicura delle credenziali**: Le chiavi API e i token sono crittografati. Vedere [Credential Management](/it/authentication#credential-management)

67 

68<Warning>

69 **Rischio di sicurezza WebDAV su Windows**: Quando si esegue Claude Code su Windows, consigliamo di non abilitare WebDAV o di non consentire a Claude Code di accedere a percorsi come `\\*` che potrebbero contenere sottodirectory WebDAV. [WebDAV è stato deprecato da Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) a causa di rischi di sicurezza. L'abilitazione di WebDAV potrebbe consentire a Claude Code di attivare richieste di rete a host remoti, aggirando il sistema di permessi.

70</Warning>

71 

72**Migliori pratiche per lavorare con contenuti non attendibili**:

73 

741. Rivedere i comandi suggeriti prima dell'approvazione

752. Evitare di inviare contenuti non attendibili direttamente a Claude tramite pipe

763. Verificare le modifiche proposte ai file critici

774. Utilizzare macchine virtuali (VM) per eseguire script e effettuare chiamate di strumenti, soprattutto quando si interagisce con servizi web esterni

785. Segnalare comportamenti sospetti con `/feedback`

79 

80<Warning>

81 Sebbene queste protezioni riducano significativamente il rischio, nessun sistema è completamente

82 immune da tutti gli attacchi. Mantenete sempre buone pratiche di sicurezza quando lavorate

83 con qualsiasi strumento AI.

84</Warning>

85 

86## Sicurezza MCP

87 

88Claude Code consente agli utenti di configurare server Model Context Protocol (MCP). L'elenco dei server MCP consentiti è configurato nel vostro codice sorgente, come parte delle impostazioni di Claude Code che gli ingegneri controllano nel controllo del codice sorgente.

89 

90Incoraggiamo sia la scrittura dei vostri server MCP che l'utilizzo di server MCP da provider di cui vi fidate. Siete in grado di configurare i permessi di Claude Code per i server MCP. Anthropic non gestisce né controlla alcun server MCP.

91 

92## Sicurezza dell'IDE

93 

94Vedere [VS Code security and privacy](/it/vs-code#security-and-privacy) per ulteriori informazioni sull'esecuzione di Claude Code in un IDE.

95 

96## Sicurezza dell'esecuzione nel cloud

97 

98Quando si utilizza [Claude Code sul web](/it/claude-code-on-the-web), sono in vigore controlli di sicurezza aggiuntivi:

99 

100* **Macchine virtuali isolate**: Ogni sessione cloud viene eseguita in una VM isolata gestita da Anthropic

101* **Controlli di accesso alla rete**: L'accesso alla rete è limitato per impostazione predefinita e può essere configurato per essere disabilitato o consentire solo domini specifici

102* **Protezione delle credenziali**: L'autenticazione viene gestita tramite un proxy sicuro che utilizza una credenziale con ambito all'interno della sandbox, che viene quindi tradotta nel vostro token di autenticazione GitHub effettivo

103* **Restrizioni di ramo**: Le operazioni di push Git sono limitate al ramo di lavoro corrente

104* **Registrazione di audit**: Tutte le operazioni negli ambienti cloud vengono registrate per scopi di conformità e audit

105* **Pulizia automatica**: Gli ambienti cloud vengono terminati automaticamente al completamento della sessione

106 

107Per ulteriori dettagli sull'esecuzione nel cloud, vedere [Claude Code sul web](/it/claude-code-on-the-web).

108 

109Le sessioni di [Remote Control](/it/remote-control) funzionano diversamente: l'interfaccia web si connette a un processo Claude Code in esecuzione sulla vostra macchina locale. Tutta l'esecuzione del codice e l'accesso ai file rimangono locali, e gli stessi dati che fluiscono durante qualsiasi sessione locale di Claude Code viaggiano attraverso l'API Anthropic su TLS. Non sono coinvolte VM cloud o sandbox. La connessione utilizza più credenziali di breve durata e con ambito ristretto, ciascuna limitata a uno scopo specifico e con scadenza indipendente, per limitare il raggio di esplosione di qualsiasi singola credenziale compromessa.

110 

111## Migliori pratiche di sicurezza

112 

113### Lavorare con codice sensibile

114 

115* Rivedere tutte le modifiche suggerite prima dell'approvazione

116* Utilizzare impostazioni di permesso specifiche del progetto per repository sensibili

117* Considerare l'utilizzo di [dev containers](/it/devcontainer) per un isolamento aggiuntivo

118* Controllare regolarmente le impostazioni di permesso con `/permissions`

119 

120### Sicurezza del team

121 

122* Utilizzare [managed settings](/it/settings#settings-files) per applicare gli standard organizzativi

123* Condividere le configurazioni di permesso approvate tramite il controllo del codice sorgente

124* Formare i membri del team sulle migliori pratiche di sicurezza

125* Monitorare l'utilizzo di Claude Code tramite [metriche OpenTelemetry](/it/monitoring-usage)

126* Controllare o bloccare le modifiche alle impostazioni durante le sessioni con [`ConfigChange` hooks](/it/hooks#configchange)

127 

128### Segnalazione di problemi di sicurezza

129 

130Se scoprite una vulnerabilità di sicurezza in Claude Code:

131 

1321. Non divulgatela pubblicamente

1332. Segnalatela tramite il nostro [programma HackerOne](https://hackerone.com/4f1f16ba-10d3-4d09-9ecc-c721aad90f24/embedded_submissions/new)

1343. Includete i passaggi di riproduzione dettagliati

1354. Concedete il tempo necessario per affrontare il problema prima della divulgazione pubblica

136 

137## Risorse correlate

138 

139* [Sandboxing](/it/sandboxing) - Isolamento del filesystem e della rete per i comandi bash

140* [Permissions](/it/permissions) - Configurare i permessi e i controlli di accesso

141* [Monitoring usage](/it/monitoring-usage) - Tracciare e controllare l'attività di Claude Code

142* [Development containers](/it/devcontainer) - Ambienti sicuri e isolati

143* [Anthropic Trust Center](https://trust.anthropic.com) - Certificazioni di sicurezza e conformità

server-managed-settings.md +224 −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# Configurare le impostazioni gestite dal server

6 

7> Configurare centralmente Claude Code per la vostra organizzazione tramite impostazioni consegnate dal server, senza richiedere infrastrutture di gestione dei dispositivi.

8 

9Le impostazioni gestite dal server consentono agli amministratori di configurare centralmente Claude Code tramite un'interfaccia basata sul web su Claude.ai. I client di Claude Code ricevono automaticamente queste impostazioni quando gli utenti si autenticano con le credenziali della loro organizzazione.

10 

11Questo approccio è progettato per le organizzazioni che non dispongono di infrastrutture di gestione dei dispositivi, o che hanno la necessità di gestire le impostazioni per gli utenti su dispositivi non gestiti.

12 

13<Note>

14 Le impostazioni gestite dal server sono disponibili per i clienti di [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_teams#team-&-enterprise) e [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_enterprise).

15</Note>

16 

17## Requisiti

18 

19Per utilizzare le impostazioni gestite dal server, è necessario:

20 

21* Piano Claude for Teams o Claude for Enterprise

22* Claude Code versione 2.1.38 o successiva per Claude for Teams, o versione 2.1.30 o successiva per Claude for Enterprise

23* Accesso di rete a `api.anthropic.com`

24 

25## Scegliere tra impostazioni gestite dal server e gestite dall'endpoint

26 

27Claude Code supporta due approcci per la configurazione centralizzata. Le impostazioni gestite dal server forniscono la configurazione dai server di Anthropic. Le [impostazioni gestite dall'endpoint](/it/settings#settings-files) vengono distribuite direttamente ai dispositivi tramite criteri nativi del sistema operativo (preferenze gestite macOS, registro Windows) o file di impostazioni gestiti.

28 

29| Approccio | Ideale per | Modello di sicurezza |

30| :-------------------------------------------------------------------- | :------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------- |

31| **Impostazioni gestite dal server** | Organizzazioni senza MDM, o utenti su dispositivi non gestiti | Impostazioni consegnate dai server di Anthropic al momento dell'autenticazione |

32| **[Impostazioni gestite dall'endpoint](/it/settings#settings-files)** | Organizzazioni con MDM o gestione degli endpoint | Impostazioni distribuite ai dispositivi tramite profili di configurazione MDM, criteri del registro, o file di impostazioni gestiti |

33 

34Se i vostri dispositivi sono registrati in una soluzione MDM o di gestione degli endpoint, le impostazioni gestite dall'endpoint forniscono garanzie di sicurezza più forti perché il file di impostazioni può essere protetto dalla modifica dell'utente a livello del sistema operativo.

35 

36## Configurare le impostazioni gestite dal server

37 

38<Steps>

39 <Step title="Aprire la console di amministrazione">

40 In [Claude.ai](https://claude.ai), navigare a **Admin Settings > Claude Code > Managed settings**.

41 </Step>

42 

43 <Step title="Definire le impostazioni">

44 Aggiungere la configurazione come JSON. Tutte le [impostazioni disponibili in `settings.json`](/it/settings#available-settings) sono supportate, inclusi [hooks](/it/hooks), [variabili di ambiente](/it/env-vars), e [impostazioni solo gestite](/it/permissions#managed-only-settings) come `allowManagedPermissionRulesOnly`.

45 

46 Questo esempio applica un elenco di negazione delle autorizzazioni, impedisce agli utenti di ignorare le autorizzazioni e limita le regole di autorizzazione a quelle definite nelle impostazioni gestite:

47 

48 ```json theme={null}

49 {

50 "permissions": {

51 "deny": [

52 "Bash(curl *)",

53 "Read(./.env)",

54 "Read(./.env.*)",

55 "Read(./secrets/**)"

56 ],

57 "disableBypassPermissionsMode": "disable"

58 },

59 "allowManagedPermissionRulesOnly": true

60 }

61 ```

62 

63 Gli hook utilizzano lo stesso formato di `settings.json`.

64 

65 Questo esempio esegue uno script di audit dopo ogni modifica di file in tutta l'organizzazione:

66 

67 ```json theme={null}

68 {

69 "hooks": {

70 "PostToolUse": [

71 {

72 "matcher": "Edit|Write",

73 "hooks": [

74 { "type": "command", "command": "/usr/local/bin/audit-edit.sh" }

75 ]

76 }

77 ]

78 }

79 }

80 ```

81 

82 Per configurare il classificatore della [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode) in modo che conosca quali repository, bucket e domini la vostra organizzazione ritiene affidabili:

83 

84 ```json theme={null}

85 {

86 "autoMode": {

87 "environment": [

88 "Source control: github.example.com/acme-corp and all repos under it",

89 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

90 "Trusted internal domains: *.corp.example.com"

91 ]

92 }

93 }

94 ```

95 

96 Poiché gli hook eseguono comandi shell, gli utenti vedono una [finestra di dialogo di approvazione della sicurezza](#security-approval-dialogs) prima che vengano applicati. Vedere [Configurare la modalità auto](/it/auto-mode-config) per come le voci `autoMode` influenzano ciò che il classificatore blocca e avvertimenti importanti sui campi `allow` e `soft_deny`.

97 </Step>

98 

99 <Step title="Salvare e distribuire">

100 Salvare le modifiche. I client di Claude Code ricevono le impostazioni aggiornate al prossimo avvio o ciclo di polling orario.

101 </Step>

102</Steps>

103 

104### Verificare la consegna delle impostazioni

105 

106Per confermare che le impostazioni vengono applicate, chiedere a un utente di riavviare Claude Code. Se la configurazione include impostazioni che attivano la [finestra di dialogo di approvazione della sicurezza](#security-approval-dialogs), l'utente vede un prompt che descrive le impostazioni gestite all'avvio. È inoltre possibile verificare che le regole di autorizzazione gestite siano attive facendo eseguire a un utente `/permissions` per visualizzare le regole di autorizzazione effettive.

107 

108### Controllo di accesso

109 

110I seguenti ruoli possono gestire le impostazioni gestite dal server:

111 

112* **Primary Owner**

113* **Owner**

114 

115Limitare l'accesso al personale di fiducia, poiché le modifiche alle impostazioni si applicano a tutti gli utenti dell'organizzazione.

116 

117### Impostazioni solo gestite

118 

119La maggior parte delle [chiavi di impostazioni](/it/settings#available-settings) funzionano in qualsiasi ambito. Un numero limitato di chiavi viene letto solo dalle impostazioni gestite e non ha alcun effetto quando posizionato nei file di impostazioni dell'utente o del progetto. Vedere [impostazioni solo gestite](/it/permissions#managed-only-settings) per l'elenco completo. Qualsiasi impostazione non in tale elenco può comunque essere posizionata nelle impostazioni gestite e ha la precedenza più alta.

120 

121### Limitazioni attuali

122 

123Le impostazioni gestite dal server hanno le seguenti limitazioni:

124 

125* Le impostazioni si applicano uniformemente a tutti gli utenti dell'organizzazione. Le configurazioni per gruppo non sono ancora supportate.

126* Le [configurazioni del server MCP](/it/mcp#managed-mcp-configuration) non possono essere distribuite tramite impostazioni gestite dal server.

127 

128## Consegna delle impostazioni

129 

130### Precedenza delle impostazioni

131 

132Le impostazioni gestite dal server e le [impostazioni gestite dall'endpoint](/it/settings#settings-files) occupano entrambe il livello più alto nella [gerarchia delle impostazioni](/it/settings#settings-precedence) di Claude Code. Nessun altro livello di impostazioni può sostituirle, inclusi gli argomenti della riga di comando.

133 

134All'interno del livello gestito, la prima fonte che fornisce una configurazione non vuota vince. Le impostazioni gestite dal server vengono controllate per prime, quindi le impostazioni gestite dall'endpoint. Le fonti non si uniscono: se le impostazioni gestite dal server forniscono qualsiasi chiave, le impostazioni gestite dall'endpoint vengono ignorate completamente. Se le impostazioni gestite dal server non forniscono nulla, le impostazioni gestite dall'endpoint si applicano.

135 

136Se cancellate la configurazione gestita dal server nella console di amministrazione con l'intenzione di tornare a una plist gestita dall'endpoint o a una politica del registro, tenete presente che le [impostazioni memorizzate nella cache](#fetch-and-caching-behavior) persistono sulle macchine client fino al prossimo recupero riuscito. Eseguite `/status` per vedere quale fonte gestita è attiva.

137 

138### Comportamento di recupero e caching

139 

140Claude Code recupera le impostazioni dai server di Anthropic all'avvio e esegue il polling per gli aggiornamenti ogni ora durante le sessioni attive.

141 

142**Primo avvio senza impostazioni memorizzate nella cache:**

143 

144* Claude Code recupera le impostazioni in modo asincrono

145* Se il recupero non riesce, Claude Code continua senza impostazioni gestite

146* C'è una breve finestra prima che le impostazioni si carichino in cui le restrizioni non sono ancora applicate

147 

148**Avvii successivi con impostazioni memorizzate nella cache:**

149 

150* Le impostazioni memorizzate nella cache si applicano immediatamente all'avvio

151* Claude Code recupera le impostazioni aggiornate in background

152* Le impostazioni memorizzate nella cache persistono attraverso i guasti di rete

153 

154Claude Code applica gli aggiornamenti delle impostazioni automaticamente senza un riavvio, ad eccezione delle impostazioni avanzate come la configurazione di OpenTelemetry, che richiedono un riavvio completo per avere effetto.

155 

156### Applicare l'avvio fail-closed

157 

158Per impostazione predefinita, se il recupero delle impostazioni remote non riesce all'avvio, la CLI continua senza impostazioni gestite. Per gli ambienti in cui questa breve finestra non applicata è inaccettabile, impostare `forceRemoteSettingsRefresh: true` nelle impostazioni gestite.

159 

160Quando questa impostazione è attiva, la CLI si blocca all'avvio fino a quando le impostazioni remote non vengono recuperate di recente. Se il recupero non riesce, la CLI esce piuttosto che procedere senza la politica. Questa impostazione si auto-perpetua: una volta consegnata dal server, viene anche memorizzata nella cache localmente in modo che gli avvii successivi applichino lo stesso comportamento anche prima del primo recupero riuscito di una nuova sessione.

161 

162Per abilitare questa funzione, aggiungere la chiave alla configurazione delle impostazioni gestite:

163 

164```json theme={null}

165{

166 "forceRemoteSettingsRefresh": true

167}

168```

169 

170Prima di abilitare questa impostazione, assicurarsi che le politiche di rete consentano la connettività a `api.anthropic.com`. Se tale endpoint non è raggiungibile, la CLI esce all'avvio e gli utenti non possono avviare Claude Code.

171 

172### Finestre di dialogo di approvazione della sicurezza

173 

174Determinate impostazioni che potrebbero comportare rischi di sicurezza richiedono l'approvazione esplicita dell'utente prima di essere applicate:

175 

176* **Impostazioni dei comandi shell**: impostazioni che eseguono comandi shell

177* **Variabili di ambiente personalizzate**: variabili non nell'elenco di sicurezza noto

178* **Configurazioni di hook**: qualsiasi definizione di hook

179 

180Quando queste impostazioni sono presenti, gli utenti vedono una finestra di dialogo di sicurezza che spiega cosa viene configurato. Gli utenti devono approvare per procedere. Se un utente rifiuta le impostazioni, Claude Code esce.

181 

182<Note>

183 In modalità non interattiva con il flag `-p`, Claude Code salta le finestre di dialogo di sicurezza e applica le impostazioni senza approvazione dell'utente.

184</Note>

185 

186## Disponibilità della piattaforma

187 

188Le impostazioni gestite dal server richiedono una connessione diretta a `api.anthropic.com` e non sono disponibili quando si utilizzano provider di modelli di terze parti:

189 

190* Amazon Bedrock

191* Google Vertex AI

192* Microsoft Foundry

193* Endpoint API personalizzati tramite `ANTHROPIC_BASE_URL` o [gateway LLM](/it/llm-gateway)

194 

195## Registrazione di audit

196 

197Gli eventi del registro di audit per le modifiche alle impostazioni sono disponibili tramite l'API di conformità o l'esportazione del registro di audit. Contattare il vostro team di account Anthropic per l'accesso.

198 

199Gli eventi di audit includono il tipo di azione eseguita, l'account e il dispositivo che ha eseguito l'azione, e riferimenti ai valori precedenti e nuovi.

200 

201## Considerazioni sulla sicurezza

202 

203Le impostazioni gestite dal server forniscono l'applicazione centralizzata dei criteri, ma operano come un controllo lato client. Su dispositivi non gestiti, gli utenti con accesso amministratore o sudo possono modificare il binario di Claude Code, il filesystem, o la configurazione di rete.

204 

205| Scenario | Comportamento |

206| :--------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

207| L'utente modifica il file di impostazioni memorizzato nella cache | Il file manomesso si applica all'avvio, ma le impostazioni corrette si ripristinano al prossimo recupero dal server |

208| L'utente elimina il file di impostazioni memorizzato nella cache | Si verifica il comportamento del primo avvio: le impostazioni vengono recuperate in modo asincrono con una breve finestra non applicata |

209| L'API non è disponibile | Le impostazioni memorizzate nella cache si applicano se disponibili, altrimenti le impostazioni gestite non vengono applicate fino al prossimo recupero riuscito. Con `forceRemoteSettingsRefresh: true`, la CLI esce invece di continuare |

210| L'utente si autentica con un'organizzazione diversa | Le impostazioni non vengono consegnate per gli account al di fuori dell'organizzazione gestita |

211| L'utente configura un [provider di modelli di terze parti](#platform-availability) | Le impostazioni gestite dal server vengono ignorate. Questo include l'impostazione di `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_MANTLE`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, o un `ANTHROPIC_BASE_URL` non predefinito |

212 

213Per rilevare le modifiche della configurazione in fase di esecuzione, utilizzare gli [hook `ConfigChange`](/it/hooks#configchange) per registrare le modifiche o bloccare le modifiche non autorizzate prima che abbiano effetto.

214 

215Per garanzie di applicazione più forti, utilizzare le [impostazioni gestite dall'endpoint](/it/settings#settings-files) su dispositivi registrati in una soluzione MDM.

216 

217## Vedere anche

218 

219Pagine correlate per la gestione della configurazione di Claude Code:

220 

221* [Settings](/it/settings): riferimento di configurazione completo incluse tutte le impostazioni disponibili

222* [Endpoint-managed settings](/it/settings#settings-files): impostazioni gestite distribuite ai dispositivi dal reparto IT

223* [Authentication](/it/authentication): configurare l'accesso degli utenti a Claude Code

224* [Security](/it/security): salvaguardie di sicurezza e best practice

settings.md +914 −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# Impostazioni di Claude Code

6 

7> Configura Claude Code con impostazioni globali e a livello di progetto, e variabili di ambiente.

8 

9Claude Code offre una varietà di impostazioni per configurare il suo comportamento in base alle tue esigenze. Puoi configurare Claude Code eseguendo il comando `/config` quando utilizzi il REPL interattivo, che apre un'interfaccia Impostazioni con schede dove puoi visualizzare le informazioni di stato e modificare le opzioni di configurazione.

10 

11## Ambiti di configurazione

12 

13Claude Code utilizza un **sistema di ambiti** per determinare dove si applicano le configurazioni e con chi vengono condivise. Comprendere gli ambiti ti aiuta a decidere come configurare Claude Code per uso personale, collaborazione di team o distribuzione aziendale.

14 

15### Ambiti disponibili

16 

17| Ambito | Posizione | Chi è interessato | Condiviso con il team? |

18| :---------- | :------------------------------------------------------------------------------------------------ | :----------------------------------------- | :--------------------- |

19| **Managed** | Impostazioni gestite dal server, plist / registro, o `managed-settings.json` a livello di sistema | Tutti gli utenti sulla macchina | Sì (distribuito da IT) |

20| **User** | Directory `~/.claude/` | Tu, in tutti i progetti | No |

21| **Project** | `.claude/` nel repository | Tutti i collaboratori su questo repository | Sì (committato in git) |

22| **Local** | `.claude/settings.local.json` | Tu, solo in questo repository | No (gitignored) |

23 

24### Quando utilizzare ogni ambito

25 

26L'ambito **Managed** è per:

27 

28* Politiche di sicurezza che devono essere applicate a livello organizzativo

29* Requisiti di conformità che non possono essere ignorati

30* Configurazioni standardizzate distribuite da IT/DevOps

31 

32L'ambito **User** è migliore per:

33 

34* Preferenze personali che desideri ovunque (temi, impostazioni dell'editor)

35* Strumenti e plugin che utilizzi in tutti i progetti

36* Chiavi API e autenticazione (archiviate in modo sicuro)

37 

38L'ambito **Project** è migliore per:

39 

40* Impostazioni condivise dal team (permessi, hooks, MCP servers)

41* Plugin che l'intero team dovrebbe avere

42* Standardizzazione degli strumenti tra i collaboratori

43 

44L'ambito **Local** è migliore per:

45 

46* Override personali per un progetto specifico

47* Test delle configurazioni prima di condividerle con il team

48* Impostazioni specifiche della macchina che non funzioneranno per altri

49 

50### Come interagiscono gli ambiti

51 

52Quando la stessa impostazione è configurata in più ambiti, gli ambiti più specifici hanno la precedenza:

53 

541. **Managed** (più alta) - non può essere ignorata da nulla

552. **Argomenti della riga di comando** - override temporanei della sessione

563. **Local** - ignora le impostazioni di progetto e utente

574. **Project** - ignora le impostazioni utente

585. **User** (più bassa) - si applica quando nient'altro specifica l'impostazione

59 

60Ad esempio, se un permesso è consentito nelle impostazioni utente ma negato nelle impostazioni di progetto, l'impostazione di progetto ha la precedenza e il permesso è bloccato.

61 

62### Cosa utilizza gli ambiti

63 

64Gli ambiti si applicano a molte funzionalità di Claude Code:

65 

66| Funzionalità | Posizione utente | Posizione progetto | Posizione locale |

67| :-------------- | :------------------------ | :-------------------------------- | :------------------------------ |

68| **Settings** | `~/.claude/settings.json` | `.claude/settings.json` | `.claude/settings.local.json` |

69| **Subagents** | `~/.claude/agents/` | `.claude/agents/` | Nessuno |

70| **MCP servers** | `~/.claude.json` | `.mcp.json` | `~/.claude.json` (per-progetto) |

71| **Plugins** | `~/.claude/settings.json` | `.claude/settings.json` | `.claude/settings.local.json` |

72| **CLAUDE.md** | `~/.claude/CLAUDE.md` | `CLAUDE.md` o `.claude/CLAUDE.md` | `CLAUDE.local.md` |

73 

74***

75 

76## File di impostazioni

77 

78Il file `settings.json` è il meccanismo ufficiale per configurare Claude Code attraverso impostazioni gerarchiche:

79 

80* **Le impostazioni utente** sono definite in `~/.claude/settings.json` e si applicano a tutti i progetti.

81* **Le impostazioni di progetto** vengono salvate nella directory del tuo progetto:

82 * `.claude/settings.json` per le impostazioni che vengono controllate nel controllo del codice sorgente e condivise con il tuo team

83 * `.claude/settings.local.json` per le impostazioni che non vengono controllate, utili per preferenze personali e sperimentazione. Claude Code configurerà git per ignorare `.claude/settings.local.json` quando viene creato.

84* **Impostazioni gestite**: Per le organizzazioni che necessitano di controllo centralizzato, Claude Code supporta più meccanismi di distribuzione per le impostazioni gestite. Tutti utilizzano lo stesso formato JSON e non possono essere ignorati dalle impostazioni utente o di progetto:

85 

86 * **Impostazioni gestite dal server**: consegnate dai server di Anthropic tramite la console di amministrazione Claude.ai. Vedi [impostazioni gestite dal server](/it/server-managed-settings).

87 * **Politiche MDM/a livello di sistema operativo**: consegnate tramite la gestione nativa dei dispositivi su macOS e Windows:

88 * macOS: dominio delle preferenze gestite `com.anthropic.claudecode`. Le chiavi di primo livello del plist rispecchiano `managed-settings.json`, con impostazioni annidate come dizionari e array come array plist. Distribuisci tramite profili di configurazione in Jamf, Iru (Kandji) o strumenti MDM simili.

89 * Windows: chiave di registro `HKLM\SOFTWARE\Policies\ClaudeCode` con un valore `Settings` (REG\_SZ o REG\_EXPAND\_SZ) contenente JSON (distribuito tramite Criteri di gruppo o Intune)

90 * Windows (a livello utente): `HKCU\SOFTWARE\Policies\ClaudeCode` (priorità di politica più bassa, utilizzata solo quando non esiste alcuna fonte a livello di amministratore)

91 * **Basate su file**: `managed-settings.json` e `managed-mcp.json` distribuite alle directory di sistema:

92 

93 * macOS: `/Library/Application Support/ClaudeCode/`

94 * Linux e WSL: `/etc/claude-code/`

95 * Windows: `C:\Program Files\ClaudeCode\`

96 

97 <Warning>

98 Il percorso Windows legacy `C:\ProgramData\ClaudeCode\managed-settings.json` non è più supportato a partire da v2.1.75. Gli amministratori che hanno distribuito impostazioni in quella posizione devono migrare i file a `C:\Program Files\ClaudeCode\managed-settings.json`.

99 </Warning>

100 

101 Le impostazioni gestite basate su file supportano anche una directory drop-in in `managed-settings.d/` nella stessa directory di sistema insieme a `managed-settings.json`. Questo consente ai team separati di distribuire frammenti di politica indipendenti senza coordinare le modifiche a un singolo file.

102 

103 Seguendo la convenzione systemd, `managed-settings.json` viene unito per primo come base, quindi tutti i file `*.json` nella directory drop-in vengono ordinati alfabeticamente e uniti in cima. I file successivi ignorano quelli precedenti per i valori scalari; gli array vengono concatenati e deduplicati; gli oggetti vengono uniti in profondità. I file nascosti che iniziano con `.` vengono ignorati.

104 

105 Usa prefissi numerici per controllare l'ordine di unione, ad esempio `10-telemetry.json` e `20-security.json`.

106 

107 Vedi [impostazioni gestite](/it/permissions#managed-only-settings) e [Configurazione MCP gestita](/it/mcp#managed-mcp-configuration) per i dettagli.

108 

109 Questo [repository](https://github.com/anthropics/claude-code/tree/main/examples/mdm) include modelli di distribuzione iniziali per Jamf, Iru (Kandji), Intune e Criteri di gruppo. Usa questi come punti di partenza e adattali alle tue esigenze.

110 

111 <Note>

112 Le distribuzioni gestite possono anche limitare **le aggiunte del marketplace dei plugin** utilizzando `strictKnownMarketplaces`. Per ulteriori informazioni, vedi [Restrizioni del marketplace gestito](/it/plugin-marketplaces#managed-marketplace-restrictions).

113 </Note>

114* **Altra configurazione** è archiviata in `~/.claude.json`. Questo file contiene la tua sessione OAuth, configurazioni dei [MCP server](/it/mcp) per gli ambiti utente e locale, stato per-progetto (strumenti consentiti, impostazioni di fiducia), e varie cache. I MCP server con ambito di progetto sono archiviati separatamente in `.mcp.json`.

115 

116<Note>

117 Claude Code crea automaticamente backup con timestamp dei file di configurazione e conserva i cinque backup più recenti per prevenire la perdita di dati.

118</Note>

119 

120```JSON Esempio settings.json theme={null}

121{

122 "$schema": "https://json.schemastore.org/claude-code-settings.json",

123 "permissions": {

124 "allow": [

125 "Bash(npm run lint)",

126 "Bash(npm run test *)",

127 "Read(~/.zshrc)"

128 ],

129 "deny": [

130 "Bash(curl *)",

131 "Read(./.env)",

132 "Read(./.env.*)",

133 "Read(./secrets/**)"

134 ]

135 },

136 "env": {

137 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

138 "OTEL_METRICS_EXPORTER": "otlp"

139 },

140 "companyAnnouncements": [

141 "Welcome to Acme Corp! Review our code guidelines at docs.acme.com",

142 "Reminder: Code reviews required for all PRs",

143 "New security policy in effect"

144 ]

145}

146```

147 

148La riga `$schema` nell'esempio sopra punta allo [schema JSON ufficiale](https://json.schemastore.org/claude-code-settings.json) per le impostazioni di Claude Code. Aggiungerlo al tuo `settings.json` abilita l'autocompletamento e la convalida inline in VS Code, Cursor e qualsiasi altro editor che supporta la convalida dello schema JSON.

149 

150Lo schema pubblicato viene aggiornato periodicamente e potrebbe non includere le impostazioni aggiunte nei rilasci CLI più recenti, quindi un avviso di convalida su un campo documentato di recente non significa necessariamente che la tua configurazione non sia valida.

151 

152### Impostazioni disponibili

153 

154`settings.json` supporta un numero di opzioni:

155 

156| Chiave | Descrizione | Esempio |

157| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- |

158| `agent` | Esegui il thread principale come un subagent denominato. Applica il prompt di sistema, le restrizioni degli strumenti e il modello di quel subagent. Vedi [Invoca i subagent esplicitamente](/it/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |

159| `allowedChannelPlugins` | (Solo impostazioni gestite) Elenco di autorizzazione dei plugin di canale che possono inviare messaggi. Sostituisce l'elenco di autorizzazione predefinito di Anthropic quando impostato. Non definito = ricaduta al predefinito, array vuoto = blocca tutti i plugin di canale. Richiede `channelsEnabled: true`. Vedi [Limita quali plugin di canale possono essere eseguiti](/it/channels#restrict-which-channel-plugins-can-run) | `[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]` |

160| `allowedHttpHookUrls` | Elenco di autorizzazione dei modelli di URL che gli hook HTTP possono indirizzare. Supporta `*` come carattere jolly. Quando impostato, gli hook con URL non corrispondenti vengono bloccati. Non definito = nessuna restrizione, array vuoto = blocca tutti gli hook HTTP. Gli array si uniscono tra le fonti di impostazioni. Vedi [Configurazione hook](#hook-configuration) | `["https://hooks.example.com/*"]` |

161| `allowedMcpServers` | Quando impostato in managed-settings.json, elenco di autorizzazione dei MCP server che gli utenti possono configurare. Non definito = nessuna restrizione, array vuoto = blocco. Si applica a tutti gli ambiti. L'elenco di negazione ha la precedenza. Vedi [Configurazione MCP gestita](/it/mcp#managed-mcp-configuration) | `[{ "serverName": "github" }]` |

162| `allowManagedHooksOnly` | (Solo impostazioni gestite) Solo gli hook gestiti, gli hook SDK e gli hook dai plugin forzatamente abilitati nelle impostazioni gestite `enabledPlugins` vengono caricati. Gli hook utente, di progetto e di tutti gli altri plugin vengono bloccati. Vedi [Configurazione hook](#hook-configuration) | `true` |

163| `allowManagedMcpServersOnly` | (Solo impostazioni gestite) Solo `allowedMcpServers` dalle impostazioni gestite sono rispettati. `deniedMcpServers` si unisce comunque da tutte le fonti. Gli utenti possono ancora aggiungere MCP server, ma si applica solo l'elenco di autorizzazione definito dall'amministratore. Vedi [Configurazione MCP gestita](/it/mcp#managed-mcp-configuration) | `true` |

164| `allowManagedPermissionRulesOnly` | (Solo impostazioni gestite) Previeni che le impostazioni utente e di progetto definiscano regole di permesso `allow`, `ask` o `deny`. Si applicano solo le regole nelle impostazioni gestite. Vedi [Impostazioni solo gestite](/it/permissions#managed-only-settings) | `true` |

165| `alwaysThinkingEnabled` | Abilita il [pensiero esteso](/it/model-config#extended-thinking) per impostazione predefinita per tutte le sessioni. Tipicamente configurato tramite il comando `/config` piuttosto che modificato direttamente | `true` |

166| `apiKeyHelper` | Script personalizzato, da eseguire in `/bin/sh`, per generare un valore di autenticazione. Questo valore verrà inviato come intestazioni `X-Api-Key` e `Authorization: Bearer` per le richieste di modello | `/bin/generate_temp_api_key.sh` |

167| `attribution` | Personalizza l'attribuzione per i commit git e le pull request. Vedi [Impostazioni di attribuzione](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |

168| `autoMemoryDirectory` | Directory personalizzata per l'archiviazione della [memoria automatica](/it/memory#storage-location). Accetta un percorso assoluto o un percorso con prefisso `~/`. Accettato dalle impostazioni di politica e utente, e dal flag `--settings`. Non accettato dalle impostazioni di progetto o locale, poiché un repository clonato potrebbe fornire uno dei due file per reindirizzare le scritture di memoria a posizioni sensibili | `"~/my-memory-dir"` |

169| `autoMode` | Personalizza cosa il classificatore della [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode) blocca e consente. Contiene array `environment`, `allow` e `soft_deny` di regole in prosa. Includi la stringa letterale `"$defaults"` in un array per ereditare le regole incorporate in quella posizione. Vedi [Configura la modalità auto](/it/auto-mode-config). Non letto dalle impostazioni di progetto condivise | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |

170| `autoScrollEnabled` | Nel [rendering fullscreen](/it/fullscreen), segui il nuovo output fino al fondo della conversazione. Predefinito: `true`. Appare in `/config` come **Auto-scroll**. I prompt di permesso scorrono comunque in vista quando questo è disattivato | `false` |

171| `autoUpdatesChannel` | Canale di rilascio da seguire per gli aggiornamenti. Usa `"stable"` per una versione che è tipicamente circa una settimana vecchia e salta le versioni con regressioni importanti, o `"latest"` (predefinito) per il rilascio più recente | `"stable"` |

172| `availableModels` | Limita quali modelli gli utenti possono selezionare tramite `/model`, `--model`, o `ANTHROPIC_MODEL`. Non influisce sull'opzione Predefinito. Vedi [Limita la selezione del modello](/it/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |

173| `awaySummaryEnabled` | Mostra un riepilogo di una riga della sessione quando torni al terminale dopo alcuni minuti di assenza. Imposta a `false` o disattiva Riepilogo sessione in `/config` per disabilitare. Uguale a [`CLAUDE_CODE_ENABLE_AWAY_SUMMARY`](/it/env-vars) | `true` |

174| `awsAuthRefresh` | Script personalizzato che modifica la directory `.aws` (vedi [configurazione avanzata delle credenziali](/it/amazon-bedrock#advanced-credential-configuration)) | `aws sso login --profile myprofile` |

175| `awsCredentialExport` | Script personalizzato che restituisce JSON con le credenziali AWS (vedi [configurazione avanzata delle credenziali](/it/amazon-bedrock#advanced-credential-configuration)) | `/bin/generate_aws_grant.sh` |

176| `blockedMarketplaces` | (Solo impostazioni gestite) Elenco di negazione delle fonti del marketplace. Applicato all'aggiunta del marketplace e all'installazione, aggiornamento, aggiornamento e auto-aggiornamento del plugin, quindi un marketplace aggiunto prima che la politica fosse impostata non può essere utilizzato per recuperare i plugin. Le fonti bloccate vengono controllate prima del download, quindi non toccano mai il filesystem. Vedi [Restrizioni del marketplace gestito](/it/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "untrusted/plugins" }]` |

177| `channelsEnabled` | (Solo impostazioni gestite) Consenti [channels](/it/channels) per gli utenti Team e Enterprise. Non impostato o `false` blocca la consegna dei messaggi del canale indipendentemente da cosa gli utenti passano a `--channels` | `true` |

178| `cleanupPeriodDays` | I file di sessione più vecchi di questo periodo vengono eliminati all'avvio (predefinito: 30 giorni, minimo 1). L'impostazione a `0` viene rifiutata con un errore di convalida. Controlla anche il limite di età per la rimozione automatica dei [worktrees subagent orfani](/it/worktrees#clean-up-worktrees) all'avvio. Per disabilitare completamente le scritture di trascritti, imposta la variabile di ambiente [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/it/env-vars), o in modalità non interattiva (`-p`) usa il flag `--no-session-persistence` o l'opzione SDK `persistSession: false`. | `20` |

179| `companyAnnouncements` | Annuncio da visualizzare agli utenti all'avvio. Se vengono forniti più annunci, verranno alternati casualmente. | `["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]` |

180| `defaultShell` | Shell predefinita per i comandi `!` della casella di input. Accetta `"bash"` (predefinito) o `"powershell"`. L'impostazione a `"powershell"` instrada i comandi `!` interattivi tramite PowerShell su Windows. Richiede `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Vedi [Strumento PowerShell](/it/tools-reference#powershell-tool) | `"powershell"` |

181| `deniedMcpServers` | Quando impostato in managed-settings.json, elenco di negazione dei MCP server che sono esplicitamente bloccati. Si applica a tutti gli ambiti inclusi i server gestiti. L'elenco di negazione ha la precedenza sull'elenco di autorizzazione. Vedi [Configurazione MCP gestita](/it/mcp#managed-mcp-configuration) | `[{ "serverName": "filesystem" }]` |

182| `disableAllHooks` | Disabilita tutti gli [hooks](/it/hooks) e qualsiasi [status line](/it/statusline) personalizzato | `true` |

183| `disableAutoMode` | Imposta a `"disable"` per prevenire l'attivazione della [modalità auto](/it/permission-modes#eliminate-prompts-with-auto-mode). Rimuove `auto` dal ciclo `Shift+Tab` e rifiuta `--permission-mode auto` all'avvio. Molto utile nelle [impostazioni gestite](/it/permissions#managed-settings) dove gli utenti non possono ignorarla | `"disable"` |

184| `disableDeepLinkRegistration` | Imposta a `"disable"` per prevenire che Claude Code registri il gestore del protocollo `claude-cli://` con il sistema operativo all'avvio. I [deep link](/it/deep-links) consentono agli strumenti esterni di aprire una sessione di Claude Code con un prompt pre-compilato. Utile negli ambienti in cui la registrazione del gestore del protocollo è limitata o gestita separatamente | `"disable"` |

185| `disabledMcpjsonServers` | Elenco di MCP server specifici dai file `.mcp.json` da rifiutare | `["filesystem"]` |

186| `disableSkillShellExecution` | Disabilita l'esecuzione inline della shell per i blocchi `` !`...` `` e ` ```! ` nei [skills](/it/skills) e nei comandi personalizzati da fonti utente, progetto, plugin o directory aggiuntive. I comandi vengono sostituiti con `[shell command execution disabled by policy]` invece di essere eseguiti. I skills bundled e gestiti non sono interessati. Molto utile nelle [impostazioni gestite](/it/permissions#managed-settings) dove gli utenti non possono ignorarla | `true` |

187| `editorMode` | Modalità di scorciatoie da tastiera per il prompt di input: `"normal"` o `"vim"`. Predefinito: `"normal"`. Appare in `/config` come **Editor mode** | `"vim"` |

188| `effortLevel` | Persisti il [livello di sforzo](/it/model-config#adjust-effort-level) tra le sessioni. Accetta `"low"`, `"medium"`, `"high"`, o `"xhigh"`. Scritto automaticamente quando esegui `/effort` con uno di questi valori. Vedi [Regola il livello di sforzo](/it/model-config#adjust-effort-level) per i modelli supportati | `"xhigh"` |

189| `enableAllProjectMcpServers` | Approva automaticamente tutti i MCP server definiti nei file `.mcp.json` del progetto | `true` |

190| `enabledMcpjsonServers` | Elenco di MCP server specifici dai file `.mcp.json` da approvare | `["memory", "github"]` |

191| `env` | Variabili di ambiente che verranno applicate a ogni sessione | `{"FOO": "bar"}` |

192| `fastModePerSessionOptIn` | Quando `true`, la modalità veloce non persiste tra le sessioni. Ogni sessione inizia con la modalità veloce disattivata, richiedendo agli utenti di abilitarla con `/fast`. La preferenza della modalità veloce dell'utente viene comunque salvata. Vedi [Richiedi opt-in per sessione](/it/fast-mode#require-per-session-opt-in) | `true` |

193| `feedbackSurveyRate` | Probabilità (0–1) che il [sondaggio sulla qualità della sessione](/it/data-usage#session-quality-surveys) appaia quando idoneo. Imposta a `0` per sopprimere completamente. Utile quando si utilizza Bedrock, Vertex, o Foundry dove il tasso di campionamento predefinito non si applica | `0.05` |

194| `fileSuggestion` | Configura uno script personalizzato per l'autocompletamento dei file `@`. Vedi [Impostazioni di suggerimento file](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |

195| `forceLoginMethod` | Usa `claudeai` per limitare l'accesso agli account Claude.ai, `console` per limitare l'accesso agli account Claude Console (fatturazione per utilizzo API) | `claudeai` |

196| `forceLoginOrgUUID` | Richiedi che l'accesso appartenga a un'organizzazione specifica. Accetta una singola stringa UUID, che pre-seleziona anche quell'organizzazione durante l'accesso, o un array di UUID dove qualsiasi organizzazione elencata è accettata senza pre-selezione. Quando impostato nelle impostazioni gestite, l'accesso fallisce se l'account autenticato non appartiene a un'organizzazione elencata; un array vuoto fallisce in modo chiuso e blocca l'accesso con un messaggio di errore di configurazione | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` o `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |

197| `forceRemoteSettingsRefresh` | (Solo impostazioni gestite) Blocca l'avvio della CLI fino a quando le impostazioni gestite remote non vengono recuperate di recente dal server. Se il recupero fallisce, la CLI esce invece di continuare con le impostazioni memorizzate nella cache o senza impostazioni. Quando non impostato, l'avvio continua senza attendere le impostazioni remote. Vedi [applicazione fail-closed](/it/server-managed-settings#enforce-fail-closed-startup) | `true` |

198| `hooks` | Configura comandi personalizzati da eseguire agli eventi del ciclo di vita. Vedi [documentazione hooks](/it/hooks) per il formato | Vedi [hooks](/it/hooks) |

199| `httpHookAllowedEnvVars` | Elenco di autorizzazione dei nomi delle variabili di ambiente che gli hook HTTP possono interpolare nelle intestazioni. Quando impostato, l'`allowedEnvVars` effettivo di ogni hook è l'intersezione con questo elenco. Non definito = nessuna restrizione. Gli array si uniscono tra le fonti di impostazioni. Vedi [Configurazione hook](#hook-configuration) | `["MY_TOKEN", "HOOK_SECRET"]` |

200| `includeCoAuthoredBy` | **Deprecato**: Usa `attribution` invece. Se includere la riga `co-authored-by Claude` nei commit git e nelle pull request (predefinito: `true`) | `false` |

201| `includeGitInstructions` | Includi le istruzioni integrate del flusso di lavoro di commit e PR e lo snapshot dello stato git nel prompt di sistema di Claude (predefinito: `true`). Imposta a `false` per rimuovere entrambi, ad esempio quando utilizzi le tue skill di flusso di lavoro git. La variabile di ambiente `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` ha la precedenza su questa impostazione quando impostata | `false` |

202| `language` | Configura la lingua di risposta preferita di Claude (ad es., `"japanese"`, `"spanish"`, `"french"`). Claude risponderà in questa lingua per impostazione predefinita. Imposta anche la lingua della [dettatura vocale](/it/voice-dictation#change-the-dictation-language) | `"japanese"` |

203| `minimumVersion` | Floor che previene l'auto-aggiornamento in background e `claude update` dall'installazione di una versione al di sotto di questa. Passare dal canale `"latest"` a `"stable"` tramite `/config` ti chiede di rimanere sulla versione corrente o di consentire il downgrade. Scegliere di rimanere imposta questo valore. Utile anche nelle [impostazioni gestite](/it/permissions#managed-settings) per fissare un minimo a livello organizzativo | `"2.1.100"` |

204| `model` | Ignora il modello predefinito da utilizzare per Claude Code | `"claude-sonnet-4-6"` |

205| `modelOverrides` | Mappa gli ID dei modelli Anthropic agli ID dei modelli specifici del provider come gli ARN del profilo di inferenza Bedrock. Ogni voce del selettore di modello utilizza il suo valore mappato quando chiama l'API del provider. Vedi [Ignora gli ID dei modelli per versione](/it/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |

206| `otelHeadersHelper` | Script per generare intestazioni OpenTelemetry dinamiche. Viene eseguito all'avvio e periodicamente (vedi [Intestazioni dinamiche](/it/monitoring-usage#dynamic-headers)) | `/bin/generate_otel_headers.sh` |

207| `outputStyle` | Configura uno stile di output per regolare il prompt di sistema. Vedi [documentazione degli stili di output](/it/output-styles) | `"Explanatory"` |

208| `permissions` | Vedi la tabella sottostante per la struttura dei permessi. | |

209| `plansDirectory` | Personalizza dove vengono archiviati i file di piano. Il percorso è relativo alla radice del progetto. Predefinito: `~/.claude/plans` | `"./plans"` |

210| `pluginTrustMessage` | (Solo impostazioni gestite) Messaggio personalizzato aggiunto all'avviso di fiducia del plugin mostrato prima dell'installazione. Usa questo per aggiungere contesto specifico dell'organizzazione, ad esempio per confermare che i plugin dal tuo marketplace interno sono controllati. | `"All plugins from our marketplace are approved by IT"` |

211| `preferredNotifChannel` | Metodo per le notifiche di completamento attività e prompt di permesso: `"auto"`, `"terminal_bell"`, `"iterm2"`, `"iterm2_with_bell"`, `"kitty"`, `"ghostty"`, o `"notifications_disabled"`. Predefinito: `"auto"`, che invia una notifica desktop in iTerm2, Ghostty e Kitty e non fa nulla in altri terminali. Imposta `"terminal_bell"` per suonare il carattere di campanello in qualsiasi terminale. Appare in `/config` come **Notifications**. Vedi [Ottieni un campanello del terminale o una notifica](/it/terminal-config#get-a-terminal-bell-or-notification) | `"terminal_bell"` |

212| `prefersReducedMotion` | Riduci o disabilita le animazioni dell'interfaccia utente (spinner, shimmer, effetti flash) per l'accessibilità | `true` |

213| `prUrlTemplate` | Modello di URL per il badge PR mostrato nel footer e nei riassunti dei risultati degli strumenti. Sostituisce `{host}`, `{owner}`, `{repo}`, `{number}`, e `{url}` dall'URL PR segnalato da `gh`. Usa per puntare i link PR a uno strumento di revisione del codice interno invece di `github.com`. Non influisce sui link automatici `#123` nella prosa di Claude | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |

214| `respectGitignore` | Controlla se il selettore di file `@` rispetta i modelli `.gitignore`. Quando `true` (predefinito), i file che corrispondono ai modelli `.gitignore` sono esclusi dai suggerimenti | `false` |

215| `showClearContextOnPlanAccept` | Mostra l'opzione "cancella contesto" nella schermata di accettazione del piano. Predefinito: `false`. Imposta a `true` per ripristinare l'opzione | `true` |

216| `showThinkingSummaries` | Mostra i riassunti del [pensiero esteso](/it/model-config#extended-thinking) nelle sessioni interattive. Quando non impostato o `false` (predefinito in modalità interattiva), i blocchi di pensiero vengono redatti dall'API e mostrati come uno stub compresso. La redazione cambia solo quello che vedi, non quello che il modello genera: per ridurre la spesa di pensiero, [abbassa il budget o disabilita il pensiero](/it/model-config#extended-thinking) invece. La modalità non interattiva (`-p`) e i chiamanti SDK ricevono sempre i riassunti indipendentemente da questa impostazione | `true` |

217| `showTurnDuration` | Mostra i messaggi di durata del turno dopo le risposte, ad es. "Cooked for 1m 6s". Predefinito: `true`. Appare in `/config` come **Show turn duration** | `false` |

218| `skipWebFetchPreflight` | Salta il [controllo di sicurezza del dominio WebFetch](/it/data-usage#webfetch-domain-safety-check) che invia ogni hostname richiesto a `api.anthropic.com` prima del recupero. Imposta a `true` negli ambienti che bloccano il traffico verso Anthropic, come le distribuzioni Bedrock, Vertex AI, o Foundry con egress restrittivo. Quando saltato, WebFetch tenta qualsiasi URL senza consultare l'elenco di blocco | `true` |

219| `spinnerTipsEnabled` | Mostra suggerimenti nello spinner mentre Claude sta lavorando. Imposta a `false` per disabilitare i suggerimenti (predefinito: `true`) | `false` |

220| `spinnerTipsOverride` | Ignora i suggerimenti dello spinner con stringhe personalizzate. `tips`: array di stringhe di suggerimento. `excludeDefault`: se `true`, mostra solo suggerimenti personalizzati; se `false` o assente, i suggerimenti personalizzati vengono uniti ai suggerimenti incorporati | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |

221| `spinnerVerbs` | Personalizza i verbi di azione mostrati nello spinner e nei messaggi di durata del turno. Imposta `mode` a `"replace"` per utilizzare solo i tuoi verbi, o `"append"` per aggiungerli ai predefiniti | `{"mode": "append", "verbs": ["Pondering", "Crafting"]}` |

222| `sshConfigs` | Connessioni SSH da mostrare nel menu a discesa dell'ambiente [Desktop](/it/desktop#pre-configure-ssh-connections-for-your-team). Ogni voce richiede `id`, `name` e `sshHost`; `sshPort`, `sshIdentityFile` e `startDirectory` sono facoltativi. Quando impostato nelle impostazioni gestite, le connessioni sono di sola lettura per gli utenti. Letto solo dalle impostazioni gestite e utente | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |

223| `statusLine` | Configura una status line personalizzata per visualizzare il contesto. Vedi [documentazione `statusLine`](/it/statusline) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |

224| `strictKnownMarketplaces` | (Solo impostazioni gestite) Elenco di autorizzazione dei marketplace dei plugin. Non definito = nessuna restrizione, array vuoto = blocco. Applicato all'aggiunta del marketplace e all'installazione, aggiornamento, aggiornamento e auto-aggiornamento del plugin, quindi un marketplace aggiunto prima che la politica fosse impostata non può essere utilizzato per recuperare i plugin. Vedi [Restrizioni del marketplace gestito](/it/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |

225| `teammateMode` | Come i compagni di squadra del [team di agenti](/it/agent-teams) vengono visualizzati: `auto` (sceglie riquadri divisi in tmux o iTerm2, in-process altrimenti), `in-process`, o `tmux`. Vedi [scegli una modalità di visualizzazione](/it/agent-teams#choose-a-display-mode) | `"in-process"` |

226| `terminalProgressBarEnabled` | Mostra la barra di avanzamento del terminale nei terminali supportati: ConEmu, Ghostty 1.2.0+, e iTerm2 3.6.6+. Predefinito: `true`. Appare in `/config` come **Terminal progress bar** | `false` |

227| `tui` | Renderer dell'interfaccia utente del terminale. Usa `"fullscreen"` per il renderer [alt-screen](/it/fullscreen) senza sfarfallio con scrollback virtualizzato. Usa `"default"` per il renderer classico della schermata principale. Imposta tramite `/tui` | `"fullscreen"` |

228| `useAutoModeDuringPlan` | Se la modalità piano utilizza la semantica della modalità auto quando la modalità auto è disponibile. Predefinito: `true`. Non letto dalle impostazioni di progetto condivise. Appare in `/config` come "Use auto mode during plan" | `false` |

229| `viewMode` | Modalità di visualizzazione della trascrizione predefinita all'avvio: `"default"`, `"verbose"`, o `"focus"`. Ignora la selezione sticky `/focus` quando impostato | `"verbose"` |

230| `voice` | Impostazioni della [dettatura vocale](/it/voice-dictation): `enabled` attiva la dettatura, `mode` seleziona `"hold"` o `"tap"`, e `autoSubmit` invia il prompt al rilascio del tasto in modalità hold. Scritto automaticamente quando esegui `/voice`. Richiede un account Claude.ai | `{ "enabled": true, "mode": "tap" }` |

231| `voiceEnabled` | Alias legacy per `voice.enabled`. Preferisci l'oggetto `voice` | `true` |

232| `wslInheritsWindowsSettings` | (Solo impostazioni gestite Windows) Quando `true`, Claude Code su WSL legge le impostazioni gestite dalla catena di politiche Windows in aggiunta a `/etc/claude-code`, con le fonti Windows che hanno priorità. Onorato solo quando impostato nella chiave di registro HKLM o in `C:\Program Files\ClaudeCode\managed-settings.json`, entrambi richiedono privilegi di amministratore Windows per scrivere. Affinché la politica HKCU si applichi anche su WSL, il flag deve essere impostato anche in HKCU stesso. Non ha effetto su Windows nativo | `true` |

233 

234### Impostazioni di configurazione globale

235 

236Queste impostazioni sono archiviate in `~/.claude.json` piuttosto che in `settings.json`. Aggiungerle a `settings.json` attiverà un errore di convalida dello schema.

237 

238<Note>

239 Le versioni precedenti a v2.1.119 archiviano anche `autoScrollEnabled`, `editorMode`, `showTurnDuration`, `teammateMode`, e `terminalProgressBarEnabled` qui invece che in `settings.json`.

240</Note>

241 

242| Chiave | Descrizione | Esempio |

243| :------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------ |

244| `autoConnectIde` | Connettiti automaticamente a un IDE in esecuzione quando Claude Code si avvia da un terminale esterno. Predefinito: `false`. Appare in `/config` come **Auto-connect to IDE (external terminal)** quando eseguito al di fuori di un terminale VS Code o JetBrains | `true` |

245| `autoInstallIdeExtension` | Installa automaticamente l'estensione IDE di Claude Code quando eseguito da un terminale VS Code. Predefinito: `true`. Appare in `/config` come **Auto-install IDE extension** quando eseguito all'interno di un terminale VS Code o JetBrains. Puoi anche impostare la variabile di ambiente [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](/it/env-vars) | `false` |

246| `externalEditorContext` | Prependi la risposta precedente di Claude come contesto commentato con `#` quando apri l'editor esterno con `Ctrl+G`. Predefinito: `false`. Appare in `/config` come **Show last response in external editor** | `true` |

247 

248### Impostazioni worktree

249 

250Configura come `--worktree` crea e gestisce i git worktrees. Usa queste impostazioni per ridurre l'utilizzo del disco e il tempo di avvio nei grandi monorepo.

251 

252| Chiave | Descrizione | Esempio |

253| :---------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------ |

254| `worktree.symlinkDirectories` | Directory da collegare simbolicamente dal repository principale in ogni worktree per evitare di duplicare grandi directory su disco. Nessuna directory viene collegata simbolicamente per impostazione predefinita | `["node_modules", ".cache"]` |

255| `worktree.sparsePaths` | Directory da estrarre in ogni worktree tramite git sparse-checkout (modalità cone). Solo i percorsi elencati vengono scritti su disco, il che è più veloce nei grandi monorepo | `["packages/my-app", "shared/utils"]` |

256 

257Per copiare file gitignored come `.env` nei nuovi worktrees, usa un file [`.worktreeinclude`](/it/worktrees#copy-gitignored-files-into-worktrees) nella radice del tuo progetto invece di un'impostazione.

258 

259### Impostazioni di permesso

260 

261| Chiavi | Descrizione | Esempio |

262| :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

263| `allow` | Array di regole di permesso per consentire l'uso dello strumento. Vedi [Sintassi della regola di permesso](#permission-rule-syntax) sottostante per i dettagli della corrispondenza dei modelli | `[ "Bash(git diff *)" ]` |

264| `ask` | Array di regole di permesso per chiedere conferma all'uso dello strumento. Vedi [Sintassi della regola di permesso](#permission-rule-syntax) sottostante | `[ "Bash(git push *)" ]` |

265| `deny` | Array di regole di permesso per negare l'uso dello strumento. Usa questo per escludere file sensibili dall'accesso di Claude Code. Vedi [Sintassi della regola di permesso](#permission-rule-syntax) e [Limitazioni dei permessi Bash](/it/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |

266| `additionalDirectories` | [Directory di lavoro](/it/permissions#working-directories) aggiuntive per l'accesso ai file. La maggior parte della configurazione `.claude/` [non viene scoperta](/it/permissions#additional-directories-grant-file-access-not-configuration) da queste directory | `[ "../docs/" ]` |

267| `defaultMode` | [Modalità di permesso](/it/permission-modes) predefinita quando si apre Claude Code. Valori validi: `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`. Il flag CLI `--permission-mode` ignora questa impostazione per una singola sessione | `"acceptEdits"` |

268| `disableBypassPermissionsMode` | Imposta a `"disable"` per prevenire l'attivazione della modalità `bypassPermissions`. Disabilita il flag della riga di comando `--dangerously-skip-permissions`. Molto utile nelle [impostazioni gestite](/it/permissions#managed-settings) per applicare la politica organizzativa, ma funziona da qualsiasi ambito | `"disable"` |

269| `skipDangerousModePermissionPrompt` | Salta il prompt di conferma mostrato prima di entrare nella modalità bypass dei permessi tramite `--dangerously-skip-permissions` o `defaultMode: "bypassPermissions"`. Ignorato quando impostato nelle impostazioni di progetto (`.claude/settings.json`) per prevenire che i repository non attendibili ignorino automaticamente il prompt | `true` |

270 

271### Sintassi della regola di permesso

272 

273Le regole di permesso seguono il formato `Tool` o `Tool(specifier)`. Le regole vengono valutate in ordine: prima le regole di negazione, poi di richiesta, poi di autorizzazione. La prima regola corrispondente vince.

274 

275Esempi rapidi:

276 

277| Regola | Effetto |

278| :----------------------------- | :------------------------------------------------ |

279| `Bash` | Corrisponde a tutti i comandi Bash |

280| `Bash(npm run *)` | Corrisponde ai comandi che iniziano con `npm run` |

281| `Read(./.env)` | Corrisponde alla lettura del file `.env` |

282| `WebFetch(domain:example.com)` | Corrisponde alle richieste di fetch a example.com |

283 

284Per il riferimento completo della sintassi delle regole, incluso il comportamento dei caratteri jolly, i modelli specifici dello strumento per Read, Edit, WebFetch, MCP e Agent, e le limitazioni di sicurezza dei modelli Bash, vedi [Sintassi della regola di permesso](/it/permissions#permission-rule-syntax).

285 

286### Impostazioni sandbox

287 

288Configura il comportamento avanzato del sandboxing. Il sandboxing isola i comandi bash dal tuo filesystem e dalla rete. Vedi [Sandboxing](/it/sandboxing) per i dettagli.

289 

290| Chiavi | Descrizione | Esempio |

291| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------- |

292| `enabled` | Abilita il sandboxing bash (macOS, Linux e WSL2). Predefinito: false | `true` |

293| `failIfUnavailable` | Esci con un errore all'avvio se `sandbox.enabled` è true ma la sandbox non può avviarsi (dipendenze mancanti, piattaforma non supportata). Quando false (predefinito), viene mostrato un avviso e i comandi vengono eseguiti senza sandbox. Destinato alle distribuzioni di impostazioni gestite che richiedono il sandboxing come gate rigido | `true` |

294| `autoAllowBashIfSandboxed` | Approva automaticamente i comandi bash quando sandboxed. Predefinito: true | `true` |

295| `excludedCommands` | Comandi che dovrebbero essere eseguiti al di fuori della sandbox | `["docker *"]` |

296| `allowUnsandboxedCommands` | Consenti ai comandi di essere eseguiti al di fuori della sandbox tramite il parametro `dangerouslyDisableSandbox`. Quando impostato a `false`, la scappatoia `dangerouslyDisableSandbox` è completamente disabilitata e tutti i comandi devono essere sandboxed (o essere in `excludedCommands`). Utile per le politiche aziendali che richiedono un sandboxing rigoroso. Predefinito: true | `false` |

297| `filesystem.allowWrite` | Percorsi aggiuntivi dove i comandi sandboxed possono scrivere. Gli array vengono uniti in tutti gli ambiti di impostazioni: i percorsi utente, progetto e gestiti vengono combinati, non sostituiti. Anche uniti con i percorsi dalle regole di permesso `Edit(...)` allow. Vedi [prefissi di percorso](#sandbox-path-prefixes) sottostante. | `["/tmp/build", "~/.kube"]` |

298| `filesystem.denyWrite` | Percorsi dove i comandi sandboxed non possono scrivere. Gli array vengono uniti in tutti gli ambiti di impostazioni. Anche uniti con i percorsi dalle regole di permesso `Edit(...)` deny. | `["/etc", "/usr/local/bin"]` |

299| `filesystem.denyRead` | Percorsi dove i comandi sandboxed non possono leggere. Gli array vengono uniti in tutti gli ambiti di impostazioni. Anche uniti con i percorsi dalle regole di permesso `Read(...)` deny. | `["~/.aws/credentials"]` |

300| `filesystem.allowRead` | Percorsi per consentire nuovamente la lettura all'interno delle regioni `denyRead`. Ha la precedenza su `denyRead`. Gli array vengono uniti in tutti gli ambiti di impostazioni. Usa questo per creare modelli di accesso in lettura solo per l'area di lavoro. | `["."]` |

301| `filesystem.allowManagedReadPathsOnly` | (Solo impostazioni gestite) Solo i percorsi `filesystem.allowRead` dalle impostazioni gestite sono rispettati. `denyRead` si unisce comunque da tutte le fonti. Predefinito: false | `true` |

302| `network.allowUnixSockets` | (Solo macOS) Percorsi dei socket Unix accessibili nella sandbox. Ignorato su Linux e WSL2, dove il filtro seccomp non può ispezionare i percorsi dei socket; usa `allowAllUnixSockets` invece. | `["~/.ssh/agent-socket"]` |

303| `network.allowAllUnixSockets` | Consenti tutte le connessioni ai socket Unix nella sandbox. Su Linux e WSL2 questo è l'unico modo per consentire i socket Unix, poiché salta il filtro seccomp che altrimenti blocca le chiamate `socket(AF_UNIX, ...)`. Predefinito: false | `true` |

304| `network.allowLocalBinding` | Consenti il binding alle porte localhost (solo macOS). Predefinito: false | `true` |

305| `network.allowMachLookup` | Nomi di servizi XPC/Mach aggiuntivi che la sandbox può cercare (solo macOS). Supporta un singolo `*` finale per la corrispondenza del prefisso. Necessario per gli strumenti che comunicano tramite XPC come il simulatore iOS o Playwright. | `["com.apple.coresimulator.*"]` |

306| `network.allowedDomains` | Array di domini da consentire per il traffico di rete in uscita. Supporta i caratteri jolly (ad es., `*.example.com`). | `["github.com", "*.npmjs.org"]` |

307| `network.deniedDomains` | Array di domini da bloccare per il traffico di rete in uscita. Supporta la stessa sintassi dei caratteri jolly di `allowedDomains`. Ha la precedenza su `allowedDomains` quando entrambi corrispondono. Unito da tutte le fonti di impostazioni indipendentemente da `allowManagedDomainsOnly`. | `["sensitive.cloud.example.com"]` |

308| `network.allowManagedDomainsOnly` | (Solo impostazioni gestite) Solo `allowedDomains` e le regole allow `WebFetch(domain:...)` dalle impostazioni gestite sono rispettate. I domini dalle impostazioni utente, progetto e locale vengono ignorati. I domini non consentiti vengono bloccati automaticamente senza richiedere all'utente. I domini negati vengono comunque rispettati da tutte le fonti. Predefinito: false | `true` |

309| `network.httpProxyPort` | Porta del proxy HTTP utilizzata se desideri portare il tuo proxy. Se non specificato, Claude eseguirà il suo proxy. | `8080` |

310| `network.socksProxyPort` | Porta del proxy SOCKS5 utilizzata se desideri portare il tuo proxy. Se non specificato, Claude eseguirà il suo proxy. | `8081` |

311| `enableWeakerNestedSandbox` | Abilita una sandbox più debole per gli ambienti Docker senza privilegi (solo Linux e WSL2). **Riduce la sicurezza.** Predefinito: false | `true` |

312| `enableWeakerNetworkIsolation` | (Solo macOS) Consenti l'accesso al servizio di fiducia TLS del sistema (`com.apple.trustd.agent`) nella sandbox. Richiesto affinché gli strumenti basati su Go come `gh`, `gcloud` e `terraform` verifichino i certificati TLS quando si utilizza `httpProxyPort` con un proxy MITM e una CA personalizzata. **Riduce la sicurezza** aprendo un potenziale percorso di esfiltrazione dei dati. Predefinito: false | `true` |

313 

314#### Prefissi di percorso sandbox

315 

316I percorsi in `filesystem.allowWrite`, `filesystem.denyWrite`, `filesystem.denyRead` e `filesystem.allowRead` supportano questi prefissi:

317 

318| Prefisso | Significato | Esempio |

319| :--------------------- | :------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------- |

320| `/` | Percorso assoluto dalla radice del filesystem | `/tmp/build` rimane `/tmp/build` |

321| `~/` | Relativo alla directory home | `~/.kube` diventa `$HOME/.kube` |

322| `./` o nessun prefisso | Relativo alla radice del progetto per le impostazioni di progetto, o a `~/.claude` per le impostazioni utente | `./output` in `.claude/settings.json` si risolve in `<project-root>/output` |

323 

324Il prefisso più vecchio `//path` per i percorsi assoluti funziona ancora. Se in precedenza hai utilizzato il singolo slash `/path` aspettandoti una risoluzione relativa al progetto, passa a `./path`. Questa sintassi differisce dalle [regole di permesso Read e Edit](/it/permissions#read-and-edit), che utilizzano `//path` per assoluto e `/path` per relativo al progetto. I percorsi del filesystem sandbox utilizzano convenzioni standard: `/tmp/build` è un percorso assoluto.

325 

326**Esempio di configurazione:**

327 

328```json theme={null}

329{

330 "sandbox": {

331 "enabled": true,

332 "autoAllowBashIfSandboxed": true,

333 "excludedCommands": ["docker *"],

334 "filesystem": {

335 "allowWrite": ["/tmp/build", "~/.kube"],

336 "denyRead": ["~/.aws/credentials"]

337 },

338 "network": {

339 "allowedDomains": ["github.com", "*.npmjs.org", "registry.yarnpkg.com"],

340 "deniedDomains": ["uploads.github.com"],

341 "allowUnixSockets": [

342 "/var/run/docker.sock"

343 ],

344 "allowLocalBinding": true

345 }

346 }

347}

348```

349 

350**Le restrizioni del filesystem e della rete** possono essere configurate in due modi che vengono uniti insieme:

351 

352* **Impostazioni `sandbox.filesystem`** (mostrate sopra): Controllano i percorsi al confine della sandbox a livello di sistema operativo. Queste restrizioni si applicano a tutti i comandi dei sottoprocessi (ad es., `kubectl`, `terraform`, `npm`), non solo agli strumenti di file di Claude.

353* **Regole di permesso**: Usa le regole allow/deny `Edit` per controllare l'accesso dello strumento di file di Claude, le regole deny `Read` per bloccare le letture, e le regole allow/deny `WebFetch` per controllare i domini di rete. I percorsi da queste regole vengono anche uniti nella configurazione della sandbox.

354 

355### Impostazioni di attribuzione

356 

357Claude Code aggiunge attribuzione ai commit git e alle pull request. Questi vengono configurati separatamente:

358 

359* I commit utilizzano i [git trailers](https://git-scm.com/docs/git-interpret-trailers) (come `Co-Authored-By`) per impostazione predefinita, che possono essere personalizzati o disabilitati

360* Le descrizioni delle pull request sono testo semplice

361 

362| Chiavi | Descrizione |

363| :------- | :-------------------------------------------------------------------------------------------------------------- |

364| `commit` | Attribuzione per i commit git, inclusi eventuali trailer. La stringa vuota nasconde l'attribuzione del commit |

365| `pr` | Attribuzione per le descrizioni delle pull request. La stringa vuota nasconde l'attribuzione della pull request |

366 

367**Attribuzione predefinita del commit:**

368 

369```text theme={null}

370🤖 Generated with [Claude Code](https://claude.com/claude-code)

371 

372 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

373```

374 

375**Attribuzione predefinita della pull request:**

376 

377```text theme={null}

378🤖 Generated with [Claude Code](https://claude.com/claude-code)

379```

380 

381**Esempio:**

382 

383```json theme={null}

384{

385 "attribution": {

386 "commit": "Generated with AI\n\nCo-Authored-By: AI <ai@example.com>",

387 "pr": ""

388 }

389}

390```

391 

392<Note>

393 L'impostazione `attribution` ha la precedenza sull'impostazione deprecata `includeCoAuthoredBy`. Per nascondere tutta l'attribuzione, imposta `commit` e `pr` a stringhe vuote.

394</Note>

395 

396### Impostazioni di suggerimento file

397 

398Configura un comando personalizzato per l'autocompletamento del percorso del file `@`. Il suggerimento di file incorporato utilizza l'attraversamento veloce del filesystem, ma i grandi monorepo potrebbero beneficiare dell'indicizzazione specifica del progetto come un indice di file pre-costruito o strumenti personalizzati.

399 

400```json theme={null}

401{

402 "fileSuggestion": {

403 "type": "command",

404 "command": "~/.claude/file-suggestion.sh"

405 }

406}

407```

408 

409Il comando viene eseguito con le stesse variabili di ambiente degli [hooks](/it/hooks), incluso `CLAUDE_PROJECT_DIR`. Riceve JSON tramite stdin con un campo `query`:

410 

411```json theme={null}

412{"query": "src/comp"}

413```

414 

415Restituisci i percorsi dei file separati da newline a stdout (attualmente limitati a 15):

416 

417```text theme={null}

418src/components/Button.tsx

419src/components/Modal.tsx

420src/components/Form.tsx

421```

422 

423**Esempio:**

424 

425```bash theme={null}

426#!/bin/bash

427query=$(cat | jq -r '.query')

428your-repo-file-index --query "$query" | head -20

429```

430 

431### Configurazione hook

432 

433Queste impostazioni controllano quali hook possono essere eseguiti e a cosa possono accedere gli hook HTTP. L'impostazione `allowManagedHooksOnly` può essere configurata solo nelle [impostazioni gestite](#settings-files). Gli elenchi di autorizzazione degli URL e delle variabili di ambiente possono essere impostati a qualsiasi livello di impostazioni e si uniscono tra le fonti.

434 

435**Comportamento quando `allowManagedHooksOnly` è `true`:**

436 

437* Gli hook gestiti e gli hook SDK vengono caricati

438* Gli hook dai plugin forzatamente abilitati nelle impostazioni gestite `enabledPlugins` vengono caricati. Questo consente agli amministratori di distribuire hook controllati tramite un marketplace organizzativo mentre blocca tutto il resto. La fiducia viene concessa dall'ID completo `plugin@marketplace`, quindi un plugin con lo stesso nome da un marketplace diverso rimane bloccato

439* Gli hook utente, di progetto e di tutti gli altri plugin vengono bloccati

440 

441**Limita gli URL degli hook HTTP:**

442 

443Limita quali URL gli hook HTTP possono indirizzare. Supporta `*` come carattere jolly per la corrispondenza. Quando l'array è definito, gli hook HTTP che indirizzano URL non corrispondenti vengono silenziosamente bloccati.

444 

445```json theme={null}

446{

447 "allowedHttpHookUrls": ["https://hooks.example.com/*", "http://localhost:*"]

448}

449```

450 

451**Limita le variabili di ambiente degli hook HTTP:**

452 

453Limita quali nomi di variabili di ambiente gli hook HTTP possono interpolare nei valori delle intestazioni. L'`allowedEnvVars` effettivo di ogni hook è l'intersezione del suo elenco e di questa impostazione.

454 

455```json theme={null}

456{

457 "httpHookAllowedEnvVars": ["MY_TOKEN", "HOOK_SECRET"]

458}

459```

460 

461### Precedenza delle impostazioni

462 

463Le impostazioni si applicano in ordine di precedenza. Dal più alto al più basso:

464 

4651. **Impostazioni gestite** ([gestite dal server](/it/server-managed-settings), [politiche MDM/a livello di sistema operativo](#configuration-scopes), o [impostazioni gestite](/it/settings#settings-files))

466 * Politiche distribuite da IT tramite consegna dal server, profili di configurazione MDM, politiche di registro, o file di impostazioni gestite

467 * Non possono essere ignorate da nessun altro livello, inclusi gli argomenti della riga di comando

468 * All'interno del livello gestito, la precedenza è: gestite dal server > politiche MDM/a livello di sistema operativo > file-based (`managed-settings.d/*.json` + `managed-settings.json`) > registro HKCU (solo Windows). Viene utilizzata una sola fonte gestita; le fonti non si uniscono tra i livelli. All'interno del livello file-based, i file drop-in e il file base vengono uniti insieme.

469 

4702. **Argomenti della riga di comando**

471 * Override temporanei per una sessione specifica

472 

4733. **Impostazioni di progetto locale** (`.claude/settings.local.json`)

474 * Impostazioni personali specifiche del progetto

475 

4764. **Impostazioni di progetto condivise** (`.claude/settings.json`)

477 * Impostazioni di progetto condivise dal team nel controllo del codice sorgente

478 

4795. **Impostazioni utente** (`~/.claude/settings.json`)

480 * Impostazioni globali personali

481 

482Questa gerarchia garantisce che le politiche organizzative siano sempre applicate mentre consente comunque ai team e agli individui di personalizzare la loro esperienza. La stessa precedenza si applica se esegui Claude Code dalla CLI, dall'[estensione VS Code](/it/vs-code), o da un [IDE JetBrains](/it/jetbrains).

483 

484Ad esempio, se le tue impostazioni utente consentono `Bash(npm run *)` ma le impostazioni condivise di un progetto lo negano, l'impostazione di progetto ha la precedenza e il comando viene bloccato.

485 

486<Note>

487 **Le impostazioni di array si uniscono tra gli ambiti.** Quando la stessa impostazione con valore di array (come `sandbox.filesystem.allowWrite` o `permissions.allow`) appare in più ambiti, gli array vengono **concatenati e deduplicati**, non sostituiti. Ciò significa che gli ambiti con priorità inferiore possono aggiungere voci senza ignorare quelle impostate da ambiti con priorità più alta, e viceversa. Ad esempio, se le impostazioni gestite impostano `allowWrite` a `["/opt/company-tools"]` e un utente aggiunge `["~/.kube"]`, entrambi i percorsi sono inclusi nella configurazione finale.

488</Note>

489 

490### Verifica le impostazioni attive

491 

492Esegui `/status` all'interno di Claude Code per vedere quali fonti di impostazioni sono attive e da dove provengono. L'output mostra ogni livello di configurazione (gestito, utente, progetto) insieme alla sua origine, come `Enterprise managed settings (remote)`, `Enterprise managed settings (plist)`, `Enterprise managed settings (HKLM)`, `Enterprise managed settings (HKCU)`, o `Enterprise managed settings (file)`. Se un file di impostazioni contiene errori, `/status` segnala il problema in modo che tu possa risolverlo.

493 

494### Punti chiave sul sistema di configurazione

495 

496* **File di memoria (`CLAUDE.md`)**: Contengono istruzioni e contesto che Claude carica all'avvio

497* **File di impostazioni (JSON)**: Configurano permessi, variabili di ambiente e comportamento dello strumento

498* **Skills**: Prompt personalizzati che possono essere invocati con `/skill-name` o caricati automaticamente da Claude

499* **MCP server**: Estendono Claude Code con strumenti e integrazioni aggiuntivi

500* **Precedenza**: Le configurazioni di livello superiore (Managed) ignorano quelle di livello inferiore (User/Project)

501* **Ereditarietà**: Le impostazioni vengono unite, con impostazioni più specifiche che aggiungono o ignorano quelle più ampie

502 

503### Prompt di sistema

504 

505Il prompt di sistema interno di Claude Code non è pubblicato. Per aggiungere istruzioni personalizzate, usa i file `CLAUDE.md` o il flag `--append-system-prompt`.

506 

507### Esclusione di file sensibili

508 

509Per prevenire che Claude Code acceda a file contenenti informazioni sensibili come chiavi API, segreti e file di ambiente, usa l'impostazione `permissions.deny` nel tuo file `.claude/settings.json`:

510 

511```json theme={null}

512{

513 "permissions": {

514 "deny": [

515 "Read(./.env)",

516 "Read(./.env.*)",

517 "Read(./secrets/**)",

518 "Read(./config/credentials.json)",

519 "Read(./build)"

520 ]

521 }

522}

523```

524 

525Questo sostituisce la configurazione deprecata `ignorePatterns`. I file che corrispondono a questi modelli vengono esclusi dalla scoperta dei file e dai risultati della ricerca, e le operazioni di lettura su questi file vengono negate.

526 

527## Configurazione subagent

528 

529Claude Code supporta subagent AI personalizzati che possono essere configurati sia a livello utente che di progetto. Questi subagent vengono archiviati come file Markdown con frontmatter YAML:

530 

531* **Subagent utente**: `~/.claude/agents/` - Disponibili in tutti i tuoi progetti

532* **Subagent di progetto**: `.claude/agents/` - Specifici del tuo progetto e possono essere condivisi con il tuo team

533 

534I file subagent definiscono assistenti AI specializzati con prompt personalizzati e permessi degli strumenti. Scopri di più sulla creazione e l'utilizzo dei subagent nella [documentazione dei subagent](/it/sub-agents).

535 

536## Configurazione plugin

537 

538Claude Code supporta un sistema di plugin che ti consente di estendere la funzionalità con skills, agenti, hooks e MCP servers. I plugin vengono distribuiti tramite marketplace e possono essere configurati sia a livello utente che di repository.

539 

540### Impostazioni plugin

541 

542Impostazioni relative ai plugin in `settings.json`:

543 

544```json theme={null}

545{

546 "enabledPlugins": {

547 "formatter@acme-tools": true,

548 "deployer@acme-tools": true,

549 "analyzer@security-plugins": false

550 },

551 "extraKnownMarketplaces": {

552 "acme-tools": {

553 "source": "github",

554 "repo": "acme-corp/claude-plugins"

555 }

556 }

557}

558```

559 

560#### `enabledPlugins`

561 

562Controlla quali plugin sono abilitati. Formato: `"plugin-name@marketplace-name": true/false`

563 

564**Ambiti**:

565 

566* **Impostazioni utente** (`~/.claude/settings.json`): Preferenze personali dei plugin

567* **Impostazioni di progetto** (`.claude/settings.json`): Plugin specifici del progetto condivisi con il team

568* **Impostazioni locali** (`.claude/settings.local.json`): Override per macchina (non committati)

569* **Impostazioni gestite** (`managed-settings.json`): Override della politica a livello organizzativo che blocca l'installazione in tutti gli ambiti e nasconde il plugin dal marketplace

570 

571**Esempio**:

572 

573```json theme={null}

574{

575 "enabledPlugins": {

576 "code-formatter@team-tools": true,

577 "deployment-tools@team-tools": true,

578 "experimental-features@personal": false

579 }

580}

581```

582 

583#### `extraKnownMarketplaces`

584 

585Definisce marketplace aggiuntivi che dovrebbero essere resi disponibili per il repository. Tipicamente utilizzato nelle impostazioni a livello di repository per garantire che i membri del team abbiano accesso alle fonti di plugin richieste.

586 

587**Quando un repository include `extraKnownMarketplaces`**:

588 

5891. I membri del team vengono invitati a installare il marketplace quando fidano della cartella

5902. I membri del team vengono quindi invitati a installare i plugin da quel marketplace

5913. Gli utenti possono saltare i marketplace o i plugin indesiderati (archiviati nelle impostazioni utente)

5924. L'installazione rispetta i confini di fiducia e richiede il consenso esplicito

593 

594**Esempio**:

595 

596```json theme={null}

597{

598 "extraKnownMarketplaces": {

599 "acme-tools": {

600 "source": {

601 "source": "github",

602 "repo": "acme-corp/claude-plugins"

603 }

604 },

605 "security-plugins": {

606 "source": {

607 "source": "git",

608 "url": "https://git.example.com/security/plugins.git"

609 }

610 }

611 }

612}

613```

614 

615**Tipi di fonte del marketplace**:

616 

617* `github`: Repository GitHub (utilizza `repo`)

618* `git`: Qualsiasi URL git (utilizza `url`)

619* `directory`: Percorso del filesystem locale (utilizza `path`, solo per lo sviluppo)

620* `hostPattern`: Modello regex per abbinare gli host del marketplace (utilizza `hostPattern`)

621* `settings`: marketplace inline dichiarato direttamente in settings.json senza un repository ospitato separato (utilizza `name` e `plugins`)

622 

623Usa `source: 'settings'` per dichiarare un piccolo set di plugin inline senza configurare un repository marketplace ospitato. I plugin elencati qui devono fare riferimento a fonti esterne come GitHub o npm. Devi comunque abilitare ogni plugin separatamente in `enabledPlugins`.

624 

625```json theme={null}

626{

627 "extraKnownMarketplaces": {

628 "team-tools": {

629 "source": {

630 "source": "settings",

631 "name": "team-tools",

632 "plugins": [

633 {

634 "name": "code-formatter",

635 "source": {

636 "source": "github",

637 "repo": "acme-corp/code-formatter"

638 }

639 }

640 ]

641 }

642 }

643 }

644}

645```

646 

647#### `strictKnownMarketplaces`

648 

649**Solo impostazioni gestite**: Controlla quali marketplace dei plugin gli utenti possono aggiungere e installare plugin da. Questa impostazione può essere configurata solo nelle [impostazioni gestite](/it/settings#settings-files) e fornisce agli amministratori un controllo rigoroso sulle fonti del marketplace.

650 

651**Posizioni dei file di impostazioni gestite**:

652 

653* **macOS**: `/Library/Application Support/ClaudeCode/managed-settings.json`

654* **Linux e WSL**: `/etc/claude-code/managed-settings.json`

655* **Windows**: `C:\Program Files\ClaudeCode\managed-settings.json`

656 

657**Caratteristiche chiave**:

658 

659* Disponibile solo nelle impostazioni gestite (`managed-settings.json`)

660* Non può essere ignorato da impostazioni utente o di progetto (precedenza più alta)

661* Applicato PRIMA delle operazioni di rete/filesystem (le fonti bloccate non vengono mai eseguite)

662* Utilizza la corrispondenza esatta per le specifiche della fonte (incluso `ref`, `path` per le fonti git), tranne `hostPattern`, che utilizza la corrispondenza regex

663 

664**Comportamento dell'elenco di autorizzazione**:

665 

666* `undefined` (predefinito): Nessuna restrizione - gli utenti possono aggiungere qualsiasi marketplace

667* Array vuoto `[]`: Blocco completo - gli utenti non possono aggiungere nuovi marketplace

668* Elenco di fonti: Gli utenti possono aggiungere solo i marketplace che corrispondono esattamente

669 

670**Tutti i tipi di fonte supportati**:

671 

672L'elenco di autorizzazione supporta più tipi di fonte del marketplace. La maggior parte delle fonti utilizza la corrispondenza esatta, mentre `hostPattern` utilizza la corrispondenza regex rispetto all'host del marketplace.

673 

6741. **Repository GitHub**:

675 

676```json theme={null}

677{ "source": "github", "repo": "acme-corp/approved-plugins" }

678{ "source": "github", "repo": "acme-corp/security-tools", "ref": "v2.0" }

679{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }

680```

681 

682Campi: `repo` (obbligatorio), `ref` (facoltativo: ramo/tag/SHA), `path` (facoltativo: sottodirectory)

683 

6842. **Repository Git**:

685 

686```json theme={null}

687{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git" }

688{ "source": "git", "url": "https://bitbucket.org/acme-corp/plugins.git", "ref": "production" }

689{ "source": "git", "url": "ssh://git@git.example.com/plugins.git", "ref": "v3.1", "path": "approved" }

690```

691 

692Campi: `url` (obbligatorio), `ref` (facoltativo: ramo/tag/SHA), `path` (facoltativo: sottodirectory)

693 

6943. **Marketplace basati su URL**:

695 

696```json theme={null}

697{ "source": "url", "url": "https://plugins.example.com/marketplace.json" }

698{ "source": "url", "url": "https://cdn.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }

699```

700 

701Campi: `url` (obbligatorio), `headers` (facoltativo: intestazioni HTTP per l'accesso autenticato)

702 

703<Note>

704 I marketplace basati su URL scaricano solo il file `marketplace.json`. Non scaricano i file dei plugin dal server. I plugin nei marketplace basati su URL devono utilizzare fonti esterne (URL GitHub, npm o git) piuttosto che percorsi relativi. Per i plugin con percorsi relativi, utilizza un marketplace basato su Git. Vedi [Troubleshooting](/it/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces) per i dettagli.

705</Note>

706 

7074. **Pacchetti NPM**:

708 

709```json theme={null}

710{ "source": "npm", "package": "@acme-corp/claude-plugins" }

711{ "source": "npm", "package": "@acme-corp/approved-marketplace" }

712```

713 

714Campi: `package` (obbligatorio, supporta pacchetti con scope)

715 

7165. **Percorsi di file**:

717 

718```json theme={null}

719{ "source": "file", "path": "/usr/local/share/claude/acme-marketplace.json" }

720{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }

721```

722 

723Campi: `path` (obbligatorio: percorso assoluto al file marketplace.json)

724 

7256. **Percorsi di directory**:

726 

727```json theme={null}

728{ "source": "directory", "path": "/usr/local/share/claude/acme-plugins" }

729{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }

730```

731 

732Campi: `path` (obbligatorio: percorso assoluto alla directory contenente `.claude-plugin/marketplace.json`)

733 

7347. **Corrispondenza del modello host**:

735 

736```json theme={null}

737{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }

738{ "source": "hostPattern", "hostPattern": "^gitlab\\.internal\\.example\\.com$" }

739```

740 

741Campi: `hostPattern` (obbligatorio: modello regex per abbinare l'host del marketplace)

742 

743Utilizza la corrispondenza del modello host quando desideri consentire tutti i marketplace da un host specifico senza enumerare ogni repository individualmente. Questo è utile per le organizzazioni con server GitHub Enterprise o GitLab interni dove gli sviluppatori creano i loro marketplace.

744 

745Estrazione dell'host per tipo di fonte:

746 

747* `github`: corrisponde sempre a `github.com`

748* `git`: estrae il nome host dall'URL (supporta sia i formati HTTPS che SSH)

749* `url`: estrae il nome host dall'URL

750* `npm`, `file`, `directory`: non supportati per la corrispondenza del modello host

751 

752**Esempi di configurazione**:

753 

754Esempio: consenti solo marketplace specifici:

755 

756```json theme={null}

757{

758 "strictKnownMarketplaces": [

759 {

760 "source": "github",

761 "repo": "acme-corp/approved-plugins"

762 },

763 {

764 "source": "github",

765 "repo": "acme-corp/security-tools",

766 "ref": "v2.0"

767 },

768 {

769 "source": "url",

770 "url": "https://plugins.example.com/marketplace.json"

771 },

772 {

773 "source": "npm",

774 "package": "@acme-corp/compliance-plugins"

775 }

776 ]

777}

778```

779 

780Esempio - Disabilita tutte le aggiunte del marketplace:

781 

782```json theme={null}

783{

784 "strictKnownMarketplaces": []

785}

786```

787 

788Esempio: consenti tutti i marketplace da un server git interno:

789 

790```json theme={null}

791{

792 "strictKnownMarketplaces": [

793 {

794 "source": "hostPattern",

795 "hostPattern": "^github\\.example\\.com$"

796 }

797 ]

798}

799```

800 

801**Requisiti di corrispondenza esatta**:

802 

803Le fonti del marketplace devono corrispondere **esattamente** affinché l'aggiunta di un utente sia consentita. Per le fonti basate su git (`github` e `git`), questo include tutti i campi facoltativi:

804 

805* Il `repo` o `url` deve corrispondere esattamente

806* Il campo `ref` deve corrispondere esattamente (o entrambi non essere definiti)

807* Il campo `path` deve corrispondere esattamente (o entrambi non essere definiti)

808 

809Esempi di fonti che **NON corrispondono**:

810 

811```json theme={null}

812// Queste sono DIVERSE fonti:

813{ "source": "github", "repo": "acme-corp/plugins" }

814{ "source": "github", "repo": "acme-corp/plugins", "ref": "main" }

815 

816// Anche queste sono DIVERSE:

817{ "source": "github", "repo": "acme-corp/plugins", "path": "marketplace" }

818{ "source": "github", "repo": "acme-corp/plugins" }

819```

820 

821**Confronto con `extraKnownMarketplaces`**:

822 

823| Aspetto | `strictKnownMarketplaces` | `extraKnownMarketplaces` |

824| ------------------------ | ---------------------------------------------------- | ----------------------------------------------- |

825| **Scopo** | Applicazione della politica organizzativa | Comodità del team |

826| **File di impostazioni** | Solo `managed-settings.json` | Qualsiasi file di impostazioni |

827| **Comportamento** | Blocca le aggiunte non nell'elenco di autorizzazione | Installa automaticamente i marketplace mancanti |

828| **Quando applicato** | Prima delle operazioni di rete/filesystem | Dopo il prompt di fiducia dell'utente |

829| **Può essere ignorato** | No (precedenza più alta) | Sì (da impostazioni con precedenza più alta) |

830| **Formato della fonte** | Oggetto fonte diretto | Marketplace denominato con fonte nidificata |

831| **Caso d'uso** | Conformità, restrizioni di sicurezza | Onboarding, standardizzazione |

832 

833**Differenza di formato**:

834 

835`strictKnownMarketplaces` utilizza oggetti fonte diretti:

836 

837```json theme={null}

838{

839 "strictKnownMarketplaces": [

840 { "source": "github", "repo": "acme-corp/plugins" }

841 ]

842}

843```

844 

845`extraKnownMarketplaces` richiede marketplace denominati:

846 

847```json theme={null}

848{

849 "extraKnownMarketplaces": {

850 "acme-tools": {

851 "source": { "source": "github", "repo": "acme-corp/plugins" }

852 }

853 }

854}

855```

856 

857**Utilizzo di entrambi insieme**:

858 

859`strictKnownMarketplaces` è un gate di politica: controlla cosa gli utenti possono aggiungere ma non registra alcun marketplace. Per limitare e pre-registrare un marketplace per tutti gli utenti, imposta entrambi in `managed-settings.json`:

860 

861```json theme={null}

862{

863 "strictKnownMarketplaces": [

864 { "source": "github", "repo": "acme-corp/plugins" }

865 ],

866 "extraKnownMarketplaces": {

867 "acme-tools": {

868 "source": { "source": "github", "repo": "acme-corp/plugins" }

869 }

870 }

871}

872```

873 

874Con solo `strictKnownMarketplaces` impostato, gli utenti possono comunque aggiungere il marketplace consentito manualmente tramite `/plugin marketplace add`, ma non è disponibile automaticamente.

875 

876**Note importanti**:

877 

878* Le restrizioni vengono controllate PRIMA di qualsiasi richiesta di rete o operazione del filesystem

879* Quando bloccato, gli utenti vedono messaggi di errore chiari che indicano che la fonte è bloccata dalla politica gestita

880* La restrizione si applica all'aggiunta del marketplace e all'installazione, aggiornamento, aggiornamento e auto-aggiornamento dei plugin. Un marketplace aggiunto prima che la politica fosse impostata non può essere utilizzato per installare o aggiornare plugin una volta che la sua fonte non corrisponde più all'elenco di autorizzazione

881* Le impostazioni gestite hanno la precedenza più alta e non possono essere ignorate

882 

883Vedi [Restrizioni del marketplace gestito](/it/plugin-marketplaces#managed-marketplace-restrictions) per la documentazione rivolta agli utenti.

884 

885### Gestione dei plugin

886 

887Usa il comando `/plugin` per gestire i plugin in modo interattivo:

888 

889* Sfoglia i plugin disponibili dai marketplace

890* Installa/disinstalla plugin

891* Abilita/disabilita plugin

892* Visualizza i dettagli del plugin (skills, agenti, hooks forniti)

893* Aggiungi/rimuovi marketplace

894 

895Scopri di più sul sistema di plugin nella [documentazione dei plugin](/it/plugins).

896 

897## Variabili di ambiente

898 

899Le variabili di ambiente ti consentono di controllare il comportamento di Claude Code senza modificare i file di impostazioni. Qualsiasi variabile può anche essere configurata in [`settings.json`](#available-settings) sotto la chiave `env` per applicarla a ogni sessione o distribuirla al tuo team.

900 

901Vedi il [riferimento delle variabili di ambiente](/it/env-vars) per l'elenco completo.

902 

903## Strumenti disponibili per Claude

904 

905Claude Code ha accesso a un set di strumenti per leggere, modificare, cercare, eseguire comandi e orchestrare subagent. I nomi degli strumenti sono le stringhe esatte che utilizzi nelle regole di permesso e nei matcher degli hook.

906 

907Vedi il [riferimento degli strumenti](/it/tools-reference) per l'elenco completo e i dettagli del comportamento dello strumento Bash.

908 

909## Vedi anche

910 

911* [Permissions](/it/permissions): sistema di permessi, sintassi delle regole, modelli specifici dello strumento e politiche gestite

912* [Authentication](/it/authentication): configura l'accesso degli utenti a Claude Code

913* [Debug your configuration](/it/debug-your-config): diagnostica il motivo per cui un'impostazione, un hook o un server MCP non sta avendo effetto

914* [Troubleshoot installation and login](/it/troubleshoot-install): installazione, autenticazione e problemi di piattaforma

setup.md +606 −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# Configurazione avanzata

6 

7> Requisiti di sistema, installazione specifica per piattaforma, gestione delle versioni e disinstallazione per Claude Code.

8 

9Questa pagina copre i requisiti di sistema, i dettagli di installazione specifici per piattaforma, gli aggiornamenti e la disinstallazione. Per una procedura guidata della vostra prima sessione, consultate la [guida rapida](/it/quickstart). Se non avete mai utilizzato un terminale prima, consultate la [guida del terminale](/it/terminal-guide).

10 

11## Requisiti di sistema

12 

13Claude Code funziona sulle seguenti piattaforme e configurazioni:

14 

15* **Sistema operativo**:

16 * macOS 13.0+

17 * Windows 10 1809+ o Windows Server 2019+

18 * Ubuntu 20.04+

19 * Debian 10+

20 * Alpine Linux 3.19+

21* **Hardware**: 4 GB+ di RAM, processore x64 o ARM64

22* **Rete**: connessione a Internet richiesta. Consultate la [configurazione di rete](/it/network-config#network-access-requirements).

23* **Shell**: Bash, Zsh, PowerShell o CMD. Su Windows nativo, è consigliato [Git for Windows](https://git-scm.com/downloads/win); Claude Code ritorna a PowerShell quando Git Bash è assente. Le configurazioni WSL non richiedono Git for Windows.

24* **Posizione**: [paesi supportati da Anthropic](https://www.anthropic.com/supported-countries)

25 

26### Dipendenze aggiuntive

27 

28* **ripgrep**: solitamente incluso con Claude Code. Se la ricerca non funziona, consultate la [risoluzione dei problemi di ricerca](/it/troubleshooting#search-and-discovery-issues).

29 

30## Installare Claude Code

31 

32<Tip>

33 Preferite un'interfaccia grafica? L'[app Desktop](/it/desktop-quickstart) vi consente di utilizzare Claude Code senza il terminale. Scaricatela per [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) o [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs).

34 

35 Siete nuovi al terminale? Consultate la [guida del terminale](/it/terminal-guide) per istruzioni passo dopo passo.

36</Tip>

37 

38To install Claude Code, use one of the following methods:

39 

40<Tabs>

41 <Tab title="Native Install (Recommended)">

42 **macOS, Linux, WSL:**

43 

44 ```bash theme={null}

45 curl -fsSL https://claude.ai/install.sh | bash

46 ```

47 

48 **Windows PowerShell:**

49 

50 ```powershell theme={null}

51 irm https://claude.ai/install.ps1 | iex

52 ```

53 

54 **Windows CMD:**

55 

56 ```batch theme={null}

57 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

58 ```

59 

60 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

61 

62 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

63 

64 <Info>

65 Native installations automatically update in the background to keep you on the latest version.

66 </Info>

67 </Tab>

68 

69 <Tab title="Homebrew">

70 ```bash theme={null}

71 brew install --cask claude-code

72 ```

73 

74 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

75 

76 <Info>

77 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

78 </Info>

79 </Tab>

80 

81 <Tab title="WinGet">

82 ```powershell theme={null}

83 winget install Anthropic.ClaudeCode

84 ```

85 

86 <Info>

87 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

88 </Info>

89 </Tab>

90</Tabs>

91 

92You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

93 

94Dopo il completamento dell'installazione, aprite un terminale nel progetto su cui desiderate lavorare e avviate Claude Code:

95 

96```bash theme={null}

97claude

98```

99 

100Se riscontrate problemi durante l'installazione, consultate [Risoluzione dei problemi di installazione e accesso](/it/troubleshoot-install).

101 

102### Configurazione su Windows

103 

104Potete eseguire Claude Code nativamente su Windows o all'interno di WSL. Scegliete in base a dove si trovano i vostri progetti e quali funzionalità vi servono:

105 

106| Opzione | Richiede | [Sandboxing](/it/sandboxing) | Quando utilizzare |

107| -------------- | -------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------------------------------------- |

108| Windows nativo | [Git for Windows](https://git-scm.com/downloads/win) consigliato; PowerShell utilizzato se assente | Non supportato | Progetti e strumenti nativi di Windows |

109| WSL 2 | WSL 2 abilitato | Supportato | Toolchain Linux o esecuzione di comandi in sandbox |

110| WSL 1 | WSL 1 abilitato | Non supportato | Se WSL 2 non è disponibile |

111 

112**Opzione 1: Windows nativo con Git Bash**

113 

114Installate [Git for Windows](https://git-scm.com/downloads/win), quindi eseguite il comando di installazione da PowerShell o CMD. Non è necessario eseguire come Amministratore.

115 

116Se eseguite l'installazione da PowerShell o CMD influisce solo su quale comando di installazione eseguite. Il vostro prompt mostra `PS C:\Users\YourName>` in PowerShell e `C:\Users\YourName>` senza il `PS` in CMD. Se siete nuovi al terminale, la [guida del terminale](/it/terminal-guide#windows) vi guida attraverso ogni passaggio.

117 

118Dopo l'installazione, avviate `claude` da PowerShell, CMD o Git Bash. Quando Git Bash è installato, Claude Code lo utilizza internamente per eseguire i comandi indipendentemente da dove lo avviate. Se Claude Code non riesce a trovare l'installazione di Git Bash, impostate il percorso nel vostro [file settings.json](/it/settings):

119 

120```json theme={null}

121{

122 "env": {

123 "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"

124 }

125}

126```

127 

128Claude Code può anche eseguire PowerShell nativamente su Windows. Quando Git Bash è installato, lo strumento PowerShell è in fase di rollout progressivo come opzione aggiuntiva: impostate `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` per attivare o `0` per disattivare. Consultate [PowerShell tool](/it/tools-reference#powershell-tool) per la configurazione e le limitazioni.

129 

130**Opzione 2: WSL**

131 

132Aprite la vostra distribuzione WSL ed eseguite l'installer Linux dalle [istruzioni di installazione](#install-claude-code) sopra. Installate e avviate `claude` all'interno del terminale WSL, non da PowerShell o CMD.

133 

134### Alpine Linux e distribuzioni basate su musl

135 

136L'installer nativo su Alpine e altre distribuzioni basate su musl/uClibc richiede `libgcc`, `libstdc++` e `ripgrep`. Installate questi utilizzando il gestore di pacchetti della vostra distribuzione, quindi impostate `USE_BUILTIN_RIPGREP=0`.

137 

138Questo esempio installa i pacchetti richiesti su Alpine:

139 

140```bash theme={null}

141apk add libgcc libstdc++ ripgrep

142```

143 

144Quindi impostate `USE_BUILTIN_RIPGREP` a `0` nel vostro file [`settings.json`](/it/settings#available-settings):

145 

146```json theme={null}

147{

148 "env": {

149 "USE_BUILTIN_RIPGREP": "0"

150 }

151}

152```

153 

154## Verificare l'installazione

155 

156Dopo l'installazione, confermate che Claude Code funziona:

157 

158```bash theme={null}

159claude --version

160```

161 

162Se questo fallisce con `command not found` o un altro errore, consultate [Risoluzione dei problemi di installazione e accesso](/it/troubleshoot-install).

163 

164Per un controllo più dettagliato dell'installazione e della configurazione, eseguite [`claude doctor`](/it/troubleshooting#get-more-help):

165 

166```bash theme={null}

167claude doctor

168```

169 

170## Autenticazione

171 

172Claude Code richiede un account Pro, Max, Team, Enterprise o Console. Il piano gratuito di Claude.ai non include l'accesso a Claude Code. Potete anche utilizzare Claude Code con un provider API di terze parti come [Amazon Bedrock](/it/amazon-bedrock), [Google Vertex AI](/it/google-vertex-ai) o [Microsoft Foundry](/it/microsoft-foundry).

173 

174Dopo l'installazione, accedete eseguendo `claude` e seguendo i prompt del browser. Consultate [Autenticazione](/it/authentication) per tutti i tipi di account e le opzioni di configurazione del team.

175 

176## Aggiornare Claude Code

177 

178Le installazioni native si aggiornano automaticamente in background. Potete [configurare il canale di rilascio](#configure-release-channel) per controllare se ricevere gli aggiornamenti immediatamente o secondo una pianificazione stabile ritardata, oppure [disabilitare gli aggiornamenti automatici](#disable-auto-updates) completamente. Le installazioni Homebrew, WinGet e [gestori di pacchetti Linux](#install-with-linux-package-managers) richiedono aggiornamenti manuali.

179 

180### Aggiornamenti automatici

181 

182Claude Code verifica la disponibilità di aggiornamenti all'avvio e periodicamente durante l'esecuzione. Gli aggiornamenti si scaricano e si installano in background, quindi hanno effetto la prossima volta che avviate Claude Code.

183 

184<Note>

185 Le installazioni Homebrew, WinGet, apt, dnf e apk non si aggiornano automaticamente. Per Homebrew, eseguite `brew upgrade claude-code` o `brew upgrade claude-code@latest`, a seconda di quale cask avete installato. Per WinGet, eseguite `winget upgrade Anthropic.ClaudeCode`. Per i gestori di pacchetti Linux, consultate i comandi di aggiornamento in [Installare con gestori di pacchetti Linux](#install-with-linux-package-managers).

186 

187 **Problema noto:** Claude Code potrebbe notificarvi gli aggiornamenti prima che la nuova versione sia disponibile in questi gestori di pacchetti. Se un aggiornamento non riesce, attendete e riprovate più tardi.

188 

189 Homebrew mantiene le versioni precedenti su disco dopo gli aggiornamenti. Eseguite `brew cleanup` periodicamente per recuperare spazio su disco.

190</Note>

191 

192### Configurare il canale di rilascio

193 

194Controllate quale canale di rilascio Claude Code segue per gli aggiornamenti automatici e `claude update` con l'impostazione `autoUpdatesChannel`:

195 

196* `"latest"`, l'impostazione predefinita: ricevete le nuove funzionalità non appena vengono rilasciate

197* `"stable"`: utilizzate una versione che è tipicamente circa una settimana più vecchia, saltando i rilasci con regressioni importanti

198 

199Configurate questo tramite `/config` → **Auto-update channel**, oppure aggiungetelo al vostro [file settings.json](/it/settings):

200 

201```json theme={null}

202{

203 "autoUpdatesChannel": "stable"

204}

205```

206 

207Per le distribuzioni aziendali, potete applicare un canale di rilascio coerente in tutta l'organizzazione utilizzando [impostazioni gestite](/it/permissions#managed-settings).

208 

209Le installazioni Homebrew scelgono un canale in base al nome del cask invece di questa impostazione: `claude-code` traccia stable e `claude-code@latest` traccia latest.

210 

211### Fissare una versione minima

212 

213L'impostazione `minimumVersion` stabilisce un limite inferiore. Gli aggiornamenti automatici in background e `claude update` rifiutano di installare qualsiasi versione al di sotto di questo valore, quindi il passaggio al canale `"stable"` non vi fa regredire se siete già su una build `"latest"` più recente.

214 

215Il passaggio da `"latest"` a `"stable"` tramite `/config` vi chiede di rimanere sulla versione corrente o di consentire il downgrade. Se scegliete di rimanere, viene impostato `minimumVersion` a quella versione. Il passaggio di nuovo a `"latest"` lo cancella.

216 

217Aggiungetelo al vostro [file settings.json](/it/settings) per fissare un limite inferiore esplicitamente:

218 

219```json theme={null}

220{

221 "autoUpdatesChannel": "stable",

222 "minimumVersion": "2.1.100"

223}

224```

225 

226Nelle [impostazioni gestite](/it/permissions#managed-settings), questo applica un minimo a livello di organizzazione che le impostazioni utente e di progetto non possono ignorare.

227 

228### Disabilitare gli aggiornamenti automatici

229 

230Impostate `DISABLE_AUTOUPDATER` a `"1"` nella chiave `env` del vostro file [`settings.json`](/it/settings#available-settings):

231 

232```json theme={null}

233{

234 "env": {

235 "DISABLE_AUTOUPDATER": "1"

236 }

237}

238```

239 

240`DISABLE_AUTOUPDATER` arresta solo il controllo in background; `claude update` e `claude install` continuano a funzionare. Per bloccare tutti i percorsi di aggiornamento, inclusi gli aggiornamenti manuali, impostate invece [`DISABLE_UPDATES`](/it/env-vars). Utilizzate questo quando distribuite Claude Code attraverso i vostri canali e avete bisogno che gli utenti rimangano sulla versione che fornite.

241 

242### Aggiornare manualmente

243 

244Per applicare un aggiornamento immediatamente senza attendere il prossimo controllo in background, eseguite:

245 

246```bash theme={null}

247claude update

248```

249 

250## Opzioni di installazione avanzate

251 

252Queste opzioni sono per il pinning delle versioni, i gestori di pacchetti Linux, npm e la verifica dell'integrità dei binari.

253 

254### Installare una versione specifica

255 

256L'installer nativo accetta un numero di versione specifico o un canale di rilascio (`latest` o `stable`). Il canale che scegliete al momento dell'installazione diventa il vostro predefinito per gli aggiornamenti automatici. Consultate [configurare il canale di rilascio](#configure-release-channel) per ulteriori informazioni.

257 

258Per installare la versione più recente (predefinita):

259 

260<Tabs>

261 <Tab title="macOS, Linux, WSL">

262 ```bash theme={null}

263 curl -fsSL https://claude.ai/install.sh | bash

264 ```

265 </Tab>

266 

267 <Tab title="Windows PowerShell">

268 ```powershell theme={null}

269 irm https://claude.ai/install.ps1 | iex

270 ```

271 </Tab>

272 

273 <Tab title="Windows CMD">

274 ```batch theme={null}

275 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

276 ```

277 </Tab>

278</Tabs>

279 

280Per installare la versione stabile:

281 

282<Tabs>

283 <Tab title="macOS, Linux, WSL">

284 ```bash theme={null}

285 curl -fsSL https://claude.ai/install.sh | bash -s stable

286 ```

287 </Tab>

288 

289 <Tab title="Windows PowerShell">

290 ```powershell theme={null}

291 & ([scriptblock]::Create((irm https://claude.ai/install.ps1))) stable

292 ```

293 </Tab>

294 

295 <Tab title="Windows CMD">

296 ```batch theme={null}

297 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd stable && del install.cmd

298 ```

299 </Tab>

300</Tabs>

301 

302Per installare un numero di versione specifico:

303 

304<Tabs>

305 <Tab title="macOS, Linux, WSL">

306 ```bash theme={null}

307 curl -fsSL https://claude.ai/install.sh | bash -s 2.1.89

308 ```

309 </Tab>

310 

311 <Tab title="Windows PowerShell">

312 ```powershell theme={null}

313 & ([scriptblock]::Create((irm https://claude.ai/install.ps1))) 2.1.89

314 ```

315 </Tab>

316 

317 <Tab title="Windows CMD">

318 ```batch theme={null}

319 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd 2.1.89 && del install.cmd

320 ```

321 </Tab>

322</Tabs>

323 

324### Installare con i gestori di pacchetti Linux

325 

326Claude Code pubblica repository apt, dnf e apk firmati. Sostituite `stable` con `latest` per il canale rolling. Le installazioni tramite gestore di pacchetti non si aggiornano automaticamente tramite Claude Code; gli aggiornamenti arrivano attraverso il vostro normale flusso di lavoro di aggiornamento del sistema.

327 

328Tutti i repository sono firmati con la [chiave di firma del rilascio di Claude Code](#binary-integrity-and-code-signing). Prima di fidarvi della chiave, verificatela come descritto in ogni scheda.

329 

330<Tabs>

331 <Tab title="apt">

332 Per Debian e Ubuntu. Per utilizzare il canale rolling, cambiate entrambi gli occorrimenti di `stable` nella riga `deb`: il percorso dell'URL e il nome della suite.

333 

334 ```bash theme={null}

335 sudo install -d -m 0755 /etc/apt/keyrings

336 sudo curl -fsSL https://downloads.claude.ai/keys/claude-code.asc \

337 -o /etc/apt/keyrings/claude-code.asc

338 echo "deb [signed-by=/etc/apt/keyrings/claude-code.asc] https://downloads.claude.ai/claude-code/apt/stable stable main" \

339 | sudo tee /etc/apt/sources.list.d/claude-code.list

340 sudo apt update

341 sudo apt install claude-code

342 ```

343 

344 Verificate l'impronta digitale della chiave GPG prima di fidarvi: `gpg --show-keys /etc/apt/keyrings/claude-code.asc` dovrebbe riportare `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`.

345 

346 Per aggiornare in seguito, eseguite `sudo apt update && sudo apt upgrade claude-code`.

347 </Tab>

348 

349 <Tab title="dnf">

350 Per Fedora e RHEL:

351 

352 ```bash theme={null}

353 sudo tee /etc/yum.repos.d/claude-code.repo <<'EOF'

354 [claude-code]

355 name=Claude Code

356 baseurl=https://downloads.claude.ai/claude-code/rpm/stable

357 enabled=1

358 gpgcheck=1

359 gpgkey=https://downloads.claude.ai/keys/claude-code.asc

360 EOF

361 sudo dnf install claude-code

362 ```

363 

364 dnf scarica la chiave al primo install e vi chiede di confermare l'impronta digitale. Verificate che corrisponda a `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE` prima di accettare.

365 

366 Per aggiornare in seguito, eseguite `sudo dnf upgrade claude-code`.

367 </Tab>

368 

369 <Tab title="apk">

370 Per Alpine Linux:

371 

372 ```sh theme={null}

373 wget -O /etc/apk/keys/claude-code.rsa.pub \

374 https://downloads.claude.ai/keys/claude-code.rsa.pub

375 echo "https://downloads.claude.ai/claude-code/apk/stable" >> /etc/apk/repositories

376 apk add claude-code

377 ```

378 

379 Verificate la chiave scaricata con `sha256sum /etc/apk/keys/claude-code.rsa.pub`, che dovrebbe riportare `395759c1f7449ef4cdef305a42e820f3c766d6090d142634ebdb049f113168b6`.

380 

381 Per aggiornare in seguito, eseguite `apk update && apk upgrade claude-code`.

382 </Tab>

383</Tabs>

384 

385### Installare con npm

386 

387Potete anche installare Claude Code come pacchetto npm globale. Il pacchetto richiede [Node.js 18 o successivo](https://nodejs.org/en/download).

388 

389```bash theme={null}

390npm install -g @anthropic-ai/claude-code

391```

392 

393Il pacchetto npm installa lo stesso binario nativo dell'installer standalone. npm estrae il binario attraverso una dipendenza opzionale per piattaforma come `@anthropic-ai/claude-code-darwin-arm64`, e un passaggio postinstall lo collega in posizione. Il binario `claude` installato non invoca Node stesso.

394 

395Le piattaforme di installazione npm supportate sono `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `linux-x64-musl`, `linux-arm64-musl`, `win32-x64` e `win32-arm64`. Il vostro gestore di pacchetti deve consentire dipendenze opzionali. Consultate la [risoluzione dei problemi](/it/troubleshoot-install#native-binary-not-found-after-npm-install) se il binario manca dopo l'installazione.

396 

397<Warning>

398 NON utilizzate `sudo npm install -g` poiché ciò può portare a problemi di permessi e rischi di sicurezza. Se riscontrate errori di permessi, consultate la [risoluzione dei problemi di permessi](/it/troubleshoot-install#permission-errors-during-installation).

399</Warning>

400 

401### Integrità dei binari e firma del codice

402 

403Ogni rilascio pubblica un `manifest.json` contenente checksum SHA256 per ogni binario di piattaforma. Il manifest è firmato con una chiave GPG di Anthropic, quindi la verifica della firma sul manifest verifica transitivamente ogni binario che elenca.

404 

405#### Verificare la firma del manifest

406 

407I passaggi 1-3 richiedono una shell POSIX con `gpg` e `curl`. Su Windows, eseguiteli in Git Bash o WSL. Il passaggio 4 include un'opzione PowerShell.

408 

409<Steps>

410 <Step title="Scaricare e importare la chiave pubblica">

411 La chiave di firma del rilascio è pubblicata a un URL fisso.

412 

413 ```bash theme={null}

414 curl -fsSL https://downloads.claude.ai/keys/claude-code.asc | gpg --import

415 ```

416 

417 Visualizzate l'impronta digitale della chiave importata.

418 

419 ```bash theme={null}

420 gpg --fingerprint security@anthropic.com

421 ```

422 

423 Confermate che l'output includa questa impronta digitale:

424 

425 ```text theme={null}

426 31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE

427 ```

428 </Step>

429 

430 <Step title="Scaricare il manifest e la firma">

431 Impostate `VERSION` al rilascio che desiderate verificare.

432 

433 ```bash theme={null}

434 REPO=https://downloads.claude.ai/claude-code-releases

435 VERSION=2.1.89

436 curl -fsSLO "$REPO/$VERSION/manifest.json"

437 curl -fsSLO "$REPO/$VERSION/manifest.json.sig"

438 ```

439 </Step>

440 

441 <Step title="Verificare la firma">

442 Verificate la firma staccata rispetto al manifest.

443 

444 ```bash theme={null}

445 gpg --verify manifest.json.sig manifest.json

446 ```

447 

448 Un risultato valido riporta `Good signature from "Anthropic Claude Code Release Signing <security@anthropic.com>"`.

449 

450 `gpg` stampa anche `WARNING: This key is not certified with a trusted signature!` per qualsiasi chiave appena importata. Questo è previsto. La riga `Good signature` conferma che il controllo crittografico è passato. Il confronto dell'impronta digitale nel Passaggio 1 conferma che la chiave stessa è autentica.

451 </Step>

452 

453 <Step title="Controllare il binario rispetto al manifest">

454 Confrontate il checksum SHA256 del vostro binario scaricato con il valore elencato sotto `platforms.<platform>.checksum` in `manifest.json`.

455 

456 <Tabs>

457 <Tab title="Linux">

458 ```bash theme={null}

459 sha256sum claude

460 ```

461 </Tab>

462 

463 <Tab title="macOS">

464 ```bash theme={null}

465 shasum -a 256 claude

466 ```

467 </Tab>

468 

469 <Tab title="Windows PowerShell">

470 ```powershell theme={null}

471 (Get-FileHash claude.exe -Algorithm SHA256).Hash.ToLower()

472 ```

473 </Tab>

474 </Tabs>

475 </Step>

476</Steps>

477 

478<Note>

479 Le firme del manifest sono disponibili per i rilasci da `2.1.89` in poi. I rilasci precedenti pubblicano checksum in `manifest.json` senza una firma staccata.

480</Note>

481 

482#### Firme del codice della piattaforma

483 

484Oltre al manifest firmato, i singoli binari portano firme del codice native della piattaforma dove supportate.

485 

486* **macOS**: firmato da "Anthropic PBC" e notarizzato da Apple. Verificate con `codesign --verify --verbose ./claude`.

487* **Windows**: firmato da "Anthropic, PBC". Verificate con `Get-AuthenticodeSignature .\claude.exe`.

488* **Linux**: i binari non sono individualmente firmati dal codice. Se scaricate direttamente dal bucket `claude-code-releases` o utilizzate l'installer nativo, verificate l'integrità con la firma del manifest sopra. Se installate con [apt, dnf o apk](#install-with-linux-package-managers), il vostro gestore di pacchetti verifica automaticamente le firme utilizzando la chiave di firma del repository.

489 

490## Disinstallare Claude Code

491 

492Per rimuovere Claude Code, seguite le istruzioni per il vostro metodo di installazione.

493 

494### Installazione nativa

495 

496Rimuovete il binario di Claude Code e i file di versione:

497 

498<Tabs>

499 <Tab title="macOS, Linux, WSL">

500 ```bash theme={null}

501 rm -f ~/.local/bin/claude

502 rm -rf ~/.local/share/claude

503 ```

504 </Tab>

505 

506 <Tab title="Windows PowerShell">

507 ```powershell theme={null}

508 Remove-Item -Path "$env:USERPROFILE\.local\bin\claude.exe" -Force

509 Remove-Item -Path "$env:USERPROFILE\.local\share\claude" -Recurse -Force

510 ```

511 </Tab>

512</Tabs>

513 

514### Installazione Homebrew

515 

516Rimuovete il cask Homebrew che avete installato. Se avete installato il cask stabile:

517 

518```bash theme={null}

519brew uninstall --cask claude-code

520```

521 

522Se avete installato il cask latest:

523 

524```bash theme={null}

525brew uninstall --cask claude-code@latest

526```

527 

528### Installazione WinGet

529 

530Rimuovete il pacchetto WinGet:

531 

532```powershell theme={null}

533winget uninstall Anthropic.ClaudeCode

534```

535 

536### apt / dnf / apk

537 

538Rimuovete il pacchetto e la configurazione del repository:

539 

540<Tabs>

541 <Tab title="apt">

542 ```bash theme={null}

543 sudo apt remove claude-code

544 sudo rm /etc/apt/sources.list.d/claude-code.list /etc/apt/keyrings/claude-code.asc

545 ```

546 </Tab>

547 

548 <Tab title="dnf">

549 ```bash theme={null}

550 sudo dnf remove claude-code

551 sudo rm /etc/yum.repos.d/claude-code.repo

552 ```

553 </Tab>

554 

555 <Tab title="apk">

556 ```sh theme={null}

557 apk del claude-code

558 sed -i '\|downloads.claude.ai/claude-code/apk|d' /etc/apk/repositories

559 rm /etc/apk/keys/claude-code.rsa.pub

560 ```

561 </Tab>

562</Tabs>

563 

564### npm

565 

566Rimuovete il pacchetto npm globale:

567 

568```bash theme={null}

569npm uninstall -g @anthropic-ai/claude-code

570```

571 

572### Rimuovere i file di configurazione

573 

574<Warning>

575 La rimozione dei file di configurazione eliminerà tutte le vostre impostazioni, gli strumenti consentiti, le configurazioni del server MCP e la cronologia delle sessioni.

576</Warning>

577 

578L'estensione VS Code, il plugin JetBrains e l'app Desktop scrivono anche in `~/.claude/`. Se uno di essi è ancora installato, la directory viene ricreata la prossima volta che viene eseguito. Per rimuovere Claude Code completamente, disinstallate l'[estensione VS Code](/it/vs-code#uninstall-the-extension), il plugin JetBrains e l'app Desktop prima di eliminare questi file.

579 

580Per rimuovere le impostazioni di Claude Code e i dati memorizzati nella cache:

581 

582<Tabs>

583 <Tab title="macOS, Linux, WSL">

584 ```bash theme={null}

585 # Rimuovere le impostazioni utente e lo stato

586 rm -rf ~/.claude

587 rm ~/.claude.json

588 

589 # Rimuovere le impostazioni specifiche del progetto (eseguire dalla directory del progetto)

590 rm -rf .claude

591 rm -f .mcp.json

592 ```

593 </Tab>

594 

595 <Tab title="Windows PowerShell">

596 ```powershell theme={null}

597 # Rimuovere le impostazioni utente e lo stato

598 Remove-Item -Path "$env:USERPROFILE\.claude" -Recurse -Force

599 Remove-Item -Path "$env:USERPROFILE\.claude.json" -Force

600 

601 # Rimuovere le impostazioni specifiche del progetto (eseguire dalla directory del progetto)

602 Remove-Item -Path ".claude" -Recurse -Force

603 Remove-Item -Path ".mcp.json" -Force

604 ```

605 </Tab>

606</Tabs>

skills.md +728 −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# Estendi Claude con skills

6 

7> Crea, gestisci e condividi skills per estendere le capacità di Claude in Claude Code. Include comandi personalizzati e skills raggruppate.

8 

9Le skills estendono ciò che Claude può fare. Crea un file `SKILL.md` con istruzioni, e Claude lo aggiunge al suo toolkit. Claude utilizza le skills quando rilevante, oppure puoi invocare una direttamente con `/skill-name`.

10 

11Crea una skill quando continui a incollare lo stesso playbook, checklist, o procedura multi-step nella chat, oppure quando una sezione di CLAUDE.md è cresciuta in una procedura piuttosto che in un fatto. A differenza del contenuto di CLAUDE.md, il corpo di una skill si carica solo quando viene utilizzato, quindi il materiale di riferimento lungo costa quasi nulla finché non ne hai bisogno.

12 

13<Note>

14 Per i comandi integrati come `/help` e `/compact`, e le skills raggruppate come `/debug` e `/simplify`, vedi il [riferimento dei comandi](/it/commands).

15 

16 **I comandi personalizzati sono stati uniti alle skills.** Un file in `.claude/commands/deploy.md` e una skill in `.claude/skills/deploy/SKILL.md` creano entrambi `/deploy` e funzionano allo stesso modo. I tuoi file `.claude/commands/` esistenti continuano a funzionare. Le skills aggiungono funzionalità opzionali: una directory per i file di supporto, frontmatter per [controllare se sei tu o Claude a invocarle](#control-who-invokes-a-skill), e la capacità per Claude di caricarle automaticamente quando rilevante.

17</Note>

18 

19Le skills di Claude Code seguono lo standard aperto [Agent Skills](https://agentskills.io), che funziona su più strumenti AI. Claude Code estende lo standard con funzionalità aggiuntive come il [controllo dell'invocazione](#control-who-invokes-a-skill), l'[esecuzione in subagent](#run-skills-in-a-subagent), e l'[iniezione di contesto dinamico](#inject-dynamic-context).

20 

21## Skills raggruppate

22 

23Claude Code include un set di skills raggruppate che sono disponibili in ogni sessione, incluse `/simplify`, `/batch`, `/debug`, `/loop`, e `/claude-api`. A differenza della maggior parte dei comandi integrati, che eseguono logica fissa direttamente, le skills raggruppate sono basate su prompt: danno a Claude un playbook dettagliato e gli permettono di orchestrare il lavoro utilizzando i suoi strumenti. Le invochi allo stesso modo di qualsiasi altra skill, digitando `/` seguito dal nome della skill.

24 

25Le skills raggruppate sono elencate insieme ai comandi integrati nel [riferimento dei comandi](/it/commands), contrassegnate come **Skill** nella colonna Scopo.

26 

27## Iniziare

28 

29### Crea la tua prima skill

30 

31Questo esempio crea una skill che insegna a Claude di spiegare il codice usando diagrammi visivi e analogie. Poiché utilizza frontmatter predefinito, Claude può caricarla automaticamente quando chiedi come funziona qualcosa, oppure puoi invocarla direttamente con `/explain-code`.

32 

33<Steps>

34 <Step title="Crea la directory della skill">

35 Crea una directory per la skill nella tua cartella di skills personali. Le skills personali sono disponibili su tutti i tuoi progetti.

36 

37 ```bash theme={null}

38 mkdir -p ~/.claude/skills/explain-code

39 ```

40 </Step>

41 

42 <Step title="Scrivi SKILL.md">

43 Ogni skill ha bisogno di un file `SKILL.md` con due parti: frontmatter YAML (tra i marcatori `---`) che dice a Claude quando usare la skill, e contenuto markdown con istruzioni che Claude segue quando la skill viene invocata. Il nome della directory diventa il `/slash-command`, e la `description` aiuta Claude a decidere quando caricarla automaticamente.

44 

45 Crea `~/.claude/skills/explain-code/SKILL.md`:

46 

47 ```yaml theme={null}

48 ---

49 description: Explains code with visual diagrams and analogies. Use when explaining how code works, teaching about a codebase, or when the user asks "how does this work?"

50 ---

51 

52 When explaining code, always include:

53 

54 1. **Start with an analogy**: Compare the code to something from everyday life

55 2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships

56 3. **Walk through the code**: Explain step-by-step what happens

57 4. **Highlight a gotcha**: What's a common mistake or misconception?

58 

59 Keep explanations conversational. For complex concepts, use multiple analogies.

60 ```

61 </Step>

62 

63 <Step title="Testa la skill">

64 Puoi testarla in due modi:

65 

66 **Lascia che Claude la invochi automaticamente** chiedendo qualcosa che corrisponda alla descrizione:

67 

68 ```text theme={null}

69 How does this code work?

70 ```

71 

72 **O invocarla direttamente** con il nome della skill:

73 

74 ```text theme={null}

75 /explain-code src/auth/login.ts

76 ```

77 

78 In entrambi i casi, Claude dovrebbe includere un'analogia e un diagramma ASCII nella sua spiegazione.

79 </Step>

80</Steps>

81 

82### Dove vivono le skills

83 

84Dove archivi una skill determina chi può usarla:

85 

86| Posizione | Percorso | Si applica a |

87| :--------- | :------------------------------------------------------- | :---------------------------------------- |

88| Enterprise | Vedi [impostazioni gestite](/it/settings#settings-files) | Tutti gli utenti della tua organizzazione |

89| Personale | `~/.claude/skills/<skill-name>/SKILL.md` | Tutti i tuoi progetti |

90| Progetto | `.claude/skills/<skill-name>/SKILL.md` | Solo questo progetto |

91| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Dove il plugin è abilitato |

92 

93Quando le skills condividono lo stesso nome tra i livelli, enterprise ha la priorità su personale, e personale ha la priorità su progetto. Le skills dei plugin utilizzano uno spazio dei nomi `plugin-name:skill-name`, quindi non possono entrare in conflitto con altri livelli. Se hai file in `.claude/commands/`, funzionano allo stesso modo, ma se una skill e un comando condividono lo stesso nome, la skill ha la precedenza.

94 

95#### Rilevamento dei cambiamenti in tempo reale

96 

97Claude Code osserva le directory delle skills per i cambiamenti dei file. Aggiungere, modificare o rimuovere una skill in `~/.claude/skills/`, nel progetto `.claude/skills/`, o in una `.claude/skills/` all'interno di una directory `--add-dir` ha effetto nella sessione attuale senza riavviare. Creare una directory di skills di primo livello che non esisteva quando la sessione è iniziata richiede il riavvio di Claude Code in modo che la nuova directory possa essere osservata.

98 

99#### Scoperta automatica da directory annidate

100 

101Quando lavori con file in sottodirectory, Claude Code scopre automaticamente le skills da directory `.claude/skills/` annidate. Ad esempio, se stai modificando un file in `packages/frontend/`, Claude Code cerca anche le skills in `packages/frontend/.claude/skills/`. Questo supporta configurazioni monorepo dove i pacchetti hanno le loro proprie skills.

102 

103Ogni skill è una directory con `SKILL.md` come punto di ingresso:

104 

105```text theme={null}

106my-skill/

107├── SKILL.md # Istruzioni principali (obbligatorio)

108├── template.md # Template per Claude da compilare

109├── examples/

110│ └── sample.md # Output di esempio che mostra il formato previsto

111└── scripts/

112 └── validate.sh # Script che Claude può eseguire

113```

114 

115`SKILL.md` contiene le istruzioni principali ed è obbligatorio. Gli altri file sono opzionali e ti permettono di costruire skills più potenti: template per Claude da compilare, output di esempio che mostrano il formato previsto, script che Claude può eseguire, o documentazione di riferimento dettagliata. Fai riferimento a questi file da `SKILL.md` in modo che Claude sappia cosa contengono e quando caricarli. Vedi [Aggiungi file di supporto](#add-supporting-files) per più dettagli.

116 

117<Note>

118 I file in `.claude/commands/` continuano a funzionare e supportano lo stesso [frontmatter](#frontmatter-reference). Le skills sono consigliate poiché supportano funzionalità aggiuntive come i file di supporto.

119</Note>

120 

121#### Skills da directory aggiuntive

122 

123Il flag `--add-dir` [concede l'accesso ai file](/it/permissions#additional-directories-grant-file-access-not-configuration) piuttosto che la scoperta della configurazione, ma le skills sono un'eccezione: `.claude/skills/` all'interno di una directory aggiunta viene caricato automaticamente. Vedi [Rilevamento dei cambiamenti in tempo reale](#live-change-detection) per come gli edits vengono rilevati durante una sessione.

124 

125Altre configurazioni `.claude/` come subagent, comandi e stili di output non vengono caricate da directory aggiuntive. Vedi la [tabella delle eccezioni](/it/permissions#additional-directories-grant-file-access-not-configuration) per l'elenco completo di ciò che viene e non viene caricato, e i modi consigliati per condividere la configurazione tra i progetti.

126 

127<Note>

128 I file CLAUDE.md da directory `--add-dir` non vengono caricati per impostazione predefinita. Per caricarli, imposta `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1`. Vedi [Carica da directory aggiuntive](/it/memory#load-from-additional-directories).

129</Note>

130 

131## Configura le skills

132 

133Le skills vengono configurate tramite frontmatter YAML in cima a `SKILL.md` e il contenuto markdown che segue.

134 

135### Tipi di contenuto della skill

136 

137I file delle skills possono contenere qualsiasi istruzione, ma pensare a come vuoi invocarle aiuta a guidare cosa includere:

138 

139**Contenuto di riferimento** aggiunge conoscenza che Claude applica al tuo lavoro attuale. Convenzioni, pattern, guide di stile, conoscenza del dominio. Questo contenuto viene eseguito inline in modo che Claude possa usarlo insieme al contesto della tua conversazione.

140 

141```yaml theme={null}

142---

143name: api-conventions

144description: API design patterns for this codebase

145---

146 

147When writing API endpoints:

148- Use RESTful naming conventions

149- Return consistent error formats

150- Include request validation

151```

152 

153**Contenuto di attività** dà a Claude istruzioni passo-passo per un'azione specifica, come deployment, commit o generazione di codice. Spesso sono azioni che vuoi invocare direttamente con `/skill-name` piuttosto che lasciare che Claude decida quando eseguirle. Aggiungi `disable-model-invocation: true` per impedire a Claude di attivarla automaticamente.

154 

155```yaml theme={null}

156---

157name: deploy

158description: Deploy the application to production

159context: fork

160disable-model-invocation: true

161---

162 

163Deploy the application:

1641. Run the test suite

1652. Build the application

1663. Push to the deployment target

167```

168 

169Il tuo `SKILL.md` può contenere qualsiasi cosa, ma pensare a come vuoi che la skill venga invocata (da te, da Claude, o da entrambi) e dove vuoi che venga eseguita (inline o in un subagent) aiuta a guidare cosa includere. Per skills complesse, puoi anche [aggiungere file di supporto](#add-supporting-files) per mantenere la skill principale focalizzata.

170 

171### Riferimento del frontmatter

172 

173Oltre al contenuto markdown, puoi configurare il comportamento della skill utilizzando campi frontmatter YAML tra i marcatori `---` in cima al tuo file `SKILL.md`:

174 

175```yaml theme={null}

176---

177name: my-skill

178description: What this skill does

179disable-model-invocation: true

180allowed-tools: Read Grep

181---

182 

183Your skill instructions here...

184```

185 

186Tutti i campi sono opzionali. Solo `description` è consigliato in modo che Claude sappia quando usare la skill.

187 

188| Campo | Obbligatorio | Descrizione |

189| :------------------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

190| `name` | No | Nome visualizzato per la skill. Se omesso, utilizza il nome della directory. Solo lettere minuscole, numeri e trattini (max 64 caratteri). |

191| `description` | Consigliato | Cosa fa la skill e quando usarla. Claude utilizza questo per decidere quando applicare la skill. Se omesso, utilizza il primo paragrafo del contenuto markdown. Metti in primo piano il caso d'uso chiave: il testo combinato di `description` e `when_to_use` viene troncato a 1.536 caratteri nell'elenco delle skills per ridurre l'utilizzo del contesto. |

192| `when_to_use` | No | Contesto aggiuntivo per quando Claude dovrebbe invocare la skill, come frasi trigger o richieste di esempio. Aggiunto a `description` nell'elenco delle skills e conta verso il limite di 1.536 caratteri. |

193| `argument-hint` | No | Suggerimento mostrato durante l'autocompletamento per indicare gli argomenti previsti. Esempio: `[issue-number]` o `[filename] [format]`. |

194| `arguments` | No | Argomenti posizionali denominati per la [sostituzione di stringhe `$name`](#available-string-substitutions) nel contenuto della skill. Accetta una stringa separata da spazi o un elenco YAML. I nomi si mappano alle posizioni degli argomenti in ordine. |

195| `disable-model-invocation` | No | Imposta su `true` per impedire a Claude di caricare automaticamente questa skill. Usa per i flussi di lavoro che vuoi attivare manualmente con `/name`. Impedisce anche alla skill di essere [precaricata nei subagents](/it/sub-agents#preload-skills-into-subagents). Predefinito: `false`. |

196| `user-invocable` | No | Imposta su `false` per nascondere dal menu `/`. Usa per la conoscenza di background che gli utenti non dovrebbero invocare direttamente. Predefinito: `true`. |

197| `allowed-tools` | No | Strumenti che Claude può usare senza chiedere il permesso quando questa skill è attiva. Accetta una stringa separata da spazi o un elenco YAML. |

198| `model` | No | Modello da usare quando questa skill è attiva. L'override si applica per il resto del turno attuale e non viene salvato nelle impostazioni; il modello della sessione riprende al tuo prossimo prompt. Accetta gli stessi valori di [`/model`](/it/model-config), o `inherit` per mantenere il modello attivo. |

199| `effort` | No | [Livello di sforzo](/it/model-config#adjust-effort-level) quando questa skill è attiva. Sostituisce il livello di sforzo della sessione. Predefinito: eredita dalla sessione. Opzioni: `low`, `medium`, `high`, `xhigh`, `max`; i livelli disponibili dipendono dal modello. |

200| `context` | No | Imposta su `fork` per eseguire in un contesto subagent con fork. |

201| `agent` | No | Quale tipo di subagent usare quando `context: fork` è impostato. |

202| `hooks` | No | hooks limitati al ciclo di vita di questa skill. Vedi [hooks in skills e agents](/it/hooks#hooks-in-skills-and-agents) per il formato di configurazione. |

203| `paths` | No | Pattern glob che limitano quando questa skill viene attivata. Accetta una stringa separata da virgole o un elenco YAML. Quando impostato, Claude carica la skill automaticamente solo quando lavora con file che corrispondono ai pattern. Utilizza lo stesso formato delle [regole specifiche del percorso](/it/memory#path-specific-rules). |

204| `shell` | No | Shell da usare per i blocchi `` !`command` `` e ` ```! ` in questa skill. Accetta `bash` (predefinito) o `powershell`. L'impostazione di `powershell` esegue i comandi shell inline tramite PowerShell su Windows. Richiede `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. |

205 

206#### Sostituzioni di stringhe disponibili

207 

208Le skills supportano la sostituzione di stringhe per valori dinamici nel contenuto della skill:

209 

210| Variabile | Descrizione |

211| :--------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

212| `$ARGUMENTS` | Tutti gli argomenti passati quando si invoca la skill. Se `$ARGUMENTS` non è presente nel contenuto, gli argomenti vengono aggiunti come `ARGUMENTS: <value>`. |

213| `$ARGUMENTS[N]` | Accedi a un argomento specifico per indice a base 0, come `$ARGUMENTS[0]` per il primo argomento. |

214| `$N` | Abbreviazione per `$ARGUMENTS[N]`, come `$0` per il primo argomento o `$1` per il secondo. |

215| `$name` | Argomento denominato dichiarato nell'elenco frontmatter [`arguments`](#frontmatter-reference). I nomi si mappano alle posizioni in ordine, quindi con `arguments: [issue, branch]` il placeholder `$issue` si espande al primo argomento e `$branch` al secondo. |

216| `${CLAUDE_SESSION_ID}` | L'ID della sessione attuale. Utile per il logging, la creazione di file specifici della sessione, o la correlazione dell'output della skill con le sessioni. |

217| `${CLAUDE_EFFORT}` | Il livello di sforzo attuale: `low`, `medium`, `high`, `xhigh`, o `max`. Usa questo per adattare le istruzioni della skill all'impostazione di sforzo attiva. |

218| `${CLAUDE_SKILL_DIR}` | La directory contenente il file `SKILL.md` della skill. Per le skills dei plugin, questa è la sottodirectory della skill all'interno del plugin, non la radice del plugin. Usa questo nei comandi di iniezione bash per fare riferimento a script o file raggruppati con la skill, indipendentemente dalla directory di lavoro attuale. |

219 

220Gli argomenti indicizzati utilizzano le virgolette in stile shell, quindi racchiudi i valori multi-parola tra virgolette per passarli come un singolo argomento. Ad esempio, `/my-skill "hello world" second` fa sì che `$0` si espanda a `hello world` e `$1` a `second`. Il placeholder `$ARGUMENTS` si espande sempre alla stringa di argomenti completa come digitata.

221 

222**Esempio usando sostituzioni:**

223 

224```yaml theme={null}

225---

226name: session-logger

227description: Log activity for this session

228---

229 

230Log the following to logs/${CLAUDE_SESSION_ID}.log:

231 

232$ARGUMENTS

233```

234 

235### Aggiungi file di supporto

236 

237Le skills possono includere più file nella loro directory. Questo mantiene `SKILL.md` focalizzato sull'essenziale mentre permette a Claude di accedere a materiale di riferimento dettagliato solo quando necessario. Grandi documenti di riferimento, specifiche API, o collezioni di esempi non hanno bisogno di caricarsi nel contesto ogni volta che la skill viene eseguita.

238 

239```text theme={null}

240my-skill/

241├── SKILL.md (obbligatorio - panoramica e navigazione)

242├── reference.md (documentazione API dettagliata - caricata quando necessario)

243├── examples.md (esempi di utilizzo - caricati quando necessario)

244└── scripts/

245 └── helper.py (script di utilità - eseguito, non caricato)

246```

247 

248Fai riferimento ai file di supporto da `SKILL.md` in modo che Claude sappia cosa contiene ogni file e quando caricarlo:

249 

250```markdown theme={null}

251## Additional resources

252 

253- For complete API details, see [reference.md](reference.md)

254- For usage examples, see [examples.md](examples.md)

255```

256 

257<Tip>Mantieni `SKILL.md` sotto 500 righe. Sposta il materiale di riferimento dettagliato in file separati.</Tip>

258 

259### Controlla chi invoca una skill

260 

261Per impostazione predefinita, sia tu che Claude potete invocare qualsiasi skill. Puoi digitare `/skill-name` per invocarla direttamente, e Claude può caricarla automaticamente quando rilevante per la tua conversazione. Due campi frontmatter ti permettono di limitare questo:

262 

263* **`disable-model-invocation: true`**: Solo tu puoi invocare la skill. Usa questo per i flussi di lavoro con effetti collaterali o che vuoi controllare il timing, come `/commit`, `/deploy`, o `/send-slack-message`. Non vuoi che Claude decida di fare il deploy perché il tuo codice sembra pronto.

264 

265* **`user-invocable: false`**: Solo Claude può invocare la skill. Usa questo per la conoscenza di background che non è azionabile come comando. Una skill `legacy-system-context` spiega come funziona un vecchio sistema. Claude dovrebbe saperlo quando rilevante, ma `/legacy-system-context` non è un'azione significativa per gli utenti da intraprendere.

266 

267Questo esempio crea una skill di deploy che solo tu puoi attivare. Il campo `disable-model-invocation: true` impedisce a Claude di eseguirla automaticamente:

268 

269```yaml theme={null}

270---

271name: deploy

272description: Deploy the application to production

273disable-model-invocation: true

274---

275 

276Deploy $ARGUMENTS to production:

277 

2781. Run the test suite

2792. Build the application

2803. Push to the deployment target

2814. Verify the deployment succeeded

282```

283 

284Ecco come i due campi influenzano l'invocazione e il caricamento del contesto:

285 

286| Frontmatter | Puoi invocare | Claude può invocare | Quando caricato nel contesto |

287| :------------------------------- | :------------ | :------------------ | :-------------------------------------------------------------------------------- |

288| (predefinito) | Sì | Sì | La descrizione è sempre nel contesto, la skill completa si carica quando invocata |

289| `disable-model-invocation: true` | Sì | No | La descrizione non è nel contesto, la skill completa si carica quando la invochi |

290| `user-invocable: false` | No | Sì | La descrizione è sempre nel contesto, la skill completa si carica quando invocata |

291 

292<Note>

293 In una sessione regolare, le descrizioni delle skills vengono caricate nel contesto in modo che Claude sappia cosa è disponibile, ma il contenuto completo della skill si carica solo quando invocato. [I subagents con skills precaricate](/it/sub-agents#preload-skills-into-subagents) funzionano diversamente: il contenuto completo della skill viene iniettato all'avvio.

294</Note>

295 

296### Ciclo di vita del contenuto della skill

297 

298Quando tu o Claude invocate una skill, il contenuto `SKILL.md` renderizzato entra nella conversazione come un singolo messaggio e rimane lì per il resto della sessione. Claude Code non rilegge il file della skill nei turni successivi, quindi scrivi la guida che dovrebbe applicarsi durante un'attività come istruzioni permanenti piuttosto che come passaggi una tantum.

299 

300[Auto-compaction](/it/how-claude-code-works#when-context-fills-up) porta avanti le skills invocate all'interno di un budget di token. Quando la conversazione viene riassunta per liberare contesto, Claude Code riallega l'invocazione più recente di ogni skill dopo il riassunto, mantenendo i primi 5.000 token di ciascuna. Le skills riallegate condividono un budget combinato di 25.000 token. Claude Code riempie questo budget a partire dalla skill invocata più di recente, quindi le skills più vecchie possono essere completamente eliminate dopo la compaction se ne hai invocate molte in una sessione.

301 

302Se una skill sembra smettere di influenzare il comportamento dopo la prima risposta, il contenuto è solitamente ancora presente e il modello sta scegliendo altri strumenti o approcci. Rafforza la `description` della skill e le istruzioni in modo che il modello continui a preferirla, o usa [hooks](/it/hooks) per applicare il comportamento in modo deterministico. Se la skill è grande o ne hai invocate molte altre dopo, reinvocala dopo la compaction per ripristinare il contenuto completo.

303 

304### Pre-approva gli strumenti per una skill

305 

306Il campo `allowed-tools` concede il permesso per gli strumenti elencati mentre la skill è attiva, in modo che Claude possa usarli senza chiederti l'approvazione per ogni uso. Non limita quali strumenti sono disponibili: ogni strumento rimane richiamabile, e le tue [impostazioni di permesso](/it/permissions) governano comunque gli strumenti che non sono elencati.

307 

308Questa skill permette a Claude di eseguire comandi git senza approvazione per uso ogni volta che la invochi:

309 

310```yaml theme={null}

311---

312name: commit

313description: Stage and commit the current changes

314disable-model-invocation: true

315allowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *)

316---

317```

318 

319Per bloccare una skill dall'usare certi strumenti, aggiungi regole di negazione nelle tue [impostazioni di permesso](/it/permissions) invece.

320 

321### Passa argomenti alle skills

322 

323Sia tu che Claude potete passare argomenti quando invocate una skill. Gli argomenti sono disponibili tramite il placeholder `$ARGUMENTS`.

324 

325Questa skill corregge un problema GitHub per numero. Il placeholder `$ARGUMENTS` viene sostituito con qualsiasi cosa segua il nome della skill:

326 

327```yaml theme={null}

328---

329name: fix-issue

330description: Fix a GitHub issue

331disable-model-invocation: true

332---

333 

334Fix GitHub issue $ARGUMENTS following our coding standards.

335 

3361. Read the issue description

3372. Understand the requirements

3383. Implement the fix

3394. Write tests

3405. Create a commit

341```

342 

343Quando esegui `/fix-issue 123`, Claude riceve "Fix GitHub issue 123 following our coding standards..."

344 

345Se invochi una skill con argomenti ma la skill non include `$ARGUMENTS`, Claude Code aggiunge `ARGUMENTS: <your input>` alla fine del contenuto della skill in modo che Claude veda comunque quello che hai digitato.

346 

347Per accedere agli argomenti individuali per posizione, usa `$ARGUMENTS[N]` o il più breve `$N`:

348 

349```yaml theme={null}

350---

351name: migrate-component

352description: Migrate a component from one framework to another

353---

354 

355Migrate the $ARGUMENTS[0] component from $ARGUMENTS[1] to $ARGUMENTS[2].

356Preserve all existing behavior and tests.

357```

358 

359Eseguendo `/migrate-component SearchBar React Vue` sostituisce `$ARGUMENTS[0]` con `SearchBar`, `$ARGUMENTS[1]` con `React`, e `$ARGUMENTS[2]` con `Vue`. La stessa skill usando la scorciatoia `$N`:

360 

361```yaml theme={null}

362---

363name: migrate-component

364description: Migrate a component from one framework to another

365---

366 

367Migrate the $0 component from $1 to $2.

368Preserve all existing behavior and tests.

369```

370 

371## Pattern avanzati

372 

373### Inietta contesto dinamico

374 

375La sintassi `` !`<command>` `` esegue comandi shell prima che il contenuto della skill venga inviato a Claude. L'output del comando sostituisce il placeholder, in modo che Claude riceva dati effettivi, non il comando stesso.

376 

377Questa skill riassume una pull request recuperando dati PR in tempo reale con GitHub CLI. I comandi `` !`gh pr diff` `` e altri vengono eseguiti per primi, e il loro output viene inserito nel prompt:

378 

379```yaml theme={null}

380---

381name: pr-summary

382description: Summarize changes in a pull request

383context: fork

384agent: Explore

385allowed-tools: Bash(gh *)

386---

387 

388## Pull request context

389- PR diff: !`gh pr diff`

390- PR comments: !`gh pr view --comments`

391- Changed files: !`gh pr diff --name-only`

392 

393## Your task

394Summarize this pull request...

395```

396 

397Quando questa skill viene eseguita:

398 

3991. Ogni `` !`<command>` `` viene eseguito immediatamente (prima che Claude veda qualsiasi cosa)

4002. L'output sostituisce il placeholder nel contenuto della skill

4013. Claude riceve il prompt completamente renderizzato con dati PR effettivi

402 

403Questo è preprocessing, non qualcosa che Claude esegue. Claude vede solo il risultato finale.

404 

405Per comandi multi-riga, usa un blocco di codice aperto con ` ```! ` invece della forma inline:

406 

407````markdown theme={null}

408## Environment

409```!

410node --version

411npm --version

412git status --short

413```

414````

415 

416Per disabilitare questo comportamento per skills e comandi personalizzati da fonti utente, progetto, plugin, o [directory aggiuntiva](#skills-from-additional-directories), imposta `"disableSkillShellExecution": true` nelle [impostazioni](/it/settings). Ogni comando viene sostituito con `[shell command execution disabled by policy]` invece di essere eseguito. Le skills raggruppate e gestite non sono interessate. Questa impostazione è più utile nelle [impostazioni gestite](/it/permissions#managed-settings), dove gli utenti non possono sovrascriverla.

417 

418<Tip>

419 Per abilitare il [pensiero esteso](/it/common-workflows#use-extended-thinking-thinking-mode) in una skill, includi la parola "ultrathink" da qualche parte nel contenuto della tua skill.

420</Tip>

421 

422### Esegui skills in un subagent

423 

424Aggiungi `context: fork` al tuo frontmatter quando vuoi che una skill venga eseguita in isolamento. Il contenuto della skill diventa il prompt che guida il subagent. Non avrà accesso alla tua cronologia di conversazione.

425 

426<Warning>

427 `context: fork` ha senso solo per skills con istruzioni esplicite. Se la tua skill contiene linee guida come "usa queste convenzioni API" senza un'attività, il subagent riceve le linee guida ma nessun prompt azionabile, e ritorna senza output significativo.

428</Warning>

429 

430Le skills e i [subagents](/it/sub-agents) funzionano insieme in due direzioni:

431 

432| Approccio | System prompt | Attività | Carica anche |

433| :-------------------------- | :------------------------------------------ | :---------------------------- | :----------------------------- |

434| Skill con `context: fork` | Dal tipo di agent (`Explore`, `Plan`, ecc.) | Contenuto di SKILL.md | CLAUDE.md |

435| Subagent con campo `skills` | Corpo markdown del subagent | Messaggio di delega di Claude | Skills precaricate + CLAUDE.md |

436 

437Con `context: fork`, scrivi l'attività nella tua skill e scegli un tipo di agent per eseguirla. Per l'inverso (definire un subagent personalizzato che usa le skills come materiale di riferimento), vedi [Subagents](/it/sub-agents#preload-skills-into-subagents).

438 

439#### Esempio: Skill di ricerca usando l'agent Explore

440 

441Questa skill esegue la ricerca in un agent Explore con fork. Il contenuto della skill diventa l'attività, e l'agent fornisce strumenti di sola lettura ottimizzati per l'esplorazione del codebase:

442 

443```yaml theme={null}

444---

445name: deep-research

446description: Research a topic thoroughly

447context: fork

448agent: Explore

449---

450 

451Research $ARGUMENTS thoroughly:

452 

4531. Find relevant files using Glob and Grep

4542. Read and analyze the code

4553. Summarize findings with specific file references

456```

457 

458Quando questa skill viene eseguita:

459 

4601. Viene creato un nuovo contesto isolato

4612. Il subagent riceve il contenuto della skill come suo prompt ("Research \$ARGUMENTS thoroughly...")

4623. Il campo `agent` determina l'ambiente di esecuzione (modello, strumenti e permessi)

4634. I risultati vengono riassunti e restituiti alla tua conversazione principale

464 

465Il campo `agent` specifica quale configurazione di subagent usare. Le opzioni includono agent integrati (`Explore`, `Plan`, `general-purpose`) o qualsiasi subagent personalizzato da `.claude/agents/`. Se omesso, utilizza `general-purpose`.

466 

467### Limita l'accesso alle skills di Claude

468 

469Per impostazione predefinita, Claude può invocare qualsiasi skill che non abbia `disable-model-invocation: true` impostato. Le skills che definiscono `allowed-tools` concedono a Claude l'accesso a quegli strumenti senza approvazione per uso quando la skill è attiva. Le tue [impostazioni di permesso](/it/permissions) governano comunque il comportamento di approvazione di base per tutti gli altri strumenti. Alcuni comandi integrati sono anche disponibili tramite lo strumento Skill, inclusi `/init`, `/review`, e `/security-review`. Altri comandi integrati come `/compact` non lo sono.

470 

471Tre modi per controllare quali skills Claude può invocare:

472 

473**Disabilita tutte le skills** negando lo strumento Skill in `/permissions`:

474 

475```text theme={null}

476# Add to deny rules:

477Skill

478```

479 

480**Consenti o nega skills specifiche** usando [regole di permesso](/it/permissions):

481 

482```text theme={null}

483# Allow only specific skills

484Skill(commit)

485Skill(review-pr *)

486 

487# Deny specific skills

488Skill(deploy *)

489```

490 

491Sintassi di permesso: `Skill(name)` per corrispondenza esatta, `Skill(name *)` per corrispondenza di prefisso con qualsiasi argomento.

492 

493**Nascondi skills individuali** aggiungendo `disable-model-invocation: true` al loro frontmatter. Questo rimuove la skill dal contesto di Claude completamente.

494 

495<Note>

496 Il campo `user-invocable` controlla solo la visibilità del menu, non l'accesso allo strumento Skill. Usa `disable-model-invocation: true` per bloccare l'invocazione programmatica.

497</Note>

498 

499## Condividi skills

500 

501Le skills possono essere distribuite a diversi ambiti a seconda del tuo pubblico:

502 

503* **Skills di progetto**: Esegui il commit di `.claude/skills/` al controllo di versione

504* **Plugin**: Crea una directory `skills/` nel tuo [plugin](/it/plugins)

505* **Gestito**: Distribuisci a livello di organizzazione tramite [impostazioni gestite](/it/settings#settings-files)

506 

507### Genera output visuale

508 

509Le skills possono raggruppare ed eseguire script in qualsiasi linguaggio, dando a Claude capacità oltre ciò che è possibile in un singolo prompt. Un pattern potente è generare output visuale: file HTML interattivi che si aprono nel tuo browser per esplorare dati, eseguire il debug, o creare report.

510 

511Questo esempio crea un esploratore di codebase: una vista ad albero interattiva dove puoi espandere e comprimere directory, vedere le dimensioni dei file a colpo d'occhio, e identificare i tipi di file per colore.

512 

513Crea la directory della Skill:

514 

515```bash theme={null}

516mkdir -p ~/.claude/skills/codebase-visualizer/scripts

517```

518 

519Crea `~/.claude/skills/codebase-visualizer/SKILL.md`. La descrizione dice a Claude quando attivare questa Skill, e le istruzioni dicono a Claude di eseguire lo script raggruppato:

520 

521````yaml theme={null}

522---

523name: codebase-visualizer

524description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.

525allowed-tools: Bash(python *)

526---

527 

528# Codebase Visualizer

529 

530Generate an interactive HTML tree view that shows your project's file structure with collapsible directories.

531 

532## Usage

533 

534Run the visualization script from your project root:

535 

536```bash

537python ~/.claude/skills/codebase-visualizer/scripts/visualize.py .

538```

539 

540This creates `codebase-map.html` in the current directory and opens it in your default browser.

541 

542## What the visualization shows

543 

544- **Collapsible directories**: Click folders to expand/collapse

545- **File sizes**: Displayed next to each file

546- **Colors**: Different colors for different file types

547- **Directory totals**: Shows aggregate size of each folder

548````

549 

550Crea `~/.claude/skills/codebase-visualizer/scripts/visualize.py`. Questo script scansiona un albero di directory e genera un file HTML autonomo con:

551 

552* Una **barra laterale di riepilogo** che mostra il conteggio dei file, il conteggio delle directory, la dimensione totale e il numero di tipi di file

553* Un **grafico a barre** che suddivide il codebase per tipo di file (i primi 8 per dimensione)

554* Un **albero comprimibile** dove puoi espandere e comprimere directory, con indicatori di tipo di file codificati per colore

555 

556Lo script richiede Python ma utilizza solo librerie integrate, quindi non ci sono pacchetti da installare:

557 

558```python expandable theme={null}

559#!/usr/bin/env python3

560"""Generate an interactive collapsible tree visualization of a codebase."""

561 

562import json

563import sys

564import webbrowser

565from pathlib import Path

566from collections import Counter

567 

568IGNORE = {'.git', 'node_modules', '__pycache__', '.venv', 'venv', 'dist', 'build'}

569 

570def scan(path: Path, stats: dict) -> dict:

571 result = {"name": path.name, "children": [], "size": 0}

572 try:

573 for item in sorted(path.iterdir()):

574 if item.name in IGNORE or item.name.startswith('.'):

575 continue

576 if item.is_file():

577 size = item.stat().st_size

578 ext = item.suffix.lower() or '(no ext)'

579 result["children"].append({"name": item.name, "size": size, "ext": ext})

580 result["size"] += size

581 stats["files"] += 1

582 stats["extensions"][ext] += 1

583 stats["ext_sizes"][ext] += size

584 elif item.is_dir():

585 stats["dirs"] += 1

586 child = scan(item, stats)

587 if child["children"]:

588 result["children"].append(child)

589 result["size"] += child["size"]

590 except PermissionError:

591 pass

592 return result

593 

594def generate_html(data: dict, stats: dict, output: Path) -> None:

595 ext_sizes = stats["ext_sizes"]

596 total_size = sum(ext_sizes.values()) or 1

597 sorted_exts = sorted(ext_sizes.items(), key=lambda x: -x[1])[:8]

598 colors = {

599 '.js': '#f7df1e', '.ts': '#3178c6', '.py': '#3776ab', '.go': '#00add8',

600 '.rs': '#dea584', '.rb': '#cc342d', '.css': '#264de4', '.html': '#e34c26',

601 '.json': '#6b7280', '.md': '#083fa1', '.yaml': '#cb171e', '.yml': '#cb171e',

602 '.mdx': '#083fa1', '.tsx': '#3178c6', '.jsx': '#61dafb', '.sh': '#4eaa25',

603 }

604 lang_bars = "".join(

605 f'<div class="bar-row"><span class="bar-label">{ext}</span>'

606 f'<div class="bar" style="width:{(size/total_size)*100}%;background:{colors.get(ext,"#6b7280")}"></div>'

607 f'<span class="bar-pct">{(size/total_size)*100:.1f}%</span></div>'

608 for ext, size in sorted_exts

609 )

610 def fmt(b):

611 if b < 1024: return f"{b} B"

612 if b < 1048576: return f"{b/1024:.1f} KB"

613 return f"{b/1048576:.1f} MB"

614 

615 html = f'''<!DOCTYPE html>

616<html><head>

617 <meta charset="utf-8"><title>Codebase Explorer</title>

618 <style>

619 body {{ font: 14px/1.5 system-ui, sans-serif; margin: 0; background: #1a1a2e; color: #eee; }}

620 .container {{ display: flex; height: 100vh; }}

621 .sidebar {{ width: 280px; background: #252542; padding: 20px; border-right: 1px solid #3d3d5c; overflow-y: auto; flex-shrink: 0; }}

622 .main {{ flex: 1; padding: 20px; overflow-y: auto; }}

623 h1 {{ margin: 0 0 10px 0; font-size: 18px; }}

624 h2 {{ margin: 20px 0 10px 0; font-size: 14px; color: #888; text-transform: uppercase; }}

625 .stat {{ display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #3d3d5c; }}

626 .stat-value {{ font-weight: bold; }}

627 .bar-row {{ display: flex; align-items: center; margin: 6px 0; }}

628 .bar-label {{ width: 55px; font-size: 12px; color: #aaa; }}

629 .bar {{ height: 18px; border-radius: 3px; }}

630 .bar-pct {{ margin-left: 8px; font-size: 12px; color: #666; }}

631 .tree {{ list-style: none; padding-left: 20px; }}

632 details {{ cursor: pointer; }}

633 summary {{ padding: 4px 8px; border-radius: 4px; }}

634 summary:hover {{ background: #2d2d44; }}

635 .folder {{ color: #ffd700; }}

636 .file {{ display: flex; align-items: center; padding: 4px 8px; border-radius: 4px; }}

637 .file:hover {{ background: #2d2d44; }}

638 .size {{ color: #888; margin-left: auto; font-size: 12px; }}

639 .dot {{ width: 8px; height: 8px; border-radius: 50%; margin-right: 8px; }}

640 </style>

641</head><body>

642 <div class="container">

643 <div class="sidebar">

644 <h1>📊 Summary</h1>

645 <div class="stat"><span>Files</span><span class="stat-value">{stats["files"]:,}</span></div>

646 <div class="stat"><span>Directories</span><span class="stat-value">{stats["dirs"]:,}</span></div>

647 <div class="stat"><span>Total size</span><span class="stat-value">{fmt(data["size"])}</span></div>

648 <div class="stat"><span>File types</span><span class="stat-value">{len(stats["extensions"])}</span></div>

649 <h2>By file type</h2>

650 {lang_bars}

651 </div>

652 <div class="main">

653 <h1>📁 {data["name"]}</h1>

654 <ul class="tree" id="root"></ul>

655 </div>

656 </div>

657 <script>

658 const data = {json.dumps(data)};

659 const colors = {json.dumps(colors)};

660 function fmt(b) {{ if (b < 1024) return b + ' B'; if (b < 1048576) return (b/1024).toFixed(1) + ' KB'; return (b/1048576).toFixed(1) + ' MB'; }}

661 function render(node, parent) {{

662 if (node.children) {{

663 const det = document.createElement('details');

664 det.open = parent === document.getElementById('root');

665 det.innerHTML = `<summary><span class="folder">📁 ${{node.name}}</span><span class="size">${{fmt(node.size)}}</span></summary>`;

666 const ul = document.createElement('ul'); ul.className = 'tree';

667 node.children.sort((a,b) => (b.children?1:0)-(a.children?1:0) || a.name.localeCompare(b.name));

668 node.children.forEach(c => render(c, ul));

669 det.appendChild(ul);

670 const li = document.createElement('li'); li.appendChild(det); parent.appendChild(li);

671 }} else {{

672 const li = document.createElement('li'); li.className = 'file';

673 li.innerHTML = `<span class="dot" style="background:${{colors[node.ext]||'#6b7280'}}"></span>${{node.name}}<span class="size">${{fmt(node.size)}}</span>`;

674 parent.appendChild(li);

675 }}

676 }}

677 data.children.forEach(c => render(c, document.getElementById('root')));

678 </script>

679</body></html>'''

680 output.write_text(html)

681 

682if __name__ == '__main__':

683 target = Path(sys.argv[1] if len(sys.argv) > 1 else '.').resolve()

684 stats = {"files": 0, "dirs": 0, "extensions": Counter(), "ext_sizes": Counter()}

685 data = scan(target, stats)

686 out = Path('codebase-map.html')

687 generate_html(data, stats, out)

688 print(f'Generated {out.absolute()}')

689 webbrowser.open(f'file://{out.absolute()}')

690```

691 

692Per testare, apri Claude Code in qualsiasi progetto e chiedi "Visualizza questo codebase." Claude esegue lo script, genera `codebase-map.html`, e lo apre nel tuo browser.

693 

694Questo pattern funziona per qualsiasi output visuale: grafici di dipendenza, report di copertura dei test, documentazione API, o visualizzazioni di schema di database. Lo script raggruppato fa il lavoro pesante mentre Claude gestisce l'orchestrazione.

695 

696## Risoluzione dei problemi

697 

698### Skill non si attiva

699 

700Se Claude non usa la tua skill quando previsto:

701 

7021. Controlla che la descrizione includa parole chiave che gli utenti direbbero naturalmente

7032. Verifica che la skill appaia in `What skills are available?`

7043. Prova a riformulare la tua richiesta per corrispondere più strettamente alla descrizione

7054. Invocarla direttamente con `/skill-name` se la skill è invocabile dall'utente

706 

707### Skill si attiva troppo spesso

708 

709Se Claude usa la tua skill quando non vuoi:

710 

7111. Rendi la descrizione più specifica

7122. Aggiungi `disable-model-invocation: true` se vuoi solo l'invocazione manuale

713 

714### Le descrizioni delle skills vengono tagliate

715 

716Le descrizioni delle skills vengono caricate nel contesto in modo che Claude sappia cosa è disponibile. Tutti i nomi delle skills sono sempre inclusi, ma se hai molte skills, le descrizioni vengono accorciate per adattarsi al budget dei caratteri, il che può rimuovere le parole chiave di cui Claude ha bisogno per corrispondere alla tua richiesta. Il budget si ridimensiona dinamicamente all'1% della finestra di contesto, con un fallback di 8.000 caratteri.

717 

718Per aumentare il limite, imposta la variabile di ambiente `SLASH_COMMAND_TOOL_CHAR_BUDGET`. Oppure taglia le descrizioni alla fonte: metti in primo piano il caso d'uso chiave, poiché il testo combinato di `description` e `when_to_use` di ogni voce è limitato a 1.536 caratteri indipendentemente dal budget.

719 

720## Risorse correlate

721 

722* **[Debug della tua configurazione](/it/debug-your-config)**: diagnostica il motivo per cui una skill non appare o non si attiva

723* **[Subagents](/it/sub-agents)**: delega attività ad agenti specializzati

724* **[Plugins](/it/plugins)**: pacchetto e distribuisci skills con altre estensioni

725* **[Hooks](/it/hooks)**: automatizza i flussi di lavoro intorno agli eventi degli strumenti

726* **[Memory](/it/memory)**: gestisci i file CLAUDE.md per il contesto persistente

727* **[Commands](/it/commands)**: riferimento per i comandi integrati e le skills raggruppate

728* **[Permissions](/it/permissions)**: controlla l'accesso agli strumenti e alle skills

slack.md +210 −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# Claude Code in Slack

6 

7> Delega i compiti di codifica direttamente dal tuo workspace Slack

8 

9Claude Code in Slack porta la potenza di Claude Code direttamente nel tuo workspace Slack. Quando menzioni `@Claude` con un compito di codifica, Claude rileva automaticamente l'intento e crea una sessione Claude Code sul web, permettendoti di delegare il lavoro di sviluppo senza lasciare le conversazioni del tuo team.

10 

11Questa integrazione è costruita sull'app Claude for Slack esistente ma aggiunge un instradamento intelligente a Claude Code sul web per le richieste relative alla codifica.

12 

13## Casi d'uso

14 

15* **Investigazione e correzione di bug**: Chiedi a Claude di investigare e correggere i bug non appena vengono segnalati nei canali Slack.

16* **Revisioni del codice rapide e modifiche**: Fai in modo che Claude implementi piccole funzionalità o effettui il refactoring del codice in base al feedback del team.

17* **Debug collaborativo**: Quando le discussioni del team forniscono contesto cruciale (ad esempio, riproduzioni di errori o segnalazioni di utenti), Claude può utilizzare queste informazioni per informare il suo approccio al debug.

18* **Esecuzione di attività parallele**: Avvia compiti di codifica in Slack mentre continui altri lavori, ricevendo notifiche al completamento.

19 

20## Prerequisiti

21 

22Prima di utilizzare Claude Code in Slack, assicurati di avere quanto segue:

23 

24| Requisito | Dettagli |

25| :------------------- | :---------------------------------------------------------------------------------- |

26| Piano Claude | Pro, Max, Team o Enterprise con accesso a Claude Code (posti premium) |

27| Claude Code sul web | L'accesso a [Claude Code sul web](/it/claude-code-on-the-web) deve essere abilitato |

28| Account GitHub | Connesso a Claude Code sul web con almeno un repository autenticato |

29| Autenticazione Slack | Il tuo account Slack collegato al tuo account Claude tramite l'app Claude |

30 

31## Configurazione di Claude Code in Slack

32 

33<Steps>

34 <Step title="Installa l'app Claude in Slack">

35 Un amministratore del workspace deve installare l'app Claude dal Slack App Marketplace. Visita il [Slack App Marketplace](https://slack.com/marketplace/A08SF47R6P4) e fai clic su "Add to Slack" per iniziare il processo di installazione.

36 </Step>

37 

38 <Step title="Connetti il tuo account Claude">

39 Dopo l'installazione dell'app, autentica il tuo account Claude individuale:

40 

41 1. Apri l'app Claude in Slack facendo clic su "Claude" nella tua sezione App

42 2. Naviga alla scheda App Home

43 3. Fai clic su "Connect" per collegare il tuo account Slack al tuo account Claude

44 4. Completa il flusso di autenticazione nel tuo browser

45 </Step>

46 

47 <Step title="Configura Claude Code sul web">

48 Assicurati che Claude Code sul web sia configurato correttamente:

49 

50 * Visita [claude.ai/code](https://claude.ai/code) e accedi con lo stesso account che hai connesso a Slack

51 * Connetti il tuo account GitHub se non è già connesso

52 * Autentica almeno un repository con cui desideri che Claude lavori

53 </Step>

54 

55 <Step title="Scegli la tua modalità di instradamento">

56 Dopo aver connesso i tuoi account, configura come Claude gestisce i tuoi messaggi in Slack. Naviga alla App Home di Claude in Slack per trovare l'impostazione **Routing Mode**.

57 

58 | Modalità | Comportamento |

59 | :-------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

60 | **Code only** | Claude instrada tutte le @mention a sessioni Claude Code. Ideale per i team che utilizzano Claude in Slack esclusivamente per compiti di sviluppo. |

61 | **Code + Chat** | Claude analizza ogni messaggio e instrada intelligentemente tra Claude Code (per compiti di codifica) e Claude Chat (per scrittura, analisi e domande generali). Ideale per i team che desiderano un unico punto di ingresso @Claude per tutti i tipi di lavoro. |

62 

63 <Note>

64 In modalità Code + Chat, se Claude instrada un messaggio a Chat ma desideravi una sessione di codifica, puoi fare clic su "Retry as Code" per creare una sessione Claude Code. Allo stesso modo, se viene instradato a Code ma desideravi una sessione Chat, puoi scegliere quell'opzione in quel thread.

65 </Note>

66 </Step>

67</Steps>

68 

69## Come funziona

70 

71### Rilevamento automatico

72 

73Quando menzioni @Claude in un canale o thread Slack, Claude analizza automaticamente il tuo messaggio per determinare se si tratta di un compito di codifica. Se Claude rileva l'intento di codifica, instradarà la tua richiesta a Claude Code sul web invece di rispondere come un assistente chat regolare.

74 

75Puoi anche dire esplicitamente a Claude di gestire una richiesta come un compito di codifica, anche se non lo rileva automaticamente.

76 

77<Note>

78 Claude Code in Slack funziona solo nei canali (pubblici o privati). Non funziona nei messaggi diretti (DM).

79</Note>

80 

81### Raccolta del contesto

82 

83**Da thread**: Quando @menzioni Claude in un thread, raccoglie il contesto da tutti i messaggi in quel thread per comprendere la conversazione completa.

84 

85**Da canali**: Quando menzionato direttamente in un canale, Claude guarda i messaggi recenti del canale per il contesto rilevante.

86 

87Questo contesto aiuta Claude a comprendere il problema, selezionare il repository appropriato e informare il suo approccio al compito.

88 

89<Warning>

90 Quando @Claude viene invocato in Slack, a Claude viene dato accesso al contesto della conversazione per comprendere meglio la tua richiesta. Claude può seguire le indicazioni da altri messaggi nel contesto, quindi gli utenti dovrebbero assicurarsi di utilizzare Claude solo in conversazioni Slack affidabili.

91</Warning>

92 

93### Flusso della sessione

94 

951. **Avvio**: Menzioni @Claude con una richiesta di codifica

962. **Rilevamento**: Claude analizza il tuo messaggio e rileva l'intento di codifica

973. **Creazione della sessione**: Una nuova sessione Claude Code viene creata su claude.ai/code

984. **Aggiornamenti di avanzamento**: Claude pubblica aggiornamenti di stato nel tuo thread Slack mentre il lavoro progredisce

995. **Completamento**: Al termine, Claude ti @menziona con un riepilogo e pulsanti di azione

1006. **Revisione**: Fai clic su "View Session" per vedere la trascrizione completa, o "Create PR" per aprire una pull request

101 

102## Elementi dell'interfaccia utente

103 

104### App Home

105 

106La scheda App Home mostra lo stato della tua connessione e ti consente di connettere o disconnettere il tuo account Claude da Slack.

107 

108### Azioni sui messaggi

109 

110* **View Session**: Apre la sessione Claude Code completa nel tuo browser dove puoi vedere tutto il lavoro eseguito, continuare la sessione o fare richieste aggiuntive.

111* **Create PR**: Crea una pull request direttamente dalle modifiche della sessione.

112* **Retry as Code**: Se Claude inizialmente risponde come assistente chat ma desideravi una sessione di codifica, fai clic su questo pulsante per riprovare la richiesta come un compito Claude Code.

113* **Change Repo**: Ti consente di selezionare un repository diverso se Claude ha scelto in modo errato.

114 

115### Selezione del repository

116 

117Claude seleziona automaticamente un repository in base al contesto della tua conversazione Slack. Se più repository potrebbero applicarsi, Claude potrebbe visualizzare un menu a discesa che ti consente di scegliere quello corretto.

118 

119## Accesso e autorizzazioni

120 

121### Accesso a livello di utente

122 

123| Tipo di accesso | Requisito |

124| :---------------------------- | :------------------------------------------------------------------------------ |

125| Sessioni Claude Code | Ogni utente esegue sessioni con il proprio account Claude |

126| Utilizzo e limiti di velocità | Le sessioni contano rispetto ai limiti del piano del singolo utente |

127| Accesso al repository | Gli utenti possono accedere solo ai repository che hanno personalmente connesso |

128| Cronologia sessioni | Le sessioni appaiono nella tua cronologia Claude Code su claude.ai/code |

129 

130### Autorizzazioni amministratore del workspace

131 

132Gli amministratori del workspace Slack controllano se l'app Claude può essere installata nel workspace. I singoli utenti si autenticano quindi con i propri account Claude per utilizzare l'integrazione.

133 

134## Cosa è accessibile dove

135 

136**In Slack**: Vedrai aggiornamenti di stato, riepiloghi di completamento e pulsanti di azione. La trascrizione completa è preservata e sempre accessibile.

137 

138**Sul web**: La sessione Claude Code completa con la cronologia della conversazione completa, tutte le modifiche al codice, operazioni su file e la possibilità di continuare la sessione o creare pull request.

139 

140## Best practice

141 

142### Scrivere richieste efficaci

143 

144* **Sii specifico**: Includi nomi di file, nomi di funzioni o messaggi di errore quando rilevante.

145* **Fornisci contesto**: Menziona il repository o il progetto se non è chiaro dalla conversazione.

146* **Definisci il successo**: Spiega come dovrebbe apparire "fatto"—Claude dovrebbe scrivere test? Aggiornare la documentazione? Creare una PR?

147* **Usa thread**: Rispondi nei thread quando discuti di bug o funzionalità in modo che Claude possa raccogliere il contesto completo.

148 

149### Quando utilizzare Slack rispetto al web

150 

151**Usa Slack quando**: Il contesto esiste già in una discussione Slack, desideri avviare un compito in modo asincrono, o stai collaborando con compagni di team che hanno bisogno di visibilità.

152 

153**Usa il web direttamente quando**: Hai bisogno di caricare file, desideri un'interazione in tempo reale durante lo sviluppo, o stai lavorando su compiti più lunghi e complessi.

154 

155## Risoluzione dei problemi

156 

157### Le sessioni non si avviano

158 

1591. Verifica che il tuo account Claude sia connesso nella App Home di Claude

1602. Controlla di avere l'accesso a Claude Code sul web abilitato

1613. Assicurati di avere almeno un repository GitHub connesso a Claude Code

162 

163### Repository non visualizzato

164 

1651. Connetti il repository in Claude Code sul web su [claude.ai/code](https://claude.ai/code)

1662. Verifica le tue autorizzazioni GitHub per quel repository

1673. Prova a disconnettere e riconnettere il tuo account GitHub

168 

169### Repository errato selezionato

170 

1711. Fai clic sul pulsante "Change Repo" per selezionare un repository diverso

1722. Includi il nome del repository nella tua richiesta per una selezione più accurata

173 

174### Errori di autenticazione

175 

1761. Disconnetti e riconnetti il tuo account Claude nella App Home

1772. Assicurati di essere connesso all'account Claude corretto nel tuo browser

1783. Controlla che il tuo piano Claude includa l'accesso a Claude Code

179 

180### Scadenza della sessione

181 

1821. Le sessioni rimangono accessibili nella tua cronologia Claude Code sul web

1832. Puoi continuare o fare riferimento a sessioni passate da [claude.ai/code](https://claude.ai/code)

184 

185## Limitazioni attuali

186 

187* **Solo GitHub**: Attualmente supporta repository su GitHub.

188* **Una PR alla volta**: Ogni sessione può creare una pull request.

189* **Si applicano i limiti di velocità**: Le sessioni utilizzano i limiti di velocità del tuo piano Claude individuale.

190* **Accesso web richiesto**: Gli utenti devono avere accesso a Claude Code sul web; coloro che non lo hanno riceveranno solo risposte di chat Claude standard.

191 

192## Risorse correlate

193 

194<CardGroup>

195 <Card title="Claude Code sul web" icon="globe" href="/it/claude-code-on-the-web">

196 Scopri di più su Claude Code sul web

197 </Card>

198 

199 <Card title="Claude for Slack" icon="slack" href="https://claude.com/claude-and-slack">

200 Documentazione generale di Claude for Slack

201 </Card>

202 

203 <Card title="Slack App Marketplace" icon="store" href="https://slack.com/marketplace/A08SF47R6P4">

204 Installa l'app Claude dal Marketplace di Slack

205 </Card>

206 

207 <Card title="Claude Help Center" icon="circle-question" href="https://support.claude.com">

208 Ottieni supporto aggiuntivo

209 </Card>

210</CardGroup>

statusline.md +1062 −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# Personalizza la tua barra di stato

6 

7> Configura una barra di stato personalizzata per monitorare l'utilizzo della finestra di contesto, i costi e lo stato git in Claude Code

8 

9La barra di stato è una barra personalizzabile nella parte inferiore di Claude Code che esegue qualsiasi script di shell che configuri. Riceve dati di sessione JSON su stdin e visualizza tutto ciò che il tuo script stampa, fornendoti una visualizzazione persistente e immediata dell'utilizzo del contesto, dei costi, dello stato git o di qualsiasi altra cosa tu voglia tracciare.

10 

11Le barre di stato sono utili quando:

12 

13* Vuoi monitorare l'utilizzo della finestra di contesto mentre lavori

14* Hai bisogno di tracciare i costi della sessione

15* Lavori su più sessioni e hai bisogno di distinguerle

16* Vuoi che il ramo git e lo stato siano sempre visibili

17 

18Ecco 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.

19 

20<Frame>

21 <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" />

22</Frame>

23 

24Questa 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.

25 

26## Configura una barra di stato

27 

28Usa il [comando `/statusline`](#use-the-statusline-command) per far generare uno script a Claude Code, oppure [crea manualmente uno script](#manually-configure-a-status-line) e aggiungilo alle tue impostazioni.

29 

30### Usa il comando /statusline

31 

32Il comando `/statusline` accetta istruzioni in linguaggio naturale che descrivono cosa vuoi visualizzare. Claude Code genera un file di script in `~/.claude/` e aggiorna automaticamente le tue impostazioni:

33 

34```text theme={null}

35/statusline show model name and context percentage with a progress bar

36```

37 

38### Configura manualmente una barra di stato

39 

40Aggiungi un campo `statusLine` alle tue impostazioni utente (`~/.claude/settings.json`, dove `~` è la tua directory home) o alle [impostazioni del progetto](/it/settings#settings-files). Imposta `type` su `"command"` e punta `command` a un percorso di script o a un comando di shell inline. Per una procedura dettagliata sulla creazione di uno script, vedi [Costruisci una barra di stato passo dopo passo](#build-a-status-line-step-by-step).

41 

42```json theme={null}

43{

44 "statusLine": {

45 "type": "command",

46 "command": "~/.claude/statusline.sh",

47 "padding": 2

48 }

49}

50```

51 

52Il campo `command` viene eseguito in una shell, quindi puoi anche usare comandi inline invece di un file di script. Questo esempio usa `jq` per analizzare l'input JSON e visualizzare il nome del modello e la percentuale di contesto:

53 

54```json theme={null}

55{

56 "statusLine": {

57 "type": "command",

58 "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'"

59 }

60}

61```

62 

63Il campo opzionale `padding` aggiunge spazi orizzontali extra (in caratteri) al contenuto della barra di stato. Il valore predefinito è `0`. Questo padding è in aggiunta alla spaziatura integrata dell'interfaccia, quindi controlla l'indentazione relativa piuttosto che la distanza assoluta dal bordo del terminale.

64 

65Il campo opzionale `refreshInterval` esegue nuovamente il tuo comando ogni N secondi oltre agli [aggiornamenti guidati da eventi](#how-status-lines-work). Il minimo è `1`. Impostalo quando la tua barra di stato mostra dati basati sul tempo come un orologio, o quando i subagent in background cambiano lo stato git mentre la sessione principale è inattiva. Lascialo non impostato per eseguire solo su eventi.

66 

67Il campo opzionale `hideVimModeIndicator` sopprime il testo integrato `-- INSERT --` sotto il prompt. Impostalo su `true` quando il tuo script renderizza [`vim.mode`](#available-data) stesso, in modo che la modalità non venga visualizzata due volte.

68 

69### Disabilita la barra di stato

70 

71Esegui `/statusline` e chiedigli di rimuovere o cancellare la tua barra di stato (ad esempio, `/statusline delete`, `/statusline clear`, `/statusline remove it`). Puoi anche eliminare manualmente il campo `statusLine` dal tuo settings.json.

72 

73## Costruisci una barra di stato passo dopo passo

74 

75Questa procedura mostra cosa sta accadendo dietro le quinte creando manualmente una barra di stato che visualizza il modello corrente, la directory di lavoro e la percentuale di utilizzo della finestra di contesto.

76 

77<Note>Eseguire [`/statusline`](#use-the-statusline-command) con una descrizione di quello che vuoi configura tutto questo automaticamente per te.</Note>

78 

79Questi esempi usano script Bash, che funzionano su macOS e Linux. Su Windows, vedi [Configurazione Windows](#windows-configuration) per esempi PowerShell e Git Bash.

80 

81<Frame>

82 <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" />

83</Frame>

84 

85<Steps>

86 <Step title="Crea uno script che legge JSON e stampa l'output">

87 Claude Code invia dati JSON al tuo script tramite stdin. Questo script usa [`jq`](https://jqlang.github.io/jq/), un parser JSON da riga di comando che potrebbe essere necessario installare, per estrarre il nome del modello, la directory e la percentuale di contesto, quindi stampa una riga formattata.

88 

89 Salva questo in `~/.claude/statusline.sh` (dove `~` è la tua directory home, come `/Users/username` su macOS o `/home/username` su Linux):

90 

91 ```bash theme={null}

92 #!/bin/bash

93 # Read JSON data that Claude Code sends to stdin

94 input=$(cat)

95 

96 # Extract fields using jq

97 MODEL=$(echo "$input" | jq -r '.model.display_name')

98 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

99 # The "// 0" provides a fallback if the field is null

100 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

101 

102 # Output the status line - ${DIR##*/} extracts just the folder name

103 echo "[$MODEL] 📁 ${DIR##*/} | ${PCT}% context"

104 ```

105 </Step>

106 

107 <Step title="Rendilo eseguibile">

108 Contrassegna lo script come eseguibile in modo che la tua shell possa eseguirlo:

109 

110 ```bash theme={null}

111 chmod +x ~/.claude/statusline.sh

112 ```

113 </Step>

114 

115 <Step title="Aggiungi alle impostazioni">

116 Dì a Claude Code di eseguire il tuo script come barra di stato. Aggiungi questa configurazione a `~/.claude/settings.json`, che imposta `type` su `"command"` (che significa "esegui questo comando di shell") e punta `command` al tuo script:

117 

118 ```json theme={null}

119 {

120 "statusLine": {

121 "type": "command",

122 "command": "~/.claude/statusline.sh"

123 }

124 }

125 ```

126 

127 La tua barra di stato appare nella parte inferiore dell'interfaccia. Le impostazioni si ricaricano automaticamente, ma le modifiche non appariranno fino alla tua prossima interazione con Claude Code.

128 </Step>

129</Steps>

130 

131## Come funzionano le barre di stato

132 

133Claude Code esegue il tuo script e invia i [dati di sessione JSON](#available-data) ad esso tramite stdin. Il tuo script legge il JSON, estrae quello di cui ha bisogno e stampa il testo su stdout. Claude Code visualizza tutto ciò che il tuo script stampa.

134 

135**Quando si aggiorna**

136 

137Il tuo script viene eseguito dopo ogni nuovo messaggio dell'assistente, quando cambia la modalità di autorizzazione o quando la modalità vim si attiva/disattiva. Gli aggiornamenti vengono debounced a 300ms, il che significa che i cambiamenti rapidi si raggruppano insieme e il tuo script viene eseguito una volta che le cose si stabilizzano. Se un nuovo aggiornamento si attiva mentre il tuo script è ancora in esecuzione, l'esecuzione in corso viene annullata. Se modifichi il tuo script, le modifiche non appariranno fino al prossimo aggiornamento di Claude Code.

138 

139Questi trigger possono diventare silenziosi quando la sessione principale è inattiva, ad esempio mentre un coordinatore attende i subagent in background. Per mantenere i segmenti basati sul tempo o provenienti da fonti esterne aggiornati durante i periodi di inattività, imposta [`refreshInterval`](#manually-configure-a-status-line) per eseguire nuovamente il comando anche su un timer fisso.

140 

141**Cosa può produrre il tuo script**

142 

143* **Più righe**: ogni istruzione `echo` o `print` viene visualizzata come una riga separata. Vedi l'[esempio multi-riga](#display-multiple-lines).

144* **Colori**: usa [codici di escape ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) come `\033[32m` per il verde (il terminale deve supportarli). Vedi l'[esempio di stato git](#git-status-with-colors).

145* **Link**: usa [sequenze di escape OSC 8](https://en.wikipedia.org/wiki/ANSI_escape_code#OSC) per rendere il testo cliccabile (Cmd+clic su macOS, Ctrl+clic su Windows/Linux). Richiede un terminale che supporti i hyperlink come iTerm2, Kitty o WezTerm. Vedi l'[esempio di link cliccabili](#clickable-links).

146 

147<Note>La barra di stato viene eseguita localmente e non consuma token API. Si nasconde temporaneamente durante determinate interazioni dell'interfaccia utente, inclusi i suggerimenti di completamento automatico, il menu della guida e i prompt di autorizzazione.</Note>

148 

149## Dati disponibili

150 

151Claude Code invia i seguenti campi JSON al tuo script tramite stdin:

152 

153| Campo | Descrizione |

154| -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

155| `model.id`, `model.display_name` | Identificatore del modello corrente e nome visualizzato |

156| `cwd`, `workspace.current_dir` | Directory di lavoro corrente. Entrambi i campi contengono lo stesso valore; `workspace.current_dir` è preferito per coerenza con `workspace.project_dir`. |

157| `workspace.project_dir` | Directory in cui Claude Code è stato avviato, che potrebbe differire da `cwd` se la directory di lavoro cambia durante una sessione |

158| `workspace.added_dirs` | Directory aggiuntive aggiunte tramite `/add-dir` o `--add-dir`. Array vuoto se nessuna è stata aggiunta |

159| `workspace.git_worktree` | Nome del Git worktree quando la directory corrente si trova all'interno di un worktree collegato creato con `git worktree add`. Assente nel worktree principale. Popolato per qualsiasi git worktree, a differenza di `worktree.*` che si applica solo alle sessioni `--worktree` |

160| `cost.total_cost_usd` | Costo totale stimato della sessione in USD, calcolato lato client. Potrebbe differire dalla tua fattura effettiva |

161| `cost.total_duration_ms` | Tempo totale trascorso dal momento dell'avvio della sessione, in millisecondi |

162| `cost.total_api_duration_ms` | Tempo totale trascorso in attesa delle risposte API in millisecondi |

163| `cost.total_lines_added`, `cost.total_lines_removed` | Righe di codice modificate |

164| `context_window.total_input_tokens`, `context_window.total_output_tokens` | Conteggi cumulativi dei token nella sessione |

165| `context_window.context_window_size` | Dimensione massima della finestra di contesto in token. 200000 per impostazione predefinita, o 1000000 per i modelli con contesto esteso. |

166| `context_window.used_percentage` | Percentuale pre-calcolata della finestra di contesto utilizzata |

167| `context_window.remaining_percentage` | Percentuale pre-calcolata della finestra di contesto rimanente |

168| `context_window.current_usage` | Conteggi dei token dall'ultima chiamata API, descritti in [campi della finestra di contesto](#context-window-fields) |

169| `exceeds_200k_tokens` | Se il conteggio totale dei token (token di input, cache e output combinati) dalla risposta API più recente supera 200k. Questo è un limite fisso indipendentemente dalla dimensione effettiva della finestra di contesto. |

170| `effort.level` | Livello di sforzo di ragionamento corrente (`low`, `medium`, `high`, `xhigh`, o `max`). Riflette il valore della sessione attiva, inclusi i cambiamenti di `/effort` durante la sessione. Assente quando il modello corrente non supporta il parametro effort |

171| `thinking.enabled` | Se il pensiero esteso è abilitato per la sessione |

172| `rate_limits.five_hour.used_percentage`, `rate_limits.seven_day.used_percentage` | Percentuale del limite di velocità di 5 ore o 7 giorni consumato, da 0 a 100 |

173| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | Secondi di epoca Unix quando la finestra del limite di velocità di 5 ore o 7 giorni si ripristina |

174| `session_id` | Identificatore univoco della sessione |

175| `session_name` | Nome della sessione personalizzato impostato con il flag `--name` o `/rename`. Assente se nessun nome personalizzato è stato impostato |

176| `transcript_path` | Percorso del file di trascrizione della conversazione |

177| `version` | Versione di Claude Code |

178| `output_style.name` | Nome dello stile di output corrente |

179| `vim.mode` | Modalità vim corrente (`NORMAL`, `INSERT`, `VISUAL`, o `VISUAL LINE`) quando la [modalità vim](/it/interactive-mode#vim-editor-mode) è abilitata |

180| `agent.name` | Nome dell'agente quando si esegue con il flag `--agent` o le impostazioni dell'agente configurate |

181| `worktree.name` | Nome del worktree attivo. Presente solo durante le sessioni `--worktree` |

182| `worktree.path` | Percorso assoluto della directory del worktree |

183| `worktree.branch` | Nome del ramo git per il worktree (ad esempio, `"worktree-my-feature"`). Assente per i worktree basati su hook |

184| `worktree.original_cwd` | La directory in cui Claude si trovava prima di entrare nel worktree |

185| `worktree.original_branch` | Ramo git estratto prima di entrare nel worktree. Assente per i worktree basati su hook |

186 

187<Accordion title="Schema JSON completo">

188 Il tuo comando della barra di stato riceve questa struttura JSON tramite stdin:

189 

190 ```json theme={null}

191 {

192 "cwd": "/current/working/directory",

193 "session_id": "abc123...",

194 "session_name": "my-session",

195 "transcript_path": "/path/to/transcript.jsonl",

196 "model": {

197 "id": "claude-opus-4-7",

198 "display_name": "Opus"

199 },

200 "workspace": {

201 "current_dir": "/current/working/directory",

202 "project_dir": "/original/project/directory",

203 "added_dirs": [],

204 "git_worktree": "feature-xyz"

205 },

206 "version": "2.1.90",

207 "output_style": {

208 "name": "default"

209 },

210 "cost": {

211 "total_cost_usd": 0.01234,

212 "total_duration_ms": 45000,

213 "total_api_duration_ms": 2300,

214 "total_lines_added": 156,

215 "total_lines_removed": 23

216 },

217 "context_window": {

218 "total_input_tokens": 15234,

219 "total_output_tokens": 4521,

220 "context_window_size": 200000,

221 "used_percentage": 8,

222 "remaining_percentage": 92,

223 "current_usage": {

224 "input_tokens": 8500,

225 "output_tokens": 1200,

226 "cache_creation_input_tokens": 5000,

227 "cache_read_input_tokens": 2000

228 }

229 },

230 "exceeds_200k_tokens": false,

231 "effort": {

232 "level": "high"

233 },

234 "thinking": {

235 "enabled": true

236 },

237 "rate_limits": {

238 "five_hour": {

239 "used_percentage": 23.5,

240 "resets_at": 1738425600

241 },

242 "seven_day": {

243 "used_percentage": 41.2,

244 "resets_at": 1738857600

245 }

246 },

247 "vim": {

248 "mode": "NORMAL"

249 },

250 "agent": {

251 "name": "security-reviewer"

252 },

253 "worktree": {

254 "name": "my-feature",

255 "path": "/path/to/.claude/worktrees/my-feature",

256 "branch": "worktree-my-feature",

257 "original_cwd": "/path/to/project",

258 "original_branch": "main"

259 }

260 }

261 ```

262 

263 **Campi che potrebbero essere assenti** (non presenti in JSON):

264 

265 * `session_name`: appare solo quando un nome personalizzato è stato impostato con `--name` o `/rename`

266 * `workspace.git_worktree`: appare solo quando la directory corrente si trova all'interno di un git worktree collegato

267 * `effort`: appare solo quando il modello corrente supporta il parametro di sforzo di ragionamento

268 * `vim`: appare solo quando la modalità vim è abilitata

269 * `agent`: appare solo quando si esegue con il flag `--agent` o le impostazioni dell'agente configurate

270 * `worktree`: appare solo durante le sessioni `--worktree`. Quando presente, `branch` e `original_branch` potrebbero anche essere assenti per i worktree basati su hook

271 * `rate_limits`: appare solo per gli abbonati Claude.ai (Pro/Max) dopo la prima risposta API nella sessione. Ogni finestra (`five_hour`, `seven_day`) potrebbe essere indipendentemente assente. Usa `jq -r '.rate_limits.five_hour.used_percentage // empty'` per gestire l'assenza con eleganza.

272 

273 **Campi che potrebbero essere `null`**:

274 

275 * `context_window.current_usage`: `null` prima della prima chiamata API in una sessione

276 * `context_window.used_percentage`, `context_window.remaining_percentage`: potrebbero essere `null` all'inizio della sessione

277 

278 Gestisci i campi mancanti con accesso condizionale e i valori null con fallback predefiniti nei tuoi script.

279</Accordion>

280 

281### Campi della finestra di contesto

282 

283L'oggetto `context_window` fornisce due modi per tracciare l'utilizzo del contesto:

284 

285* **Totali cumulativi** (`total_input_tokens`, `total_output_tokens`): somma di tutti i token nell'intera sessione, utile per tracciare il consumo totale

286* **Utilizzo corrente** (`current_usage`): conteggi dei token dall'ultima chiamata API, usa questo per una percentuale di contesto accurata poiché riflette lo stato effettivo del contesto

287 

288L'oggetto `current_usage` contiene:

289 

290* `input_tokens`: token di input nel contesto corrente

291* `output_tokens`: token di output generati

292* `cache_creation_input_tokens`: token scritti nella cache

293* `cache_read_input_tokens`: token letti dalla cache

294 

295Il campo `used_percentage` viene calcolato solo dai token di input: `input_tokens + cache_creation_input_tokens + cache_read_input_tokens`. Non include `output_tokens`.

296 

297Se calcoli manualmente la percentuale di contesto da `current_usage`, usa la stessa formula solo per l'input per corrispondere a `used_percentage`.

298 

299L'oggetto `current_usage` è `null` prima della prima chiamata API in una sessione.

300 

301## Esempi

302 

303Questi esempi mostrano modelli comuni della barra di stato. Per usare qualsiasi esempio:

304 

3051. Salva lo script in un file come `~/.claude/statusline.sh` (o `.py`/`.js`)

3062. Rendilo eseguibile: `chmod +x ~/.claude/statusline.sh`

3073. Aggiungi il percorso alle tue [impostazioni](#manually-configure-a-status-line)

308 

309Gli esempi Bash usano [`jq`](https://jqlang.github.io/jq/) per analizzare JSON. Python e Node.js hanno l'analisi JSON integrata.

310 

311### Utilizzo della finestra di contesto

312 

313Visualizza 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:

314 

315<Frame>

316 <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" />

317</Frame>

318 

319<CodeGroup>

320 ```bash Bash theme={null}

321 #!/bin/bash

322 # Read all of stdin into a variable

323 input=$(cat)

324 

325 # Extract fields with jq, "// 0" provides fallback for null

326 MODEL=$(echo "$input" | jq -r '.model.display_name')

327 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

328 

329 # Build progress bar: printf -v creates a run of spaces, then

330 # ${var// /▓} replaces each space with a block character

331 BAR_WIDTH=10

332 FILLED=$((PCT * BAR_WIDTH / 100))

333 EMPTY=$((BAR_WIDTH - FILLED))

334 BAR=""

335 [ "$FILLED" -gt 0 ] && printf -v FILL "%${FILLED}s" && BAR="${FILL// /▓}"

336 [ "$EMPTY" -gt 0 ] && printf -v PAD "%${EMPTY}s" && BAR="${BAR}${PAD// /░}"

337 

338 echo "[$MODEL] $BAR $PCT%"

339 ```

340 

341 ```python Python theme={null}

342 #!/usr/bin/env python3

343 import json, sys

344 

345 # json.load reads and parses stdin in one step

346 data = json.load(sys.stdin)

347 model = data['model']['display_name']

348 # "or 0" handles null values

349 pct = int(data.get('context_window', {}).get('used_percentage', 0) or 0)

350 

351 # String multiplication builds the bar

352 filled = pct * 10 // 100

353 bar = '▓' * filled + '░' * (10 - filled)

354 

355 print(f"[{model}] {bar} {pct}%")

356 ```

357 

358 ```javascript Node.js theme={null}

359 #!/usr/bin/env node

360 // Node.js reads stdin asynchronously with events

361 let input = '';

362 process.stdin.on('data', chunk => input += chunk);

363 process.stdin.on('end', () => {

364 const data = JSON.parse(input);

365 const model = data.model.display_name;

366 // Optional chaining (?.) safely handles null fields

367 const pct = Math.floor(data.context_window?.used_percentage || 0);

368 

369 // String.repeat() builds the bar

370 const filled = Math.floor(pct * 10 / 100);

371 const bar = '▓'.repeat(filled) + '░'.repeat(10 - filled);

372 

373 console.log(`[${model}] ${bar} ${pct}%`);

374 });

375 ```

376</CodeGroup>

377 

378### Stato git con colori

379 

380Mostra 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.

381 

382<Frame>

383 <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" />

384</Frame>

385 

386Ogni script verifica se la directory corrente è un repository git, conta i file in staging e modificati e visualizza indicatori codificati a colori:

387 

388<CodeGroup>

389 ```bash Bash theme={null}

390 #!/bin/bash

391 input=$(cat)

392 

393 MODEL=$(echo "$input" | jq -r '.model.display_name')

394 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

395 

396 GREEN='\033[32m'

397 YELLOW='\033[33m'

398 RESET='\033[0m'

399 

400 if git rev-parse --git-dir > /dev/null 2>&1; then

401 BRANCH=$(git branch --show-current 2>/dev/null)

402 STAGED=$(git diff --cached --numstat 2>/dev/null | wc -l | tr -d ' ')

403 MODIFIED=$(git diff --numstat 2>/dev/null | wc -l | tr -d ' ')

404 

405 GIT_STATUS=""

406 [ "$STAGED" -gt 0 ] && GIT_STATUS="${GREEN}+${STAGED}${RESET}"

407 [ "$MODIFIED" -gt 0 ] && GIT_STATUS="${GIT_STATUS}${YELLOW}~${MODIFIED}${RESET}"

408 

409 echo -e "[$MODEL] 📁 ${DIR##*/} | 🌿 $BRANCH $GIT_STATUS"

410 else

411 echo "[$MODEL] 📁 ${DIR##*/}"

412 fi

413 ```

414 

415 ```python Python theme={null}

416 #!/usr/bin/env python3

417 import json, sys, subprocess, os

418 

419 data = json.load(sys.stdin)

420 model = data['model']['display_name']

421 directory = os.path.basename(data['workspace']['current_dir'])

422 

423 GREEN, YELLOW, RESET = '\033[32m', '\033[33m', '\033[0m'

424 

425 try:

426 subprocess.check_output(['git', 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL)

427 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True).strip()

428 staged_output = subprocess.check_output(['git', 'diff', '--cached', '--numstat'], text=True).strip()

429 modified_output = subprocess.check_output(['git', 'diff', '--numstat'], text=True).strip()

430 staged = len(staged_output.split('\n')) if staged_output else 0

431 modified = len(modified_output.split('\n')) if modified_output else 0

432 

433 git_status = f"{GREEN}+{staged}{RESET}" if staged else ""

434 git_status += f"{YELLOW}~{modified}{RESET}" if modified else ""

435 

436 print(f"[{model}] 📁 {directory} | 🌿 {branch} {git_status}")

437 except:

438 print(f"[{model}] 📁 {directory}")

439 ```

440 

441 ```javascript Node.js theme={null}

442 #!/usr/bin/env node

443 const { execSync } = require('child_process');

444 const path = require('path');

445 

446 let input = '';

447 process.stdin.on('data', chunk => input += chunk);

448 process.stdin.on('end', () => {

449 const data = JSON.parse(input);

450 const model = data.model.display_name;

451 const dir = path.basename(data.workspace.current_dir);

452 

453 const GREEN = '\x1b[32m', YELLOW = '\x1b[33m', RESET = '\x1b[0m';

454 

455 try {

456 execSync('git rev-parse --git-dir', { stdio: 'ignore' });

457 const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();

458 const staged = execSync('git diff --cached --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

459 const modified = execSync('git diff --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

460 

461 let gitStatus = staged ? `${GREEN}+${staged}${RESET}` : '';

462 gitStatus += modified ? `${YELLOW}~${modified}${RESET}` : '';

463 

464 console.log(`[${model}] 📁 ${dir} | 🌿 ${branch} ${gitStatus}`);

465 } catch {

466 console.log(`[${model}] 📁 ${dir}`);

467 }

468 });

469 ```

470</CodeGroup>

471 

472### Tracciamento di costi e durata

473 

474Traccia i costi API della tua sessione e il tempo trascorso. Il campo `cost.total_cost_usd` accumula il costo stimato di tutte le chiamate API nella sessione corrente. Il campo `cost.total_duration_ms` misura il tempo totale trascorso dall'inizio della sessione, mentre `cost.total_api_duration_ms` traccia solo il tempo trascorso in attesa delle risposte API.

475 

476Ogni script formatta il costo come valuta e converte i millisecondi in minuti e secondi:

477 

478<Frame>

479 <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" />

480</Frame>

481 

482<CodeGroup>

483 ```bash Bash theme={null}

484 #!/bin/bash

485 input=$(cat)

486 

487 MODEL=$(echo "$input" | jq -r '.model.display_name')

488 COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')

489 DURATION_MS=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')

490 

491 COST_FMT=$(printf '$%.2f' "$COST")

492 DURATION_SEC=$((DURATION_MS / 1000))

493 MINS=$((DURATION_SEC / 60))

494 SECS=$((DURATION_SEC % 60))

495 

496 echo "[$MODEL] 💰 $COST_FMT | ⏱️ ${MINS}m ${SECS}s"

497 ```

498 

499 ```python Python theme={null}

500 #!/usr/bin/env python3

501 import json, sys

502 

503 data = json.load(sys.stdin)

504 model = data['model']['display_name']

505 cost = data.get('cost', {}).get('total_cost_usd', 0) or 0

506 duration_ms = data.get('cost', {}).get('total_duration_ms', 0) or 0

507 

508 duration_sec = duration_ms // 1000

509 mins, secs = duration_sec // 60, duration_sec % 60

510 

511 print(f"[{model}] 💰 ${cost:.2f} | ⏱️ {mins}m {secs}s")

512 ```

513 

514 ```javascript Node.js theme={null}

515 #!/usr/bin/env node

516 let input = '';

517 process.stdin.on('data', chunk => input += chunk);

518 process.stdin.on('end', () => {

519 const data = JSON.parse(input);

520 const model = data.model.display_name;

521 const cost = data.cost?.total_cost_usd || 0;

522 const durationMs = data.cost?.total_duration_ms || 0;

523 

524 const durationSec = Math.floor(durationMs / 1000);

525 const mins = Math.floor(durationSec / 60);

526 const secs = durationSec % 60;

527 

528 console.log(`[${model}] 💰 $${cost.toFixed(2)} | ⏱️ ${mins}m ${secs}s`);

529 });

530 ```

531</CodeGroup>

532 

533### Visualizza più righe

534 

535Il tuo script può produrre più righe per creare una visualizzazione più ricca. Ogni istruzione `echo` produce una riga separata nell'area di stato.

536 

537<Frame>

538 <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" />

539</Frame>

540 

541Questo 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:

542 

543<CodeGroup>

544 ```bash Bash theme={null}

545 #!/bin/bash

546 input=$(cat)

547 

548 MODEL=$(echo "$input" | jq -r '.model.display_name')

549 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

550 COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')

551 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

552 DURATION_MS=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')

553 

554 CYAN='\033[36m'; GREEN='\033[32m'; YELLOW='\033[33m'; RED='\033[31m'; RESET='\033[0m'

555 

556 # Pick bar color based on context usage

557 if [ "$PCT" -ge 90 ]; then BAR_COLOR="$RED"

558 elif [ "$PCT" -ge 70 ]; then BAR_COLOR="$YELLOW"

559 else BAR_COLOR="$GREEN"; fi

560 

561 FILLED=$((PCT / 10)); EMPTY=$((10 - FILLED))

562 printf -v FILL "%${FILLED}s"; printf -v PAD "%${EMPTY}s"

563 BAR="${FILL// /█}${PAD// /░}"

564 

565 MINS=$((DURATION_MS / 60000)); SECS=$(((DURATION_MS % 60000) / 1000))

566 

567 BRANCH=""

568 git rev-parse --git-dir > /dev/null 2>&1 && BRANCH=" | 🌿 $(git branch --show-current 2>/dev/null)"

569 

570 echo -e "${CYAN}[$MODEL]${RESET} 📁 ${DIR##*/}$BRANCH"

571 COST_FMT=$(printf '$%.2f' "$COST")

572 echo -e "${BAR_COLOR}${BAR}${RESET} ${PCT}% | ${YELLOW}${COST_FMT}${RESET} | ⏱️ ${MINS}m ${SECS}s"

573 ```

574 

575 ```python Python theme={null}

576 #!/usr/bin/env python3

577 import json, sys, subprocess, os

578 

579 data = json.load(sys.stdin)

580 model = data['model']['display_name']

581 directory = os.path.basename(data['workspace']['current_dir'])

582 cost = data.get('cost', {}).get('total_cost_usd', 0) or 0

583 pct = int(data.get('context_window', {}).get('used_percentage', 0) or 0)

584 duration_ms = data.get('cost', {}).get('total_duration_ms', 0) or 0

585 

586 CYAN, GREEN, YELLOW, RED, RESET = '\033[36m', '\033[32m', '\033[33m', '\033[31m', '\033[0m'

587 

588 bar_color = RED if pct >= 90 else YELLOW if pct >= 70 else GREEN

589 filled = pct // 10

590 bar = '█' * filled + '░' * (10 - filled)

591 

592 mins, secs = duration_ms // 60000, (duration_ms % 60000) // 1000

593 

594 try:

595 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True, stderr=subprocess.DEVNULL).strip()

596 branch = f" | 🌿 {branch}" if branch else ""

597 except:

598 branch = ""

599 

600 print(f"{CYAN}[{model}]{RESET} 📁 {directory}{branch}")

601 print(f"{bar_color}{bar}{RESET} {pct}% | {YELLOW}${cost:.2f}{RESET} | ⏱️ {mins}m {secs}s")

602 ```

603 

604 ```javascript Node.js theme={null}

605 #!/usr/bin/env node

606 const { execSync } = require('child_process');

607 const path = require('path');

608 

609 let input = '';

610 process.stdin.on('data', chunk => input += chunk);

611 process.stdin.on('end', () => {

612 const data = JSON.parse(input);

613 const model = data.model.display_name;

614 const dir = path.basename(data.workspace.current_dir);

615 const cost = data.cost?.total_cost_usd || 0;

616 const pct = Math.floor(data.context_window?.used_percentage || 0);

617 const durationMs = data.cost?.total_duration_ms || 0;

618 

619 const CYAN = '\x1b[36m', GREEN = '\x1b[32m', YELLOW = '\x1b[33m', RED = '\x1b[31m', RESET = '\x1b[0m';

620 

621 const barColor = pct >= 90 ? RED : pct >= 70 ? YELLOW : GREEN;

622 const filled = Math.floor(pct / 10);

623 const bar = '█'.repeat(filled) + '░'.repeat(10 - filled);

624 

625 const mins = Math.floor(durationMs / 60000);

626 const secs = Math.floor((durationMs % 60000) / 1000);

627 

628 let branch = '';

629 try {

630 branch = execSync('git branch --show-current', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();

631 branch = branch ? ` | 🌿 ${branch}` : '';

632 } catch {}

633 

634 console.log(`${CYAN}[${model}]${RESET} 📁 ${dir}${branch}`);

635 console.log(`${barColor}${bar}${RESET} ${pct}% | ${YELLOW}$${cost.toFixed(2)}${RESET} | ⏱️ ${mins}m ${secs}s`);

636 });

637 ```

638</CodeGroup>

639 

640### Link cliccabili

641 

642Questo esempio crea un link cliccabile al tuo repository GitHub. Legge l'URL del remote git, converte il formato SSH in HTTPS con `sed` e avvolge il nome del repository nei codici di escape OSC 8. Tieni premuto Cmd (macOS) o Ctrl (Windows/Linux) e fai clic per aprire il link nel tuo browser.

643 

644<Frame>

645 <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" />

646</Frame>

647 

648Ogni 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:

649 

650<CodeGroup>

651 ```bash Bash theme={null}

652 #!/bin/bash

653 input=$(cat)

654 

655 MODEL=$(echo "$input" | jq -r '.model.display_name')

656 

657 # Convert git SSH URL to HTTPS

658 REMOTE=$(git remote get-url origin 2>/dev/null | sed 's/git@github.com:/https:\/\/github.com\//' | sed 's/\.git$//')

659 

660 if [ -n "$REMOTE" ]; then

661 REPO_NAME=$(basename "$REMOTE")

662 # OSC 8 format: \e]8;;URL\a then TEXT then \e]8;;\a

663 # printf %b interprets escape sequences reliably across shells

664 printf '%b' "[$MODEL] 🔗 \e]8;;${REMOTE}\a${REPO_NAME}\e]8;;\a\n"

665 else

666 echo "[$MODEL]"

667 fi

668 ```

669 

670 ```python Python theme={null}

671 #!/usr/bin/env python3

672 import json, sys, subprocess, re, os

673 

674 data = json.load(sys.stdin)

675 model = data['model']['display_name']

676 

677 # Get git remote URL

678 try:

679 remote = subprocess.check_output(

680 ['git', 'remote', 'get-url', 'origin'],

681 stderr=subprocess.DEVNULL, text=True

682 ).strip()

683 # Convert SSH to HTTPS format

684 remote = re.sub(r'^git@github\.com:', 'https://github.com/', remote)

685 remote = re.sub(r'\.git$', '', remote)

686 repo_name = os.path.basename(remote)

687 # OSC 8 escape sequences

688 link = f"\033]8;;{remote}\a{repo_name}\033]8;;\a"

689 print(f"[{model}] 🔗 {link}")

690 except:

691 print(f"[{model}]")

692 ```

693 

694 ```javascript Node.js theme={null}

695 #!/usr/bin/env node

696 const { execSync } = require('child_process');

697 const path = require('path');

698 

699 let input = '';

700 process.stdin.on('data', chunk => input += chunk);

701 process.stdin.on('end', () => {

702 const data = JSON.parse(input);

703 const model = data.model.display_name;

704 

705 try {

706 let remote = execSync('git remote get-url origin', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();

707 // Convert SSH to HTTPS format

708 remote = remote.replace(/^git@github\.com:/, 'https://github.com/').replace(/\.git$/, '');

709 const repoName = path.basename(remote);

710 // OSC 8 escape sequences

711 const link = `\x1b]8;;${remote}\x07${repoName}\x1b]8;;\x07`;

712 console.log(`[${model}] 🔗 ${link}`);

713 } catch {

714 console.log(`[${model}]`);

715 }

716 });

717 ```

718</CodeGroup>

719 

720### Utilizzo del limite di velocità

721 

722Visualizza l'utilizzo del limite di velocità dell'abbonamento Claude.ai nella barra di stato. L'oggetto `rate_limits` contiene `five_hour` (finestra mobile di 5 ore) e `seven_day` (finestra settimanale). Ogni finestra fornisce `used_percentage` (0-100) e `resets_at` (secondi di epoca Unix quando la finestra si ripristina).

723 

724Questo campo è presente solo per gli abbonati Claude.ai (Pro/Max) dopo la prima risposta API. Ogni script gestisce il campo assente con eleganza:

725 

726<CodeGroup>

727 ```bash Bash theme={null}

728 #!/bin/bash

729 input=$(cat)

730 

731 MODEL=$(echo "$input" | jq -r '.model.display_name')

732 # "// empty" produces no output when rate_limits is absent

733 FIVE_H=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty')

734 WEEK=$(echo "$input" | jq -r '.rate_limits.seven_day.used_percentage // empty')

735 

736 LIMITS=""

737 [ -n "$FIVE_H" ] && LIMITS="5h: $(printf '%.0f' "$FIVE_H")%"

738 [ -n "$WEEK" ] && LIMITS="${LIMITS:+$LIMITS }7d: $(printf '%.0f' "$WEEK")%"

739 

740 [ -n "$LIMITS" ] && echo "[$MODEL] | $LIMITS" || echo "[$MODEL]"

741 ```

742 

743 ```python Python theme={null}

744 #!/usr/bin/env python3

745 import json, sys

746 

747 data = json.load(sys.stdin)

748 model = data['model']['display_name']

749 

750 parts = []

751 rate = data.get('rate_limits', {})

752 five_h = rate.get('five_hour', {}).get('used_percentage')

753 week = rate.get('seven_day', {}).get('used_percentage')

754 

755 if five_h is not None:

756 parts.append(f"5h: {five_h:.0f}%")

757 if week is not None:

758 parts.append(f"7d: {week:.0f}%")

759 

760 if parts:

761 print(f"[{model}] | {' '.join(parts)}")

762 else:

763 print(f"[{model}]")

764 ```

765 

766 ```javascript Node.js theme={null}

767 #!/usr/bin/env node

768 let input = '';

769 process.stdin.on('data', chunk => input += chunk);

770 process.stdin.on('end', () => {

771 const data = JSON.parse(input);

772 const model = data.model.display_name;

773 

774 const parts = [];

775 const fiveH = data.rate_limits?.five_hour?.used_percentage;

776 const week = data.rate_limits?.seven_day?.used_percentage;

777 

778 if (fiveH != null) parts.push(`5h: ${Math.round(fiveH)}%`);

779 if (week != null) parts.push(`7d: ${Math.round(week)}%`);

780 

781 console.log(parts.length ? `[${model}] | ${parts.join(' ')}` : `[${model}]`);

782 });

783 ```

784</CodeGroup>

785 

786### Memorizza nella cache le operazioni costose

787 

788Il tuo script della barra di stato viene eseguito frequentemente durante le sessioni attive. Comandi come `git status` o `git diff` possono essere lenti, specialmente in repository di grandi dimensioni. Questo esempio memorizza nella cache le informazioni git in un file temporaneo e le aggiorna solo ogni 5 secondi.

789 

790Il nome del file di cache deve essere stabile tra le invocazioni della barra di stato all'interno di una sessione, ma univoco tra le sessioni in modo che le sessioni simultanee in repository diversi non leggano lo stato git memorizzato nella cache l'uno dell'altro. Gli identificatori basati su processi come `$$`, `os.getpid()` o `process.pid` cambiano ad ogni invocazione e annullano la cache. Usa invece `session_id` dall'input JSON: è stabile per la durata di una sessione ed è univoco per sessione.

791 

792Ogni script verifica se il file di cache è mancante o più vecchio di 5 secondi prima di eseguire i comandi git:

793 

794<CodeGroup>

795 ```bash Bash theme={null}

796 #!/bin/bash

797 input=$(cat)

798 

799 MODEL=$(echo "$input" | jq -r '.model.display_name')

800 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

801 SESSION_ID=$(echo "$input" | jq -r '.session_id')

802 

803 CACHE_FILE="/tmp/statusline-git-cache-$SESSION_ID"

804 CACHE_MAX_AGE=5 # seconds

805 

806 cache_is_stale() {

807 [ ! -f "$CACHE_FILE" ] || \

808 # stat -f %m is macOS, stat -c %Y is Linux

809 [ $(($(date +%s) - $(stat -f %m "$CACHE_FILE" 2>/dev/null || stat -c %Y "$CACHE_FILE" 2>/dev/null || echo 0))) -gt $CACHE_MAX_AGE ]

810 }

811 

812 if cache_is_stale; then

813 if git rev-parse --git-dir > /dev/null 2>&1; then

814 BRANCH=$(git branch --show-current 2>/dev/null)

815 STAGED=$(git diff --cached --numstat 2>/dev/null | wc -l | tr -d ' ')

816 MODIFIED=$(git diff --numstat 2>/dev/null | wc -l | tr -d ' ')

817 echo "$BRANCH|$STAGED|$MODIFIED" > "$CACHE_FILE"

818 else

819 echo "||" > "$CACHE_FILE"

820 fi

821 fi

822 

823 IFS='|' read -r BRANCH STAGED MODIFIED < "$CACHE_FILE"

824 

825 if [ -n "$BRANCH" ]; then

826 echo "[$MODEL] 📁 ${DIR##*/} | 🌿 $BRANCH +$STAGED ~$MODIFIED"

827 else

828 echo "[$MODEL] 📁 ${DIR##*/}"

829 fi

830 ```

831 

832 ```python Python theme={null}

833 #!/usr/bin/env python3

834 import json, sys, subprocess, os, time

835 

836 data = json.load(sys.stdin)

837 model = data['model']['display_name']

838 directory = os.path.basename(data['workspace']['current_dir'])

839 session_id = data['session_id']

840 

841 CACHE_FILE = f"/tmp/statusline-git-cache-{session_id}"

842 CACHE_MAX_AGE = 5 # seconds

843 

844 def cache_is_stale():

845 if not os.path.exists(CACHE_FILE):

846 return True

847 return time.time() - os.path.getmtime(CACHE_FILE) > CACHE_MAX_AGE

848 

849 if cache_is_stale():

850 try:

851 subprocess.check_output(['git', 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL)

852 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True).strip()

853 staged = subprocess.check_output(['git', 'diff', '--cached', '--numstat'], text=True).strip()

854 modified = subprocess.check_output(['git', 'diff', '--numstat'], text=True).strip()

855 staged_count = len(staged.split('\n')) if staged else 0

856 modified_count = len(modified.split('\n')) if modified else 0

857 with open(CACHE_FILE, 'w') as f:

858 f.write(f"{branch}|{staged_count}|{modified_count}")

859 except:

860 with open(CACHE_FILE, 'w') as f:

861 f.write("||")

862 

863 with open(CACHE_FILE) as f:

864 branch, staged, modified = f.read().strip().split('|')

865 

866 if branch:

867 print(f"[{model}] 📁 {directory} | 🌿 {branch} +{staged} ~{modified}")

868 else:

869 print(f"[{model}] 📁 {directory}")

870 ```

871 

872 ```javascript Node.js theme={null}

873 #!/usr/bin/env node

874 const { execSync } = require('child_process');

875 const fs = require('fs');

876 const path = require('path');

877 

878 let input = '';

879 process.stdin.on('data', chunk => input += chunk);

880 process.stdin.on('end', () => {

881 const data = JSON.parse(input);

882 const model = data.model.display_name;

883 const dir = path.basename(data.workspace.current_dir);

884 const sessionId = data.session_id;

885 

886 const CACHE_FILE = `/tmp/statusline-git-cache-${sessionId}`;

887 const CACHE_MAX_AGE = 5; // seconds

888 

889 const cacheIsStale = () => {

890 if (!fs.existsSync(CACHE_FILE)) return true;

891 return (Date.now() / 1000) - fs.statSync(CACHE_FILE).mtimeMs / 1000 > CACHE_MAX_AGE;

892 };

893 

894 if (cacheIsStale()) {

895 try {

896 execSync('git rev-parse --git-dir', { stdio: 'ignore' });

897 const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();

898 const staged = execSync('git diff --cached --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

899 const modified = execSync('git diff --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

900 fs.writeFileSync(CACHE_FILE, `${branch}|${staged}|${modified}`);

901 } catch {

902 fs.writeFileSync(CACHE_FILE, '||');

903 }

904 }

905 

906 const [branch, staged, modified] = fs.readFileSync(CACHE_FILE, 'utf8').trim().split('|');

907 

908 if (branch) {

909 console.log(`[${model}] 📁 ${dir} | 🌿 ${branch} +${staged} ~${modified}`);

910 } else {

911 console.log(`[${model}] 📁 ${dir}`);

912 }

913 });

914 ```

915</CodeGroup>

916 

917### Configurazione Windows

918 

919Su Windows, Claude Code esegue i comandi della barra di stato tramite Git Bash quando Git Bash è installato, o tramite PowerShell quando Git Bash è assente. Per eseguire uno script PowerShell come barra di stato, invocalo tramite `powershell`; questo funziona da entrambi i shell:

920 

921<CodeGroup>

922 ```json settings.json theme={null}

923 {

924 "statusLine": {

925 "type": "command",

926 "command": "powershell -NoProfile -File C:/Users/username/.claude/statusline.ps1"

927 }

928 }

929 ```

930 

931 ```powershell statusline.ps1 theme={null}

932 $input_json = $input | Out-String | ConvertFrom-Json

933 $cwd = $input_json.cwd

934 $model = $input_json.model.display_name

935 $used = $input_json.context_window.used_percentage

936 $dirname = Split-Path $cwd -Leaf

937 

938 if ($used) {

939 Write-Host "$dirname [$model] ctx: $used%"

940 } else {

941 Write-Host "$dirname [$model]"

942 }

943 ```

944</CodeGroup>

945 

946Oppure, quando Git Bash è installato, esegui uno script Bash direttamente:

947 

948<CodeGroup>

949 ```json settings.json theme={null}

950 {

951 "statusLine": {

952 "type": "command",

953 "command": "~/.claude/statusline.sh"

954 }

955 }

956 ```

957 

958 ```bash statusline.sh theme={null}

959 #!/usr/bin/env bash

960 input=$(cat)

961 cwd=$(echo "$input" | grep -o '"cwd":"[^"]*"' | cut -d'"' -f4)

962 model=$(echo "$input" | grep -o '"display_name":"[^"]*"' | cut -d'"' -f4)

963 dirname="${cwd##*[/\\]}"

964 echo "$dirname [$model]"

965 ```

966</CodeGroup>

967 

968## Barre di stato dei subagent

969 

970L'impostazione `subagentStatusLine` renderizza un corpo di riga personalizzato per ogni [subagent](/it/sub-agents) mostrato nel pannello dell'agente sotto il prompt. Usalo per sostituire la riga predefinita `name · description · token count` con la tua formattazione.

971 

972```json theme={null}

973{

974 "subagentStatusLine": {

975 "type": "command",

976 "command": "~/.claude/subagent-statusline.sh"

977 }

978}

979```

980 

981Il comando viene eseguito una volta per tick di aggiornamento con tutte le righe dei subagent visibili passate come un singolo oggetto JSON su stdin. L'input include i [campi hook comuni](/it/hooks#common-input-fields) più `columns` (la larghezza di riga utilizzabile) e un array `tasks`, dove ogni task ha `id`, `name`, `type`, `status`, `description`, `label`, `startTime`, `tokenCount`, `tokenSamples` e `cwd`.

982 

983Scrivi una riga JSON su stdout per ogni riga che vuoi sovrascrivere, nella forma `{"id": "<task id>", "content": "<row body>"}`. La stringa `content` viene renderizzata così com'è, inclusi i colori ANSI e i hyperlink OSC 8. Ometti l'`id` di un task per mantenere il rendering predefinito per quella riga; emetti una stringa `content` vuota per nasconderla.

984 

985Gli stessi gate di fiducia e `disableAllHooks` che si applicano a `statusLine` si applicano qui. I plugin possono fornire un `subagentStatusLine` predefinito nel loro [`settings.json`](/it/plugins-reference#standard-plugin-layout).

986 

987## Suggerimenti

988 

989* **Testa con input simulato**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`

990* **Mantieni l'output breve**: la barra di stato ha una larghezza limitata, quindi l'output lungo potrebbe essere troncato o andare a capo in modo sgradevole

991* **Memorizza nella cache le operazioni lente**: il tuo script viene eseguito frequentemente durante le sessioni attive, quindi comandi come `git status` possono causare lag. Vedi l'[esempio di caching](#cache-expensive-operations) per come gestire questo.

992 

993Progetti della comunità come [ccstatusline](https://github.com/sirmalloc/ccstatusline) e [starship-claude](https://github.com/martinemde/starship-claude) forniscono configurazioni pre-costruite con temi e funzionalità aggiuntive.

994 

995## Risoluzione dei problemi

996 

997**La barra di stato non appare**

998 

999* Verifica che il tuo script sia eseguibile: `chmod +x ~/.claude/statusline.sh`

1000* Controlla che il tuo script stampi su stdout, non su stderr

1001* Esegui il tuo script manualmente per verificare che produca output

1002* Se `disableAllHooks` è impostato su `true` nelle tue impostazioni, anche la barra di stato è disabilitata. Rimuovi questa impostazione o impostala su `false` per riabilitarla.

1003* Esegui `claude --debug` per registrare il codice di uscita e stderr dalla prima invocazione della barra di stato in una sessione

1004* Chiedi a Claude di leggere il tuo file di impostazioni ed eseguire il comando `statusLine` direttamente per far emergere gli errori

1005 

1006**La barra di stato mostra `--` o valori vuoti**

1007 

1008* I campi potrebbero essere `null` prima che la prima risposta API si completi

1009* Gestisci i valori null nel tuo script con fallback come `// 0` in jq

1010* Riavvia Claude Code se i valori rimangono vuoti dopo più messaggi

1011 

1012**La percentuale di contesto mostra valori inaspettati**

1013 

1014* Usa `used_percentage` per uno stato di contesto accurato piuttosto che i totali cumulativi

1015* `total_input_tokens` e `total_output_tokens` sono cumulativi nella sessione e potrebbero superare la dimensione della finestra di contesto

1016* La percentuale di contesto potrebbe differire dall'output `/context` a causa di quando ciascuno viene calcolato

1017 

1018**I link OSC 8 non sono cliccabili**

1019 

1020* Verifica che il tuo terminale supporti i hyperlink OSC 8 (iTerm2, Kitty, WezTerm)

1021 

1022* Terminal.app non supporta i link cliccabili

1023 

1024* Se il testo del link appare ma non è cliccabile, Claude Code potrebbe non aver rilevato il supporto dei hyperlink nel tuo terminale. Questo accade comunemente con Windows Terminal e altri emulatori non nell'elenco di rilevamento automatico. Imposta la variabile di ambiente `FORCE_HYPERLINK` per sovrascrivere il rilevamento prima di avviare Claude Code:

1025 

1026 ```bash theme={null}

1027 FORCE_HYPERLINK=1 claude

1028 ```

1029 

1030 In PowerShell, imposta la variabile nella sessione corrente prima:

1031 

1032 ```powershell theme={null}

1033 $env:FORCE_HYPERLINK = "1"; claude

1034 ```

1035 

1036* Le sessioni SSH e tmux potrebbero eliminare le sequenze OSC a seconda della configurazione

1037 

1038* Se le sequenze di escape appaiono come testo letterale come `\e]8;;`, usa `printf '%b'` invece di `echo -e` per una gestione più affidabile degli escape

1039 

1040**Glitch di visualizzazione con sequenze di escape**

1041 

1042* Le sequenze di escape complesse (colori ANSI, link OSC 8) possono occasionalmente causare output corrotto se si sovrappongono ad altri aggiornamenti dell'interfaccia utente

1043* Se vedi testo corrotto, prova a semplificare il tuo script in output di testo semplice

1044* Le barre di stato multi-riga con codici di escape sono più soggette a problemi di rendering rispetto al testo semplice su una sola riga

1045 

1046**Fiducia nell'area di lavoro richiesta**

1047 

1048* Il comando della barra di stato viene eseguito solo se hai accettato la finestra di dialogo di fiducia dell'area di lavoro per la directory corrente. Poiché `statusLine` esegue un comando di shell, richiede la stessa accettazione di fiducia di hook e altre impostazioni che eseguono shell.

1049* Se la fiducia non è accettata, vedrai la notifica `statusline skipped · restart to fix` invece dell'output della tua barra di stato. Riavvia Claude Code e accetta il prompt di fiducia per abilitarla.

1050 

1051**Errori di script o blocchi**

1052 

1053* Gli script che escono con codici diversi da zero o non producono output causano il vuoto della barra di stato

1054* Gli script lenti bloccano l'aggiornamento della barra di stato fino al completamento. Mantieni gli script veloci per evitare output obsoleto.

1055* Se un nuovo aggiornamento si attiva mentre uno script lento è in esecuzione, lo script in corso viene annullato

1056* Testa il tuo script indipendentemente con input simulato prima di configurarlo

1057 

1058**Le notifiche condividono la riga della barra di stato**

1059 

1060* Le notifiche di sistema come errori del server MCP e aggiornamenti automatici vengono visualizzate sul lato destro della stessa riga della tua barra di stato. Le notifiche transitorie come l'avviso di contesto basso si cicla anche attraverso questa area.

1061* L'abilitazione della modalità verbose aggiunge un contatore di token a questa area

1062* Su terminali stretti, queste notifiche potrebbero troncare l'output della tua barra di stato

sub-agents.md +1011 −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 subagent personalizzati

6 

7> Creare e utilizzare subagent AI specializzati in Claude Code per flussi di lavoro specifici di attività e una migliore gestione del contesto.

8 

9I subagent sono assistenti AI specializzati che gestiscono tipi specifici di attività. Utilizzi uno quando un'attività secondaria allagherebbe la sua conversazione principale con risultati di ricerca, log o contenuti di file che non farà più riferimento: il subagent svolge quel lavoro nel suo proprio contesto e restituisce solo il riassunto. Definisca un subagent personalizzato quando continua a generare lo stesso tipo di worker con le stesse istruzioni.

10 

11Ogni subagent viene eseguito nella propria finestra di contesto con un prompt di sistema personalizzato, accesso a strumenti specifici e autorizzazioni indipendenti. Quando Claude incontra un'attività che corrisponde alla descrizione di un subagent, la delega a quel subagent, che lavora in modo indipendente e restituisce i risultati. Per vedere il risparmio di contesto in pratica, la [visualizzazione della finestra di contesto](/it/context-window) illustra una sessione in cui un subagent gestisce la ricerca nella sua finestra separata.

12 

13<Note>

14 Se ha bisogno di più agenti che lavorano in parallelo e comunicano tra loro, consulti invece [agent teams](/it/agent-teams). I subagent lavorano all'interno di una singola sessione; i team di agenti coordinano tra sessioni separate.

15</Note>

16 

17I subagent la aiutano a:

18 

19* **Preservare il contesto** mantenendo l'esplorazione e l'implementazione fuori dalla sua conversazione principale

20* **Applicare vincoli** limitando quali strumenti un subagent può utilizzare

21* **Riutilizzare configurazioni** tra progetti con subagent a livello utente

22* **Specializzare il comportamento** con prompt di sistema focalizzati per domini specifici

23* **Controllare i costi** instradando le attività a modelli più veloci e economici come Haiku

24 

25Claude utilizza la descrizione di ogni subagent per decidere quando delegare le attività. Quando crea un subagent, scriva una descrizione chiara in modo che Claude sappia quando utilizzarlo.

26 

27Claude Code include diversi subagent integrati come **Explore**, **Plan** e **general-purpose**. Può anche creare subagent personalizzati per gestire attività specifiche. Questa pagina copre:

28 

29* [Subagent integrati](#built-in-subagents)

30* [Come creare i suoi](#quickstart-create-your-first-subagent)

31* [Opzioni di configurazione complete](#configure-subagents)

32* [Modelli per lavorare con i subagent](#work-with-subagents)

33* [Subagent di fork](#fork-the-current-conversation)

34* [Subagent di esempio](#example-subagents)

35 

36## Subagent integrati

37 

38Claude Code include subagent integrati che Claude utilizza automaticamente quando appropriato. Ognuno eredita le autorizzazioni della conversazione principale con restrizioni di strumenti aggiuntive.

39 

40<Tabs>

41 <Tab title="Explore">

42 Un agente veloce e di sola lettura ottimizzato per la ricerca e l'analisi delle basi di codice.

43 

44 * **Model**: Haiku (veloce, bassa latenza)

45 * **Tools**: Strumenti di sola lettura (accesso negato agli strumenti Write e Edit)

46 * **Purpose**: Scoperta di file, ricerca di codice, esplorazione della base di codice

47 

48 Claude delega a Explore quando ha bisogno di cercare o comprendere una base di codice senza apportare modifiche. Questo mantiene i risultati dell'esplorazione fuori dal contesto della sua conversazione principale.

49 

50 Quando invoca Explore, Claude specifica un livello di accuratezza: **quick** per ricerche mirate, **medium** per esplorazione equilibrata, o **very thorough** per analisi completa.

51 </Tab>

52 

53 <Tab title="Plan">

54 Un agente di ricerca utilizzato durante la [plan mode](/it/common-workflows#use-plan-mode-for-safe-code-analysis) per raccogliere contesto prima di presentare un piano.

55 

56 * **Model**: Eredita dalla conversazione principale

57 * **Tools**: Strumenti di sola lettura (accesso negato agli strumenti Write e Edit)

58 * **Purpose**: Ricerca della base di codice per la pianificazione

59 

60 Quando è in plan mode e Claude ha bisogno di comprendere la sua base di codice, delega la ricerca al subagent Plan. Questo previene l'annidamento infinito (i subagent non possono generare altri subagent) mentre raccoglie comunque il contesto necessario.

61 </Tab>

62 

63 <Tab title="General-purpose">

64 Un agente capace per attività complesse e multi-step che richiedono sia esplorazione che azione.

65 

66 * **Model**: Eredita dalla conversazione principale

67 * **Tools**: Tutti gli strumenti

68 * **Purpose**: Ricerca complessa, operazioni multi-step, modifiche del codice

69 

70 Claude delega a general-purpose quando l'attività richiede sia esplorazione che modifica, ragionamento complesso per interpretare i risultati, o più step dipendenti.

71 </Tab>

72 

73 <Tab title="Other">

74 Claude Code include agenti helper aggiuntivi per attività specifiche. Questi vengono generalmente invocati automaticamente, quindi non ha bisogno di utilizzarli direttamente.

75 

76 | Agent | Model | Quando Claude lo utilizza |

77 | :---------------- | :----- | :---------------------------------------------------------------- |

78 | statusline-setup | Sonnet | Quando esegue `/statusline` per configurare la sua linea di stato |

79 | Claude Code Guide | Haiku | Quando fa domande sulle funzionalità di Claude Code |

80 </Tab>

81</Tabs>

82 

83Oltre a questi subagent integrati, può creare i suoi con prompt personalizzati, restrizioni di strumenti, modalità di autorizzazione, hooks e skills. Le sezioni seguenti mostrano come iniziare e personalizzare i subagent.

84 

85## Quickstart: crea il suo primo subagent

86 

87I subagent sono definiti in file Markdown con frontmatter YAML. Può [crearli manualmente](#write-subagent-files) o utilizzare il comando `/agents`.

88 

89Questa procedura la guida attraverso la creazione di un subagent a livello utente con il comando `/agents`. Il subagent esamina il codice e suggerisce miglioramenti per la base di codice.

90 

91<Steps>

92 <Step title="Apra l'interfaccia dei subagent">

93 In Claude Code, esegua:

94 

95 ```text theme={null}

96 /agents

97 ```

98 </Step>

99 

100 <Step title="Scelga una posizione">

101 Selezioni la scheda **Library**, selezioni **Create new agent**, quindi scelga **Personal**. Questo salva il subagent in `~/.claude/agents/` in modo che sia disponibile in tutti i suoi progetti.

102 </Step>

103 

104 <Step title="Generi con Claude">

105 Selezioni **Generate with Claude**. Quando richiesto, descriva il subagent:

106 

107 ```text theme={null}

108 A code improvement agent that scans files and suggests improvements

109 for readability, performance, and best practices. It should explain

110 each issue, show the current code, and provide an improved version.

111 ```

112 

113 Claude genera l'identificatore, la descrizione e il prompt di sistema per lei.

114 </Step>

115 

116 <Step title="Selezioni gli strumenti">

117 Per un revisore di sola lettura, deselezioni tutto tranne **Read-only tools**. Se mantiene tutti gli strumenti selezionati, il subagent eredita tutti gli strumenti disponibili per la conversazione principale.

118 </Step>

119 

120 <Step title="Selezioni il modello">

121 Scelga quale modello utilizza il subagent. Per questo agente di esempio, selezioni **Sonnet**, che bilancia capacità e velocità per analizzare i modelli di codice.

122 </Step>

123 

124 <Step title="Scelga un colore">

125 Scelga un colore di sfondo per il subagent. Questo la aiuta a identificare quale subagent è in esecuzione nell'interfaccia utente.

126 </Step>

127 

128 <Step title="Configuri la memoria">

129 Selezioni **User scope** per dare al subagent una [directory di memoria persistente](#enable-persistent-memory) in `~/.claude/agent-memory/`. Il subagent utilizza questo per accumulare intuizioni tra le conversazioni, come modelli di base di codice e problemi ricorrenti. Selezioni **None** se non vuole che il subagent persista gli insegnamenti.

130 </Step>

131 

132 <Step title="Salvi e provi">

133 Esamini il riepilogo della configurazione. Prema `s` o `Enter` per salvare, oppure prema `e` per salvare e modificare il file nel suo editor. Il subagent è disponibile immediatamente. Lo provi:

134 

135 ```text theme={null}

136 Use the code-improver agent to suggest improvements in this project

137 ```

138 

139 Claude delega al suo nuovo subagent, che scansiona la base di codice e restituisce suggerimenti di miglioramento.

140 </Step>

141</Steps>

142 

143Ora ha un subagent che può utilizzare in qualsiasi progetto sulla sua macchina per analizzare le basi di codice e suggerire miglioramenti.

144 

145Può anche creare subagent manualmente come file Markdown, definirli tramite flag CLI, o distribuirli tramite plugin. Le sezioni seguenti coprono tutte le opzioni di configurazione.

146 

147## Configuri i subagent

148 

149### Usi il comando /agents

150 

151Il comando `/agents` apre un'interfaccia a schede per gestire i subagent. La scheda **Running** mostra i subagent live e le consente di aprirli o fermarli. La scheda **Library** le consente di:

152 

153* Visualizzare tutti i subagent disponibili (integrati, utente, progetto e plugin)

154* Creare nuovi subagent con configurazione guidata o generazione Claude

155* Modificare la configurazione del subagent esistente e l'accesso agli strumenti

156* Eliminare subagent personalizzati

157* Vedere quali subagent sono attivi quando esistono duplicati

158 

159Questo è il modo consigliato per creare e gestire i subagent. Per la creazione manuale o l'automazione, può anche aggiungere file subagent direttamente.

160 

161Per elencare tutti i subagent configurati dalla riga di comando senza avviare una sessione interattiva, esegua `claude agents`. Questo mostra gli agenti raggruppati per fonte e indica quali sono sovrascritti da definizioni di priorità più alta.

162 

163### Scelga l'ambito del subagent

164 

165I subagent sono file Markdown con frontmatter YAML. Li archivi in posizioni diverse a seconda dell'ambito. Quando più subagent condividono lo stesso nome, la posizione con priorità più alta vince.

166 

167| Location | Scope | Priority | Come creare |

168| :----------------------------- | :------------------------- | :---------- | :--------------------------------------------------- |

169| Managed settings | Organization-wide | 1 (massima) | Distribuito tramite [managed settings](/it/settings) |

170| Flag CLI `--agents` | Sessione corrente | 2 | Passa JSON quando avvia Claude Code |

171| `.claude/agents/` | Progetto corrente | 3 | Interattivo o manuale |

172| `~/.claude/agents/` | Tutti i suoi progetti | 4 | Interattivo o manuale |

173| Directory `agents/` del plugin | Dove il plugin è abilitato | 5 (minima) | Installato con [plugins](/it/plugins) |

174 

175I **subagent di progetto** (`.claude/agents/`) sono ideali per subagent specifici di una base di codice. Li archivi nel controllo della versione in modo che il suo team possa utilizzarli e migliorarli in modo collaborativo.

176 

177I subagent di progetto vengono scoperti camminando verso l'alto dalla directory di lavoro corrente. Le directory aggiunte con `--add-dir` [concedono solo l'accesso ai file](/it/permissions#additional-directories-grant-file-access-not-configuration) e non vengono scansionate per i subagent. Per condividere i subagent tra progetti, usi `~/.claude/agents/` o un [plugin](/it/plugins).

178 

179I **subagent utente** (`~/.claude/agents/`) sono subagent personali disponibili in tutti i suoi progetti.

180 

181I **subagent definiti da CLI** vengono passati come JSON quando avvia Claude Code. Esistono solo per quella sessione e non vengono salvati su disco, rendendoli utili per test rapidi o script di automazione. Può definire più subagent in una singola chiamata `--agents`:

182 

183```bash theme={null}

184claude --agents '{

185 "code-reviewer": {

186 "description": "Expert code reviewer. Use proactively after code changes.",

187 "prompt": "You are a senior code reviewer. Focus on code quality, security, and best practices.",

188 "tools": ["Read", "Grep", "Glob", "Bash"],

189 "model": "sonnet"

190 },

191 "debugger": {

192 "description": "Debugging specialist for errors and test failures.",

193 "prompt": "You are an expert debugger. Analyze errors, identify root causes, and provide fixes."

194 }

195}'

196```

197 

198Il flag `--agents` accetta JSON con gli stessi campi [frontmatter](#supported-frontmatter-fields) dei subagent basati su file: `description`, `prompt`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `isolation` e `color`. Usi `prompt` per il prompt di sistema, equivalente al corpo markdown nei subagent basati su file.

199 

200I **subagent gestiti** vengono distribuiti dagli amministratori dell'organizzazione. Posizioni file markdown in `.claude/agents/` all'interno della [directory managed settings](/it/settings#settings-files), utilizzando lo stesso formato frontmatter dei subagent di progetto e utente. Le definizioni gestite hanno la precedenza sui subagent di progetto e utente con lo stesso nome.

201 

202I **subagent plugin** provengono da [plugins](/it/plugins) che ha installato. Appaiono in `/agents` insieme ai suoi subagent personalizzati. Consulti il [riferimento dei componenti plugin](/it/plugins-reference#agents) per i dettagli sulla creazione di subagent plugin.

203 

204<Note>

205 Per motivi di sicurezza, i subagent plugin non supportano i campi frontmatter `hooks`, `mcpServers` o `permissionMode`. Questi campi vengono ignorati durante il caricamento degli agenti da un plugin. Se ne ha bisogno, copi il file dell'agente in `.claude/agents/` o `~/.claude/agents/`. Può anche aggiungere regole a [`permissions.allow`](/it/settings#permission-settings) in `settings.json` o `settings.local.json`, ma queste regole si applicano all'intera sessione, non solo al subagent plugin.

206</Note>

207 

208Le definizioni di subagent da uno qualsiasi di questi ambiti sono anche disponibili per [agent teams](/it/agent-teams#use-subagent-definitions-for-teammates): quando genera un compagno di squadra, può fare riferimento a un tipo di subagent e il compagno di squadra utilizza i suoi `tools` e `model`, con il corpo della definizione aggiunto al prompt di sistema del compagno di squadra come istruzioni aggiuntive. Consulti [agent teams](/it/agent-teams#use-subagent-definitions-for-teammates) per quali campi frontmatter si applicano su quel percorso.

209 

210### Scriva file subagent

211 

212I file subagent utilizzano frontmatter YAML per la configurazione, seguito dal prompt di sistema in Markdown:

213 

214<Note>

215 I subagent vengono caricati all'avvio della sessione. Se crea un subagent aggiungendo manualmente un file, riavvii la sua sessione o usi `/agents` per caricarlo immediatamente.

216</Note>

217 

218```markdown theme={null}

219---

220name: code-reviewer

221description: Reviews code for quality and best practices

222tools: Read, Glob, Grep

223model: sonnet

224---

225 

226You are a code reviewer. When invoked, analyze the code and provide

227specific, actionable feedback on quality, security, and best practices.

228```

229 

230Il frontmatter definisce i metadati e la configurazione del subagent. Il corpo diventa il prompt di sistema che guida il comportamento del subagent. I subagent ricevono solo questo prompt di sistema (più dettagli di base sull'ambiente come la directory di lavoro), non il prompt di sistema completo di Claude Code.

231 

232Un subagent inizia nella directory di lavoro corrente della conversazione principale. All'interno di un subagent, i comandi `cd` non persistono tra le chiamate dello strumento Bash o PowerShell e non influenzano la directory di lavoro della conversazione principale. Per dare al subagent una copia isolata del repository, imposti [`isolation: worktree`](#supported-frontmatter-fields).

233 

234#### Campi frontmatter supportati

235 

236I seguenti campi possono essere utilizzati nel frontmatter YAML. Solo `name` e `description` sono obbligatori.

237 

238| Field | Required | Description |

239| :---------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

240| `name` | Yes | Identificatore univoco utilizzando lettere minuscole e trattini |

241| `description` | Yes | Quando Claude dovrebbe delegare a questo subagent |

242| `tools` | No | [Strumenti](#available-tools) che il subagent può utilizzare. Eredita tutti gli strumenti se omesso |

243| `disallowedTools` | No | Strumenti da negare, rimossi dall'elenco ereditato o specificato |

244| `model` | No | [Modello](#choose-a-model) da utilizzare: `sonnet`, `opus`, `haiku`, un ID modello completo (ad esempio, `claude-opus-4-7`), o `inherit`. Predefinito: `inherit` |

245| `permissionMode` | No | [Modalità di autorizzazione](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, o `plan`. Ignorato per [subagent plugin](#choose-the-subagent-scope) |

246| `maxTurns` | No | Numero massimo di turni agentici prima che il subagent si fermi |

247| `skills` | No | [Skills](/it/skills) da caricare nel contesto del subagent all'avvio. Il contenuto completo della skill viene iniettato, non solo reso disponibile per l'invocazione. I subagent non ereditano skills dalla conversazione principale |

248| `mcpServers` | No | [MCP servers](/it/mcp) disponibili per questo subagent. Ogni voce è un nome di server che fa riferimento a un server già configurato (ad esempio, `"slack"`) o una definizione inline con il nome del server come chiave e una [configurazione MCP server](/it/mcp#installing-mcp-servers) completa come valore. Ignorato per [subagent plugin](#choose-the-subagent-scope) |

249| `hooks` | No | [Lifecycle hooks](#define-hooks-for-subagents) limitati a questo subagent. Ignorato per [subagent plugin](#choose-the-subagent-scope) |

250| `memory` | No | [Ambito di memoria persistente](#enable-persistent-memory): `user`, `project`, o `local`. Abilita l'apprendimento tra sessioni |

251| `background` | No | Imposta su `true` per eseguire sempre questo subagent come [background task](#run-subagents-in-foreground-or-background). Predefinito: `false` |

252| `effort` | No | Livello di sforzo quando questo subagent è attivo. Sostituisce il livello di sforzo della sessione. Predefinito: eredita dalla sessione. Opzioni: `low`, `medium`, `high`, `xhigh`, `max`; i livelli disponibili dipendono dal modello |

253| `isolation` | No | Imposta su `worktree` per eseguire il subagent in un [git worktree](/it/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) temporaneo, dandogli una copia isolata del repository. Il worktree viene automaticamente pulito se il subagent non apporta modifiche |

254| `color` | No | Colore di visualizzazione per il subagent nell'elenco attività e nella trascrizione. Accetta `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, o `cyan` |

255| `initialPrompt` | No | Auto-inviato come primo turno utente quando questo agente viene eseguito come agente della sessione principale (tramite `--agent` o l'impostazione `agent`). [Commands](/it/commands) e [skills](/it/skills) vengono elaborati. Anteposto a qualsiasi prompt fornito dall'utente |

256 

257### Scelga un modello

258 

259Il campo `model` controlla quale [modello AI](/it/model-config) utilizza il subagent:

260 

261* **Alias modello**: Usi uno degli alias disponibili: `sonnet`, `opus`, o `haiku`

262* **ID modello completo**: Usi un ID modello completo come `claude-opus-4-7` o `claude-sonnet-4-6`. Accetta gli stessi valori del flag `--model`

263* **inherit**: Usi lo stesso modello della conversazione principale

264* **Omesso**: Se non specificato, predefinito a `inherit` (usa lo stesso modello della conversazione principale)

265 

266Quando Claude invoca un subagent, può anche passare un parametro `model` per quella specifica invocazione. Claude Code risolve il modello del subagent in questo ordine:

267 

2681. La variabile di ambiente [`CLAUDE_CODE_SUBAGENT_MODEL`](/it/model-config#environment-variables), se impostata

2692. Il parametro `model` per invocazione

2703. Il frontmatter `model` della definizione del subagent

2714. Il modello della conversazione principale

272 

273### Controlli le capacità del subagent

274 

275Può controllare cosa possono fare i subagent attraverso l'accesso agli strumenti, le modalità di autorizzazione e le regole condizionali.

276 

277#### Strumenti disponibili

278 

279I subagent possono utilizzare qualsiasi [strumento interno](/it/tools-reference) di Claude Code. Per impostazione predefinita, i subagent ereditano tutti gli strumenti dalla conversazione principale, inclusi gli strumenti MCP.

280 

281Per limitare gli strumenti, usi il campo `tools` (allowlist) o il campo `disallowedTools` (denylist). Questo esempio usa `tools` per consentire esclusivamente Read, Grep, Glob e Bash. Il subagent non può modificare file, scrivere file o utilizzare alcuno strumento MCP:

282 

283```yaml theme={null}

284---

285name: safe-researcher

286description: Research agent with restricted capabilities

287tools: Read, Grep, Glob, Bash

288---

289```

290 

291Questo esempio usa `disallowedTools` per ereditare ogni strumento dalla conversazione principale tranne Write e Edit. Il subagent mantiene Bash, strumenti MCP e tutto il resto:

292 

293```yaml theme={null}

294---

295name: no-writes

296description: Inherits every tool except file writes

297disallowedTools: Write, Edit

298---

299```

300 

301Se entrambi sono impostati, `disallowedTools` viene applicato per primo, quindi `tools` viene risolto rispetto al pool rimanente. Uno strumento elencato in entrambi viene rimosso.

302 

303#### Limiti quali subagent possono essere generati

304 

305Quando un agente viene eseguito come thread principale con `claude --agent`, può generare subagent utilizzando lo strumento Agent. Per limitare quali tipi di subagent può generare, usi la sintassi `Agent(agent_type)` nel campo `tools`.

306 

307<Note>Nella versione 2.1.63, lo strumento Task è stato rinominato in Agent. I riferimenti `Task(...)` esistenti nelle impostazioni e nelle definizioni degli agenti continuano a funzionare come alias.</Note>

308 

309```yaml theme={null}

310---

311name: coordinator

312description: Coordinates work across specialized agents

313tools: Agent(worker, researcher), Read, Bash

314---

315```

316 

317Questo è un allowlist: solo i subagent `worker` e `researcher` possono essere generati. Se l'agente tenta di generare qualsiasi altro tipo, la richiesta fallisce e l'agente vede solo i tipi consentiti nel suo prompt. Per bloccare agenti specifici mentre consente tutti gli altri, usi [`permissions.deny`](#disable-specific-subagents) invece.

318 

319Per consentire la generazione di qualsiasi subagent senza restrizioni, usi `Agent` senza parentesi:

320 

321```yaml theme={null}

322tools: Agent, Read, Bash

323```

324 

325Se `Agent` è completamente omesso dall'elenco `tools`, l'agente non può generare alcun subagent. Questa restrizione si applica solo agli agenti eseguiti come thread principale con `claude --agent`. I subagent non possono generare altri subagent, quindi `Agent(agent_type)` non ha effetto nelle definizioni dei subagent.

326 

327#### Limiti i server MCP a un subagent

328 

329Usi il campo `mcpServers` per dare a un subagent accesso ai server [MCP](/it/mcp) che non sono disponibili nella conversazione principale. I server inline definiti qui vengono connessi quando il subagent inizia e disconnessi quando finisce. I riferimenti stringa condividono la connessione della sessione principale.

330 

331<Note>

332 Il campo `mcpServers` si applica in entrambi i contesti in cui un file agente può essere eseguito:

333 

334 * Come subagent, generato tramite lo strumento Agent o un @-mention

335 * Come sessione principale, avviato con [`--agent`](#invoke-subagents-explicitly) o l'impostazione `agent`

336 

337 Quando l'agente è la sessione principale, le definizioni di server inline si connettono all'avvio insieme ai server da [`.mcp.json`](/it/mcp) e ai file di impostazioni.

338</Note>

339 

340Ogni voce nell'elenco è una definizione di server inline o una stringa che fa riferimento a un server MCP già configurato nella sua sessione:

341 

342```yaml theme={null}

343---

344name: browser-tester

345description: Tests features in a real browser using Playwright

346mcpServers:

347 # Inline definition: scoped to this subagent only

348 - playwright:

349 type: stdio

350 command: npx

351 args: ["-y", "@playwright/mcp@latest"]

352 # Reference by name: reuses an already-configured server

353 - github

354---

355 

356Use the Playwright tools to navigate, screenshot, and interact with pages.

357```

358 

359Le definizioni inline utilizzano lo stesso schema delle voci del server `.mcp.json` (`stdio`, `http`, `sse`, `ws`), con chiave il nome del server.

360 

361Per mantenere un server MCP fuori dalla conversazione principale e evitare che le descrizioni dei suoi strumenti consumino contesto lì, lo definisca inline qui piuttosto che in `.mcp.json`. Il subagent ottiene gli strumenti; la conversazione principale no.

362 

363#### Modalità di autorizzazione

364 

365Il campo `permissionMode` controlla come il subagent gestisce i prompt di autorizzazione. I subagent ereditano il contesto di autorizzazione dalla conversazione principale e possono sovrascrivere la modalità, tranne quando la modalità principale ha la precedenza come descritto di seguito.

366 

367| Mode | Behavior |

368| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------- |

369| `default` | Controllo di autorizzazione standard con prompt |

370| `acceptEdits` | Auto-accetta modifiche ai file e comandi comuni del filesystem per i percorsi nella directory di lavoro o `additionalDirectories` |

371| `auto` | [Auto mode](/it/permission-modes#eliminate-prompts-with-auto-mode): un classificatore AI valuta ogni chiamata di strumento |

372| `dontAsk` | Auto-nega prompt di autorizzazione (gli strumenti esplicitamente consentiti continuano a funzionare) |

373| `bypassPermissions` | Salta i prompt di autorizzazione |

374| `plan` | Plan mode (esplorazione di sola lettura) |

375 

376<Warning>

377 Usi `bypassPermissions` con cautela. Salta i prompt di autorizzazione, consentendo al subagent di eseguire operazioni senza approvazione, incluse le scritture in `.git`, `.claude`, `.vscode`, `.idea` e `.husky`. Le rimozioni della directory root e home come `rm -rf /` continuano a richiedere come interruttore di protezione. Consulti [permission modes](/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) per i dettagli.

378</Warning>

379 

380Se il principale utilizza `bypassPermissions` o `acceptEdits`, questo ha la precedenza e non può essere sovrascritto. Se il principale utilizza [auto mode](/it/permission-modes#eliminate-prompts-with-auto-mode), il subagent eredita auto mode e qualsiasi `permissionMode` nel suo frontmatter viene ignorato: il classificatore valuta le chiamate di strumenti del subagent con le stesse regole di blocco e consentimento della sessione principale.

381 

382#### Precarichi skills nei subagent

383 

384Usi il campo `skills` per iniettare il contenuto della skill nel contesto del subagent all'avvio. Questo dà al subagent conoscenza del dominio senza richiedere che scopra e carichi le skills durante l'esecuzione.

385 

386```yaml theme={null}

387---

388name: api-developer

389description: Implement API endpoints following team conventions

390skills:

391 - api-conventions

392 - error-handling-patterns

393---

394 

395Implement API endpoints. Follow the conventions and patterns from the preloaded skills.

396```

397 

398Il contenuto completo di ogni skill viene iniettato nel contesto del subagent, non solo reso disponibile per l'invocazione. I subagent non ereditano skills dalla conversazione principale; deve elencarle esplicitamente.

399 

400Non può precaricare skills che impostano [`disable-model-invocation: true`](/it/skills#control-who-invokes-a-skill), poiché il precaricamento attinge dallo stesso insieme di skills che Claude può invocare. Se una skill elencata è mancante o disabilitata, Claude Code la salta e registra un avviso nel log di debug.

401 

402<Note>

403 Questo è l'inverso di [eseguire una skill in un subagent](/it/skills#run-skills-in-a-subagent). Con `skills` in un subagent, il subagent controlla il prompt di sistema e carica il contenuto della skill. Con `context: fork` in una skill, il contenuto della skill viene iniettato nell'agente che specifica. Entrambi utilizzano lo stesso sistema sottostante.

404</Note>

405 

406#### Abiliti memoria persistente

407 

408Il campo `memory` dà al subagent una directory persistente che sopravvive tra le conversazioni. Il subagent utilizza questa directory per costruire conoscenza nel tempo, come modelli di base di codice, intuizioni di debug e decisioni architettoniche.

409 

410```yaml theme={null}

411---

412name: code-reviewer

413description: Reviews code for quality and best practices

414memory: user

415---

416 

417You are a code reviewer. As you review code, update your agent memory with

418patterns, conventions, and recurring issues you discover.

419```

420 

421Scelga un ambito in base a quanto ampiamente la memoria dovrebbe applicarsi:

422 

423| Scope | Location | Usi quando |

424| :-------- | :-------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |

425| `user` | `~/.claude/agent-memory/<name-of-agent>/` | il subagent dovrebbe ricordare gli insegnamenti tra tutti i progetti |

426| `project` | `.claude/agent-memory/<name-of-agent>/` | la conoscenza del subagent è specifica del progetto e condivisibile tramite controllo della versione |

427| `local` | `.claude/agent-memory-local/<name-of-agent>/` | la conoscenza del subagent è specifica del progetto ma non dovrebbe essere archiviata nel controllo della versione |

428 

429Quando la memoria è abilitata:

430 

431* Il prompt di sistema del subagent include istruzioni per leggere e scrivere nella directory di memoria.

432* Il prompt di sistema del subagent include anche le prime 200 righe o 25KB di `MEMORY.md` nella directory di memoria, a seconda di quale sia minore, con istruzioni per curare `MEMORY.md` se supera quel limite.

433* Gli strumenti Read, Write e Edit vengono automaticamente abilitati in modo che il subagent possa gestire i suoi file di memoria.

434 

435##### Suggerimenti per la memoria persistente

436 

437* `project` è l'ambito predefinito consigliato. Lo rende condivisibile tramite controllo della versione. Usi `user` quando la conoscenza del subagent è ampiamente applicabile tra progetti, o `local` quando la conoscenza non dovrebbe essere archiviata nel controllo della versione.

438* Chieda al subagent di consultare la sua memoria prima di iniziare il lavoro: "Review this PR, and check your memory for patterns you've seen before."

439* Chieda al subagent di aggiornare la sua memoria dopo aver completato un'attività: "Now that you're done, save what you learned to your memory." Nel tempo, questo costruisce una base di conoscenza che rende il subagent più efficace.

440* Includa istruzioni di memoria direttamente nel file markdown del subagent in modo che mantenga proattivamente la sua stessa base di conoscenza:

441 

442 ```markdown theme={null}

443 Update your agent memory as you discover codepaths, patterns, library

444 locations, and key architectural decisions. This builds up institutional

445 knowledge across conversations. Write concise notes about what you found

446 and where.

447 ```

448 

449#### Regole condizionali con hooks

450 

451Per un controllo più dinamico sull'utilizzo degli strumenti, usi gli hook `PreToolUse` per convalidare le operazioni prima che vengano eseguite. Questo è utile quando ha bisogno di consentire alcune operazioni di uno strumento mentre ne blocca altre.

452 

453Questo esempio crea un subagent che consente solo query di database di sola lettura. L'hook `PreToolUse` esegue lo script specificato in `command` prima di ogni comando Bash:

454 

455```yaml theme={null}

456---

457name: db-reader

458description: Execute read-only database queries

459tools: Bash

460hooks:

461 PreToolUse:

462 - matcher: "Bash"

463 hooks:

464 - type: command

465 command: "./scripts/validate-readonly-query.sh"

466---

467```

468 

469Claude Code [passa l'input dell'hook come JSON](/it/hooks#pretooluse-input) tramite stdin ai comandi dell'hook. Lo script di convalida legge questo JSON, estrae il comando Bash e [esce con codice 2](/it/hooks#exit-code-2-behavior-per-event) per bloccare le operazioni di scrittura:

470 

471```bash theme={null}

472#!/bin/bash

473# ./scripts/validate-readonly-query.sh

474 

475INPUT=$(cat)

476COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

477 

478# Block SQL write operations (case-insensitive)

479if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE)\b' > /dev/null; then

480 echo "Blocked: Only SELECT queries are allowed" >&2

481 exit 2

482fi

483 

484exit 0

485```

486 

487Consulti [Hook input](/it/hooks#pretooluse-input) per lo schema di input completo e [exit codes](/it/hooks#exit-code-output) per come i codici di uscita influenzano il comportamento.

488 

489#### Disabiliti subagent specifici

490 

491Può impedire a Claude di utilizzare subagent specifici aggiungendoli all'array `deny` nelle sue [impostazioni](/it/settings#permission-settings). Usi il formato `Agent(subagent-name)` dove `subagent-name` corrisponde al campo name del subagent.

492 

493```json theme={null}

494{

495 "permissions": {

496 "deny": ["Agent(Explore)", "Agent(my-custom-agent)"]

497 }

498}

499```

500 

501Questo funziona sia per i subagent integrati che personalizzati. Può anche usare il flag CLI `--disallowedTools`:

502 

503```bash theme={null}

504claude --disallowedTools "Agent(Explore)"

505```

506 

507Consulti la [documentazione Permissions](/it/permissions#tool-specific-permission-rules) per più dettagli sulle regole di autorizzazione.

508 

509### Definisca hook per i subagent

510 

511I subagent possono definire [hook](/it/hooks) che vengono eseguiti durante il ciclo di vita del subagent. Ci sono due modi per configurare gli hook:

512 

5131. **Nel frontmatter del subagent**: Definisca hook che vengono eseguiti solo mentre quel subagent è attivo

5142. **In `settings.json`**: Definisca hook che vengono eseguiti nella sessione principale quando i subagent iniziano o si fermano

515 

516#### Hook nel frontmatter del subagent

517 

518Definisca gli hook direttamente nel file markdown del subagent. Questi hook vengono eseguiti solo mentre quel subagent specifico è attivo e vengono puliti quando finisce.

519 

520<Note>

521 Gli hook nel frontmatter si attivano quando l'agente viene generato come subagent tramite lo strumento Agent o un @-mention, e quando l'agente viene eseguito come principale della sessione tramite [`--agent`](#invoke-subagents-explicitly) o l'impostazione `agent`. Nel caso della sessione principale, vengono eseguiti insieme a qualsiasi hook definito in [`settings.json`](/it/hooks).

522</Note>

523 

524Tutti gli [hook events](/it/hooks#hook-events) sono supportati. Gli eventi più comuni per i subagent sono:

525 

526| Event | Matcher input | Quando si attiva |

527| :------------ | :------------------- | :------------------------------------------------------------------- |

528| `PreToolUse` | Nome dello strumento | Prima che il subagent utilizzi uno strumento |

529| `PostToolUse` | Nome dello strumento | Dopo che il subagent ha utilizzato uno strumento |

530| `Stop` | (nessuno) | Quando il subagent finisce (convertito in `SubagentStop` al runtime) |

531 

532Questo esempio convalida i comandi Bash con l'hook `PreToolUse` ed esegue un linter dopo le modifiche ai file con `PostToolUse`:

533 

534```yaml theme={null}

535---

536name: code-reviewer

537description: Review code changes with automatic linting

538hooks:

539 PreToolUse:

540 - matcher: "Bash"

541 hooks:

542 - type: command

543 command: "./scripts/validate-command.sh $TOOL_INPUT"

544 PostToolUse:

545 - matcher: "Edit|Write"

546 hooks:

547 - type: command

548 command: "./scripts/run-linter.sh"

549---

550```

551 

552Quando l'agente viene invocato come subagent, gli hook `Stop` nel frontmatter vengono automaticamente convertiti in eventi `SubagentStop`.

553 

554#### Hook a livello di progetto per gli eventi dei subagent

555 

556Configuri gli hook in `settings.json` che rispondono agli eventi del ciclo di vita dei subagent nella sessione principale.

557 

558| Event | Matcher input | Quando si attiva |

559| :-------------- | :---------------------- | :------------------------------------- |

560| `SubagentStart` | Nome del tipo di agente | Quando un subagent inizia l'esecuzione |

561| `SubagentStop` | Nome del tipo di agente | Quando un subagent completa |

562 

563Entrambi gli eventi supportano matcher per indirizzare tipi di agenti specifici per nome. Questo esempio esegue uno script di configurazione solo quando il subagent `db-agent` inizia e uno script di pulizia quando qualsiasi subagent si ferma:

564 

565```json theme={null}

566{

567 "hooks": {

568 "SubagentStart": [

569 {

570 "matcher": "db-agent",

571 "hooks": [

572 { "type": "command", "command": "./scripts/setup-db-connection.sh" }

573 ]

574 }

575 ],

576 "SubagentStop": [

577 {

578 "hooks": [

579 { "type": "command", "command": "./scripts/cleanup-db-connection.sh" }

580 ]

581 }

582 ]

583 }

584}

585```

586 

587Consulti [Hooks](/it/hooks) per il formato di configurazione dell'hook completo.

588 

589## Lavori con i subagent

590 

591### Comprenda la delegazione automatica

592 

593Claude delega automaticamente le attività in base alla descrizione dell'attività nella sua richiesta, al campo `description` nelle configurazioni dei subagent e al contesto attuale. Per incoraggiare la delegazione proattiva, includa frasi come "use proactively" nel campo description del suo subagent.

594 

595### Invochi i subagent esplicitamente

596 

597Quando la delegazione automatica non è sufficiente, può richiedere un subagent lei stesso. Tre modelli escalation da un suggerimento una tantum a un predefinito a livello di sessione:

598 

599* **Linguaggio naturale**: nomini il subagent nel suo prompt; Claude decide se delegare

600* **@-mention**: garantisce che il subagent viene eseguito per un'attività

601* **A livello di sessione**: l'intera sessione utilizza il prompt di sistema, le restrizioni di strumenti e il modello di quel subagent tramite il flag `--agent` o l'impostazione `agent`

602 

603Per il linguaggio naturale, non c'è sintassi speciale. Nomini il subagent e Claude generalmente delega:

604 

605```text theme={null}

606Use the test-runner subagent to fix failing tests

607Have the code-reviewer subagent look at my recent changes

608```

609 

610**@-mention il subagent.** Digiti `@` e scelga il subagent dal typeahead, nello stesso modo in cui @-mention i file. Questo assicura che quel subagent specifico viene eseguito piuttosto che lasciare la scelta a Claude:

611 

612```text theme={null}

613@"code-reviewer (agent)" look at the auth changes

614```

615 

616Il suo messaggio completo va ancora a Claude, che scrive il prompt dell'attività del subagent in base a quello che ha chiesto. L'@-mention controlla quale subagent Claude invoca, non quale prompt riceve.

617 

618I subagent forniti da un [plugin](/it/plugins) abilitato appaiono nel typeahead come `<plugin-name>:<agent-name>`. I subagent in background denominati attualmente in esecuzione nella sessione appaiono anche nel typeahead, mostrando il loro stato accanto al nome. Può anche digitare la mention manualmente senza usare il picker: `@agent-<name>` per i subagent locali, o `@agent-<plugin-name>:<agent-name>` per i subagent plugin.

619 

620**Esegua l'intera sessione come un subagent.** Passi [`--agent <name>`](/it/cli-reference) per avviare una sessione in cui il thread principale stesso assume il prompt di sistema, le restrizioni di strumenti e il modello di quel subagent:

621 

622```bash theme={null}

623claude --agent code-reviewer

624```

625 

626Il prompt di sistema del subagent sostituisce completamente il prompt di sistema predefinito di Claude Code, nello stesso modo in cui [`--system-prompt`](/it/cli-reference) fa. I file `CLAUDE.md` e la memoria del progetto continuano a caricarsi attraverso il flusso di messaggi normale. Il nome dell'agente appare come `@<name>` nell'intestazione di avvio in modo che possa confermare che è attivo.

627 

628Questo funziona con i subagent integrati e personalizzati, e la scelta persiste quando riprende la sessione.

629 

630Per un subagent fornito da un plugin, passi il nome con ambito: `claude --agent <plugin-name>:<agent-name>`.

631 

632Per renderlo il predefinito per ogni sessione in un progetto, imposti `agent` in `.claude/settings.json`:

633 

634```json theme={null}

635{

636 "agent": "code-reviewer"

637}

638```

639 

640Il flag CLI sostituisce l'impostazione se entrambi sono presenti.

641 

642### Esegua i subagent in primo piano o in background

643 

644I subagent possono essere eseguiti in primo piano (bloccante) o in background (concorrente):

645 

646* **Subagent in primo piano** bloccano la conversazione principale fino al completamento. I prompt di autorizzazione e le domande di chiarimento (come [`AskUserQuestion`](/it/tools-reference)) vengono passati a lei.

647* **Subagent in background** vengono eseguiti contemporaneamente mentre continua a lavorare. Prima di avviare, Claude Code richiede le autorizzazioni di strumenti di cui il subagent avrà bisogno, assicurando che abbia le approvazioni necessarie in anticipo. Una volta in esecuzione, il subagent eredita queste autorizzazioni e auto-nega qualsiasi cosa non pre-approvata. Se un subagent in background ha bisogno di fare domande di chiarimento, quella chiamata di strumento fallisce ma il subagent continua.

648 

649Se un subagent in background fallisce a causa di autorizzazioni mancanti, può avviare un nuovo subagent in primo piano con lo stesso compito per riprovare con prompt interattivi.

650 

651Claude decide se eseguire i subagent in primo piano o in background in base all'attività. Può anche:

652 

653* Chiedere a Claude di "run this in the background"

654* Premere **Ctrl+B** per mettere in background un'attività in esecuzione

655 

656Per disabilitare tutta la funzionalità di background task, imposti la variabile di ambiente `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` su `1`. Consulti [Environment variables](/it/env-vars).

657 

658Quando la [fork mode](#fork-the-current-conversation) è abilitata, ogni spawn di subagent viene eseguito in background indipendentemente dal campo `background`. I fork continuano a far emergere i prompt di autorizzazione nel suo terminale mentre si verificano invece di pre-approvare; i subagent denominati seguono il flusso di pre-approvazione sopra.

659 

660### Modelli comuni

661 

662#### Isoli operazioni ad alto volume

663 

664Uno degli usi più efficaci per i subagent è isolare le operazioni che producono grandi quantità di output. L'esecuzione di test, il recupero della documentazione o l'elaborazione di file di log possono consumare contesto significativo. Delegando questi a un subagent, l'output dettagliato rimane nel contesto del subagent mentre solo il riassunto rilevante ritorna alla sua conversazione principale.

665 

666```text theme={null}

667Use a subagent to run the test suite and report only the failing tests with their error messages

668```

669 

670#### Esegua ricerca parallela

671 

672Per indagini indipendenti, generi più subagent per lavorare simultaneamente:

673 

674```text theme={null}

675Research the authentication, database, and API modules in parallel using separate subagents

676```

677 

678Ogni subagent esplora la sua area in modo indipendente, quindi Claude sintetizza i risultati. Questo funziona meglio quando i percorsi di ricerca non dipendono l'uno dall'altro.

679 

680<Warning>

681 Quando i subagent completano, i loro risultati ritornano alla sua conversazione principale. L'esecuzione di molti subagent che ognuno restituisce risultati dettagliati può consumare contesto significativo.

682</Warning>

683 

684Per attività che necessitano di parallelismo sostenuto o superano la sua finestra di contesto, [agent teams](/it/agent-teams) danno a ogni worker il suo contesto indipendente.

685 

686#### Concateni i subagent

687 

688Per flussi di lavoro multi-step, chieda a Claude di utilizzare i subagent in sequenza. Ogni subagent completa la sua attività e restituisce i risultati a Claude, che poi passa il contesto rilevante al subagent successivo.

689 

690```text theme={null}

691Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them

692```

693 

694### Scelga tra subagent e conversazione principale

695 

696Usi la **conversazione principale** quando:

697 

698* L'attività necessita di frequenti scambi o raffinamento iterativo

699* Più fasi condividono contesto significativo (pianificazione → implementazione → test)

700* Sta facendo un cambio rapido e mirato

701* La latenza è importante. I subagent iniziano da zero e potrebbero aver bisogno di tempo per raccogliere contesto

702 

703Usi **subagent** quando:

704 

705* L'attività produce output dettagliato che non ha bisogno nel suo contesto principale

706* Vuole applicare restrizioni di strumenti o autorizzazioni specifiche

707* Il lavoro è autonomo e può restituire un riassunto

708 

709Consideri [Skills](/it/skills) invece quando vuole prompt o flussi di lavoro riutilizzabili che vengono eseguiti nel contesto della conversazione principale piuttosto che nel contesto isolato del subagent.

710 

711Per una domanda rapida su qualcosa già nella sua conversazione, usi [`/btw`](/it/interactive-mode#side-questions-with-%2Fbtw) invece di un subagent. Vede il suo contesto completo ma non ha accesso agli strumenti e la risposta viene scartata piuttosto che aggiunta alla cronologia.

712 

713<Note>

714 I subagent non possono generare altri subagent. Se il suo flusso di lavoro richiede delegazione annidata, usi [Skills](/it/skills) o [concateni i subagent](#chain-subagents) dalla conversazione principale.

715</Note>

716 

717### Gestisca il contesto del subagent

718 

719#### Riprenda i subagent

720 

721Ogni invocazione di subagent crea una nuova istanza con contesto fresco. Per continuare il lavoro di un subagent esistente invece di ricominciare, chieda a Claude di riprendere.

722 

723I subagent ripresi mantengono la loro cronologia di conversazione completa, incluse tutte le precedenti chiamate di strumenti, risultati e ragionamento. Il subagent riprende esattamente da dove si era fermato piuttosto che ricominciare da zero.

724 

725Quando un subagent completa, Claude riceve il suo ID agente. Claude utilizza lo strumento `SendMessage` con l'ID dell'agente come campo `to` per riprendere. Lo strumento `SendMessage` è disponibile solo quando [agent teams](/it/agent-teams) sono abilitati tramite `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.

726 

727Per riprendere un subagent, chieda a Claude di continuare il lavoro precedente:

728 

729```text theme={null}

730Use the code-reviewer subagent to review the authentication module

731[Agent completes]

732 

733Continue that code review and now analyze the authorization logic

734[Claude resumes the subagent with full context from previous conversation]

735```

736 

737Se un subagent fermato riceve un `SendMessage`, si auto-riprende in background senza richiedere una nuova invocazione `Agent`.

738 

739Può anche chiedere a Claude l'ID agente se vuole fare riferimento ad esso esplicitamente, o trovare gli ID nei file di trascrizione in `~/.claude/projects/{project}/{sessionId}/subagents/`. Ogni trascrizione è archiviata come `agent-{agentId}.jsonl`.

740 

741Le trascrizioni dei subagent persistono indipendentemente dalla conversazione principale:

742 

743* **Compattazione della conversazione principale**: Quando la conversazione principale si compatta, le trascrizioni dei subagent non sono interessate. Sono archiviate in file separati.

744* **Persistenza della sessione**: Le trascrizioni dei subagent persistono all'interno della loro sessione. Può [riprendere un subagent](#resume-subagents) dopo aver riavviato Claude Code riprendendo la stessa sessione.

745* **Pulizia automatica**: Le trascrizioni vengono pulite in base all'impostazione `cleanupPeriodDays` (predefinito: 30 giorni).

746 

747#### Auto-compattazione

748 

749I subagent supportano la compattazione automatica utilizzando la stessa logica della conversazione principale. Per impostazione predefinita, la compattazione automatica si attiva a circa il 95% della capacità. Per attivare la compattazione prima, imposti `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` su una percentuale inferiore (ad esempio, `50`). Consulti [environment variables](/it/env-vars) per i dettagli.

750 

751Gli eventi di compattazione vengono registrati nei file di trascrizione dei subagent:

752 

753```json theme={null}

754{

755 "type": "system",

756 "subtype": "compact_boundary",

757 "compactMetadata": {

758 "trigger": "auto",

759 "preTokens": 167189

760 }

761}

762```

763 

764Il valore `preTokens` mostra quanti token sono stati utilizzati prima che si verificasse la compattazione.

765 

766## Esegua il fork della conversazione corrente

767 

768<Note>

769 I subagent di fork sono sperimentali e richiedono Claude Code v2.1.117 o successivo. Il comportamento e la configurazione potrebbero cambiare nelle versioni future. Abilitarli impostando la variabile di ambiente [`CLAUDE_CODE_FORK_SUBAGENT`](/it/env-vars) su `1`. La variabile è rispettata in modalità interattiva e tramite SDK o `claude -p`.

770</Note>

771 

772Un fork è un subagent che eredita l'intera conversazione fino ad ora invece di iniziare da zero. Questo elimina l'isolamento dell'input che i subagent altrimenti forniscono: un fork vede lo stesso prompt di sistema, strumenti, modello e cronologia dei messaggi della sessione principale, in modo che possa assegnargli un'attività secondaria senza re-spiegare la situazione. Le proprie chiamate di strumenti del fork rimangono comunque fuori dalla sua conversazione e solo il suo risultato finale ritorna, in modo che la sua finestra di contesto principale rimanga pulita. Usi un fork quando un subagent denominato avrebbe bisogno di troppo background per essere utile, o quando vuole provare diversi approcci in parallelo dallo stesso punto di partenza.

773 

774L'abilitazione della fork mode cambia Claude Code in tre modi:

775 

776* Claude genera un fork ogni volta che altrimenti utilizzerebbe il subagent [general-purpose](#built-in-subagents). I subagent denominati come Explore continuano a generarsi come prima.

777* Ogni spawn di subagent viene eseguito in [background](#run-subagents-in-foreground-or-background), sia che sia un fork che un subagent denominato. Imposti `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` su `1` per mantenere gli spawn sincroni.

778* Il comando `/fork` genera un fork invece di agire come alias per [`/branch`](/it/commands).

779 

780Può avviare un fork lei stesso con `/fork` seguito da una direttiva. Claude Code nomina il fork dalle prime parole della direttiva. L'esempio seguente esegue il fork della conversazione per redigere casi di test mentre continua con l'implementazione nella sessione principale:

781 

782```text theme={null}

783/fork draft unit tests for the parser changes so far

784```

785 

786Il fork appare in un pannello sotto il suo prompt e viene eseguito in background mentre continua a lavorare. Quando finisce, il suo risultato arriva come messaggio nella sua conversazione principale. La sezione successiva copre i controlli del pannello per osservare e dirigere i fork mentre vengono eseguiti.

787 

788### Osservi e dirija i fork in esecuzione

789 

790I fork in esecuzione appaiono in un pannello sotto l'input del prompt, con una riga per la sessione principale e una per ogni fork. Usi questi tasti per interagire con il pannello:

791 

792| Key | Action |

793| :-------- | :---------------------------------------------------------------------- |

794| `↑` / `↓` | Sposta tra le righe |

795| `Enter` | Apra la trascrizione del fork selezionato e invii messaggi di follow-up |

796| `x` | Chiuda un fork finito o fermi uno in esecuzione |

797| `Esc` | Restituisca il focus all'input del prompt |

798 

799### Come i fork differiscono dai subagent denominati

800 

801Un fork eredita tutto ciò che la sessione principale ha nel momento in cui viene generato. Un subagent denominato inizia dalla sua propria definizione.

802 

803| | Fork | Subagent denominato |

804| :-------------------- | :----------------------------------- | :----------------------------------------------------------------------------------------------- |

805| Context | Cronologia di conversazione completa | Contesto fresco con il prompt che passa |

806| System prompt e tools | Uguale alla sessione principale | Dalla [definition file](#write-subagent-files) del subagent |

807| Model | Uguale alla sessione principale | Dal campo `model` del subagent |

808| Permissions | I prompt emergono nel suo terminale | [Pre-approvati](#run-subagents-in-foreground-or-background) prima del lancio, quindi auto-negati |

809| Prompt cache | Condiviso con la sessione principale | Cache separata |

810 

811Poiché il prompt di sistema di un fork e le definizioni di strumenti sono identici al principale, la sua prima richiesta riutilizza la cache del prompt del principale. Questo rende il fork più economico rispetto alla generazione di un subagent fresco per attività che necessitano dello stesso contesto.

812 

813Quando Claude genera un fork tramite lo strumento Agent, può passare `isolation: "worktree"` in modo che le modifiche ai file del fork vengano scritte in un git worktree separato invece del suo checkout.

814 

815### Limitazioni

816 

817L'impostazione di `CLAUDE_CODE_FORK_SUBAGENT=1` abilita la fork mode in sessioni interattive, [modalità non interattiva](/it/headless) e SDK Agent. Un fork non può generare ulteriori fork.

818 

819## Subagent di esempio

820 

821Questi esempi dimostrano modelli efficaci per la costruzione di subagent. Li usi come punti di partenza, o generi una versione personalizzata con Claude.

822 

823<Tip>

824 **Best practices:**

825 

826 * **Progetti subagent focalizzati:** ogni subagent dovrebbe eccellere in un'attività specifica

827 * **Scriva descrizioni dettagliate:** Claude utilizza la descrizione per decidere quando delegare

828 * **Limiti l'accesso agli strumenti:** conceda solo le autorizzazioni necessarie per la sicurezza e la focalizzazione

829 * **Archivi nel controllo della versione:** condivida i subagent di progetto con il suo team

830</Tip>

831 

832### Revisore di codice

833 

834Un subagent di sola lettura che esamina il codice senza modificarlo. Questo esempio mostra come progettare un subagent focalizzato con accesso limitato agli strumenti (nessun Edit o Write) e un prompt dettagliato che specifica esattamente cosa cercare e come formattare l'output.

835 

836```markdown theme={null}

837---

838name: code-reviewer

839description: Expert code review specialist. Proactively reviews code for quality, security, and maintainability. Use immediately after writing or modifying code.

840tools: Read, Grep, Glob, Bash

841model: inherit

842---

843 

844You are a senior code reviewer ensuring high standards of code quality and security.

845 

846When invoked:

8471. Run git diff to see recent changes

8482. Focus on modified files

8493. Begin review immediately

850 

851Review checklist:

852- Code is clear and readable

853- Functions and variables are well-named

854- No duplicated code

855- Proper error handling

856- No exposed secrets or API keys

857- Input validation implemented

858- Good test coverage

859- Performance considerations addressed

860 

861Provide feedback organized by priority:

862- Critical issues (must fix)

863- Warnings (should fix)

864- Suggestions (consider improving)

865 

866Include specific examples of how to fix issues.

867```

868 

869### Debugger

870 

871Un subagent che può sia analizzare che correggere i problemi. A differenza del revisore di codice, questo include Edit perché correggere i bug richiede la modifica del codice. Il prompt fornisce un flusso di lavoro chiaro dalla diagnosi alla verifica.

872 

873```markdown theme={null}

874---

875name: debugger

876description: Debugging specialist for errors, test failures, and unexpected behavior. Use proactively when encountering any issues.

877tools: Read, Edit, Bash, Grep, Glob

878---

879 

880You are an expert debugger specializing in root cause analysis.

881 

882When invoked:

8831. Capture error message and stack trace

8842. Identify reproduction steps

8853. Isolate the failure location

8864. Implement minimal fix

8875. Verify solution works

888 

889Debugging process:

890- Analyze error messages and logs

891- Check recent code changes

892- Form and test hypotheses

893- Add strategic debug logging

894- Inspect variable states

895 

896For each issue, provide:

897- Root cause explanation

898- Evidence supporting the diagnosis

899- Specific code fix

900- Testing approach

901- Prevention recommendations

902 

903Focus on fixing the underlying issue, not the symptoms.

904```

905 

906### Data scientist

907 

908Un subagent specifico del dominio per il lavoro di analisi dei dati. Questo esempio mostra come creare subagent per flussi di lavoro specializzati al di fuori dei tipici compiti di codifica. Imposta esplicitamente `model: sonnet` per un'analisi più capace.

909 

910```markdown theme={null}

911---

912name: data-scientist

913description: Data analysis expert for SQL queries, BigQuery operations, and data insights. Use proactively for data analysis tasks and queries.

914tools: Bash, Read, Write

915model: sonnet

916---

917 

918You are a data scientist specializing in SQL and BigQuery analysis.

919 

920When invoked:

9211. Understand the data analysis requirement

9222. Write efficient SQL queries

9233. Use BigQuery command line tools (bq) when appropriate

9244. Analyze and summarize results

9255. Present findings clearly

926 

927Key practices:

928- Write optimized SQL queries with proper filters

929- Use appropriate aggregations and joins

930- Include comments explaining complex logic

931- Format results for readability

932- Provide data-driven recommendations

933 

934For each analysis:

935- Explain the query approach

936- Document any assumptions

937- Highlight key findings

938- Suggest next steps based on data

939 

940Always ensure queries are efficient and cost-effective.

941```

942 

943### Validatore di query di database

944 

945Un subagent che consente l'accesso a Bash ma convalida i comandi per consentire solo query SQL di sola lettura. Questo esempio mostra come usare gli hook `PreToolUse` per la convalida condizionale quando ha bisogno di un controllo più fine di quello che il campo `tools` fornisce.

946 

947```markdown theme={null}

948---

949name: db-reader

950description: Execute read-only database queries. Use when analyzing data or generating reports.

951tools: Bash

952hooks:

953 PreToolUse:

954 - matcher: "Bash"

955 hooks:

956 - type: command

957 command: "./scripts/validate-readonly-query.sh"

958---

959 

960You are a database analyst with read-only access. Execute SELECT queries to answer questions about the data.

961 

962When asked to analyze data:

9631. Identify which tables contain the relevant data

9642. Write efficient SELECT queries with appropriate filters

9653. Present results clearly with context

966 

967You cannot modify data. If asked to INSERT, UPDATE, DELETE, or modify schema, explain that you only have read access.

968```

969 

970Claude Code [passa l'input dell'hook come JSON](/it/hooks#pretooluse-input) tramite stdin ai comandi dell'hook. Lo script di convalida legge questo JSON, estrae il comando in esecuzione e lo controlla rispetto a un elenco di operazioni di scrittura SQL. Se viene rilevata un'operazione di scrittura, lo script [esce con codice 2](/it/hooks#exit-code-2-behavior-per-event) per bloccare l'esecuzione e restituisce un messaggio di errore a Claude tramite stderr.

971 

972Crei lo script di convalida in qualsiasi punto del suo progetto. Il percorso deve corrispondere al campo `command` nella sua configurazione dell'hook:

973 

974```bash theme={null}

975#!/bin/bash

976# Blocks SQL write operations, allows SELECT queries

977 

978# Read JSON input from stdin

979INPUT=$(cat)

980 

981# Extract the command field from tool_input using jq

982COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

983 

984if [ -z "$COMMAND" ]; then

985 exit 0

986fi

987 

988# Block write operations (case-insensitive)

989if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE|REPLACE|MERGE)\b' > /dev/null; then

990 echo "Blocked: Write operations not allowed. Use SELECT queries only." >&2

991 exit 2

992fi

993 

994exit 0

995```

996 

997Renda lo script eseguibile:

998 

999```bash theme={null}

1000chmod +x ./scripts/validate-readonly-query.sh

1001```

1002 

1003L'hook riceve JSON tramite stdin con il comando Bash in `tool_input.command`. Il codice di uscita 2 blocca l'operazione e alimenta il messaggio di errore a Claude. Consulti [Hooks](/it/hooks#exit-code-output) per i dettagli sui codici di uscita e [Hook input](/it/hooks#pretooluse-input) per lo schema di input completo.

1004 

1005## Passaggi successivi

1006 

1007Ora che comprende i subagent, esplori queste funzionalità correlate:

1008 

1009* [Distribuisca subagent con i plugin](/it/plugins) per condividere i subagent tra team o progetti

1010* [Esegua Claude Code a livello di programmazione](/it/headless) con l'Agent SDK per CI/CD e automazione

1011* [Usi i server MCP](/it/mcp) per dare ai subagent accesso a strumenti e dati esterni

terminal-config.md +307 −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# Configura il tuo terminale per Claude Code

6 

7> Correggi Shift+Invio per le nuove righe, ricevi un segnale acustico del terminale quando Claude finisce, configura tmux, abbina il tema dei colori e abilita la modalità Vim nella CLI di Claude Code.

8 

9Claude Code funziona in qualsiasi terminale senza configurazione. Questa pagina è per quando qualcosa di specifico non si comporta come previsto. Trova il tuo sintomo di seguito. Se tutto ti sembra già corretto, non hai bisogno di questa pagina.

10 

11* [Shift+Invio invia invece di inserire una nuova riga](#enter-multiline-prompts)

12* [Le scorciatoie del tasto Option non funzionano su macOS](#enable-option-key-shortcuts-on-macos)

13* [Nessun suono o avviso quando Claude finisce](#get-a-terminal-bell-or-notification)

14* [Esegui Claude Code dentro tmux](#configure-tmux)

15* [Lo schermo sfarfalla o il scrollback salta](#switch-to-fullscreen-rendering)

16* [Vuoi i tasti Vim nel prompt](#edit-prompts-with-vim-keybindings)

17 

18Questa pagina riguarda come far inviare al tuo terminale i segnali giusti a Claude Code. Per modificare i tasti a cui Claude Code stesso risponde, consulta invece [scorciatoie da tastiera](/it/keybindings).

19 

20## Inserire prompt multilinea

21 

22Premere Invio invia il tuo messaggio. Per aggiungere un'interruzione di riga senza inviare, premi Ctrl+J, oppure digita `\` e poi premi Invio. Entrambi funzionano in ogni terminale senza configurazione.

23 

24Nella maggior parte dei terminali puoi anche premere Shift+Invio, ma il supporto varia a seconda dell'emulatore di terminale:

25 

26| Terminale | Shift+Invio per nuova riga |

27| :----------------------------------------------------------------------------- | :------------------------------------------ |

28| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal | Funziona senza configurazione |

29| VS Code, Cursor, Windsurf, Alacritty, Zed | Esegui `/terminal-setup` una volta |

30| Windows Terminal, gnome-terminal, JetBrains IDEs come PyCharm e Android Studio | Non disponibile; usa Ctrl+J o `\` poi Invio |

31 

32Per VS Code, Cursor, Windsurf, Alacritty e Zed, `/terminal-setup` scrive Shift+Invio e altre scorciatoie da tastiera nel file di configurazione del terminale. In VS Code, Cursor e Windsurf imposta anche `terminal.integrated.mouseWheelScrollSensitivity` nelle impostazioni dell'editor per uno scorrimento più fluido in [modalità a schermo intero](/it/fullscreen). I binding e le impostazioni esistenti rimangono in posizione; se vedi un messaggio come `VSCode terminal Shift+Enter key binding already configured`, non è stata apportata alcuna modifica. Esegui `/terminal-setup` direttamente nel terminale host piuttosto che dentro tmux o screen, poiché ha bisogno di scrivere nella configurazione del terminale host.

33 

34Se stai eseguendo dentro tmux, Shift+Invio richiede anche la [configurazione tmux di seguito](#configure-tmux) anche quando il terminale esterno la supporta.

35 

36Per associare la nuova riga a un tasto diverso, o per scambiare il comportamento in modo che Invio inserisca una nuova riga e Shift+Invio invii, mappa le azioni `chat:newline` e `chat:submit` nel tuo [file delle scorciatoie da tastiera](/it/keybindings).

37 

38## Abilita le scorciatoie da tastiera Option su macOS

39 

40Alcuni scorciatoie di Claude Code utilizzano il tasto Option, come Option+Invio per una nuova riga o Option+P per cambiare modelli. Su macOS, la maggior parte dei terminali non invia Option come modificatore per impostazione predefinita, quindi questi scorciatoie non funzionano finché non lo abiliti. L'impostazione del terminale per questo è solitamente etichettata "Use Option as Meta Key"; Meta è il nome storico Unix per il tasto ora etichettato come Option o Alt.

41 

42<Tabs>

43 <Tab title="Apple Terminal">

44 Apri Impostazioni → Profili → Tastiera e seleziona "Use Option as Meta Key".

45 

46 Se hai accettato il prompt di primo avvio di Claude Code che offriva "Option+Invio per nuove righe e campanello visivo", questo è già fatto. Quel prompt esegue `/terminal-setup` per te, che abilita Option come Meta e cambia il campanello audio a un flash di schermo visivo nel tuo profilo Apple Terminal.

47 </Tab>

48 

49 <Tab title="iTerm2">

50 Apri Impostazioni → Profili → Tasti → Generale e imposta il tasto Option sinistro e il tasto Option destro su "Esc+".

51 

52 L'esecuzione di `/terminal-setup` in iTerm2 abilita "Applications in terminal may access clipboard" in Impostazioni → Generale → Selezione in modo che il comando `/copy` possa scrivere negli appunti di sistema. Il comando rileva iTerm2 anche quando eseguito da dentro tmux. Riavvia iTerm2 affinché la modifica abbia effetto.

53 </Tab>

54 

55 <Tab title="VS Code">

56 Aggiungi `"terminal.integrated.macOptionIsMeta": true` alle tue impostazioni di VS Code.

57 </Tab>

58</Tabs>

59 

60Per Ghostty, Kitty e altri terminali, cerca un'impostazione Option-as-Alt o Option-as-Meta nel file di configurazione del terminale.

61 

62## Ottieni un campanello del terminale o una notifica

63 

64Quando Claude finisce un'attività o si mette in pausa per un prompt di autorizzazione, attiva un evento di notifica. Visualizzare questo come un campanello del terminale o una notifica desktop ti consente di passare ad altro lavoro mentre un'attività lunga è in esecuzione.

65 

66Per impostazione predefinita Claude Code invia una notifica desktop solo in Ghostty, Kitty e iTerm2. In altri terminali, imposta [`preferredNotifChannel`](/it/settings#available-settings) su `"terminal_bell"` per far suonare il campanello del terminale, oppure configura un [hook Notification](#play-a-sound-with-a-notification-hook) per un suono personalizzato o un comando.

67 

68La notifica desktop raggiunge la tua macchina locale tramite SSH, quindi una sessione remota può comunque avvertirti. Ghostty e Kitty la inoltrano al tuo centro notifiche del sistema operativo senza ulteriore configurazione. iTerm2 richiede che tu abiliti l'inoltro:

69 

70<Steps>

71 <Step title="Apri le impostazioni di notifica di iTerm2">

72 Vai a Impostazioni → Profili → Terminale.

73 </Step>

74 

75 <Step title="Abilita gli avvisi">

76 Seleziona "Notification Center Alerts", poi fai clic su "Filter Alerts" e abilita "Send escape sequence-generated alerts".

77 </Step>

78</Steps>

79 

80Se le notifiche ancora non appaiono, conferma che la tua applicazione di terminale ha il permesso di notifica nelle impostazioni del tuo sistema operativo, e se stai eseguendo dentro tmux, [abilita il passthrough](#configure-tmux).

81 

82### Play a sound with a Notification hook

83 

84In qualsiasi terminale puoi configurare un [hook Notification](/it/hooks-guide#get-notified-when-claude-needs-input) per riprodurre un suono o eseguire un comando personalizzato quando Claude ha bisogno della tua attenzione. Gli hook vengono eseguiti insieme alla notifica desktop piuttosto che sostituirla, quindi i terminali che non ricevono una notifica desktop, come Warp o il terminale integrato di VS Code, possono utilizzare un hook o impostare `preferredNotifChannel` su `"terminal_bell"` invece.

85 

86L'esempio di seguito riproduce un suono di sistema su macOS. La guida collegata ha comandi di notifica desktop per macOS, Linux e Windows.

87 

88```json ~/.claude/settings.json theme={null}

89{

90 "hooks": {

91 "Notification": [

92 {

93 "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]

94 }

95 ]

96 }

97}

98```

99 

100## Configure tmux

101 

102Quando Claude Code viene eseguito dentro tmux, due cose si rompono per impostazione predefinita: Shift+Invio invia invece di inserire una nuova riga, e le notifiche desktop e la [barra di avanzamento](/it/settings#available-settings) non raggiungono mai il terminale esterno. Aggiungi queste righe a `~/.tmux.conf`, poi esegui `tmux source-file ~/.tmux.conf` per applicarle al server in esecuzione:

103 

104```bash ~/.tmux.conf theme={null}

105set -g allow-passthrough on

106set -s extended-keys on

107set -as terminal-features 'xterm*:extkeys'

108```

109 

110La riga `allow-passthrough` consente alle notifiche e agli aggiornamenti di avanzamento di raggiungere iTerm2, Ghostty o Kitty invece di essere inghiottiti da tmux. Le righe `extended-keys` consentono a tmux di distinguere Shift+Invio da Invio semplice in modo che la scorciatoia della nuova riga funzioni.

111 

112## Abbina il tema dei colori

113 

114Usa il comando `/theme`, o il selettore di tema in `/config`, per scegliere un tema di Claude Code che corrisponda al tuo terminale. Selezionando l'opzione auto rileva lo sfondo chiaro o scuro del tuo terminale, quindi il tema segue i cambiamenti di aspetto del sistema operativo ogni volta che il tuo terminale lo fa. Claude Code non controlla lo schema di colori del terminale stesso, che è impostato dall'applicazione del terminale.

115 

116Per personalizzare ciò che appare in fondo all'interfaccia, configura una [linea di stato personalizzata](/it/statusline) che mostra il modello corrente, la directory di lavoro, il ramo git o altro contesto.

117 

118### Crea un tema personalizzato

119 

120<Note>

121 I temi personalizzati richiedono Claude Code v2.1.118 o versioni successive.

122</Note>

123 

124Oltre ai preset incorporati, `/theme` elenca tutti i temi personalizzati che hai definito e tutti i temi forniti dai [plugin](/it/plugins-reference#themes) installati. Seleziona **Nuovo tema personalizzato…** alla fine dell'elenco per crearne uno in modo interattivo: dai un nome al tema, quindi scegli i singoli token di colore da sovrascrivere. Premi `Ctrl+E` mentre un tema personalizzato è evidenziato per modificarlo.

125 

126Ogni tema personalizzato è un file JSON in `~/.claude/themes/`. Il nome del file senza l'estensione `.json` è lo slug del tema, e selezionare il tema memorizza `custom:<slug>` come preferenza del tema. Il file ha tre campi facoltativi:

127 

128| Campo | Tipo | Descrizione |

129| :---------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |

130| `name` | string | Etichetta di visualizzazione mostrata in `/theme`. Predefinito al nome del file slug |

131| `base` | string | Preset incorporato da cui inizia il tema: `dark`, `light`, `dark-daltonized`, `light-daltonized`, `dark-ansi`, o `light-ansi`. Predefinito a `dark` |

132| `overrides` | object | Mappa dei nomi dei token di colore ai valori di colore. I token non elencati qui passano al preset di base |

133 

134I valori di colore accettano `#rrggbb`, `#rgb`, `rgb(r,g,b)`, `ansi256(n)`, o `ansi:<name>` dove `<name>` è uno dei 16 nomi di colore ANSI standard come `red` o `cyanBright`. I token sconosciuti e i valori di colore non validi vengono ignorati, quindi un errore di battitura non può interrompere il rendering.

135 

136L'esempio seguente definisce un tema che mantiene il preset scuro ma ricolora l'accento del prompt, il testo di errore e il testo di successo:

137 

138```json ~/.claude/themes/dracula.json theme={null}

139{

140 "name": "Dracula",

141 "base": "dark",

142 "overrides": {

143 "claude": "#bd93f9",

144 "error": "#ff5555",

145 "success": "#50fa7b"

146 }

147}

148```

149 

150Claude Code monitora `~/.claude/themes/` e ricarica quando un file cambia, quindi le modifiche apportate nel tuo editor si applicano a una sessione in esecuzione senza un riavvio.

151 

152Il riferimento di seguito copre i token che puoi impostare in `overrides`. L'editor interattivo in `/theme` mostra gli stessi token con un'anteprima dal vivo, più alcuni accenti monouso come i colori della schermata di onboarding che vengono omessi qui.

153 

154<Accordion title="Riferimento token di colore">

155 L'esempio seguente combina token da diversi gruppi sottostanti: l'accento del marchio, il bordo della modalità piano, gli sfondi diff e lo sfondo del messaggio a schermo intero.

156 

157 ```json ~/.claude/themes/midnight.json theme={null}

158 {

159 "name": "Midnight",

160 "base": "dark",

161 "overrides": {

162 "claude": "#a78bfa",

163 "planMode": "#38bdf8",

164 "diffAdded": "#14532d",

165 "diffRemoved": "#7f1d1d",

166 "userMessageBackground": "#1e1b4b"

167 }

168 }

169 ```

170 

171 #### Colori di testo e accento

172 

173 Controlla l'accento del marchio principale e le sfumature di testo in primo piano utilizzate in tutta l'interfaccia.

174 

175 | Token | Controlla |

176 | :------------ | :-------------------------------------------------------------------------------------- |

177 | `claude` | Accento del marchio principale, utilizzato per lo spinner e l'etichetta dell'assistente |

178 | `text` | Testo in primo piano predefinito |

179 | `inverseText` | Testo disegnato sopra uno sfondo colorato, come i badge di stato |

180 | `inactive` | Testo secondario come suggerimenti, timestamp e elementi disabilitati |

181 | `subtle` | Bordi sfumati e testo secondario de-enfatizzato |

182 | `suggestion` | Suggerimenti di completamento automatico e evidenziazione della selezione nei selettori |

183 | `permission` | Bordi della finestra di dialogo, inclusi i prompt di autorizzazione e i selettori |

184 | `remember` | Indicatori di memoria e `CLAUDE.md` |

185 

186 #### Colori di stato

187 

188 Segnala stati di successo, fallimento e avviso nei messaggi e negli indicatori.

189 

190 | Token | Controlla |

191 | :-------- | :--------------------------------------------------------- |

192 | `success` | Messaggi di successo e controlli superati |

193 | `error` | Messaggi di errore e fallimenti |

194 | `warning` | Avvisi, messaggi di cautela e il bordo della modalità auto |

195 | `merged` | Stato della richiesta pull unita |

196 

197 #### Casella di input e indicatori di modalità

198 

199 Imposta il colore del bordo della casella di input e l'accento mostrato mentre una modalità di autorizzazione o un indicatore è attivo.

200 

201 | Token | Controlla |

202 | :------------- | :------------------------------------------------------------------------ |

203 | `promptBorder` | Bordo della casella di input nella modalità di autorizzazione predefinita |

204 | `planMode` | Accento e bordo della modalità piano |

205 | `autoAccept` | Accento e bordo della modalità accetta-modifiche |

206 | `bashBorder` | Bordo della casella di input quando si immette un comando shell `!` |

207 | `ide` | Indicatore di connessione IDE |

208 | `fastMode` | Indicatore della modalità veloce |

209 

210 #### Rendering diff

211 

212 Colora il codice aggiunto e rimosso nelle modifiche e revisioni dei file.

213 

214 | Token | Controlla |

215 | :------------------ | :------------------------------------------------------------------ |

216 | `diffAdded` | Sfondo delle righe aggiunte |

217 | `diffRemoved` | Sfondo delle righe rimosse |

218 | `diffAddedDimmed` | Sfondo del contesto invariato vicino alle righe aggiunte |

219 | `diffRemovedDimmed` | Sfondo del contesto invariato vicino alle righe rimosse |

220 | `diffAddedWord` | Evidenziazione a livello di parola all'interno di una riga aggiunta |

221 | `diffRemovedWord` | Evidenziazione a livello di parola all'interno di una riga rimossa |

222 

223 #### Modalità a schermo intero

224 

225 Applicare solo in [modalità di rendering a schermo intero](/it/fullscreen), dove i messaggi hanno un riempimento di sfondo.

226 

227 | Token | Controlla |

228 | :--------------------------- | :--------------------------------------------------------------------------- |

229 | `userMessageBackground` | Sfondo dietro i tuoi messaggi nella trascrizione |

230 | `userMessageBackgroundHover` | Sfondo dietro un messaggio mentre è al passaggio del mouse o espanso |

231 | `messageActionsBackground` | Sfondo dietro il messaggio selezionato quando la barra delle azioni è aperta |

232 | `bashMessageBackgroundColor` | Sfondo dietro le voci di comando shell `!` nella trascrizione |

233 | `memoryBackgroundColor` | Sfondo dietro le voci di memoria `#` nella trascrizione |

234 | `selectionBg` | Sfondo del testo selezionato con il mouse |

235 

236 #### Misuratore di utilizzo e etichette degli altoparlanti

237 

238 Regola la barra mostrata nella vista `/usage` e le etichette che distinguono i tuoi messaggi da quelli di Claude.

239 

240 | Token | Controlla |

241 | :----------------- | :---------------------------------------------------------- |

242 | `rate_limit_fill` | Porzione riempita del misuratore di utilizzo |

243 | `rate_limit_empty` | Porzione non riempita del misuratore di utilizzo |

244 | `briefLabelYou` | Colore dell'etichetta `You` sui tuoi messaggi |

245 | `briefLabelClaude` | Colore dell'etichetta `Claude` sui messaggi dell'assistente |

246 

247 #### Varianti shimmer e colori dei subagent

248 

249 Diversi token hanno una variante shimmer accoppiata che fornisce il colore più chiaro utilizzato nel gradiente animato dello spinner. Sovrascrivi lo shimmer insieme al suo token di base se l'animazione appare non corrispondente.

250 

251 * `claude` e `claudeShimmer`

252 * `warning` e `warningShimmer`

253 * `permission` e `permissionShimmer`

254 * `promptBorder` e `promptBorderShimmer`

255 * `inactive` e `inactiveShimmer`

256 * `fastMode` e `fastModeShimmer`

257 

258 Ogni [subagent](/it/sub-agents) e attività parallela viene mostrata in uno degli otto colori denominati in modo che tu possa distinguerli nella trascrizione. I nomi dei token seguono il modello `<color>_FOR_SUBAGENTS_ONLY`, dove `<color>` è `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, o `cyan`. Sovrascrivi questi per cambiare l'aspetto di ogni colore denominato. Ad esempio, un subagent con `color: blue` nella sua definizione viene disegnato utilizzando il valore `blue_FOR_SUBAGENTS_ONLY`.

259 

260 Le parole chiave [`ultrathink`](/it/model-config#use-ultrathink-for-one-off-deep-reasoning) e [`ultraplan`](/it/ultraplan) nell'input del prompt vengono renderizzate con un gradiente arcobaleno a sette colori. I nomi dei token seguono il modello `rainbow_<color>` e `rainbow_<color>_shimmer`, dove `<color>` è `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, o `violet`.

261</Accordion>

262 

263## Switch to fullscreen rendering

264 

265Se lo schermo sfarfalla o la posizione di scorrimento salta mentre Claude sta lavorando, passa alla [modalità di rendering a schermo intero](/it/fullscreen). Disegna su uno schermo separato che il terminale riserva per le app a schermo intero invece di aggiungere al tuo normale scrollback, il che mantiene l'utilizzo della memoria piatto e aggiunge il supporto del mouse per lo scorrimento e la selezione. In questa modalità scorri con il mouse o PageUp dentro Claude Code piuttosto che con lo scrollback nativo del tuo terminale; consulta la [pagina fullscreen](/it/fullscreen#search-and-review-the-conversation) per come cercare e copiare.

266 

267Esegui `/tui fullscreen` per passare nella sessione corrente con la tua conversazione intatta. Per renderlo predefinito, imposta la variabile di ambiente `CLAUDE_CODE_NO_FLICKER` prima di avviare Claude Code:

268 

269<CodeGroup>

270 ```bash Bash and Zsh theme={null}

271 CLAUDE_CODE_NO_FLICKER=1 claude

272 ```

273 

274 ```powershell PowerShell theme={null}

275 $env:CLAUDE_CODE_NO_FLICKER = "1"; claude

276 ```

277 

278 ```json ~/.claude/settings.json theme={null}

279 {

280 "env": {

281 "CLAUDE_CODE_NO_FLICKER": "1"

282 }

283 }

284 ```

285</CodeGroup>

286 

287## Paste large content

288 

289Quando incolla più di 10.000 caratteri nel prompt, Claude Code comprime l'input a un placeholder `[Pasted text]` in modo che la casella di input rimanga utilizzabile. Il contenuto completo viene comunque inviato a Claude quando invii.

290 

291Il terminale integrato di VS Code può perdere caratteri da incollamenti molto grandi prima che raggiungano Claude Code, quindi preferisci flussi di lavoro basati su file lì. Per input molto grandi come interi file o lunghi log, scrivi il contenuto in un file e chiedi a Claude di leggerlo invece di incollare. Questo mantiene la trascrizione della conversazione leggibile e consente a Claude di fare riferimento al file per percorso nei turni successivi.

292 

293## Modifica i prompt con le scorciatoie da tastiera Vim

294 

295Claude Code include una modalità di editing in stile Vim per l'input del prompt. Abilitala tramite `/config` → Editor mode, o impostando [`editorMode`](/it/settings#available-settings) su `"vim"` in `~/.claude/settings.json`. Imposta Editor mode di nuovo su `normal` per disattivarla.

296 

297La modalità Vim supporta un sottoinsieme di motions in modalità NORMAL e VISUAL e operatori, come la navigazione `hjkl`, la selezione `v`/`V`, e `d`/`c`/`y` con oggetti di testo. Consulta la [tabella di riferimento della modalità editor Vim](/it/interactive-mode#vim-editor-mode) per la tabella completa dei tasti. I motions Vim non sono rimappabili tramite il file delle scorciatoie da tastiera.

298 

299Premere Invio invia comunque il tuo prompt in modalità INSERT, a differenza di Vim standard. Usa `o` o `O` in modalità NORMAL, o Ctrl+J, per inserire una nuova riga invece.

300 

301## Related resources

302 

303* [Interactive mode](/it/interactive-mode): riferimento completo delle scorciatoie da tastiera e la tabella dei tasti Vim

304* [Keybindings](/it/keybindings): rimappa qualsiasi scorciatoia di Claude Code, inclusi Invio e Shift+Invio

305* [Fullscreen rendering](/it/fullscreen): dettagli su scorrimento, ricerca e copia in modalità fullscreen

306* [Hooks guide](/it/hooks-guide): altri esempi di hook Notification per Linux e Windows

307* [Troubleshooting](/it/troubleshooting): correzioni per problemi al di fuori della configurazione del terminale

third-party-integrations.md +262 −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 della distribuzione aziendale

6 

7> Scopri come Claude Code può integrarsi con vari servizi di terze parti e infrastrutture per soddisfare i requisiti di distribuzione aziendale.

8 

9Le organizzazioni possono distribuire Claude Code direttamente tramite Anthropic o tramite un provider cloud. Questa pagina ti aiuta a scegliere la configurazione giusta.

10 

11## Confronta le opzioni di distribuzione

12 

13Per la maggior parte delle organizzazioni, Claude for Teams o Claude for Enterprise offre la migliore esperienza. I membri del team ottengono accesso sia a Claude Code che a Claude sul web con un'unica sottoscrizione, fatturazione centralizzata e nessuna configurazione dell'infrastruttura richiesta.

14 

15**Claude for Teams** è self-service e include funzionalità di collaborazione, strumenti di amministrazione e gestione della fatturazione. Ideale per team più piccoli che hanno bisogno di iniziare rapidamente.

16 

17**Claude for Enterprise** aggiunge SSO e domain capture, autorizzazioni basate sui ruoli, accesso all'API di conformità e impostazioni di policy gestite per la distribuzione di configurazioni Claude Code a livello organizzativo. Ideale per organizzazioni più grandi con requisiti di sicurezza e conformità.

18 

19Scopri di più su [Team plans](https://support.claude.com/en/articles/9266767-what-is-the-team-plan) e [Enterprise plans](https://support.claude.com/en/articles/9797531-what-is-the-enterprise-plan).

20 

21Se la tua organizzazione ha requisiti infrastrutturali specifici, confronta le opzioni di seguito:

22 

23<table>

24 <thead>

25 <tr>

26 <th>Funzionalità</th>

27 <th>Claude for Teams/Enterprise</th>

28 <th>Anthropic Console</th>

29 <th>Amazon Bedrock</th>

30 <th>Google Vertex AI</th>

31 <th>Microsoft Foundry</th>

32 </tr>

33 </thead>

34 

35 <tbody>

36 <tr>

37 <td>Ideale per</td>

38 <td>La maggior parte delle organizzazioni (consigliato)</td>

39 <td>Sviluppatori individuali</td>

40 <td>Distribuzioni native AWS</td>

41 <td>Distribuzioni native GCP</td>

42 <td>Distribuzioni native Azure</td>

43 </tr>

44 

45 <tr>

46 <td>Fatturazione</td>

47 <td><strong>Teams:</strong> \$150/seat (Premium) con PAYG disponibile<br /><strong>Enterprise:</strong> <a href="https://claude.com/contact-sales?utm_source=claude_code&utm_medium=docs&utm_content=third_party_enterprise">Contatta il team di vendita</a></td>

48 <td>PAYG</td>

49 <td>PAYG tramite AWS</td>

50 <td>PAYG tramite GCP</td>

51 <td>PAYG tramite Azure</td>

52 </tr>

53 

54 <tr>

55 <td>Regioni</td>

56 <td>Paesi supportati [countries](https://www.anthropic.com/supported-countries)</td>

57 <td>Paesi supportati [countries](https://www.anthropic.com/supported-countries)</td>

58 <td>Più [regions](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html) AWS</td>

59 <td>Più [regions](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations) GCP</td>

60 <td>Più [regions](https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/) Azure</td>

61 </tr>

62 

63 <tr>

64 <td>prompt caching</td>

65 <td>Abilitato per impostazione predefinita</td>

66 <td>Abilitato per impostazione predefinita</td>

67 <td>Abilitato per impostazione predefinita</td>

68 <td>Abilitato per impostazione predefinita</td>

69 <td>Abilitato per impostazione predefinita</td>

70 </tr>

71 

72 <tr>

73 <td>Autenticazione</td>

74 <td>Claude.ai SSO o email</td>

75 <td>API key</td>

76 <td>API key o credenziali AWS</td>

77 <td>Credenziali GCP</td>

78 <td>API key o Microsoft Entra ID</td>

79 </tr>

80 

81 <tr>

82 <td>Tracciamento dei costi</td>

83 <td>Dashboard di utilizzo</td>

84 <td>Dashboard di utilizzo</td>

85 <td>AWS Cost Explorer</td>

86 <td>GCP Billing</td>

87 <td>Azure Cost Management</td>

88 </tr>

89 

90 <tr>

91 <td>Include Claude sul web</td>

92 <td>Sì</td>

93 <td>No</td>

94 <td>No</td>

95 <td>No</td>

96 <td>No</td>

97 </tr>

98 

99 <tr>

100 <td>Funzionalità Enterprise</td>

101 <td>Gestione del team, SSO, monitoraggio dell'utilizzo</td>

102 <td>Nessuna</td>

103 <td>Policy IAM, CloudTrail</td>

104 <td>Ruoli IAM, Cloud Audit Logs</td>

105 <td>Policy RBAC, Azure Monitor</td>

106 </tr>

107 </tbody>

108</table>

109 

110Seleziona un'opzione di distribuzione per visualizzare le istruzioni di configurazione:

111 

112* [Claude for Teams o Enterprise](/it/authentication#claude-for-teams-or-enterprise)

113* [Anthropic Console](/it/authentication#claude-console-authentication)

114* [Amazon Bedrock](/it/amazon-bedrock)

115* [Google Vertex AI](/it/google-vertex-ai)

116* [Microsoft Foundry](/it/microsoft-foundry)

117 

118## Configura proxy e gateway

119 

120La maggior parte delle organizzazioni può utilizzare un provider cloud direttamente senza configurazione aggiuntiva. Tuttavia, potrebbe essere necessario configurare un proxy aziendale o un gateway LLM se la tua organizzazione ha requisiti di rete o gestione specifici. Queste sono configurazioni diverse che possono essere utilizzate insieme:

121 

122* **Corporate proxy**: Instrada il traffico attraverso un proxy HTTP/HTTPS. Utilizzalo se la tua organizzazione richiede che tutto il traffico in uscita passi attraverso un server proxy per il monitoraggio della sicurezza, la conformità o l'applicazione della policy di rete. Configura con le variabili di ambiente `HTTPS_PROXY` o `HTTP_PROXY`. Scopri di più in [Enterprise network configuration](/it/network-config).

123* **LLM Gateway**: Un servizio che si trova tra Claude Code e il provider cloud per gestire l'autenticazione e il routing. Utilizzalo se hai bisogno di tracciamento centralizzato dell'utilizzo tra i team, rate limiting personalizzato o budget, o gestione centralizzata dell'autenticazione. Configura con le variabili di ambiente `ANTHROPIC_BASE_URL`, `ANTHROPIC_BEDROCK_BASE_URL`, o `ANTHROPIC_VERTEX_BASE_URL`. Scopri di più in [LLM gateway configuration](/it/llm-gateway).

124 

125I seguenti esempi mostrano le variabili di ambiente da impostare nella tua shell o nel profilo shell (`.bashrc`, `.zshrc`). Vedi [Settings](/it/settings) per altri metodi di configurazione.

126 

127### Amazon Bedrock

128 

129<Tabs>

130 <Tab title="Corporate proxy">

131 Instrada il traffico Bedrock attraverso il tuo proxy aziendale impostando le seguenti [variabili di ambiente](/it/env-vars):

132 

133 ```bash theme={null}

134 # Enable Bedrock

135 export CLAUDE_CODE_USE_BEDROCK=1

136 export AWS_REGION=us-east-1

137 

138 # Configure corporate proxy

139 export HTTPS_PROXY='https://proxy.example.com:8080'

140 ```

141 </Tab>

142 

143 <Tab title="LLM Gateway">

144 Instrada il traffico Bedrock attraverso il tuo gateway LLM impostando le seguenti [variabili di ambiente](/it/env-vars):

145 

146 ```bash theme={null}

147 # Enable Bedrock

148 export CLAUDE_CODE_USE_BEDROCK=1

149 

150 # Configure LLM gateway

151 export ANTHROPIC_BEDROCK_BASE_URL='https://your-llm-gateway.com/bedrock'

152 export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1 # If gateway handles AWS auth

153 ```

154 </Tab>

155</Tabs>

156 

157### Microsoft Foundry

158 

159<Tabs>

160 <Tab title="Corporate proxy">

161 Instrada il traffico Foundry attraverso il tuo proxy aziendale impostando le seguenti [variabili di ambiente](/it/env-vars):

162 

163 ```bash theme={null}

164 # Enable Microsoft Foundry

165 export CLAUDE_CODE_USE_FOUNDRY=1

166 export ANTHROPIC_FOUNDRY_RESOURCE=your-resource

167 export ANTHROPIC_FOUNDRY_API_KEY=your-api-key # Or omit for Entra ID auth

168 

169 # Configure corporate proxy

170 export HTTPS_PROXY='https://proxy.example.com:8080'

171 ```

172 </Tab>

173 

174 <Tab title="LLM Gateway">

175 Instrada il traffico Foundry attraverso il tuo gateway LLM impostando le seguenti [variabili di ambiente](/it/env-vars):

176 

177 ```bash theme={null}

178 # Enable Microsoft Foundry

179 export CLAUDE_CODE_USE_FOUNDRY=1

180 

181 # Configure LLM gateway

182 export ANTHROPIC_FOUNDRY_BASE_URL='https://your-llm-gateway.com'

183 export CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1 # If gateway handles Azure auth

184 ```

185 </Tab>

186</Tabs>

187 

188### Google Vertex AI

189 

190<Tabs>

191 <Tab title="Corporate proxy">

192 Instrada il traffico Vertex AI attraverso il tuo proxy aziendale impostando le seguenti [variabili di ambiente](/it/env-vars):

193 

194 ```bash theme={null}

195 # Enable Vertex

196 export CLAUDE_CODE_USE_VERTEX=1

197 export CLOUD_ML_REGION=us-east5

198 export ANTHROPIC_VERTEX_PROJECT_ID=your-project-id

199 

200 # Configure corporate proxy

201 export HTTPS_PROXY='https://proxy.example.com:8080'

202 ```

203 </Tab>

204 

205 <Tab title="LLM Gateway">

206 Instrada il traffico Vertex AI attraverso il tuo gateway LLM impostando le seguenti [variabili di ambiente](/it/env-vars):

207 

208 ```bash theme={null}

209 # Enable Vertex

210 export CLAUDE_CODE_USE_VERTEX=1

211 

212 # Configure LLM gateway

213 export ANTHROPIC_VERTEX_BASE_URL='https://your-llm-gateway.com/vertex'

214 export CLAUDE_CODE_SKIP_VERTEX_AUTH=1 # If gateway handles GCP auth

215 ```

216 </Tab>

217</Tabs>

218 

219<Tip>

220 Usa `/status` in Claude Code per verificare che la configurazione del proxy e del gateway sia applicata correttamente.

221</Tip>

222 

223## Best practice per le organizzazioni

224 

225### Investi nella documentazione e nella memoria

226 

227Ti consigliamo vivamente di investire nella documentazione in modo che Claude Code comprenda il tuo codebase. Le organizzazioni possono distribuire file CLAUDE.md a più livelli:

228 

229* **A livello organizzativo**: Distribuisci a directory di sistema come `/Library/Application Support/ClaudeCode/CLAUDE.md` (macOS) per gli standard a livello aziendale

230* **A livello di repository**: Crea file `CLAUDE.md` nelle radici dei repository contenenti l'architettura del progetto, i comandi di build e le linee guida per i contributi. Archivialo nel controllo del codice sorgente in modo che tutti gli utenti ne traggano beneficio

231 

232Scopri di più in [Memory and CLAUDE.md files](/it/memory).

233 

234### Semplifica la distribuzione

235 

236Se hai un ambiente di sviluppo personalizzato, riteniamo che creare un modo "one click" per installare Claude Code sia fondamentale per aumentare l'adozione in tutta l'organizzazione.

237 

238### Inizia con un utilizzo guidato

239 

240Incoraggia i nuovi utenti a provare Claude Code per domande e risposte sul codebase, o su correzioni di bug più piccole o richieste di funzionalità. Chiedi a Claude Code di fare un piano. Controlla i suggerimenti di Claude e fornisci feedback se è fuori strada. Nel tempo, man mano che gli utenti comprendono meglio questo nuovo paradigma, saranno più efficaci nel permettere a Claude Code di funzionare in modo più agentico.

241 

242### Fissa le versioni dei modelli per i provider cloud

243 

244Se distribuisci tramite [Bedrock](/it/amazon-bedrock), [Vertex AI](/it/google-vertex-ai), o [Foundry](/it/microsoft-foundry), fissa versioni specifiche dei modelli utilizzando `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`, e `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Senza fissare, gli alias dei modelli Claude Code si risolvono nella versione più recente, che può interrompere gli utenti quando Anthropic rilascia un nuovo modello che non è ancora abilitato nel tuo account. Vedi [Model configuration](/it/model-config#pin-models-for-third-party-deployments) per i dettagli.

245 

246### Configura le policy di sicurezza

247 

248I 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ù](/it/security).

249 

250### Sfrutta MCP per le integrazioni

251 

252MCP è un ottimo modo per fornire a Claude Code più informazioni, come la connessione a sistemi di gestione dei ticket o log degli errori. Ti consigliamo che un team centrale configuri i server MCP e archivi una configurazione `.mcp.json` nel codebase in modo che tutti gli utenti ne traggano beneficio. [Scopri di più](/it/mcp).

253 

254In Anthropic, confidiamo in Claude Code per alimentare lo sviluppo in ogni codebase Anthropic. Speriamo che tu apprezzi l'utilizzo di Claude Code tanto quanto lo facciamo noi.

255 

256## Passaggi successivi

257 

258Una volta scelto un'opzione di distribuzione e configurato l'accesso per il tuo team:

259 

2601. **Distribuisci al tuo team**: Condividi le istruzioni di installazione e fai in modo che i membri del team [installino Claude Code](/it/setup) e si autentichino con le loro credenziali.

2612. **Configura la configurazione condivisa**: Crea un [file CLAUDE.md](/it/memory) nei tuoi repository per aiutare Claude Code a comprendere il tuo codebase e gli standard di codifica.

2623. **Configura le autorizzazioni**: Rivedi le [impostazioni di sicurezza](/it/security) per definire cosa Claude Code può e non può fare nel tuo ambiente.

tools-reference.md +148 −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# Riferimento degli strumenti

6 

7> Riferimento completo per gli strumenti che Claude Code può utilizzare, inclusi i requisiti di autorizzazione.

8 

9Claude Code ha accesso a un set di strumenti integrati che lo aiutano a comprendere e modificare la tua codebase. I nomi degli strumenti sono le stringhe esatte che utilizzi nelle [regole di autorizzazione](/it/permissions#tool-specific-permission-rules), [elenchi di strumenti subagent](/it/sub-agents), e [hook matchers](/it/hooks). Per disabilitare completamente uno strumento, aggiungi il suo nome all'array `deny` nelle tue [impostazioni di autorizzazione](/it/permissions#tool-specific-permission-rules).

10 

11Per aggiungere strumenti personalizzati, connetti un [server MCP](/it/mcp). Per estendere Claude con flussi di lavoro basati su prompt riutilizzabili, scrivi una [skill](/it/skills), che viene eseguita attraverso lo strumento `Skill` esistente piuttosto che aggiungere una nuova voce di strumento.

12 

13| Strumento | Descrizione | Autorizzazione Richiesta |

14| :--------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------- |

15| `Agent` | Genera un [subagent](/it/sub-agents) con la propria finestra di contesto per gestire un'attività | No |

16| `AskUserQuestion` | Pone domande a scelta multipla per raccogliere requisiti o chiarire ambiguità | No |

17| `Bash` | Esegue comandi shell nel tuo ambiente. Vedi [comportamento dello strumento Bash](#bash-tool-behavior) | Sì |

18| `CronCreate` | Pianifica un prompt ricorrente o una tantum all'interno della sessione corrente. Le attività hanno ambito di sessione e vengono ripristinate su `--resume` o `--continue` se non scadute. Vedi [attività pianificate](/it/scheduled-tasks) | No |

19| `CronDelete` | Annulla un'attività pianificata per ID | No |

20| `CronList` | Elenca tutte le attività pianificate nella sessione | No |

21| `Edit` | Effettua modifiche mirate a file specifici | Sì |

22| `EnterPlanMode` | Passa a Plan Mode per progettare un approccio prima di codificare | No |

23| `EnterWorktree` | Crea un [git worktree](/it/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) isolato e vi accede. Passa un `path` per accedere a un worktree esistente del repository corrente invece di crearne uno nuovo. Non disponibile per i subagent | No |

24| `ExitPlanMode` | Presenta un piano per l'approvazione ed esce da Plan Mode | Sì |

25| `ExitWorktree` | Esce da una sessione worktree e ritorna alla directory originale. Non disponibile per i subagent | No |

26| `Glob` | Trova file in base alla corrispondenza di pattern | No |

27| `Grep` | Cerca pattern nei contenuti dei file | No |

28| `ListMcpResourcesTool` | Elenca le risorse esposte dai [server MCP](/it/mcp) connessi | No |

29| `LSP` | Intelligenza del codice tramite language server: salta alle definizioni, trova riferimenti, segnala errori di tipo e avvisi. Vedi [comportamento dello strumento LSP](#lsp-tool-behavior) | No |

30| `Monitor` | Esegue un comando in background e restituisce ogni riga di output a Claude, in modo che possa reagire alle voci di log, ai cambiamenti di file, o allo stato sottoposto a polling durante la conversazione. Vedi [strumento Monitor](#monitor-tool) | Sì |

31| `NotebookEdit` | Modifica le celle del notebook Jupyter | Sì |

32| `PowerShell` | Esegue comandi PowerShell nativamente. Vedi [strumento PowerShell](#powershell-tool) per la disponibilità | Sì |

33| `Read` | Legge il contenuto dei file | No |

34| `ReadMcpResourceTool` | Legge una risorsa MCP specifica per URI | No |

35| `SendMessage` | Invia un messaggio a un [team di agenti](/it/agent-teams) compagno, o [riprende un subagent](/it/sub-agents#resume-subagents) per il suo ID agente. I subagent interrotti si riprendono automaticamente in background. Disponibile solo quando `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` è impostato | No |

36| `Skill` | Esegue una [skill](/it/skills#control-who-invokes-a-skill) all'interno della conversazione principale | Sì |

37| `TaskCreate` | Crea una nuova attività nell'elenco delle attività | No |

38| `TaskGet` | Recupera i dettagli completi per un'attività specifica | No |

39| `TaskList` | Elenca tutte le attività con il loro stato attuale | No |

40| `TaskOutput` | (Deprecato) Recupera l'output da un'attività in background. Preferisci `Read` sul percorso del file di output dell'attività | No |

41| `TaskStop` | Termina un'attività in background in esecuzione per ID | No |

42| `TaskUpdate` | Aggiorna lo stato dell'attività, le dipendenze, i dettagli, o elimina le attività | No |

43| `TeamCreate` | Crea un [team di agenti](/it/agent-teams) con più compagni. Disponibile solo quando `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` è impostato | No |

44| `TeamDelete` | Scioglie un team di agenti e pulisce i processi dei compagni. Disponibile solo quando `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` è impostato | No |

45| `TodoWrite` | Gestisce l'elenco di controllo delle attività della sessione. Disponibile in modalità non interattiva e in [Agent SDK](/it/headless); le sessioni interattive utilizzano TaskCreate, TaskGet, TaskList, e TaskUpdate | No |

46| `ToolSearch` | Cerca e carica strumenti differiti quando [tool search](/it/mcp#scale-with-mcp-tool-search) è abilitato | No |

47| `WebFetch` | Recupera il contenuto da un URL specificato | Sì |

48| `WebSearch` | Esegue ricerche web | Sì |

49| `Write` | Crea o sovrascrivi file | Sì |

50 

51Le regole di autorizzazione possono essere configurate utilizzando `/permissions` o nelle [impostazioni di autorizzazione](/it/settings#available-settings). Vedi anche [Regole di autorizzazione specifiche dello strumento](/it/permissions#tool-specific-permission-rules).

52 

53## Comportamento dello strumento Bash

54 

55Lo strumento Bash esegue ogni comando in un processo separato con il seguente comportamento di persistenza:

56 

57* Quando Claude esegue `cd` nella sessione principale, la nuova directory di lavoro viene mantenuta nei comandi Bash successivi finché rimane all'interno della directory del progetto o di una [directory di lavoro aggiuntiva](/it/permissions#working-directories) che hai aggiunto con `--add-dir`, `/add-dir`, o `additionalDirectories` nelle impostazioni. Le sessioni subagent non mantengono mai i cambiamenti della directory di lavoro.

58 * 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.

59 * Per disabilitare questo mantenimento in modo che ogni comando Bash inizi nella directory del progetto, imposta `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.

60* Le variabili di ambiente non persistono. Un `export` in un comando non sarà disponibile nel successivo.

61 

62Attiva 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`](/it/env-vars) su uno script shell prima di avviare Claude Code, oppure utilizza un [hook SessionStart](/it/hooks#persist-environment-variables) per popolarlo dinamicamente.

63 

64## Comportamento dello strumento LSP

65 

66Lo strumento LSP fornisce a Claude intelligenza del codice da un language server in esecuzione. Dopo ogni modifica di file, segnala automaticamente errori di tipo e avvisi in modo che Claude possa correggere i problemi senza un passaggio di compilazione separato. Claude può anche chiamarlo direttamente per navigare il codice:

67 

68* Salta alla definizione di un simbolo

69* Trova tutti i riferimenti a un simbolo

70* Ottieni informazioni sul tipo in una posizione

71* Elenca i simboli in un file o workspace

72* Trova implementazioni di un'interfaccia

73* Traccia gerarchie di chiamate

74 

75Lo strumento è inattivo finché non installi un [plugin di intelligenza del codice](/it/discover-plugins#code-intelligence) per il tuo linguaggio. Il plugin raggruppa la configurazione del language server, e installi il binario del server separatamente.

76 

77## Strumento Monitor

78 

79<Note>

80 Lo strumento Monitor richiede Claude Code v2.1.98 o successivo.

81</Note>

82 

83Lo strumento Monitor consente a Claude di osservare qualcosa in background e reagire quando cambia, senza mettere in pausa la conversazione. Chiedi a Claude di:

84 

85* Monitorare un file di log e segnalare gli errori man mano che appaiono

86* Eseguire il polling di una PR o di un lavoro CI e segnalare quando il suo stato cambia

87* Osservare una directory per i cambiamenti di file

88* Tracciare l'output da qualsiasi script di lunga durata che gli indichi

89 

90Claude scrive un piccolo script per l'osservazione, lo esegue in background e riceve ogni riga di output man mano che arriva. Continui a lavorare nella stessa sessione e Claude interviene quando un evento si verifica. Interrompi un monitor chiedendo a Claude di annullarlo o terminando la sessione.

91 

92Monitor utilizza le stesse [regole di autorizzazione di Bash](/it/permissions#tool-specific-permission-rules), quindi i pattern `allow` e `deny` che hai impostato per Bash si applicano anche qui. Non è disponibile su Amazon Bedrock, Google Vertex AI, o Microsoft Foundry. Non è disponibile nemmeno quando `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` è impostato.

93 

94I plugin possono dichiarare monitor che si avviano automaticamente quando il plugin è attivo, invece di chiedere a Claude di avviarli. Vedi [plugin monitors](/it/plugins-reference#monitors).

95 

96## Strumento PowerShell

97 

98Lo strumento PowerShell consente a Claude di eseguire comandi PowerShell nativamente. Su Windows, questo significa che i comandi vengono eseguiti in PowerShell invece di essere instradati attraverso Git Bash. Su Windows senza Git Bash, lo strumento è abilitato automaticamente. Su Windows con Git Bash installato, lo strumento è in rollout progressivo. Su Linux, macOS e WSL, lo strumento è opt-in.

99 

100### Abilita lo strumento PowerShell

101 

102Imposta `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` nel tuo ambiente o in `settings.json`:

103 

104```json theme={null}

105{

106 "env": {

107 "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1"

108 }

109}

110```

111 

112Su Windows, imposta la variabile a `0` per rinunciare al rollout. Su Linux, macOS e WSL, lo strumento richiede PowerShell 7 o successivo: installa `pwsh` e assicurati che sia nel tuo `PATH`.

113 

114Su Windows, Claude Code rileva automaticamente `pwsh.exe` per PowerShell 7+ con un fallback a `powershell.exe` per PowerShell 5.1. Quando lo strumento è abilitato, Claude tratta PowerShell come la shell primaria. Lo strumento Bash rimane disponibile per gli script POSIX quando Git Bash è installato.

115 

116### Selezione della shell nelle impostazioni, negli hook e nelle skill

117 

118Tre impostazioni aggiuntive controllano dove viene utilizzato PowerShell:

119 

120* `"defaultShell": "powershell"` in [`settings.json`](/it/settings#available-settings): instrada i comandi interattivi `!` attraverso PowerShell. Richiede che lo strumento PowerShell sia abilitato.

121* `"shell": "powershell"` su singoli [hook di comando](/it/hooks#command-hook-fields): esegue quell'hook in PowerShell. Gli hook avviano PowerShell direttamente, quindi funziona indipendentemente da `CLAUDE_CODE_USE_POWERSHELL_TOOL`.

122* `shell: powershell` nel [frontmatter della skill](/it/skills#frontmatter-reference): esegue i blocchi `` !`command` `` in PowerShell. Richiede che lo strumento PowerShell sia abilitato.

123 

124Lo stesso comportamento di ripristino della directory di lavoro della sessione principale descritto nella sezione dello strumento Bash si applica ai comandi PowerShell, inclusa la variabile di ambiente `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.

125 

126### Limitazioni dell'anteprima

127 

128Lo strumento PowerShell ha le seguenti limitazioni note durante l'anteprima:

129 

130* I profili PowerShell non vengono caricati

131* Su Windows, il sandboxing non è supportato

132 

133## Verifica quali strumenti sono disponibili

134 

135Il tuo set esatto di strumenti dipende dal tuo provider, dalla piattaforma e dalle impostazioni. Per verificare cosa è caricato in una sessione in esecuzione, chiedi direttamente a Claude:

136 

137```text theme={null}

138What tools do you have access to?

139```

140 

141Claude fornisce un riepilogo conversazionale. Per i nomi esatti degli strumenti MCP, esegui `/mcp`.

142 

143## Vedi anche

144 

145* [Server MCP](/it/mcp): aggiungi strumenti personalizzati connettendo server esterni

146* [Autorizzazioni](/it/permissions): sistema di autorizzazione, sintassi delle regole, e pattern specifici dello strumento

147* [Subagent](/it/sub-agents): configura l'accesso agli strumenti per i subagent

148* [Hooks](/it/hooks-guide): esegui comandi personalizzati prima o dopo l'esecuzione dello strumento

troubleshoot-install.md +803 −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# Risolvi i problemi di installazione e accesso

6 

7> Correggi gli errori di comando non trovato, PATH, permessi, rete e autenticazione durante l'installazione o l'accesso a Claude Code.

8 

9Se l'installazione non riesce o non riesci ad accedere, trova il tuo errore di seguito. Per i problemi di runtime dopo che Claude Code è funzionante, vedi [Risoluzione dei problemi](/it/troubleshooting). Per i problemi di configurazione come impostazioni non applicate o hook non attivati, vedi [Debug della tua configurazione](/it/debug-your-config).

10 

11## Trova il tuo errore

12 

13Abbina il messaggio di errore o il sintomo che stai vedendo a una soluzione:

14 

15| Quello che vedi | Soluzione |

16| :--------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------- |

17| `command not found: claude` o `'claude' is not recognized` | [Correggi il tuo PATH](#command-not-found-claude-after-installation) |

18| `syntax error near unexpected token '<'` | [Lo script di installazione restituisce HTML](#install-script-returns-html-instead-of-a-shell-script) |

19| `curl: (56) Failure writing output to destination` | [Controlla la connettività o usa un programma di installazione alternativo](#curl-56-failure-writing-output-to-destination) |

20| `Killed` durante l'installazione su Linux | [Aggiungi spazio di swap per server a bassa memoria](#install-killed-on-low-memory-linux-servers) |

21| `TLS connect error` o `SSL/TLS secure channel` | [Aggiorna i certificati CA](#tls-or-ssl-connection-errors) |

22| `Failed to fetch version` o impossibile raggiungere il server di download | [Controlla le impostazioni di rete e proxy](#check-network-connectivity) |

23| `irm is not recognized` o `&& is not valid` | [Usa il comando giusto per la tua shell](#wrong-install-command-on-windows) |

24| `'bash' is not recognized as the name of a cmdlet` | [Usa il comando del programma di installazione di Windows](#wrong-install-command-on-windows) |

25| `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell` | [Installa una shell](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell) |

26| `Claude Code does not support 32-bit Windows` | [Apri Windows PowerShell, non la voce x86](#claude-code-does-not-support-32-bit-windows) |

27| `The process cannot access the file ... because it is being used by another process` | [Svuota la cartella dei download e riprova](#the-process-cannot-access-the-file-during-windows-install) |

28| `Error loading shared library` | [Variante binaria sbagliata per il tuo sistema](#linux-musl-or-glibc-binary-mismatch) |

29| `Illegal instruction` | [Mancata corrispondenza dell'architettura o del set di istruzioni della CPU](#illegal-instruction) |

30| `cannot execute binary file: Exec format error` in WSL | [Regressione binaria nativa WSL1](#exec-format-error-on-wsl1) |

31| Il programma di installazione di PowerShell si completa ma `claude` non viene trovato o mostra una versione precedente | [Riavvia il tuo terminale e verifica PATH](#verify-your-path) |

32| `dyld: cannot load`, `dyld: Symbol not found`, o `Abort trap` su macOS | [Incompatibilità binaria](#dyld-cannot-load-on-macos) |

33| `Invoke-Expression: Missing argument in parameter list` | [Lo script di installazione restituisce HTML](#install-script-returns-html-instead-of-a-shell-script) |

34| `App unavailable in region` | Claude Code non è disponibile nel tuo paese. Vedi [paesi supportati](https://www.anthropic.com/supported-countries). |

35| `unable to get local issuer certificate` | [Configura i certificati CA aziendali](#tls-or-ssl-connection-errors) |

36| `OAuth error` o `403 Forbidden` | [Correggi l'autenticazione](#login-and-authentication) |

37| `Could not load the default credentials` o `Could not load credentials from any providers` | [Credenziali Bedrock, Vertex o Foundry](#bedrock-vertex-or-foundry-credentials-not-loading) |

38| `ChainedTokenCredential authentication failed` o `CredentialUnavailableError` | [Credenziali Bedrock, Vertex o Foundry](#bedrock-vertex-or-foundry-credentials-not-loading) |

39| `API Error: 500`, `529 Overloaded`, `429`, o altri errori 4xx e 5xx non elencati sopra | Vedi il [riferimento degli errori](/it/errors) |

40 

41Se il tuo problema non è elencato, esegui i controlli diagnostici di seguito per restringere la causa.

42 

43<Tip>

44 Se preferisci saltare completamente il terminale, l'[app Claude Code Desktop](/it/desktop-quickstart) ti consente di installare e utilizzare Claude Code tramite un'interfaccia grafica. Scaricala per [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) o [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) e inizia a codificare senza alcuna configurazione da riga di comando.

45</Tip>

46 

47## Esegui controlli diagnostici

48 

49### Controlla la connettività di rete

50 

51Il programma di installazione scarica da `downloads.claude.ai`. Verifica di poterlo raggiungere:

52 

53```bash theme={null}

54curl -sI https://downloads.claude.ai/claude-code-releases/latest

55```

56 

57Una riga `HTTP/2 200` significa che hai raggiunto il server. Se non vedi output, `Could not resolve host`, o un timeout di connessione, la tua rete sta bloccando la connessione. Le cause comuni sono:

58 

59* Firewall aziendali o proxy che bloccano `downloads.claude.ai`

60* Restrizioni di rete regionali: prova una VPN o una rete alternativa

61* Problemi TLS/SSL: aggiorna i certificati CA del tuo sistema, o controlla se `HTTPS_PROXY` è configurato

62 

63Se sei dietro un proxy aziendale, imposta `HTTPS_PROXY` e `HTTP_PROXY` all'indirizzo del tuo proxy prima di installare. Chiedi al tuo team IT l'URL del proxy se non lo conosci, o controlla le impostazioni del proxy del tuo browser.

64 

65Questo esempio imposta entrambe le variabili proxy, quindi esegue il programma di installazione attraverso il tuo proxy:

66 

67<Tabs>

68 <Tab title="macOS/Linux">

69 ```bash theme={null}

70 export HTTP_PROXY=http://proxy.example.com:8080

71 export HTTPS_PROXY=http://proxy.example.com:8080

72 curl -fsSL https://claude.ai/install.sh | bash

73 ```

74 </Tab>

75 

76 <Tab title="Windows PowerShell">

77 ```powershell theme={null}

78 $env:HTTP_PROXY = 'http://proxy.example.com:8080'

79 $env:HTTPS_PROXY = 'http://proxy.example.com:8080'

80 irm https://claude.ai/install.ps1 | iex

81 ```

82 </Tab>

83</Tabs>

84 

85### Verifica il tuo PATH

86 

87Se l'installazione è riuscita ma ricevi un errore `command not found` o `not recognized` quando esegui `claude`, la directory di installazione non è nel tuo PATH. La tua shell cerca i programmi nelle directory elencate in PATH, e il programma di installazione posiziona `claude` in `~/.local/bin/claude` su macOS/Linux o `%USERPROFILE%\.local\bin\claude.exe` su Windows.

88 

89Controlla se la directory di installazione è nel tuo PATH elencando le tue voci PATH e filtrando per `local/bin`:

90 

91<Tabs>

92 <Tab title="macOS/Linux">

93 ```bash theme={null}

94 echo $PATH | tr ':' '\n' | grep -Fx "$HOME/.local/bin"

95 ```

96 

97 Se questo stampa `/Users/you/.local/bin` o `/home/you/.local/bin`, la directory è nel tuo PATH e puoi saltare a [Controlla le installazioni in conflitto](#check-for-conflicting-installations). Se non c'è output, aggiungilo alla tua configurazione shell.

98 

99 Per Zsh, il default su macOS:

100 

101 ```bash theme={null}

102 echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc

103 source ~/.zshrc

104 ```

105 

106 Per Bash, il default sulla maggior parte delle distribuzioni Linux:

107 

108 ```bash theme={null}

109 echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

110 source ~/.bashrc

111 ```

112 

113 In alternativa, chiudi e riapri il tuo terminale.

114 

115 Per altri shell come fish o Nushell, aggiungi `~/.local/bin` al tuo PATH usando la sintassi di configurazione del tuo shell, quindi riavvia il tuo terminale.

116 

117 Verifica che la correzione abbia funzionato:

118 

119 ```bash theme={null}

120 claude --version

121 ```

122 </Tab>

123 

124 <Tab title="Windows PowerShell">

125 ```powershell theme={null}

126 $env:PATH -split ';' | Select-String '\.local\\bin'

127 ```

128 

129 Se non c'è output, aggiungi la directory di installazione al tuo User PATH:

130 

131 ```powershell theme={null}

132 $currentPath = [Environment]::GetEnvironmentVariable('PATH', 'User')

133 [Environment]::SetEnvironmentVariable('PATH', "$currentPath;$env:USERPROFILE\.local\bin", 'User')

134 ```

135 

136 Riavvia il tuo terminale affinché la modifica abbia effetto.

137 

138 Verifica che la correzione abbia funzionato:

139 

140 ```powershell theme={null}

141 claude --version

142 ```

143 </Tab>

144 

145 <Tab title="Windows CMD">

146 ```batch theme={null}

147 echo %PATH% | findstr /i "local\bin"

148 ```

149 

150 Se non c'è output, apri Impostazioni di sistema, vai a Variabili di ambiente, e aggiungi `%USERPROFILE%\.local\bin` alla tua variabile User PATH. Riavvia il tuo terminale.

151 

152 Verifica che la correzione abbia funzionato:

153 

154 ```batch theme={null}

155 claude --version

156 ```

157 </Tab>

158</Tabs>

159 

160### Controlla le installazioni in conflitto

161 

162Più installazioni di Claude Code possono causare mancate corrispondenze di versione o comportamenti inaspettati. Controlla cosa è installato:

163 

164<Tabs>

165 <Tab title="macOS/Linux">

166 Elenca tutti i binari `claude` trovati nel tuo PATH:

167 

168 ```bash theme={null}

169 which -a claude

170 ```

171 

172 Se questo non stampa nulla, nessun `claude` è ancora nel tuo PATH. Torna a [Verifica il tuo PATH](#verify-your-path).

173 

174 Controlla le tre posizioni da cui un binario `claude` può provenire. `~/.local/bin/claude` è il programma di installazione nativo, `~/.claude/local/` è un'installazione npm locale legacy creata da versioni precedenti di Claude Code, e l'elenco npm globale mostra un'installazione `-g`:

175 

176 ```bash theme={null}

177 ls -la ~/.local/bin/claude

178 ```

179 

180 ```bash theme={null}

181 ls -la ~/.claude/local/

182 ```

183 

184 ```bash theme={null}

185 npm -g ls @anthropic-ai/claude-code 2>/dev/null

186 ```

187 </Tab>

188 

189 <Tab title="Windows PowerShell">

190 Elenca tutti i binari `claude` trovati nel tuo PATH:

191 

192 ```powershell theme={null}

193 where.exe claude

194 ```

195 

196 Controlla se il programma di installazione nativo ha posizionato un binario:

197 

198 ```powershell theme={null}

199 Test-Path "$env:USERPROFILE\.local\bin\claude.exe"

200 ```

201 </Tab>

202</Tabs>

203 

204Se trovi più installazioni, mantieni solo una. L'installazione nativa in `~/.local/bin/claude` su macOS/Linux o `%USERPROFILE%\.local\bin\claude.exe` su Windows è consigliata. Rimuovi le altre:

205 

206Disinstalla un'installazione npm globale:

207 

208```bash theme={null}

209npm uninstall -g @anthropic-ai/claude-code

210```

211 

212Rimuovi l'installazione npm locale legacy:

213 

214```bash theme={null}

215rm -rf ~/.claude/local

216```

217 

218Su Windows, usa PowerShell:

219 

220```powershell theme={null}

221Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\local"

222```

223 

224Rimuovi un'installazione Homebrew su macOS. Se hai installato il cask `claude-code@latest`, sostituisci quel nome:

225 

226```bash theme={null}

227brew uninstall --cask claude-code

228```

229 

230Rimuovi un'installazione WinGet su Windows:

231 

232```powershell theme={null}

233winget uninstall Anthropic.ClaudeCode

234```

235 

236### Controlla i permessi della directory

237 

238Il programma di installazione ha bisogno di accesso in scrittura a `~/.local/bin/` e `~/.claude/` su macOS e Linux. Su Windows la posizione di installazione è sotto `%USERPROFILE%`, che è scrivibile dal tuo utente per impostazione predefinita, quindi questa sezione raramente si applica lì.

239 

240Controlla se le directory sono scrivibili:

241 

242```bash theme={null}

243test -w ~/.local/bin && echo "writable" || echo "not writable"

244test -w ~/.claude && echo "writable" || echo "not writable"

245```

246 

247Se una directory non è scrivibile, crea la directory di installazione e imposta il tuo utente come proprietario:

248 

249```bash theme={null}

250sudo mkdir -p ~/.local/bin

251sudo chown -R $(whoami) ~/.local

252```

253 

254### Verifica che il binario funzioni

255 

256Se `claude --version` stampa una versione ma `claude` si arresta in modo anomalo o si blocca all'avvio, esegui questi controlli per restringere la causa. Se `claude --version` dice comando non trovato, vai a [Verifica il tuo PATH](#verify-your-path) prima; i comandi di seguito presuppongono che `claude` sia nel tuo PATH.

257 

258Conferma che il binario esiste ed è eseguibile:

259 

260```bash theme={null}

261ls -la "$(command -v claude)"

262```

263 

264Su Windows, usa PowerShell:

265 

266```powershell theme={null}

267Get-Command claude | Select-Object Source

268```

269 

270Su Linux, controlla le librerie condivise mancanti. Se `ldd` mostra librerie mancanti, potrebbe essere necessario installare pacchetti di sistema. Su Alpine Linux e altre distribuzioni basate su musl, vedi [Configurazione di Alpine Linux](/it/setup#alpine-linux-and-musl-based-distributions).

271 

272```bash theme={null}

273ldd "$(command -v claude)" | grep "not found"

274```

275 

276Conferma che il binario può essere eseguito:

277 

278```bash theme={null}

279claude --version

280```

281 

282## Problemi di installazione comuni

283 

284Questi sono i problemi di installazione più frequentemente riscontrati e le loro soluzioni.

285 

286### Lo script di installazione restituisce HTML invece di uno script shell

287 

288Quando esegui il comando di installazione, potresti vedere uno di questi errori:

289 

290```text theme={null}

291bash: line 1: syntax error near unexpected token `<'

292bash: line 1: `<!DOCTYPE html>'

293```

294 

295Su PowerShell, lo stesso problema appare come:

296 

297```text theme={null}

298Invoke-Expression: Missing argument in parameter list.

299```

300 

301Questo significa che l'URL di installazione ha restituito una pagina HTML invece dello script di installazione. Se la pagina HTML dice "App unavailable in region," Claude Code non è disponibile nel tuo paese. Vedi [paesi supportati](https://www.anthropic.com/supported-countries).

302 

303Altrimenti, questo può accadere a causa di problemi di rete, routing regionale, o un'interruzione temporanea del servizio.

304 

305**Soluzioni:**

306 

3071. **Usa un metodo di installazione alternativo**:

308 

309 Su macOS, installa tramite Homebrew:

310 

311 ```bash theme={null}

312 brew install --cask claude-code

313 ```

314 

315 Su Windows, installa tramite WinGet:

316 

317 ```powershell theme={null}

318 winget install Anthropic.ClaudeCode

319 ```

320 

3212. **Riprova dopo alcuni minuti**: il problema è spesso temporaneo. Aspetta e prova di nuovo il comando originale.

322 

323### `command not found: claude` dopo l'installazione

324 

325L'installazione è terminata ma `claude` non funziona. L'errore esatto varia in base alla piattaforma:

326 

327| Piattaforma | Messaggio di errore |

328| :---------- | :--------------------------------------------------------------------- |

329| macOS | `zsh: command not found: claude` |

330| Linux | `bash: claude: command not found` |

331| Windows CMD | `'claude' is not recognized as an internal or external command` |

332| PowerShell | `claude : The term 'claude' is not recognized as the name of a cmdlet` |

333 

334Questo significa che la directory di installazione non è nel percorso di ricerca della tua shell. Vedi [Verifica il tuo PATH](#verify-your-path) per la correzione su ogni piattaforma.

335 

336### `curl: (56) Failure writing output to destination`

337 

338Il comando `curl ... | bash` scarica lo script e lo invia a Bash per l'esecuzione. Questo errore significa che la connessione si è interrotta prima che lo script finisse di scaricarsi. Le cause comuni includono interruzioni di rete, il download bloccato a metà flusso, o limiti di risorse di sistema.

339 

340**Soluzioni:**

341 

3421. **Controlla la stabilità della rete**: i binari di Claude Code sono ospitati in `downloads.claude.ai`. Testa che puoi raggiungerlo:

343 ```bash theme={null}

344 curl -sI https://downloads.claude.ai/claude-code-releases/latest

345 ```

346 Una riga `HTTP/2 200` significa che hai raggiunto il server e il fallimento originale era probabilmente intermittente; riprova il comando di installazione. Se vedi `Could not resolve host` o un timeout di connessione, la tua rete sta bloccando il download.

347 

3482. **Prova un metodo di installazione alternativo**:

349 

350 Su macOS:

351 

352 ```bash theme={null}

353 brew install --cask claude-code

354 ```

355 

356 Su Windows:

357 

358 ```powershell theme={null}

359 winget install Anthropic.ClaudeCode

360 ```

361 

362### Errori di connessione TLS o SSL

363 

364Errori come `curl: (35) TLS connect error`, `schannel: next InitializeSecurityContext failed`, o il `Could not establish trust relationship for the SSL/TLS secure channel` di PowerShell indicano fallimenti dell'handshake TLS.

365 

366**Soluzioni:**

367 

3681. **Aggiorna i certificati CA del tuo sistema**:

369 

370 Su Ubuntu/Debian:

371 

372 ```bash theme={null}

373 sudo apt-get update && sudo apt-get install ca-certificates

374 ```

375 

376 Su macOS, il curl di sistema utilizza l'archivio di fiducia Keychain; l'aggiornamento di macOS stesso aggiorna i certificati root.

377 

3782. **Su Windows, abilita TLS 1.2** in PowerShell prima di eseguire il programma di installazione:

379 ```powershell theme={null}

380 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

381 irm https://claude.ai/install.ps1 | iex

382 ```

383 

3843. **Controlla l'interferenza del proxy o del firewall**: i proxy aziendali che eseguono l'ispezione TLS possono causare questi errori, inclusi `unable to get local issuer certificate` e `SELF_SIGNED_CERT_IN_CHAIN`. Per il passaggio di installazione, punta curl al tuo bundle CA aziendale con `--cacert`:

385 ```bash theme={null}

386 curl --cacert /path/to/corporate-ca.pem -fsSL https://claude.ai/install.sh | bash

387 ```

388 Per Claude Code stesso una volta installato, imposta `NODE_EXTRA_CA_CERTS` in modo che le richieste API si fidino dello stesso bundle:

389 ```bash theme={null}

390 export NODE_EXTRA_CA_CERTS=/path/to/corporate-ca.pem

391 ```

392 Chiedi al tuo team IT il file di certificato se non lo hai. Puoi anche provare su una connessione diretta per confermare che il proxy è la causa.

393 

3944. **Su Windows, ignora i controlli di revoca dei certificati** se vedi `CRYPT_E_NO_REVOCATION_CHECK (0x80092012)` o `CRYPT_E_REVOCATION_OFFLINE (0x80092013)`. Questi significano che curl ha raggiunto il server ma la tua rete blocca la ricerca di revoca del certificato, che è comune dietro firewall aziendali. Aggiungi `--ssl-revoke-best-effort` al comando di installazione:

395 ```batch theme={null}

396 curl --ssl-revoke-best-effort -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

397 ```

398 In alternativa, installa con `winget install Anthropic.ClaudeCode`, che evita curl completamente.

399 

400### `Failed to fetch version from downloads.claude.ai`

401 

402Il programma di installazione non ha potuto raggiungere il server di download. Questo in genere significa che `downloads.claude.ai` è bloccato sulla tua rete.

403 

404**Soluzioni:**

405 

4061. **Testa la connettività direttamente**:

407 ```bash theme={null}

408 curl -sI https://downloads.claude.ai/claude-code-releases/latest

409 ```

410 

4112. **Se dietro un proxy**, imposta `HTTPS_PROXY` in modo che il programma di installazione possa instradarlo attraverso. Vedi [configurazione del proxy](/it/network-config#proxy-configuration) per i dettagli.

412 ```bash theme={null}

413 export HTTPS_PROXY=http://proxy.example.com:8080

414 curl -fsSL https://claude.ai/install.sh | bash

415 ```

416 

4173. **Se su una rete ristretta**, prova una rete diversa o una VPN, o usa un metodo di installazione alternativo:

418 

419 Su macOS:

420 

421 ```bash theme={null}

422 brew install --cask claude-code

423 ```

424 

425 Su Windows:

426 

427 ```powershell theme={null}

428 winget install Anthropic.ClaudeCode

429 ```

430 

431### Comando di installazione sbagliato su Windows

432 

433Se vedi `'irm' is not recognized`, `The token '&&' is not valid`, o `'bash' is not recognized as the name of a cmdlet`, hai copiato il comando di installazione per una shell o un sistema operativo diverso.

434 

435* **`irm` non riconosciuto**: sei in CMD, non PowerShell. Hai due opzioni:

436 

437 Apri PowerShell cercando "PowerShell" nel menu Start, quindi esegui il comando di installazione originale:

438 

439 ```powershell theme={null}

440 irm https://claude.ai/install.ps1 | iex

441 ```

442 

443 Oppure rimani in CMD e usa il programma di installazione CMD invece:

444 

445 ```batch theme={null}

446 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

447 ```

448 

449* **`&&` non valido**: sei in PowerShell ma hai eseguito il comando del programma di installazione CMD. Usa il programma di installazione PowerShell:

450 ```powershell theme={null}

451 irm https://claude.ai/install.ps1 | iex

452 ```

453 

454* **`bash` non riconosciuto**: hai eseguito il programma di installazione macOS/Linux su Windows. Usa il programma di installazione PowerShell invece:

455 ```powershell theme={null}

456 irm https://claude.ai/install.ps1 | iex

457 ```

458 

459### `The process cannot access the file` durante l'installazione su Windows

460 

461Se il programma di installazione PowerShell non riesce con `Failed to download binary: The process cannot access the file ... because it is being used by another process`, il programma di installazione non ha potuto scrivere in `%USERPROFILE%\.claude\downloads`. Questo di solito significa che un tentativo di installazione precedente è ancora in esecuzione, o il software antivirus sta scansionando un binario parzialmente scaricato in quella cartella.

462 

463Chiudi tutte le altre finestre di PowerShell che eseguono il programma di installazione e aspetta che le scansioni antivirus rilascino il file. Quindi elimina la cartella dei download e esegui di nuovo il programma di installazione:

464 

465```powershell theme={null}

466Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\downloads"

467irm https://claude.ai/install.ps1 | iex

468```

469 

470### L'installazione viene interrotta su server Linux a bassa memoria

471 

472Se vedi `Killed` durante l'installazione su un VPS o un'istanza cloud:

473 

474```text theme={null}

475Setting up Claude Code...

476Installing Claude Code native build latest...

477bash: line 142: 34803 Killed "$binary_path" install ${TARGET:+"$TARGET"}

478```

479 

480L'OOM killer di Linux ha terminato il processo perché il sistema ha esaurito la memoria. Claude Code richiede almeno 4 GB di RAM disponibile.

481 

482**Soluzioni:**

483 

4841. **Aggiungi spazio di swap** se il tuo server ha RAM limitata. Lo swap utilizza lo spazio su disco come memoria di overflow, consentendo al programma di installazione di completarsi anche con RAM fisica bassa.

485 

486 Crea un file di swap da 2 GB e abilitalo:

487 

488 ```bash theme={null}

489 sudo fallocate -l 2G /swapfile

490 sudo chmod 600 /swapfile

491 sudo mkswap /swapfile

492 sudo swapon /swapfile

493 ```

494 

495 Quindi riprova l'installazione:

496 

497 ```bash theme={null}

498 curl -fsSL https://claude.ai/install.sh | bash

499 ```

500 

5012. **Chiudi altri processi** per liberare memoria prima di installare.

502 

5033. **Usa un'istanza più grande** se possibile. Claude Code richiede almeno 4 GB di RAM.

504 

505### L'installazione si blocca in Docker

506 

507Quando installi Claude Code in un contenitore Docker, l'installazione come root in `/` può causare blocchi.

508 

509**Soluzioni:**

510 

5111. **Imposta una directory di lavoro** prima di eseguire il programma di installazione. Quando eseguito da `/`, il programma di installazione scansiona l'intero filesystem, il che causa un utilizzo eccessivo della memoria. L'impostazione di `WORKDIR` limita la scansione a una piccola directory:

512 ```dockerfile theme={null}

513 WORKDIR /tmp

514 RUN curl -fsSL https://claude.ai/install.sh | bash

515 ```

516 

5172. **Aumenta i limiti di memoria di Docker** se usi Docker Desktop:

518 ```bash theme={null}

519 docker build --memory=4g .

520 ```

521 

522### Claude Desktop sostituisce il comando `claude` su Windows

523 

524Se hai installato una versione precedente di Claude Desktop, potrebbe registrare un `Claude.exe` nella directory `WindowsApps` che ha priorità nel PATH rispetto a Claude Code CLI. L'esecuzione di `claude` apre l'app Desktop invece della CLI.

525 

526Aggiorna Claude Desktop alla versione più recente per risolvere questo problema.

527 

528### Claude Code su Windows richiede Git for Windows (per bash) o PowerShell

529 

530Claude Code su Windows nativo ha bisogno di almeno una shell: [Git for Windows](https://git-scm.com/downloads/win) per Bash, o PowerShell. Quando nessuno dei due viene trovato, questo errore appare all'avvio. Se viene trovato solo PowerShell, Claude Code utilizza lo strumento PowerShell invece di Bash.

531 

532**Se nessuno dei due è installato**, installa uno:

533 

534* Git for Windows: scarica da [git-scm.com/downloads/win](https://git-scm.com/downloads/win). Durante la configurazione, seleziona "Add to PATH." Riavvia il tuo terminale dopo l'installazione.

535* PowerShell 7: scarica da [aka.ms/powershell](https://aka.ms/powershell).

536 

537**Se Git è già installato** ma Claude Code non riesce a trovarlo, imposta il percorso nel tuo [file settings.json](/it/settings):

538 

539```json theme={null}

540{

541 "env": {

542 "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"

543 }

544}

545```

546 

547Se il tuo Git è installato da qualche altra parte, trova il percorso eseguendo `where.exe git` in PowerShell e usa il percorso `bin\bash.exe` da quella directory.

548 

549### Claude Code non supporta Windows a 32 bit

550 

551Windows include due voci di PowerShell nel menu Start: `Windows PowerShell` e `Windows PowerShell (x86)`. La voce x86 viene eseguita come processo a 32 bit e attiva questo errore anche su una macchina a 64 bit. Per verificare quale caso sei, esegui questo nella stessa finestra che ha prodotto l'errore:

552 

553```powershell theme={null}

554[Environment]::Is64BitOperatingSystem

555```

556 

557Se questo stampa `True`, il tuo sistema operativo va bene. Chiudi la finestra, apri `Windows PowerShell` senza il suffisso x86, e esegui di nuovo il comando di installazione.

558 

559Se questo stampa `False`, sei su un'edizione Windows a 32 bit. Claude Code richiede un sistema operativo a 64 bit. Vedi i [requisiti di sistema](/it/setup#system-requirements).

560 

561### Mancata corrispondenza binaria musl o glibc di Linux

562 

563Se vedi errori su librerie condivise mancanti come `libstdc++.so.6` o `libgcc_s.so.1` dopo l'installazione, il programma di installazione potrebbe aver scaricato la variante binaria sbagliata per il tuo sistema.

564 

565```text theme={null}

566Error loading shared library libstdc++.so.6: No such file or directory

567```

568 

569Questo può accadere su sistemi basati su glibc che hanno pacchetti di cross-compilazione musl installati, causando al programma di installazione di rilevare erroneamente il sistema come musl.

570 

571**Soluzioni:**

572 

5731. **Controlla quale libc usa il tuo sistema**:

574 ```bash theme={null}

575 ldd --version 2>&1 | head -1

576 ```

577 L'output che menziona `GNU libc` o `GLIBC` significa glibc. L'output che menziona `musl` significa musl.

578 

5792. **Se sei su glibc ma hai ottenuto il binario musl**, rimuovi l'installazione e reinstalla. Puoi anche scaricare manualmente il binario corretto usando il manifesto in `https://downloads.claude.ai/claude-code-releases/{VERSION}/manifest.json`. Apri un [problema GitHub](https://github.com/anthropics/claude-code/issues) con l'output di `ldd --version` e `ls /lib/libc.musl*`.

580 

5813. **Se sei effettivamente su musl**, come Alpine Linux, installa i pacchetti richiesti:

582 ```bash theme={null}

583 apk add libgcc libstdc++ ripgrep

584 ```

585 

586### `Illegal instruction`

587 

588Se l'esecuzione di `claude` o del programma di installazione stampa `Illegal instruction`, il binario nativo utilizza istruzioni CPU che il tuo processore non supporta. Ci sono due cause distinte.

589 

590**Mancata corrispondenza dell'architettura.** Il programma di installazione ha scaricato il binario sbagliato, ad esempio x86 su un server ARM. Controlla con `uname -m` su macOS o Linux, o `$env:PROCESSOR_ARCHITECTURE` in PowerShell. Se il risultato non corrisponde al binario che hai ricevuto, [apri un problema GitHub](https://github.com/anthropics/claude-code/issues) con l'output.

591 

592**Set di istruzioni AVX mancante.** Se la tua architettura è corretta ma vedi ancora `Illegal instruction`, la tua CPU probabilmente manca di AVX o di un'altra istruzione che il binario richiede. Questo colpisce approssimativamente i processori Intel e AMD pre-2013, e le macchine virtuali dove l'hypervisor non passa AVX al guest.

593 

594Su un VPS o VM, esegui `grep -m1 -ow avx /proc/cpuinfo`; un risultato vuoto significa che AVX non è disponibile per il guest.

595 

596Non c'è una soluzione binaria nativa; traccia il [problema #50384](https://github.com/anthropics/claude-code/issues/50384) per lo stato, e includi il modello della tua CPU da `grep -m1 "model name" /proc/cpuinfo` su Linux o `sysctl -n machdep.cpu.brand_string` su macOS quando segnali.

597 

598I metodi di installazione alternativi scaricano lo stesso binario nativo e non risolveranno nessuna delle due cause.

599 

600### `dyld: cannot load` su macOS

601 

602Se vedi `dyld: cannot load`, `dyld: Symbol not found`, o `Abort trap: 6` durante l'installazione, il binario è incompatibile con la tua versione di macOS o hardware.

603 

604```text theme={null}

605dyld: cannot load 'claude-2.1.42-darwin-x64' (load command 0x80000034 is unknown)

606Abort trap: 6

607```

608 

609Un errore `Symbol not found` che fa riferimento a `libicucore` indica anche che la tua versione di macOS è più vecchia di quella supportata dal binario:

610 

611```text theme={null}

612dyld: Symbol not found: _ubrk_clone

613 Referenced from: claude-darwin-x64 (which was built for Mac OS X 13.0)

614 Expected in: /usr/lib/libicucore.A.dylib

615```

616 

617**Soluzioni:**

618 

6191. **Controlla la tua versione di macOS**: Claude Code richiede macOS 13.0 o successivo. Apri il menu Apple e seleziona About This Mac per controllare la tua versione.

620 

6212. **Aggiorna macOS** se sei su una versione precedente. Il binario utilizza comandi di caricamento e librerie di sistema che le versioni macOS precedenti non supportano. I metodi di installazione alternativi come Homebrew scaricano lo stesso binario e non risolveranno questo errore.

622 

623### `Exec format error` su WSL1

624 

625Se l'esecuzione di `claude` in WSL stampa `cannot execute binary file: Exec format error`, sei su WSL1 e stai colpendo una regressione binaria nativa nota tracciata nel [problema #38788](https://github.com/anthropics/claude-code/issues/38788). Le intestazioni del programma del binario sono cambiate in un modo che il caricatore di WSL1 non può gestire.

626 

627La correzione più pulita è convertire la tua distribuzione a WSL2 da PowerShell:

628 

629```powershell theme={null}

630wsl --set-version <DistroName> 2

631```

632 

633Se devi rimanere su WSL1, invoca il binario attraverso il linker dinamico. Aggiungi questa funzione a `~/.bashrc` all'interno di WSL, sostituendo il percorso se la tua directory home è diversa:

634 

635```bash theme={null}

636claude() {

637 /lib64/ld-linux-x86-64.so.2 "$(readlink -f "$HOME/.local/bin/claude")" "$@"

638}

639```

640 

641Quindi esegui `source ~/.bashrc` e riprova `claude`.

642 

643### Errori di installazione npm in WSL

644 

645Questi problemi si applicano se hai installato Claude Code con `npm install -g` all'interno di WSL. Se hai usato il [programma di installazione nativo](/it/setup), salta questa sezione.

646 

647**Problemi di rilevamento del sistema operativo o della piattaforma.** Se npm segnala una mancata corrispondenza della piattaforma durante l'installazione, WSL probabilmente sta raccogliendo il `npm` di Windows. Esegui prima `npm config set os linux`, quindi installa con `npm install -g @anthropic-ai/claude-code --force`. Non usare `sudo`.

648 

649**`exec: node: not found` quando esegui `claude`.** Il tuo ambiente WSL probabilmente sta usando l'installazione di Node.js di Windows. Conferma con `which npm` e `which node`: i percorsi che iniziano con `/mnt/c/` sono binari Windows, mentre i percorsi Linux iniziano con `/usr/`. Per risolvere questo, installa Node tramite il gestore di pacchetti della tua distribuzione Linux o tramite [`nvm`](https://github.com/nvm-sh/nvm).

650 

651**Conflitti di versione nvm.** Se hai nvm installato sia in WSL che in Windows, il cambio delle versioni di Node in WSL potrebbe interrompersi perché WSL importa il PATH di Windows per impostazione predefinita e nvm di Windows ha priorità. La causa più comune è che nvm non è caricato nella tua shell. Aggiungi il caricatore nvm a `~/.bashrc` o `~/.zshrc`:

652 

653```bash theme={null}

654export NVM_DIR="$HOME/.nvm"

655[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

656[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

657```

658 

659Oppure caricalo nella tua sessione corrente:

660 

661```bash theme={null}

662source ~/.nvm/nvm.sh

663```

664 

665Se nvm è caricato ma i percorsi di Windows hanno ancora priorità, anteponi esplicitamente il tuo percorso Node di Linux:

666 

667```bash theme={null}

668export PATH="$HOME/.nvm/versions/node/$(node -v)/bin:$PATH"

669```

670 

671<Warning>

672 Evita di disabilitare l'importazione del PATH di Windows tramite `appendWindowsPath = false` poiché questo interrompe la capacità di chiamare eseguibili di Windows da WSL. Allo stesso modo, evita di disinstallare Node.js da Windows se lo usi per lo sviluppo di Windows.

673</Warning>

674 

675### Errori di permessi durante l'installazione

676 

677Se il programma di installazione nativo non riesce con errori di permessi, la directory di destinazione potrebbe non essere scrivibile. Vedi [Controlla i permessi della directory](#check-directory-permissions).

678 

679Se hai precedentemente installato con npm e stai riscontrando errori di permessi specifici di npm, passa al programma di installazione nativo:

680 

681```bash theme={null}

682curl -fsSL https://claude.ai/install.sh | bash

683```

684 

685### Binario nativo non trovato dopo l'installazione npm

686 

687Il pacchetto npm `@anthropic-ai/claude-code` estrae il binario nativo attraverso una dipendenza opzionale per piattaforma come `@anthropic-ai/claude-code-darwin-arm64`. Se l'esecuzione di `claude` dopo l'installazione stampa `Could not find native binary package "@anthropic-ai/claude-code-<platform>"`, controlla le seguenti cause:

688 

689* **Le dipendenze opzionali sono disabilitate.** Rimuovi `--omit=optional` dal tuo comando di installazione npm, `--no-optional` da pnpm, o `--ignore-optional` da yarn, e controlla che `.npmrc` non imposti `optional=false`. Quindi reinstalla. Il binario nativo viene consegnato solo come dipendenza opzionale, quindi non c'è fallback JavaScript se viene saltato.

690* **Piattaforma non supportata.** I binari precompilati vengono pubblicati per `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `linux-x64-musl`, `linux-arm64-musl`, `win32-x64`, e `win32-arm64`. Claude Code non spedisce un binario per altre piattaforme; vedi i [requisiti di sistema](/it/setup#system-requirements).

691* **Lo specchio npm aziendale manca dei pacchetti della piattaforma.** Assicurati che il tuo registro rispecchi tutti gli otto pacchetti `@anthropic-ai/claude-code-*` della piattaforma oltre al pacchetto meta.

692 

693L'installazione con `--ignore-scripts` non attiva questo errore. Il passaggio postinstall che collega il binario in posizione viene saltato, quindi Claude Code ricade su un wrapper che individua e genera il binario della piattaforma ad ogni avvio. Questo funziona ma si avvia più lentamente; reinstalla con gli script abilitati per l'esecuzione diretta.

694 

695## Accesso e autenticazione

696 

697Queste sezioni affrontano i fallimenti di accesso, gli errori OAuth e i problemi di token.

698 

699### Reimposta il tuo accesso

700 

701Quando l'accesso non riesce e la causa non è ovvia, una re-autenticazione pulita risolve la maggior parte dei casi:

702 

7031. Esegui `/logout` per disconnetterti completamente

7042. Chiudi Claude Code

7053. Riavvia con `claude` e completa di nuovo il processo di autenticazione

706 

707Se il browser non si apre automaticamente durante l'accesso, premi `c` per copiare l'URL OAuth negli appunti, quindi incollalo in un browser manualmente. Questo funziona anche quando l'URL si avvolge su più righe in un terminale stretto o SSH e non può essere cliccato direttamente.

708 

709### Errore OAuth: codice non valido

710 

711Se vedi `OAuth error: Invalid code. Please make sure the full code was copied`, il codice di accesso è scaduto o è stato troncato durante il copia-incolla.

712 

713**Soluzioni:**

714 

715* Premi Invio per riprovare e completa l'accesso rapidamente dopo che il browser si apre

716* Digita `c` per copiare l'URL completo se il browser non si apre automaticamente

717* Se usi una sessione remota/SSH, il browser potrebbe aprirsi sulla macchina sbagliata. Copia l'URL visualizzato nel terminale e aprilo nel tuo browser locale invece.

718 

719### 403 Forbidden dopo l'accesso

720 

721Se vedi `API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}}` dopo l'accesso:

722 

723* **Utenti Claude Pro/Max**: verifica che il tuo abbonamento sia attivo in [claude.ai/settings](https://claude.ai/settings)

724* **Utenti della Console Anthropic**: conferma che il tuo account ha il ruolo "Claude Code" o "Developer". Gli amministratori assegnano questo nella Console Anthropic sotto Impostazioni → Membri.

725* **Dietro un proxy**: i proxy aziendali possono interferire con le richieste API. Vedi [configurazione di rete](/it/network-config) per la configurazione del proxy.

726 

727### Questa organizzazione è stata disabilitata con un abbonamento attivo

728 

729Se vedi `API Error: 400 ... "This organization has been disabled"` nonostante tu abbia un abbonamento Claude attivo, una variabile di ambiente `ANTHROPIC_API_KEY` sta sostituendo il tuo abbonamento. Questo accade comunemente quando una vecchia chiave API da un precedente datore di lavoro o progetto è ancora impostata nel tuo profilo shell.

730 

731Quando `ANTHROPIC_API_KEY` è presente e l'hai approvato, Claude Code utilizza quella chiave invece delle credenziali OAuth del tuo abbonamento. In modalità non interattiva con il flag `-p`, la chiave viene sempre utilizzata quando presente. Vedi [precedenza di autenticazione](/it/authentication#authentication-precedence) per l'ordine di risoluzione completo.

732 

733Per usare il tuo abbonamento invece, annulla l'impostazione della variabile di ambiente e rimuovila dal tuo profilo shell:

734 

735```bash theme={null}

736unset ANTHROPIC_API_KEY

737claude

738```

739 

740Controlla `~/.zshrc`, `~/.bashrc`, o `~/.profile` per le righe `export ANTHROPIC_API_KEY=...` e rimuovile per rendere il cambiamento permanente. Su Windows, controlla il tuo profilo PowerShell in `$PROFILE` e le tue variabili di ambiente dell'utente per `ANTHROPIC_API_KEY`. Esegui `/status` all'interno di Claude Code per confermare quale metodo di autenticazione è attivo.

741 

742### L'accesso OAuth non riesce in WSL2, SSH o container

743 

744Quando Claude Code viene eseguito in WSL2, su una macchina remota tramite SSH, o all'interno di un container, il browser di solito si apre su un host diverso e il suo reindirizzamento non può raggiungere il server di callback locale di Claude Code. Dopo che accedi, il browser mostra un codice di accesso invece di reindirizzare automaticamente. Incolla quel codice nel terminale al prompt `Paste code here if prompted` per completare l'accesso.

745 

746Se il browser non si apre affatto da WSL2, imposta la variabile di ambiente `BROWSER` al percorso del tuo browser Windows:

747 

748```bash theme={null}

749export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"

750claude

751```

752 

753In alternativa, premi `c` al prompt di accesso interattivo per copiare l'URL OAuth, o copia l'URL che `claude auth login` stampa, e aprilo in un browser sulla tua macchina locale.

754 

755Se incollare il codice nel prompt interattivo non fa nulla, il binding di incolla del tuo terminale probabilmente non sta raggiungendo il campo di input. Prova il collegamento di incolla alternativo del tuo terminale, spesso clic destro o Maiusc+Inserisci in Windows Terminal, o usa `claude auth login` invece, che legge il codice incollato dall'input standard:

756 

757```bash theme={null}

758claude auth login

759```

760 

761Questo fallback si applica anche su Windows nativo o su qualsiasi terminale in cui l'incollamento nel prompt interattivo non riesce.

762 

763### Non connesso o token scaduto

764 

765Se Claude Code ti chiede di accedere di nuovo dopo una sessione, il tuo token OAuth potrebbe essere scaduto.

766 

767Esegui `/login` per re-autenticarti. Se questo accade frequentemente, controlla che l'orologio di sistema sia accurato, poiché la convalida del token dipende da timestamp corretti.

768 

769Su macOS, l'accesso può anche non riuscire quando il Keychain è bloccato o la sua password non è sincronizzata con la password del tuo account, il che impedisce a Claude Code di salvare le credenziali. Esegui `claude doctor` per controllare l'accesso al Keychain. Per sbloccare il Keychain manualmente, esegui `security unlock-keychain ~/Library/Keychains/login.keychain-db`. Se lo sblocco non aiuta, apri Accesso Portachiavi, seleziona il keychain `login`, e scegli Modifica > Cambia password per Portachiavi "login" per risincronizzarlo con la password del tuo account.

770 

771### Credenziali Bedrock, Vertex o Foundry non caricate

772 

773Se hai configurato Claude Code per usare un provider cloud e vedi `Could not load credentials from any providers` su Bedrock, `Could not load the default credentials` su Vertex, o `ChainedTokenCredential authentication failed` su Foundry, la tua CLI del provider cloud probabilmente non è autenticata nella shell corrente.

774 

775Per Bedrock, conferma che le tue credenziali AWS sono valide:

776 

777```bash theme={null}

778aws sts get-caller-identity

779```

780 

781Per Vertex AI, conferma che `ANTHROPIC_VERTEX_PROJECT_ID` e `CLOUD_ML_REGION` sono impostati nella tua shell, quindi imposta le credenziali predefinite dell'applicazione:

782 

783```bash theme={null}

784gcloud auth application-default login

785```

786 

787Per Microsoft Foundry, conferma che `ANTHROPIC_FOUNDRY_API_KEY` è impostato, o accedi con l'interfaccia della riga di comando di Azure in modo che la catena di credenziali predefinita possa trovare il tuo account:

788 

789```bash theme={null}

790az login

791```

792 

793Se le credenziali funzionano nel tuo terminale ma non nell'estensione VS Code o JetBrains, il processo IDE probabilmente non ha ereditato il tuo ambiente shell. Imposta le variabili di ambiente del provider nelle impostazioni dell'IDE stesso, o avvia l'IDE da un terminale dove sono già esportate.

794 

795Vedi [Amazon Bedrock](/it/amazon-bedrock), [Google Vertex AI](/it/google-vertex-ai), o [Microsoft Foundry](/it/microsoft-foundry) per la configurazione completa del provider.

796 

797## Ancora bloccato

798 

799Se nessuno dei precedenti risolve il tuo problema:

800 

8011. Controlla il [repository GitHub](https://github.com/anthropics/claude-code/issues) per i problemi noti, o apri uno nuovo con il tuo sistema operativo, il comando di installazione che hai eseguito, e l'output di errore completo

8022. Se `claude --version` funziona ma qualcos'altro non va, esegui `claude doctor` per un rapporto diagnostico automatizzato

8033. Se riesci ad avviare una sessione, usa `/feedback` all'interno di Claude Code per segnalare il problema

troubleshooting.md +121 −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# Troubleshooting

6 

7> Risolvi i problemi di utilizzo elevato di CPU o memoria, blocchi, thrashing auto-compact e problemi di ricerca in Claude Code, e trova la pagina giusta per altri problemi.

8 

9Questa pagina copre i problemi di prestazioni, stabilità e ricerca una volta che Claude Code è in esecuzione. Per altri problemi, inizia con la pagina che corrisponde a dove sei bloccato:

10 

11| Sintomo | Vai a |

12| :---------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- |

13| `command not found`, l'installazione fallisce, problemi di PATH, `EACCES`, errori TLS | [Troubleshoot installation and login](/it/troubleshoot-install) |

14| Loop di accesso, errori OAuth, `403 Forbidden`, "organization disabled", credenziali Bedrock/Vertex/Foundry | [Troubleshoot installation and login](/it/troubleshoot-install#login-and-authentication) |

15| Le impostazioni non si applicano, gli hooks non si attivano, i server MCP non si caricano | [Debug your configuration](/it/debug-your-config) |

16| `API Error: 5xx`, `529 Overloaded`, `429`, errori di convalida delle richieste | [Error reference](/it/errors) |

17| `model not found` o `you may not have access to it` | [Error reference](/it/errors#theres-an-issue-with-the-selected-model) |

18| L'estensione VS Code non si connette o non rileva Claude | [VS Code integration](/it/vs-code#fix-common-issues) |

19| Il plugin JetBrains o l'IDE non viene rilevato | [JetBrains integration](/it/jetbrains#troubleshooting) |

20| Utilizzo elevato di CPU o memoria, risposte lente, blocchi, la ricerca non trova file | [Performance and stability](#performance-and-stability) di seguito |

21 

22Se non sei sicuro di quale si applica, esegui `/doctor` all'interno di Claude Code per un controllo automatico della tua installazione, impostazioni, server MCP e utilizzo del contesto. Se `claude` non si avvia affatto, esegui `claude doctor` dalla tua shell.

23 

24## Performance and stability

25 

26Queste sezioni coprono i problemi relativi all'utilizzo delle risorse, alla reattività e al comportamento della ricerca.

27 

28### High CPU or memory usage

29 

30Claude Code è progettato per funzionare con la maggior parte degli ambienti di sviluppo, ma potrebbe consumare risorse significative durante l'elaborazione di grandi basi di codice. Se stai riscontrando problemi di prestazioni:

31 

321. Usa `/compact` regolarmente per ridurre la dimensione del contesto

332. Chiudi e riavvia Claude Code tra i compiti principali

343. Considera di aggiungere grandi directory di build al tuo file `.gitignore`

35 

36Se l'utilizzo della memoria rimane elevato dopo questi passaggi, esegui `/heapdump` per scrivere uno snapshot dell'heap JavaScript e una suddivisione della memoria su `~/Desktop`. Su Linux senza una cartella Desktop, i file vengono scritti nella tua directory home.

37 

38La suddivisione mostra la dimensione del set residente, l'heap JS, i buffer di array e la memoria nativa non contabilizzata, il che aiuta a identificare se la crescita è negli oggetti JavaScript o nel codice nativo. Per ispezionare i detentori, apri il file `.heapsnapshot` in Chrome DevTools sotto Memory → Load. Allega entrambi i file quando segnali un problema di memoria su [GitHub](https://github.com/anthropics/claude-code/issues).

39 

40### Auto-compaction stops with a thrashing error

41 

42Se vedi `Autocompact is thrashing: the context refilled to the limit...`, la compattazione automatica è riuscita ma un file o un output dello strumento ha immediatamente riempito la finestra di contesto più volte di seguito. Claude Code smette di riprovare per evitare di sprecare chiamate API su un ciclo che non sta facendo progressi.

43 

44Per recuperare:

45 

461. Chiedi a Claude di leggere il file di grandi dimensioni in blocchi più piccoli, come un intervallo di righe specifico o una funzione, invece dell'intero file

472. Esegui `/compact` con un focus che elimina l'output di grandi dimensioni, ad esempio `/compact keep only the plan and the diff`

483. Sposta il lavoro su file di grandi dimensioni a un [subagent](/it/sub-agents) in modo che venga eseguito in una finestra di contesto separata

494. Esegui `/clear` se la conversazione precedente non è più necessaria

50 

51### Command hangs or freezes

52 

53Se Claude Code sembra non reattivo:

54 

551. Premi Ctrl+C per tentare di annullare l'operazione corrente

562. Se non reattivo, potrebbe essere necessario chiudere il terminale e riavviare

57 

58Il riavvio non perde la tua conversazione. Esegui `claude --resume` nella stessa directory per riprendere la sessione.

59 

60### Search and discovery issues

61 

62Se lo strumento Search, le menzioni `@file`, gli agenti personalizzati o le skill personalizzate non trovano file, il binario `ripgrep` in bundle potrebbe non funzionare sul tuo sistema. Installa il pacchetto `ripgrep` della tua piattaforma e dì a Claude Code di usarlo:

63 

64<Tabs>

65 <Tab title="macOS">

66 ```bash theme={null}

67 brew install ripgrep

68 ```

69 </Tab>

70 

71 <Tab title="Ubuntu/Debian">

72 ```bash theme={null}

73 sudo apt install ripgrep

74 ```

75 </Tab>

76 

77 <Tab title="Alpine">

78 ```bash theme={null}

79 apk add ripgrep

80 ```

81 </Tab>

82 

83 <Tab title="Arch">

84 ```bash theme={null}

85 pacman -S ripgrep

86 ```

87 </Tab>

88 

89 <Tab title="Windows">

90 ```powershell theme={null}

91 winget install BurntSushi.ripgrep.MSVC

92 ```

93 </Tab>

94</Tabs>

95 

96Quindi imposta `USE_BUILTIN_RIPGREP=0` nel tuo [environment](/it/env-vars).

97 

98### Slow or incomplete search results on WSL

99 

100Le penalità di prestazioni di lettura del disco quando [lavori tra file system su WSL](https://learn.microsoft.com/en-us/windows/wsl/filesystems) possono risultare in meno corrispondenze del previsto quando usi Claude Code su WSL. La ricerca funziona ancora, ma restituisce meno risultati rispetto a un file system nativo.

101 

102<Note>

103 `/doctor` mostrerà Search come OK in questo caso.

104</Note>

105 

106**Soluzioni:**

107 

1081. **Invia ricerche più specifiche**: riduci il numero di file cercati specificando directory o tipi di file: "Search for JWT validation logic in the auth-service package" o "Find use of md5 hash in JS files".

109 

1102. **Sposta il progetto al file system Linux**: se possibile, assicurati che il tuo progetto si trovi sul file system Linux (`/home/`) piuttosto che sul file system di Windows (`/mnt/c/`).

111 

1123. **Usa Windows nativo**: considera di eseguire Claude Code nativamente su Windows invece che tramite WSL, per migliori prestazioni del file system.

113 

114## Get more help

115 

116Se stai riscontrando problemi non affrontati qui:

117 

1181. Esegui `/doctor` per controllare la salute dell'installazione, la validità delle impostazioni, la configurazione MCP e l'utilizzo del contesto in un unico passaggio

1192. Usa il comando `/feedback` all'interno di Claude Code per segnalare i problemi direttamente ad Anthropic

1203. Controlla il [repository GitHub](https://github.com/anthropics/claude-code) per i problemi noti

1214. Chiedi a Claude direttamente sulle sue capacità e funzionalità. Claude ha accesso integrato alla sua documentazione.

ultraplan.md +84 −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# Pianificare nel cloud con ultraplan

6 

7> Avvia un piano dalla tua CLI, bozzalo su Claude Code sul web, quindi eseguilo in remoto o di nuovo nel tuo terminale

8 

9<Note>

10 Ultraplan è in anteprima di ricerca e richiede Claude Code v2.1.91 o versione successiva. Il comportamento e le capacità possono cambiare in base al feedback.

11</Note>

12 

13Ultraplan trasferisce un'attività di pianificazione dalla tua CLI locale a una sessione di [Claude Code sul web](/it/claude-code-on-the-web) in esecuzione in [plan mode](/it/permission-modes#analyze-before-you-edit-with-plan-mode). Claude bozza il piano nel cloud mentre continui a lavorare nel tuo terminale. Quando il piano è pronto, lo apri nel tuo browser per commentare sezioni specifiche, richiedere revisioni e scegliere dove eseguirlo.

14 

15Questo è utile quando desideri una superficie di revisione più ricca di quella offerta dal terminale:

16 

17* **Feedback mirato**: commenta sezioni individuali del piano invece di rispondere al tutto

18* **Bozza senza intervento**: il piano viene generato in remoto, quindi il tuo terminale rimane libero per altri lavori

19* **Esecuzione flessibile**: approva il piano per eseguirlo sul web e apri una pull request, oppure rimandalo al tuo terminale

20 

21Ultraplan richiede un account [Claude Code sul web](/it/claude-code-on-the-web) e un repository GitHub. Poiché viene eseguito sull'infrastruttura cloud di Anthropic, non è disponibile quando si utilizza Amazon Bedrock, Google Cloud Vertex AI o Microsoft Foundry. La sessione cloud viene eseguita nell'[ambiente cloud](/it/claude-code-on-the-web#the-cloud-environment) predefinito del tuo account. Se non hai ancora un ambiente cloud, ultraplan ne crea uno automaticamente al primo avvio.

22 

23## Avvia ultraplan dalla CLI

24 

25Dalla tua sessione CLI locale, puoi avviare ultraplan in tre modi:

26 

27* **Comando**: esegui `/ultraplan` seguito dal tuo prompt

28* **Parola chiave**: includi la parola `ultraplan` in qualsiasi punto di un prompt normale

29* **Da un piano locale**: quando Claude termina un piano locale e mostra la finestra di dialogo di approvazione, scegli **No, refine with Ultraplan on Claude Code on the web** per inviare la bozza al cloud per ulteriori iterazioni

30 

31Ad esempio, per pianificare una migrazione del servizio con il comando:

32 

33```

34/ultraplan migrate the auth service from sessions to JWTs

35```

36 

37I percorsi del comando e della parola chiave aprono una finestra di dialogo di conferma prima dell'avvio. Il percorso del piano locale salta questa finestra di dialogo perché quella selezione serve già come conferma. Se [Remote Control](/it/remote-control) è attivo, si disconnette quando ultraplan si avvia perché entrambe le funzioni occupano l'interfaccia claude.ai/code e solo una può essere connessa alla volta.

38 

39Dopo l'avvio della sessione cloud, l'input del prompt della tua CLI mostra un indicatore di stato mentre la sessione remota funziona:

40 

41| Stato | Significato |

42| :----------------------------- | :------------------------------------------------------------------------------- |

43| `◇ ultraplan` | Claude sta ricercando il tuo codebase e bozzando il piano |

44| `◇ ultraplan needs your input` | Claude ha una domanda di chiarimento; apri il link della sessione per rispondere |

45| `◆ ultraplan ready` | Il piano è pronto per la revisione nel tuo browser |

46 

47Esegui `/tasks` e seleziona la voce ultraplan per aprire una vista dettagliata con il link della sessione, l'attività dell'agente e un'azione **Stop ultraplan**. L'arresto archivia la sessione cloud e cancella l'indicatore; nulla viene salvato nel tuo terminale.

48 

49## Rivedi e rivedi il piano nel tuo browser

50 

51Quando lo stato cambia in `◆ ultraplan ready`, apri il link della sessione per visualizzare il piano su claude.ai. Il piano appare in una vista di revisione dedicata:

52 

53* **Commenti inline**: evidenzia qualsiasi passaggio e lascia un commento affinché Claude lo affronti

54* **Reazioni emoji**: reagisci a una sezione per segnalare approvazione o preoccupazione senza scrivere un commento completo

55* **Barra laterale della struttura**: passa tra le sezioni del piano

56 

57Quando chiedi a Claude di affrontare i tuoi commenti, rivede il piano e presenta una bozza aggiornata. Puoi iterare tutte le volte necessarie prima di scegliere dove eseguire.

58 

59## Scegli dove eseguire

60 

61Quando il piano sembra giusto, scegli dal browser se Claude lo implementa nella stessa sessione cloud o lo rimanda al tuo terminale in attesa.

62 

63### Esegui sul web

64 

65Seleziona **Approve Claude's plan and start coding** nel tuo browser per fare in modo che Claude lo implementi nella stessa sessione Claude Code sul web. Il tuo terminale mostra una conferma, l'indicatore di stato si cancella e il lavoro continua nel cloud. Quando l'implementazione è terminata, [rivedi il diff](/it/claude-code-on-the-web#review-changes) e crea una pull request dall'interfaccia web.

66 

67### Rimanda il piano al tuo terminale

68 

69Seleziona **Approve plan and teleport back to terminal** nel tuo browser per implementare il piano localmente con accesso completo al tuo ambiente. Questa opzione appare quando la sessione è stata avviata dalla tua CLI e il terminale è ancora in polling. La sessione web viene archiviata in modo che non continui a funzionare in parallelo.

70 

71Il tuo terminale mostra il piano in una finestra di dialogo intitolata **Ultraplan approved** con tre opzioni:

72 

73* **Implement here**: inietta il piano nella tua conversazione attuale e continua da dove eri rimasto

74* **Start new session**: cancella la conversazione attuale e inizia da capo con solo il piano come contesto

75* **Cancel**: salva il piano in un file senza eseguirlo; Claude stampa il percorso del file in modo che tu possa tornarvi in seguito

76 

77Se avvii una nuova sessione, Claude stampa un comando `claude --resume` in alto in modo che tu possa tornare alla tua conversazione precedente in seguito.

78 

79## Risorse correlate

80 

81* [Claude Code sul web](/it/claude-code-on-the-web): l'infrastruttura cloud su cui viene eseguito ultraplan

82* [Plan mode](/it/permission-modes#analyze-before-you-edit-with-plan-mode): come funziona la pianificazione in una sessione locale

83* [Trova bug con ultrareview](/it/ultrareview): la controparte di revisione del codice a ultraplan per catturare i problemi prima del merge

84* [Remote Control](/it/remote-control): utilizza l'interfaccia claude.ai/code con una sessione in esecuzione sulla tua macchina

ultrareview.md +108 −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# Trova bug con ultrareview

6 

7> Esegui una revisione del codice profonda e multi-agente nel cloud con /ultrareview per trovare e verificare i bug prima di eseguire il merge.

8 

9<Note>

10 Ultrareview è una funzione di anteprima di ricerca disponibile in Claude Code v2.1.86 e versioni successive. La funzione, i prezzi e la disponibilità possono cambiare in base al feedback.

11</Note>

12 

13Ultrareview è una revisione del codice profonda che viene eseguita su Claude Code nell'infrastruttura web. Quando eseguite `/ultrareview`, Claude Code avvia una flotta di agenti revisori in una sandbox remota per trovare i bug nel vostro ramo o nella vostra pull request.

14 

15Rispetto a una `/review` locale, ultrareview offre:

16 

17* **Segnale più elevato**: ogni risultato segnalato viene riprodotto e verificato in modo indipendente, quindi i risultati si concentrano su bug reali piuttosto che su suggerimenti di stile

18* **Copertura più ampia**: molti agenti revisori esplorano il cambiamento in parallelo, il che evidenzia i problemi che una revisione a passaggio singolo potrebbe perdere

19* **Nessun utilizzo di risorse locali**: la revisione viene eseguita interamente in una sandbox remota, quindi il vostro terminale rimane libero per altri lavori mentre viene eseguita

20 

21Ultrareview richiede l'autenticazione con un account Claude.ai perché viene eseguito su Claude Code nell'infrastruttura web. Se siete connessi solo con una chiave API, eseguite `/login` e autenticatevi prima con Claude.ai. Ultrareview non è disponibile quando si utilizza Claude Code con Amazon Bedrock, Google Cloud Vertex AI o Microsoft Foundry, e non è disponibile per le organizzazioni che hanno abilitato Zero Data Retention.

22 

23## Esegui ultrareview dalla CLI

24 

25Avviate una revisione da qualsiasi repository git nella CLI di Claude Code.

26 

27```text theme={null}

28/ultrareview

29```

30 

31Senza argomenti, ultrareview esamina il diff tra il vostro ramo attuale e il ramo predefinito, inclusi eventuali cambiamenti non committati e in staging nel vostro albero di lavoro. Claude Code raggruppa lo stato del repository e lo carica in una sandbox remota per la revisione.

32 

33Per esaminare invece una pull request di GitHub, passate il numero della PR.

34 

35```text theme={null}

36/ultrareview 1234

37```

38 

39In modalità PR, la sandbox remota clona la pull request direttamente da GitHub piuttosto che raggruppare il vostro albero di lavoro locale. La modalità PR richiede un remote `github.com` sul repository.

40 

41<Tip>

42 Se il vostro repository è troppo grande per essere raggruppato, Claude Code vi suggerisce di utilizzare la modalità PR. Eseguite il push del vostro ramo e aprite una PR in bozza, quindi eseguite `/ultrareview <PR-number>`.

43</Tip>

44 

45Prima di avviare, Claude Code mostra una finestra di dialogo di conferma con l'ambito della revisione (incluso il conteggio dei file e delle righe quando si esamina un ramo), i vostri run gratuiti rimanenti e il costo stimato. Dopo la conferma, la revisione continua in background e potete continuare a utilizzare la vostra sessione. Il comando viene eseguito solo quando lo richiamate con `/ultrareview`; Claude non avvia un ultrareview da solo.

46 

47## Prezzi e run gratuiti

48 

49Ultrareview è una funzione premium che viene fatturata rispetto all'utilizzo extra piuttosto che all'utilizzo incluso nel vostro piano.

50 

51| Piano | Run gratuiti inclusi | Dopo i run gratuiti |

52| ----------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------ |

53| Pro | 3 run gratuiti fino al 5 maggio 2026 | fatturato come [utilizzo extra](https://support.claude.com/it/articles/12429409-extra-usage-for-paid-claude-plans) |

54| Max | 3 run gratuiti fino al 5 maggio 2026 | fatturato come [utilizzo extra](https://support.claude.com/it/articles/12429409-extra-usage-for-paid-claude-plans) |

55| Team e Enterprise | nessuno | fatturato come [utilizzo extra](https://support.claude.com/it/articles/12429409-extra-usage-for-paid-claude-plans) |

56 

57I sottoscrittori Pro e Max ricevono tre run ultrareview gratuiti per provare la funzione. Questi tre run sono un'allocazione una tantum per account, non si rinnovano e scadono il 5 maggio 2026. Dopo averli utilizzati tutti, o dopo la scadenza del periodo di run gratuiti, ogni revisione viene fatturata all'utilizzo extra e in genere costa da \$5 a \$20 a seconda della dimensione della modifica. Un run viene conteggiato una volta che la sessione remota inizia, quindi una revisione che interrompete anticipatamente o che non riesce a completarsi utilizza comunque un run gratuito. Per una revisione a pagamento, l'utilizzo extra viene fatturato solo per la parte che è stata eseguita.

58 

59Poiché ultrareview viene sempre fatturato come utilizzo extra al di fuori dei run gratuiti, il vostro account o la vostra organizzazione deve avere l'utilizzo extra abilitato prima di poter avviare una revisione a pagamento. Se l'utilizzo extra non è abilitato, Claude Code blocca l'avvio e vi collega alle impostazioni di fatturazione dove potete attivarlo. Potete anche eseguire `/extra-usage` per controllare o modificare l'impostazione attuale.

60 

61## Traccia una revisione in esecuzione

62 

63Una revisione in genere richiede da 5 a 10 minuti. La revisione viene eseguita come attività in background, quindi potete continuare a lavorare nella vostra sessione, avviare altri comandi o chiudere completamente il terminale.

64 

65Utilizzate `/tasks` per visualizzare le revisioni in esecuzione e completate, aprire la vista dettagli per una revisione o interrompere una revisione in corso. L'interruzione di una revisione archivia la sessione cloud e i risultati parziali non vengono restituiti. Quando la revisione termina, i risultati verificati vengono visualizzati come notifica nella vostra sessione. Ogni risultato include la posizione del file e una spiegazione del problema in modo da poter chiedere a Claude di risolverlo direttamente.

66 

67## Esegui ultrareview in modo non interattivo

68 

69Utilizzate il sottocomando `claude ultrareview` per avviare un ultrareview da CI o da uno script senza una sessione interattiva. Il sottocomando avvia la stessa revisione di `/ultrareview`, si blocca fino al completamento della revisione remota, stampa i risultati su stdout e esce con codice 0 in caso di successo o 1 in caso di errore.

70 

71```bash theme={null}

72claude ultrareview

73claude ultrareview 1234

74claude ultrareview origin/main

75```

76 

77Senza argomenti, il sottocomando esamina il diff tra il vostro ramo attuale e il ramo predefinito. Passate un numero di PR per esaminare una pull request, o passate un ramo di base per esaminare il diff rispetto a quel ramo. L'invocazione del sottocomando conta come consenso per il prompt di fatturazione e termini che il comando interattivo mostra.

78 

79I messaggi di progresso e l'URL della sessione live vanno a stderr in modo che stdout rimanga analizzabile. Utilizzate questi flag per controllare l'output e il timeout:

80 

81| Flag | Descrizione |

82| --------------------- | -------------------------------------------------------------------------------------------- |

83| `--json` | Stampa il payload `bugs.json` grezzo invece dei risultati formattati |

84| `--timeout <minutes>` | Numero massimo di minuti da attendere per il completamento della revisione. Predefinito a 30 |

85 

86L'esecuzione di `claude ultrareview` richiede la stessa autenticazione e configurazione di utilizzo extra di `/ultrareview`. Il sottocomando esce con codice 0 quando la revisione si completa con o senza risultati, codice 1 quando la revisione non riesce ad avviarsi, la sessione remota genera errori o il timeout scade, e codice 130 quando viene interrotto con Ctrl-C. La revisione remota continua a essere eseguita se interrompete il sottocomando; seguite l'URL della sessione stampato su stderr per guardarla nel browser.

87 

88Per le revisioni automatiche sulle pull request di GitHub, [Code Review](/it/code-review) si integra direttamente con il vostro repository e pubblica i risultati come commenti PR inline senza un passaggio CLI.

89 

90## Come ultrareview si confronta con /review

91 

92Entrambi i comandi esaminano il codice, ma si rivolgono a diverse fasi del vostro flusso di lavoro.

93 

94| | `/review` | `/ultrareview` |

95| -------------- | ------------------------------------ | --------------------------------------------------------------------- |

96| Viene eseguito | localmente nella vostra sessione | in remoto in una sandbox cloud |

97| Profondità | revisione a passaggio singolo | flotta multi-agente con verifica indipendente |

98| Durata | da secondi a pochi minuti | circa 5-10 minuti |

99| Costo | conta verso l'utilizzo normale | run gratuiti, quindi circa $5 a $20 per revisione come utilizzo extra |

100| Migliore per | feedback rapido durante l'iterazione | fiducia pre-merge su cambiamenti sostanziali |

101 

102Utilizzate `/review` per un feedback rapido mentre lavorate. Utilizzate `/ultrareview` prima di eseguire il merge di un cambiamento sostanziale quando desiderate un passaggio più profondo che catturi i problemi che una singola revisione potrebbe perdere.

103 

104## Risorse correlate

105 

106* [Claude Code sul web](/it/claude-code-on-the-web): scopri come funzionano le sessioni remote e le sandbox cloud

107* [Pianifica cambiamenti complessi con ultraplan](/it/ultraplan): la controparte di pianificazione di ultrareview per il lavoro di progettazione iniziale

108* [Gestisci i costi in modo efficace](/it/costs): traccia l'utilizzo e imposta i limiti di spesa

voice-dictation.md +191 −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# Dettatura vocale

6 

7> Pronuncia i tuoi prompt nella CLI di Claude Code con dettatura vocale a pressione prolungata o a tocco.

8 

9Pronuncia i tuoi prompt invece di digitarli nella CLI di Claude Code. Il tuo discorso viene trascritto in tempo reale nell'input del prompt, quindi puoi mescolare voce e digitazione nello stesso messaggio. Abilita la dettatura con `/voice`, quindi tieni premuto un tasto mentre parli oppure tocca una volta per iniziare e di nuovo per inviare.

10 

11<Note>

12 La dettatura vocale richiede Claude Code v2.1.69 o successivo. La modalità tocco richiede v2.1.116 o successivo. Controlla la tua versione con `claude --version`.

13</Note>

14 

15## Requisiti

16 

17La dettatura vocale trasmette l'audio registrato ai server di Anthropic per la trascrizione. L'audio non viene elaborato localmente. Il servizio di sintesi vocale è disponibile solo quando ti autentichi con un account Claude.ai e non è disponibile quando Claude Code è configurato per utilizzare direttamente una chiave API di Anthropic, Amazon Bedrock, Google Vertex AI o Microsoft Foundry. La trascrizione non consuma messaggi Claude o token e non conta verso i limiti mostrati in `/usage`. Consulta [data usage](/it/data-usage) per scoprire come Anthropic gestisce i tuoi dati.

18 

19La dettatura vocale richiede anche l'accesso locale al microfono, quindi non funziona in ambienti remoti come [Claude Code sul web](/it/claude-code-on-the-web) o sessioni SSH. In WSL, la dettatura vocale richiede WSLg per l'accesso audio, che è incluso con WSL2 su Windows 11. Su Windows 10 o WSL1, esegui Claude Code in Windows nativo.

20 

21La registrazione audio utilizza un modulo nativo integrato su macOS, Linux e Windows. Su Linux, se il modulo nativo non riesce a caricarsi, Claude Code ricade su `arecord` da ALSA utils o `rec` da SoX. Se nessuno dei due è disponibile, `/voice` stampa un comando di installazione per il tuo gestore di pacchetti.

22 

23L'[estensione VS Code](/it/vs-code) di Claude Code supporta anche la dettatura vocale con lo stesso requisito di account Claude.ai. Non è disponibile nelle sessioni VS Code Remote, incluse SSH, Dev Containers e Codespaces, perché il microfono si trova sulla tua macchina locale e l'estensione viene eseguita sull'host remoto.

24 

25## Abilita la dettatura vocale

26 

27Esegui `/voice` per abilitare la dettatura. La prima volta che la abiliti, Claude Code esegue un controllo del microfono. Su macOS, questo attiva il prompt di autorizzazione del microfono di sistema per il tuo terminale se non è mai stato concesso.

28 

29```

30/voice

31Voice mode enabled (hold). Hold Space to record. Dictation language: en (/config to change).

32```

33 

34`/voice` accetta un argomento di modalità opzionale:

35 

36| Comando | Effetto |

37| :------------ | :---------------------------------------------------------- |

38| `/voice` | Attiva/disattiva, mantieni la modalità corrente |

39| `/voice hold` | Abilita in [modalità pressione prolungata](#hold-to-record) |

40| `/voice tap` | Abilita in [modalità tocco](#tap-to-record-and-send) |

41| `/voice off` | Disabilita |

42 

43La dettatura vocale persiste tra le sessioni. Impostala direttamente nel tuo [file di impostazioni utente](/it/settings) invece di eseguire `/voice`:

44 

45```json theme={null}

46{

47 "voice": {

48 "enabled": true,

49 "mode": "tap"

50 }

51}

52```

53 

54Mentre la dettatura vocale è abilitata, il footer di input mostra un suggerimento `hold Space to speak` quando il prompt è vuoto. Il testo del suggerimento è lo stesso in entrambe le modalità e non appare se hai un [status line personalizzato](/it/statusline) configurato.

55 

56La trascrizione è ottimizzata per il vocabolario di codifica in entrambe le modalità. I termini di sviluppo comuni come `regex`, `OAuth`, `JSON` e `localhost` vengono riconosciuti correttamente e il nome del tuo progetto attuale e il nome del ramo git vengono aggiunti automaticamente come suggerimenti di riconoscimento.

57 

58## Pressione prolungata per registrare

59 

60La modalità pressione prolungata è push-to-talk: la registrazione viene eseguita mentre tieni premuto il tasto e si interrompe quando lo rilasci. Questa è la modalità predefinita.

61 

62Tieni premuto `Space` per iniziare la registrazione. Claude Code rileva un tasto premuto osservando gli eventi di ripetizione rapida dei tasti dal tuo terminale, quindi c'è un breve riscaldamento prima che inizi la registrazione. Il footer mostra `keep holding…` durante il riscaldamento, quindi passa a una forma d'onda dal vivo una volta che la registrazione è attiva.

63 

64I primi caratteri di ripetizione dei tasti digitano nell'input durante il riscaldamento e vengono rimossi automaticamente quando la registrazione si attiva. Un singolo tocco di `Space` digita comunque uno spazio, poiché il rilevamento della pressione prolungata si attiva solo sulla ripetizione rapida.

65 

66<Tip>

67 Per saltare il riscaldamento, passa a [modalità tocco](#tap-to-record-and-send) con `/voice tap`, oppure [riassegna a una combinazione di modificatori](#rebind-the-dictation-key) come `meta+k`. Le combinazioni di modificatori iniziano la registrazione alla prima pressione del tasto.

68</Tip>

69 

70Il tuo discorso appare nel prompt mentre parli, attenuato fino a quando la trascrizione non viene finalizzata. Rilascia `Space` per interrompere la registrazione e finalizzare il testo. La trascrizione viene inserita nella posizione del cursore e il cursore rimane alla fine del testo inserito, quindi puoi mescolare digitazione e dettatura in qualsiasi ordine. Tieni premuto `Space` di nuovo per aggiungere un'altra registrazione, oppure sposta il cursore prima per inserire il discorso altrove nel prompt:

71 

72```

73> refactor the auth middleware to ▮

74 # hold Space, speak "use the new token validation helper"

75> refactor the auth middleware to use the new token validation helper▮

76```

77 

78Per impostazione predefinita, il rilascio del tasto inserisce la trascrizione e attende che tu prema `Enter`. Imposta `"autoSubmit": true` nell'oggetto impostazioni `voice` per inviare il prompt automaticamente quando rilasci il tasto, purché la trascrizione sia lunga almeno tre parole.

79 

80## Tocco per registrare e inviare

81 

82La modalità tocco attiva/disattiva la registrazione con una singola pressione di tasto: tocca una volta per iniziare, parla, quindi tocca di nuovo per inviare il prompt. Non c'è riscaldamento e non è necessario mantenere il tasto premuto.

83 

84Abilita la modalità tocco con `/voice tap`. Con l'input del prompt vuoto, tocca `Space` per iniziare la registrazione. Il footer mostra una forma d'onda dal vivo durante la registrazione. Tocca `Space` di nuovo per interrompere. Claude Code inserisce la trascrizione e invia il prompt automaticamente quando la trascrizione è lunga almeno tre parole. Le trascrizioni più brevi vengono inserite ma non inviate, quindi un tocco accidentale non invia una parola casuale.

85 

86Il primo tocco avvia la registrazione solo quando l'input del prompt è vuoto, quindi puoi comunque digitare spazi normalmente mentre componi un messaggio. Il secondo tocco interrompe la registrazione indipendentemente dal contenuto dell'input. La registrazione si interrompe anche automaticamente dopo 15 secondi di silenzio o due minuti totali.

87 

88## Cambia la lingua della dettatura

89 

90La dettatura vocale utilizza la stessa [impostazione `language`](/it/settings) che controlla la lingua di risposta di Claude. Se tale impostazione è vuota, la dettatura predefinita è l'inglese. Nell'estensione VS Code, se `language` è vuoto, la dettatura utilizza l'impostazione `accessibility.voice.speechLanguage` di VS Code prima di predefinire l'inglese.

91 

92<Accordion title="Lingue di dettatura supportate">

93 | Lingua | Codice |

94 | :---------- | :----- |

95 | Ceco | `cs` |

96 | Danese | `da` |

97 | Olandese | `nl` |

98 | Inglese | `en` |

99 | Francese | `fr` |

100 | Tedesco | `de` |

101 | Greco | `el` |

102 | Hindi | `hi` |

103 | Indonesiano | `id` |

104 | Italiano | `it` |

105 | Giapponese | `ja` |

106 | Coreano | `ko` |

107 | Norvegese | `no` |

108 | Polacco | `pl` |

109 | Portoghese | `pt` |

110 | Russo | `ru` |

111 | Spagnolo | `es` |

112 | Svedese | `sv` |

113 | Turco | `tr` |

114 | Ucraino | `uk` |

115</Accordion>

116 

117Imposta la lingua in `/config` o direttamente nelle impostazioni. Puoi utilizzare il [codice lingua BCP 47](https://en.wikipedia.org/wiki/IETF_language_tag) o il nome della lingua:

118 

119```json theme={null}

120{

121 "language": "japanese"

122}

123```

124 

125Se la tua impostazione `language` non è nell'elenco supportato, `/voice` ti avverte all'abilitazione e ricade all'inglese per la dettatura. Le risposte di testo di Claude non sono influenzate da questo fallback.

126 

127## Riassegna il tasto di dettatura

128 

129Il tasto di dettatura è associato a `voice:pushToTalk` nel contesto `Chat` e predefinito su `Space`. Lo stesso binding controlla sia la modalità pressione prolungata che la modalità tocco. Riassegnalo in [`~/.claude/keybindings.json`](/it/keybindings):

130 

131```json theme={null}

132{

133 "bindings": [

134 {

135 "context": "Chat",

136 "bindings": {

137 "meta+k": "voice:pushToTalk",

138 "space": null

139 }

140 }

141 ]

142}

143```

144 

145L'impostazione `"space": null` rimuove il binding predefinito. Omettila se desideri che entrambi i tasti siano attivi.

146 

147In modalità pressione prolungata, evita di associare un tasto lettera nudo come `v` poiché il rilevamento della pressione prolungata si basa sulla ripetizione dei tasti e la lettera digita nel prompt durante il riscaldamento. Usa `Space`, oppure usa una combinazione di modificatori come `meta+k` per iniziare la registrazione alla prima pressione del tasto senza riscaldamento. La modalità tocco non ha riscaldamento, quindi qualsiasi tasto funziona.

148 

149Alcuni tasti non vengono consegnati alle applicazioni terminali e non possono essere associati affatto. Ad esempio, `Caps Lock` mostra un errore se tenti di associarlo. Consulta [personalizza scorciatoie da tastiera](/it/keybindings) per la sintassi completa del keybinding e l'elenco delle scorciatoie riservate.

150 

151## Risoluzione dei problemi

152 

153Problemi comuni quando la dettatura vocale non si attiva o non registra:

154 

155* **`Voice mode requires a Claude.ai account`**: sei autenticato con una chiave API o un provider di terze parti. Esegui `/login` per accedere con un account Claude.ai.

156* **`Microphone access is denied`**: concedi l'autorizzazione del microfono al tuo terminale nelle impostazioni di sistema. Su macOS, vai a Impostazioni di sistema → Privacy e sicurezza → Microfono e abilita la tua app terminale, quindi esegui `/voice` di nuovo. Su Windows, vai a Impostazioni → Privacy e sicurezza → Microfono e attiva l'accesso al microfono per le app desktop, quindi esegui `/voice` di nuovo. Se il tuo terminale non è elencato nelle impostazioni macOS, consulta [Terminale non elencato nelle impostazioni del microfono di macOS](#terminal-not-listed-in-macos-microphone-settings).

157* **`No audio recording tool found` su Linux**: il modulo audio nativo non ha potuto caricarsi e nessun fallback è installato. Installa SoX con il comando mostrato nel messaggio di errore, ad esempio `sudo apt-get install sox`.

158* **Nulla accade quando tieni premuto `Space` in modalità pressione prolungata**: osserva l'input del prompt mentre tieni premuto. Se gli spazi continuano ad accumularsi, la dettatura vocale è probabilmente disattivata; esegui `/voice hold` per abilitarla. Se appare solo uno o due spazi e poi nulla, la dettatura vocale è attiva ma il rilevamento della pressione prolungata non si attiva. Il rilevamento della pressione prolungata richiede che il tuo terminale invii eventi di ripetizione dei tasti, quindi non può rilevare un tasto premuto se la ripetizione dei tasti è disabilitata a livello del sistema operativo. Passa a modalità tocco con `/voice tap` per evitare il requisito di ripetizione dei tasti.

159* **Toccare `Space` digita uno spazio invece di registrare in modalità tocco**: il primo tocco avvia la registrazione solo quando l'input del prompt è vuoto. Cancella prima l'input, oppure verifica di essere in modalità tocco eseguendo `/voice tap`.

160* **`No audio detected from microphone`**: la registrazione è iniziata ma ha catturato il silenzio. Conferma che il dispositivo di input corretto è impostato come predefinito di sistema e che il suo livello di input non è disattivato o vicino a zero. Su Windows, apri Impostazioni → Sistema → Suono → Input e seleziona il tuo microfono. Su macOS, apri Impostazioni di sistema → Suono → Input.

161* **`No speech detected`**: l'audio ha raggiunto il servizio di trascrizione ma nessuna parola è stata riconosciuta. Parla più vicino al microfono, riduci il rumore di fondo e conferma che la tua [lingua di dettatura](#change-the-dictation-language) corrisponda alla lingua che stai parlando.

162* **La trascrizione è distorta o in una lingua sbagliata**: la dettatura predefinita è l'inglese. Se stai dettando in un'altra lingua, impostala prima in `/config`. Consulta [Cambia la lingua della dettatura](#change-the-dictation-language).

163 

164### Terminale non elencato nelle impostazioni del microfono di macOS

165 

166Se la tua app terminale non appare in Impostazioni di sistema → Privacy e sicurezza → Microfono, non c'è alcun interruttore che puoi abilitare. Reimposta lo stato di autorizzazione per il tuo terminale in modo che la prossima esecuzione di `/voice` attivi un nuovo prompt di autorizzazione macOS.

167 

168<Steps>

169 <Step title="Reimposta l'autorizzazione del microfono per il tuo terminale">

170 Esegui `tccutil reset Microphone <bundle-id>`, sostituendo `<bundle-id>` con l'identificatore del tuo terminale: `com.apple.Terminal` per il Terminale integrato, o `com.googlecode.iterm2` per iTerm2. Per altri terminali, cerca l'identificatore con `osascript -e 'id of app "AppName"'`.

171 

172 <Warning>

173 Puoi eseguire `tccutil reset Microphone` senza un ID bundle, ma revoca l'accesso al microfono da ogni app sul tuo Mac, incluse app come Zoom o Slack. Ogni app dovrà richiedere nuovamente l'accesso al prossimo utilizzo, quindi non eseguirlo durante una chiamata attiva.

174 </Warning>

175 </Step>

176 

177 <Step title="Esci e riavvia il tuo terminale">

178 macOS non riproporrà un processo che è già in esecuzione. Esci dall'app terminale con Cmd+Q, non solo chiudere le sue finestre, quindi aprila di nuovo.

179 </Step>

180 

181 <Step title="Attiva un nuovo prompt">

182 Avvia Claude Code ed esegui `/voice`. macOS richiede l'accesso al microfono; consentilo.

183 </Step>

184</Steps>

185 

186## Vedi anche

187 

188* [Personalizza scorciatoie da tastiera](/it/keybindings): riassegna `voice:pushToTalk` e altre azioni da tastiera della CLI

189* [Configura impostazioni](/it/settings): riferimento completo per `voice`, `language` e altre chiavi di impostazioni

190* [Modalità interattiva](/it/interactive-mode): scorciatoie da tastiera, modalità di input e controlli di sessione

191* [Comandi](/it/commands): riferimento per `/voice`, `/config` e tutti gli altri comandi

vs-code.md +511 −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 Claude Code in VS Code

6 

7> Installa e configura l'estensione Claude Code per VS Code. Ottieni assistenza di codifica con IA con diff inline, @-mention, revisione del piano e scorciatoie da tastiera.

8 

9<img src="https://mintcdn.com/claude-code/-YhHHmtSxwr7W8gy/images/vs-code-extension-interface.jpg?fit=max&auto=format&n=-YhHHmtSxwr7W8gy&q=85&s=300652d5678c63905e6b0ea9e50835f8" alt="Editor VS Code con il pannello dell'estensione Claude Code aperto sul lato destro, che mostra una conversazione con Claude" width="2500" height="1155" data-path="images/vs-code-extension-interface.jpg" />

10 

11L'estensione VS Code fornisce un'interfaccia grafica nativa per Claude Code, integrata direttamente nel tuo IDE. Questo è il modo consigliato per utilizzare Claude Code in VS Code.

12 

13Con l'estensione, puoi rivedere e modificare i piani di Claude prima di accettarli, accettare automaticamente le modifiche mentre vengono apportate, @-mention file con intervalli di righe specifici dalla tua selezione, accedere alla cronologia delle conversazioni e aprire più conversazioni in schede o finestre separate.

14 

15## Prerequisiti

16 

17Prima di installare, assicurati di avere:

18 

19* VS Code 1.98.0 o superiore

20* Un account Anthropic (accederai quando aprirai l'estensione per la prima volta). Se stai utilizzando un provider di terze parti come Amazon Bedrock o Google Vertex AI, consulta invece [Usa provider di terze parti](#use-third-party-providers).

21 

22<Tip>

23 L'estensione include la CLI (interfaccia della riga di comando), a cui puoi accedere dal terminale integrato di VS Code per funzioni avanzate. Consulta [Estensione VS Code vs. Claude Code CLI](#vs-code-extension-vs-claude-code-cli) per i dettagli.

24</Tip>

25 

26## Installa l'estensione

27 

28Fai clic sul link per il tuo IDE per installare direttamente:

29 

30* [Installa per VS Code](vscode:extension/anthropic.claude-code)

31* [Installa per Cursor](cursor:extension/anthropic.claude-code)

32 

33Oppure in VS Code, premi `Cmd+Shift+X` (Mac) o `Ctrl+Shift+X` (Windows/Linux) per aprire la visualizzazione Estensioni, cerca "Claude Code" e fai clic su **Installa**.

34 

35<Note>Se l'estensione non appare dopo l'installazione, riavvia VS Code o esegui "Developer: Reload Window" dalla Tavolozza dei comandi.</Note>

36 

37## Inizia

38 

39Una volta installata, puoi iniziare a utilizzare Claude Code tramite l'interfaccia VS Code:

40 

41<Steps>

42 <Step title="Apri il pannello Claude Code">

43 In tutto VS Code, l'icona Spark indica Claude Code: <img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/vs-code-spark-icon.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=3ca45e00deadec8c8f4b4f807da94505" alt="Icona Spark" style={{display: "inline", height: "0.85em", verticalAlign: "middle"}} width="16" height="16" data-path="images/vs-code-spark-icon.svg" />

44 

45 Il modo più veloce per aprire Claude è fare clic sull'icona Spark nella **Barra degli strumenti dell'editor** (angolo in alto a destra dell'editor). L'icona appare solo quando hai un file aperto.

46 

47 <img src="https://mintcdn.com/claude-code/mfM-EyoZGnQv8JTc/images/vs-code-editor-icon.png?fit=max&auto=format&n=mfM-EyoZGnQv8JTc&q=85&s=eb4540325d94664c51776dbbfec4cf02" alt="Editor VS Code che mostra l'icona Spark nella Barra degli strumenti dell'editor" width="2796" height="734" data-path="images/vs-code-editor-icon.png" />

48 

49 Altri modi per aprire Claude Code:

50 

51 * **Barra attività**: fai clic sull'icona Spark nella barra laterale sinistra per aprire l'elenco delle sessioni. Fai clic su qualsiasi sessione per aprirla come scheda dell'editor completa, o avvia una nuova. Questa icona è sempre visibile nella Barra attività.

52 * **Tavolozza dei comandi**: `Cmd+Shift+P` (Mac) o `Ctrl+Shift+P` (Windows/Linux), digita "Claude Code" e seleziona un'opzione come "Apri in Nuova Scheda"

53 * **Barra di stato**: fai clic su **✱ Claude Code** nell'angolo in basso a destra della finestra. Funziona anche quando nessun file è aperto.

54 

55 Puoi trascinare il pannello Claude per riposizionarlo ovunque in VS Code. Consulta [Personalizza il tuo flusso di lavoro](#customize-your-workflow) per i dettagli.

56 </Step>

57 

58 <Step title="Accedi">

59 La prima volta che apri il pannello, appare una schermata di accesso. Fai clic su **Accedi** e completa l'autorizzazione nel tuo browser.

60 

61 Se vedi **Non connesso · Esegui /login** in seguito, l'estensione riaprirà automaticamente la schermata di accesso. Se non appare, ricarica la finestra dalla Tavolozza dei comandi con **Developer: Reload Window**.

62 

63 Se hai `ANTHROPIC_API_KEY` impostato nella tua shell ma vedi ancora il prompt di accesso, VS Code potrebbe non aver ereditato l'ambiente della tua shell. Avvia VS Code da un terminale con `code .` in modo che erediti le tue variabili di ambiente, oppure accedi con il tuo account Claude.

64 

65 Dopo aver effettuato l'accesso, appare una checklist **Impara Claude Code**. Completa ogni elemento facendo clic su **Mostrami**, oppure chiudila con la X. Per riaprirla in seguito, deseleziona **Nascondi onboarding** nelle impostazioni di VS Code in Estensioni → Claude Code.

66 </Step>

67 

68 <Step title="Invia un prompt">

69 Chiedi a Claude di aiutarti con il tuo codice o i tuoi file, che si tratti di spiegare come funziona qualcosa, eseguire il debug di un problema o apportare modifiche.

70 

71 <Tip>Claude vede automaticamente il testo selezionato. Premi `Option+K` (Mac) / `Alt+K` (Windows/Linux) per inserire anche un riferimento @-mention (come `@file.ts#5-10`) nel tuo prompt.</Tip>

72 

73 Ecco un esempio di domanda su una riga particolare in un file:

74 

75 <img src="https://mintcdn.com/claude-code/FVYz38sRY-VuoGHA/images/vs-code-send-prompt.png?fit=max&auto=format&n=FVYz38sRY-VuoGHA&q=85&s=ede3ed8d8d5f940e01c5de636d009cfd" alt="Editor VS Code con le righe 2-3 selezionate in un file Python e il pannello Claude Code che mostra una domanda su quelle righe con un riferimento @-mention" width="3288" height="1876" data-path="images/vs-code-send-prompt.png" />

76 </Step>

77 

78 <Step title="Rivedi le modifiche">

79 Quando Claude vuole modificare un file, mostra un confronto affiancato dell'originale e delle modifiche proposte, quindi chiede il permesso. Puoi accettare, rifiutare o dire a Claude cosa fare invece. Se modifichi il contenuto proposto direttamente nella visualizzazione diff prima di accettare, Claude viene informato che l'hai modificato in modo che non assuma che il file corrisponda alla sua proposta originale.

80 

81 <img src="https://mintcdn.com/claude-code/FVYz38sRY-VuoGHA/images/vs-code-edits.png?fit=max&auto=format&n=FVYz38sRY-VuoGHA&q=85&s=e005f9b41c541c5c7c59c082f7c4841c" alt="VS Code che mostra un diff delle modifiche proposte da Claude con un prompt di permesso che chiede se apportare la modifica" width="3292" height="1876" data-path="images/vs-code-edits.png" />

82 </Step>

83</Steps>

84 

85Per altre idee su cosa puoi fare con Claude Code, consulta [Flussi di lavoro comuni](/it/common-workflows).

86 

87<Tip>

88 Esegui "Claude Code: Open Walkthrough" dalla Tavolozza dei comandi per una visita guidata delle nozioni di base.

89</Tip>

90 

91## Usa la casella dei prompt

92 

93La casella dei prompt supporta diverse funzioni:

94 

95* **Modalità di permesso**: fai clic sull'indicatore di modalità in fondo alla casella dei prompt per cambiare modalità. In modalità normale, Claude chiede il permesso prima di ogni azione. In Plan Mode, Claude descrive cosa farà e attende l'approvazione prima di apportare modifiche. VS Code apre automaticamente il piano come documento markdown completo dove puoi aggiungere commenti inline per fornire feedback prima che Claude inizi. In modalità auto-accept, Claude apporta modifiche senza chiedere. Imposta il valore predefinito nelle impostazioni di VS Code in `claudeCode.initialPermissionMode`.

96* **Menu dei comandi**: fai clic su `/` o digita `/` per aprire il menu dei comandi. Le opzioni includono l'allegato di file, il cambio di modelli, l'attivazione del pensiero esteso, la visualizzazione dell'utilizzo del piano (`/usage`) e l'avvio di una sessione [Remote Control](/it/remote-control) (`/remote-control`). La sezione Personalizza fornisce accesso ai server MCP, hooks, memoria, autorizzazioni e plugin. Gli elementi con un'icona del terminale si aprono nel terminale integrato.

97* **Indicatore di contesto**: la casella dei prompt mostra quanto della finestra di contesto di Claude stai utilizzando. Claude si compatta automaticamente quando necessario, oppure puoi eseguire `/compact` manualmente.

98* **Pensiero esteso**: consente a Claude di dedicare più tempo al ragionamento su problemi complessi. Attivalo tramite il menu dei comandi (`/`). Il ragionamento di Claude appare nella conversazione come blocchi compressi: fai clic su un blocco per leggerlo, oppure premi `Ctrl+O` per espandere o comprimere ogni blocco di pensiero nella sessione. Consulta [Pensiero esteso](/it/common-workflows#use-extended-thinking-thinking-mode) per i dettagli.

99* **Input multi-riga**: premi `Shift+Enter` per aggiungere una nuova riga senza inviare. Funziona anche nell'input di testo libero "Altro" dei dialoghi delle domande.

100 

101### Riferisci file e cartelle

102 

103Usa @-mention per dare a Claude il contesto su file o cartelle specifiche. Quando digiti `@` seguito da un nome di file o cartella, Claude legge quel contenuto e può rispondere a domande su di esso o apportare modifiche. Claude Code supporta la corrispondenza fuzzy, quindi puoi digitare nomi parziali per trovare quello che ti serve:

104 

105```text theme={null}

106> Explain the logic in @auth (fuzzy matches auth.js, AuthService.ts, etc.)

107> What's in @src/components/ (include a trailing slash for folders)

108```

109 

110Per i PDF di grandi dimensioni, puoi chiedere a Claude di leggere pagine specifiche invece dell'intero file: una singola pagina, un intervallo come pagine 1-10, o un intervallo aperto come pagina 3 in poi.

111 

112Quando selezioni il testo nell'editor, Claude può vedere il tuo codice evidenziato automaticamente. Il piè di pagina della casella dei prompt mostra quante righe sono selezionate. Premi `Option+K` (Mac) / `Alt+K` (Windows/Linux) per inserire un @-mention con il percorso del file e i numeri di riga (ad es. `@app.ts#5-10`). Fai clic sull'indicatore di selezione per attivare/disattivare se Claude può vedere il tuo testo evidenziato - l'icona occhio-barra significa che la selezione è nascosta a Claude.

113 

114Puoi anche tenere premuto `Shift` mentre trascini i file nella casella dei prompt per aggiungerli come allegati. Fai clic sulla X su qualsiasi allegato per rimuoverlo dal contesto.

115 

116### Riprendi conversazioni passate

117 

118Fai clic sul pulsante **Cronologia sessioni** in cima al pannello Claude Code per accedere alla cronologia delle conversazioni. Puoi cercare per parola chiave o sfogliare per tempo (Oggi, Ieri, Ultimi 7 giorni, ecc.). Fai clic su qualsiasi conversazione per riprenderla con la cronologia completa dei messaggi. Le nuove sessioni ricevono titoli generati dall'IA in base al tuo primo messaggio. Passa il mouse su una sessione per rivelare le azioni di rinomina e rimozione: rinomina per darle un titolo descrittivo, o rimuovi per eliminarla dall'elenco. Per ulteriori informazioni sulla ripresa delle sessioni, consulta [Flussi di lavoro comuni](/it/common-workflows#resume-previous-conversations).

119 

120### Riprendi sessioni remote da Claude.ai

121 

122Se utilizzi [Claude Code sul web](/it/claude-code-on-the-web), puoi riprendere quelle sessioni remote direttamente in VS Code. Ciò richiede l'accesso con **Claude.ai Subscription**, non Anthropic Console.

123 

124<Steps>

125 <Step title="Apri la cronologia sessioni">

126 Fai clic sul pulsante **Cronologia sessioni** in cima al pannello Claude Code.

127 </Step>

128 

129 <Step title="Seleziona la scheda Remote">

130 La finestra di dialogo mostra due schede: Local e Remote. Fai clic su **Remote** per vedere le sessioni da claude.ai.

131 </Step>

132 

133 <Step title="Seleziona una sessione da riprendere">

134 Sfoglia o cerca le tue sessioni remote. Fai clic su qualsiasi sessione per scaricarla e continuare la conversazione localmente.

135 </Step>

136</Steps>

137 

138<Note>

139 Solo le sessioni web avviate con un repository GitHub appaiono nella scheda Remote. La ripresa carica la cronologia della conversazione localmente; le modifiche non vengono sincronizzate di nuovo a claude.ai.

140</Note>

141 

142## Personalizza il tuo flusso di lavoro

143 

144Una volta che sei operativo, puoi riposizionare il pannello Claude, eseguire più sessioni o passare alla modalità terminale.

145 

146### Scegli dove vive Claude

147 

148Puoi trascinare il pannello Claude per riposizionarlo ovunque in VS Code. Afferra la scheda o la barra del titolo del pannello e trascinalo a:

149 

150* **Barra laterale secondaria**: il lato destro della finestra. Mantiene Claude visibile mentre codifichi.

151* **Barra laterale primaria**: la barra laterale sinistra con icone per Explorer, Search, ecc.

152* **Area dell'editor**: apre Claude come scheda insieme ai tuoi file. Utile per attività secondarie.

153 

154<Tip>

155 Usa la barra laterale per la tua sessione Claude principale e apri schede aggiuntive per attività secondarie. Claude ricorda la tua posizione preferita. L'icona dell'elenco delle sessioni della Barra attività è separata dal pannello Claude: l'elenco delle sessioni è sempre visibile nella Barra attività, mentre l'icona del pannello Claude appare lì solo quando il pannello è ancorato alla barra laterale sinistra.

156</Tip>

157 

158### Esegui più conversazioni

159 

160Usa **Apri in Nuova Scheda** o **Apri in Nuova Finestra** dalla Tavolozza dei comandi per avviare conversazioni aggiuntive. Ogni conversazione mantiene la propria cronologia e contesto, permettendoti di lavorare su diversi compiti in parallelo.

161 

162Quando usi le schede, un piccolo punto colorato sull'icona spark indica lo stato: blu significa che una richiesta di permesso è in sospeso, arancione significa che Claude ha finito mentre la scheda era nascosta.

163 

164### Passa alla modalità terminale

165 

166Per impostazione predefinita, l'estensione apre un pannello di chat grafico. Se preferisci l'interfaccia in stile CLI, apri l'[impostazione Use Terminal](vscode://settings/claudeCode.useTerminal) e seleziona la casella.

167 

168Puoi anche aprire le impostazioni di VS Code (`Cmd+,` su Mac o `Ctrl+,` su Windows/Linux), vai a Estensioni → Claude Code e seleziona **Use Terminal**.

169 

170## Gestisci i plugin

171 

172L'estensione VS Code include un'interfaccia grafica per installare e gestire i [plugin](/it/plugins). Digita `/plugins` nella casella dei prompt per aprire l'interfaccia **Gestisci plugin**.

173 

174### Installa i plugin

175 

176La finestra di dialogo del plugin mostra due schede: **Plugin** e **Marketplaces**.

177 

178Nella scheda Plugin:

179 

180* I **plugin installati** appaiono in cima con interruttori per abilitarli o disabilitarli

181* I **plugin disponibili** dai tuoi marketplace configurati appaiono sotto

182* Cerca per filtrare i plugin per nome o descrizione

183* Fai clic su **Installa** su qualsiasi plugin disponibile

184 

185Quando installi un plugin, scegli l'ambito di installazione:

186 

187* **Installa per te**: disponibile in tutti i tuoi progetti (ambito utente)

188* **Installa per questo progetto**: condiviso con i collaboratori del progetto (ambito progetto)

189* **Installa localmente**: solo per te, solo in questo repository (ambito locale)

190 

191### Gestisci i marketplace

192 

193Passa alla scheda **Marketplaces** per aggiungere o rimuovere fonti di plugin:

194 

195* Inserisci un repository GitHub, URL o percorso locale per aggiungere un nuovo marketplace

196* Fai clic sull'icona di aggiornamento per aggiornare l'elenco dei plugin di un marketplace

197* Fai clic sull'icona del cestino per rimuovere un marketplace

198 

199Dopo aver apportato modifiche, un banner ti chiede di riavviare Claude Code per applicare gli aggiornamenti.

200 

201<Note>

202 La gestione dei plugin in VS Code utilizza gli stessi comandi CLI sotto il cofano. I plugin e i marketplace che configuri nell'estensione sono disponibili anche nella CLI e viceversa.

203</Note>

204 

205Per ulteriori informazioni sul sistema dei plugin, consulta [Plugins](/it/plugins) e [Plugin marketplaces](/it/plugin-marketplaces).

206 

207## Automatizza le attività del browser con Chrome

208 

209Connetti Claude al tuo browser Chrome per testare app web, eseguire il debug con i log della console e automatizzare i flussi di lavoro del browser senza lasciare VS Code. Ciò richiede l'[estensione Claude in Chrome](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) versione 1.0.36 o superiore.

210 

211Digita `@browser` nella casella dei prompt seguito da quello che vuoi che Claude faccia:

212 

213```text theme={null}

214@browser go to localhost:3000 and check the console for errors

215```

216 

217Puoi anche aprire il menu degli allegati per selezionare strumenti specifici del browser come aprire una nuova scheda o leggere il contenuto della pagina.

218 

219Claude apre nuove schede per le attività del browser e condivide lo stato di accesso del tuo browser, quindi può accedere a qualsiasi sito a cui sei già connesso.

220 

221Per le istruzioni di configurazione, l'elenco completo delle funzionalità e la risoluzione dei problemi, consulta [Usa Claude Code con Chrome](/it/chrome).

222 

223## Comandi e scorciatoie da tastiera di VS Code

224 

225Apri la Tavolozza dei comandi (`Cmd+Shift+P` su Mac o `Ctrl+Shift+P` su Windows/Linux) e digita "Claude Code" per vedere tutti i comandi VS Code disponibili per l'estensione Claude Code.

226 

227Alcune scorciatoie dipendono da quale pannello è "focalizzato" (riceve input da tastiera). Quando il tuo cursore è in un file di codice, l'editor è focalizzato. Quando il tuo cursore è nella casella dei prompt di Claude, Claude è focalizzato. Usa `Cmd+Esc` / `Ctrl+Esc` per alternare tra loro.

228 

229<Note>

230 Questi sono comandi VS Code per controllare l'estensione. Non tutti i comandi Claude Code incorporati sono disponibili nell'estensione. Consulta [Estensione VS Code vs. Claude Code CLI](#vs-code-extension-vs-claude-code-cli) per i dettagli.

231</Note>

232 

233| Comando | Scorciatoia | Descrizione |

234| -------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |

235| Focus Input | `Cmd+Esc` (Mac) / `Ctrl+Esc` (Windows/Linux) | Alterna lo stato attivo tra editor e Claude |

236| Open in Side Bar | - | Apri Claude nella barra laterale sinistra |

237| Open in Terminal | - | Apri Claude in modalità terminale |

238| Open in New Tab | `Cmd+Shift+Esc` (Mac) / `Ctrl+Shift+Esc` (Windows/Linux) | Apri una nuova conversazione come scheda dell'editor |

239| Open in New Window | - | Apri una nuova conversazione in una finestra separata |

240| New Conversation | `Cmd+N` (Mac) / `Ctrl+N` (Windows/Linux) | Avvia una nuova conversazione. Richiede che Claude sia focalizzato e `enableNewConversationShortcut` impostato su `true` |

241| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | Inserisci un riferimento al file corrente e alla selezione (richiede che l'editor sia focalizzato) |

242| Show Logs | - | Visualizza i log di debug dell'estensione |

243| Logout | - | Esci dal tuo account Anthropic |

244 

245### Avvia una scheda VS Code da altri strumenti

246 

247L'estensione registra un gestore URI in `vscode://anthropic.claude-code/open`. Usalo per aprire una nuova scheda Claude Code dal tuo strumento: un alias shell, un bookmarklet del browser o qualsiasi script che possa aprire un URL. Se VS Code non è già in esecuzione, l'apertura dell'URL lo avvia prima. Se VS Code è già in esecuzione, l'URL si apre nella finestra attualmente focalizzata.

248 

249Richiama il gestore con l'opener URL del tuo sistema operativo.

250 

251<Tabs>

252 <Tab title="macOS">

253 ```bash theme={null}

254 open "vscode://anthropic.claude-code/open"

255 ```

256 </Tab>

257 

258 <Tab title="Linux">

259 ```bash theme={null}

260 xdg-open "vscode://anthropic.claude-code/open"

261 ```

262 </Tab>

263 

264 <Tab title="Windows">

265 In PowerShell:

266 

267 ```powershell theme={null}

268 Start-Process "vscode://anthropic.claude-code/open"

269 ```

270 

271 In `cmd.exe`, `start` tratta il suo primo argomento tra virgolette come titolo della finestra, quindi passa un titolo vuoto prima dell'URL:

272 

273 ```cmd theme={null}

274 start "" "vscode://anthropic.claude-code/open"

275 ```

276 </Tab>

277</Tabs>

278 

279Il gestore accetta due parametri di query facoltativi:

280 

281| Parametro | Descrizione |

282| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

283| `prompt` | Testo per pre-compilare nella casella dei prompt. Deve essere codificato in URL. Il prompt è pre-compilato ma non inviato automaticamente. |

284| `session` | Un ID di sessione da riprendere invece di avviare una nuova conversazione. La sessione deve appartenere all'area di lavoro attualmente aperta in VS Code. Se la sessione non viene trovata, viene avviata una conversazione nuova. Se la sessione è già aperta in una scheda, quella scheda viene focalizzata. Per acquisire un ID di sessione a livello di programmazione, consulta [Continua conversazioni](/it/headless#continue-conversations). |

285 

286Ad esempio, per aprire una scheda pre-compilata con "review my changes":

287 

288```text theme={null}

289vscode://anthropic.claude-code/open?prompt=review%20my%20changes

290```

291 

292Per avviare una sessione terminale invece di una scheda VS Code, usa il gestore `claude-cli://` della CLI. Consulta [Avvia sessioni dai link](/it/deep-links).

293 

294## Configura le impostazioni

295 

296L'estensione ha due tipi di impostazioni:

297 

298* **Impostazioni dell'estensione** in VS Code: controllano il comportamento dell'estensione all'interno di VS Code. Apri con `Cmd+,` (Mac) o `Ctrl+,` (Windows/Linux), quindi vai a Estensioni → Claude Code. Puoi anche digitare `/` e selezionare **General Config** per aprire le impostazioni.

299* **Impostazioni Claude Code** in `~/.claude/settings.json`: condivise tra l'estensione e la CLI. Usa per comandi consentiti, variabili di ambiente, hooks e server MCP. Consulta [Impostazioni](/it/settings) per i dettagli.

300 

301<Tip>

302 Aggiungi `"$schema": "https://json.schemastore.org/claude-code-settings.json"` al tuo `settings.json` per ottenere l'autocompletamento e la convalida inline per tutte le impostazioni disponibili direttamente in VS Code.

303</Tip>

304 

305### Impostazioni dell'estensione

306 

307| Impostazione | Predefinito | Descrizione |

308| --------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

309| `useTerminal` | `false` | Avvia Claude in modalità terminale invece di pannello grafico |

310| `initialPermissionMode` | `default` | Controlla i prompt di approvazione per le nuove conversazioni: `default`, `plan`, `acceptEdits`, o `bypassPermissions`. Consulta [modalità di permesso](/it/permission-modes). |

311| `preferredLocation` | `panel` | Dove Claude si apre: `sidebar` (destra) o `panel` (nuova scheda) |

312| `autosave` | `true` | Salva automaticamente i file prima che Claude li legga o scriva |

313| `useCtrlEnterToSend` | `false` | Usa Ctrl/Cmd+Enter invece di Enter per inviare i prompt |

314| `enableNewConversationShortcut` | `false` | Abilita Cmd/Ctrl+N per avviare una nuova conversazione |

315| `hideOnboarding` | `false` | Nascondi la checklist di onboarding (icona del berretto di laurea) |

316| `respectGitIgnore` | `true` | Escludi i modelli .gitignore dalle ricerche di file |

317| `usePythonEnvironment` | `true` | Attiva l'ambiente Python dell'area di lavoro quando esegui Claude. Richiede l'estensione Python. |

318| `environmentVariables` | `[]` | Imposta le variabili di ambiente per il processo Claude. Usa invece le impostazioni Claude Code per la configurazione condivisa. |

319| `disableLoginPrompt` | `false` | Salta i prompt di autenticazione (per configurazioni di provider di terze parti) |

320| `allowDangerouslySkipPermissions` | `false` | Aggiunge la modalità [Auto](/it/permission-modes#eliminate-prompts-with-auto-mode) e Bypass permissions al selettore di modalità. Auto mode ha [requisiti di piano, admin, modello e provider](/it/permission-modes#eliminate-prompts-with-auto-mode), quindi potrebbe rimanere non disponibile anche con questo interruttore attivato. Usa Bypass permissions solo in sandbox senza accesso a Internet. |

321| `claudeProcessWrapper` | - | Percorso eseguibile utilizzato per avviare il processo Claude |

322 

323## Estensione VS Code vs. Claude Code CLI

324 

325Claude Code è disponibile sia come estensione VS Code (pannello grafico) che come CLI (interfaccia della riga di comando nel terminale). Alcune funzioni sono disponibili solo nella CLI. Se hai bisogno di una funzione solo CLI, esegui `claude` nel terminale integrato di VS Code.

326 

327| Funzione | CLI | Estensione VS Code |

328| ----------------------------- | --------------------- | --------------------------------------------------------------------------------------------------- |

329| Comandi e skills | [Tutti](/it/commands) | Sottoinsieme (digita `/` per vedere quelli disponibili) |

330| Configurazione del server MCP | Sì | Parziale (aggiungi server tramite CLI; gestisci i server esistenti con `/mcp` nel pannello di chat) |

331| Checkpoint | Sì | Sì |

332| Scorciatoia bash `!` | Sì | No |

333| Completamento scheda | Sì | No |

334 

335### Riavvolgi con i checkpoint

336 

337L'estensione VS Code supporta i checkpoint, che tracciano le modifiche ai file di Claude e ti permettono di riavvolgere a uno stato precedente. Passa il mouse su qualsiasi messaggio per rivelare il pulsante di riavvolgimento, quindi scegli tra tre opzioni:

338 

339* **Crea un ramo di conversazione da qui**: avvia un nuovo ramo di conversazione da questo messaggio mantenendo intatte tutte le modifiche al codice

340* **Riavvolgi il codice a qui**: ripristina le modifiche ai file a questo punto della conversazione mantenendo la cronologia completa della conversazione

341* **Crea un ramo di conversazione e riavvolgi il codice**: avvia un nuovo ramo di conversazione e ripristina le modifiche ai file a questo punto

342 

343Per i dettagli completi su come funzionano i checkpoint e le loro limitazioni, consulta [Checkpointing](/it/checkpointing).

344 

345### Esegui CLI in VS Code

346 

347Per utilizzare la CLI mentre rimani in VS Code, apri il terminale integrato (`` Ctrl+` `` su Windows/Linux o `` Cmd+` `` su Mac) ed esegui `claude`. La CLI si integra automaticamente con il tuo IDE per funzioni come la visualizzazione dei diff e la condivisione dei diagnostici.

348 

349Se utilizzi un terminale esterno, esegui `/ide` all'interno di Claude Code per collegarlo a VS Code.

350 

351### Passa tra l'estensione e la CLI

352 

353L'estensione e la CLI condividono la stessa cronologia delle conversazioni. Per continuare una conversazione dell'estensione nella CLI, esegui `claude --resume` nel terminale. Questo apre un selettore interattivo dove puoi cercare e selezionare la tua conversazione.

354 

355### Includi l'output del terminale nei prompt

356 

357Fai riferimento all'output del terminale nei tuoi prompt usando `@terminal:name` dove `name` è il titolo del terminale. Questo consente a Claude di vedere l'output dei comandi, i messaggi di errore o i log senza copia-incolla.

358 

359### Monitora i processi in background

360 

361Quando Claude esegue comandi di lunga durata, l'estensione mostra l'avanzamento nella barra di stato. Tuttavia, la visibilità per le attività in background è limitata rispetto alla CLI. Per una migliore visibilità, chiedi a Claude di emettere il comando in modo da poterlo eseguire nel terminale integrato di VS Code.

362 

363### Connettiti a strumenti esterni con MCP

364 

365I server MCP (Model Context Protocol) danno a Claude accesso a strumenti esterni, database e API.

366 

367Per aggiungere un server MCP, apri il terminale integrato (`` Ctrl+` `` o `` Cmd+` ``) ed esegui `claude mcp add`. L'esempio seguente aggiunge il server MCP remoto di GitHub, che si autentica con un [token di accesso personale](https://github.com/settings/personal-access-tokens) passato come intestazione:

368 

369```bash theme={null}

370claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \

371 --header "Authorization: Bearer YOUR_GITHUB_PAT"

372```

373 

374Una volta configurato, chiedi a Claude di utilizzare gli strumenti (ad es. "Review PR #456").

375 

376Per gestire i server MCP senza lasciare VS Code, digita `/mcp` nel pannello di chat. La finestra di dialogo di gestione MCP ti consente di abilitare o disabilitare i server, riconnetterti a un server e gestire l'autenticazione OAuth. Consulta la [documentazione MCP](/it/mcp) per i server disponibili.

377 

378## Lavora con git

379 

380Claude Code si integra con git per aiutare con i flussi di lavoro di controllo della versione direttamente in VS Code. Chiedi a Claude di eseguire il commit delle modifiche, creare pull request o lavorare tra i rami.

381 

382### Crea commit e pull request

383 

384Claude può mettere in stage le modifiche, scrivere messaggi di commit e creare pull request in base al tuo lavoro:

385 

386```text theme={null}

387> commit my changes with a descriptive message

388> create a pr for this feature

389> summarize the changes I've made to the auth module

390```

391 

392Quando crei pull request, Claude genera descrizioni in base alle modifiche effettive del codice e può aggiungere contesto su test o decisioni di implementazione.

393 

394### Usa git worktrees per attività parallele

395 

396Usa il flag `--worktree` (`-w`) per avviare Claude in un worktree isolato con i suoi file e ramo:

397 

398```bash theme={null}

399claude --worktree feature-auth

400```

401 

402Ogni worktree mantiene uno stato di file indipendente mentre condivide la cronologia di git. Ciò impedisce alle istanze di Claude di interferire l'una con l'altra quando lavorano su diversi compiti. Per ulteriori dettagli, consulta [Esegui sessioni parallele di Claude Code con Git worktrees](/it/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees).

403 

404## Usa provider di terze parti

405 

406Per impostazione predefinita, Claude Code si connette direttamente all'API di Anthropic. Se la tua organizzazione utilizza Amazon Bedrock, Google Vertex AI o Microsoft Foundry per accedere a Claude, configura l'estensione per utilizzare il tuo provider:

407 

408<Steps>

409 <Step title="Disabilita il prompt di accesso">

410 Apri l'[impostazione Disable Login Prompt](vscode://settings/claudeCode.disableLoginPrompt) e seleziona la casella.

411 

412 Puoi anche aprire le impostazioni di VS Code (`Cmd+,` su Mac o `Ctrl+,` su Windows/Linux), cercare "Claude Code login" e selezionare **Disable Login Prompt**.

413 </Step>

414 

415 <Step title="Configura il tuo provider">

416 Segui la guida di configurazione per il tuo provider:

417 

418 * [Claude Code su Amazon Bedrock](/it/amazon-bedrock)

419 * [Claude Code su Google Vertex AI](/it/google-vertex-ai)

420 * [Claude Code su Microsoft Foundry](/it/microsoft-foundry)

421 

422 Queste guide coprono la configurazione del tuo provider in `~/.claude/settings.json`, che garantisce che le tue impostazioni siano condivise tra l'estensione VS Code e la CLI.

423 </Step>

424</Steps>

425 

426## Sicurezza e privacy

427 

428Il tuo codice rimane privato. Claude Code elabora il tuo codice per fornire assistenza ma non lo utilizza per addestrare i modelli. Per i dettagli sulla gestione dei dati e su come rinunciare alla registrazione, consulta [Dati e privacy](/it/data-usage).

429 

430Con le autorizzazioni di auto-edit abilitate, Claude Code può modificare i file di configurazione di VS Code (come `settings.json` o `tasks.json`) che VS Code potrebbe eseguire automaticamente. Per ridurre il rischio quando si lavora con codice non attendibile:

431 

432* Abilita la [Modalità limitata di VS Code](https://code.visualstudio.com/docs/editor/workspace-trust#_restricted-mode) per gli spazi di lavoro non attendibili

433* Usa la modalità di approvazione manuale invece di auto-accept per le modifiche

434* Rivedi attentamente le modifiche prima di accettarle

435 

436### Il server IDE MCP incorporato

437 

438Quando l'estensione è attiva, esegue un server MCP locale a cui la CLI si connette automaticamente. Questo è il modo in cui la CLI apre i diff nel visualizzatore diff nativo di VS Code, legge la tua selezione corrente per i riferimenti `@` e — quando stai lavorando in un notebook Jupyter — chiede a VS Code di eseguire le celle.

439 

440Il server è denominato `ide` ed è nascosto da `/mcp` perché non c'è nulla da configurare. Se la tua organizzazione utilizza un hook `PreToolUse` per consentire gli strumenti MCP, tuttavia, dovrai sapere che esiste.

441 

442**Trasporto e autenticazione.** Il server si associa a `127.0.0.1` su una porta alta casuale e non è raggiungibile da altre macchine. Ogni attivazione dell'estensione genera un token di autenticazione casuale fresco che la CLI deve presentare per connettersi. Il token viene scritto in un file di blocco in `~/.claude/ide/` con autorizzazioni `0600` in una directory `0700`, quindi solo l'utente che esegue VS Code può leggerlo.

443 

444**Strumenti esposti al modello.** Il server ospita una dozzina di strumenti, ma solo due sono visibili al modello. Il resto è RPC interno che la CLI utilizza per la sua stessa UI — apertura di diff, lettura di selezioni, salvataggio di file — e viene filtrato prima che l'elenco degli strumenti raggiunga Claude.

445 

446| Nome dello strumento (come visto dagli hook) | Cosa fa | Scrive? |

447| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------- |

448| `mcp__ide__getDiagnostics` | Restituisce i diagnostici del language server — gli errori e gli avvisi nel pannello Problemi di VS Code. Facoltativamente limitato a un file. | No |

449| `mcp__ide__executeCode` | Esegue il codice Python nel kernel del notebook Jupyter attivo. Consulta il flusso di conferma di seguito. | Sì |

450 

451**L'esecuzione di Jupyter chiede sempre prima.** `mcp__ide__executeCode` non può eseguire nulla silenziosamente. Ad ogni chiamata, il codice viene inserito come una nuova cella alla fine del notebook attivo, VS Code lo scorre in vista e una Quick Pick nativa ti chiede di **Eseguire** o **Annullare**. L'annullamento — o la chiusura della selezione con `Esc` — restituisce un errore a Claude e nulla viene eseguito. Lo strumento rifiuta anche completamente quando non c'è un notebook attivo, quando l'estensione Jupyter (`ms-toolsai.jupyter`) non è installata, o quando il kernel non è Python.

452 

453<Note>

454 La conferma Quick Pick è separata dagli hook `PreToolUse`. Una voce di elenco consentiti per `mcp__ide__executeCode` consente a Claude di *proporre* l'esecuzione di una cella; la Quick Pick all'interno di VS Code è quello che le consente di *effettivamente* eseguirla.

455</Note>

456 

457<a id="troubleshooting" />

458 

459## Risolvi i problemi comuni

460 

461### L'estensione non si installa

462 

463* Assicurati di avere una versione compatibile di VS Code (1.98.0 o successiva)

464* Verifica che VS Code abbia il permesso di installare estensioni

465* Prova a installare direttamente dal [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code)

466 

467### L'icona Spark non è visibile

468 

469L'icona Spark appare nella **Barra degli strumenti dell'editor** (in alto a destra dell'editor) quando hai un file aperto. Se non la vedi:

470 

4711. **Apri un file**: L'icona richiede che un file sia aperto. Avere solo una cartella aperta non è sufficiente.

4722. **Controlla la versione di VS Code**: Richiede 1.98.0 o superiore (Aiuto → Informazioni)

4733. **Riavvia VS Code**: Esegui "Developer: Reload Window" dalla Tavolozza dei comandi

4744. **Disabilita le estensioni in conflitto**: Disabilita temporaneamente altre estensioni AI (Cline, Continue, ecc.)

4755. **Controlla l'affidabilità dell'area di lavoro**: L'estensione non funziona in Modalità limitata

476 

477In alternativa, fai clic su "✱ Claude Code" nella **Barra di stato** (angolo in basso a destra). Funziona anche senza un file aperto. Puoi anche usare la **Tavolozza dei comandi** (`Cmd+Shift+P` / `Ctrl+Shift+P`) e digitare "Claude Code".

478 

479### Claude Code non risponde mai

480 

481Se Claude Code non risponde ai tuoi prompt:

482 

4831. **Controlla la tua connessione Internet**: Assicurati di avere una connessione Internet stabile

4842. **Avvia una nuova conversazione**: Prova ad avviare una conversazione nuova per vedere se il problema persiste

4853. **Prova la CLI**: Esegui `claude` dal terminale per vedere se ottieni messaggi di errore più dettagliati

486 

487Se i problemi persistono, [apri un problema su GitHub](https://github.com/anthropics/claude-code/issues) con i dettagli dell'errore.

488 

489## Disinstalla l'estensione

490 

491Per disinstallare l'estensione Claude Code:

492 

4931. Apri la visualizzazione Estensioni (`Cmd+Shift+X` su Mac o `Ctrl+Shift+X` su Windows/Linux)

4942. Cerca "Claude Code"

4953. Fai clic su **Disinstalla**

496 

497Per rimuovere anche i dati dell'estensione e ripristinare tutte le impostazioni:

498 

499```bash theme={null}

500rm -rf ~/.vscode/globalStorage/anthropic.claude-code

501```

502 

503Per ulteriore aiuto, consulta la [guida alla risoluzione dei problemi](/it/troubleshooting).

504 

505## Passaggi successivi

506 

507Ora che hai Claude Code configurato in VS Code:

508 

509* [Esplora i flussi di lavoro comuni](/it/common-workflows) per ottenere il massimo da Claude Code

510* [Configura i server MCP](/it/mcp) per estendere le capacità di Claude con strumenti esterni. Aggiungi i server usando la CLI, quindi gestiscili con `/mcp` nel pannello di chat.

511* [Configura le impostazioni di Claude Code](/it/settings) per personalizzare i comandi consentiti, gli hooks e altro. Queste impostazioni sono condivise tra l'estensione e la CLI.

web-quickstart.md +220 −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# Iniziare con Claude Code sul web

6 

7> Esegui Claude Code nel cloud dal tuo browser o telefono. Connetti un repository GitHub, invia un'attività e rivedi la PR senza configurazione locale.

8 

9<Note>

10 Claude Code sul web è in anteprima di ricerca per gli utenti Pro, Max e Team, e per gli utenti Enterprise con posti premium o posti Chat + Claude Code.

11</Note>

12 

13Claude Code sul web viene eseguito su un'infrastruttura cloud gestita da Anthropic invece che sulla tua macchina. Invia attività da [claude.ai/code](https://claude.ai/code) dal tuo browser o dall'app mobile Claude.

14 

15Avrai bisogno di un repository GitHub per [iniziare](#connect-github-and-create-an-environment). Claude lo clona in una macchina virtuale isolata, apporta modifiche e spinge un ramo per te da rivedere. Le sessioni persistono tra i dispositivi, quindi un'attività che inizi sul tuo laptop è pronta per essere rivista dal tuo telefono in seguito.

16 

17Claude Code sul web funziona bene per:

18 

19* **Attività parallele**: esegui diversi compiti indipendenti contemporaneamente, ognuno nella sua sessione e ramo, senza gestire più worktrees

20* **Repository che non hai localmente**: Claude clona il repository da zero ogni sessione, quindi non hai bisogno che sia estratto

21* **Attività che non richiedono frequenti correzioni**: invia un'attività ben definita, fai qualcos'altro e rivedi il risultato quando Claude ha finito

22* **Domande sul codice ed esplorazione**: comprendi una base di codice o traccia come una funzione è implementata senza un checkout locale

23 

24Per il lavoro che necessita della tua configurazione locale, strumenti o ambiente, eseguire Claude Code localmente o utilizzare [Remote Control](/it/remote-control) è una scelta migliore.

25 

26## Come vengono eseguite le sessioni

27 

28Quando invii un'attività:

29 

301. **Clone e preparazione**: il tuo repository viene clonato in una VM gestita da Anthropic e il tuo [script di configurazione](/it/claude-code-on-the-web#setup-scripts) viene eseguito se configurato.

312. **Configura la rete**: l'accesso a Internet viene impostato in base al [livello di accesso](/it/claude-code-on-the-web#access-levels) del tuo ambiente.

323. **Lavoro**: Claude analizza il codice, apporta modifiche, esegue test e verifica il suo lavoro. Puoi guardare e guidare durante tutto il processo, oppure allontanarti e tornare quando ha finito.

334. **Spingere il ramo**: quando Claude raggiunge un punto di arresto, spinge il suo ramo su GitHub. Rivedi il diff, lascia commenti inline, crea una PR o invia un altro messaggio per continuare.

34 

35La sessione non si chiude quando il ramo viene spinto. La creazione di PR e ulteriori modifiche avvengono tutte all'interno della stessa conversazione.

36 

37## Confronta i modi per eseguire Claude Code

38 

39Claude Code si comporta allo stesso modo ovunque. Quello che cambia è dove viene eseguito il codice e se la tua configurazione locale è disponibile. L'app Desktop offre sia sessioni locali che cloud, quindi le risposte di seguito dipendono da quale scegli:

40 

41| | Sul web | Remote Control | Terminal CLI | App Desktop |

42| :----------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------- | :------------------------- | :--------------------------- |

43| **Il codice viene eseguito su** | VM cloud Anthropic | La tua macchina | La tua macchina | La tua macchina o VM cloud |

44| **Chatti da** | claude.ai o app mobile | claude.ai o app mobile | Il tuo terminale | L'interfaccia utente Desktop |

45| **Utilizza la tua configurazione locale** | No, solo repository | Sì | Sì | Sì per locale, no per cloud |

46| **Richiede GitHub** | Sì, o [raggruppa un repository locale](/it/claude-code-on-the-web#send-local-repositories-without-github) tramite `--remote` | No | No | Solo per sessioni cloud |

47| **Continua a funzionare se ti disconnetti** | Sì | Mentre il terminale rimane aperto | No | Dipende dal tipo di sessione |

48| **[Modalità di autorizzazione](/it/permission-modes)** | Accetta automaticamente le modifiche, Plan | Chiedi, Accetta automaticamente le modifiche, Plan | Tutte le modalità | Dipende dal tipo di sessione |

49| **Accesso alla rete** | Configurabile per ambiente | La rete della tua macchina | La rete della tua macchina | Dipende dal tipo di sessione |

50 

51Consulta la documentazione [quickstart del terminale](/it/quickstart), [app Desktop](/it/desktop) o [Remote Control](/it/remote-control) per configurarli.

52 

53## Connetti GitHub e crea un ambiente

54 

55La configurazione è un processo una tantum. Se usi già la GitHub CLI, puoi [farlo dal tuo terminale](#connect-from-your-terminal) invece che dal browser.

56 

57<Steps>

58 <Step title="Visita claude.ai/code">

59 Vai a [claude.ai/code](https://claude.ai/code) e accedi con il tuo account Anthropic.

60 </Step>

61 

62 <Step title="Installa l'app Claude GitHub">

63 Dopo l'accesso, claude.ai/code ti chiede di connettere GitHub. Segui il prompt per installare l'app Claude GitHub e concederle l'accesso ai tuoi repository. Le sessioni cloud funzionano con i repository GitHub esistenti, quindi per avviare un nuovo progetto, [crea prima un repository vuoto su GitHub](https://github.com/new).

64 </Step>

65 

66 <Step title="Crea il tuo ambiente">

67 Dopo aver connesso GitHub, ti verrà chiesto di creare un ambiente cloud. L'ambiente controlla quale accesso di rete Claude ha durante le sessioni e cosa viene eseguito quando viene creata una nuova sessione. Consulta [Strumenti installati](/it/claude-code-on-the-web#installed-tools) per vedere cosa è disponibile senza alcuna configurazione.

68 

69 Il modulo ha questi campi:

70 

71 * **Nome**: un'etichetta di visualizzazione. Utile quando hai più ambienti per progetti diversi o livelli di accesso.

72 * **Accesso alla rete**: controlla cosa la sessione può raggiungere su Internet. L'impostazione predefinita, `Trusted`, consente connessioni a [registri di pacchetti comuni](/it/claude-code-on-the-web#default-allowed-domains) come npm, PyPI e RubyGems mentre blocca l'accesso generale a Internet.

73 * **Variabili di ambiente**: variabili facoltative disponibili in ogni sessione, in formato `.env`. Non racchiudere i valori tra virgolette, poiché le virgolette vengono archiviate come parte del valore. Questi sono visibili a chiunque possa modificare questo ambiente.

74 * **Script di configurazione**: uno script Bash facoltativo che viene eseguito prima dell'avvio di Claude Code. Usalo per installare strumenti di sistema che la VM cloud non include, come `apt install -y gh`. Il risultato è [memorizzato nella cache](/it/claude-code-on-the-web#environment-caching), quindi lo script non viene rieseguito ad ogni sessione. Consulta [Script di configurazione](/it/claude-code-on-the-web#setup-scripts) per esempi e suggerimenti per il debug.

75 

76 Per un primo progetto, lascia i valori predefiniti e fai clic su **Crea ambiente**. Puoi [modificarlo in seguito o creare ambienti aggiuntivi](/it/claude-code-on-the-web#configure-your-environment) per progetti diversi.

77 </Step>

78</Steps>

79 

80### Connetti dal tuo terminale

81 

82Se usi già la GitHub CLI (`gh`), puoi configurare Claude Code sul web senza aprire un browser. Questo richiede la [Claude Code CLI](/it/quickstart). `/web-setup` legge il tuo token `gh` locale, lo collega al tuo account Claude e crea un ambiente cloud predefinito se non ne hai uno.

83 

84<Note>

85 Le organizzazioni con [Zero Data Retention](/it/zero-data-retention) abilitato non possono utilizzare `/web-setup` o altre funzioni di sessione cloud. Se la GitHub CLI non è installata o autenticata, `/web-setup` apre il flusso di onboarding del browser.

86</Note>

87 

88<Steps>

89 <Step title="Autentica con la GitHub CLI">

90 Nel tuo shell, autentica la GitHub CLI se non l'hai già fatto:

91 

92 ```bash theme={null}

93 gh auth login

94 ```

95 </Step>

96 

97 <Step title="Accedi a Claude">

98 Nella Claude Code CLI, esegui `/login` per accedere con il tuo account claude.ai. Salta questo passaggio se sei già connesso.

99 </Step>

100 

101 <Step title="Esegui /web-setup">

102 Nella Claude Code CLI, esegui:

103 

104 ```text theme={null}

105 /web-setup

106 ```

107 

108 Questo sincronizza il tuo token `gh` al tuo account Claude. Se non hai ancora un ambiente cloud, `/web-setup` ne crea uno con accesso alla rete Trusted e nessuno script di configurazione. Puoi [modificare l'ambiente o aggiungere variabili](/it/claude-code-on-the-web#configure-your-environment) in seguito. Una volta completato `/web-setup`, puoi avviare sessioni cloud dal tuo terminale con [`--remote`](/it/claude-code-on-the-web#from-terminal-to-web) o configurare attività ricorrenti con [`/schedule`](/it/routines).

109 </Step>

110</Steps>

111 

112## Avvia un'attività

113 

114Con GitHub connesso e un ambiente creato, sei pronto a inviare attività.

115 

116<Steps>

117 <Step title="Seleziona un repository e un ramo">

118 Da [claude.ai/code](https://claude.ai/code) o dalla scheda Code nell'app mobile Claude, fai clic sul selettore di repository sotto la casella di input e scegli un repository su cui Claude lavorerà. Ogni repository mostra un selettore di ramo. Cambialo per avviare Claude da un ramo di funzionalità invece di quello predefinito. Puoi aggiungere più repository per lavorare su di essi in una sessione.

119 </Step>

120 

121 <Step title="Scegli una modalità di autorizzazione">

122 Il menu a discesa della modalità accanto all'input è impostato per impostazione predefinita su **Accetta automaticamente le modifiche**, dove Claude apporta modifiche e spinge un ramo senza fermarsi per l'approvazione. Passa a **Plan mode** se vuoi che Claude proponga un approccio e attenda il tuo via libera prima di modificare i file. Le sessioni cloud non offrono autorizzazioni Ask, modalità Auto o autorizzazioni Bypass. Consulta [Modalità di autorizzazione](/it/permission-modes) per l'elenco completo.

123 </Step>

124 

125 <Step title="Descrivi l'attività e invia">

126 Digita una descrizione di quello che vuoi e premi Invio. Sii specifico:

127 

128 * Nomina il file o la funzione: "Aggiungi un README con istruzioni di configurazione" o "Correggi il test di autenticazione non riuscito in `tests/test_auth.py`" è meglio di "correggi i test"

129 * Incolla l'output dell'errore se lo hai

130 * Descrivi il comportamento previsto, non solo il sintomo

131 

132 Claude clona i repository, esegue il tuo script di configurazione se configurato e inizia a lavorare. Ogni attività ottiene la sua sessione e il suo ramo, quindi non hai bisogno di aspettare che una finisca prima di avviarne un'altra.

133 </Step>

134</Steps>

135 

136## Precompila le sessioni

137 

138Puoi precompilare il prompt, i repository e l'ambiente per una nuova sessione aggiungendo parametri di query all'URL [claude.ai/code](https://claude.ai/code). Usalo per creare integrazioni come un pulsante nel tuo tracker di problemi che apre Claude Code con la descrizione del problema come prompt.

139 

140| Parametro | Descrizione |

141| :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

142| `prompt` | Testo del prompt da precompilare nella casella di input. È accettato anche l'alias `q`. |

143| `prompt_url` | URL da cui recuperare il testo del prompt, per i prompt troppo lunghi da incorporare in una stringa di query. L'URL deve consentire richieste cross-origin. Ignorato quando è impostato anche `prompt`. |

144| `repositories` | Elenco separato da virgole di slug `owner/repo` da preselezionare. È accettato anche l'alias `repo`. |

145| `environment` | Nome o ID dell'[ambiente](#connect-github-and-create-an-environment) da preselezionare. |

146 

147Codifica URL ogni valore. L'esempio seguente apre il modulo con un prompt e un repository già selezionati:

148 

149```text theme={null}

150https://claude.ai/code?prompt=Fix%20the%20login%20bug&repositories=acme/webapp

151```

152 

153## Rivedi e itera

154 

155Quando Claude finisce, rivedi le modifiche, lascia feedback su righe specifiche e continua finché il diff non sembra giusto.

156 

157<Steps>

158 <Step title="Apri la vista diff">

159 Un indicatore diff mostra le righe aggiunte e rimosse durante la sessione, ad esempio `+42 -18`. Selezionalo per aprire la vista diff, con un elenco di file a sinistra e le modifiche a destra.

160 </Step>

161 

162 <Step title="Lascia commenti inline">

163 Seleziona qualsiasi riga nel diff, digita il tuo feedback e premi Invio. I commenti si accumulano fino a quando non invii il tuo prossimo messaggio, quindi vengono raggruppati con esso. Claude vede "a `src/auth.ts:47`, non catturare l'errore qui" insieme alla tua istruzione principale, quindi non devi descrivere dove si trova il problema.

164 </Step>

165 

166 <Step title="Crea una pull request">

167 Quando il diff sembra giusto, seleziona **Crea PR** nella parte superiore della vista diff. Puoi aprirla come una PR completa, una bozza, o saltare alla pagina di composizione di GitHub con un titolo e una descrizione generati.

168 </Step>

169 

170 <Step title="Continua a iterare dopo la PR">

171 La sessione rimane attiva dopo la creazione della PR. Incolla l'output di errore CI o i commenti dei revisori nella chat e chiedi a Claude di affrontarli. Per fare in modo che Claude monitori la PR automaticamente, consulta [Auto-fix pull requests](/it/claude-code-on-the-web#auto-fix-pull-requests).

172 </Step>

173</Steps>

174 

175## Risolvi i problemi di configurazione

176 

177### Nessun repository appare dopo la connessione a GitHub

178 

179L'app Claude GitHub ha bisogno di accesso esplicito a ogni repository che vuoi utilizzare. Su github.com, apri **Impostazioni → Applicazioni → Claude → Configura** e verifica che il tuo repository sia elencato sotto **Accesso al repository**. I repository privati hanno bisogno della stessa autorizzazione di quelli pubblici.

180 

181### La pagina mostra solo un pulsante di accesso a GitHub

182 

183Le sessioni cloud richiedono un account GitHub connesso. Connettiti tramite il flusso del browser sopra, o esegui `/web-setup` dal tuo terminale se usi la GitHub CLI. Se preferisci non connettere GitHub affatto, consulta [Remote Control](/it/remote-control) per eseguire Claude Code sulla tua macchina e monitorarlo dal web.

184 

185### "Non disponibile per l'organizzazione selezionata"

186 

187Le organizzazioni Enterprise potrebbero aver bisogno che un amministratore abiliti Claude Code sul web. Contatta il tuo team di account Anthropic.

188 

189### `/web-setup` restituisce "Unknown command"

190 

191`/web-setup` viene eseguito all'interno della Claude Code CLI, non nel tuo shell. Avvia `claude` prima, quindi digita `/web-setup` al prompt.

192 

193Se l'hai digitato all'interno di Claude Code e vedi ancora l'errore, la tua CLI è più vecchia della v2.1.80 o sei autenticato con una chiave API o un provider di terze parti invece di un abbonamento claude.ai. Esegui `claude update`, quindi `/login` per accedere con il tuo account claude.ai.

194 

195### "Could not create a cloud environment" o "No cloud environment available" quando si utilizza `--remote` o ultraplan

196 

197Le funzioni di sessione remota creano automaticamente un ambiente cloud predefinito se non ne hai uno. Se vedi "Could not create a cloud environment", la creazione automatica non è riuscita. {/* max-version: 2.1.100 */}Se vedi "No cloud environment available", la tua CLI è precedente alla creazione automatica. In entrambi i casi, esegui `/web-setup` nella Claude Code CLI per crearne uno manualmente, o visita [claude.ai/code](https://claude.ai/code) e segui il passaggio **Crea il tuo ambiente** sopra.

198 

199### Lo script di configurazione non è riuscito

200 

201Lo script di configurazione è uscito con uno stato diverso da zero, il che blocca l'avvio della sessione. Le cause comuni sono:

202 

203* Un'installazione di pacchetto non è riuscita perché il registro non è nel tuo [livello di accesso alla rete](/it/claude-code-on-the-web#access-levels). `Trusted` copre la maggior parte dei gestori di pacchetti; `None` li blocca tutti.

204* Lo script fa riferimento a un file o un percorso che non esiste in un clone fresco.

205* Un comando che funziona localmente ha bisogno di una diversa invocazione su Ubuntu.

206 

207Per eseguire il debug, aggiungi `set -x` nella parte superiore dello script per vedere quale comando non è riuscito. Per i comandi non critici, aggiungi `|| true` in modo che non blocchino l'avvio della sessione.

208 

209### La sessione continua a funzionare dopo la chiusura della scheda

210 

211Questo è intenzionale. Chiudere la scheda o navigare via non interrompe la sessione. Continua a funzionare in background fino a quando Claude non finisce l'attività corrente, quindi rimane inattiva. Dalla barra laterale, puoi [archiviare una sessione](/it/claude-code-on-the-web#archive-sessions) per nasconderla dal tuo elenco, o [eliminarla](/it/claude-code-on-the-web#delete-sessions) per rimuoverla permanentemente.

212 

213## Passaggi successivi

214 

215Ora che puoi inviare e rivedere attività, queste pagine coprono cosa viene dopo: avviare sessioni cloud dal tuo terminale, pianificare lavori ricorrenti e dare a Claude istruzioni permanenti.

216 

217* [Usa Claude Code sul web](/it/claude-code-on-the-web): il riferimento completo, incluso il teletrasporto di sessioni al tuo terminale, script di configurazione, variabili di ambiente e configurazione di rete

218* [Routines](/it/routines): automatizza il lavoro su una pianificazione, tramite chiamata API o in risposta agli eventi di GitHub

219* [CLAUDE.md](/it/memory): dai a Claude istruzioni e contesto persistenti che si caricano all'inizio di ogni sessione

220* Installa l'app mobile Claude per [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) o [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) per monitorare le sessioni dal tuo telefono. Dalla Claude Code CLI, `/mobile` mostra un codice QR.

whats-new.md +49 −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# Novità

6 

7> Un digest settimanale delle notevoli funzionalità di Claude Code, con frammenti di codice, demo e contesto su perché sono importanti.

8 

9Il digest settimanale per sviluppatori evidenzia le funzionalità più probabili a cambiare il modo in cui lavorate. Ogni voce include codice eseguibile, una breve demo e un collegamento alla documentazione completa. Per ogni correzione di bug e miglioramento minore, consultate il [changelog](/it/changelog).

10 

11<Update label="Week 17" description="April 20–24, 2026" tags={["v2.1.114–v2.1.119"]}>

12 **`/ultrareview`** si apre come anteprima di ricerca pubblica: una flotta di agenti cacciatori di bug viene eseguita nel cloud e i risultati tornano automaticamente nel vostro CLI o Desktop.

13 

14 Anche questa settimana: **session recap** vi mostra cosa è successo mentre un terminale era non focalizzato; **custom themes** vi permettono di costruire e distribuire tavolozze di colori da `/theme` o da un plugin; e **Claude Code sul web** riceve una riprogettazione con una nuova barra laterale delle sessioni e un layout drag-and-drop.

15 

16 [Leggi il digest della Week 17 →](/it/whats-new/2026-w17)

17</Update>

18 

19<Update label="Week 16" description="April 13–17, 2026" tags={["v2.1.105–v2.1.113"]}>

20 **Claude Opus 4.7** arriva come nuovo predefinito su Max e Team Premium, con un nuovo livello di sforzo `xhigh` che è l'impostazione consigliata per la maggior parte del lavoro di codifica e uno slider interattivo `/effort` per regolarlo.

21 

22 Anche questa settimana: **Routines** su Claude Code sul web attivano agenti cloud templati da una pianificazione, un evento GitHub o una chiamata API; `/ultrareview` esegue la revisione del codice multi-agente parallela nel cloud; `/usage` mostra cosa sta guidando i vostri limiti; e il CLI si sposta su binari nativi.

23 

24 [Leggi il digest della Week 16 →](/it/whats-new/2026-w16)

25</Update>

26 

27<Update label="Week 15" description="April 6–10, 2026" tags={["v2.1.92–v2.1.101"]}>

28 **Ultraplan** entra in anteprima iniziale: bozza un piano nel cloud dal vostro CLI, esaminate e commentate in un editor web, quindi eseguitelo in remoto o riportatelo in locale. La prima esecuzione ora crea automaticamente un ambiente cloud per voi.

29 

30 Anche questa settimana: lo strumento **Monitor** trasmette gli eventi di background nella conversazione in modo che Claude possa seguire i log e reagire in tempo reale, `/loop` si auto-regola quando omettete l'intervallo, `/team-onboarding` pacchetto la vostra configurazione in una guida riproducibile, e `/autofix-pr` attiva l'auto-fix PR dal vostro terminale.

31 

32 [Leggi il digest della Week 15 →](/it/whats-new/2026-w15)

33</Update>

34 

35<Update label="Week 14" description="March 30 – April 3, 2026" tags={["v2.1.86–v2.1.91"]}>

36 **Computer use** arriva al CLI in anteprima di ricerca: Claude può aprire app native, fare clic attraverso l'interfaccia utente e verificare le modifiche dal vostro terminale. Migliore per chiudere il ciclo su cose che solo una GUI può verificare.

37 

38 Anche questa settimana: lezioni interattive `/powerup`, rendering alt-screen senza sfarfallio, un override della dimensione del risultato MCP per strumento fino a 500K, e eseguibili plugin sul `PATH` dello strumento Bash.

39 

40 [Leggi il digest della Week 14 →](/it/whats-new/2026-w14)

41</Update>

42 

43<Update label="Week 13" description="March 23–27, 2026" tags={["v2.1.83–v2.1.85"]}>

44 **Auto mode** arriva in anteprima di ricerca: un classificatore gestisce i vostri prompt di autorizzazione in modo che le azioni sicure vengono eseguite senza interruzione e quelle rischiose vengono bloccate. La via di mezzo tra approvare tutto e `--dangerously-skip-permissions`.

45 

46 Anche questa settimana: computer use nell'app Desktop, PR auto-fix su Web, ricerca di trascritti con `/`, uno strumento PowerShell nativo per Windows, e hook `if` condizionali.

47 

48 [Leggi il digest della Week 13 →](/it/whats-new/2026-w13)

49</Update>

whats-new/2026-w16.md +135 −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# Settimana 16 · 13–17 aprile 2026

6 

7> Claude Opus 4.7 con il nuovo livello di sforzo xhigh, Routines su Claude Code sul web, /ultrareview revisione del codice cloud, un breakdown di /usage che mostra cosa sta guidando i vostri limiti, e binari nativi che sostituiscono il JavaScript raggruppato.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/docs/it/changelog#2-1-105">v2.1.105 → v2.1.113</a></span>

11 <span>5 funzionalità · 13–17 aprile</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Claude Opus 4.7</span>

17 <span className="digest-feature-pill">nuovo modello</span>

18 </div>

19 

20 <p className="digest-feature-lede">Il modello di codifica più potente di Anthropic è ora il predefinito su Max e Team Premium, ed è disponibile ovunque da <code>/model</code>. Aggiunge un nuovo livello di sforzo <code>xhigh</code> che si colloca tra <code>high</code> e <code>max</code>: i migliori risultati per la maggior parte dei compiti di codifica e agentici, applicato come predefinito la prima volta che passate a 4.7. <code>/effort</code> ora apre un cursore interattivo con frecce quando lo richiamate senza argomenti, così potete bilanciare l'intelligenza rispetto alla velocità senza ricordare i nomi dei livelli.</p>

21 

22 <p className="digest-feature-try">Cambiate modello e sforzo in una sola volta:</p>

23 

24 ```text Claude Code theme={null}

25 > /model opus

26 > /effort xhigh

27 ```

28 

29 <a className="digest-feature-link" href="/docs/it/model-config#adjust-effort-level">Configurazione del modello: livelli di sforzo</a>

30</div>

31 

32<div className="digest-feature">

33 <div className="digest-feature-header">

34 <span className="digest-feature-title">Routines</span>

35 <span className="digest-feature-pill">web</span>

36 </div>

37 

38 <p className="digest-feature-lede">Agenti cloud basati su template che si attivano secondo una pianificazione, un evento GitHub o una chiamata API. Definite una routine una sola volta su Claude Code sul web con un prompt, i repository che può toccare e i connettori di cui ha bisogno, quindi lasciate che PR-opened, release-published o il vostro webhook personalizzato la attivino senza che la vostra macchina sia in esecuzione. Il selettore di trigger ora copre gli eventi GitHub con filtri opzionali e fornisce a ogni routine un endpoint <code>/fire</code> tokenizzato per i sistemi esterni.</p>

39 

40 <Frame>

41 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/routines.png?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=2ba818ea9280c549511cb48b9b4d1dc5" alt="Creazione di una routine su Claude Code sul web con trigger di pianificazione, evento GitHub e API" width="1440" height="810" data-path="images/whats-new/routines.png" />

42 </Frame>

43 

44 <p className="digest-feature-try">Createne una dall'interfaccia web, o create uno scaffold dal vostro terminale:</p>

45 

46 ```text Claude Code theme={null}

47 > /schedule daily PR review at 9am

48 ```

49 

50 <a className="digest-feature-link" href="/docs/it/routines">Guida alle Routines</a>

51</div>

52 

53<div className="digest-feature">

54 <div className="digest-feature-header">

55 <span className="digest-feature-title">/usage breakdown</span>

56 <span className="digest-feature-pill">CLI</span>

57 </div>

58 

59 <p className="digest-feature-lede">Maggiore visibilità su dove va l'utilizzo di Claude Code. <code>/usage</code> ora mostra cosa sta guidando i vostri limiti: sessioni parallele, subagenti, cache miss e contesto lungo, ognuno con una percentuale delle ultime 24 ore e un suggerimento per ottimizzarlo. Premete <code>d</code> o <code>w</code> per passare tra le visualizzazioni giornaliera e settimanale.</p>

60 

61 <Frame>

62 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/usage.png?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=792a4b43cbef4e2931974831f076bca6" alt="Il comando /usage che mostra un breakdown di cosa sta contribuendo all'utilizzo dei limiti" width="1204" height="1182" data-path="images/whats-new/usage.png" />

63 </Frame>

64 

65 <p className="digest-feature-try">Eseguitelo in qualsiasi momento:</p>

66 

67 ```text Claude Code theme={null}

68 > /usage

69 ```

70 

71 <a className="digest-feature-link" href="/docs/it/commands">Riferimento dei comandi</a>

72</div>

73 

74<div className="digest-feature">

75 <div className="digest-feature-header">

76 <span className="digest-feature-title">/ultrareview</span>

77 <span className="digest-feature-pill">v2.1.111</span>

78 </div>

79 

80 <p className="digest-feature-lede">Revisione completa del codice nel cloud. Ultrareview espande il vostro branch su più revisori paralleli su Claude Code sul web, esegue un passaggio di critica avversariale su ogni risultato e restituisce un rapporto di risultati verificati mentre il vostro terminale rimane libero. Richiamatelo senza argomenti per rivedere il vostro branch attuale, o passate un numero di PR per recuperare e rivedere quella PR. La finestra di dialogo di avvio ora mostra un diffstat così sapete cosa sta salendo prima di confermare.</p>

81 

82 <p className="digest-feature-try">Rivedete il branch su cui siete:</p>

83 

84 ```text Claude Code theme={null}

85 > /ultrareview

86 ```

87 

88 <p className="digest-feature-try">O puntate a una PR:</p>

89 

90 ```text Claude Code theme={null}

91 > /ultrareview 1234

92 ```

93 

94 <a className="digest-feature-link" href="/docs/it/ultrareview">Guida a Ultrareview</a>

95</div>

96 

97<div className="digest-feature">

98 <div className="digest-feature-header">

99 <span className="digest-feature-title">Binari nativi</span>

100 <span className="digest-feature-pill">v2.1.113</span>

101 </div>

102 

103 <p className="digest-feature-lede">La CLI <code>claude</code> ora genera un binario nativo per piattaforma invece di JavaScript raggruppato, quindi il comando <code>claude</code> installato non richiama più Node. Il pacchetto npm estrae il binario corretto attraverso una dipendenza opzionale come <code>@anthropic-ai/claude-code-darwin-arm64</code>, quindi il vostro comando di installazione non cambia. L'installer standalone ha già spedito questo binario; npm ora lo corrisponde.</p>

104 

105 <p className="digest-feature-try">Aggiornate e controllate cosa state eseguendo:</p>

106 

107 ```bash theme={null}

108 claude update

109 claude --version

110 ```

111 

112 <a className="digest-feature-link" href="/docs/it/setup">Guida di configurazione</a>

113</div>

114 

115<div className="digest-wins">

116 <p className="digest-wins-title">Altri vantaggi</p>

117 

118 <div className="digest-wins-grid">

119 <div><a href="/docs/it/permission-modes#eliminate-prompts-with-auto-mode">Auto mode</a> è ora disponibile per gli abbonati Max su Opus 4.7, e il flag <code>--enable-auto-mode</code> non è più richiesto</div>

120 <div><a href="/docs/it/interactive-mode#session-recap">Session recap</a> mostra un riepilogo di una riga di cosa è successo mentre eravate via; eseguite <code>/recap</code> su richiesta o disattivatelo da <code>/config</code></div>

121 <div>Nuovo comando <code>/tui</code> e impostazione <code>tui</code> per passare tra il rendering classico e senza sfarfallio a metà conversazione; la visualizzazione focus è stata spostata da <code>Ctrl+O</code> al suo comando <code>/focus</code> dedicato</div>

122 <div>Strumento di notifica push: con <a href="/docs/it/remote-control">Remote Control</a> connesso e "Push when Claude decides" abilitato, Claude può avvisare il vostro telefono quando ha bisogno di voi</div>

123 <div>I plugin possono spedire osservatori in background tramite una chiave manifest di primo livello <code>monitors</code> che si arma automaticamente all'avvio della sessione o all'invocazione della skill</div>

124 <div>Opzione "Auto (match terminal)" in <code>/theme</code> segue la modalità scura/chiara del vostro terminale</div>

125 <div><code>/fewer-permission-prompts</code> scansiona i vostri trascritti per le comuni chiamate Bash e MCP di sola lettura e propone un allowlist per <code>.claude/settings.json</code></div>

126 <div>Claude può ora scoprire ed eseguire comandi incorporati come <code>/init</code>, <code>/review</code> e <code>/security-review</code> tramite lo strumento Skill</div>

127 <div>Gli hook <code>PreCompact</code> possono bloccare la compattazione uscendo con codice 2 o restituendo <code>{"{"}"decision":"block"{"}"}</code></div>

128 <div><code>ENABLE\_PROMPT\_CACHING\_1H</code> consente agli utenti di chiave API, Bedrock, Vertex e Foundry di optare per il TTL della cache prompt di 1 ora</div>

129 <div>L'impostazione <code>sandbox.network.deniedDomains</code> esclude domini specifici da un wildcard <code>allowedDomains</code> più ampio</div>

130 <div><code>/undo</code> è ora un alias per <code>/rewind</code>, e <code>/proactive</code> è un alias per <code>/loop</code></div>

131 <div>Autorizzazioni Bash rafforzate: le regole di negazione ora corrispondono attraverso i wrapper <code>env</code>/<code>sudo</code>/<code>watch</code>, e le regole di autorizzazione <code>Bash(find:\*)</code> non approvano più automaticamente <code>-exec</code> o <code>-delete</code></div>

132 </div>

133</div>

134 

135[Changelog completo per v2.1.105–v2.1.113 →](/it/changelog#2-1-105)

whats-new/2026-w17.md +113 −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# Settimana 17 · 20–24 aprile 2026

6 

7> /ultrareview si apre come anteprima di ricerca, riepiloghi automatici della sessione quando tornate a un terminale, temi di colore personalizzati che potete creare e distribuire nei plugin, e un Claude Code riprogettato sul web.

8 

9<div className="digest-meta">

10 <span>Rilasci <a href="/docs/it/changelog#2-1-114">v2.1.114 → v2.1.119</a></span>

11 <span>4 funzionalità · 20–24 aprile</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">/ultrareview</span>

17 <span className="digest-feature-pill">anteprima di ricerca</span>

18 </div>

19 

20 <p className="digest-feature-lede">Ora in anteprima di ricerca pubblica. Ultrareview esegue una flotta di agenti di ricerca dei bug nel cloud rispetto al vostro ramo o a una PR, e i risultati vengono restituiti automaticamente nella CLI o Desktop. Eseguitelo prima di unire modifiche critiche come autenticazione o migrazioni di dati.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/ultrareview.mp4?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=0fb1271365d38f414ad155aeb8edb08e" data-path="images/whats-new/ultrareview.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Esaminate il ramo su cui siete:</p>

27 

28 ```text Claude Code theme={null}

29 > /ultrareview

30 ```

31 

32 <p className="digest-feature-try">Oppure indirizzatelo a una PR:</p>

33 

34 ```text Claude Code theme={null}

35 > /ultrareview 1234

36 ```

37 

38 <a className="digest-feature-link" href="/docs/it/ultrareview">Guida Ultrareview</a>

39</div>

40 

41<div className="digest-feature">

42 <div className="digest-feature-header">

43 <span className="digest-feature-title">Riepilogo della sessione</span>

44 <span className="digest-feature-pill">CLI</span>

45 </div>

46 

47 <p className="digest-feature-lede">Spostate l'attenzione da una sessione e tornate a un riepilogo di una riga di ciò che è accaduto mentre eravate assenti. Utile per mantenere il flusso mentre eseguite più sessioni Claude contemporaneamente.</p>

48 

49 <Frame>

50 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/session-recap.mp4?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=0a8db1470bd0161a47efeb2f322af76f" data-path="images/whats-new/session-recap.mp4" />

51 </Frame>

52 

53 <p className="digest-feature-try">Generare un riepilogo su richiesta, oppure disattivare quello automatico da <code>/config</code>:</p>

54 

55 ```text Claude Code theme={null}

56 > /recap

57 ```

58 

59 <a className="digest-feature-link" href="/docs/it/interactive-mode#session-recap">Modalità interattiva: riepilogo della sessione</a>

60</div>

61 

62<div className="digest-feature">

63 <div className="digest-feature-header">

64 <span className="digest-feature-title">Temi personalizzati</span>

65 <span className="digest-feature-pill">v2.1.118</span>

66 </div>

67 

68 <p className="digest-feature-lede">Costruite e passate tra temi di colore denominati da <code>/theme</code>, oppure modificate manualmente i file JSON in <code>\~/.claude/themes/</code>. Ogni tema sceglie un preset di base e sostituisce solo i token che vi interessano. I plugin possono distribuire anche temi.</p>

69 

70 <p className="digest-feature-try">Aprite il selettore di tema e createne uno nuovo:</p>

71 

72 ```text Claude Code theme={null}

73 > /theme

74 ```

75 

76 <a className="digest-feature-link" href="/docs/it/terminal-config#create-a-custom-theme">Configurazione terminale: creare un tema personalizzato</a>

77</div>

78 

79<div className="digest-feature">

80 <div className="digest-feature-header">

81 <span className="digest-feature-title">Claude Code sul web</span>

82 <span className="digest-feature-pill">web</span>

83 </div>

84 

85 <p className="digest-feature-lede">Un nuovo aspetto per <a href="https://claude.ai/code">claude.ai/code</a> che corrisponde all'app desktop riprogettata: barra laterale delle sessioni, layout trascinabile, e una vista routine aggiornata. Parti fondamentali sono state ricostruite per risposte più veloci e un'esperienza più affidabile.</p>

86 

87 <Frame>

88 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/web-redesign.jpeg?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=a2aca1b49e295b7337f5779038db8e2c" alt="Panoramica della riprogettazione di Claude Code sul web: nuova interfaccia utente, velocità e affidabilità, lavoro su web, mobile e CLI" width="1602" height="1610" data-path="images/whats-new/web-redesign.jpeg" />

89 </Frame>

90 

91 <a className="digest-feature-link" href="/docs/it/claude-code-on-the-web">Claude Code sul web</a>

92</div>

93 

94<div className="digest-wins">

95 <p className="digest-wins-title">Altri vantaggi</p>

96 

97 <div className="digest-wins-grid">

98 <div><a href="/docs/it/interactive-mode#vim-editor-mode">Modalità visiva Vim</a>: premete <code>v</code> per la selezione di caratteri o <code>V</code> per la selezione di righe nell'input del prompt, con operatori e feedback visivo</div>

99 <div>I hooks possono ora chiamare direttamente gli strumenti MCP tramite <a href="/docs/it/hooks#mcp-tool-hook-fields"><code>type: "mcp\_tool"</code></a>, quindi un hook può colpire un server già connesso senza generare un processo</div>

100 <div><code>/cost</code> e <code>/stats</code> sono uniti in <a href="/docs/it/commands"><code>/usage</code></a>; i nomi precedenti funzionano ancora come scorciatoie di digitazione che aprono la scheda pertinente</div>

101 <div>Le modifiche a <code>/config</code> (tema, modalità editor, verbose e simili) ora persistono in <code>\~/.claude/settings.json</code> e seguono la stessa precedenza progetto/locale/policy come altri <a href="/docs/it/settings">impostazioni</a></div>

102 <div>I <a href="/docs/it/sub-agents#fork-the-current-conversation">subagenti biforcati</a> possono essere abilitati su build esterni con <code>CLAUDE\_CODE\_FORK\_SUBAGENT=1</code>: una biforcazione eredita il contesto completo della conversazione invece di iniziare da zero</div>

103 <div>Il <a href="/docs/it/model-config#adjust-effort-level">livello di sforzo</a> predefinito per gli abbonati Pro e Max su Opus 4.6 e Sonnet 4.6 è ora <code>high</code> (era <code>medium</code>)</div>

104 <div>Le build native macOS e Linux sostituiscono gli strumenti <code>Glob</code> e <code>Grep</code> con <code>bfs</code> e <code>ugrep</code> incorporati disponibili tramite Bash, per ricerche più veloci senza un round-trip di strumento separato</div>

105 <div><code>--from-pr</code> ora accetta URL di richiesta di unione GitLab, richiesta pull Bitbucket e URL PR GitHub Enterprise oltre a github.com</div>

106 <div>Modalità Auto: includete <code>"\$defaults"</code> in <a href="/docs/it/auto-mode-config"><code>autoMode.allow</code>, <code>soft\_deny</code>, o <code>environment</code></a> per aggiungere regole personalizzate insieme all'elenco incorporato invece di sostituirlo</div>

107 <div>Il nuovo comando <a href="/docs/it/plugin-dependencies#tag-plugin-releases-for-version-resolution"><code>claude plugin tag</code></a> crea tag git di rilascio per i plugin con convalida della versione</div>

108 <div>Le sessioni Opus 4.7 ora calcolano rispetto alla finestra di contesto nativa di 1M del modello, correggendo le percentuali <code>/context</code> gonfiate e l'autocompattazione prematura</div>

109 <div><code>/resume</code> su sessioni di grandi dimensioni è fino al 67% più veloce e ora offre di riassumere sessioni grandi e obsolete prima di rileggere</div>

110 </div>

111</div>

112 

113[Changelog completo per v2.1.114–v2.1.119 →](/it/changelog#2-1-114)

zero-data-retention.md +66 −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# Zero data retention

6 

7> Scopri Zero Data Retention (ZDR) per Claude Code su Claude for Enterprise, inclusi ambito, funzionalità disabilitate e come richiedere l'abilitazione.

8 

9Zero Data Retention (ZDR) è disponibile per Claude Code quando utilizzato tramite Claude for Enterprise. Quando ZDR è abilitato, i prompt e le risposte del modello generate durante le sessioni di Claude Code vengono elaborate in tempo reale e non vengono archiviate da Anthropic dopo la restituzione della risposta, tranne dove necessario per conformarsi alla legge o combattere l'uso improprio.

10 

11ZDR su Claude for Enterprise offre ai clienti enterprise la possibilità di utilizzare Claude Code con zero data retention e accedere alle funzionalità amministrative:

12 

13* Controlli dei costi per utente

14* Dashboard [Analytics](/it/analytics)

15* [Server-managed settings](/it/server-managed-settings)

16* Audit log

17 

18ZDR per Claude Code su Claude for Enterprise si applica solo alla piattaforma diretta di Anthropic. Per i deployment di Claude su Amazon Bedrock, Google Vertex AI o Microsoft Foundry, fare riferimento alle politiche di data retention di quelle piattaforme.

19 

20## Ambito di ZDR

21 

22ZDR copre l'inferenza di Claude Code su Claude for Enterprise.

23 

24<Warning>

25 ZDR è abilitato su base per-organizzazione. Ogni nuova organizzazione richiede che ZDR sia abilitato separatamente dal team dell'account Anthropic. ZDR non si applica automaticamente alle nuove organizzazioni create nello stesso account. Contattare il team dell'account per abilitare ZDR per qualsiasi nuova organizzazione.

26</Warning>

27 

28### Cosa copre ZDR

29 

30ZDR copre le chiamate di inferenza del modello effettuate tramite Claude Code su Claude for Enterprise. Quando si utilizza Claude Code nel terminale, i prompt inviati e le risposte generate da Claude non vengono conservate da Anthropic. Questo si applica indipendentemente dal modello Claude utilizzato.

31 

32### Cosa non copre ZDR

33 

34ZDR non si estende ai seguenti elementi, anche per le organizzazioni con ZDR abilitato. Queste funzionalità seguono le [politiche standard di data retention](/it/data-usage#data-retention):

35 

36| Funzionalità | Dettagli |

37| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

38| Chat su claude.ai | Le conversazioni di chat tramite l'interfaccia web Claude for Enterprise non sono coperte da ZDR. |

39| Cowork | Le sessioni Cowork non sono coperte da ZDR. |

40| Claude Code Analytics | Non archivia prompt o risposte del modello, ma raccoglie metadati di produttività come email dell'account e statistiche di utilizzo. Le metriche di contributo non sono disponibili per le organizzazioni ZDR; il [dashboard analytics](/it/analytics) mostra solo metriche di utilizzo. |

41| Gestione utenti e posti | I dati amministrativi come email dell'account e assegnazioni di posti vengono conservati secondo le politiche standard. |

42| Integrazioni di terze parti | I dati elaborati da strumenti di terze parti, MCP servers o altre integrazioni esterne non sono coperti da ZDR. Esaminare indipendentemente le pratiche di gestione dei dati di questi servizi. |

43 

44## Funzionalità disabilitate in ZDR

45 

46Quando ZDR è abilitato per un'organizzazione Claude Code su Claude for Enterprise, determinate funzionalità che richiedono l'archiviazione di prompt o completamenti vengono automaticamente disabilitate a livello di backend:

47 

48| Funzionalità | Motivo |

49| --------------------------------------------------------------- | --------------------------------------------------------------------------- |

50| [Claude Code on the Web](/it/claude-code-on-the-web) | Richiede l'archiviazione lato server della cronologia delle conversazioni. |

51| [Remote sessions](/it/desktop#remote-sessions) dall'app Desktop | Richiede dati di sessione persistenti che includono prompt e completamenti. |

52| Invio di feedback (`/feedback`) | L'invio di feedback invia i dati della conversazione ad Anthropic. |

53 

54Queste funzionalità sono bloccate nel backend indipendentemente dalla visualizzazione lato client. Se si vede una funzionalità disabilitata nel terminale Claude Code durante l'avvio, il tentativo di utilizzarla restituisce un errore che indica che le politiche dell'organizzazione non consentono tale azione.

55 

56Le funzionalità future potrebbero anche essere disabilitate se richiedono l'archiviazione di prompt o completamenti.

57 

58## Data retention per violazioni delle politiche

59 

60Anche con ZDR abilitato, Anthropic può conservare i dati dove richiesto dalla legge o per affrontare violazioni della Usage Policy. Se una sessione viene contrassegnata per una violazione della politica, Anthropic può conservare gli input e gli output associati per un massimo di 2 anni, in linea con la politica ZDR standard di Anthropic.

61 

62## Richiedere ZDR

63 

64Per richiedere ZDR per Claude Code su Claude for Enterprise, [contattare il team di vendita](https://www.anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=zero_data_retention_request) o il team dell'account Anthropic. Il team dell'account presenterà la richiesta internamente e Anthropic esaminerà e abiliterà ZDR sulla vostra organizzazione dopo aver confermato l'idoneità. Tutte le azioni di abilitazione vengono registrate negli audit log.

65 

66Se attualmente si utilizza ZDR per Claude Code tramite chiavi API pay-as-you-go, è possibile passare a Claude for Enterprise per ottenere l'accesso alle funzionalità amministrative mantenendo ZDR per Claude Code. Contattare il team dell'account per coordinare la migrazione.