I’ve been using Claude Code heavily over the past few months and one thing that kept bugging me was how hard it is to find and resume old conversations. The built-in --resume picker works but it’s minimal — no filtering, no metadata at a glance, and no way to search across projects.
So I built cctv — a terminal UI for browsing and resuming Claude Code conversations from the local filesystem.
Why bother resuming?
Claude Code conversations accumulate context as you work — files discussed, decisions made, bugs investigated. Starting fresh throws all of that away. Resuming a session means:
- No re-explaining — Claude already knows your codebase, what you tried, and what’s left
- Cheaper — resumed sessions carry their prompt cache forward, so Claude doesn’t re-read everything from scratch
- Better coherence — pick up hours or days later and the conversation still knows what was agreed
What it does
cctv reads Claude Code’s local storage (~/.claude/) and presents all your sessions in a searchable, filterable list. Each session shows its summary, project, git branch, linked PRs, message count, and when it was last active. Running sessions are highlighted.
Pressing Enter on a session launches claude --resume — cctv suspends, Claude takes over the terminal, and when you’re done cctv comes back. You can also pop open a stats view showing token usage and cache hit rates, or drill into the detail view for prompt history and model info.
Filtering
The filter bar supports regex and field-specific prefixes:
project:kubevirt$ # exact project name
branch:^feature/ # branches starting with feature/
pr:enhancements#242 # by PR repo or number
project:backend branch:main # multiple terms ANDed
There’s also a non-interactive cctv list command with --json output for scripting, and all the same filter flags (--project, --branch, --pr, --cwd, --pwd).
Stack
It’s written in Go using the Charm libraries — Bubble Tea for the TUI, Lip Gloss for styling, and Cobra for the CLI. Tests use Ginkgo.
Source and installation instructions at github.com/lyarwood/cctv.
This was built around my own workflow so I’ve almost certainly missed use cases. If you have ideas for new filters, views, or features — or if you spot something that doesn’t work with your Claude Code setup — issues and PRs are very welcome.