Claude Code
Claude Code efface tes sessions après 30 jours. Voici comment les garder.
Par défaut, une session vieille de plus d'un mois disparaît sans prévenir. Une ligne de réglage suffit à la garder dix ans, et un petit hook peut l'archiver à la fin de chaque session.
Publié le 29 septembre 2026 · 6 min de lecture
Tu cherches une session du printemps avec /resume et elle n'y est plus. Ce n'est pas un bug : Claude Code nettoie lui-même ses données. Au démarrage d'une session, un balayage en arrière-plan supprime tout ce qui est plus vieux que cleanupPeriodDays, 30 jours par défaut, sans afficher de message. La session n'apparaît plus dans le sélecteur de /resume, et ce qui est supprimé ne se récupère pas.
Ce qui est effacé
Le balayage ne touche pas qu'aux conversations. D'après la documentation de Claude Code, il supprime dans ~/.claude/ les fichiers plus vieux que la période de conservation, notamment :
Chemin sous ~/.claude/ | Contenu |
|---|---|
projects/<projet>/<session>.jsonl | La conversation complète : chaque message, chaque appel d'outil et son résultat |
projects/<projet>/<session>/subagents/ | Les conversations des sous-agents, supprimées avec la session parente |
projects/<projet>/<session>/tool-results/ | Les sorties d'outils trop longues, et les images renvoyées par les outils MCP |
file-history/<session>/ | Les instantanés des fichiers avant modification, qui servent aux retours en arrière |
plans/ | Les plans écrits en mode plan |
paste-cache/ | Le contenu des longs collages |
usage-data/ | Les rapports de /insights |
Autrement dit, au bout d'un mois, il ne reste rien de ce que tu as demandé, de ce que l'agent a fait, ni du plan que vous aviez validé ensemble.
La ligne qui garde tout dix ans
Le réglage s'appelle cleanupPeriodDays. C'est un nombre entier de jours, 1 au minimum. Ajoute-le dans tes réglages utilisateur, ~/.claude/settings.json (crée le fichier s'il n'existe pas) :
{
"cleanupPeriodDays": 3650
}
Si le fichier contient déjà des réglages, ajoute seulement la ligne à l'intérieur des accolades, avec une virgule après la ligne précédente. 3650 jours, c'est dix ans.
Deux précisions :
- Le réglage est accepté dans tous les fichiers de réglages, y compris ceux d'un projet (
.claude/settings.json). Si ton entreprise fixecleanupPeriodDaysdans ses réglages gérés, c'est leur valeur qui s'applique : les réglages gérés passent avant les tiens. - Ce qui a déjà été supprimé ne revient pas. Le réglage protège les sessions encore présentes et les suivantes.
Aller plus loin : archiver chaque session à la fin
Garder dix ans dans ~/.claude, c'est bien, tant que ce dossier survit : changement de Mac, réinstallation, nettoyage un peu trop large. Pour avoir une copie à part, Claude Code propose des hooks, des commandes lancées à certains moments. Le hook SessionEnd se déclenche quand une session se termine (sortie, /clear, passage à une autre session avec /resume) et reçoit en entrée le chemin de la conversation, transcript_path.
Ce petit script copie la conversation qui se termine, avec ses sous-agents, dans ~/Archives/claude-code. Enregistre-le sous ~/.claude/hooks/archiver-session.sh :
#!/bin/sh
# Copie la session qui se termine (et ses sous-agents) dans ~/Archives/claude-code.
transcript=$(jq -r '.transcript_path // empty')
[ -f "$transcript" ] || exit 0
dest="$HOME/Archives/claude-code/$(basename "$(dirname "$transcript")")"
mkdir -p "$dest"
cp -p "$transcript" "$dest/"
dossier="${transcript%.jsonl}"
[ -d "$dossier" ] && cp -Rp "$dossier" "$dest/"
exit 0
Puis déclare-le dans ~/.claude/settings.json, à côté de cleanupPeriodDays :
{
"cleanupPeriodDays": 3650,
"hooks": {
"SessionEnd": [
{
"hooks": [
{ "type": "command", "command": "sh ~/.claude/hooks/archiver-session.sh", "timeout": 10 }
]
}
]
}
}
Le timeout compte : par défaut, les hooks SessionEnd n'ont que 1,5 seconde. Une valeur par hook relève ce budget, jusqu'à 60 secondes. Le script utilise jq, fourni avec les versions récentes de macOS (sinon brew install jq).
~/.claude tant que cleanupPeriodDays le garde, et si tu reprends la session plus tard, le hook la recopie à sa nouvelle fin.Et les images ?
Les images que tu colles ou joins à une session ne sont plus rangées dans ~/.claude depuis la version 2.1.275 : Claude Code les enregistre dans un dossier images/ par session, sous le dossier temporaire (celui que règle CLAUDE_CODE_TMPDIR). Quant aux images que l'agent produit dans ton projet, captures d'écran ou rendus, elles vivent dans ton projet et peuvent être modifiées ou écrasées le lendemain. Si tu tiens à l'image telle qu'elle était ce jour-là, il faut la copier le jour même.
Ce que fait Opuscule
C'est exactement le problème de départ d'Opuscule. Il archive tes sessions au fil de l'eau sur ton Mac, avec leurs images telles qu'elles étaient ce jour-là, pour que ton volume les retrouve au moment de l'imprimer. En attendant l'app, la ligne "cleanupPeriodDays": 3650 suffit à ne plus rien perdre.
Sources
- Documentation Claude Code :
cleanupPeriodDays, fichiers nettoyés automatiquement, fichiers de réglages et priorité - Documentation Claude Code : hook
SessionEndet champs d'entrée communs - Documentation Claude Code : où sont rangées les conversations
Vérifié sur Claude Code 2.1.285, le 29 septembre 2026.