AI CLIのセッションログを快適に閲覧するツールを作った(Claude Code / Codex CLI対応)
はじめに
Claude CodeやOpenAI Codex CLIを使っていると、過去のセッションを振り返りたいことがあります。
「あのとき何を聞いたっけ?」「どうやって解決したんだっけ?」
しかし、ログファイルは深いディレクトリ階層に保存されていて、手動で探すのは面倒です。そこで、fzfを使ってインタラクティブにセッションログを閲覧できるCLIツールを作りました。
- claude-logs - Claude Code用
- codex-logs - OpenAI Codex CLI用
どちらもシェルスクリプト1ファイルで、依存関係はfzfとjqだけです。
ツールの概要
claude-logs
Claude Codeのセッションログ(~/.claude/projects/)をインタラクティブに閲覧するツールです。
主な機能:
- プロジェクト → セッションの2段階選択
- セッションのプレビュー表示
- リアルタイムでログを監視(
tailコマンド) - Claude Codeの実行状態を確認
codex-logs
OpenAI Codex CLIのセッションログ(~/.codex/sessions/)をインタラクティブに閲覧するツールです。
主な機能:
- 月 → セッションの2段階選択
- プロジェクトパスとGitブランチの表示
- リアルタイムでログを監視
- Codex CLIの実行状態を確認
なぜ作ったのか
Claude Codeのログ構造
Claude Codeは~/.claude/projects/<project-hash>/にJSONL形式でログを保存します。
~/.claude/projects/
├── -Users-project-a/
│ ├── 1234567890.jsonl
│ └── 1234567891.jsonl
├── -Users-project-b/
│ └── ...
Codex CLIのログ構造
Codex CLIは~/.codex/sessions/YYYY/MM/DD/という日付ベースのディレクトリにJSONL形式で保存します。
~/.codex/sessions/
├── 2025/
│ ├── 12/
│ │ ├── 17/
│ │ │ ├── rollout-xxx.jsonl
│ │ │ └── rollout-yyy.jsonl
│ │ └── 18/
│ │ └── ...
どちらも手動で探すのは大変です。特にCodex CLIは日付で階層化されているため、「先週のあのセッション」を探すのが面倒でした。
インストール
依存関係
brew install fzf jq
claude-logs
git clone https://github.com/wondercoms/claude-logs.git
chmod +x claude-logs/claude-logs
cp claude-logs/claude-logs ~/.local/bin/
codex-logs
git clone https://github.com/wondercoms/codex-logs.git
chmod +x codex-logs/codex-logs
cp codex-logs/codex-logs ~/.local/bin/
使い方
基本的な使い方(インタラクティブモード)
# Claude Codeのログを閲覧
claude-logs
# Codex CLIのログを閲覧
codex-logs
fzfが起動し、プロジェクト(または月)を選択 → セッションを選択という流れで閲覧できます。
コマンド一覧
両ツールとも同じコマンド体系です:
| コマンド | 説明 |
|---|---|
(引数なし) |
インタラクティブモード(fzfで選択) |
list |
プロジェクト/月の一覧を表示 |
latest |
最新のセッションを表示 |
tail |
最新セッションをリアルタイム監視 |
status |
CLIの実行状態と最近のセッションを表示 |
help |
ヘルプを表示 |
実行例
インタラクティブモード
$ claude-logs
# → fzfでプロジェクトを選択
# → fzfでセッションを選択
# → ログが整形されて表示される
ステータス確認
$ claude-logs status
Claude Code is running (PID: 12345)
Recent sessions:
2025-12-18 15:30 - project-a
2025-12-18 14:00 - project-b
2025-12-17 10:00 - project-c
リアルタイム監視
$ claude-logs tail
# → プロジェクトを選択
# → 最新セッションをtail -fで監視(Ctrl+Cで終了)
出力フォーマット
JSONLのログは、以下のように整形されて表示されます:
━━━━━━━━━━ USER ━━━━━━━━━━
このファイルのバグを直して
━━━━━━━━━━ CLAUDE ━━━━━━━━━━
バグを確認しました。修正します。
🔧 [Tool: Edit file]
codex-logsでは、セッション情報としてプロジェクトパスとGitブランチも表示されます:
=== rollout-xxx.jsonl ===
Project: /Users/hiroshi/my-project | Branch: main
技術的な詳細
fzfのプレビュー機能
fzfの--previewオプションを活用して、選択中のセッションのプレビューを表示しています。
fzf --preview 'head -20 {} | jq -r "..."'
これにより、セッションを開く前に内容を確認できます。
JSONLのパース
Claude CodeとCodex CLIはどちらもJSONL形式でログを保存しています。jqを使ってメッセージを抽出し、ANSIカラーで整形しています。
jq -r '
if .type == "user" then
"\n━━━━━━━━━━ USER ━━━━━━━━━━\n" + .message.content
elif .type == "assistant" then
"\n━━━━━━━━━━ CLAUDE ━━━━━━━━━━\n" + .message.content
else empty end
'
macOS依存
現在、ファイルのタイムスタンプ取得にstat -f(macOS形式)を使用しているため、macOS専用です。
ユースケース
1. 過去の解決方法を参照する
「あのバグ、どうやって直したっけ?」というときに、過去のセッションを検索して参照できます。
2. プロンプトの再利用
うまくいったプロンプトを見つけて、別のプロジェクトで再利用する。
3. 作業の振り返り
1日の終わりに、その日のセッションを振り返って作業内容を確認する。
4. デバッグ
AI CLIが期待通りに動かないとき、ログを確認して原因を調査する。
まとめ
Claude CodeやCodex CLIを日常的に使っているなら、セッションログの閲覧ツールがあると便利です。
- claude-logs: https://github.com/wondercoms/claude-logs
- codex-logs: https://github.com/wondercoms/codex-logs
シェルスクリプト1ファイルなので、気軽に試してみてください。IssueやPRも歓迎です!
Discussion