Vai al contenuto principale
Una sessione è una conversazione salvata legata a una directory di progetto. Claude Code la archivia localmente mentre lavori, così puoi riprendere da dove hai lasciato, creare un ramo per provare un approccio diverso, o passare tra attività. L’app desktop, Claude Code sul web e l’estensione VS Code mantengono ciascuno la propria cronologia delle sessioni. Questa pagina copre la CLI.

Riprendere una sessione

Le sessioni vengono salvate continuamente in file di trascritto locali mentre lavori, quindi puoi tornare a una dopo aver chiuso o eseguito /clear. Usa questi punti di ingresso:
ComandoCosa fa
claude --continueRiprende la sessione più recente nella directory corrente
claude --resumeApre il selezionatore di sessioni
claude --resume <name>Riprende direttamente la sessione denominata
claude --from-pr <number>Riprende la sessione collegata a quella pull request
/resumePassa a una conversazione diversa da una sessione attiva
Le sessioni create con claude -p o l’Agent SDK non vengono visualizzate nel selezionatore di sessioni, ma puoi comunque riprenderne una passando il suo ID di sessione a claude --resume <session-id>. Esegui questo dalla directory in cui è stata avviata la sessione: la ricerca dell’ID di sessione è limitata alla directory del progetto corrente e ai suoi git worktrees, quindi una sessione creata altrove segnala No conversation found with session ID: <session-id>.

Dove il selezionatore di sessioni cerca

Le sessioni vengono archiviate per directory di progetto. Per impostazione predefinita, il selezionatore di sessioni mostra le sessioni interattive dal worktree corrente, più le sessioni avviate altrove che hanno aggiunto la directory corrente con /add-dir. Usa Ctrl+W per ampliare a tutti i worktree del repository o Ctrl+A per ampliare a ogni progetto su questa macchina. A partire dalla v2.1.169, lo spostamento di una sessione con /cd la trasferisce nell’archivio del progetto della nuova directory, quindi appare nel selezionatore di quella directory in seguito. A partire dalla v2.1.196, una sessione spostata rimane fuori dal selezionatore della directory precedente anche dopo un arresto anomalo o un’uscita forzata. Nelle versioni precedenti, potrebbe anche riapparire nell’elenco della directory precedente dopo un’uscita non pulita quando il percorso precedente conteneva caratteri speciali come trattini bassi. Selezionare una sessione da un altro worktree dello stesso repository la riprende sul posto. Selezionare una sessione da un progetto non correlato copia un comando cd e resume negli appunti. La ripresa per nome si risolve nel repository corrente e nei suoi worktree. Entrambi i moduli cercano una corrispondenza esatta e la riprendono direttamente anche se si trova in un worktree diverso:
ComandoCorrispondenza esattaNome ambiguo
claude --resume <name>Riprende direttamenteApre il selezionatore di sessioni con il nome pre-compilato come termine di ricerca
/resume <name>Riprende direttamenteSegnala un errore; esegui /resume senza argomenti per aprire il selezionatore di sessioni

Assegnare nomi alle sessioni

Dai alle sessioni nomi descrittivi in modo che siano trovabili nel selezionatore di sessioni e riprendibili per nome. Questo è particolarmente importante quando stai lavorando su più attività in parallelo.
QuandoCome impostare il nome
All’avvioclaude -n auth-refactor
Durante una sessione/rename auth-refactor. Il nome appare anche sulla barra del prompt
Dal selezionatore di sessioniEvidenzia una sessione e premi Ctrl+R
Sull’accettazione del pianoAccettare un piano in plan mode assegna un nome alla sessione dal contenuto del piano a meno che non ne abbia già impostato uno
Una volta che una sessione è denominata, torna a essa con claude --resume <name> o /resume <name>. Vedi Riprendere una sessione per come il comportamento della risoluzione dei nomi funziona nei worktree. Le sessioni interattive che non nomini mai ricevono comunque un nome di visualizzazione predefinito quando si avviano. Richiede Claude Code v2.1.196 o versione successiva. Il valore predefinito combina il nome della directory di lavoro con un suffisso di due caratteri, ad esempio my-app-3f, e identifica la sessione negli elenchi delle sessioni in esecuzione, come la agent view e l’output di claude agents --json. Il valore predefinito non è un handle di ripresa: claude --resume <name>, /resume <name> e il selezionatore di sessioni corrispondono solo ai nomi che hai impostato. Denominare la sessione sostituisce il valore predefinito.

Usare il selezionatore di sessioni

Esegui /resume all’interno di una sessione, o claude --resume senza argomenti, per aprire il selezionatore di sessioni interattivo. Usa queste scorciatoie da tastiera per navigare, cercare e ampliare l’elenco:
ScorciatoiaAzione
/ Naviga tra le sessioni
/ Espandi o comprimi le sessioni raggruppate
EnterRiprendi la sessione evidenziata
SpaceAnteprima del contenuto della sessione. Ctrl+V funziona anche su terminali che non lo catturano come incolla
Ctrl+RRinomina la sessione evidenziata
/ o qualsiasi carattere stampabile diverso da SpaceEntra in modalità di ricerca e filtra le sessioni. Incolla un URL di pull o merge request di GitHub, GitHub Enterprise, GitLab o Bitbucket per trovare la sessione che l’ha creato
Ctrl+AMostra le sessioni da tutti i progetti su questa macchina. Premi di nuovo per tornare al repository corrente
Ctrl+WMostra le sessioni da tutti i worktree del repository corrente. Premi di nuovo per tornare al worktree corrente. Mostrato solo nei repository multi-worktree
Ctrl+BFiltra le sessioni dal ramo git corrente. Premi di nuovo per mostrare tutti i rami
EscEsci dal selezionatore di sessioni o dalla modalità di ricerca
Ogni riga mostra il nome della sessione se impostato, altrimenti il riassunto della conversazione o il primo prompt, insieme al tempo dall’ultima attività, al conteggio dei messaggi e al ramo git. Il percorso del progetto appare dopo aver ampliato a tutti i progetti con Ctrl+A. Le sessioni con rami create con /branch, /rewind o --fork-session sono raggruppate sotto la loro sessione radice. Premi per espandere un gruppo.

Creare un ramo di una sessione

La creazione di un ramo crea una copia della conversazione finora e ti passa in essa, lasciando l’originale intatto. Usalo per provare un approccio diverso senza perdere il percorso su cui eri. Da dentro una sessione, esegui /branch con un nome opzionale:
/branch try-streaming-approach
Dalla riga di comando, combina --continue o --resume con --fork-session:
claude --continue --fork-session
La sessione originale rimane invariata e disponibile nel selezionatore di sessioni. La conferma di /branch stampa due ID di sessione: il nuovo ramo in cui sei ora e l’originale. Per tornare all’originale, passa il suo ID a /resume, usa il selezionatore di sessioni, o esegui /resume <original-name>. I permessi che hai approvato con “allow for this session” non vengono trasferiti al nuovo ramo. Se riprendi la stessa sessione in due terminali senza creare un fork, i messaggi di entrambi si intercalano in un unico trascritto. Per il rewind basato su checkpoint all’interno di una singola sessione, vedi Checkpointing.

Gestire il contesto all’interno di una sessione

Questi comandi controllano cosa c’è nella finestra di contesto senza lasciare la sessione:
  • /clear: ricomincia da capo con un contesto vuoto. La conversazione precedente viene salvata e riprendibile
  • /compact [instructions]: sostituisci la cronologia con un riassunto, facoltativamente focalizzato su ciò che specifichi
  • /context: mostra cosa sta attualmente consumando contesto
Per come la compattazione interagisce con CLAUDE.md, skills e regole, vedi la guida della finestra di contesto. Per strategie su quando cancellare rispetto a compattare, vedi Best practices.

Esportare e individuare i dati della sessione

Esegui /export per aprire un menu che ti consente di copiare la conversazione corrente negli appunti o salvarla come file di testo semplice, con messaggi e output degli strumenti renderizzati come testo leggibile. Passa un nome file per saltare il menu e scrivere direttamente in quel file.

Accedere alle conversazioni da script

/export produce una trascrizione renderizzata per una persona da leggere. Le interfacce di seguito producono dati strutturati per uno script da analizzare: un risultato JSON da un’esecuzione, il percorso al file di trascrizione di una sessione, o un flusso live di eventi. Scegli in base a ciò che attiva lo script:
  • Esegui Claude una volta e cattura il risultato: invoca claude -p con --output-format json o stream-json per catturare il risultato, l’ID della sessione, l’utilizzo e il costo di un’esecuzione non interattiva come JSON strutturato.
  • Poni una domanda a una sessione esistente: passa un ID di sessione a claude -p --resume per inviare un prompt di follow-up, come una richiesta di riepilogo, e catturare la risposta strutturata.
  • Reagisci agli eventi della sessione: leggi il campo transcript_path che hooks e comandi della riga di stato ricevono come input. Un hook SessionEnd può archiviare la trascrizione quando una sessione termina.
  • Incorpora Claude in un’app TypeScript o Python: usa l’Agent SDK per ricevere ogni messaggio a livello di programmazione.
L’esempio di seguito utilizza la seconda interfaccia. Invia un prompt di follow-up a una sessione esistente e legge la risposta con jq:
claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'

Dove vengono archiviati i trascritti

Per impostazione predefinita, i trascritti vengono archiviati come JSONL in ~/.claude/projects/<project>/<session-id>.jsonl, dove <project> è il percorso della directory di lavoro con caratteri non alfanumerici sostituiti da -. Ogni riga è un oggetto JSON per un messaggio, uso dello strumento o voce di metadati. Il formato della voce è interno a Claude Code e cambia tra le versioni, quindi gli script che analizzano direttamente questi file possono interrompersi in qualsiasi rilascio. Per costruire sui dati della sessione, utilizza /export o le interfacce di script invece. La posizione, la conservazione e il comportamento di scrittura sono configurabili:
PerImpostaDove
Sposta l’archiviazione da ~/.claudeCLAUDE_CONFIG_DIRVariabile di ambiente
Cambia la conservazione di 30 giornicleanupPeriodDayssettings.json
Sopprimere le scritture di trascritto in tutte le modalitàCLAUDE_CODE_SKIP_PROMPT_HISTORYVariabile di ambiente
Sopprimere le scritture per un’esecuzione non interattiva--no-session-persistenceFlag CLI con claude -p

Vedi anche

Queste pagine coprono la meccanica correlata delle sessioni e del parallelismo:
  • Worktrees: esegui sessioni parallele isolate su rami separati
  • Checkpointing: riavvolgi il codice e la conversazione a un punto precedente
  • Context window: cosa riempie il contesto e cosa sopravvive alla compattazione
  • Non-interactive mode: comportamento della sessione in claude -p