🎉

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

https://github.com/wondercoms/claude-logs

Claude Codeのセッションログ(~/.claude/projects/)をインタラクティブに閲覧するツールです。

主な機能:

  • プロジェクト → セッションの2段階選択
  • セッションのプレビュー表示
  • リアルタイムでログを監視(tailコマンド)
  • Claude Codeの実行状態を確認

codex-logs

https://github.com/wondercoms/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を日常的に使っているなら、セッションログの閲覧ツールがあると便利です。

シェルスクリプト1ファイルなので、気軽に試してみてください。IssueやPRも歓迎です!

参考

Discussion