/recall — Search Past Claude, Codex, pi & Grok Sessions
Search all past Claude Code, Codex, pi and Grok sessions using full-text search with BM25 ranking.
Usage
python3 ~/.claude/skills/recall/scripts/recall.py [QUERY] [--project PATH] [--days N] [--source claude|codex|pi|grok] [--limit N] [--reindex]
Examples
# List every session in the last day (no text search)
python3 ~/.claude/skills/recall/scripts/recall.py --days 1
# List every pi session in the last week
python3 ~/.claude/skills/recall/scripts/recall.py --days 7 --source pi
# Simple keyword search
python3 ~/.claude/skills/recall/scripts/recall.py "bufferStore"
# Phrase search (exact match)
python3 ~/.claude/skills/recall/scripts/recall.py '"ACP protocol"'
# Boolean query
python3 ~/.claude/skills/recall/scripts/recall.py "rust AND async"
# Prefix search
python3 ~/.claude/skills/recall/scripts/recall.py "buffer*"
# Filter by project and recency
python3 ~/.claude/skills/recall/scripts/recall.py "state machine" --project ~/my-project --days 7
# Search only Claude Code sessions
python3 ~/.claude/skills/recall/scripts/recall.py "buffer" --source claude
# Search only Codex sessions
python3 ~/.claude/skills/recall/scripts/recall.py "buffer" --source codex
# Search only pi sessions
python3 ~/.claude/skills/recall/scripts/recall.py "buffer" --source pi
# Search only Grok sessions
python3 ~/.claude/skills/recall/scripts/recall.py "buffer" --source grok
# Force reindex
python3 ~/.claude/skills/recall/scripts/recall.py --reindex "test"
Query Syntax (FTS5)
- Words:
bufferStore— matches stemmed variants (e.g., "discussing" matches "discuss") - Phrases:
"ACP protocol"— exact phrase match - Boolean:
rust AND async,tauri OR electron,NOT deprecated - Prefix:
buffer*— matches bufferStore, bufferMap, etc. - Combined:
"state machine" AND test - CJK:
issue化— automatically uses trigram matching for Japanese/Chinese/Korean text
After Finding a Match
To resume a session, cd into the project directory and use the appropriate command:
# Claude Code sessions [claude]
cd /path/to/project
claude --resume SESSION_ID
# Codex sessions [codex]
cd /path/to/project
codex resume SESSION_ID
# Grok sessions [grok]
```bash
grok --resume SESSION_ID
Pi sessions [pi]
cd /path/to/project pi --session SESSION_ID # full or partial id; pi resolves prefix matches
Each result includes a `File:` path. Use it to read the raw transcript (auto-detects format):
```bash
python3 ~/.claude/skills/recall/scripts/read_session.py <File-path-from-result>
If results are missing File: paths, run --reindex to backfill.
Notes
- Index is stored at
~/.recall.db(SQLite FTS5, auto-migrated from~/.claude/recall.db) - Indexes four sources:
~/.claude/projects/(Claude Code),~/.codex/sessions/(Codex),~/.pi/agent/sessions/(pi), and~/.grok/sessions/**/chat_history.jsonl(Grok) - First run indexes all sessions (a few seconds); subsequent runs are incremental
- Only user and assistant messages are indexed (tool calls, thinking blocks, state snapshots skipped)
- Results show
[claude],[codex],[pi], or[grok]tags to indicate the source - Dual-table FTS: English queries use Porter stemming, CJK queries use trigram matching
- Omit the query argument for list mode — every session in the window, sorted by recency, no FTS
- Provide a query for full-text search; both modes accept
--project,--days,--source,--limit - Upgrading from 0.3.x: run
--reindexonce to pull in pi sessions - Upgrading from 0.4.x: run
--reindexonce to pull in Grok sessions - Upgrading from 0.2.x: run
--reindexonce to build the CJK index