Skip to main content

Diagnose Claude Code sessions — find what went wrong, what it cost, and what to add to CLAUDE.md

Project description

cctx

Diagnose your Claude Code sessions — find out when they went wrong, why they cost what they did, and what to add to your CLAUDE.md so it doesn't happen again.

CI PyPI Python License

demo

Install

pipx install cctx-cli

Or with pip:

pip install cctx-cli

pipx is recommended — it installs cctx in an isolated environment so its dependencies don't conflict with your projects.

Quick start

cctx ls                   # find your sessions
cctx autopsy --latest     # diagnose the most recent one

cctx is a forensic tool. You reach for it after a session — when something felt off, when the cost was higher than expected, or on a weekly review pass. It reads the JSONL logs Claude Code writes to ~/.claude/projects/ and produces findings with attributed cost and copy-pasteable CLAUDE.md patches.

Commands

cctx ls — list projects and sessions

cctx ls                    # list all Claude Code projects
cctx ls ~/Projects/myapp   # list sessions for a specific project

cctx autopsy — diagnose a session

# Most recent session in the current directory
cctx autopsy --latest

# Specific session file
cctx autopsy ~/.claude/projects/-Users-you-Projects-myapp/abc123.jsonl

# All sessions from the last 7 days
cctx autopsy ~/Projects/myapp --since 7

# Write a self-contained HTML report
cctx autopsy ~/.claude/projects/-Users-you-Projects-myapp/abc123.jsonl --html report.html

Runs three pattern classifiers (retry loop, scope creep, stale context) and prints findings with attributed cost. Use --since N to aggregate patterns across multiple sessions in a project.

cctx harvest — apply patches to CLAUDE.md

# Interactive: preview then confirm
cctx harvest ~/.claude/projects/-Users-you-Projects-myapp/abc123.jsonl

# Preview only — don't write anything
cctx harvest ~/.claude/projects/-Users-you-Projects-myapp/abc123.jsonl --dry-run

# Apply without confirmation
cctx harvest ~/.claude/projects/-Users-you-Projects-myapp/abc123.jsonl --apply

# Cross-session: patches from the last 7 days of sessions
cctx harvest ~/Projects/myapp --since 7

Turns autopsy findings into copy-pasteable CLAUDE.md additions. Patches are idempotent — running harvest twice on the same session won't duplicate entries. Use --target-dir DIR to specify which directory's CLAUDE.md to patch (default: current working directory).

cctx export — export session data

# CSV to file
cctx export ~/.claude/projects/-Users-you-Projects-myapp/abc123.jsonl --format csv --out session.csv

# JSONL to stdout
cctx export ~/.claude/projects/-Users-you-Projects-myapp/abc123.jsonl --format jsonl

# Omit patch text and finding summaries (smaller output for scripted use)
cctx export ~/.claude/projects/-Users-you-Projects-myapp/abc123.jsonl --format jsonl --no-content

Dumps session analysis as JSONL (one object per session) or CSV (one row per turn) for use in external tools.

cctx trace — interactive TUI

cctx trace ~/.claude/projects/-Users-you-Projects-myapp/abc123.jsonl

Steps through a session turn by turn in a terminal UI with autopsy findings overlaid. Press q to quit.

What cctx detects

Pattern What it means How it wastes money
Retry loop The same tool call failing 2+ times with no successful fix Repeated identical API calls burn input tokens
Scope creep Assistant expanding scope mid-task without being asked Unnecessary extra turns and tool calls
Stale context Large tool results sitting in context long after their last reference content_tokens × billed_turns_stale — a 22K grep result still present 14 turns later costs ~308K token-turns

Cost attribution

cctx estimates session cost using Anthropic's published billing rates:

  • Input tokens: standard rate
  • Cache reads: 10% of the input rate
  • Cache writes: 125% of the input rate

Stale-context waste is attributed turn by turn: every turn a large result stays in context after its last reference counts against waste.

These are approximations (~85–95% of actual API billing). The gap is internal prompt framing that isn't observable in the JSONL logs. cctx shows estimated costs, not billing-exact figures.

Requirements

  • Python 3.10+
  • Claude Code session logs at ~/.claude/projects/ (written automatically by Claude Code)
  • No API key required for analysis

An ANTHROPIC_API_KEY is optional. When set, cctx can call the Anthropic API for exact token counts. Without it, cctx uses the token counts already recorded in the JSONL logs (the default and recommended mode for most users).

Session log location

Claude Code writes logs to ~/.claude/projects/<encoded-path>/<session-id>.jsonl. The project path is URL-encoded with - replacing /, so /Users/you/Projects/myapp becomes -Users-you-Projects-myapp.

cctx ls handles discovery automatically — you don't need to navigate the encoded directory structure by hand.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cctx_cli-0.1.0.tar.gz (3.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cctx_cli-0.1.0-py3-none-any.whl (44.6 kB view details)

Uploaded Python 3

File details

Details for the file cctx_cli-0.1.0.tar.gz.

File metadata

  • Download URL: cctx_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cctx_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 172b61641936bd41f57f668997cf2ea9fff4e2a0dbed5c5cb70b4358d96cbfed
MD5 d8a59b895a1a0f628d6fefc6ccad9b2c
BLAKE2b-256 3a77acf82a1ad7a4a541077358cf32b37972203a040c1c0c4b550afa192d6401

See more details on using hashes here.

Provenance

The following attestation bundles were made for cctx_cli-0.1.0.tar.gz:

Publisher: publish.yml on jacquardlabs/cctx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cctx_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: cctx_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 44.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cctx_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c120f80c41a843270ef4bea7fbb744b8e7621d1f708511642e1d5c747e68bb59
MD5 c41ac9f15bac304285bb1a79ac58fc28
BLAKE2b-256 3e8df4a4bc4ea9f877dcd0ef2207806df9c719fe9d687d37ab46654f9741676f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cctx_cli-0.1.0-py3-none-any.whl:

Publisher: publish.yml on jacquardlabs/cctx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page