Recover files created and modified by Claude Code from JSONL session transcripts
# Add to your Claude Code skills
git clone https://github.com/hjtenklooster/claude-file-recoveryRecover files created and modified by Claude Code from its JSONL session transcripts — even if you lost track of them across sessions.
Claude Code stores a full log of every tool call in ~/.claude/projects/. This tool parses those transcripts, replays Write, Edit, and Read operations in order, and reconstructs the files so you can browse, search, and extract them.

/ to search)# Recommended
uv tool install claude-file-recovery
# Or with pipx
pipx install claude-file-recovery
# Or with pip
pip install claude-file-recovery
Requires Python 3.10+.
# Launch the interactive TUI (default command)
claude-file-recovery
# List all recoverable files
claude-file-recovery list-files
# Filter by pattern
claude-file-recovery list-files --filter '*.py'
# Export as CSV
claude-file-recovery list-files --filter '*.ts' --csv
# Extract files to disk
claude-file-recovery extract-files --output ./recovered --filter '*.py'
# Recover files as they were before a certain time
claude-file-recovery list-files --before '2025-02-20 14:00'
# Point to a different Claude data directory
claude-file-recovery --claude-dir /path/to/claude-backup
Scan — Discovers all JSONL session files under ~/.claude/projects/ and parses them in parallel using a thread pool. A fast-reject byte check skips progress and history-snapshot lines (~77% of all lines) before touching the JSON parser.
Correlate — Links tool-use requests in assistant messages to their results in user messages via tool_use_id. This is how file content (which only appears in results, not requests) gets attached to each operation.
Reconstruct — Replays operations in chronological order per file path. Write ops set content, Edit ops apply string replacements, and Read ops capture snapshots. The --before flag uses binary search to cut off at any point in time.
Present — The TUI lets you browse all recovered files, search with fuzzy matching, view colored diffs between snapshots, and batch-extract to disk.
| Key | Action |
|-----|--------|
| j / k | Move up/down |
| g / G | Jump to top/bottom |
| / | Search |
| Ctrl+R | Cycle search mode (fuzzy / glob / regex) |
| x or Space | Toggle file selection |
| Enter | View file detail + diffs |
| d | Cycle diff mode (unified / full-context / raw) |
| Ctrl+E | Extract selected files |
| q | Back / quit |
claude-file-recovery runs entirely on your local machine.
What it reads:
~/.claude/projects/ (or the directory you specify via --claude-dir)~/.claude/file-history/What it writes (only when you explicitly ask):
--outputWhat it does NOT do:
The source code is MIT-licensed and fully open for audit.
Contributions are welcome! Feel free to open an issue or submit a pull request.
MIT — Rikkert ten Klooster
No comments yet. Be the first to share your thoughts!