Claude Code のトランスクリプトはいつ消えるか:cleanupPeriodDays の既定値と保持期間の変え方
Claude Code が ~/.claude に平文で保存する会話トランスクリプトの保持期間を決める cleanupPeriodDays の既定値(30 日)、最小値、削除対象と対象外、そもそも書き込ませない方法を公式ドキュメントに沿って解説します。
Claude Code は、会話のすべて(メッセージ、ツール呼び出し、ツールの結果)を ~/.claude/projects/<project>/<session>.jsonl に 平文 で保存します。ツールが .env を読めばその中身が、コマンドがトークンを出力すればその値が、そのままファイルに残ります。
結論として、保持期間は settings.json の cleanupPeriodDays で決まり、既定は 30 日です。短くすれば露出を減らせ、書き込み自体を止める手段もあります。
KEY POINT
この記事で分かること
cleanupPeriodDaysの既定値・最小値と、0 が使えない理由- 自動削除の対象になるファイルと、ならないファイル
- トランスクリプトをそもそも書かせない方法と、1 プロジェクト分をまとめて消すコマンド
cleanupPeriodDays の仕様
| 項目 | 値 |
|---|---|
| 既定値 | 30(日) |
| 型 | 整数、最小 1 |
0 を設定 | バリデーションエラーになる |
| 書ける場所 | すべての settings ファイル(最も優先度の高い層の値が使われる) |
| 実行タイミング | セッション開始後のバックグラウンドスイープ |
{
"cleanupPeriodDays": 7
}
「削除しない」設定は存在しません。長期保持したい場合は 3650 のような大きな値を設定します。
用語解説
保持スイープ: セッション開始後にバックグラウンドで走る削除処理です。設定ファイルが読めない、パースできないなど保持期間を安全に判断できない場合はスイープ自体が止まり、cleanupPeriodDays を明示している設定にエラーがあるときは /status に警告が出ます。管理設定が cleanupPeriodDays を配布している場合は、その値で必ず実行されます。
削除されるもの・されないもの
cleanupPeriodDays より古くなると削除される主なパスは次のとおりです。
~/.claude/ 配下 | 内容 |
|---|---|
projects/<project>/<session>.jsonl | 会話の全トランスクリプト |
projects/<project>/<session>/subagents/ | サブエージェントのトランスクリプト(親と一緒に削除) |
feedback/drafts/ | /feedback 用の下書き(cleanupPeriodDays か 30 日の短い方) |
todos/, statsig/, logs/ | 旧バージョンのディレクトリ。中身を消して空ディレクトリも削除 |
一方、次のものは対象外です。
history.jsonl: 入力したプロンプトの履歴。上矢印やCtrl+Rの検索に使われ、自分で消すまで残る- auto memory:
projects/<project>/memory/は削除されない。保持期間の間ずっと空だった場合だけディレクトリが消える - Claude Desktop / Cowork のセッション: 既定では年齢に関係なく保持。
desktopSessionCleanupPeriodDaysで上限を付けられる(v2.1.248 以降) stats-cache.json:/usageに表示する集計
desktopSessionCleanupPeriodDays は「この値と cleanupPeriodDays の両方より古い」ときに削除するため、cleanupPeriodDays が既定の 30 のままなら 7 を指定しても 30 日残ります。
そもそも書き込ませない
保持期間を短くするだけでなく、記録自体を止める手段が用意されています。
CLAUDE_CODE_SKIP_PROMPT_HISTORY=1 claude
.claude ディレクトリのページでは、この環境変数はどのモードでもトランスクリプトとプロンプト履歴の書き込みをスキップすると説明されています(環境変数ページの説明は「プロンプト履歴のディスクからの読み込みを無効化」となっており、記述に差があります)。非対話モードでは代わりに -p に --no-session-persistence を付ける方法もあります。
さらに、-p に --bare を付けた bare モードでは、そのセッションではスイープ自体が実行されません。
認証情報は最初から読ませない
保持期間を短くしても、削除されるまでの間はディスク上に平文で残ります。.env や鍵ファイルは、そもそも Claude に読ませない deny 設定を先に入れてください。設定例は Claude Code で .env を読ませない deny 設定 にあります。
1 プロジェクト分をまとめて消す
claude project purge を実行すると、Claude Code がそのプロジェクトについて保持している状態をまとめて削除できます。学習へのデータ利用の話は別の論点で、入力したコードは学習に使われるのか で整理しています。auto memory の扱いは auto memory を無効にする設定 を参照してください。
まとめ
- トランスクリプトは
~/.claude/projects/に平文で保存され、cleanupPeriodDays(既定 30 日、最小 1)を過ぎると削除される 0は設定できない。長期保持は3650のような大きな値でhistory.jsonl、auto memory、Desktop/Cowork のセッションはスイープの対象外(Desktop は別キーで上限を付ける)- 書き込み自体を止めるなら
CLAUDE_CODE_SKIP_PROMPT_HISTORY=1、非対話なら--no-session-persistence - 認証情報は deny 設定で最初から読ませない。
claude project purgeで 1 プロジェクト分を削除できる
よくある質問
- cleanupPeriodDays を 0 にすれば永久に保持できますか?
- いいえ。0 はバリデーションエラーになります。長く残したいなら 3650 のような大きな値を設定します。最小値は 1 です。
- トランスクリプトは暗号化されていますか?
- されていません。OS のファイル権限だけが保護です。ツールが読んだ .env の内容やコマンドが出力した認証情報もそのまま記録されます。
- 削除はいつ実行されますか?
- セッション開始後にバックグラウンドで実行されます。保持期間を安全に判断できない設定エラーがあると、スイープは一時停止します。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合は お問い合わせからお知らせください。