Claude Code
Claude Codeはすべての会話をローカルのJSONLファイルに保存しています。ここにファイルをドロップすれば、メッセージ、普段は見えにくい思考ブロック、適用したdiff、進めていたTodo、実行した全コマンドの出力を、会話の流れに沿って読めます。
セッションファイルをここにドロップ
CodexまたはClaude Codeの.jsonl(.gzにも対応)。クリックして選択することもできます
Codex: ~/.codex/sessions/ Claude Code: ~/.claude/projects/
ファイルはブラウザ内で解析されます。共有リンクを作成しない限り、アップロードされません。
この問題をきっかけに履歴を探す人は少なくありません。ターミナルのスクロールバックが消えた、/resumeに目的の会話がない、コンテキストが圧縮された。それでも、会話記録自体はディスクに残っています。Claude Codeはセッションごとに1つのJSONLファイルを作成し、自動では削除しません。
セッションはプロジェクト別に保存されます。各プロジェクトのフォルダ名には作業ディレクトリのパスが使われ、スラッシュはハイフンに変換されます。たとえば/Users/me/dev/myappは-Users-me-dev-myappになります。
~/.claude/projects/<project-slug>/<session-uuid>.jsonl # 全プロジェクトから直近の会話を表示: ls -t ~/.claude/projects/*/*.jsonl | head -5 # 会話内で話した内容を手掛かりに全履歴を検索: grep -rl "the thing you remember" ~/.claude/projects/
生のファイルは1行に1つのJSONオブジェクトが並び、ツール呼び出しと実行結果が別々に記録されています。さらに、実行環境が挿入した大量の情報もメッセージに混在します。SessionViewerは、実際に読みたい内容をそれらから切り分けます。
Edit、MultiEdit、Write)を色付きのdiffとして表示。old_stringやnew_stringが並ぶJSONを読む必要はありません。TodoWrite)をチェックリストとして表示し、完了済みの項目もひと目で分かります。多くのClaude Code履歴ツールは、デスクトップアプリ、VS Code拡張機能、CLIなど、ローカル利用が前提です。自分で確認するには便利でも、同僚に経緯を見せる用途には向きません。共有リンクを作成を押せば、相手が何もインストールせずに開けるURLを発行できます。リンクは一覧にも検索インデックスにも載らないランダムな文字列で、削除用コマンドも同時に発行されます。
自分でファイルを探し回る必要はありません。現在のセッションでClaude Codeに依頼すれば、会話記録の保存先、サイズを減らす方法、アップロード手順をまとめた説明ファイルを読み、共有リンクを返してくれます。
この会話を https://sessionviewer.cc にアップロードして、 閲覧用リンクを返してください。先に https://sessionviewer.cc/llms.txt を読んでください。
~/.claude/projects/<project-slug>/<session-uuid>.jsonlに保存されます。project slugは、作業ディレクトリの区切り文字をハイフンに置き換えたものです(/Users/me/dev/app → -Users-me-dev-app)。1セッションにつき1つのJSONLファイルが作成されます。
ほとんどの場合は復元できます。ターミナルのスクロールバックが消えたり、コンテキストが圧縮されたりしても、~/.claude/projects/内のJSONLファイルは削除されません。ls -t ~/.claude/projects/*/*.jsonl | head -5でファイルを探し、ここで開けば会話全体を確認できます。
はい。思考ブロックは会話記録に完全な形で書き込まれ、ビューアでも表示できます。通常は読解の邪魔にならないよう折りたたまれています。ターミナルではなく記録ファイルを読む大きな利点の一つです。
いいえ。解析はすべてブラウザ内で行われます。アップロードされるのは「共有リンクを作成」を押した場合だけで、いつでも削除できるコマンドも発行されます。
はい。同じビューアがCodexのrolloutファイルも自動判別します。どちらの形式でも、そのままドロップして開けます。
共有リンクにはランダムな文字列を使用し、一覧表示や検索エンジンへの登録は行いません。アップロード時に、いつでも実行できる削除コマンドが発行されます。