{"post":{"slug":"agent-reflection-loops-2026","title":"Agent Reflection: When Self-Critique Helps and When It Does Not","excerpt":"Asking a model to review its own work sounds like free quality. It helps on tasks with checkable output and produces confident agreement on everything else.","category":"ai","date":"January 5, 2026","author":"ByteLedger Team","content":"<span class=\"dropcap\">T</span>he idea is appealing. After the model produces an answer, ask it to review that answer, identify problems, and revise. Two passes instead of one, quality improves, everyone is happy.\n\nIt does work — on a specific class of task. On everything else it produces a model confidently endorsing what it just wrote, at double the cost, with the appearance of rigour.\n\n## What changed in 2026\n\n- **The evidence sharpened.** Enough evaluation accumulated to make clear that reflection's benefit tracks the availability of external verification rather than being general.\n- **Verifier models emerged as an alternative.** A separately-trained model scoring candidates proved more reliable than self-critique — see [verifier models](/blog/verifier-models-explained-2026).\n- **Coding agents made it standard.** Where tests provide ground truth, generate-run-fix loops became the default architecture.\n- **Cost scrutiny increased.** As agent bills grew, reflection steps that did not demonstrably improve output came under review.\n\n## The dividing line\n\n| Task | External signal available? | Reflection helps? |\n| --- | --- | --- |\n| Write code | Yes — tests, compiler, linter | Substantially |\n| Produce JSON to a schema | Yes — validator | Yes |\n| Solve a maths problem | Partly — recompute and compare | Somewhat |\n| Extract fields from a document | Yes — check against source | Yes |\n| Summarise an article | No | Marginal |\n| Write marketing copy | No | Little |\n| Judge whether a response was good | No | Confirmation bias |\n\nThe pattern is unambiguous. When something *outside the model* can say whether the output is wrong, reflection becomes a loop with real feedback: generate, run the check, see the failure, fix it. The model is not evaluating itself; it is reading an error message.\n\nWhen no such signal exists, the model is asked to assess its own output using the same reasoning that produced it. It tends to find the output reasonable, because it found it reasonable a moment ago. Where it does find fault, it may revise a correct answer into a worse one — which is a real observed failure, not a theoretical worry.\n\n## Making it work\n\n**Give it something to check against.** Tests, a schema validator, a linter, the source document, a second retrieval. The check does not need to be sophisticated; it needs to be independent.\n\n**Use a separate critic prompt.** Rather than \"review your answer\", frame a distinct role with distinct instructions — \"you are reviewing this for factual claims not supported by the provided source\". Different framing surfaces different problems, and it avoids the model simply re-reading its own reasoning approvingly.\n\n**Ask for specific defects, not a verdict.** \"Is this good?\" invites agreement. \"List every claim in this answer not supported by the source text\" produces something actionable.\n\n**Cap the iterations.** Two rounds is usually the point of diminishing returns. Unbounded reflect-revise loops burn budget and can oscillate between two versions.\n\n**Measure it.** Run your evaluation with and without the reflection step. If scores do not move, you are paying double for nothing — and that is a common finding worth checking rather than assuming.\n\n## What it costs\n\nThree model calls where there was one: generate, critique, revise. On a long agent run that multiplies across every step it applies to.\n\nThere is a context cost too. The critique and the revision both enter the conversation, so the accumulated context grows faster, which matters in long loops.\n\nThe pragmatic approach is selective application: reflect on steps that are consequential and checkable, not on every step by default. An agent that reflects before a write operation and not before a read is spending the budget where it can help.\n\n## Common mistakes\n\n- **Reflection on subjective output.** Confirmation, at double cost.\n- **\"Review your answer\" as the critique prompt.** Invites agreement.\n- **Unbounded loops.** Oscillation and unbounded spend.\n- **Not measuring the benefit.** Frequently zero, and nobody checks.\n- **Reflecting at every step.** Apply it where the stakes and checkability justify it.\n- **Revising without evidence.** A correct answer changed on a hunch is a regression.\n\n## FAQ\n\n**Does a separate model critic work better?**\nUsually yes, and the gain comes as much from a different prompt and framing as from different weights. Even the same model with a genuinely different critic role outperforms plain self-review.\n\n**How does this compare to a verifier model?**\nA verifier is trained specifically to score correctness, which makes it a stronger and more consistent signal than prompted critique. It is also more work to build — see [verifier models](/blog/verifier-models-explained-2026).\n\n**Should coding agents always reflect?**\nWhere tests exist, the generate-run-fix loop is not really reflection at all — it is reading real feedback, which is why it works so well. That is the shape to aim for.\n\n**Can reflection make output worse?**\nYes, and this is the finding people find surprising. A model asked to find fault will often find something, and revising a correct answer to address an imagined problem is a genuine regression.\n\n## Where to go next\n\nFor the trained alternative to prompted critique, read [verifier models](/blog/verifier-models-explained-2026). For the loop this sits inside, [ReAct agents](/blog/react-agents-explained-2026), and for measuring whether it helped, [multi-turn evals](/blog/multi-turn-evals-2026).","hue":205,"metaTitle":"Agent Reflection: When Self-Critique Actually Helps","metaDescription":"Why agent self-critique works on verifiable tasks and fails on subjective ones, what it costs, and how a separate critic improves on self-review.","keywords":["agent reflection","self critique llm","self correction agents","reflexion pattern","critic model","verifiable feedback","agent quality improvement","ai agents 2026"],"tldr":["**Reflection works when there is external signal** — test results, a compiler, a validator. Without one it is the same model agreeing with itself.","**Self-critique without evidence tends toward confirmation** — the model that produced the answer is not a neutral reviewer of it.","**It roughly doubles cost per step** — generate, critique, revise is three calls where one was.","**A separate critic with a different prompt beats self-review** — different framing surfaces different problems.","**Skip:** reflection on subjective output with no way to check it. You pay twice for a second opinion from the same source."],"readTime":"4 min read","wordCount":872},"related":[{"slug":"reflection-pattern-agents-2026","title":"The Reflection Pattern: Agents That Check Their Own Work","excerpt":"Asking a model to critique and revise its output improves some tasks and wastes tokens on others. Here is where reflection earns its cost and how to bound it.","category":"ai","date":"August 15, 2026","author":"ByteLedger Team","readTime":"3 min read","hue":204},{"slug":"agentic-workflows-explained-2026","title":"Agentic workflows explained for 2026","excerpt":"An agentic workflow lets a model plan, call tools, and check its own work across multiple steps instead of answering in one shot. Here is how the common patterns actually work.","category":"ai","date":"July 1, 2026","author":"ByteLedger Team","readTime":"4 min read","hue":310},{"slug":"ai-agent-handoff-patterns-2026","title":"AI Agent Handoff Patterns That Do Not Lose Context","excerpt":"Multi-agent systems fail at the seams. Here are the handoff patterns that survive production, what each one costs in tokens, and how to tell when one agent was enough.","category":"ai","date":"August 13, 2026","author":"ByteLedger Team","readTime":"4 min read","hue":214}],"sameCategory":[{"slug":"agent-cost-attribution-2026","title":"Agent Cost Attribution: Finding Where the Tokens Went","excerpt":"A single monthly API bill tells you that agents are expensive. It does not tell you which feature, which customer, or which retry loop is responsible. That gap is fixable.","category":"ai","date":"August 19, 2026","author":"ByteLedger Team","readTime":"5 min read","hue":220},{"slug":"human-in-the-loop-agents-2026","title":"Human-in-the-Loop Agents: Where to Put the Approval Gate","excerpt":"Approve everything and the agent is a slow autocomplete. Approve nothing and you have handed irreversible actions to a system that can be talked into things.","category":"ai","date":"August 19, 2026","author":"ByteLedger Team","readTime":"5 min read","hue":197},{"slug":"reasoning-effort-controls-2026","title":"Reasoning Effort Controls: Tuning How Hard a Model Thinks","excerpt":"Fixed thinking budgets gave way to effort levels, and the default is rarely the right setting. Here is how the dial behaves and where each level actually belongs.","category":"ai","date":"August 19, 2026","author":"ByteLedger Team","readTime":"5 min read","hue":210},{"slug":"retrieval-metrics-explained-2026","title":"Retrieval Metrics: Measuring the Half of RAG That Fails","excerpt":"When a RAG system answers badly, the retrieval usually failed before the model ever spoke. Measuring generation quality alone hides that entirely.","category":"ai","date":"August 19, 2026","author":"ByteLedger Team","readTime":"5 min read","hue":215}],"newer":{"slug":"varchar-vs-text-2026","title":"Varchar vs Text: A Length Limit Is a Constraint, Not a Speedup","excerpt":"Declaring a column as varchar(255) does not make it smaller or faster in most databases. It adds a constraint, and constraints should be chosen deliberately.","category":"code","date":"January 6, 2026","author":"ByteLedger Team","readTime":"4 min read","hue":301},"older":{"slug":"api-fuzzing-explained-2026","title":"API Fuzzing: Finding Inputs Nobody Thought to Test","excerpt":"Your tests cover the inputs you imagined. Fuzzing generates the ones you did not, and it reliably finds crashes in code that has been in production for years.","category":"code","date":"January 5, 2026","author":"ByteLedger Team","readTime":"4 min read","hue":313}}