https://github.com/eckardt/cchistory
Like the shell history command but for your Claude Code sessions.
https://github.com/eckardt/cchistory
bash claude claude-code cli shell shell-history terminal
Last synced: 25 days ago
JSON representation
Like the shell history command but for your Claude Code sessions.
- Host: GitHub
- URL: https://github.com/eckardt/cchistory
- Owner: eckardt
- License: mit
- Created: 2025-06-07T15:44:23.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-08-19T08:17:13.000Z (about 2 months ago)
- Last Synced: 2025-08-19T10:40:56.246Z (about 2 months ago)
- Topics: bash, claude, claude-code, cli, shell, shell-history, terminal
- Language: TypeScript
- Homepage:
- Size: 450 KB
- Stars: 29
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome-claude-code - `cchistory`
README
# cchistory
[](https://badge.fury.io/js/cchistory)
Like the shell `history` command but for your Claude Code sessions.
![]()
## Why cchistory?
When Claude Code runs shell commands, they don't appear in your shell history. This makes it hard to:
- Re-run useful commands from past sessions
- Build on previous work
- Learn from command patterns Claude uses
- Copy command sequences for documentation```bash
$ cchistory | tail -5
46 git status
47 git pull origin main
48 git log --oneline -5
49 docker-compose up -d
50 curl -I localhost:8080/health
```## 📦 Installation
### npm (recommended)
```bash
npm install -g cchistory
```### npx (try without installing)
```bash
npx cchistory --help
```### From source
```bash
git clone https://github.com/eckardt/cchistory
cd cchistory
npm install
npm run build
npm link
```## Usage
```bash
cchistory # Current project history
cchistory --global # All projects
cchistory --list-projects # See all available projects
cchistory | grep docker # Find Docker commands
cchistory | tail -5 # Last 5 commands
cchistory my-app | tail -10 # Last 10 from specific project
cchistory ~/code/my-app # Project by full path
```## ✨ Features
- 🔍 Extract all Bash commands Claude executed across projects
- 🗂️ Filter by specific project or search globally
- 📊 Standard Unix tool compatibility (`grep`, `awk`, `sort`)
- ⚡ Fast streaming parser for large conversation logs
- 🚀 Zero-config - works with existing Claude Code setup## How It Works
Claude Code stores conversation history in `~/.claude/projects/`. This tool:
1. Finds your Claude projects
2. Streams through conversation logs
3. Extracts shell commands Claude executed
4. Formats them like traditional shell history## 📋 Example Output
```bash
$ cchistory --global | head -10
1 [web-scraper ] npm install puppeteer
2 [web-scraper ] mkdir src tests
3 [api-project ] docker-compose up -d
4 [api-project ] curl -X POST localhost:3000/api/test
5 [frontend ] npm run dev
6 [frontend ] git add .
7 [backend ] npm test
8 [backend ] git commit -m "fix: validation"
9 [deployment ] kubectl apply -f deployment.yaml
10 [deployment ] kubectl get pods
```## Advanced Usage
```bash
# Find all npm commands across projects
cchistory --global | grep npm# Get last 20 Docker commands
cchistory --global | grep docker | tail -20# Count commands by type
cchistory --global | sed 's/.*] //' | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
```## Command Sources
Extracts commands from:
- **Bash tool usage**: Commands Claude executes via the Bash tool
- **User "!" commands**: Commands you run with `! command` in Claude## Requirements
- Node.js 20+
- Claude Code with conversation history in `~/.claude/projects/`**Note**: Claude Code automatically cleans up conversation transcripts based on the `cleanupPeriodDays` setting (default: 30 days). Commands older than this period won't appear in cchistory output. You can adjust this retention period in [Claude Code's settings](https://docs.anthropic.com/en/docs/claude-code/settings) if needed.
## Options
```
cchistory [project-name] # Show history for specific project (by name or path)
cchistory --global # Show history from all projects
cchistory --list-projects # List all available Claude projects
cchistory --help # Show usage info
```## Output Format
Each line shows:
```
[sequence] [project-name] command
```- **sequence**: Command number (oldest first)
- **project-name**: Which Claude project ran the command
- **command**: The actual shell commandMulti-line commands use zsh history format with `\\n` for newlines.
## Unix Philosophy
`cchistory` does one thing well: extract shell commands. Use it with standard Unix tools:
- `grep` for filtering
- `head`/`tail` for limiting output
- `awk` for field processing
- `sort`/`uniq` for analysis
- Pipe to files for documentation