Shorter Prompt, Longer Bill

A new arXiv preprint ran 5,400 API calls testing one compression method, first-N-words truncation, against three models and three benchmarks. Cutting prompts to 30% of their length produced wildly different bills depending on the task: DeepSeek-Chat's output ballooned 56.4x on MBPP but only 5.2x on HumanEval, using the identical method, ratio, and model. The mechanism is instruction survival probability: when task-critical text gets truncated away, models don't fail quietly, they write more, and output tokens cost 5 to 8 times what input tokens cost on every major rate card. A compression pass that looks like a 70% input cut can be a 2.5x cost increase once the output side moves. This post prices the backfire and lays out how to test a compression ratio before it ships as policy.

Published 2026-09-01 by Dor Amir on the Nadir blog.

Filed under Context & Compression.

A compression ratio of 0.3 cut input tokens by 70%. On one benchmark, it made the model write 56 times more output.

Prompt compression's pitch is simple: shrink the input, shrink the bill. A new benchmark study puts a number on when that pitch breaks. Across 5,400 API calls spanning three benchmarks and three models, an arXiv preprint found that truncating a prompt to 30% of its original length doesn't just risk a wrong answer, it can make the model write dramatically more of one. On DeepSeek-Chat, the same 0.3 compression ratio produced a 56.4x output-token expansion on MBPP and a 5.2x expansion on HumanEval, using an identical compression method against the same model. Source: Johnson, "Compression Method Matters: Benchmark-Dependent Output Dynamics in LLM Prompt Compression," arXiv:2603.23527, Mar 2026 The variable that moved wasn't the model. It was which task the prompt was for.

Figures in this post come from a single arXiv preprint, not from Nadir's own production traffic, and the paper has not (as of this writing) cleared peer review. The compression method it tests is deliberately naive, first-N-words truncation, not a semantic compressor like the LLMLingua family [we've covered separately](/blog/prompt-compression-llmlingua-input-token-reduction). Treat the exact multipliers as one controlled experiment's findings, not a universal constant.

Two panels. Left: instruction survival probability (Ψ) at compression ratio r=0.3, by benchmark: MBPP 0.15, GSM8K 0.41, HumanEval 0.72. Right: output token expansion at r=0.3, balanced across benchmarks, by model: GPT-4o-mini 1.9x, Mistral-Large 4.8x, DeepSeek-Chat 17.8x, with a note that DeepSeek's MBPP-only expansion hit 56.4x and 74% of those completions were still capped by the token ceiling.
Two panels. Left: instruction survival probability (Ψ) at compression ratio r=0.3, by benchmark: MBPP 0.15, GSM8K 0.41, HumanEval 0.72. Right: output token expansion at r=0.3, balanced across benchmarks, by model: GPT-4o-mini 1.9x, Mistral-Large 4.8x, DeepSeek-Chat 17.8x, with a note that DeepSeek's MBPP-only expansion hit 56.4x and 74% of those completions were still capped by the token ceiling.

Two benchmarks, two different bills, from one compression method

The paper's core move is testing the same truncation method, the same ratios, and the same three models against three benchmarks with structurally different prompts: MBPP (500 Python problems, task spec placed mid-prompt), HumanEval (164 Python problems, function signature stated early), and GSM8K (100 grade-school math problems, instructions distributed across the prompt). To explain why identical compression produced wildly different outcomes, the authors define instruction survival probability, Ψ, a weighted measure of how much of a prompt's task-critical content is still present after truncation. At r=0.3, Ψ came out to 0.15 on MBPP, 0.41 on GSM8K, and 0.72 on HumanEval. First-N-words truncation kept HumanEval's early-stated function signature almost intact. It gutted MBPP's mid-prompt task spec.

The paper's headline claim follows from that gap: whether compression is safe is a property of where the critical instruction sits in the prompt, not a property of the model or the compression ratio alone. A ratio that's fine for one task shape can be destructive for another, using the exact same setup.

Why the model starts talking more when you take words away

The mechanism the paper proposes: models exhibit what it calls "verbose compensation" once instruction survival drops below a threshold, roughly Ψ ≈ 0.35 in their data. Below that line, a model that no longer has a clear signal for how much output the task calls for doesn't fail quietly, it starts producing more. On MBPP at r=0.3, DeepSeek-Chat's output expansion was severe enough that 74% of its completions hit the study's 1,024-token ceiling before finishing, meaning the reported 56.4x multiplier likely understates how far the model would have kept going uncapped.

That's the opposite of what a compression pass is supposed to buy you. The point of cutting input tokens is a smaller bill. A model that responds to a stripped prompt by writing paragraphs instead of the four-line function it was asked for moves the cost to the side of the ledger that was already priced against you: output tokens run 5 to 8 times the price of input tokens on every major provider's rate card.

Not every model reacts the same way, and the ranking isn't obvious

To make robustness comparable across benchmarks, the paper introduces a Compression Robustness Index (CRI) that combines how much task quality (pass@1) survives compression with how much output length grows, normalized against a token ceiling. At r=0.3:

ModelCRI at r=0.3Reading
GPT-4o-mini0.848Highly robust to truncation
Mistral-Large0.424Moderately robust
DeepSeek-Chat0.090Compression-sensitive

A smaller, cheaper model coming out roughly ten times more robust than a 671B-parameter MoE model on the same compression method isn't the ranking most teams would guess going in. The paper attributes the gap to differences in training and architecture rather than raw capability, and doesn't claim the ranking generalizes past these three models. The finding worth taking away isn't "GPT-4o-mini is compression-safe," it's that robustness to truncation doesn't track with model tier, so it has to be measured per model, not assumed.

The energy story undercuts itself the same way

The study also ran direct GPU power measurements (NVML, RTX 4090, TinyLlama-1.1B on vLLM) alongside its token-counting experiments, because a separate, common claim, that fewer tokens means proportionally less energy, turns out not to hold either. A 17.4% cut in total tokens produced only a 4.8% cut in joules, and energy-per-token actually rose 15.6%. The paper's own energy model prices output tokens at roughly 3x the joules of input tokens (0.45 mJ versus 0.15 mJ per token in their measurement), which is the same asymmetry that shows up in dollar pricing: shifting the token mix toward output, even while shrinking the total, can raise the real cost per request. "Token savings" and "cost savings," in either currency, are not the same measurement.

Do the dollar math before a compressor ships

Take a request that would normally run 1,000 input tokens and 200 output tokens against a typical $3 / $15 per-million-token rate card, a 5x output premium in line with the numbers above. Uncompressed, that's $0.003 input plus $0.003 output, $0.006 total. Compress the prompt to r=0.3 (300 input tokens) and apply this paper's balanced Mistral-Large multiplier, a 4.8x output expansion, and output climbs to roughly 960 tokens: $0.0009 input plus $0.0144 output, $0.0153 total. The prompt got 70% shorter. The request got 2.5x more expensive. This is an illustrative calculation built on the paper's reported multiplier and a representative rate card, not a measured production bill, but the arithmetic is exactly why "fewer input tokens" isn't a proxy for "lower cost" once output can move.

What actually ships this week

Where this fits next to routing

This is the same failure shape that shows up whenever a cost lever gets applied as a blanket rule instead of checked per request: a policy that's correct on average and wrong on the specific case where it costs the most. We've made the same argument about routing to the cheapest model and about shipping an answer without a check. Compression is no different. Nadir treats context reduction the same way it treats model choice: something to test against the request that's actually running, with the resulting cost, input and output both, visible per request in the dashboard, rather than a ratio set once in a config file and left to compound against whichever task shape happens to hit it hardest.

Conclusion.

The instinct behind prompt compression is correct: most prompts carry tokens the model doesn't need. What this paper adds is that a savings estimate built only from the input side can be wrong in the specific direction that matters, the bill going up instead of down, and that it can happen with the same compression method, the same ratio, and the same model, just because the task shape changed. A 56x output expansion on one benchmark and a 1.7x expansion on another, from an identical setup, is a strong argument for validating compression per task before it ships, not a strong argument against compression itself.


Source: [Johnson, "Compression Method Matters: Benchmark-Dependent Output Dynamics in LLM Prompt Compression," arXiv:2603.23527, March 2026](https://arxiv.org/abs/2603.23527).

More on context & compression

What Nadir is

Nadir is an LLM router. Nadir sends each prompt to the cheapest model that can handle it. A small decision model reads each prompt against your model menu and picks the lowest-cost model it expects to handle it. When the decision model is uncertain or unavailable, the request goes to the strongest model on the menu. The routing step makes no call to your model provider.

Nadir runs two ways. The decision API returns a model, reasoning-effort, cache, context, and policy recommendation without calling a model provider, beside the gateway you already run. That is how a shadow-mode evaluation works, and its projected savings stay advisory. The OpenAI compatible managed proxy executes the route, and migration is a two-line change: point the base URL at api.getnadir.com and set model to auto. On that path an optional verifier can score a complete non-streaming answer and escalate to a stronger model when it misses the configured bar. Streaming bypasses post-generation verification. BYOK is supported on every tier.

For coding agents, Nadir Auto is a terminal launcher for Claude Code or Codex that asks Nadir for the main-session model before each turn, with your configured model as the fallback and cost ceiling. Delegation integrations for Claude Code, Codex, or Cursor instead recommend a model tier for subagent work, and the agent decides; the Claude plugin can also move a main-thread turn to Haiku when Nadir's cache check prices it cheaper, unless its switch_main_model option is off. Either way inference runs on your own provider account, so Nadir holds no provider keys on that path.

What the numbers are, and what they are not

Nadir publishes each evaluation with its scope. On checkable code, run-check-escalate solved 392 of 395 common HumanEval and MBPP problems (99.2%), graded by running the canonical tests; that applies only to tasks with runnable deterministic tests. Nadir-Tumbler posts an arena_score of 72.3 on RouterArena's public scorer, 5th of 23 routers, which measures the routing decision on RouterArena's own model pool. A reference-assisted RouterBench evaluation over 11,420 held-out triples produced a 60% lower projected cost than always-Opus with about 98% retained quality and a 1.7% catastrophic-route rate. That experiment gave the verifier the expensive-model reference answer, which production does not have, so it is a research ceiling and not the deployed path.

None of these is a production guarantee, a universal savings rate, or a forecast for any particular workload. Customer savings are reported from measured execution against a declared baseline, and customer quality only from outcome-labelled traffic. Projected savings and realized savings are separate artifacts and are never blended.

Design-partner program

Three rungs, picked by risk appetite. Rung 0 Shadow runs advisory decision calls alongside live traffic and returns a projected receipt, with nothing in the request path changed. Rung 1 Hosted is the two-line swap on a production slice and returns a realized receipt. Rung 2 On-prem is a supervised six-week proof of concept inside the partner's VPC, where no prompt, response, or usage reaches Nadir. The commitments are the same at every rung. Apply for a rung directly: Rung 0 Shadow, Rung 1 Hosted, or Rung 2 On-prem. Not sure which fits? Start at getnadir.com/contact/?reason=design-partner.

Licensing

NadirClaw is the self-hosted core, source-available under the PolyForm Noncommercial License. Source-available is the correct label; NadirClaw is not open source. Nadir Route's hosted plan has no base fee and charges a variable fee only on measured savings from requests Nadir executed.

Pages on this site

Machine-readable summaries of this site: llms.txt and llms-full.txt.