結論
- Claude Code は、会話の記録(トランスクリプト)を手元のPCの
~/.claude/projects/に平文で保存します。既定では30日残ります(公式 Data usage)。 - 記録には、メッセージだけでなくツールの呼び出しとその結果も入ります。ツールが
.envを読んだり、コマンドが認証情報を表示したりすると、その値もファイルに書き込まれます(公式 "Plaintext storage")。 - 保存期間は settings.json の
cleanupPeriodDaysで変えられます。最小は1で、0はエラーになります。 - 出典(2026-10-16 時点で確認):
1. どこに、何が残るのか
公式の "Data retention" には、次のように書かれています。
Claude Code clients store session transcripts locally in plaintext under
~/.claude/projects/for 30 days by default to enable session resumption. Adjust the period withcleanupPeriodDays.
/resume などで前の会話を再開するための仕組みです。公式の "Explore the .claude directory" によると、主な中身は次のとおりです。
~/.claude/ 以下のパス |
中身(公式の説明の要約) |
|---|---|
projects/<project>/<session>.jsonl |
会話の全記録。すべてのメッセージ、ツール呼び出し、ツールの結果 |
projects/<project>/<session>/subagents/ |
サブエージェントの会話記録 |
projects/<project>/<session>/tool-results/ |
大きなツール出力を別ファイルにしたもの |
file-history/<session>/ |
Claude が変更したファイルの、変更前のスナップショット |
paste-cache/ |
大きな貼り付けの内容 |
さらに ~/.claude/history.jsonl には、入力したプロンプトがすべて、日時とプロジェクトのパス付きで残ります(上矢印での呼び出しや Ctrl+R 検索に使われます)。公式では、この中の古い行が期間で消されるのは HIPAA 構成のときだけと書かれています。
2. 「平文」とはどういう意味か
公式の "Plaintext storage" の記述です。
Transcripts and history are not encrypted at rest. OS file permissions are the only protection. If a tool reads a
.envfile or a command prints a credential, that value is written toprojects/<project>/<session>.jsonl.
つまり、守りはOSのファイル権限だけです。チャットにAPIキーを貼ったり、Claude に .env を読ませたりすると、その値は30日間(既定)手元にファイルとして残ります。
筆者の補足(推測を含みます): PCのバックアップや同期ツールが
~/.claude/を対象にしていると、記録がほかの場所にもコピーされる可能性があります。お使いのツールの対象フォルダを確認してください。
3. 保存期間を短くする(cleanupPeriodDays)
公式の settings reference の例です。~/.claude/settings.json などに書きます(どの設定ファイルでも有効)。
{
"cleanupPeriodDays": 7
}
公式に書かれている仕様:
- 単位は日。整数で、最小
1、既定30。 -
0は検証エラーになります。記録そのものを止めたい場合は、下の「4.」を使います。 - 削除は、セッション開始後にバックグラウンドで行われ、メッセージは出ません。期間を過ぎた会話は
/resumeの一覧から消えます。 - Claude Desktop や Cowork で始めた(または最後に続けた)セッションの記録は、既定では期間に関係なく残ります。期限をつけるには
desktopSessionCleanupPeriodDays(v2.1.248 以降、ユーザー設定または管理設定)を使います。
7 という値は例です。何日にするかは、「前の会話をどれくらい再開したいか」との兼ね合いで決めてください(筆者の提案)。
4. 記録を残さない・減らす方法(公式に書かれているもの)
- 環境変数
CLAUDE_CODE_SKIP_PROMPT_HISTORY=1を設定すると、プロンプト履歴と会話記録をディスクに書きません。その代わり、そのセッションは--resumeや--continue、上矢印の履歴に出てきません。 -
-p(非対話モード)なら、--no-session-persistenceを付ける方法もあります。 - そもそも認証情報のファイルを読ませないよう、permission rules で deny します。書き方はこちらの記事にまとめました: Claude Codeに.envを読ませない設定は settings.json の permissions.deny に書く
5. すでに残っている記録を消す
公式には claude purge というコマンドがあり、1つのプロジェクト分の記録などを消せます。まずは --dry-run で、何が消えるかを確認できます。
claude purge ~/work/my-repo --dry-run
公式によると、削除の前に計画をすべて表示し、確認を求めます(v2.1.288 より前は claude project purge)。
6. 鍵を貼ってしまったかもしれないとき(筆者の提案)
ここからは公式の手順ではなく、筆者の運用上の提案です。
- まず鍵を再発行(ローテーション)します。 ファイルを消しても、すでに漏れた可能性までは消せないためです。
- 自分の記録に鍵の形の文字列があるか、ファイル名だけを出して確認します。値を画面に出さないよう
-lを付けます。パターンは代表例です。すべての鍵を見つけられるわけではありません。grep -rlE 'sk-[A-Za-z0-9_-]{20,}|AKIA[0-9A-Z]{16}|ghp_[A-Za-z0-9]{36}' ~/.claude/projects/ ~/.claude/history.jsonl - 必要なら
claude purgeで該当プロジェクトの記録を消し、cleanupPeriodDaysを短くします。
7. まとめ
- 会話記録は
~/.claude/projects/に平文で、既定30日残る(公式)。 -
.envの中身や表示された認証情報も、そのまま記録に入る(公式)。 - 期間は
cleanupPeriodDays、記録を止めるならCLAUDE_CODE_SKIP_PROMPT_HISTORY=1、消すならclaude purge(公式)。 - 貼ってしまった鍵は、まず再発行(筆者の提案)。
関連記事: AIエージェントに.envを読まれていないか、ファイル名だけで点検する日本語CLIを作った
※ 本記事の仕様は、2026-10-16 時点の公式ドキュメントに基づきます。筆者の環境での実機確認はしていません。
更新情報やちょっとしたTipsは X(@supportapp3_lab)で発信しています。