1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeの会話記録は ~/.claude/projects/ に平文で30日残る:保存期間の変え方と消し方

1
Last updated at Posted at 2026-10-15

結論

  • 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 with cleanupPeriodDays.

/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 .env file or a command prints a credential, that value is written to projects/<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. 鍵を貼ってしまったかもしれないとき(筆者の提案)

ここからは公式の手順ではなく、筆者の運用上の提案です。

  1. まず鍵を再発行(ローテーション)します。 ファイルを消しても、すでに漏れた可能性までは消せないためです。
  2. 自分の記録に鍵の形の文字列があるか、ファイル名だけを出して確認します。値を画面に出さないよう -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
    
    パターンは代表例です。すべての鍵を見つけられるわけではありません。
  3. 必要なら 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)で発信しています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?