The token compressor that made my bill go up — and the proof it had to A developer discovered that Paritok, a 4B model that compresses AI coding-agent context, can increase token costs by up to 69.2% on turns where the model expands compressed content, despite reporting 64.0% savings. The structural flaw means even perfect compression cannot win on expanding turns, and the expand call itself provides a free supervision signal that is currently ignored. I went looking for a small improvement to an open-source tool. I found a number that pointed the wrong way, and then I found out why it had to. Live demo — paste your own file and watch it happen: https://pin-on-expand.onrender.com Paritok https://github.com/Paritok-official/paritok-4b-v1 is a 4B model that compresses AI coding-agent context. It sits between your agent and Anthropic or OpenAI, squeezes the file reads and tool output, and tells you what it saved. It's genuinely good work. Trained on 45,000 real agent trajectories, so it knows a function signature matters more than a debug line. Apache 2.0. Runs on a consumer GPU. Their benchmark numbers hold up. I wanted to build a policy improvement on top of it. To prove my improvement helped, I first had to measure what stock Paritok cost. That measurement is the whole story. One coding-agent session. One 20,005-token file in context. Paritok's own /stats endpoint: 64.0% of input tokens saved. What the provider was actually POSTed: 69.2% more than sending the file with no compression at all. Same session. Same file. Both numbers correct. Paritok is non-destructive by design, which is the good part. Compressed content gets tagged REF:id , and when the model needs the exact original it calls an injected expand context tool to pull it back. Lossy on the wire, recoverable when it counts. The proxy answers that call itself . It appends the full original to a proxy-local thread and POSTs that thread upstream a second time. And stats is computed once, in process request — before that loop runs. post 0: 6,919 tokens compressed request ← counted by /stats post 1: 26,924 tokens carries the full original ← never counted ───────── billed: 33,843 Then it compounds. The proxy conceals the virtual exchange from the client, so your agent never sees it. Next turn the agent re-sends the original file, Paritok re-compresses it to the same reference, and the model expands it again. Every turn. Forever. In fairness: Paritok's README says /stats is "scoped to what Paritok actually intervenes in." Nothing is hidden. But the excluded traffic is generated by the gateway itself — which makes it the one category you'd most expect to see I wrote the cost model out to sanity-check my harness. It says something stronger than "there's a bug." Let T be the tokens in the file the agent carries, and c the compression ratio — compressed over original, 0