Claude Codeのデータ削除 — .claudeディレクトリに残るものの消し方
Claude Codeのデータ削除は、プロジェクト単位ならclaude purgeです。キャッシュ・resume履歴・画像を消す方法と、消してはいけないファイルを示します。
Claude Codeのデータ削除は、1プロジェクト分ならclaude purge <パス>で足ります。v2.1.288より前の名前はclaude project purgeで、今も通知付きで動きます。期限が来れば消えるデータはcleanupPeriodDaysの掃除に任せられます。
キャッシュ、--resumeの履歴、貼り付けた画像は、消すパスと失うものがそれぞれ違います。症状別の早見は「消したいものから探す」にあります。
~/.claudeにはCLAUDE.mdやsettings.jsonとは別に、Claude Codeが動作の結果として書き足すデータが溜まります。大半はcleanupPeriodDaysの掃除で期限が来れば消えます。期限に関係なく残り続けるファイルも一定数あります。
何が自動で消え、何が消えず、消えないものをどう片付けるか。v2.1.287のclaude project purgeを実際に動かした出力もあわせて載せます。
自分で書く設定ファイルはClaude Codeの.claudeディレクトリをエクスプローラーで探索する方法で辿れます。管理者が置くエンタープライズ設定、プロジェクトルートに手で作るローカルメモ、claude pluginが管理するプラグインのクローンは、人が内容を決める設定です。この記事の対象は、何も指示しなくてもセッションを重ねるだけで溜まっていく側のデータです。
消えるデータと消えないデータの境目
~/.claude配下のデータは平文です。ツールが読んだファイルの中身、コマンドの出力、貼り付けたテキストなど、ツール呼び出しを通ったものはトランスクリプトに記録されます。
projects/配下のトランスクリプトやチェックポイント、デバッグログはcleanupPeriodDays(既定30日、最小1)の対象です。期限を過ぎると起動時の掃除で削除されます。0を設定すると検証エラーになります。
対象パスの一覧と監視方法はClaude Code cleanupPeriodDaysでデータの保持期間を変えるにあります。ここで扱うのは、掃除の外にあって自分で消さない限り残るデータです。
掃除が触らないパス
掃除はこれらを消しません。2種類のキャッシュはログアウト時に消えますが、そのほかは自分で消すまで残ります。
| パス | 内容 |
|---|---|
history.jsonl | 内容入力した全プロンプトとタイムスタンプ・プロジェクトパス。上矢印での呼び出し、Ctrl+R検索、!シェルコマンド補完に使う |
stats-cache.json | 内容/usageが表示するトークン数・コストの集計 |
remote-settings.json | 内容サーバー管理設定のキャッシュ。組織が何も配布していなければ{}。ログアウト時に削除される |
policy-limits.json | 内容組織のフィーチャーポリシーのキャッシュ。一部のアカウント種別のみ。横にpolicy-limits.json.stamp.jsonが付き、キャッシュの持ち主のアカウントまたはAPIキーを記録する。両方ログアウト時に削除される |
cache/changelog.md | 内容/release-notesが表示するchangelogのキャッシュ |
日数管理でも永続でもない3つの扱い
sessions/、自動メモリ、Claude DesktopとCoworkのトランスクリプトは、日数で消える側にも消えない側にも入りません。
日数でも永続でもない3つ
sessions/
実行中のセッションを1つにつき1ファイルで表し、並行起動とクラッシュの検知に使います。セッションの終了時に個別に消え、クラッシュで残った分は次回起動時に片付きます。
自動メモリ
projects/<project>/memory/のファイルは、掃除でファイル単位に消えません。ディレクトリが保持期間まるごと空だったときだけ、ディレクトリごと消えます。Desktop・Coworkの会話
既定では年齢に関係なく残ります。
desktopSessionCleanupPeriodDaysを設定すると上限を付けられます。
v2.1.228より前のバージョンでは、掃除がメモリディレクトリ内のフォルダをセッションデータと誤認し、中の古いファイルを消すことがありました。
desktopSessionCleanupPeriodDaysは、cleanupPeriodDaysと両方を超えた時点で効きます。既定の30日のままdesktopSessionCleanupPeriodDaysだけを7にしても、30日は保持されます。
組織がmanaged settingsでcleanupPeriodDaysを配っていると、v2.1.248以降はその値がDesktop・Coworkの会話にも直接かかります。この場合desktopSessionCleanupPeriodDaysは無視されます。v2.1.248より前は、そもそも無期限保持の特別扱いが無く、cleanupPeriodDaysで消えていました。
掃除そのものが止まる場合
古いバージョンが書いていたtodos/・statsig/・logs/は、今のバージョンでは書かれません。掃除が中身とともに空のディレクトリも消します。
掃除が走らなければ、期限切れのデータも残ります。claude -pに--bareを付けたセッションは掃除を実行しません。保持期間を安全に決められないとき(設定ファイルの読み込みエラーなど)も掃除は一時停止し、/statusに警告が出ます。
消してはいけない状態ファイル
キャッシュと違い、次の3つは残しておく状態ファイルとして公式に挙げられています。
.credentials.jsonはログイン認証情報です。消すと/loginからやり直しになります。agent-memory/はサブエージェントの永続メモリです。jobs/とdaemon/はバックグラウンドセッションの状態を保持します。
キャッシュとロックファイルは消して構いません。迷うパスは、後述の一覧表で失うものを確認してから消します。
見落としやすい残り方
公式の一覧に並んでいても、名前だけでは中身が分かりにくいパスがあります。
projects/<project>/には、名前に.orphaned-や.superseded-を含むファイルが出ることがあります。上書きや削除の代わりに、Claude Codeが前のトランスクリプトを脇に退避した結果です。セッション選択画面には出ませんが、中身は元のトランスクリプトと同じ平文で、掃除の対象です。
backups/は~/.claude.jsonの旧版を最新5つまで保持します。読み取れなかった版のコピーは、その5つとは別に残ります。プロジェクトの信頼設定やMCPサーバーの設定が旧版に写っている可能性があります。
/feedbackが作るデータは2か所に分かれます。feedback-bundles/は、Anthropicのアカウント担当者へ送る用のアーカイブです。サードパーティープロバイダーの利用時か、Anthropicの認証情報が無いときに書かれます。feedback/drafts/は、Claudeが下書きして/feedbackで確認待ちになっているフィードバックです。cleanupPeriodDaysと30日の短いほうで掃除され、下書きが10件に達すると最古の1件が消えます。
上の2つとは別に、画像は保存先がバージョンで違います。v2.1.274以前はimage-cache/<session>/に~/.claude配下で保存していました。後のバージョンは貼り付けた画像と添付画像を、一時ディレクトリ下のセッションごとのimages/に置きます。一時ディレクトリはCLAUDE_CODE_TMPDIRで動かせます。image-cache/に残った他セッションの旧ディレクトリは、年齢に関係なく掃除が消します。
そのほか、claude.aiの同期で外れたスキルとプラグインはskills/.trash/とplugins/.trash/に置かれます。復元できるようにファイルを残す場所で、掃除が消すまで残ります。plugins/の下にも、installed_plugins.jsonを書き換える前の日付付きコピー(set-asideとunreadableの2系統)が置かれ、掃除の対象です。前者は書き換えで落とした導入記録、後者は読めなかったファイルの中身です。plugins/全体は消してはいけませんが、この日付付きコピーは消せます。どれも読み戻す処理はありません。
平文保存のリスクをどう抑えるか
トランスクリプトと履歴は保存時に暗号化されません。保護はOSのファイルパーミッションだけです。.envをツールが読んだり、コマンドが認証情報を標準出力に出したりすると、その値はprojects/<project>/<session>.jsonlへそのまま書かれます。
抑える手段は4つあります。
cleanupPeriodDaysを短くして、トランスクリプトを残す期間を縮めるdesktopSessionCleanupPeriodDaysを設定し、Desktop・Coworkの会話にも年齢上限を付けるCLAUDE_CODE_SKIP_PROMPT_HISTORY環境変数で、どのモードでもトランスクリプトとプロンプト履歴の書き込みを止める。非対話モードなら-pと--no-session-persistenceでも止められる。TypeScript版Agent SDKではpersistSession: falseが同じ働きをする(Python SDKに相当するオプションは無い)- 認証情報ファイルの読み取りを権限ルールで拒否する
最後の手段は、トランスクリプトに機密が乗る経路そのものを塞ぎます。.envや認証情報を置いたディレクトリへのReadをpermissions.denyで拒否します。先に秘密情報の置き場所を棚卸ししておくと、拒否ルールを漏れなく書けます。
書き込みを止める設定は、--resumeによるセッション再開を犠牲にします。数日前のセッションへ戻る使い方が日常なら、期間の調整にとどめる選択肢があります。機密性の高いリポジトリを短時間だけ開くなら、書き込み自体を止める選択肢があります。
1プロジェクト分をclaude purgeで消す
v2.1.288でclaude project purgeはclaude purgeに改名されました。以下の出力と手順は旧名のまま、v2.1.287で実行したものです。
プロジェクト単位でまとめて消すなら、旧名ではclaude project purgeです。v2.1.287でclaude project --helpを実行すると、サブコマンドはpurgeだけで、説明は次のとおりでした。
Commands:
help [command] display help for command
purge [options] [path] Delete all Claude Code state for a project
(transcripts, tasks, file history, config entry)claude project purge --helpのオプションは--all、--dry-run、-i, --interactive、-y, --yesの4つです。-hを除くとこれで全部で、位置引数は[path]1つだけです。
purgeの進め方
- 1
ドライランで計画を見る
claude project purge ~/work/my-repo --dry-runは、削除対象と理由を一覧で出します。何も消しません。 - 2
確認して実行する
--dry-runを外して実行します。同じ計画が出て、yと答えたときだけ消えます。パスを省くと、対話的なプロジェクト一覧から選べます。 - 3
残るものを自分で消す
shell-snapshots/とbackups/は対象外です。一時ディレクトリ下の画像やscratchpadも消えません。必要なら手で消します。
消える範囲
削除対象は4種類です。
projects/配下のプロジェクトのトランスクリプトと自動メモリ- セッションごとの
tasks/・debug/・file-history/のエントリ ~/.claude.jsonのプロジェクトエントリ(信頼設定・履歴・MCPサーバー)history.jsonlのうち該当プロジェクトの行
一致する状態が無いパスを渡すと、エラーメッセージを出して終了コード1で終わります。作業用ディレクトリで実際に試した出力です(ユーザー名は~に置き換えています)。
$ claude project purge ./demo --dry-run
No Claude Code project state found for ~/.../demo under ~/.claude.
$ echo $?
1パスと--allの併用も弾かれます。claude project purge . --all --dry-runはCannot specify both a path and --all.を出して、同じく終了コード1でした。
残るもの
purgeが触らないものが3つあります。
shell-snapshots/はプロジェクト単位のデータではないため、計画に「触らない」と注記されます。backups/には削除したはずのプロジェクトの項目が旧版の~/.claude.jsonに残っている可能性があり、計画に注記が出ます。5世代がローテーションで入れ替わるまで続きます。
もう1つは、貼り付けた画像と各セッションのscratchpadです。これらは~/.claudeでなく一時ディレクトリにあるため、purgeでは消えません。画像はcleanupPeriodDaysを過ぎると掃除で消えます。purge済みのセッションのscratchpadは、自分で消すかOSが一時ディレクトリを掃除するまで残ります。scratchpadが作られるのは、claude.aiアカウントでサインインしている(APIキーではない)セッションに限ります。Anthropic APIを使い(Bedrock・Agent Platform・Foundryは除く)、enableArtifactをfalseにしていない場合です。
計画の読み方
計画の各項目には、dir:(ディレクトリごと削除)、config:(~/.claude.json内のエントリ)、filter:(history.jsonlから該当行だけ抜く)のラベルが付きます。理由も1行添えられます。末尾にはDry run: 3 item(s) would be deleted.のように件数が出ます。実行時はDelete 3 item(s) for <path>? This cannot be undone. [y/N]と聞かれます。計画のfilter:行に出るプロンプト件数を見れば、履歴にどれだけ残っていたかも分かります。
一時ディレクトリ側を探す
scratchpadの場所はOSで違います。macOSは/private/tmp/claude-<uid>/<project>/<session-id>/scratchpad/で、Linuxは/tmp/claude-<uid>/から始まる同じ形です。システムが$TMPDIRを設定していれば、Linuxの同じ形はその下に作られます。Windowsは%TEMP%\claude\<project>\<session-id>\scratchpad\です。<project>は作業ディレクトリのパスで、英数字以外の文字をすべて-に置き換えたものです。CLAUDE_CODE_TMPDIRを設定していると、ツリー全体がそのディレクトリの下へ移ります。貼り付けた画像は、セッションごとのimages/として同じ一時ディレクトリの下に置かれます。purge後に消したいときは、そこを探して手で消します。
フラグの使い分け
--yesは確認プロンプトを省きます。スクリプトから呼ぶときに使います。-iは削除計画を1項目ずつ確認します。--allは全プロジェクトを対象にし、history.jsonlは行の絞り込みではなくファイルごと消えます。単一パス指定との違いはここです。
直接消してよいパスと、失うもの
purgeを使わず、個々のパスを消すこともできます。状態ファイルを除けば、新しいセッションは影響を受けません。過去のセッションについて失うものはパスごとに違います。
| 消すパス | 失うもの |
|---|---|
projects/ | 失うもの過去セッションの--resume・--continue・巻き戻し、全プロジェクトの自動メモリ |
history.jsonl | 失うもの上矢印での入力履歴呼び出し、Ctrl+R検索、!シェルコマンド補完 |
paste-cache/ | 失うもの履歴呼び出し内に残る貼り付けテキスト |
uploads/ | 失うもの過去のRemote Controlセッションが参照する添付ファイル |
file-history/ | 失うもの過去セッションのチェックポイント復元 |
tasks/ | 失うもの再開したセッションが拾うはずだったタスクリスト |
stats-cache.json | 失うもの/usageが表示する過去の集計値 |
usage-data/ | 失うもの過去の/insightsレポートと、その生成に使うキャッシュ |
feedback-bundles/・feedback/drafts/ | 失うものまだ送っていないフィードバックとバグ報告 |
skills/.trash/・plugins/.trash/ | 失うものclaude.aiの同期で外れたスキルとプラグインを復元する機会 |
remote-settings.json・policy-limits.json・cache/changelog.md | 失うもの何も失わない。再取得される |
todos/・statsig/・logs/・image-cache/ | 失うもの何も失わない。古いバージョンが使っていた旧ディレクトリ |
debug/・plans/・session-env/・shell-snapshots/・backups/ | 失うものユーザーに見える影響は無い |
~/.claude.json・~/.claude/settings.json・~/.claude/plugins/の3つは消さないでください。認証・個人設定・インストール済みプラグインを保持しているので、消すとログインや設定、プラグインの再構築が必要です。
消したいものから探す
キャッシュをクリアしたい
cache/changelog.md・remote-settings.json・policy-limits.jsonは、消しても再取得されるだけで何も失いません。stats-cache.jsonは消すと/usageの過去の集計値が戻りません。
resumeの履歴を消したい
--resumeの一覧に出るのはprojects/配下のトランスクリプトです。1つのプロジェクトだけならclaude purge <パス>で、全プロジェクトならprojects/を消します。どちらも消した分は--resume・--continueで戻れず、同じプロジェクトの自動メモリ(projects/<project>/memory/)も消えます。
貼り付けた画像を消したい
v2.1.274以前の画像は~/.claude/image-cache/にありました。後のバージョンは一時ディレクトリ下のセッションごとのimages/です。claude purgeでは消えず、cleanupPeriodDaysを過ぎると掃除が消します。すぐ消すなら、そのディレクトリを手で消します。
退職・PC譲渡のとき、どこまで消すか
契約終了者のPCの回収や開発機の引き継ぎでは、状況で消す範囲が変わります。
消す範囲の切り分け
痕跡だけ消したい
そのプロジェクトの痕跡だけ消えていればよい場合です。~/.claude.json・settings.json・plugins/はそのまま残り、次の担当者が使い続けられます。backups/とshell-snapshots/は対象外なので、含めたいなら手で消します。
マシンごと渡す
~/.claudeを丸ごと消し、ホーム直下の~/.claude.json(認証と全プロジェクトの信頼設定・MCPサーバー設定)も消します。claude project purge --allでもshell-snapshots/やbackups/は残ります。一時ディレクトリの画像とscratchpadも別の場所にあります。OS標準のディスク消去に委ねる選択肢もあります。
まとめ
消したいのが1つのプロジェクトならclaude purgeで足り、一時ディレクトリの画像とbackups/の旧版だけ別に確認します。マシンごと渡すなら、~/.claudeと~/.claude.jsonを消します。