Claude Code セッションの JSONL ファイルの場所を探すには?
すべてのセッションファイルは ~/.claude/projects/ という固定ディレクトリにあります。sessionId が分かれば数秒で特定できますし、分からなくても内容や時刻から逆引きできます。
まずディレクトリ命名規則を理解する
~/.claude/projects/ の各サブディレクトリは 1 つのプロジェクト(作業ディレクトリ)に対応します。ディレクトリ名はプロジェクトパスから変換されます:/、_ などの英数字以外の文字がすべてハイフン - に置き換えられるのです。例:
プロジェクトパス セッションディレクトリ
/Users/you/Documents/my_app → -Users-you-Documents-my-app
/home/you/projects/shop-api → -home-you-projects-shop-api
1 セッション = 1 ファイル:<sessionId>.jsonl(9a1b2c3d-… のような UUID)。
ケース 1:sessionId が分かる — find で一発
find ~/.claude/projects -name "<sessionId>.jsonl"
sessionId はどこで手に入る? 最も簡単なのは会話中にスラッシュコマンド /status を入力すること — 出力に現在の Session ID が含まれます。ほかに claude --resume のセッション一覧、エラーメッセージ、ビューアのサイドバーの「Session ID」欄でも確認できます。
ケース 2:sessionId が分からない — 内容で逆引き
会話の内容(当時の質問など)を覚えていれば、grep します:
# 全セッションからキーワードを検索し、一致したファイルを一覧
grep -l "ログイン画面の修正" ~/.claude/projects/*/*.jsonl
# 特定プロジェクトのディレクトリのみ検索
grep -l "ログイン画面の修正" ~/.claude/projects/-Users-you-Documents-my-app/*.jsonl
ケース 3:時刻で最近のセッションを探す
# 最近更新されたセッションファイル 10 件を一覧
ls -t ~/.claude/projects/*/*.jsonl | head -10
グラフィカルな方法:CCViewer に任せる
コマンドを打ちたくない? CCViewer なら ~/.claude/projects/ フォルダ全体を選択(またはドロップ)できます。すべての .jsonl を再帰的にスキャンし、プロジェクト別にグループ化、時刻でソートし、各セッションのタイトル・パス・時間範囲・メッセージ数・コストを表示 — ファイルの場所を知らなくてもクリックで開けます。
macOS のコツ:隠しフォルダを開く
- Finder で ⌘⇧G を押し、
~/.claude/projectsと入力して Enter; - ファイルダイアログでは ⌘⇧. で隠しフォルダを表示(
.始まりのディレクトリはデフォルトで非表示)。
CCViewer で Claude Code セッションをビジュアルに再生
ページを開いて
ページを開いて
.jsonl ファイル(または ~/.claude/projects/ フォルダ全体)をドロップするだけ。Markdown レンダリング、思考ブロック、ツール呼び出し、トークン・コスト統計まで、すべてブラウザ内のローカル処理で、データは送信されません。
よくある質問
~/.claude ディレクトリが見つかりません。なぜ?
ドットで始まるためデフォルトで隠されています。Finder で ⌘⇧G からパスを入力するか、⌘⇧. で隠しファイルを表示してください。端末では ls -la ~/.claude で常に見えます。
プロジェクトのディレクトリに jsonl が大量にあります。どれが目的のファイル?
1 ファイル = 1 セッションです。更新時刻(ls -t)や内容(grep -l)で絞り込むのが最も効果的。CCViewer でフォルダ全体を取り込めば各セッションのタイトルと統計が表示され、一目で判別できます。
Windows でのパスは?
ユーザープロファイル配下に同じ構造があります:%USERPROFILE%\\.claude\\projects\\<project>\\<sessionId>.jsonl。