Vai al contenuto principale
Code Mode cambia il modo in cui Claude usa i suoi strumenti. Senza Code Mode, Claude richiede direttamente chiamate agli strumenti come Bash, Read o Edit e legge ogni risultato prima di decidere cosa fare dopo. Con Code Mode, Claude scrive un frammento di JavaScript che effettua le chiamate agli strumenti, e Claude Code esegue quel codice nella tua sessione.
Code Mode è sperimentale e disattivato per impostazione predefinita. Potrebbe cambiare o essere rimosso in qualsiasi release. Per condividere un feedback, esegui /feedback.

Come funziona Code Mode

In una sessione Code Mode descrivi comunque la tua attività in un prompt, e Claude scrive JavaScript per portarla a termine. Un singolo frammento di codice può eseguire comandi in parallelo, usare un risultato nella chiamata successiva e restituire la parte dell’output che Claude deve leggere. Ad esempio, se chiedi a Claude di aumentare un limite di nuovi tentativi, Claude potrebbe scrivere questo codice per trovare il file, modificarlo ed eseguire i test. L’ultima riga restituisce a Claude il percorso del file e l’output dei test:
Nella conversazione vedi le chiamate agli strumenti, come il diff della modifica, e non il codice. Per leggere il codice, premi Ctrl+O per aprire il visualizzatore della trascrizione. Ogni frammento di codice vi appare come una riga Code compressa, con un suggerimento su come espanderla.

Quando usare Code Mode

Prova Code Mode su attività che richiedono molte chiamate agli strumenti correlate, come:
  • Una modifica che si ripete in molti file
  • Una ricerca i cui risultati devono essere filtrati prima che Claude li legga
  • Diversi comandi indipendenti che possono essere eseguiti contemporaneamente

Limitazioni di Code Mode

Prima di attivare Code Mode, verifica di poter accettare questi limiti:

Requisiti

  • Versione: Claude Code v2.1.323 o successiva, su uno qualsiasi dei due canali di release. Una versione precedente si avvia senza Code Mode, con o senza il motivo it isn't open to your account yet
  • Account: un abbonamento Claude o un account Console. Non puoi usare Code Mode tramite un gateway, Amazon Bedrock, Claude Platform on AWS, Agent Platform di Google Cloud o Microsoft Foundry
  • Organizzazione: la tua organizzazione non usa la configurazione HIPAA né la conservazione zero dei dati
  • Modello: Claude Opus 5.5, Sonnet 5.5, Haiku 5.5 o Fable 5.2
  • Superficie: una sessione claude interattiva in un terminale. Code Mode non funziona con -p, l’Agent SDK, il pannello di VS Code, l’app Desktop o le sessioni cloud
  • Installazione: la build nativa di Claude Code
  • Windows: Git for Windows è installato
Inoltre, non puoi avviare Code Mode con alcune impostazioni attive, come un helper per la chiave API, i team di agenti, l’esportazione OpenTelemetry o DISABLE_TELEMETRY. Per la soluzione relativa a ciascuna, consulta Code Mode non si avvia.

Prova Code Mode

Attiva Code Mode, assegna un’attività a Claude e guarda il codice che Claude ha scritto.
1

Controlla la tua versione

Esegui claude --version. Se la versione è precedente alla v2.1.323, esegui claude update. Se sei sul canale stable e l’aggiornamento non raggiunge la v2.1.323, attendi che stable si allinei oppure passa a latest.
2

Avvia Claude Code con Code Mode attivo

Imposta la variabile d’ambiente CLAUDE_CODE_EXPERIMENTAL_CODE_MODE su 1. Per provare Code Mode, impostala nella tua shell. Per attivare Code Mode per ogni nuova sessione, impostala nelle tue impostazioni utente.
3

Conferma che vuoi Code Mode

Claude Code ti chiede di confermare prima della tua prima sessione Code Mode. Seleziona Yes, turn on Code Mode. Claude Code si riavvia e mostra questa riga vicino all’inizio della sessione:
Se vedi una riga diversa o nessuna riga, consulta Code Mode non si avvia.
4

Assegna a Claude un'attività con molte chiamate agli strumenti

In un progetto che conosci, invia un prompt come questo:
5

Leggi il codice che Claude ha scritto

Premi Ctrl+O ed espandi una riga Code per vedere il JavaScript dietro le chiamate agli strumenti. Premi di nuovo Ctrl+O per tornare alla conversazione.
Per riprendere in seguito una sessione Code Mode, mantieni CLAUDE_CODE_EXPERIMENTAL_CODE_MODE impostata su 1 quando esegui claude --continue o claude --resume. Con Code Mode disattivato, Claude Code si rifiuta di riprendere la sessione. Le sessioni che hai avviato senza Code Mode riprendono senza Code Mode, anche con la variabile impostata.

Disattiva Code Mode

Rimuovi CLAUDE_CODE_EXPERIMENTAL_CODE_MODE dalla tua shell e da ~/.claude/settings.json, quindi avvia una nuova sessione. Puoi anche mantenere la variabile e cambiarne il valore in 0 in uno dei due posti. Con uno 0 in un posto, Code Mode resta disattivato anche se imposti 1 nell’altro.

Blocca Code Mode per la tua organizzazione

Aggiungi CLAUDE_CODE_EXPERIMENTAL_CODE_MODE con il valore 0 alle tue impostazioni gestite in modo che nessuno nella tua organizzazione possa usare Code Mode:
Gli utenti che si trovano in una sessione Code Mode vi rimangono finché non escono o riavviano Claude Code. Dopodiché, i tuoi utenti si avviano senza Code Mode e non possono riprendere le loro sessioni Code Mode finché lo 0 è in vigore. Non puoi attivare Code Mode per i tuoi utenti dalle impostazioni gestite.

Permessi e codice di lunga durata

La tua modalità di permesso determina come viene controllato il codice di Claude e se puoi parlare con Claude mentre il codice è in esecuzione.

Controlli dei permessi

Ogni chiamata a uno strumento effettuata dal codice di Claude passa attraverso le tue regole di permesso deny e ask e i tuoi hook PreToolUse. Non devi modificare una regola o un matcher per uno strumento come Bash. Oltre a regole e hook, in modalità auto un classificatore esamina il codice, e nelle modalità che chiedono conferma rispondi alle richieste di permesso: Per controllare il codice stesso, scrivi un hook PreToolUse che corrisponda a REPL, lo strumento che esegue il codice di Claude, e leggi il JavaScript da tool_input.code.
Le regole Bash corrispondono al testo dei comandi, quindi Claude può eseguire un comando negato in una forma a cui la regola non corrisponde, con o senza Code Mode. Per limiti che non dipendono dal testo dei comandi, consulta sandboxing.

Codice di lunga durata

Mentre il codice esegue una build o un test lunghi, Claude lo attende oppure lo lascia proseguire in background:
  • Attesa: Claude risponde dopo che il codice è terminato, e il codice si interrompe dopo dieci minuti, incluso il tempo che passi sulle richieste di permesso
  • Background: puoi continuare a parlare con Claude, e il codice può essere eseguito per un massimo di due ore
Per il codice in background, avvia la sessione in modalità auto o bypassPermissions. Se Claude continua ad attendere, controlla la modalità corrente e come hai avviato la sessione:
  • Sei passato a un’altra modalità: premi Shift+Tab finché non torni alla modalità in cui hai iniziato
  • Hai iniziato in un’altra modalità, oppure hai scelto la sessione dall’elenco di claude --resume: se la modalità auto è disponibile per te, esci, quindi esegui claude --continue --permission-mode auto con Code Mode attivo
  • Hai passato nomi di strumenti a --tools: riavvia in modalità auto senza quel flag

Risoluzione dei problemi

Code Mode non si avvia

Code Mode (experimental) isn't available vicino all’inizio della sessione significa che Claude Code si è avviato senza Code Mode. Il motivo segue sulla stessa riga, e viene mostrato anche da /status. Trova il motivo in questa tabella, apporta la modifica e avvia una nuova sessione. Per un motivo non elencato, controlla i requisiti. Se non vedi alcuna riga relativa a Code Mode, esegui claude --version. Se la tua versione è precedente alla v2.1.323, aggiorna. Quindi verifica che CLAUDE_CODE_EXPERIMENTAL_CODE_MODE sia 1 nella tua shell o nelle impostazioni utente, e rimuovi qualsiasi 0 da queste e da qualsiasi file --settings.

Richiesta di permesso con un conto alla rovescia

Quando Claude avvia altro codice in modalità auto mentre del codice precedente è ancora in esecuzione, il codice precedente perde la revisione del classificatore. Claude Code ti chiede quindi conferma per le chiamate rimanenti del codice precedente che richiederebbero una revisione. Senza alcun IDE connesso, la richiesta mostra un conto alla rovescia:
Rispondi prima che il conto alla rovescia termini. Altrimenti quella chiamata viene rifiutata, e le chiamate successive che mostrerebbero un conto alla rovescia vengono rifiutate senza richiesta. Per vedere di nuovo le richieste, invia un messaggio a Claude.

Chiamata a uno strumento rifiutata da un hook

Se Claude segnala una chiamata a uno strumento rifiutata, chiedigli il testo dell’errore. Questi errori indicano che un hook PreToolUse non ha fornito una decisione, il che rifiuta la chiamata anche quando onFailure non è impostato:
  • the hook failed: su una chiamata dal codice di Claude, il tuo hook non è riuscito ad avviarsi, è stato terminato, è uscito con 126, 127 o un codice superiore a 128, oppure ha restituito un errore HTTP o un output non valido. Correggi l’hook
  • the hook did not finish: il tuo hook è andato in timeout su una chiamata dal codice di Claude, oppure su qualsiasi altra chiamata a uno strumento dopo che Claude ha eseguito codice nella sessione. Aumenta il timeout dell’hook
Per consentire alle chiamate di procedere quando un hook command o http fallisce o va in timeout, imposta "onFailure": "continue" su di esso. Se un hook command esce con un codice ordinario come 1, la chiamata procede a meno che tu non imposti "onFailure": "block".

Output del codice trattenuto da un hook

Se Claude riporta il motivo di blocco di un hook dove ti aspettavi l’output del codice di Claude, controlla i tuoi hook UserPromptSubmit. Quando il codice può essere eseguito in background, gli hook command, http e mcp_tool su quell’evento vengono eseguiti anche sull’output del codice. Per lasciar passare l’output, modifica l’hook in modo che non blocchi quando source nel suo input è poll_event.