cchb 0.9.4

A TUI tool for browsing and restoring past Claude Code session history
Documentation

cchb - Claude Code History Browser

A fast TUI tool for browsing and resuming past Claude Code sessions.

License Release CI

[!NOTE] This is not an official Anthropic product. It is a community-built tool that reads Claude Code's local session data. Claude Code updates may change the internal data format or file layout, which could affect this tool's behavior. If you encounter issues after a Claude Code update, please check for a new release or open an issue.

Why cchb?

Claude Code keeps every session as a JSONL file under ~/.claude/projects/. They pile up fast — across branches, across repos — and the only built-in way to revisit one is to remember the right claude --resume <id>.

cchb gives those sessions a home:

  • Find the session you want by content, project, branch, or date.
  • Read it inline with proper Markdown rendering — no cat-ing JSONL.
  • Resume it in one keystroke, straight back into Claude Code.

It is a single static binary, opens instantly, and stays out of your way.

Highlights

Browse

  • Cross-project session list — every session under ~/.claude/projects/, sorted by last modified.
  • Live preview — moving the cursor loads the conversation in the right panel; no extra keystroke.
  • Project / branch / first-prompt at a glance in the list.

Search & filter

  • Fuzzy search over conversation content with in-view match highlighting and n / N to jump between hits — across sessions, not just within one.
  • Date range filter with arrow-key date stepping (no manual typing required).

Read

  • Markdown rendering for headings, code blocks, tables, lists, links, and inline emphasis.
  • Mouse text selection with auto-copy to clipboard on release; y works too.

Resume

  • Enter exits the TUI and runs claude --resume <session-id> via exec — the session reopens in the same terminal as if you had typed it.

Performance

  • Reads sessions-index.json (Claude Code's own metadata index) when available, falls back to a parallel JSONL scan, and lazy-loads conversations behind an LRU cache. See ADR-0002.

Installation

Quick install

curl -fsSL https://raw.githubusercontent.com/iselegant/cchb/main/install.sh | sh

This auto-detects your OS and architecture, downloads the latest binary, and places it in ~/.local/bin/.

Homebrew (macOS)

brew install iselegant/tap/cchb

Or tap once and reuse the short name:

brew tap iselegant/tap
brew install cchb

mise

mise use -g github:iselegant/cchb

This uses mise's github backend to install the latest release binary.

Cargo — coming soon

cargo install cchb

Manual download

Download a pre-built binary from GitHub Releases and place it in your $PATH.

Platform Binary
macOS (Apple Silicon) cchb-aarch64-apple-darwin.tar.gz
macOS (Intel) cchb-x86_64-apple-darwin.tar.gz
Linux (x86_64) cchb-x86_64-unknown-linux-gnu.tar.gz

Build from source

cargo build --release
cp target/release/cchb /usr/local/bin/

Requires Rust 2024 edition (1.85+).

Usage

cchb

Quick tour

  1. cchb — TUI opens with the most recent session selected and previewed.
  2. f — fuzzy search across all sessions; type, then Enter to keep the filter.
  3. n / N — jump to the next / previous match, crossing session boundaries.
  4. Enter — resume the highlighted session in Claude Code.
  5. ? — full keybinding reference.

CLI Flags

Flag Action
--version, -v Print version and exit

Keybindings

Session list (Normal mode)

Key Action
j / k Move down / up
g / G Jump to top / bottom
Right / Left Next / previous page
Ctrl+d / Ctrl+u Half-page down / up
Enter Resume selected session in Claude Code
l Reload conversation
f Fuzzy search
d Date range filter
c Clear all filters
R Reload session list
Tab Switch panel focus
h / ? Help
Esc / q Quit

Conversation viewer (Viewing mode)

Key Action
j / k Scroll down / up
g / G Scroll to top / bottom
Ctrl+d / Ctrl+u Half-page down / up
[ / ] Previous / next session
n / N Next / previous search match
c Clear all filters
f Search
d Date range filter
Enter Resume selected session
Tab Switch panel focus
h / ? Help
Esc / q Back to list

UI Layout

┌─ cchb - Claude Code History Browser ─────────────┐
├──────────────────┬───────────────────────────────┤
│ Sessions (35%)   │ Conversation (65%)            │
│                  │                               │
│ > project-a      │ │ You:                        │
│   (main)         │ │   Run terraform plan        │
│   2026-04-08     │ └─                            │
│   "terraform..." │                               │
│                  │ │ Claude:                     │
│   project-b      │ │   Here are the results...   │
│   (feature/x)    │ └─                            │
│   2026-04-07     │                               │
│   "API design.." │                               │
├──────────────────┴───────────────────────────────┤
│ 42 sessions        f:search d:date h:help q:quit │
└──────────────────────────────────────────────────┘

Architecture

cchb is built on ratatui + crossterm, with nucleo for fuzzy matching and pulldown-cmark for Markdown rendering.

For the data format, module layout, and design rationale see:

Acknowledgments

cchb stands on the shoulders of ccresume by @sasazame.

ccresume was the first tool I am aware of to recognize that Claude Code's local session files deserved a real browser, and it shaped how I think this category of tool should feel — fast, keyboard-first, and respectful of the terminal. cchb is a Rust-based reimagining in the same spirit, with a few additional features (Markdown rendering, cross-session search navigation, mouse selection, etc.). If you are on the Node.js side of the fence, please go check out ccresume — it is excellent, and a lot of cchb's UX exists because ccresume showed the way.

Contributing

Bug reports and PRs are welcome. Before opening a PR, please:

  • Read CLAUDE.md — this project follows TDD strictly.
  • Run cargo test, cargo clippy, and cargo fmt --check.
  • For non-trivial changes, add or update an ADR.

License

Apache-2.0 © iselegant