Live, as you type
ripgrep narrows thousands of transcripts to candidates in milliseconds; only those get parsed for clean, highlighted snippets.
claude-grep searches your entire Claude Code history. Type a phrase, watch every past session where it came up stream in, and resume the right one with a single keypress. grep + fzf for everything Claude Code has ever told you.
You know you solved this exact thing a few weeks ago — in some Claude Code conversation, somewhere. But claude --resume only matches a session's title, never what was actually said inside. And history is fragmented per directory, so every pwd shows a different partial list. The fix you need is right there on disk, and completely unfindable. claude-grep reads those JSONL transcripts directly and makes all of it searchable — in milliseconds, with no index.
Live full-transcript search across every project and one-keypress resume — then branch any conversation or move it between coding agents, all without leaving the UI.
ripgrep narrows thousands of transcripts to candidates in milliseconds; only those get parsed for clean, highlighted snippets.
Your prompts, Claude's replies, and tool output — even matches buried inside a shell command surface via a raw fallback.
Press Ctrl-U to match only what you typed — AI responses and tool output drop out of the results. Perfect when you remember your own phrasing but it echoes through a dozen replies. Or start with ccfind --user-only.
Enter cds into the project and runs claude --resume on the exact session. You're back where you left off.
Sub-agent transcripts aren't resumable, so claude-grep resolves them to their parent session — even across deleted worktrees.
Press Ctrl-B instead of Enter to fork a session from any past message into a new one — like git checkout from a commit, but for AI chats. The original thread stays untouched.
Press Ctrl-X on any OpenCode or Hermes session to convert it into a fresh, resumable Claude Code transcript — tool calls, reasoning, text and inline images carried over, with forkedFrom provenance. Move work between coding agents instead of starting over.
Nothing runs in the background and there's nothing to rebuild. It reads the JSONL files Claude Code already writes.
One row per resumable conversation, most recent on top, capped so it stays instant no matter how much history you have.
If you also use OpenCode or Hermes, ccfind searches their conversation history alongside Claude Code's — auto-detected, tagged per source, and routed to the right agent's resume command on Enter. Install once, search everything.
JSONL transcripts under ~/.claude/projects/. Sub-agents auto-resolve to their resumable parent.
Sessions under ~/.hermes/sessions/ and per-profile dirs. Resumes via hermes --resume.
SQLite database at ~/.local/share/opencode/opencode.db. Resumes via opencode --session.
ccfind command, and type any phrase. It runs a live search across every transcript in ~/.claude/projects/ and lets you resume the matching session with Enter.claude --resume only matches the session title or first prompt; claude-grep searches the entire transcript body across all of your projects.~/.claude/projects/<project>/<session-id>.jsonl. Sub-agent sessions live in a subagents/ subfolder. claude-grep reads these files directly — no export or setup needed.Ctrl-X on any OpenCode or Hermes result and claude-grep converts that conversation into a fresh, resumable Claude Code transcript — tool calls, reasoning, text, and inline images included — then resumes it. The new session records forkedFrom provenance pointing back at the source.Ctrl-B instead of Enter on any row to fork that session from any past message into a new conversation — like git checkout from a commit, but for AI chats. The original thread is left untouched.fzf (≥ 0.38), ripgrep, Python 3.8+, and the claude CLI on your PATH. On macOS: brew install fzf ripgrep.