Reprendre une session Claude Code et voir son historique
Utilisez les commandes de reprise par nom ou via le sélecteur, puis retrouvez les transcriptions en texte brut laissées sur la machine d’exécution.
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 ancienne conversation dans une liste. Depuis une session déjà ouverte, la commande /resume permet de basculer vers une autre conversation sans quitter Claude Code. Les formes courtes sont -c et -r.
claude --continue
claude --resume
claude --resume auth-refactorSi vous connaissez déjà le nom ou l’identifiant de la session, transmettez-le comme argument. Claude Code ouvre directement cette session sans afficher le sélecteur.
Tout ce qui suit correspond à la documentation officielle des sessions en août 2026. Claude Code publie fréquemment de nouvelles versions. Les noms des options et les raccourcis clavier peuvent donc changer. Lorsque le comportement observé dans votre terminal diffère, considérez claude --help et cette page comme les références faisant autorité.
Ce qu’est réellement une session
Une session est une conversation enregistrée associée à un répertoire de projet. Elle contient tout 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 continuellement sur le disque pendant votre travail, et non une seule fois à la fin. La conversation survit donc à la fermeture du terminal ou à la perte de la connexion SSH.
La reprise restaure davantage que le texte. L’historique complet de la conversation est restauré, ainsi que le modèle utilisé par la session et le sous-agent avec lequel elle a été lancée si vous avez utilisé --agent. Le mode d’autorisation est également restauré, avec des exceptions pour des raisons de sécurité : le mode plan et le mode de contournement des 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 sont pas restaurés, car il s’agissait d’options passées au lancement et non d’un état enregistré. Les répertoires ajoutés avec --add-dir et les options telles que --mcp-config, --settings et --plugin-dir doivent être indiqués de nouveau lors de la reprise. Les fichiers de configuration tels que settings.json sont relus au lancement. Il n’est donc pas nécessaire de répéter les éléments qui y sont définis.
Pourquoi l’historique des sessions est plus important sur un VPS
Voici le point qui surprend souvent. La transcription est écrite sur la machine où l’agent a été exécuté. Elle n’est pas stockée dans votre compte et n’est pas synchronisée avec un cloud. Il s’agit d’un fichier enregistré 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. De même, une session ouverte depuis votre ordinateur portable n’apparaît pas sur le VPS. Rien ne circule entre les deux machines. Si vous travaillez comme la plupart des utilisateurs qui exécutent Claude Code dans tmux sur un VPS, le serveur est l’endroit où votre véritable historique de conversation s’accumule. Le sélecteur affiché localement présente donc un ensemble différent et beaucoup plus réduit.
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. Aucun de ces historiques ne correspond à celui de la CLI. Claude Code sur le web possède également son propre historique.
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 dans 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 correspond à rien, 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, chaque caractère non alphanumérique étant 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 le nom obtenu dépasse 200 caractères, Claude Code le tronque et ajoute un hash du chemin complet afin que le nom du répertoire reste compatible avec les limites du système de fichiers.
Le fichier est au format JSONL : chaque ligne contient un objet JSON, qui correspond à un message, à l’utilisation d’un outil ou à une entrée de métadonnées. Il s’agit de texte lisible, et sa lecture ne pose aucun 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 d’Anthropic recommande d’utiliser /export ou les interfaces de script documentées, précisément pour cette raison.
Deux paramètres modifient cet emplacement et cette durée de conservation. CLAUDE_CONFIG_DIR déplace l’intégralité du répertoire de configuration. Vous pouvez ainsi stocker les transcriptions sur un volume distinct 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.
Ce que contiennent réellement ces fichiers de transcription
Chaque résultat d’outil est enregistré. Une transcription contient donc le contenu des fichiers que Claude a lus et la sortie des commandes qu’il a exécutées. La page consacrée à l’utilisation des données d’Anthropic l’indique clairement : Claude Code stocke les transcriptions des sessions localement, en texte brut, sous ~/.claude/projects/.
Sur un serveur, les implications sont importantes. Si Claude a lu un fichier .env pour déterminer pourquoi un service ne démarrait pas, le contenu de ce fichier se trouve désormais 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 fuité. La transcription a enregistré ce qui s’est passé, ce qui est précisément son rôle. C’est pourquoi elle doit être prise en compte dans votre threat model.
- Sauvegardes : une sauvegarde standard de
/homeou/rootcopie vos transcriptions 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 espace 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 que vous clonez afin de créer un second serveur.
- Autres comptes présents 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. - Téléversements volontaires : la commande
/feedbackenvoie volontairement l’historique des conversations à Anthropic, et/buget/sharetransmettent également des données par ce chemin. Ce sont des actions que vous choisissez d’effectuer. Sachez donc ce que vous acceptez avant de confirmer.
Si vous préférez qu’aucune transcription ne soit créée, 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. Mesurez clairement le compromis avant d’activer l’une ou l’autre option. La reprise d’une session s’appuie sur les transcriptions. Sans transcription, il n’est donc pas possible de reprendre une session.
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 à retenir 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 filtre la liste pour ne conserver que 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 la session sélectionnée.
Nommer les sessions simplifie fortement ces opérations. 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 utilisant son nom.
Une session sans nom reçoit tout de même un titre généré. Celui-ci est créé 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> ne recherche que les noms que vous avez définis vous-même.
Rechercher dans les transcriptions pour retrouver la bonne session
Parfois, vous vous souvenez d’une phrase, mais de rien d’autre. Les transcriptions sont du 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’identifiant 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 une phrase coupée par un retour à la 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 présentés de manière lisible, et non au format JSON. Sans argument, la commande ouvre un menu qui permet de choisir le presse-papiers ou un fichier. Avec un nom de fichier, /export handover.txt écrit directement dans ce chemin. C’est la bonne méthode pour transférer une conversation d’un serveur vers votre ordinateur portable ou pour la joindre à un ticket.
Pour les traitements automatisés, utilisez les interfaces conçues pour rester stables. Les hooks et les commandes de 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 base bien plus fiable que l’analyse d’un format JSONL susceptible de changer dans la prochaine release.
Quand repartir de zéro est préférable à la reprise
La reprise restaure tout l’historique, et c’est cet historique complet que chaque requête ultérieure transporte. Une conversation qui a duré quatre heures hier coûte cher à poursuivre aujourd’hui. L’article sur le cumul de l’utilisation des tokens au fil d’une longue session explique d’où vient exactement ce coût.
Claude Code propose parfois une solution intermédiaire. Avec un forfait Pro ou Max, reprendre 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 l’historique complet 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 selon 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 suivantes.
La décision est plus simple qu’il n’y paraît. Reprenez la session lorsque ce que vous allez écrire dépend de ce qui a déjà été dit. Repartez de zéro dans le cas contraire. La dérive est facile à repérer lorsque vous y prêtez attention : Claude fait référence à un fichier que vous avez supprimé une heure plus tôt ou remet en question une décision prise au début de la session. Il s’agit d’un contexte obsolète. Le conserver vous coûte à la fois des tokens et de la précision.
Si une ancienne conversation contient une décision ou un fait utile dont vous aurez de nouveau besoin, ne comptez pas sur la reprise pour le conserver. Écrivez-le à un emplacement visible par toutes les sessions. C’est précisément le rôle des fichiers de mémoire de Claude Code.
/branch est également utile dans ce contexte. Cette commande copie la conversation jusqu’au point actuel et vous bascule dans la copie, tout en laissant l’original intact et disponible dans le sélecteur. Utilisez-la pour essayer une autre approche sans perdre la première.
En quoi la reprise diffère de la compaction et de la mémoire
Ces notions sont souvent confondues, alors qu’elles répondent à des besoins différents.
La reprise consiste à retrouver une conversation après avoir quitté Claude, redémarré la machine ou commencé une autre tâche. La compaction concerne la fenêtre de contexte d’une conversation active : /compact remplace le contexte conservé par Claude 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 page 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 constituent donc pas une conversation à laquelle vous revenez. Ils servent à noter les éléments auxquels vous ne devez jamais avoir à revenir.
Si vous voulez faire fonctionner deux conversations en parallèle et les faire communiquer, il s’agit d’un mécanisme distinct. Les sessions Claude Code peuvent s’envoyer des messages lorsqu’elles sont toutes les deux actives. C’est différent du fait de récupérer sur le disque la session de la veille.
FAQ
Où Claude Code stocke-t-il l’historique de mes sessions ?
Par défaut, il le stocke dans votre répertoire de configuration, à ~/.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 traits d’union. 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. La valeur par défaut est de 30 jours, avec un minimum de 1.
Pourquoi ne puis-je pas voir la session de mon VPS 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 que vous avez eue dans tmux sur votre VPS existe uniquement sur le VPS. Reprenez-la sur cette machine via SSH, ou exécutez /export dans la session et copiez le fichier texte si vous souhaitez en conserver une copie locale.
Puis-je reprendre une session démarrée dans un autre répertoire ?
Oui, si vous disposez de son ID de session. claude --resume <session-id> recherche d’abord dans le répertoire du projet courant et ses worktrees git, puis dans tous les autres projets de la même machine. Dans le sélecteur, Ctrl+A étend la liste à tous les projets de la machine, et Ctrl+W l’étend à tous les worktrees du dépôt courant. Si aucune correspondance n’est trouvée, 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 lorsque ce n’est pas le cas, car la reprise recharge tout l’historique et chaque requête suivante le transporte. Surveillez la dérive du contexte : si une session continue de faire référence à des fichiers que vous avez déjà supprimés, elle conserve un contexte obsolète, ce qui consomme des tokens et réduit la précision à chaque tour.
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 contrepartie : les transcriptions sont utilisées par la reprise, donc leur désactivation signifie que --continue et --resume n’ont rien à charger. Si votre préoccupation concerne l’emplacement des fichiers plutôt que leur existence, dirigez CLAUDE_CONFIG_DIR vers un volume chiffré et réduisez plutôt cleanupPeriodDays.