Où Claude Code range son scratchpad, et pourquoi il disparaît
Chaque session Claude Code annonce un dossier scratchpad puis n'en reparle jamais. Voici le chemin exact sur macOS, Linux et Windows, ce qui vit à côté, pourquoi un redémarrage ou un nettoyage des fichiers temporaires l'efface, ce qu'on peut configurer ou non, et la seule règle donnée aux sept agents qui y écrivent chaque nuit.
Chaque session Claude Code commence par une ligne que vous survolez sans doute. La nôtre, ce soir, dit ceci :
Scratchpad directory: /private/tmp/claude-501/-Users-jbchauvin-Projets-AgentsRoom/5a506305-…/scratchpad
Puis le CLI n'en reparle plus. Aucune commande ne le liste, aucun panneau ne l'ouvre, et le jour où vous allez chercher le CSV que l'agent disait y avoir écrit, le dossier a peut-être déjà disparu.
On fait tourner sept agents planifiés sur un Mac mini toutes les nuits, et chacun écrit dans ce dossier. On est donc allés voir ce que c'est, où il vit sur chaque système, ce qui le supprime, et ce qu'on dit aux agents d'en faire. Tout ce qui suit a été vérifié sur Claude Code 2.1.278 le 19 septembre 2026, et sur les issues GitHub ouvertes par des gens qui y ont perdu du travail. Ce qu'on peut configurer a changé depuis : cette partie a été revérifiée sur Claude Code 2.1.314 le 3 novembre 2026.
Ce que Claude Code dit à l'agent
La ligne fait partie du prompt système. L'instruction qui la suit, dans la version actuelle, dit à l'agent d'utiliser toujours ce dossier pour ses fichiers temporaires, c'est-à-dire les résultats intermédiaires, les scripts et les sorties qui n'ont pas leur place dans le projet, plutôt que /tmp ou tout autre dossier temporaire du système ; qu'il est propre à la session et isolé du projet ; qu'il peut en général être utilisé sans demande de permission ; et que /tmp ne sert que si vous le demandez explicitement.
C'est cette dernière partie qui vous concerne. Les fichiers écrits dans le scratchpad ne déclenchent pas la boîte de dialogue de permission d'écriture, et c'est pour ça que l'agent y met ses scripts utilitaires et ses exports au lieu de vous demander à chaque fois. C'est aussi pour ça qu'on ne vous demande jamais, et qu'on ne vous dit jamais, où ils sont partis.
Si vous voulez le chemin dans une session en cours, demandez à l'agent. « Affiche ton dossier scratchpad » se répond depuis le prompt système, sans rien exécuter.
Le chemin, système par système
Le dossier est sous le dossier temporaire du système d'exploitation, et son nom encode qui vous êtes, dans quel projet vous étiez, et quelle session c'était.
Sur macOS et Linux :
/tmp/claude-<uid>/<chemin du projet, slashs remplacés par des tirets>/<id de session>/scratchpad
Sur un Mac, /tmp est un lien vers /private/tmp, donc le même dossier s'affiche en /private/tmp/claude-501/…. Le nombre est votre identifiant d'utilisateur, ce qu'affiche id -u : 501 pour le premier compte d'un Mac, 1000 sur la plupart des distributions Linux, 0 pour root. Le rapport Linux cité plus bas montre /tmp/claude-0/, parce que le pipeline tournait en root dans un conteneur. Des issues ouvertes plus tôt en 2026 montrent /tmp/claude/<slug du projet>/… sans uid du tout : le suffixe a été ajouté en cours de route. Sur une version plus ancienne, enlevez-le.
Sur Windows, tel que rapporté sur Windows 11 en juillet 2026 :
%TEMP%\claude\<slug du projet>\<id de session>\scratchpad
ce qui donne en général C:\Users\<vous>\AppData\Local\Temp\claude\…. Le chemin est dérivé de la variable TEMP : si vous pointez TEMP ailleurs, le scratchpad suit, sauf si CLAUDE_CODE_TMPDIR est définie, car c'est elle qui gagne.
Le slug du projet est votre répertoire de travail avec chaque slash remplacé par un tiret. Notre dépôt vit dans /Users/jbchauvin/Projets/AgentsRoom, donc le slug est -Users-jbchauvin-Projets-AgentsRoom. Un dossier par projet, puis un dossier par session à l'intérieur.
Pour lister tous les dossiers de session qui vous restent, pour l'utilisateur courant, sur un Mac ou une machine Linux :
ls /tmp/claude-$(id -u)/
Ce qui vit à côté
Le dossier de session n'est pas que le scratchpad. Sur la machine qui fait tourner nos agents de nuit, sept des neuf dossiers de session du jour contiennent deux entrées : scratchpad et tasks. Le dossier tasks est là où atterrit la sortie des tâches en arrière-plan, les commandes que l'agent lance détachées et relit plus tard.
Il y a un troisième endroit à connaître, et il n'est pas du tout sous le dossier temporaire : ~/.claude/projects/<slug du projet>/<id de session>/tool-results/. Quand un outil renvoie plus que ce que le contexte peut prendre, Claude Code y sauvegarde la sortie complète et donne le chemin à l'agent. Ce soir, un export Search Console de 68 Ko est allé là, pas dans le scratchpad. Cet emplacement est permanent, à côté de la transcription de la session. La répartition est donc : transcriptions et sorties d'outils volumineuses sous ~/.claude, qui reste ; scripts, fichiers intermédiaires et sorties de tâches en arrière-plan sous le dossier temporaire, qui ne reste pas.
Pourquoi il disparaît
Parce que le dossier temporaire veut dire « effaçable » pour tout système d'exploitation, et que rien dans Claude Code ne s'y oppose.
Sur Linux, systemd-tmpfiles applique ce que dit /usr/lib/tmpfiles.d/tmp.conf. Un utilisateur a perdu la totalité de la sortie d'un pipeline de génération de données de 24 heures, verdicts de relecture, scripts et virtualenv Python compris, quand l'hôte a redémarré : la règle sur ce conteneur Debian était D /tmp 1777 root root 30d, qui recrée /tmp vide à chaque démarrage. C'était Claude Code 2.1.260, et le prompt système ne disait rien de la volatilité. Vérifiez votre propre règle avec cat /usr/lib/tmpfiles.d/tmp.conf : une ligne D vide au démarrage, un âge comme 10d nettoie sur minuterie.
Sur Windows, le dossier est sous %TEMP%, que l'Assistant de stockage et le Nettoyage de disque balaient. En juillet 2026, quelqu'un a lancé un nettoyage de disque pendant que deux sessions tournaient et a perdu les worktrees git dans lesquels les deux agents travaillaient, modifications non commitées comprises. Les modifications n'ont été récupérées que parce qu'elles existaient encore dans le contexte de la conversation.
Sur macOS, /private/tmp est vidé au redémarrage et les fichiers anciens sont supprimés par le système. Sur notre Mac mini ce soir, /private/tmp/claude-501 contient neuf dossiers de session pour ce projet, 452 fichiers et 25 Mo, et rien de plus vieux que la journée. Ce que les agents des nuits précédentes y ont laissé a disparu.
Rien de tout ça n'est un bug au sens où quelque chose aurait mal fonctionné. Le dossier est exactement là où le CLI le dit, et le système d'exploitation a fait exactement ce qu'il fait avec les dossiers temporaires. L'écart, c'est que le prompt l'appelle scratchpad, et qu'un scratchpad sonne comme quelque chose qu'on garde.
Ce qu'on peut configurer, et ce qu'on ne peut pas
Depuis Claude Code 2.1.314, vérifié le 3 novembre 2026, une variable déplace le scratchpad : CLAUDE_CODE_TMPDIR. Claude Code construit le dossier ainsi : <CLAUDE_CODE_TMPDIR>/claude-<uid>/<slug du projet>/<id de session>/scratchpad, avec claude au lieu de claude-<uid> sur Windows. Sans la variable, la racine est /tmp sur macOS quel que soit TMPDIR, et le dossier temporaire du système sur Linux et Windows, donc TMPDIR sur Linux et TEMP sur Windows le déplacent toujours. Définissez-la dans votre shell ou dans le bloc env de ~/.claude/settings.json : Claude Code l'ignore dans les réglages de projet et locaux. Pointez-la vers un dossier à vous hors du dossier temporaire, et le scratchpad survit aux redémarrages et aux nettoyages.
Quand on a écrit cet article, en 2.1.278, c'était différent : la variable existait pour d'autres fichiers temporaires et avait été signalée comme ne déplaçant pas le scratchpad, et les demandes d'une variable CLAUDE_CODE_SCRATCHPAD_DIR et d'un emplacement par défaut sous ~/.claude/scratchpad/ avaient été fermées comme non planifiées.
Claude Code vérifie aussi à qui appartient ce dossier. Si /tmp/claude-<uid> a été créé par un autre compte, il refuse de s'en servir avec Temp directory /tmp/claude-1000 is owned by uid 0, expected 1000, suivi de Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it. Supprimez le dossier en tant que son propriétaire une fois qu'aucune session ne l'utilise, ou définissez la variable.
Deux autres choses marchent sans aucun réglage. Une session reprise (claude --resume) garde son id de session, donc elle cherche le même dossier, et le retrouve si rien ne l'a supprimé entre-temps. Et vous pouvez demander à l'agent, en clair, d'écrire tel fichier à un endroit permanent. C'est toute notre solution.
La règle donnée à nos agents de nuit
Sept agents démarrent à 20h00 sur la même machine : SEO, produit, réseaux sociaux, un fixer, un documentaliste, un rapport CEO et un rapporteur qui envoie par e-mail la synthèse de la nuit à 22h00. Chacun produit beaucoup de matière intermédiaire : exports Search Console, JSON filtrés, scripts qui comptent des chaînes dans vingt locales. Tout ça va dans le scratchpad, volontairement, parce que rien de tout ça n'a sa place dans le dépôt et que rien ne doit déclencher une demande de permission à deux heures du matin.
La règle dans chaque prompt tient en une phrase : le scratchpad garde ce dont la prochaine commande a besoin, le dépôt garde ce dont la prochaine nuit a besoin. Tout ce qu'un agent voudra relire demain, son rapport, son repère de run, le fichier qu'il modifiait, est écrit sous reports/nuit/<date>/ et commité dès que c'est terminé, pas à la fin du run. Un agent coupé en pleine tâche laisse un rapport partiel dans git et 25 Mo de fichiers de travail que personne ne regrettera.
Le miroir de cette règle est celle que l'utilisateur Linux a apprise à ses dépens : ne jamais laisser un long travail accumuler sa seule copie dans le scratchpad. Si un pipeline tourne une journée, ses sorties vont dans un chemin que vous avez choisi, et le scratchpad garde les utilitaires.
Ouvrir le dossier sans quitter l'app
Si vous faites tourner Claude Code dans AgentsRoom, File > Open File (Cmd/Ctrl+O) ouvre n'importe quel fichier de ce dossier dans l'aperçu, marqué « Hors projet » pour que vous ne le preniez pas pour un fichier suivi. C'est le moyen le plus rapide qu'on ait trouvé pour lire un export que l'agent vient de produire, sans coller un chemin /private/tmp dans un terminal.
Et pour fermer la boucle sur le nom : le Scratchpad d'AgentsRoom est autre chose. C'est l'éditeur de prompt intégré au composer de l'agent, où un long prompt s'écrit et se garde comme brouillon par agent entre deux sessions. Même mot, choisi avant que Claude Code l'utilise pour un dossier. L'un est là où vous écrivez à l'agent ; l'autre est là où l'agent écrit pour lui-même.
Questions fréquentes
Où est le scratchpad de Claude Code sur macOS et Linux ?
Sous le dossier temporaire du système : /tmp/claude-<votre uid>/<chemin du projet, slashs remplacés par des tirets>/<id de session>/scratchpad. Sur macOS le même dossier apparaît sous /private/tmp/claude-501/… parce que /tmp est un lien vers /private/tmp. L'uid est ce qu'affiche id -u : 501 pour le premier utilisateur d'un Mac, 1000 sur la plupart des distributions Linux, 0 pour root. Les versions plus anciennes utilisaient /tmp/claude/ sans le suffixe d'uid.
Où est le scratchpad de Claude Code sur Windows ?
Sous le dossier TEMP : %TEMP%\claude\<slug du projet>\<id de session>\scratchpad, ce qui donne en général C:\Users\<vous>\AppData\Local\Temp\claude\…. Changer la variable d'environnement TEMP le déplace, et CLAUDE_CODE_TMPDIR aussi, qui passe avant TEMP.
Pourquoi mon scratchpad Claude Code a-t-il disparu ?
Parce qu'il vit sous le dossier temporaire, et que tout système d'exploitation considère le dossier temporaire comme effaçable. Sur Linux, systemd-tmpfiles applique la règle écrite dans /usr/lib/tmpfiles.d/tmp.conf, souvent un vidage au démarrage ou après un certain nombre de jours. macOS vide /private/tmp au redémarrage et supprime les fichiers anciens. Sur Windows, l'Assistant de stockage et le Nettoyage de disque balaient %TEMP%. Rien dans Claude Code ne protège le dossier de tout ça.
Peut-on changer l'endroit où Claude Code met son scratchpad ?
Oui, avec la variable d'environnement CLAUDE_CODE_TMPDIR. Claude Code y ajoute claude-<votre uid> (claude sur Windows), et le scratchpad suit : vérifié en Claude Code 2.1.314 le 3 novembre 2026, alors qu'en 2.1.278 la variable ne le déplaçait pas. Définissez-la dans votre shell ou dans le bloc env de ~/.claude/settings.json, car Claude Code l'ignore dans les réglages de projet et locaux. Sans elle, la racine est /tmp sur macOS quel que soit TMPDIR, et le dossier temporaire du système sur Linux (TMPDIR) et Windows (TEMP). Pointez-la vers un dossier à vous hors du dossier temporaire et le scratchpad survit aux redémarrages et aux nettoyages.
Pourquoi Claude Code dit-il que son dossier temporaire appartient à un autre uid ?
Claude Code refuse d'utiliser un dossier temporaire qui appartient à un autre compte. Le message dit : Temp directory /tmp/claude-1000 is owned by uid 0, expected 1000, puis Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it. Le dossier /tmp/claude-<votre uid> existe, mais un processus lancé sous un autre utilisateur l'a créé avant vous, ici root, dont l'uid est 0. Deux solutions : une fois qu'aucune session Claude Code ne l'utilise, supprimez ce dossier en tant que son propriétaire (sudo rm -rf /tmp/claude-1000), ou définissez CLAUDE_CODE_TMPDIR vers un dossier à vous. Vérifié en Claude Code 2.1.314.
Le scratchpad, c'est la même chose que ~/.claude/projects ?
Non. ~/.claude/projects/<slug du projet>/ contient les transcriptions de session et, par session, un dossier tool-results où sont sauvegardées les sorties d'outils trop volumineuses. Cet emplacement est permanent. Le scratchpad sous le dossier temporaire est l'espace de travail que l'agent utilise pour ses scripts et ses fichiers intermédiaires, et celui-là est volatil.
C'est le Scratchpad d'AgentsRoom ?
Même mot, autre chose. Le Scratchpad d'AgentsRoom est l'éditeur de prompt intégré au composer de l'agent, où vous écrivez et gardez un brouillon par agent. Le scratchpad de Claude Code est un dossier que le CLI crée pour chaque session. AgentsRoom peut ouvrir n'importe quel fichier de ce dossier avec File > Open File, marqué « Hors projet ».
Télécharger AgentsRoom
Lancez tous vos agents IA, sur tous vos projets, depuis une seule fenêtre.
App companion : suivez vos agents en déplacement
Utilisez Claude, Codex, Antigravity CLI ou un autre fournisseur IA.
Remontez bugs et demandes directement dans votre backlog public.
Continuer la lecture
C'est quoi un token chez Claude, et comment ça marche ? On en a compté 3,8 milliards
Un token est un morceau de mot, et Claude en compte quatre sortes : l'entrée, les écritures de cache, les lectures de cache et la sortie. On a compté 30 jours de nos propres sessions Claude Code, 3,8 milliards de tokens : 98 % étaient la conversation relue depuis le cache, 0,3 % ce que Claude a écrit. Ce que coûte chaque sorte, pourquoi une session s'alourdit à chaque tour, et ce que mesure la fenêtre de 5 heures.
Lire l'articleAGENTS.md : un seul fichier de contexte pour tous tes agents de code (Codex, Antigravity, Claude)
AGENTS.md, c'est le fichier d'instructions portable que tes agents de code lisent avant de toucher à ton code. Ce qu'il faut y mettre, en quoi il diffère de CLAUDE.md, et comment garder un seul contexte entre Codex, Antigravity et Claude.
Lire l'articleLe Remote Control de Claude Code consomme-t-il plus de tokens ? Et Codex en a-t-il un ?
Deux questions que les gens tapent dans Google depuis qu'Anthropic a sorti Remote Control : piloter une session Claude Code depuis son téléphone coûte-t-il plus de tokens, et existe-t-il un équivalent pour Codex. Réponses courtes : non, un tour est un tour où que vous le tapiez, et oui mais seulement la moitié existe. Voici ce qu'est vraiment Remote Control, comment mesurer la question des tokens vous-même en quatre commandes, ce que fait codex remote-control aujourd'hui, et comment une télécommande mobile qui ne parle jamais à un fournisseur change le calcul.
Lire l'article