Claude Code 把 scratchpad 放在哪裡,它又為什麼會消失

每個 Claude Code 會話都會宣布一個 scratchpad 目錄,然後再也不提。這裡給出它在 macOS、Linux 和 Windows 上的確切路徑、旁邊還有什麼、為什麼一次重啟或一次臨時檔案清理就會把它抹掉、哪些能配置哪些不能,以及我們給每晚往裡寫東西的七個代理定下的唯一一條規則。

每個 Claude Code 會話都以一行你多半會一掃而過的文字開頭。今晚我們的這一行是這樣的:

Scratchpad directory: /private/tmp/claude-501/-Users-jbchauvin-Projets-AgentsRoom/5a506305-…/scratchpad

之後 CLI 就再也不提它了。沒有命令列出它,沒有面板開啟它,等到哪天你去找代理說寫在那裡的那份 CSV,資料夾可能已經沒了。

我們每晚在一台 Mac mini 上跑七個定時代理,每一個都往那個資料夾裡寫東西。所以我們去看了看它到底是什麼、在每個系統上位於哪裡、什麼會刪掉它,以及我們讓代理怎麼應對。下面的一切都在 2026 年 9 月 19 日於 Claude Code 2.1.278 上核實過,也核對了那些在裡面丟過工作的人開的 GitHub issue。

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 也會跟著走。

專案 slug 就是你的工作目錄,其中每個斜槓都換成了短橫線。我們的儲存庫在 /Users/jbchauvin/Projets/AgentsRoom,所以 slug 是 -Users-jbchauvin-Projets-AgentsRoom。每個專案一個資料夾,裡面每個會話再一個資料夾。

要在 Mac 或 Linux 機器上列出當前使用者還留著的所有會話資料夾:

ls /tmp/claude-$(id -u)/

旁邊還有什麼

會話資料夾裡不只有 scratchpad。在跑我們夜間代理的那台機器上,當天九個會話資料夾裡有七個包含兩項:scratchpadtaskstasks 資料夾是後台任務輸出落地的地方,也就是代理分離執行、稍後再讀的那些命令。

還有第三個地方你應該知道,它根本不在臨時目錄下:~/.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 月,有人在兩個會話都在執行時跑了一次磁碟清理,丟掉了兩個代理正在其中工作的 git worktree,未提交的修改也一併沒了。那些修改之所以能找回來,只是因為它們還留在對話上下文裡。

在 macOS 上,/private/tmp 在重啟時被清空,舊檔案由系統刪除。今晚在我們的 Mac mini 上,/private/tmp/claude-501 裡有這個專案的九個會話資料夾,452 個檔案,25 MB,沒有任何東西比當天更早。前幾晚的代理留在那裡的東西都已經沒了。

這一切都不是「有什麼出了錯」意義上的 bug。資料夾就在 CLI 說的位置上,作業系統也只是對臨時資料夾做了它一貫做的事。問題出在提示詞把它叫作 scratchpad,而 scratchpad 聽起來像是你會留著的東西。

哪些能配置,哪些不能

截至 2.1.278,沒有關於 scratchpad 位置的設定。資料夾跟隨臨時目錄,所以 Windows 上的 TEMP 和 Unix 上的 TMPDIR 能把它挪走。為其他臨時檔案而存在的 CLAUDE_CODE_TMPDIR,據報告並不能移動 scratchpad,而那條請求已經以不計劃實現為由關閉。要求 CLAUDE_CODE_SCRATCHPAD_DIR 變數的請求,以及把預設位置放到 ~/.claude/scratchpad/ 下的請求,也是同樣的結局。在桌面應用裡顯示一個可見的 scratchpad 資料夾,則是一條仍然開放的功能請求。

今天有兩件事是管用的。恢復的會話(claude --resume)保留它的會話 id,所以它會去找同一個資料夾,只要中間沒有東西刪掉它就能找到。另外,你可以用大白話讓代理把某個檔案寫到一個永久的地方。我們的解決辦法就只有這些。

我們給夜間代理定的規則

七個代理在同一台機器上於 20:00 啟動:SEO、產品、社交、一個 fixer、一個文件管理員、一份 CEO 報告,還有一個在 22:00 把當晚摘要用郵件發出去的 rapporteur。每一個都會產生大量中間材料:Search Console 匯出、過濾後的 JSON、在二十個語言版本里數字串的腳本。這些全都進 scratchpad,而且是有意為之,因為它們都不屬於儲存庫,也都不該在凌晨兩點觸發一次權限提示。

每個提示詞裡的規則只有一句話:scratchpad 存放下一條命令需要的東西,儲存庫存放下一個晚上需要的東西。凡是代理明天想再讀的東西,它的報告、它的執行標記、它正在編輯的檔案,都寫到 reports/nuit/<date>/ 下,並在完成後立刻提交,而不是等到執行結束。一個在任務中途被切斷的代理,會在 git 裡留下一份不完整的報告,外加 25 MB 沒人會想念的草稿檔案。

這條規則的鏡像,就是那位 Linux 報告者付出代價才學到的:絕不要讓一個長任務把唯一的一份副本堆在 scratchpad 裡。如果一條流水線要跑一天,它的輸出應該去你選定的路徑,scratchpad 只留輔助檔案。

不離開應用就開啟這個資料夾

如果你在 AgentsRoom 裡執行 Claude Code,File > Open File (Cmd/Ctrl+O) 可以在預覽裡開啟該資料夾的任何檔案,並標記為「專案之外」,免得你把它誤認為受跟蹤的檔案。這是我們找到的最快的辦法,可以讀到代理剛生成的匯出,而不用往終端裡粘一條 /private/tmp 路徑。

最後把名字的事說清楚:AgentsRoom Scratchpad 是另一樣東西。它是內建在代理 composer 裡的提示詞編輯器,長提示詞在那裡撰寫,並在會話之間為每個代理保留為草稿。同一個詞,在 Claude Code 用它來稱呼一個資料夾之前就選定了。一個是你寫給代理的地方;另一個是代理寫給自己的地方。

常見問題

在 macOS 和 Linux 上,Claude Code 的 scratchpad 在哪裡?

在系統臨時目錄下:/tmp/claude-<你的 uid>/<斜槓換成短橫線的專案路徑>/<會話 id>/scratchpad。在 macOS 上,同一個資料夾會顯示為 /private/tmp/claude-501/…,因為 /tmp 是指向 /private/tmp 的連結。你的 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 環境變數就能把它挪走,因為這條路徑來自 TEMP,而不是來自 Claude Code 的某個設定。

我的 Claude Code scratchpad 為什麼消失了?

因為它位於臨時目錄下,而所有作業系統都認為臨時目錄可以放心刪除。在 Linux 上,systemd-tmpfiles 會執行 /usr/lib/tmpfiles.d/tmp.conf 裡寫的規則,通常是開機時清空或若干天後刪除。macOS 在重啟時清空 /private/tmp,並刪除舊檔案。在 Windows 上,儲存感知和磁碟清理會清掃 %TEMP%。Claude Code 裡沒有任何東西能讓這個資料夾躲過這些。

我能改變 Claude Code 放置 scratchpad 的位置嗎?

截至 Claude Code 2.1.278,沒有專門的設定。這個資料夾跟隨作業系統的臨時目錄,所以在 Windows 上挪動 TEMP、在 Unix 上挪動 TMPDIR 就能把它挪走。要求單獨一個變數、或者在 ~/.claude 下放一個持久位置的請求,都已經以不計劃實現為由關閉。可靠的做法是告訴代理,凡是重要的東西都寫進專案裡。

scratchpad 和 ~/.claude/projects 是同一個東西嗎?

不是。~/.claude/projects/<專案 slug>/ 存放會話記錄,並且每個會話有一個 tool-results 資料夾,用來儲存過大的工具輸出。那個位置是永久的。臨時目錄下的 scratchpad 是代理用來放腳本和中間檔案的工作空間,那一個是易失的。

這就是 AgentsRoom 的 Scratchpad 嗎?

同一個詞,兩回事。AgentsRoom Scratchpad 是內建在代理 composer 裡的提示詞編輯器,你在那裡為每個代理撰寫並保留一份草稿。Claude Code 的 scratchpad 是 CLI 為每個會話建立的一個資料夾。AgentsRoom 可以用 File > Open File 開啟該資料夾裡的任何檔案,並標記為「專案之外」。

下載 AgentsRoom

在一個視窗中執行你所有專案的所有 AI 代理。

免費下載 AgentsRoom

配套應用:隨時隨地監控你的 Agent

使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。

獲取擴充功能
Chrome Web Store

把 Bug 和需求直接傳送到您的公開待辦清單。

多專案管理
多供應商
多代理執行
即時狀態
檔案差異與提交
行動應用
即時預覽
代理團隊
瀏覽器自動化
Backlog 驅動開發
提示詞庫
技能庫
檢視所有功能

繼續閱讀