How to search Claude Code and Codex conversation history
The session id is rarely what you remember. Start with the project, prompt, or one phrase from an answer, then search the layer that can actually contain it.
In Crowsnest, press / to search conversation titles, opening prompts, projects, and ids. Press ⌘K or Ctrl+K to search every message across Claude Code and Codex. Combine either mode with a selected folder when you know the project, or search the whole library when you only remember a phrase.
Search for what you remember, not for how the runtime stored it.
Conversation stores are optimized for continuity, not human recall. Claude Code saves sessions under project-derived directories; Codex exposes threads through app-server. Neither native identifier helps when your memory is “the answer that explained our stale cache header.”
A useful conversation search therefore starts from four kinds of memory: where the task ran, what you first asked, a phrase written later, or roughly when it happened. It should not require you to know a JSONL filename, thread id, or provider before you begin.
Card-level memory
Project, title, first prompt, provider, date, or session id. This evidence is already available without opening every transcript.
Turn-level memory
A sentence from an answer, command, error, or follow-up. Finding it requires searching the messages inside conversations.
Fast filtering and full-message retrieval solve different jobs.
Crowsnest keeps the two jobs separate so an everyday filter does not become an expensive scan of every transcript on every keystroke.
- Gallery search is immediate narrowing. The ordinary search field matches title, opening prompt, project label, and id. Press / to focus it and keep typing to reduce the visible gallery.
- Command-K searches message bodies. Press ⌘K on macOS or Ctrl+K elsewhere when the remembered words may be anywhere in a user message, assistant answer, or tool evidence.
- Multi-word results are relevance-ranked. Matching passages carry enough context to judge the result before opening it, rather than returning a flat list of opaque ids.
- Folder and provider remain useful facets. Search within a selected subtree when the repository is known, and use the Claude Code or Codex filter when the runtime matters.
The escalation is deliberate: begin with the cheapest evidence, then search inside the records only when the card cannot answer.
A five-step retrieval workflow beats browsing by date.
Choose the broadest folder you trust
Select the repository or parent directory if you remember it. Folder selection includes every conversation beneath that subtree; clear it when the work may have happened elsewhere.
Try the phrase in gallery search
A project name or opening-task fragment often finds the card immediately, without reading message bodies.
Escalate unchanged to full-message search
If the gallery stays empty, keep the same words and open Command-K. Changing both the query and the search layer at once makes it harder to learn what matched.
Read the evidence around the match
Check the provider mark, project, timestamp, message role, and highlighted passage. Similar answers often exist in several retries or branches.
Open first; continue second
Read enough surrounding context to confirm the thread. Then use that provider's supported continuation action instead of copying fragments into an unrelated session.
The result is shared; continuation remains provider-native.
Crowsnest normalizes Claude Code and Codex into one gallery and one search surface, but it does not pretend their stores are interchangeable. Claude Code history is read from its local JSONL sessions. Codex conversations are discovered and read through codex app-server, the same integration surface OpenAI documents for rich clients.
A provider-specific error stays provider-specific. Missing or broken Codex should not erase readable Claude history, and a Claude parsing problem should not blank Codex results. Every match retains its provider mark so reopening it uses the native runtime and the capabilities that runtime actually supports.
Stable conversation URLs preserve the chosen conversation, provider source, and account context across a refresh. They are local navigation state—not public share links and not an uploaded transcript.
Full-message search runs locally and keeps its cache bounded.
Searching sensitive history should not quietly turn it into a hosted index. Crowsnest performs transcript search on the machine that owns the records. The server's reusable cache holds metadata keyed by file modification evidence; it does not retain transcript bodies as a second message store. The browser keeps only a bounded result cache, aborts an active request when the query changes, and rejects stale responses.
The server binds to 127.0.0.1, and search does not upload prompts, answers, project paths, titles, or usage. Claude Code and Codex still contact their own model providers when you deliberately continue or start live work; finding and reading an already stored conversation is a different operation.
Conversation gallery, folder browsing, and full-message search are included in the seven-day trial, Standard, and Pro workspaces.
Provider documentation and released implementation
Provider references: Anthropic's Claude Code session guide and OpenAI's Codex app-server guide. Search modes, shortcuts, folder composition, cache boundaries, result attribution, stable URLs, and plan availability were checked against the released Crowsnest product source on September 9, 2026.
Published and source-reviewed September 9, 2026. Provider storage and protocol behavior can change; the linked first-party documentation is authoritative for current provider mechanics.