SSD Nodes Learn 🎉 VPS da $5.50/mese
Guide Matt ConnorDi Matt Connor

Claude Code: riprendere sessioni e trovare la cronologia

Scopri come riprendere una sessione di Claude Code per nome o dal selettore e dove trovare sul computer le trascrizioni in testo semplice lasciate dall’agente.

Come riprendere una sessione di Claude Code

Per riprendere una sessione di Claude Code, esegui claude --continue per aprire la conversazione più recente nella directory corrente oppure claude --resume per scegliere una sessione precedente da un elenco. Da una sessione già in esecuzione, il comando /resume consente di passare a un'altra conversazione senza uscire. Le forme brevi sono -c e -r.

claude --continue
claude --resume
claude --resume auth-refactor

Se conosci già il nome o l'ID della sessione, passalo come argomento: Claude Code aprirà direttamente quella sessione senza mostrare l'elenco di selezione.

Tutto ciò che segue corrisponde alla documentazione ufficiale delle sessioni aggiornata ad agosto 2026. Claude Code viene rilasciato frequentemente e i nomi dei flag e le scorciatoie da tastiera possono cambiare tra una versione e l'altra. Se le informazioni qui riportate non corrispondono a ciò che mostra il terminale, considera claude --help e quella pagina la fonte di riferimento.

Che cos'è realmente una sessione

Una sessione è una conversazione salvata associata a una directory di progetto. Contiene tutta la cronologia dei messaggi, incluse le chiamate agli strumenti eseguite da Claude e i risultati restituiti da tali chiamate. Claude Code la scrive continuamente su disco mentre lavori, non una sola volta al termine. La conversazione resta quindi disponibile anche dopo la chiusura del terminale o l'interruzione della connessione SSH.

La ripresa ripristina più del solo testo. La cronologia completa della conversazione torna disponibile, insieme al modello usato dalla sessione e al subagent con cui è stata avviata, se hai usato --agent. Viene ripristinata anche la modalità delle autorizzazioni, con alcune eccezioni per motivi di sicurezza: la modalità plan e la modalità bypass-permissions non vengono mai ripristinate. Una sessione che si trovava in una di queste modalità riprende quindi nella modalità iniziale di una nuova sessione.

Alcuni elementi non vengono ripristinati perché erano flag passati all'avvio, non stato salvato. Le directory aggiunte con --add-dir e opzioni come --mcp-config, --settings e --plugin-dir devono essere specificate di nuovo quando riprendi la sessione. I file di configurazione come settings.json vengono riletti all'avvio. Non è quindi necessario ripetere le impostazioni definite al loro interno.

Perché la cronologia delle sessioni è più importante su un VPS

Ecco il fatto che sorprende molte persone. La trascrizione viene scritta sulla macchina in cui è stato eseguito l'agent. Non viene conservata nel tuo account e non viene sincronizzata con il cloud. È un file sul disco di quella macchina.

Di conseguenza, una sessione lasciata in una finestra tmux sul tuo VPS non compare nel selettore del laptop, così come una sessione avviata dal laptop non compare sul VPS. Non viene trasferito nulla tra le due macchine. Se lavori come la maggior parte delle persone, eseguendo Claude Code in tmux su un VPS, il server è il luogo in cui si accumula la cronologia reale delle conversazioni, mentre il selettore visualizzato localmente mostra un insieme diverso e molto più limitato.

La stessa separazione si applica alle diverse interfacce. L'app desktop e l'estensione VS Code conservano ciascuna la propria cronologia delle sessioni, che in entrambi i casi è distinta da quella della CLI. Anche Claude Code sul web conserva una cronologia separata.

All'interno di una stessa macchina, la ricerca è più ampia di quanto ci si potrebbe aspettare. claude --resume <session-id> cerca prima nella directory del progetto corrente e nei relativi worktree git, quindi in tutti gli altri progetti presenti su quella macchina. Il concetto da ricordare è "su quella macchina". Un ID di sessione proveniente da un altro host non restituisce alcun risultato e Claude Code lo segnala con No conversation found with session ID: <session-id>.

Dove archivia Claude Code la cronologia delle sessioni

Per impostazione predefinita, le trascrizioni si trovano nella directory di configurazione di Claude Code, in un percorso del tipo ~/.claude/projects/<project>/<session-id>.jsonl.

<project> è il percorso della directory di lavoro, con ogni carattere non alfanumerico sostituito da un trattino. Di conseguenza, una sessione avviata in /home/deploy/apps/api viene archiviata in una directory denominata -home-deploy-apps-api. Se il nome risultante supererebbe i 200 caratteri, Claude Code lo tronca e aggiunge un hash del percorso completo, così il nome della directory rimane entro i limiti del filesystem.

Il file è in formato JSONL: ogni riga contiene un oggetto JSON, che rappresenta un messaggio, l'uso di uno strumento oppure una voce di metadati. È testo leggibile e leggerlo non comporta problemi.

Non è invece consigliabile scrivere un parser che lo utilizzi direttamente. Il formato delle voci è interno a Claude Code e cambia tra le versioni. Di conseguenza, uno script che legge direttamente questi file può smettere di funzionare dopo un aggiornamento. La documentazione di Anthropic indica di usare /export o le interfacce per script documentate. È un'indicazione corretta proprio per questo motivo.

Due impostazioni modificano questo comportamento. CLAUDE_CONFIG_DIR sposta l'intera directory di configurazione, consentendo di archiviare le trascrizioni su un volume separato o crittografato. cleanupPeriodDays in settings.json controlla per quanto tempo vengono conservate e il valore predefinito è di 30 giorni, con un minimo di 1.

Cosa contengono realmente i file di trascrizione

Ogni risultato degli strumenti viene registrato. Una trascrizione contiene quindi il contenuto dei file letti da Claude e l'output dei comandi eseguiti da Claude. La pagina sull'utilizzo dei dati di Anthropic lo dichiara chiaramente: Claude Code archivia le trascrizioni delle sessioni localmente in formato testo normale in ~/.claude/projects/.

Considerate cosa comporta su un server. Se Claude ha letto un file .env per determinare perché un servizio non si avviava, il contenuto di quel file si trova ora in un file JSONL nella vostra home directory. Se un comando ha stampato una stringa di connessione, anche quella stringa è presente nel file. Non si è verificata alcuna fuga di dati. La trascrizione ha registrato ciò che è accaduto, che è esattamente il suo scopo. Per questo deve rientrare nel vostro modello delle minacce.

  • Backup: un backup normale di /home o /root copia le trascrizioni nella destinazione dei backup. Aggiungete un'esclusione oppure accettate che copie dei vostri prompt e del contenuto dei vostri file siano ora presenti nel sistema di backup.
  • Snapshot e immagini: uno snapshot di un VPS creato per qualsiasi motivo contiene l'intera directory. Lo stesso vale per un'immagine clonata per creare un secondo server.
  • Altri account sul sistema: controllate direttamente i permessi con ls -ld ~/.claude ~/.claude/projects, senza presumere che siano sufficientemente restrittivi.
  • Upload espliciti: il comando /feedback invia intenzionalmente la cronologia della conversazione ad Anthropic, mentre /bug e /share inviano dati tramite lo stesso percorso. Sono operazioni che scegliete di eseguire. Prima di confermare, verificate quindi cosa state autorizzando.

Se preferite non creare alcuna trascrizione, CLAUDE_CODE_SKIP_PROMPT_HISTORY disabilita la scrittura delle trascrizioni e --no-session-persistence la disabilita per una singola esecuzione non interattiva di claude -p. Valutate chiaramente il compromesso prima di impostare una delle due opzioni. La ripresa delle sessioni utilizza le trascrizioni. Senza trascrizione non è quindi possibile riprendere una sessione.

Come trovare una conversazione precedente

Apri il selettore con claude --resume oppure con /resume dall'interno di una sessione in esecuzione. Ogni riga mostra il nome della sessione, se ne hai impostato uno, oppure un titolo generato in caso contrario, oltre al tempo trascorso dall'ultima attività, al branch Git e alle dimensioni del file.

Il selettore supporta la ricerca. Premi / oppure inizia semplicemente a digitare per filtrare l'elenco. Le scorciatoie più utili sono quelle che ampliano l'elenco: Ctrl+A mostra le sessioni di tutti i progetti presenti su questa macchina, Ctrl+W mostra tutti i worktree del repository corrente e Ctrl+B limita la ricerca al branch Git corrente. Premi Space per visualizzare in anteprima il contenuto di una sessione prima di riprenderla e Ctrl+R per rinominare quella evidenziata.

Assegnare un nome alle sessioni semplifica notevolmente queste operazioni. Avviane una con claude -n auth-refactor oppure esegui /rename auth-refactor durante la sessione, quando ti accorgi che la conversazione è diventata un'attività vera e propria. In seguito puoi riprendere una sessione denominata usando il nome direttamente dalla shell.

Anche una sessione senza nome riceve un titolo generato. Il titolo viene creato da una richiesta in background a un modello piccolo e veloce, che riassume il primo prompt. Ti aiuta a riconoscere la riga nel selettore, ma non è un identificatore per riprendere la sessione. claude --resume <name> corrisponde solo ai nomi impostati manualmente.

Cercare nei transcript per trovare la sessione corretta

A volte si ricorda una frase e nient'altro. I transcript sono file di testo, quindi è possibile cercarli.

grep -rl "nftables" ~/.claude/projects/

Questo comando stampa i percorsi dei transcript corrispondenti. Il nome del file senza l'estensione .jsonl corrisponde all'ID della sessione, che claude --resume <session-id> accetta. Usare grep per stabilire quale sessione si vuole, quindi riprenderla oppure esportarla per leggerne effettivamente il contenuto.

Ci sono due precisazioni importanti. Il contenuto usa l'escape JSON, quindi una frase che contiene virgolette, oppure una frase spezzata da un'interruzione di riga, potrebbe non corrispondere come stringa letterale. Inoltre, una corrispondenza all'interno del risultato di uno strumento indica che Claude ha visto quel testo, non che qualcuno lo abbia digitato.

Lettura ed esportazione di una conversazione

/export visualizza la conversazione corrente come testo normale. I messaggi e l'output degli strumenti vengono riportati in un formato leggibile invece che come JSON. Se non si specifica alcun argomento, apre un menu con le opzioni clipboard o file. Se si specifica un nome file, /export handover.txt scrive direttamente in quel percorso. Questo è il metodo corretto per trasferire una conversazione da un server al proprio laptop o per allegarla a un ticket.

Per le operazioni automatizzate, usare le interfacce progettate per rimanere stabili. Gli hook e i comandi della status line ricevono un campo transcript_path come input. Un hook SessionEnd può quindi archiviare una trascrizione al termine della sessione. È anche possibile porre una domanda a una sessione salvata senza aprirla:

claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'

Questo invia un prompt di follow-up alla conversazione precedente e restituisce JSON strutturato. È una base molto più solida rispetto all'analisi di un formato JSONL, che può cambiare liberamente nella release successiva.

Quando iniziare da zero è meglio che riprendere

Riprendere una sessione ripristina tutta la cronologia, che viene poi inclusa in ogni richiesta successiva. Continuare oggi una conversazione durata quattro ore ieri è costoso; come si somma l’uso dei token in una sessione lunga spiega da dove deriva effettivamente questo costo.

A volte Claude Code offre una soluzione intermedia. Con un piano Pro o Max, se riprendi una sessione inattiva da circa un’ora e con più di 100,000 token, prima del primo messaggio viene visualizzata una finestra di dialogo. A quel punto la cache del prompt è scaduta, quindi la richiesta successiva rielabora una volta l’intera cronologia, indipendentemente dall’opzione scelta.

  • Resume from summary esegue subito una compattazione, quindi le richieste successive includono un riepilogo invece della cronologia completa. Il costo per richiesta è inferiore, ma le informazioni escluse dal riepilogo non sono più disponibili.
  • Resume full session as-is carica la conversazione senza modifiche e conserva ogni dettaglio, con un costo per richiesta che cresce in base alle dimensioni della conversazione.

Una terza opzione riprende la sessione completa e impedisce la visualizzazione della finestra di dialogo nelle riprese successive.

La scelta è più semplice di quanto sembri. Riprendi la sessione quando ciò che stai per scrivere dipende da quanto è già stato detto. Inizia da zero quando non dipende da questo. Il contesto obsoleto è facile da riconoscere se sai cosa cercare: Claude fa riferimento a un file eliminato un’ora prima oppure torna a discutere una decisione già presa all’inizio della sessione. Portare avanti questo contesto obsoleto consuma token e riduce contemporaneamente l’accuratezza.

Se la parte utile di una vecchia conversazione è una decisione o un’informazione che ti servirà di nuovo, non affidarti alla ripresa della sessione per conservarla. Scrivila in un punto accessibile da ogni sessione: è questo lo scopo dei file di memoria di Claude Code.

Anche /branch è utile da conoscere. Copia la conversazione fino al punto corrente e passa alla copia, lasciando intatta la sessione originale, che rimane disponibile nel selettore. Usala per provare un secondo approccio senza perdere il primo.

Differenze tra ripresa, compattazione e memoria

Questi concetti vengono confusi spesso, ma risolvono problemi diversi.

La ripresa serve a recuperare una conversazione dopo essere usciti, aver riavviato il sistema o essere passati a un'altra attività. La compattazione riguarda invece la finestra di contesto all'interno di una conversazione attiva: /compact sostituisce il contesto che Claude sta utilizzando con un riepilogo, così le richieste successive inviano meno token. Se il problema è che la finestra di contesto è piena, la compattazione è lo strumento corretto; la gestione della finestra di contesto di Claude Code lo spiega in dettaglio.

La memoria è un concetto ancora diverso. I file CLAUDE.md e la memoria automatica contengono istruzioni e informazioni che vengono caricate all'inizio di ogni sessione; non rappresentano quindi una conversazione a cui tornare. Servono a registrare ciò che non si vuole dover ripetere o recuperare in seguito.

Se vuoi eseguire due conversazioni contemporaneamente e farle coordinare, devi usare un meccanismo separato. Le sessioni di Claude Code possono scambiarsi messaggi mentre sono entrambe attive. Questo è un problema diverso dal recuperare dal disco la sessione di ieri.

FAQ

Dove archivia Claude Code la cronologia delle sessioni?

Per impostazione predefinita, nella directory di configurazione, in ~/.claude/projects/<project>/<session-id>.jsonl, dove <project> è il percorso della directory di lavoro con i caratteri non alfanumerici sostituiti da trattini. Ogni file è in formato JSONL: contiene un oggetto JSON per riga, relativo a un messaggio, all'uso di uno strumento o a una voce di metadati. CLAUDE_CONFIG_DIR sposta la directory di configurazione in un'altra posizione, mentre cleanupPeriodDays in settings.json imposta il periodo di conservazione delle trascrizioni, con un valore predefinito di 30 giorni e un minimo di 1.

Perché non vedo la sessione del mio VPS nel selettore sul laptop?

Perché le trascrizioni vengono scritte sul disco della macchina sulla quale è stato eseguito l'agent e non vengono sincronizzate tra macchine. Una conversazione avviata in tmux sul VPS esiste soltanto sul VPS. Riprendila lì tramite SSH oppure esegui /export al suo interno e copia il file di testo sul laptop se vuoi conservarne una copia locale.

Posso riprendere una sessione avviata in un'altra directory?

Sì, se disponi del relativo ID di sessione. claude --resume <session-id> cerca prima nella directory del progetto corrente e nei relativi git worktree, quindi in tutti gli altri progetti presenti sulla stessa macchina. Nel selettore, Ctrl+A estende l'elenco a tutti i progetti della macchina e Ctrl+W lo estende a tutti i worktree del repository corrente. Se non trova corrispondenze, Claude Code segnala No conversation found with session ID: <session-id>.

Devo riprendere una sessione precedente o avviarne una nuova?

Riprendi la sessione quando il messaggio successivo dipende da quanto è già stato detto in quella conversazione. Avviane una nuova quando non dipende dal contesto precedente, perché la ripresa ricarica l'intera cronologia e ogni richiesta successiva se la porta dietro. Presta attenzione alla deriva del contesto: se una sessione continua a fare riferimento a file che hai già eliminato, sta usando un contesto obsoleto, che consuma token e riduce la precisione a ogni turno.

Posso impedire a Claude Code di scrivere le trascrizioni su disco?

Sì. CLAUDE_CODE_SKIP_PROMPT_HISTORY impedisce la scrittura delle trascrizioni, mentre --no-session-persistence la impedisce per una singola esecuzione non interattiva di claude -p. Valuta prima la conseguenza, perché resume legge le trascrizioni: disattivando la scrittura, --continue e --resume non avranno nulla da caricare. Se il problema riguarda la posizione dei file e non la loro esistenza, punta CLAUDE_CONFIG_DIR a un volume cifrato e riduci invece cleanupPeriodDays.