Claude Code のセッション履歴の保存場所
Claude Code はセッションごとに 1 つの JSONL ファイルをホーム配下に書き出します:
~/.claude/projects/<プロジェクトディレクトリ>/<セッション ID>.jsonl<セッション ID> は claude --resume に渡す UUID です。一部の CLI バージョンは sessions-index.json も管理しますが、Sessions Viewer はそのインデックスなしで JSONL を走査できます。
プロジェクトディレクトリ名の作られ方
Claude Code は、プロジェクトの絶対パスに含まれる / を先頭のものも含めてすべて - に置き換え、ディレクトリ名を作ります:
/Users/me/apps/blog → -Users-me-apps-blogWindows の区切り文字とドライブのコロンも置換されます(E:\work\blog → E--work-blog)。名前にダッシュを含む場合は逆変換できません。プロジェクトの確認にはフォルダ名だけでなく、レコードの cwd を優先してください。
Claude Code のレコードの形
1 行 1 つの JSON オブジェクトで、type で区別します:
{"type":"user","message":{"role":"user","content":[{"type":"text","text":"..."}]}}
{"type":"assistant","message":{"role":"assistant","content":[{"type":"thinking","thinking":"..."},{"type":"tool_use","name":"Edit","input":{}}]}}会話は message.content の配列に、ブロックとして入っています:
ブロックの type | 内容 |
|---|---|
text | 通常のテキスト |
thinking | 拡張思考(モデルが生成した場合のみ) |
tool_use | ツール呼び出し:name と input オブジェクト |
tool_result | 結果。tool_use_id で呼び出しと対応づく |
image | 貼り付けた画像は source.base64、参照は source.url |
レコードレベルには他の type もあります。セッションをリネームしたときの custom-title などです。
構造化された diff
ファイル編集の tool_result には structuredPatch フィールドが付くことが多く、これはテキストの塊ではなくハンク単位に分解済みの diff です。このフィールドがあるからこそ、編集を本物の diff として描画できます。
Claude Code のセッションをターミナルから読む
ユーザーとアシスタントのテキストを抽出(ツールや画像は含みません):
jq -r 'select(.type=="user" or .type=="assistant")
| .message.content
| if type=="string" then . else .[]? | select(.type=="text") | .text end' \
~/.claude/projects/-Users-me-apps-blog/<セッション ID>.jsonlどのツールを何回呼んだかを集計:
jq -r '.message.content[]? | select(.type=="tool_use") | .name' \
~/.claude/projects/*/*.jsonl | sort | uniq -c | sort -rn特定のファイルに触れたセッションを探す:
grep -l "src/api.ts" ~/.claude/projects/*/*.jsonlセッションを再開するには
Claude Code をインストールし、プロジェクトのディレクトリで claude --resume SESSION_ID を実行します。アプリのターミナルまたは内蔵チャットでも再開できます。続行時には設定したプロバイダへの通信や新しい記録の追記が発生する場合があります。
根拠と制限
実装:Claude Code アダプター。上流:Claude Code ドキュメント。
**対象範囲:**2026-10-05 に Sessions Viewer 0.6.0 のアダプター実装と照合しました。すべての CLI バージョンでの動作を保証するものではありません。シェル例は macOS/Linux のパスを使い、
jq(opencode はsqlite3)が必要です。プレースホルダーと保存先は自分の環境に合わせてください。テキスト抽出はツール、画像、セッションツリーの現在の分岐を完全には再現しません。コマンドの回帰テストにはダウンロード可能な合成データを使い、個人の会話は読みません。能力と検証表で範囲を確認できます。履歴の閲覧と再開・編集の違いはプライバシーとデータの扱いを参照してください。
見つからない場合は確認手順を参照してください。
アプリで開く
手順と手動/GUI の使い分けは Claude Code の検索・保存・再開を参照してください。
Sessions Viewer はこれらのファイルを直接読みます。対応する記録済みの思考、ツールの対応づけ、structuredPatch diff、画像を読みやすく表示します。履歴閲覧は元ファイルを書き換えません。Claude Code を選択すると ⌘⇧F でそのタイトルとユーザープロンプトを横断検索できます。検索と表示の制限を確認してください。Codex、Grok Build、Kimi Code、Pi、Antigravity CLI、opencode にも対応しています。
