Skip to main content

The Self-Critique Tax: When Asking the Model to Check Its Own Work Costs Double for Modest Wins

· 11 min read
Tian Pan
Software Engineer

A team ships a self-critique loop into production because the benchmark numbers looked irresistible: Self-Refine reported a 20 percent absolute improvement averaged across seven tasks, Chain-of-Verification cut hallucinations by 50 to 70 percent on QA workloads, and reflection prompts pushed math-equation accuracy up 34.7 percent in one widely-cited paper. A month later the finance review surfaces the bill. The product's per-request cost has roughly tripled, p99 latency is up by a factor of three, and the actual quality lift that survived contact with production traffic is closer to three percent than thirty. The self-critique loop is doing exactly what it advertised. The team just never priced it.

This is the self-critique tax: a reliability pattern that reads like a free quality win on a slide and reads like a structural cost increase on an invoice. The pattern itself is sound — there are real cases where generate-then-verify is the right answer. The failure mode is shipping it as a default instead of as a calibrated intervention, and discovering at the wrong time of the quarter that "the model checks its own work" was actually a procurement decision.

The Token Math Nobody Did at the Design Review

Start with the floor. A self-critique loop has at minimum two model calls: one to generate the output, one to critique it. Most production implementations add a third: a revision pass that takes the original output plus the critique and produces a corrected version. The naive intuition is that this triples the cost. The actual cost is worse, and it's worse in a specific direction that matters for billing.

The critique step's input is not a fresh prompt. It includes the original output verbatim, plus the system prompt, plus a critique rubric. If the original generation produced 800 output tokens and the critique prompt itself is 400 tokens of instructions, the critique call's input is around 1,200 tokens — and then the critique itself adds another few hundred output tokens. The revision step then re-ingests the original output, the critique, and a revision prompt. By the time the loop closes, the team has paid for roughly 2.5 to 3 times the tokens of a single-shot call, weighted heavily toward output tokens — which on flagship models are priced four to five times higher than input tokens.

That output-token concentration is the part the benchmark paper doesn't include. The paper reports accuracy lifts; the invoice reports a cost structure that scales with the most expensive token category. A pipeline that "doubled the cost" in the design doc is often actually billing 3 to 4 times more in the cost dashboard, because the team budgeted for "twice the calls" without budgeting for "twice the calls, weighted toward the expensive side of the price sheet."

Latency follows a similar pattern but with a tail-heavy twist. The p50 typically doubles because the critique runs sequentially after the generation. The p99 typically triples, because when any step in the chain hits a slow path — a long output, a retry, a transient slowdown at the provider — it compounds across the chain rather than being smoothed out. A team that signed an SLO of p99 under two seconds when running single-shot is now consistently breaching the same SLO with a self-critique loop that averages well under the threshold.

The Quality Lift Is Real But Smaller Than the Paper Says

The published numbers on self-critique patterns are not wrong, but they are conditional. Self-Refine reported its 20 percent average across seven tasks chosen to showcase the method, and the per-task variance was wide — some tasks saw double-digit lifts, others saw lifts within margin of error. CoVe's hallucination reductions were strongest on factual QA where verification questions could be decomposed cleanly; they were weaker on open-ended generation where the "facts" to verify were diffuse. Reflection's 34.7 percent on math equation writing came alongside an 18.1 percent lift on function calling — both meaningful, but the math number isn't the number to budget against if the product is doing customer support summarization.

Then there is Huang et al.'s 2024 result that mattered enough to reset the field: large language models cannot reliably self-correct reasoning without external feedback, and in several conditions their performance degrades after self-correction. The model that produced the original answer is often the wrong model to ask whether the answer is correct, because the same biases and gaps that caused the original mistake show up again at critique time. The model rates its own output as fine, the loop closes, the team ships a system that runs twice for the same answer. The follow-up survey paper "When Can LLMs Actually Correct Their Own Mistakes?" formalized the limitation: self-correction works well when the model has access to reliable external feedback, and it works poorly when it doesn't.

In production, "reliable external feedback" usually means one of: a code interpreter the model can run against, a tool call whose return value verifies a claim, a deterministic checker for structured output, or a separate, differently-trained model acting as the verifier. None of these are "ask the same model to critique itself," and yet "ask the same model to critique itself" is what most generate-then-verify pipelines are actually doing.

The lift that survives into production is therefore narrower than the benchmark suggests. A team that measured a 15 percent eval lift in development typically sees 3 to 7 percent in production traffic — sometimes because the eval set over-represented the cases where critique helps, sometimes because the model's calibration on the production distribution is different, sometimes because the critique prompt was tuned on a workload that doesn't match what users actually send. The cost is the same either way.

Where the Pattern Earns Its Price

The argument here is not that self-critique is a bad pattern. It is that self-critique is a targeted intervention that has been overshipped as a default. There are three workloads where the math works out cleanly enough that the cost is easy to justify.

The first is structured output where a deterministic checker can replace the LLM critique step. If the output is JSON conforming to a schema, the critique doesn't need to be an LLM call — it can be a parser. If the output is code, the critique can be a compiler or a test runner. In these cases the "critique" costs cents instead of dollars, the verification is more reliable than an LLM judge, and the revision step is the only LLM call that gets billed twice. A pipeline that uses deterministic verification plus LLM revision typically runs 1.3 to 1.5 times the cost of single-shot, not 3 times, and the quality lift is closer to the benchmark numbers because the verifier is actually catching real errors.

Loading…
References:Let's stay in touch and Follow me for more thoughts and updates