{"post":{"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","content":"<span class=\"dropcap\">T</span>he reflection pattern is simple to describe: generate an answer, ask the model to critique it, ask it to revise based on the critique. It is one of the most widely recommended agent patterns and one of the most inconsistently useful, because whether it helps depends entirely on something the pattern description usually omits.\n\nThat something is whether an objective signal is available to critique against.\n\n## What changed in 2026\n\n- **The verification requirement became clear.** Practitioner consensus settled on external signals being the differentiator between reflection that works and reflection that inflates cost.\n- **Iteration caps became standard.** Measurement showed quality plateauing quickly, and unbounded loops were recognized as a cost problem.\n- **It got absorbed into coding agents.** Run tests, read failures, revise became the dominant and most successful application of the pattern.\n- **Self-critique on prose fell out of favour.** Reflection on subjective output was found to produce hedged, longer text rather than better text.\n\n## Where reflection works\n\n| Task | External check available | Reflection value |\n| --- | --- | --- |\n| Code that must compile | Compiler | High |\n| Code that must pass tests | Test suite | High |\n| Output conforming to a schema | Validator | High; though constrained decoding is better |\n| Arithmetic and calculation | Calculator tool | High |\n| SQL that must return results | Database | High |\n| Factual claims against a corpus | Retrieval and entailment check | Moderate |\n| Argument quality | None | Low |\n| Writing style and tone | None | Low to negative |\n| Creative content | None | Low |\n\nThe pattern is unmistakable. When the critique step can consult something outside the model — a compiler error, a failing test, a validation message — reflection is genuinely powerful, because the model receives information it did not have when generating. When the critique is pure self-assessment, the model is evaluating with the same understanding that produced the error, and it frequently declares the output fine or invents a problem that is not there.\n\n## Bounding the loop\n\nCap iterations at two or three. Measurement consistently shows most of the improvement arriving in the first revision, some in the second, and essentially none after that — while each round costs a full generate-and-critique cycle. Unbounded reflection loops are a reliable way to triple your cost for a marginal gain.\n\nRequire the critique to be specific. A critique saying the answer could be improved gives the revision step nothing to act on. Asking for named problems with locations produces revisions that actually address something, and it also makes it visible when the critique step is producing noise.\n\nAdd a stopping condition based on the external signal where one exists. If tests pass, stop — do not run another reflection round because the loop is configured for three. This is the difference between a loop bounded by iterations and one bounded by success.\n\nTrack how often reflection changes the answer. If revisions rarely differ meaningfully from the original, the pattern is costing you tokens for nothing on that task type, and the honest response is to remove it there. That measurement belongs in the cost accounting described in [AI agent cost per task](/blog/ai-agent-cost-per-task-2026).\n\n## Common mistakes\n\n- **Reflection without an external signal.** The model cannot reliably see its own errors.\n- **Unbounded iteration.** Cost grows, quality plateaus.\n- **Vague critique prompts.** Produce vague revisions.\n- **No early stopping on success.** Wastes rounds after the check already passes.\n- **Applying it to stylistic output.** Tends to make text longer and more hedged.\n- **Never measuring whether it changes anything.** Common to find it is not.\n\n## FAQ\n\n**Is reflection the same as chain of thought?**\nNo. Chain of thought is reasoning within one generation. Reflection is a separate critique pass over completed output, usually as distinct model calls.\n\n**Can a different model do the critique?**\nYes, and it frequently helps — a second model brings different failure modes and is less prone to endorsing the first model's reasoning.\n\n**Does it reduce hallucination?**\nOnly with a verification signal to check against. Self-critique alone catches some obvious inconsistencies and misses confident fabrication.\n\n**How does it compare to extended reasoning?**\nRelated but distinct. Reasoning budgets, covered in [test-time compute explained](/blog/test-time-compute-explained-2026), extend thinking within one generation; reflection adds explicit review passes.\n\n## Where to go next\n\nFor related loop patterns, read [chain of verification](/blog/chain-of-verification-2026) and [self-consistency decoding](/blog/self-consistency-decoding-2026). For agent structure, [planner-executor agents](/blog/planner-executor-agents-2026).","hue":204,"metaTitle":"Reflection Pattern for AI Agents Explained 2026","metaDescription":"When the generate-critique-revise loop improves agent output, why external verification signals matter, and how to cap iterations before cost outruns value.","keywords":["reflection pattern agents","self critique llm","iterative refinement ai","self correction loop","agent quality improvement","external verification signal","reflexion technique","agent design patterns","llm engineering 2026"],"tldr":["**Reflection means generating, critiquing, then revising** — an internal review loop before returning an answer.","**It works when there is an objective check available** — tests, compilers, schemas, or verifiable constraints.","**Self-critique without an external signal is weak** — the model that made the error frequently cannot see it.","**Cap the iterations** — quality typically plateaus after one or two rounds and cost does not.","**Skip:** reflection on subjective or stylistic output. It tends to produce longer, more hedged text rather than better text."],"readTime":"3 min read","wordCount":756},"related":[{"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","readTime":"4 min read","hue":205},{"slug":"planner-executor-agents-2026","title":"Planner-Executor Agents: Separating Thinking From Doing","excerpt":"Splitting an agent into a planner and an executor makes long tasks tractable and adds failure modes. Here is when the separation helps and how to handle replanning.","category":"ai","date":"August 17, 2026","author":"ByteLedger Team","readTime":"3 min read","hue":210},{"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}],"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":"qcd-charity-explained-2026","title":"Qualified Charitable Distributions: Giving Straight From an IRA","excerpt":"A direct transfer from a retirement account to a charity satisfies required withdrawals without adding to income. Here is why that beats donating normally.","category":"finance","date":"August 15, 2026","author":"ByteLedger Team","readTime":"3 min read","hue":52},"older":{"slug":"system-prompt-leakage-2026","title":"System Prompt Leakage: Assume It Will Get Out","excerpt":"Users extract system prompts routinely, and no instruction reliably prevents it. The question is what you put there that you cannot afford to lose.","category":"ai","date":"August 15, 2026","author":"ByteLedger Team","readTime":"5 min read","hue":196}}