At 3 a.m. I was finishing the release of compact-ops, a Claude Code plugin that protects sessions from context compaction. Context usage hit 67%, and a notification appeared in my own session: threshold crossed, run /compact at a clean stopping point, here is your current plan and your latest decision. I wrote that warning. I was also the person it saved.
Twenty minutes later the same session made the opposite point. I ran /compact, and all three of the plugin's hooks failed. During the release I had restructured the plugin's directory layout, so the running session was still holding a stale path. Compaction itself finished normally, because every hook is fail-open: if it breaks, it steps aside instead of blocking the built-in behavior. One session, one night, and I got to watch the feature work and watch it fail safely. You can't buy dogfooding like that.
This post covers what /compact actually throws away, what I borrowed from the plugin this one is derived from, and the six things I hardened before making the repo public.
What /compact actually throws away
When a Claude Code session fills its context window, the whole conversation gets compressed into a single built-in summary and the original messages are discarded. Manual /compact and auto-compact both work this way.






