Reprendre une session Claude Code et trouver l’historique
Utilisez resume ou le sélecteur Claude Code pour retrouver une conversation, puis localisez les transcriptions en texte brut laissées sur la machine.
Comment reprendre une session Claude Code
Pour reprendre une session Claude Code, exécutez claude --continue pour ouvrir la conversation la plus récente dans le répertoire courant, ou claude --resume pour sélectionner une session plus ancienne dans une liste. Depuis une session déjà ouverte, la commande /resume vous permet de passer à une autre conversation sans quitter la session. Les formes abrégées sont -c et -r.
claude --continue
claude --resume
claude --resume auth-refactorSi vous connaissez déjà le nom ou l’ID de la session, transmettez-le comme argument. Claude Code ouvre alors directement cette session sans afficher le sélecteur.
Tout ce qui suit correspond à la documentation officielle sur les sessions au mois d’août 2026. Claude Code publie fréquemment de nouvelles versions, et les noms des options ainsi que les raccourcis clavier peuvent changer d’une version à l’autre. Consultez donc claude --help et cette page comme références faisant autorité si le comportement observé dans votre terminal diffère.
Ce qu’est réellement une session
Une session est une conversation enregistrée associée à un répertoire de projet. Elle contient l’intégralité de l’historique des messages, y compris les appels d’outils effectués par Claude et les résultats renvoyés par ces appels. Claude Code l’écrit en continu sur le disque pendant votre travail, et pas uniquement à la fin. La conversation est ainsi conservée même si vous fermez le terminal ou perdez la connexion SSH.
La reprise restaure davantage que le texte. L’historique complet de la conversation est rétabli, avec le modèle utilisé par la session et le sous-agent avec lequel elle a été démarrée si vous avez utilisé --agent. Le mode d’autorisation est également restauré, avec des exceptions liées à la sécurité : le mode plan et le mode bypass-permissions ne sont jamais restaurés. Une session qui se trouvait dans l’un de ces modes reprend donc dans le mode utilisé au démarrage d’une nouvelle session.
Certains éléments ne réapparaissent pas, car ils correspondent à des options de lancement et non à un état sauvegardé. Les répertoires ajoutés avec --add-dir, ainsi que les options comme --mcp-config, --settings et --plugin-dir, doivent être indiqués de nouveau lors de la reprise. Les fichiers de configuration comme settings.json sont relus au lancement. Tout ce qui y est défini n’a donc pas besoin d’être répété. Les identifiants suivent le même principe : Claude Code détermine comment s’authentifier au lancement, à partir de votre connexion et de votre environnement, au lieu de les restaurer avec la conversation. Une session reprise sur un VPS où un ANTHROPIC_API_KEY indésirable s’est glissé dans le shell rencontrera donc l’erreur de clé d’API non valide, même si elle fonctionnait correctement la fois précédente.
Pourquoi l’historique des sessions est plus important sur un VPS
Voici le point qui surprend beaucoup de personnes. La transcription est écrite sur la machine où l’agent a été exécuté. Elle n’est pas conservée dans votre compte et n’est pas synchronisée avec un cloud. Il s’agit d’un fichier sur le disque de cette machine.
Ainsi, une session laissée dans une fenêtre tmux sur votre VPS n’apparaît pas dans le sélecteur de votre ordinateur portable, et une session lancée depuis votre ordinateur portable n’apparaît pas sur le VPS. Rien ne circule entre les deux. Si vous travaillez comme la plupart des personnes qui exécutent Claude Code dans tmux sur un VPS, c’est sur le serveur que s’accumule votre véritable historique de conversation. Le sélecteur affiché localement présente donc un ensemble différent et beaucoup plus limité.
La même séparation s’applique entre les interfaces. L’application de bureau et l’extension VS Code conservent chacune leur propre historique de sessions, qui n’est pas celui de la CLI. Claude Code sur le web conserve également son propre historique. Cowork est encore plus distinct : il s’exécute dans un sandbox Anthropic plutôt que sur du matériel dont vous disposez. Ainsi, si vous comparez Cowork à Claude Code, l’emplacement de la transcription fait partie des critères de décision.
Sur une même machine, la recherche couvre plus d’emplacements que prévu. claude --resume <session-id> recherche d’abord dans le répertoire du projet courant et ses worktrees git, puis dans tous les autres projets présents sur cette machine. Retenez surtout l’expression « sur cette machine ». Un ID de session provenant d’un autre hôte ne renvoie aucun résultat, et Claude Code vous l’indique avec No conversation found with session ID: <session-id>.
Où Claude Code stocke l’historique des sessions
Par défaut, les transcriptions sont stockées dans le répertoire de configuration de Claude Code, à un chemin de la forme ~/.claude/projects/<project>/<session-id>.jsonl.
<project> correspond au chemin de votre répertoire de travail, dans lequel chaque caractère non alphanumérique est remplacé par un tiret. Ainsi, une session démarrée dans /home/deploy/apps/api est stockée dans un répertoire nommé -home-deploy-apps-api. Si ce nom converti dépasse 200 caractères, Claude Code le tronque et ajoute un hash du chemin complet. Le nom du répertoire reste ainsi compatible avec les limites du système de fichiers.
Le fichier est au format JSONL : chaque ligne contient un objet JSON, correspondant à un message, à l’utilisation d’un outil ou à une entrée de métadonnées. Il s’agit de texte lisible, et vous pouvez le consulter sans problème.
En revanche, il ne faut pas écrire de parser qui s’appuie directement dessus. Le format des entrées est interne à Claude Code et change d’une version à l’autre. Un script qui lit directement ces fichiers peut donc cesser de fonctionner après n’importe quelle mise à jour. La documentation officielle d’Anthropic recommande d’utiliser /export ou les interfaces de script documentées. C’est un conseil pertinent pour cette raison précise.
Deux paramètres modifient l’emplacement et la durée de conservation. CLAUDE_CONFIG_DIR déplace l’ensemble du répertoire de configuration. Vous pouvez ainsi stocker les transcriptions sur un volume séparé ou chiffré. cleanupPeriodDays dans settings.json contrôle leur durée de conservation. La valeur par défaut est de 30 jours, avec un minimum de 1.
Contenu réel des fichiers de transcript
Chaque résultat d’outil est enregistré. Un transcript contient donc le contenu des fichiers que Claude a lus et la sortie des commandes qu’il a exécutées. La page d’Anthropic sur l’utilisation des données l’indique clairement : Claude Code stocke localement les transcripts de session en texte brut dans ~/.claude/projects/.
Sur un serveur, les conséquences sont importantes. Si Claude a lu un fichier .env pour déterminer pourquoi un service ne démarrait pas, son contenu se trouve maintenant dans un fichier JSONL de votre répertoire personnel. Si une commande a affiché une chaîne de connexion, cette chaîne s’y trouve également. Rien n’a nécessairement fuité. Le transcript a enregistré ce qui s’est passé, ce qui est précisément son objectif. C’est aussi pour cette raison qu’il doit figurer dans votre modèle de menace.
- Sauvegardes : une sauvegarde standard de
/homeou/rootcopie vos transcripts là où les sauvegardes sont stockées. Ajoutez une exclusion, ou acceptez que des copies de vos prompts et du contenu de vos fichiers résident désormais dans votre stockage de sauvegarde. - Snapshots et images : un snapshot VPS créé pour quelque raison que ce soit contient l’intégralité du répertoire. Il en va de même pour une image clonée afin de créer un second serveur.
- Autres comptes sur la machine : vérifiez vous-même les modes avec
ls -ld ~/.claude ~/.claude/projectsau lieu de supposer que les permissions sont suffisamment restrictives. - Uploads volontaires : la commande
/feedbackenvoie volontairement l’historique des conversations à Anthropic, et/bugainsi que/shareutilisent le même chemin pour transmettre leurs résultats. Vous choisissez d’effectuer ces opérations. Vous devez donc savoir ce que vous acceptez avant de confirmer.
Si vous préférez qu’aucun transcript ne soit créé, CLAUDE_CODE_SKIP_PROMPT_HISTORY désactive l’écriture des transcripts, et --no-session-persistence la désactive pour une seule exécution non interactive de claude -p. Mesurez clairement ce compromis avant d’activer l’un ou l’autre. Les transcripts permettent de reprendre une session. Sans transcript, il n’y a pas de reprise.
Comment retrouver une ancienne conversation
Ouvrez le sélecteur avec claude --resume, ou avec /resume depuis une session en cours. Chaque ligne affiche le nom de la session si vous en avez défini un, ou un titre généré dans le cas contraire, ainsi que le temps écoulé depuis la dernière activité, la branche git et la taille du fichier.
Le sélecteur permet d’effectuer une recherche. Appuyez sur /, ou commencez simplement à saisir du texte, pour filtrer la liste. Les raccourcis les plus utiles sont ceux qui élargissent la recherche : Ctrl+A affiche les sessions de tous les projets présents sur cette machine, Ctrl+W affiche tous les worktrees du dépôt actuel et Ctrl+B limite la recherche à la branche git actuelle. Appuyez sur Space pour prévisualiser le contenu d’une session avant de la sélectionner, et sur Ctrl+R pour renommer celle qui est en surbrillance.
Attribuer un nom aux sessions simplifie fortement leur gestion. Démarrez-en une avec claude -n auth-refactor, ou exécutez /rename auth-refactor en cours de session, dès que vous constatez que la conversation est devenue un véritable travail. Vous pouvez ensuite reprendre une session nommée directement depuis le shell en indiquant son nom.
Une session sans nom reçoit tout de même un titre généré. Celui-ci est produit par une requête en arrière-plan vers un petit modèle rapide qui résume votre premier prompt. Ce titre vous aide à reconnaître la ligne dans le sélecteur, mais il ne permet pas de reprendre la session. claude --resume <name> recherche uniquement les noms que vous avez vous-même définis.
Rechercher la bonne session dans les transcriptions
Vous vous souvenez parfois d’une phrase, mais de rien d’autre. Les transcriptions sont des fichiers texte : vous pouvez donc les rechercher.
grep -rl "nftables" ~/.claude/projects/Cette commande affiche les chemins des transcriptions correspondantes. Le nom de fichier sans l’extension .jsonl est l’ID de session, que claude --resume <session-id> accepte. Utilisez grep pour déterminer la session voulue, puis reprenez-la ou exportez-la pour la lire réellement.
Deux réserves importantes. Le contenu est échappé au format JSON. Une phrase contenant des guillemets, ou coupée par un saut de ligne, peut donc ne pas correspondre à une chaîne littérale. Par ailleurs, une correspondance dans le résultat d’un outil signifie que Claude a vu ce texte, et non que quelqu’un l’a saisi.
Lire et exporter une conversation
/export affiche la conversation actuelle en texte brut. Les messages et la sortie des outils sont rendus dans un format lisible plutôt qu’au format JSON. Sans argument, la commande ouvre un menu qui propose le presse-papiers ou un fichier. Avec un nom de fichier, /export handover.txt écrit directement dans ce chemin. C’est la méthode à utiliser pour transférer une conversation d’un serveur vers votre ordinateur portable ou pour la joindre à un ticket.
Pour les tâches automatisées, utilisez les interfaces conçues pour rester stables. Les hooks et les commandes de la status line reçoivent un champ transcript_path en entrée. Un hook SessionEnd peut donc archiver une transcription à la fin d’une session. Vous pouvez également poser une question à une session enregistrée sans l’ouvrir :
claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'Cette commande envoie un prompt de suivi dans l’ancienne conversation et renvoie du JSON structuré. C’est une bien meilleure base que l’analyse d’un format JSONL susceptible d’être modifié dans la prochaine release.
Commencer une nouvelle session plutôt que reprendre l’ancienne
La reprise restaure tout l’historique, et toutes les requêtes suivantes transportent cet historique complet. Continuer aujourd’hui une conversation qui a duré quatre heures hier coûte cher, et le calcul de la consommation de tokens sur une longue session explique d’où vient réellement ce coût.
Claude Code propose parfois une solution intermédiaire. Avec un forfait Pro ou Max, la reprise d’une session inactive depuis environ une heure et contenant plus de 100,000 tokens ouvre une boîte de dialogue avant votre premier message. Le cache d’invite a alors expiré. La requête suivante retraite donc tout l’historique une fois, quelle que soit l’option choisie.
- Resume from summary lance immédiatement une compaction. Les requêtes suivantes transportent donc un résumé au lieu de l’historique complet. Le coût par requête est inférieur, mais les éléments supprimés du résumé ne sont plus disponibles.
- Resume full session as-is charge la conversation sans modification. Tous les détails sont conservés, avec un coût par requête qui augmente avec la taille de la conversation.
Une troisième option reprend la session complète et empêche la boîte de dialogue de s’afficher lors des reprises ultérieures.
Le choix est plus simple qu’il n’y paraît. Reprenez la session si ce que vous allez écrire dépend de ce qui a déjà été dit. Commencez une nouvelle session dans le cas contraire. Les dérives sont faciles à repérer si vous y prêtez attention : Claude fait référence à un fichier que vous avez supprimé une heure plus tôt, ou reprend une décision réglée au début de la session. Il s’agit d’un contexte obsolète. Le conserver réduit à la fois votre nombre de tokens disponibles et la précision des réponses.
Si une ancienne conversation contient une décision ou un fait utile dont vous aurez besoin plus tard, ne comptez pas sur la reprise pour le conserver. Écrivez-le dans un emplacement visible par toutes les sessions. C’est le rôle des fichiers de mémoire de Claude Code.
/branch est également utile ici. Il copie la conversation jusqu’au point actuel et vous bascule dans la copie, en laissant l’original intact et toujours disponible dans le sélecteur. Utilisez-le pour tester une deuxième approche sans perdre la première.
Différences entre la reprise, la compaction et la mémoire
Ces notions sont souvent confondues, alors qu’elles répondent à des problèmes différents.
La reprise consiste à retrouver une conversation après l’avoir quittée, après un redémarrage ou après être passé à une autre tâche. La compaction concerne la fenêtre de contexte d’une conversation active : /compact remplace le contexte que Claude conserve par un résumé, afin que les requêtes suivantes envoient moins de tokens. Si le problème vient d’une fenêtre de contexte pleine, utilisez la compaction. La gestion de la fenêtre de contexte de Claude Code présente cette fonctionnalité en détail.
La mémoire est encore différente. Les fichiers CLAUDE.md et la mémoire automatique contiennent des instructions et des informations chargées au début de chaque session. Ils ne représentent donc pas une conversation à laquelle vous revenez. Vous y consignez les éléments auxquels vous ne voulez jamais avoir à revenir.
Si vous voulez faire fonctionner deux conversations en même temps et les faire communiquer, il s’agit d’un mécanisme distinct. Les sessions Claude Code peuvent s’envoyer des messages tant qu’elles sont actives. Ce mécanisme ne sert pas à récupérer depuis le disque la session d’hier.
FAQ
Où Claude Code stocke-t-il l’historique de mes sessions ?
Par défaut, il le stocke dans votre répertoire de configuration, à l’emplacement ~/.claude/projects/<project>/<session-id>.jsonl, où <project> correspond au chemin du répertoire de travail, avec les caractères non alphanumériques remplacés par des tirets. Chaque fichier est au format JSONL : chaque ligne contient un objet JSON correspondant à un message, à l’utilisation d’un outil ou à une entrée de métadonnées. CLAUDE_CONFIG_DIR déplace le répertoire de configuration ailleurs, et cleanupPeriodDays dans settings.json définit la durée de conservation des transcriptions, avec une valeur par défaut de 30 jours et un minimum de 1.
Pourquoi ma session VPS n’apparaît-elle pas dans le sélecteur sur mon ordinateur portable ?
Parce que les transcriptions sont écrites sur le disque de la machine où l’agent s’est exécuté, et qu’elles ne sont pas synchronisées entre les machines. Une conversation lancée dans tmux sur votre VPS existe uniquement sur le VPS. Reprenez-la sur cette machine via SSH, ou exécutez /export dans la session concernée et copiez le fichier texte sur votre ordinateur si vous voulez en conserver une copie locale.
Puis-je reprendre une session commencée dans un autre répertoire ?
Oui, si vous disposez de son identifiant de session. claude --resume <session-id> recherche d’abord dans le répertoire du projet courant et dans ses worktrees git, puis dans tous les autres projets de la même machine. Dans le sélecteur, Ctrl+A élargit la liste à tous les projets de la machine, et Ctrl+W l’élargit à tous les worktrees du dépôt courant. Si aucune session ne correspond, Claude Code affiche No conversation found with session ID: <session-id>.
Dois-je reprendre une ancienne session ou en démarrer une nouvelle ?
Reprenez une session lorsque votre prochain message dépend de ce qui a déjà été dit dans cette conversation. Démarrez une nouvelle session dans le cas contraire, car la reprise recharge tout l’historique et chaque requête suivante le transporte. Surveillez la dérive du contexte : une session qui continue de faire référence à des fichiers que vous avez déjà supprimés conserve un contexte obsolète, ce qui consomme des tokens et réduit la précision à chaque échange.
Puis-je empêcher Claude Code d’écrire les transcriptions sur le disque ?
Oui. CLAUDE_CODE_SKIP_PROMPT_HISTORY désactive l’écriture des transcriptions, et --no-session-persistence la désactive pour une seule exécution non interactive de claude -p. Tenez compte de cette conséquence, car la reprise lit les transcriptions : les désactiver signifie que --continue et --resume n’ont rien à charger. Si votre problème concerne l’emplacement des fichiers plutôt que leur existence, faites pointer CLAUDE_CONFIG_DIR vers un volume chiffré et réduisez plutôt cleanupPeriodDays.