Reprendre une session
Les sessions sont enregistrées en continu dans les fichiers de transcription locaux au fur et à mesure que vous travaillez, ce qui vous permet de revenir à l’une d’elles après avoir quitté ou exécuté/clear. Utilisez ces points d’entrée :
Reprendre une session en arrière-plan en cours d’exécution
Lorsque la conversation que vous reprenez avecclaude --resume ou /resume appartient à une session en arrière-plan qui est toujours en cours d’exécution, Claude Code ouvre la session en cours d’exécution elle-même. Avec --bg sur la ligne de commande, la reprise est une expédition en arrière-plan à la place. Avant la v2.1.285, Claude Code refusait et vous disait d’ouvrir la session avec claude attach <id>, ou de l’arrêter d’abord avec claude stop <id>.
-
Depuis votre shell :
claude --resume <session>exécuteclaude attachsur cette session dans le même terminal au lieu de charger la transcription elle-même. Un prompt que vous passez sur la ligne de commande, comme dansclaude --resume <session> "check the tests too", va d’abord à la session comme son prochain tour, et Claude Code afficheSent your prompt to the background session (<id>); opening it…avant de s’attacher.claude -p --resume <session> "prompt"tapé dans un terminal fait la même chose, donc-pne garde pas cette exécution non-interactive. Claude Code n’ouvre pas la session lorsque la ligne de commande contient l’un de ceux-ci :- Entrée ou sortie redirigée ou canalisée
- Flags qui configurent la session, tels que
--permission-mode,--modelou--settings - Flags qui lisent la sortie, tels que
--output-format jsonou--json-schema - Flags qui limitent ou rembobinent l’exécution, tels que
--max-turnsou--max-budget-usd
claude attach <id>qui l’ouvre, ou en vous disant de la trouver dansclaude agentslorsqu’il ne peut pas déterminer l’ID. Ajoutez--fork-sessionpour reprendre une copie de la conversation à la place. Pour continuer la conversation elle-même dans une session qui vous appartient, avec vos flags appliqués, exécutezclaude stop <id>puis répétez la commande. Un prompt qui commence par/ou!n’est pas envoyé, et aucun prompt ne l’est non plus pendant que la session attend votre réponse à une question. Dans les deux cas, Claude Code n’ouvre pas la session, et le message inclutYour prompt was not sent to itavec la raison. -
Depuis l’intérieur d’une session :
/resumedéplace votre conversation actuelle en arrière-plan et attache ce terminal à la session en cours d’exécution, en affichantOpening "<title>", running in the background (<id>). Appuyez sur←sur un prompt vide pour revenir à la vue agent, qui liste également la conversation que vous avez laissée. Lorsque la conversation actuelle ne peut pas se déplacer en arrière-plan, par exemple parce que vous êtes déjà attaché à une session en arrière-plan ou que la persistance de session est désactivée,/resumeaffiche la commandeclaude attachà exécuter à la place.
Ce qu’une session reprise restaure
Lorsque Claude Code charge une conversation à partir de sa transcription, la session reprise restaure la conversation ainsi que l’état enregistré en elle :- Historique de conversation : l’historique complet, y compris les appels d’outils et les résultats. Un outil qui était toujours en cours d’exécution lorsque le processus précédent s’est terminé, par exemple lors d’un plantage, ne se termine pas ou ne s’exécute pas à nouveau lorsque vous reprenez. Claude voit l’appel marqué comme interrompu avant que son résultat ne soit enregistré et on lui dit de vérifier s’il a pris effet avant de l’exécuter à nouveau, sauf si
CLAUDE_CODE_RESUME_INTERRUPTED_TURNest défini. - Modèle : la session continue sur le modèle qu’elle utilisait, sauf dans les cas décrits dans Définir votre modèle.
- Agent : une session démarrée avec
--agentou le paramètreagentcontinue en tant que cet agent, en conservant ses restrictions d’outils et son modèle. Passez--agentlors de la reprise pour en choisir un différent ; pour le prompt système dans l’un ou l’autre cas, voir Flags de prompt système dans les conversations reprises. Claude Code cherche l’agent dans deux endroits : le répertoire d’origine de la session, à condition que vous ayez approuvé cet espace de travail, puis le répertoire depuis lequel vous reprenez, donc un agent limité au projet se charge toujours lorsque vous reprenez depuis un autre répertoire. Si Claude Code ne trouve pas l’agent dans l’un ou l’autre endroit, la session reprend avec les outils par défaut et affiche un avertissement nommant l’agent. - Mode de permission : si vous reprenez depuis un terminal avec
claude --continue,claude --resume <session-id>ouclaude --resume <name>lorsque le nom correspond à une session, sans-p, Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas de mode de permission à la reprise, qui couvre également le sélecteur de sessions,/resumeet la reprise avecclaude -p. Passez--permission-modeou--dangerously-skip-permissionspour remplacer le mode restauré. - Objectif actif : un objectif qui était toujours actif lorsque la session s’est terminée se poursuit ; son nombre de tours, son minuteur et sa ligne de base de dépense de tokens se réinitialisent.
- Tâches planifiées : les tâches qui n’ont pas expiré sont restaurées. Les tâches Bash en arrière-plan et les tâches de surveillance ne le sont pas.
- Travail en arrière-plan : un sous-agent en arrière-plan, une commande Bash en arrière-plan, ou un workflow qui s’est terminé avec le processus précédent s’affiche dans la transcription reprise comme une note indiquant qu’il ne s’est pas terminé. Claude Code ne démarre pas un tour à partir de ces notes ; Claude les lit avec votre prochain prompt.
--mcp-config, --settings, --plugin-dir, --fallback-model ou de répertoires ajoutés avec --add-dir, passez-les à nouveau lorsque vous reprenez ; les répertoires ajoutés en milieu de session avec /add-dir ne sont pas restaurés non plus, bien que le sélecteur de sessions les utilise toujours pour localiser la session. Les fichiers de paramètres standard, tels que settings.json et settings.local.json, sont relus au lancement, donc la configuration qui s’y trouve n’a pas besoin d’être passée à nouveau. Pour --system-prompt et --append-system-prompt, voir Flags de prompt système dans les conversations reprises.
Mode de permission à la reprise
Le mode de permission dans lequel Claude Code démarre une session reprise dépend de la façon dont vous la reprenez. Les cas ci-dessous s’appliquent lorsque Claude Code charge la conversation à partir de sa transcription ; lorsque vous ouvrez une session en arrière-plan qui est toujours en cours d’exécution à la place, cette session conserve le mode de permission dans lequel elle se trouve.- Terminal :
claude --continue,claude --resume <session-id>ouclaude --resume <name>lorsque le nom correspond à une session, sans-p. Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas du tableau. Passez--permission-modeou--dangerously-skip-permissionspour remplacer le mode restauré. - Non-interactif :
claude -p --resumeouclaude -p --continue. Claude Code démarre l’exécution dans le mode de permission qu’une nouvelle exécutionclaude -pdémarrerait, sauf qu’une session qui s’est terminée en mode plan reprend en mode plan selon les conditions ci-dessous. - VS Code : le panneau de conversation de l’extension. Le tableau couvre uniquement une conversation qui s’est terminée en mode plan ; pour le reste, voir reprendre les conversations passées.
- Sélecteur de sessions au lancement : une session que vous sélectionnez dans le sélecteur de sessions, que vous l’ayez ouvert avec
claude --resumeseul,claude --from-prou un nom qui correspond à plus d’une session. Claude Code démarre la session dans le mode de permission dans lequel il démarrerait une nouvelle session depuis la même ligne de commande, sauf qu’une session qui s’est terminée en mode plan reprend en mode plan. Si vous passez--permission-mode,--dangerously-skip-permissionsou--fork-session, Claude Code ne restaure pas le mode plan. Aucun autre mode de permission stocké n’est restauré. /resumeà l’intérieur d’une session, avec ou sans argument : la conversation vers laquelle vous basculez continue dans le mode de permission dans lequel se trouve votre session actuelle, sauf qu’une conversation qui s’est terminée en mode plan reprend en mode plan, même si vous avez lancé Claude Code avec--permission-modeou--dangerously-skip-permissions. Si cette conversation était déjà ouverte plus tôt dans cette exécution de Claude Code, comme la conversation dans laquelle vous avez commencé ou une conversation que vous avez quittée avec/clearou/resume, elle continue plutôt dans votre mode de permission actuel.
ExitPlanMode, Claude ne peut pas présenter de plan pour approbation, donc Claude Code ne restaure pas le mode plan. La session démarre dans le mode de permission dans lequel une nouvelle session démarrerait depuis la même ligne de commande. Avec /resume, la conversation continue dans votre mode de permission actuel.
La restauration du mode plan sur les chemins non-interactif et VS Code nécessite Claude Code v2.1.246 ou ultérieur. Chaque ligne nomme le mode de permission dans lequel la session s’est terminée, lequel des chemins terminal, non-interactif et VS Code vous empruntez pour la reprendre, et le mode de permission dans lequel Claude Code démarre la session reprise.
Une exécution
claude -p --resume ou claude -p --continue reprend en mode plan uniquement lorsque toutes ces conditions sont remplies :
- Vous passez
--permission-prompt-toolet ne passez pas--permission-prompts none, afin que Claude Code puisse présenter le plan pour approbation - Vous ne passez pas
--permission-modeou--dangerously-skip-permissions - Vous ne passez pas
--fork-session - L’exécution n’est pas démarrée via les canaux
- Aucune règle de refus ne supprime l’outil
ExitPlanMode
Reprendre à partir d’un résumé
Sur un plan Pro ou Max, lorsque vous reprenez une session qui a été inactive pendant plus d’une heure environ et dépasse 100 000 tokens, Claude Code restaure la conversation puis ouvre une boîte de dialogue avant que vous n’envoyiez votre premier message. Le cache de prompt de la session a expiré à ce moment-là, donc la prochaine requête traite l’historique complet une fois, quelle que soit l’option de la boîte de dialogue que vous choisissez. La boîte de dialogue offre trois façons de continuer la session :- Reprendre à partir du résumé : exécute
/compactimmédiatement. Les requêtes ultérieures portent le résumé au lieu de l’historique complet. - Reprendre la session complète telle quelle : charge la conversation inchangée.
- Ne me le demandez plus : reprend la session complète et arrête d’afficher la boîte de dialogue sur toutes les reprises futures.
Où le sélecteur de sessions cherche
Claude Code stocke les sessions par répertoire de projet. Par défaut, le sélecteur de sessions affiche :- Les sessions du worktree courant, y compris les sessions en arrière-plan, qui sont marquées
bgdans la liste - Les sessions démarrées ailleurs qui ont ajouté le répertoire courant avec
/add-dir
Ctrl+W pour élargir à tous les worktrees du dépôt ou Ctrl+A pour élargir à chaque projet sur cette machine.
/loop, -p, SDK Agent et sessions en arrière-plan
Les sessions dont le premier prompt était une commande /loop n’apparaissent pas dans le sélecteur, et claude --continue les ignore également. L’exécution de /loop plus tard dans une conversation ne masque pas la session.
Claude Code laisse les sessions créées avec claude -p ou le SDK Agent en dehors du sélecteur de sessions et en dehors de claude --continue. Vous pouvez toujours en reprendre une en passant son ID de session à claude --resume <session-id>. Lorsque vous exécutez claude -p --continue, Claude Code inclut les sessions -p, SDK et /loop.
claude --continue ouvre une session en arrière-plan qui s’est terminée, mais pas une qui est toujours en cours d’exécution ; l’ouverture de sessions en arrière-plan terminées nécessite Claude Code v2.1.257 ou ultérieur. Si votre conversation la plus récente est une que vous avez envoyée en arrière-plan et qu’elle s’exécute toujours là-bas, Claude Code se termine avec Your most recent conversation is running in the background et l’ID de cette session. Attachez-vous à la session depuis claude agents, ou exécutez claude --resume pour en choisir une autre.
Sessions dans d’autres worktrees et projets
Lorsque vous sélectionnez une session d’un autre worktree du même dépôt, Claude Code la reprend sur place ; lorsque le propre worktree de la session n’existe plus, Claude Code la reprend dans votre répertoire courant. Lorsque vous sélectionnez une session d’un projet non lié, Claude Code copie une commandecd et de reprise dans votre presse-papiers à la place. Si le répertoire de ce projet n’existe plus, Claude Code reprend la session dans votre répertoire courant plutôt que de copier une commande cd qui échouerait.
Le déplacement d’une session avec /cd la réinstalle dans le stockage de projet du nouveau répertoire, ce qui la fait apparaître dans le sélecteur de ce répertoire par la suite.
Reprendre par ID de session ou par nom
Vous pouvez exécuterclaude --resume <session-id> depuis n’importe quel répertoire, ce qui vous permet de reprendre une session qui a démarré ailleurs ou qui s’est déplacée avec /cd. Claude Code cherche l’ID dans cet ordre :
- Le répertoire de projet courant et ses git worktrees
- Tous les autres projets sur cette machine
No conversation found with session ID: <session-id>.
La reprise par nom se résout dans le dépôt courant et ses worktrees. Les deux formes recherchent une correspondance exacte et la reprennent directement même si elle se trouve dans un worktree différent :
Nommer vos sessions
Donnez aux sessions des noms descriptifs pour qu’elles soient trouvables dans le sélecteur de sessions et reprises par nom. Cela est particulièrement important lorsque vous travaillez sur plusieurs tâches en parallèle.
Une fois qu’une session est nommée via une route CLI ou depuis claude.ai, revenez-y avec
claude --resume <name> ou /resume <name> ; une session d’application de bureau reprend dans l’application de bureau. Voir Reprendre une session pour savoir comment la résolution des noms se comporte entre les worktrees.
Les sessions que vous ne nommez pas reçoivent quand même deux étiquettes que Claude Code attribue. Seul le titre généré fonctionne comme handle de reprise :
-
Nom d’affichage par défaut : les sessions interactives que vous ne nommez jamais reçoivent quand même un nom d’affichage par défaut au démarrage. Nécessite Claude Code v2.1.196 ou version ultérieure. Le nom par défaut combine le nom du répertoire de travail avec un suffixe de deux caractères, par exemple
my-app-3f, et identifie la session dans les listes de sessions en cours d’exécution, telles que la vue agent et la sortieclaude agents --json. Le nom par défaut n’est pas un handle de reprise. Si vous le transmettez àclaude --resumeou/resume, Claude Code ne trouve pas la session. -
Titre généré : si vous ne nommez pas une session, Claude Code génère un titre de session pour elle. Le titre est un court résumé de votre première invite, écrit par une demande en arrière-plan au modèle petit/rapide, normalement un modèle de classe Haiku. Une exécution
claude -pque vous démarrez directement à partir d’un shell ou d’un script n’en reçoit pas. L’acceptation d’un plan remplace le titre généré par un titre basé sur le plan. Vous pouvez transmettre l’un ou l’autre titre àclaude --resumeou/resume, et Claude Code le résout de la même manière qu’un nom que vous avez défini.
Utiliser le sélecteur de sessions
Exécutez/resume à l’intérieur d’une session, ou claude --resume sans arguments, pour ouvrir le sélecteur de sessions interactif. Utilisez ces raccourcis clavier pour naviguer, rechercher et élargir la liste :
Chaque ligne affiche le nom de la session s’il est défini, sinon le titre de session généré par l’IA, le résumé de la conversation ou le premier prompt, ainsi que le temps écoulé depuis la dernière activité, la branche git et la taille du fichier.
Les sessions créées avec
/branch ou --fork-session obtiennent leurs propres ID de session et apparaissent comme des lignes distinctes. Lorsque le sélecteur trouve plus d’une entrée pour la même session, il les groupe sous une seule ligne. Appuyez sur → pour développer un groupe.
Si Claude Code ne peut pas charger la session que vous sélectionnez dans le sélecteur claude --resume, il affiche Failed to resume the conversation avec une commande pour réessayer, puis se termine avec le code 1. À partir du sélecteur /resume à l’intérieur d’une session, Claude Code signale l’échec et votre conversation actuelle continue de s’exécuter.
Créer une branche d’une session
La création d’une branche crée une copie de la conversation jusqu’à présent et vous y bascule, laissant l’original intact. Utilisez-la pour essayer une approche différente sans perdre le chemin sur lequel vous étiez. À partir d’une session, exécutez/branch avec un nom optionnel :
--continue ou --resume avec --fork-session :
/branch imprime deux ID de session : la nouvelle branche dans laquelle vous êtes maintenant et l’original. L’original est inchangé sur le disque et reste dans le sélecteur de sessions ; revenez-y avec /resume <original-name> ou en passant son ID à /resume.
/branch copie la transcription et bascule le processus Claude Code en cours d’exécution pour écrire dedans. Cette distinction détermine ce que la branche hérite :
Si vous reprenez la même session dans deux terminaux sans créer de branche, les messages des deux s’entrelacent dans une seule transcription. Pour le rembobinage basé sur les points de contrôle au sein d’une seule session, voir Points de contrôle.
Gérer le contexte au sein d’une session
Ces commandes contrôlent ce qui se trouve dans la fenêtre de contexte sans quitter la session :/clear: recommencer avec un contexte vide. Claude Code enregistre la session précédente ; reprenez-la avec/resume, ou, dans le même processus Claude Code, depuis l’entrée de session précédente du menu de rembobinage. Sans argument, la nouvelle session conserve un nom que vous avez défini avec--nameou/rename, mais pas un titre de session généré par l’IA. Pour nommer plutôt la session que vous quittez, passez le nom, comme dans/clear release-prep; la nouvelle session démarre alors sans nom/compact [instructions]: remplacer l’historique par un résumé, optionnellement axé sur ce que vous spécifiez/context: afficher ce qui consomme actuellement le contexte
Exporter et localiser les données de session
Exécutez/export pour ouvrir un menu qui vous permet de copier la conversation courante dans votre presse-papiers ou de l’enregistrer en tant que fichier texte brut, avec les messages et les sorties d’outils rendus sous forme de texte lisible. Passez un nom de fichier pour ignorer le menu et écrire directement dans ce fichier.
Accéder aux conversations à partir de scripts
/export produit une transcription rendue pour qu’une personne la lise. Les interfaces ci-dessous produisent des données structurées pour qu’un script les analyse : un résultat JSON d’une exécution, le chemin vers le fichier de transcription d’une session, ou un flux en direct d’événements. Choisissez en fonction de ce qui déclenche le script :
- Exécuter Claude une fois et capturer le résultat : invoquez
claude -pavec--output-format jsonoustream-jsonpour capturer le résultat, l’ID de session, l’utilisation et le coût d’une exécution non interactive sous forme de JSON structuré. - Poser une question à une session existante : passez un ID de session à
claude -p --resumepour envoyer une invite de suivi, comme une demande de résumé, et capturer la réponse structurée. - Réagir aux événements de session : lisez le champ
transcript_pathque les hooks et les commandes de ligne d’état reçoivent en entrée. Un hookSessionEndpeut archiver la transcription lorsqu’une session se termine. - Intégrer Claude dans une application TypeScript ou Python : utilisez le Agent SDK pour recevoir chaque message par programmation.
jq :
Où les transcriptions sont stockées
Par défaut, Claude Code stocke les transcriptions en JSONL à~/.claude/projects/<project>/<session-id>.jsonl, où <project> est votre chemin de répertoire de travail avec les caractères non alphanumériques remplacés par -. Pour un répertoire de travail dont le nom converti dépasse 200 caractères, Claude Code tronque le nom à 200 caractères et ajoute un hash du chemin complet, de sorte que le nom du répertoire reste dans les limites du système de fichiers.
Chaque ligne est un objet JSON pour un message, une utilisation d’outil ou une entrée de métadonnées. Le format d’entrée est interne à Claude Code et change entre les versions, donc les scripts qui analysent directement ces fichiers peuvent se casser à chaque version. Pour construire sur les données de session, utilisez /export ou les interfaces de script à la place.
L’emplacement, la rétention et le comportement d’écriture sont configurables :
Supprimer les données de session
Les transcriptions arrivent à expiration selon les règles de nettoyage de rétention. Pour supprimer les transcriptions d’un projet et l’état associé plus tôt, exécutezclaude purge. Si vous supprimez une session en arrière-plan avec claude rm <id>, sa transcription reste sur le disque et reste disponible via claude --resume.
Nommer le répertoire du projet vous-même
Par défaut, Claude Code dérive le nom<project> du chemin complet du répertoire de travail. Pour choisir le nom vous-même, définissez CLAUDE_CODE_PROJECT_DIR_NAME aux côtés de CLAUDE_CONFIG_DIR. Claude Code stocke ensuite les transcriptions de cette session et la mémoire automatique sous votre nom. Cela convient à un hôte qui intègre Claude Code et donne à chaque session son propre répertoire de configuration. Nécessite Claude Code v2.1.234 ou ultérieur.
Par exemple, ce lancement garde les données du locataire A sous /srv/tenant-a et nomme son répertoire de projet work :
/srv/tenant-a/projects/work/ et sa mémoire automatique dans /srv/tenant-a/projects/work/memory/, quel que soit le répertoire de travail.
Trois règles s’appliquent lorsque vous le définissez :
- Définissez aussi
CLAUDE_CONFIG_DIR: le nom ne varie pas avec le répertoire de travail, donc sous le~/.claudepar défaut, il fusionnerait les transcriptions et la mémoire automatique de chaque projet dans un seul répertoire. Claude Code ignoreCLAUDE_CODE_PROJECT_DIR_NAMElorsqueCLAUDE_CONFIG_DIRn’est pas défini. - Utilisez 1-64 lettres, chiffres, tirets ou traits de soulignement : n’utilisez pas un nom de périphérique Windows tel que
con. Claude Code ignore toute autre valeur et utilise le nom dérivé. - Définissez-le dans l’environnement shell qui démarre
claude: Claude Code le lit une seule fois au démarrage à partir de cet environnement, donc un blocenvdans un fichier de paramètres ne peut pas le définir.
CLAUDE_CONFIG_DIR mais sans CLAUDE_CODE_PROJECT_DIR_NAME, il lit et écrit à nouveau le répertoire dérivé. Les sessions stockées sous votre nom restent sur le disque : appuyez sur Ctrl+A dans le sélecteur de session pour lister les sessions de chaque répertoire de projet sous ce répertoire de configuration, celui épinglé inclus, et quelle que soit la façon dont vous lancez, claude --resume <session-id> trouve une session stockée sous l’un ou l’autre nom.
Voir aussi
Ces pages couvrent les mécaniques de session et de parallélisme connexes :- Worktrees : exécuter des sessions parallèles isolées sur des branches séparées
- Points de contrôle : rembobiner le code et la conversation à un point antérieur
- Fenêtre de contexte : ce qui remplit le contexte et ce qui survit à la compaction
- Mode non interactif : comportement de la session sous
claude -p