Claude Codeはscratchpadをどこに置き、なぜ消えるのか
Claude Codeのセッションは毎回scratchpadディレクトリを告げ、その後は二度と触れません。macOS、Linux、Windowsそれぞれの正確なパス、その隣にあるもの、再起動や一時ファイルの掃除でなぜ消えるのか、設定できることとできないこと、そして毎晩そこに書き込む7体のエージェントに与えた唯一のルールをまとめます。
Claude Codeのセッションは毎回、たぶん読み飛ばしている1行から始まります。今夜のわたしたちのものは、こう書かれています:
Scratchpad directory: /private/tmp/claude-501/-Users-jbchauvin-Projets-AgentsRoom/5a506305-…/scratchpad
その後、CLIは二度とそれに触れません。一覧表示するコマンドもなければ、開くパネルもなく、エージェントがそこに書いたと言っていたCSVを探しに行く日には、フォルダはもう消えているかもしれません。
わたしたちは毎晩、Mac mini上で7体のスケジュール済みエージェントを動かしていて、それぞれがそのフォルダに書き込みます。そこで、それが何なのか、各システムのどこにあるのか、何がそれを消すのか、エージェントにそれをどう扱うよう伝えているのかを調べに行きました。以下はすべて、2026年9月19日にClaude Code 2.1.278で確認し、そこで作業を失った人たちが開いたGitHubのissueで裏付けたものです。設定できることはその後変わったので、その部分は2026年11月3日にClaude Code 2.1.314で改めて確認しました。
Claude Codeがエージェントに伝えていること
この行はシステムプロンプトの一部です。その後に続く指示は、現在のバージョンでは、一時ファイル、つまりプロジェクトに属さない中間結果、スクリプト、出力には、/tmp やその他のシステム一時ディレクトリではなく常にこのディレクトリを使うこと、このディレクトリはセッション固有でプロジェクトから隔離されていること、通常は許可の確認なしに使えること、そして /tmp はあなたが明示的に求めたときだけ使うこと、と述べています。
あなたにとって役に立つのは最後の部分です。scratchpadの中に書かれたファイルは書き込み許可のダイアログを出さないので、エージェントは毎回あなたに尋ねる代わりに、補助スクリプトやエクスポートをそこに置きます。それはまた、ファイルがどこへ行ったのかをあなたが一度も尋ねられず、一度も知らされない理由でもあります。
実行中のセッションでパスを知りたければ、エージェントに聞いてください。「scratchpadディレクトリを表示して」には、何も実行せずにシステムプロンプトから答えが返ってきます。
パス、システムごとに
このフォルダはオペレーティングシステムの一時ディレクトリの下にあり、その名前には、あなたが誰か、どのプロジェクトにいたか、どのセッションだったかが刻まれています。
macOSとLinuxでは:
/tmp/claude-<uid>/<スラッシュをダッシュに置き換えたプロジェクトパス>/<セッションid>/scratchpad
Macでは /tmp が /private/tmp へのリンクなので、同じフォルダが /private/tmp/claude-501/… として表示されます。数字はあなたのユーザーid、id -u が表示するものです:Macの最初のアカウントなら501、ほとんどのLinuxディストリビューションでは1000、rootなら0。後で引用するLinuxの報告では /tmp/claude-0/ になっていますが、これはパイプラインがコンテナ内でrootとして動いていたからです。2026年の早い時期に開かれたissueにはuidのない /tmp/claude/<プロジェクトslug>/… が見えるので、サフィックスは途中で追加されたものです。古いビルドを使っているなら、外して読んでください。
Windowsでは、2026年7月にWindows 11で報告されたとおり:
%TEMP%\claude\<プロジェクトslug>\<セッションid>\scratchpad
これは通常 C:\Users\<あなた>\AppData\Local\Temp\claude\… に展開されます。パスは TEMP 変数から導かれるので、TEMP を別の場所に向ければscratchpadもついてきます。ただし CLAUDE_CODE_TMPDIR が設定されていれば、そちらが優先されます。
プロジェクトslugは、作業ディレクトリのスラッシュをすべてダッシュに置き換えたものです。わたしたちのリポジトリは /Users/jbchauvin/Projets/AgentsRoom にあるので、slugは -Users-jbchauvin-Projets-AgentsRoom です。プロジェクトごとに1フォルダ、その中にセッションごとに1フォルダです。
MacまたはLinuxマシンで、現在のユーザーにまだ残っているセッションフォルダをすべて一覧表示するには:
ls /tmp/claude-$(id -u)/
その隣にあるもの
セッションフォルダにあるのはscratchpadだけではありません。夜間エージェントを動かしているマシンでは、その日の9つのセッションフォルダのうち7つに、scratchpad と tasks の2つのエントリがあります。tasks フォルダは、バックグラウンドタスクの出力が置かれる場所です。エージェントが切り離して実行し、後で読み返すコマンドのことです。
知っておくべき3つ目の場所があり、それは一時ディレクトリの下ではまったくありません:~/.claude/projects/<プロジェクトslug>/<セッションid>/tool-results/ です。ツールがコンテキストに収まる以上のものを返したとき、Claude Codeは完全な出力をそこに保存し、エージェントにそのパスを渡します。今夜は、68 KBのSearch Consoleエクスポートがscratchpadではなくそこへ行きました。この場所は永続的で、セッションのトランスクリプトの隣にあります。つまり分担はこうです:トランスクリプトと大きすぎるツール出力は ~/.claude の下で、残る。スクリプト、中間ファイル、バックグラウンドタスクの出力は一時ディレクトリの下で、残らない。
なぜ消えるのか
一時ディレクトリは、どのオペレーティングシステムにとっても「消してよい」を意味し、Claude Codeにはそれに逆らう仕組みが何もないからです。
Linuxでは、systemd-tmpfiles が /usr/lib/tmpfiles.d/tmp.conf の内容をそのまま適用します。ある報告者は、ホストが再起動したときに、24時間かけたデータ生成パイプラインの出力全体を、レビューの判定、スクリプト、Pythonのvirtualenvまで含めて失いました:そのDebianコンテナのルールは D /tmp 1777 root root 30d で、起動のたびに /tmp を空の状態で作り直すものです。それはClaude Code 2.1.260で、システムプロンプトは揮発性について何も言っていませんでした。自分のルールは cat /usr/lib/tmpfiles.d/tmp.conf で確認してください:D の行は起動時に消去し、10d のような期限はタイマーで古いファイルを削除します。
Windowsでは、フォルダは %TEMP% の下にあり、ストレージ センサーとディスク クリーンアップがそこを掃除します。2026年7月、2つのセッションが動いている最中にディスク クリーンアップを実行した人が、両方のエージェントが作業していたgit worktreeを、コミットされていない編集ごと失いました。編集が復元できたのは、会話のコンテキストにまだ残っていたからにすぎません。
macOSでは、/private/tmp は再起動時に空にされ、古いファイルはシステムによって削除されます。今夜のわたしたちのMac miniでは、/private/tmp/claude-501 にこのプロジェクトのセッションフォルダが9つ、452ファイル、25 MBあり、その日より古いものは何もありません。前の夜のエージェントたちがそこに残したものは消えています。
これはどれも、何かが誤動作したという意味でのバグではありません。フォルダはCLIが言うとおりの場所に正確にあり、オペレーティングシステムは一時フォルダに対していつもすることを正確にしただけです。ずれているのは、プロンプトがそれをscratchpadと呼び、scratchpadという言葉が取っておくもののように聞こえることです。
設定できること、できないこと
2026年11月3日に確認したClaude Code 2.1.314以降、scratchpadを移動させる変数が1つあります:CLAUDE_CODE_TMPDIR です。Claude Codeはフォルダを <CLAUDE_CODE_TMPDIR>/claude-<uid>/<プロジェクトslug>/<セッションid>/scratchpad として組み立て、Windowsでは claude-<uid> の代わりに claude を使います。この変数がなければ、ルートはmacOSでは TMPDIR に関係なく /tmp、LinuxとWindowsではシステムの一時ディレクトリなので、Linuxの TMPDIR とWindowsの TEMP は今でもscratchpadを移動させます。シェルか、~/.claude/settings.json の env ブロックで設定してください:Claude Codeはプロジェクト設定とローカル設定に書かれたこの変数を無視します。一時ディレクトリの外にある自分のフォルダを指定すれば、scratchpadは再起動や掃除のあとも残ります。
この記事を最初に書いた2.1.278の時点では事情が違いました:この変数はほかの一時ファイルのために存在し、scratchpadは移動させないと報告されていました。また、CLAUDE_CODE_SCRATCHPAD_DIR 変数の要望と、~/.claude/scratchpad/ の下をデフォルトにする要望は、予定なしとしてクローズされていました。
Claude Codeはそのフォルダの所有者も確認します。/tmp/claude-<uid> が別のアカウントによって作られていた場合、Temp directory /tmp/claude-1000 is owned by uid 0, expected 1000 に続けて Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it. と表示し、使用を拒否します。どのセッションもそのフォルダを使っていない状態で所有者としてフォルダを削除するか、変数を設定してください。
設定なしでも効くことが、ほかに2つあります。再開したセッション(claude --resume)はセッションidを保つので同じフォルダを探しに行き、その間に何も消していなければ見つけます。そして、特定のファイルを永続的な場所に書くよう、エージェントに普通の言葉で頼めます。わたしたちの解決策はそれだけです。
夜間エージェントに与えたルール
同じマシンで20:00に7体のエージェントが起動します:SEO、プロダクト、ソーシャル、fixer、ドキュメンタリスト、CEOレポート、そして22:00にその夜の要約をメールで送るrapporteurです。それぞれが大量の中間素材を生み出します:Search Consoleのエクスポート、絞り込んだJSON、20のロケールで文字列を数えるスクリプト。そのすべてが意図的にscratchpadへ行きます。どれもリポジトリに属さず、どれも午前2時に許可の確認を出すべきではないからです。
どのプロンプトにも入っているルールは一文です:scratchpadは次のコマンドが必要とするものを、リポジトリは次の夜が必要とするものを持つ。エージェントが明日読み返したくなるもの、レポート、ランの目印、編集していたファイルは reports/nuit/<date>/ の下に書き、ランの終わりではなく、終わり次第すぐにコミットします。タスクの途中で打ち切られたエージェントは、gitに部分的なレポートと、誰も惜しまない25 MBの作業ファイルを残します。
このルールの裏返しが、Linuxの報告者が痛い目を見て学んだことです:長いジョブの唯一のコピーをscratchpadに溜め込ませてはいけません。パイプラインが丸一日動くなら、その出力はあなたが選んだパスへ行き、scratchpadには補助ファイルだけを残します。
アプリを離れずにフォルダを開く
AgentsRoom の中でClaude Codeを動かしているなら、File > Open File (Cmd/Ctrl+O) でそのフォルダのどのファイルでもプレビューに開けます。追跡中のファイルと間違えないように、「プロジェクト外」と表示されます。エージェントが作ったばかりのエクスポートを、/private/tmp のパスをターミナルに貼り付けることなく読むには、これがわたしたちの見つけた一番早い方法です。
そして名前の話を締めくくると:AgentsRoom Scratchpad は別のものです。エージェントコンポーザーに組み込まれたプロンプトエディタで、長いプロンプトを書き、セッションをまたいでエージェントごとの下書きとして保存しておく場所です。同じ言葉ですが、Claude Codeがフォルダにその名を使うより前に選んだものです。一方はあなたがエージェントに書く場所、もう一方はエージェントが自分のために書く場所です。
よくある質問
macOSとLinuxでClaude Codeのscratchpadはどこにありますか
システムの一時ディレクトリの下です:/tmp/claude-<あなたのuid>/<スラッシュをダッシュに置き換えたプロジェクトパス>/<セッションid>/scratchpad。macOSでは /tmp が /private/tmp へのリンクなので、同じフォルダが /private/tmp/claude-501/… として表示されます。uidは id -u が表示する数字で、Macの最初のユーザーなら501、ほとんどのLinuxディストリビューションでは1000、rootなら0です。古いバージョンはuidのサフィックスなしの /tmp/claude/ を使っていました。
WindowsでClaude Codeのscratchpadはどこにありますか
TEMPフォルダの下です:%TEMP%\claude\<プロジェクトslug>\<セッションid>\scratchpad で、通常は C:\Users\<あなた>\AppData\Local\Temp\claude\… に展開されます。環境変数 TEMP を変えると移動し、CLAUDE_CODE_TMPDIR でも移動します。こちらは TEMP より優先されます。
Claude Codeのscratchpadはなぜ消えたのですか
一時ディレクトリの下にあり、どのオペレーティングシステムも一時ディレクトリは消してよいものと見なすからです。Linuxでは systemd-tmpfiles が /usr/lib/tmpfiles.d/tmp.conf に書かれたルールを適用し、多くは起動時の消去か一定日数後の削除です。macOSは再起動時に /private/tmp を空にし、古いファイルを削除します。Windowsではストレージ センサーとディスク クリーンアップが %TEMP% を掃除します。Claude Codeにはこのフォルダをどれからも守る仕組みがありません。
Claude Codeがscratchpadを置く場所は変えられますか
はい、環境変数 CLAUDE_CODE_TMPDIR で変えられます。Claude Codeはその後ろに claude-<あなたのuid>(Windowsでは claude)を付け、scratchpadもそれに従います:2026年11月3日にClaude Code 2.1.314で確認しました。2.1.278では、この変数でscratchpadは移動しませんでした。シェルか、~/.claude/settings.json の env ブロックで設定してください。Claude Codeはプロジェクト設定とローカル設定に書かれたこの変数を無視するからです。設定しない場合のルートは、macOSでは TMPDIR に関係なく /tmp、Linux(TMPDIR)とWindows(TEMP)ではシステムの一時ディレクトリです。一時ディレクトリの外にある自分のフォルダを指定すれば、scratchpadは再起動や掃除のあとも残ります。
Claude Codeが一時ディレクトリは別のuidの所有だと言うのはなぜですか
Claude Codeは、別のアカウントが所有する一時フォルダを使うことを拒否します。メッセージはこうです:Temp directory /tmp/claude-1000 is owned by uid 0, expected 1000、続いて Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it. フォルダ /tmp/claude-<あなたのuid> は存在しますが、別のユーザーとして動いていたプロセスが先に作成しています。ここではuid 0のrootです。解決策は2つあります:どのClaude Codeセッションもそのフォルダを使っていない状態で、所有者としてフォルダを削除する(sudo rm -rf /tmp/claude-1000)か、CLAUDE_CODE_TMPDIR を自分が所有するフォルダに設定することです。Claude Code 2.1.314で確認しました。
scratchpadは ~/.claude/projects と同じものですか
違います。~/.claude/projects/<プロジェクトslug>/ にはセッションのトランスクリプトと、セッションごとに、大きすぎるツール出力が保存される tool-results フォルダがあります。この場所は永続的です。一時ディレクトリの下のscratchpadは、エージェントがスクリプトや中間ファイルに使う作業スペースで、こちらは揮発性です。
これはAgentsRoomのScratchpadのことですか
同じ言葉ですが別のものです。AgentsRoom Scratchpadはエージェントコンポーザーに組み込まれたプロンプトエディタで、エージェントごとに下書きを書いて保存しておく場所です。Claude Codeのscratchpadは、CLIがセッションごとに作成するフォルダです。AgentsRoomは File > Open File でそのフォルダのどのファイルでも開くことができ、「プロジェクト外」と表示されます。
AgentsRoomをダウンロード
すべてのAIエージェントを、すべてのプロジェクトで、ひとつのウィンドウから実行。
コンパニオンアプリ:外出先でもエージェントを確認
Claude、Codex、Antigravity CLI、またはその他の AI プロバイダーを使用します。
バグや要望を公開バックログに直接送信できます。
続きを読む
MCP のトークン消費を減らす:ツール定義を 60% 削った方法
エージェントが呼び出せる MCP ツールは、どれもモデルがリクエストのたびに読む可能性のある JSON の塊です。私たちのツールは約 95,000 トークンありました。自分のツールを 2 分で測る方法、ツールを 1 つも削除せずに削ったもの、そして再び膨らむのを防ぐ予算チェックを紹介します。
記事を読むAIコーディングエージェントがサーバーで何を実行しているかを見る方法
エージェントが本番サーバーで作業していて、ターミナルには「ツールを呼び出しています」としか出ていません。実際にどのコマンドを実行し、マシンは何を返したのか。トランスクリプトを読めば後からは分かります。それを実行中に見えるようにした方法、最初に試して失敗したこと、そして私たちのアプリを使わずに同じことを実現する方法を紹介します。
記事を読むClaude Code の Remote Control はトークンを余計に消費する? Codex にもある?
Anthropic が Remote Control を出して以来、人々が Google に打ち込むようになった 2 つの質問。スマホから Claude Code のセッションを操作するとトークンが余計にかかるのか、そして Codex に同等のものはあるのか。短い答えは、いいえ、ターンはどこで打ってもターンです。そして、はい、ただし半分しか存在しません。Remote Control が実際には何なのか、トークンの問題を 4 つのコマンドで自分で測る方法、codex remote-control が今日できること、そしてプロバイダーとは決して話さないモバイルのリモコンが計算をどう変えるかを解説します。
記事を読む