Skip to content

DannyAziz/claude-prune

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)

# Using npx (Node.js)
npx claude-prune <sessionId> --keep 50

# Using bunx (Bun)
bunx claude-prune <sessionId> --keep 50

Install globally

# Using npm
npm install -g claude-prune

# Using bun
bun install -g claude-prune

Usage

claude-prune <sessionId> --keep <number> [--dry-run]

Arguments

  • sessionId: UUID of the Claude Code session (without .jsonl extension)

Options

  • -k, --keep <number>: 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

# 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

Environment Variables

CLAUDE_CONFIG_DIR

By default, claude-prune looks for session files in ~/.claude. If Claude Code is configured to use a different directory, you can specify it with the CLAUDE_CONFIG_DIR environment variable:

# Use a custom Claude config directory
CLAUDE_CONFIG_DIR=/custom/path/to/claude claude-prune <sessionId> --keep 50

Development

# 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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •