Finds and recovers content from Claude Code session history files...
Extract and recover content from Claude Code's session history files stored in ~/.claude/projects/.
Session files are stored at ~/.claude/projects/<normalized-path>/<session-id>.jsonl.
For detailed JSONL structure and extraction patterns, see references/session_file_format.md.
Find all session files for a specific project:
python3 scripts/analyze_sessions.py list /path/to/project
Shows most recent sessions with timestamps and sizes.
Optional: --limit N to show only N sessions (default: 10).
Locate sessions containing specific content:
python3 scripts/analyze_sessions.py search /path/to/project keyword1 keyword2
Returns sessions ranked by keyword frequency with:
Optional: --case-sensitive for exact matching.
Extract files from session history:
python3 scripts/recover_content.py /path/to/session.jsonl
Extracts all Write tool calls and saves files to ./recovered_content/, preserving the original directory structure.
Filtering by keywords:
python3 scripts/recover_content.py session.jsonl -k ModelLoading FRONTEND deleted
Recovers only files matching any keyword in their path.
Custom output directory:
python3 scripts/recover_content.py session.jsonl -o ./my_recovery/
Get detailed session metrics:
python3 scripts/analyze_sessions.py stats /path/to/session.jsonl
Reports:
Optional: --show-files to list all file operations.
For detailed workflow examples including file recovery, tracking file evolution, and batch operations, see references/workflow_examples.md.
recover_content.py automatically keeps only the latest version of each file. If a file was written multiple times in a session, only the final version is saved.
Choose distinctive keywords that appear in:
Create descriptive output directories:
# Bad
python3 scripts/recover_content.py session.jsonl -o ./output/
# Good
python3 scripts/recover_content.py session.jsonl -o ./recovered_deleted_docs/
python3 scripts/recover_content.py session.jsonl -o ./feature_xy_history/
After recovery, always verify content:
# Check directory structure (files preserved in subdirectories)
find ./recovered_content/ -type f
# Read recovery report (shows full output paths)
cat ./recovered_content/recovery_report.txt
# Spot-check content (use actual path from report)
head -20 ./recovered_content/src/components/ImportantFile.jsx
✅ Files written using Write tool ✅ Code shown in markdown blocks (partial extraction) ✅ File paths from Edit/Read operations
❌ Files never written to disk (only discussed) ❌ Files deleted before session start ❌ Binary files (images, PDFs) - only paths available ❌ External tool outputs not captured in session
# Verify project path normalization
ls ~/.claude/projects/ | grep -i "project-name"
# Check actual projects directory
ls -la ~/.claude/projects/
Possible causes:
Solutions:
--show-edits flag to see Edit operationsFor sessions >100MB:
Session files may contain:
Always sanitize before sharing:
# Remove absolute paths
sed -i '' 's|~/|<home>/|g' file.js
# Verify no credentials
grep -i "api_key\|password\|token" recovered_content/*
Recovered content inherits sensitivity from original sessions. Store securely and follow organizational policies for handling session data.
After finding relevant session history, suggest continuing the work:
Found [N] relevant sessions with recoverable context.
Options:
A) Resume work — run /continue-claude-work to pick up where you left off (Recommended)
B) Just show me the content — I'll decide what to do with it