SSD Nodes Learn Hosting plans →
Guide Matt ConnorDi Matt Connor · Aggiornato 2026-09-12

Claude Code: riprendere sessioni e trovare la cronologia

Scopri come riprendere una sessione 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. Dall'interno di una sessione già in esecuzione, il comando /resume consente di passare a una conversazione diversa 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 apre direttamente quella sessione senza visualizzare 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 le versioni. Quando le informazioni qui riportate non corrispondono a quelle visualizzate nel terminale, considera claude --help e quella pagina come riferimenti autorevoli.

Che cos'è realmente una sessione

Una sessione è una conversazione salvata associata a una directory di progetto. Contiene l'intera 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 durante il lavoro, non una sola volta al termine. Per questo la conversazione rimane disponibile anche dopo la chiusura del terminale o la perdita della connessione SSH.

La ripresa ripristina più del solo testo. La cronologia della conversazione viene recuperata integralmente, insieme al modello usato dalla sessione e al subagente con cui è stata avviata, se è stato usato --agent. Viene ripristinata anche la modalità delle autorizzazioni, con alcune eccezioni per motivi di sicurezza: la modalità di pianificazione e la modalità di esclusione delle autorizzazioni non vengono mai ripristinate. Una sessione che si trovava in una di queste modalità riprende quindi nella modalità con cui verrebbe avviata una nuova sessione.

Alcuni elementi non vengono ripristinati perché erano opzioni passate all’avvio, non dati di stato salvati. Le directory aggiunte con --add-dir e le opzioni come --mcp-config, --settings e --plugin-dir devono essere passate di nuovo quando si riprende la sessione. I file di configurazione come settings.json vengono riletti all’avvio, quindi non è necessario ripetere le impostazioni che contengono. Lo stesso vale per le credenziali: Claude Code determina come autenticarsi all’avvio, in base al login e all’ambiente, invece di ripristinare queste informazioni insieme alla conversazione. Di conseguenza, una sessione ripresa su un VPS in cui una variabile ANTHROPIC_API_KEY indesiderata è finita nella shell produce l’errore di chiave API non valida, anche se l’ultima volta funzionava correttamente.

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

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

Di conseguenza, una sessione lasciata in una finestra tmux sul VPS non compare nel selettore del laptop, così come una sessione del laptop non compare sul VPS. Non viene trasferito nulla tra i due sistemi. Se lavori come la maggior parte degli utenti quando esegue Claude Code in tmux su un VPS, il server è il punto in cui si accumula la cronologia effettiva delle conversazioni, mentre il selettore visualizzato localmente mostra un insieme diverso e molto più limitato.

La stessa separazione vale tra le 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. Cowork è ancora più separato: viene eseguito in un sandbox di Anthropic, non su hardware di tua proprietà. Perciò, se stai valutando Cowork rispetto a Claude Code, anche il luogo in cui viene salvata la trascrizione fa parte della decisione.

All'interno della stessa macchina, la ricerca è più ampia di quanto potresti aspettarti. claude --resume <session-id> cerca prima nella directory del progetto corrente e nei relativi git worktree, quindi in tutti gli altri progetti presenti sulla 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. Una sessione avviata in /home/deploy/apps/api viene quindi 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 resta 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 o una voce di metadati. È testo leggibile e leggerlo non presenta problemi.

Non è invece consigliabile scrivere un parser che lo elabori. 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 di scripting documentate. È un'indicazione corretta proprio per questo motivo.

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

Cosa contengono realmente i file delle trascrizioni

Ogni risultato di uno strumento viene registrato. Di conseguenza, una trascrizione contiene il contenuto dei file letti da Claude e l'output dei comandi eseguiti da Claude. La pagina sull'uso dei dati di Anthropic lo dichiara chiaramente: Claude Code archivia localmente le trascrizioni delle sessioni in formato testo semplice in ~/.claude/projects/.

Considerate cosa significa su un server. Se Claude ha letto un file .env per capire 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. Non si è verificata alcuna fuga di dati. La trascrizione ha registrato ciò che è accaduto, che è esattamente il suo scopo, e proprio per questo deve rientrare nel modello delle minacce.

  • Backup: un backup non cifrato di /home o /root copia le trascrizioni nella destinazione dei backup. Aggiungete un'esclusione oppure accettate che copie dei prompt e del contenuto dei file risiedano ora nel vostro archivio di backup.
  • Snapshot e immagini: uno snapshot 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: verificate personalmente i permessi con ls -ld ~/.claude ~/.claude/projects, senza presumere che siano sufficientemente restrittivi.
  • Upload deliberati: il comando /feedback invia intenzionalmente la cronologia delle conversazioni ad Anthropic; anche /bug e /share trasmettono i dati tramite lo stesso percorso. Sono operazioni che scegliete di eseguire. Prima di confermare, assicuratevi quindi di sapere cosa state accettando.

Se preferite che non venga creata alcuna trascrizione, CLAUDE_CODE_SKIP_PROMPT_HISTORY disabilita la scrittura delle trascrizioni, mentre --no-session-persistence la disabilita per una singola esecuzione non interattiva di claude -p. Prima di impostare una delle due opzioni, valutate chiaramente il compromesso. La ripresa di una sessione legge le trascrizioni. Senza trascrizione non è quindi possibile riprendere la 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 alla dimensione del file.

Il selettore supporta la ricerca. Premi / oppure inizia a digitare per filtrare l'elenco. Le scorciatoie più utili sono quelle che ampliano l'ambito della ricerca: 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 i risultati 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. Avvia una sessione con claude -n auth-refactor oppure esegui /rename auth-refactor durante una sessione, quando ti accorgi che la conversazione è diventata un'attività concreta. In seguito puoi riprendere una sessione nominata usando il nome direttamente dalla shell.

Anche una sessione senza nome riceve un titolo generato. Il titolo viene scritto da una richiesta in background a un modello piccolo e veloce, che riassume il primo prompt. Il titolo ti aiuta a riconoscere la riga nel selettore, ma non è un identificatore per riprendere la sessione. claude --resume <name> cerca solo i nomi che hai impostato personalmente.

Cercare nei transcript per trovare la sessione corretta

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

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

Il comando stampa i percorsi dei transcript corrispondenti. Il nome del file senza l'estensione .jsonl è l'ID della sessione e claude --resume <session-id> lo accetta. Usare grep per stabilire quale sessione serve, quindi riprenderla o esportarla per leggerne effettivamente il contenuto.

Ci sono due aspetti da considerare. Il contenuto usa l'escaping JSON, quindi una frase che contiene virgolette o che è stata divisa da un'interruzione di riga potrebbe non corrispondere a una stringa letterale. Inoltre, una corrispondenza all'interno del risultato di uno strumento indica che Claude ha visualizzato quel testo, non che qualcuno lo abbia digitato.

Lettura ed esportazione di una conversazione

/export visualizza la conversazione corrente come testo semplice, riportando in modo leggibile i messaggi e l’output degli strumenti invece di usare JSON. Senza argomenti, apre un menu che consente di scegliere gli appunti o un file. Con un nome file, /export handover.txt scrive direttamente in quel percorso. Questo è il metodo corretto per trasferire una conversazione da un server al laptop o per allegarla a un ticket.

Per le attività automatizzate, usa le interfacce progettate per rimanere stabili. Gli hook e i comandi della riga di stato ricevono un campo transcript_path come input, quindi un hook SessionEnd può archiviare una trascrizione al termine di una sessione. Puoi anche inviare 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 nella conversazione precedente e restituisce JSON strutturato. È una base molto più affidabile rispetto all’analisi di un formato JSONL, che potrebbe cambiare nella prossima release.

Quando iniziare da zero è preferibile a riprendere

Riprendere una sessione ripristina l'intera cronologia, che viene inclusa in ogni richiesta successiva. Una conversazione durata quattro ore ieri è costosa da continuare oggi; come si accumula l'uso dei token durante 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, viene visualizzata una finestra di dialogo prima del primo messaggio. Nel frattempo la cache del prompt è scaduta, quindi la richiesta successiva rielabora l'intera cronologia una volta, indipendentemente dall'opzione scelta.

  • Resume from summary esegue subito una compattazione, quindi le richieste successive includono un riepilogo invece dell'intera cronologia. Il costo per richiesta è inferiore, ma le informazioni escluse dal riepilogo non sono più disponibili.
  • Resume full session as-is carica la conversazione senza modificarla 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 presa all'inizio della sessione. Questo è contesto obsoleto; mantenerlo aumenta contemporaneamente il consumo di token e il rischio di risposte inesatte.

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

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

In che modo resume differisce da compaction e dalla memoria

Questi concetti vengono confusi continuamente, ma risolvono problemi diversi.

Resume serve a recuperare una conversazione dopo l'uscita, il riavvio o il passaggio a un'altra attività. Compaction riguarda invece la finestra di contesto all'interno di una conversazione attiva: /compact sostituisce il contesto che Claude sta mantenendo con un riepilogo, così le richieste successive inviano meno token. Se il problema è che la finestra di contesto è piena, lo strumento da usare è compaction. La sezione gestione della finestra di contesto di Claude Code descrive questo aspetto in modo completo.

La memoria è ancora diversa. I file CLAUDE.md e la memoria automatica contengono istruzioni e informazioni che vengono caricati all'inizio di ogni sessione. Non rappresentano quindi una conversazione a cui tornare. Contengono ciò che si annota per non dover tornare a una conversazione.

Se invece vuoi eseguire due conversazioni contemporaneamente e coordinarle, si tratta di un meccanismo distinto. Le sessioni di Claude Code possono scambiarsi messaggi mentre sono entrambe attive. Questo è un problema diverso dal recuperare dal disco la sessione del giorno precedente.

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: una riga contiene un oggetto JSON 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 definisce per quanto tempo conservare le trascrizioni. Il valore predefinito è 30 giorni, con 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 su cui è stato eseguito l'agente e non vengono sincronizzate tra le 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 computer locale, se vuoi conservarne una copia.

Posso riprendere una sessione avviata in una directory diversa?

Sì, se disponi del relativo ID di sessione. claude --resume <session-id> cerca prima nella directory del progetto corrente e nei relativi worktree git, 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 nella conversazione. Avviane una nuova quando non dipende dal contesto precedente, perché la ripresa ricarica l'intera cronologia e ogni richiesta successiva la include. Fai attenzione alla deriva del contesto: una sessione che continua a fare riferimento a file già eliminati mantiene un contesto obsoleto, che consuma token e riduce la precisione a ogni turno.

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

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