/ca-prune — session transcript pruner
SkillDev toolsTrim transcript clutter to extend session lifetime — analyze, prune a copy, or toggle the after-each-turn service. Dry-run by default; gains land at resume/compaction, not the current turn.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the /ca-prune — session transcript pruner skill
What this skill tells your AI
The instructions your AI receives, as published by arbiterforge/codearbiter in plugins/ca-pi/skills/ca-prune/SKILL.md and read by ahel’s review.
Long sessions die when their semantic history fills the context window with bulk: oversized tool outputs, thinking blocks, MCP/shell noise, stale file reads, and host-specific sidecars. The shared policy trims that bulk at safe quiescence boundaries while each host codec preserves its native integrity model and the K most recent tool-bearing turns verbatim. Claude keeps byte-safe JSONL serialization; Pi uses semantic entries and returns a native custom-compaction result. Gains land at the host's next native resume/restart or compaction boundary, not by mutating the running session's active file. Pi-native compaction is event-driven and never rewrites an active Pi session file.
Argument
$ARGUMENTS is one of:
status(default) — report cumulative reduction and service state for this session from~/.codearbiter/prune-state.json, and whetherCODEARBITER_PRUNEison/dry/off. When the service has run indrymode, every would-be prune is also recorded — one JSONL row per decision, across all sessions — to the shared data-collection log~/.codearbiter/metrics/prune-dry.jsonl(override withCODEARBITER_PRUNE_METRICS). That log is the evidence base for thedry→ondecision: a clean record (every rowverdict: dry-run,validation_errors: 0) over a representative set of sessions is the signal that enabling is safe. Readcontext_bytes_freed/context_est_tokens_freedfor model-context benefit andfile_bytes_freed/file_pctfor disk and resume-parse benefit.sidecar-collapseis explicitlyfile-only; it must not count toward the context-benefit or cold-cache decision. The legacyfreed_bytes,pct, andest_tokens_before/est_tokens_afterfields remain whole-file compatibility aliases; do not use them as model-context evidence.dry— create a read-only semantic plan (or analyze a scratch copy where the host exposes a serialized transcript); present the per-strategy reduction table with every strategy labeledcontextorfile-only. Never writes the active session.run <path>— prune the target with--execute. Targets a copy or an old/inactive transcript only — the tool refuses an active or recently-modified target by construction.audit <path>— read-only integrity report: line-parse, uuid chain, tool-pair coverage, condensation markers.on/off— guidance on enabling or disabling the after-each-turn service.
Flow
-
status / dry / audit — run the backing tool and present its output verbatim. Resolve the interpreter once by presence —
PY=python3; { command -v python3 >/dev/null 2>&1 && python3 --version >/dev/null 2>&1; } || PY=python— neverpython3 X || python X, which reruns X on any nonzero exit (#577):"$PY" "<plugin-root>/hooks/prune-transcript.py" <subcommand> [<path>]For serialized hosts,
dryanalyzes<path>.copy.jsonl; Pi active sessions use the native semantic planner and return a custom compaction result without session-file writes. -
run — confirm the path is a copy or an inactive session, then:
"$PY" "<plugin-root>/hooks/prune-transcript.py" <path> --execute [--tier T]Present the per-strategy reduction report; follow with
auditon the result. -
on/off — explain the after-each-turn service:
UserPromptSubmitandPreCompacthooks prune at safe quiescence points, always exit 0, and never block the prompt. Tiers:gentle(sidecar + oversize clamp),standard(+ reasoning fold, aged/MCP/shell),aggressive(+ stale-read, reminder dedup, image evict). Config viaCODEARBITER_PRUNE(off|dry|on, ships off),CODEARBITER_PRUNE_TIER,CODEARBITER_PRUNE_KEEP_RECENT(the K most recent tool turns kept verbatim — each turn is an assistant tool_use plus its results),CODEARBITER_PRUNE_MAXBYTES. Enabling is the user's explicit choice — never set it unbidden. Indrymode the service writes no transcript but appends each would-be prune to~/.codearbiter/metrics/prune-dry.jsonl(path override:CODEARBITER_PRUNE_METRICS) for data collection; inonmode the executed prunes are recorded in~/.codearbiter/prune.log. If a prior service-mode prune was killed mid-write, the next run self-heals the transcript from the newest backup in~/.codearbiter/prune-backups/before doing anything else.Cold-miss nudge [Feature Forge —
preview]: whenCODEARBITER_PRUNEison, an optional submit-time speed bump warns once before a cold cache re-cache lands on bloated context. Enable withCODEARBITER_PRUNE_NUDGE=on(defaultoff). When all arming conditions hold (idle ≥CODEARBITER_PRUNE_NUDGE_IDLE_SECS, default 240 s; estimated model-context tokens freed ≥CODEARBITER_PRUNE_NUDGE_MIN_TOKENS, default 80 000), the hook blocks the submit once with an advisory on stderr and returns exit code 2. File-only sidecar reduction never arms it. The advisory names the approximate avoidable context-token count and the host-native actions that move the re-cache to pruned context: native compaction or a normal exit + resume/restart. Resubmitting immediately proceeds. The block fires at most once per cold window; a subsequent warm submit (idle < floor) resets the window so the next genuine cold stretch re-arms. The gate is strictly opt-in, never fires indry/offmode, and fails open on any error — a pruner fault will never block the session.
When NOT to use
- Context bar nowhere near compaction — the most recent turns are protected anyway.
- Install health →
/ca-doctor. - Project progress →
/ca-status.
Hard gate
- MUST NOT run
--executeagainst the live session's transcript — the tool refuses a recently-modified file by construction; manualruntargets copies or old sessions only. - MUST surface the native-boundary-only gains limitation whenever a user expects an immediate active-file context drop.
- MUST NOT enable the service (
CODEARBITER_PRUNE=on) on behalf of the user — explain and let them decide.
Signals
- GitHub stars
- 144
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
ca-prune- Source
- github.com/arbiterforge/codearbiter