https://github.com/DannyAziz/claude-prune
https://github.com/DannyAziz/claude-prune
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/DannyAziz/claude-prune
- Owner: DannyAziz
- License: mit
- Created: 2025-07-17T20:20:34.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-07-17T21:18:05.000Z (3 months ago)
- Last Synced: 2025-07-18T01:46:40.571Z (3 months ago)
- Language: JavaScript
- Size: 23.4 KB
- Stars: 5
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-claude-code - **claude-prune**
README
# claude-prune
A fast CLI tool for pruning Claude Code sessions.
## Features
- 🎯 **Smart Pruning**: Keep messages since the last N assistant responses
- 🛡️ **Safe by Default**: Always preserves session summaries and metadata
- 💾 **Auto Backup**: Creates timestamped backups before modifying files
## Installation
### Run directly (recommended)
```bash
# Using npx (Node.js)
npx claude-prune --keep 50
# Using bunx (Bun)
bunx claude-prune --keep 50
```
### Install globally
```bash
# Using npm
npm install -g claude-prune
# Using bun
bun install -g claude-prune
```
## Usage
```bash
claude-prune --keep [--dry-run]
```
### Arguments
- `sessionId`: UUID of the Claude Code session (without .jsonl extension)
### Options
- `-k, --keep `: Number of assistant messages to keep (required)
- `--dry-run`: Preview changes without modifying files
- `-h, --help`: Show help information
- `-V, --version`: Show version number
### Examples
```bash
# Keep the last 10 assistant messages and everything since then
claude-prune abc123-def456-789 --keep 10
# Preview what would be pruned (safe mode)
claude-prune abc123-def456-789 --keep 5 --dry-run
# Minimal pruning - keep only the last assistant message
claude-prune abc123-def456-789 --keep 1
```
## How It Works
1. **Locates Session File**: Finds `~/.claude/projects/{project-path}/{sessionId}.jsonl`
2. **Preserves Critical Data**: Always keeps the first line (session summary/metadata)
3. **Smart Pruning**: Finds the Nth-to-last assistant message and keeps everything from that point forward
4. **Preserves Context**: Keeps all non-message lines (tool results, system messages)
5. **Safe Backup**: Creates `{sessionId}.bak.{timestamp}` before modifying
6. **Interactive Confirmation**: Asks for confirmation unless using `--dry-run`
## File Structure
Claude Code stores sessions in:
```
~/.claude/projects/{project-path-with-hyphens}/{sessionId}.jsonl
```
For example, a project at `/Users/alice/my-app` becomes:
```
~/.claude/projects/-Users-alice-my-app/{sessionId}.jsonl
```
## Development
```bash
# Clone and install
git clone https://github.com/dannyaziz/cc-prune.git
cd cc-prune
bun install
# Run tests
bun test
# Build
bun run build
# Test locally
./dist/index.js --help
```
## License
MIT © Danny Aziz