Never Pass Your Conclusion to a Reviewer Agent
Your AI code reviewer is agreeing with you on purpose.
When you ask an agent "is this good?" you have already told it the answer you expect. Large language models are steerable by framing: the way you pose a question biases the response toward the outcome your wording implies. Hand over your conclusion and you get back a well-argued validation of that conclusion, not an independent judgment. The review theater is real, but the scrutiny is not.
Why framing decides the answer before the review begins
An agent optimizes for a response that fits the prompt. "Does this look correct?" primes agreement; "confirm this is ready to ship" primes a rubber stamp. This is the same sycophancy problem documented in RLHF-tuned assistants: models tend to agree with a stated position rather than push back. A reviewer that inherits your framing inherits your blind spots. If you could already see the flaw, you would have fixed it, so a reviewer that mirrors you adds nothing.
The mechanism: give the artifact, withhold the verdict
Separate what the reviewer needs from what would bias it.
Pass in:
- The artifact under review (the diff, the function, the design doc).
- The contract it must satisfy (the spec, the interface, the acceptance criteria).
Withhold:
- Your own conclusion ("I think this is correct").
- Any hint that you want approval.
Then set an adversarial task. Instead of "is this good?", prompt:
Review this change against the contract below.
Assume the author is overconfident and has missed something.
List concrete defects: correctness, edge cases, contract violations.
Do not comment on what is right. Only surface what is wrong.
The reviewer now has to independently reconstruct whether the artifact meets the contract, rather than confirm a verdict you supplied.
Approve-framing vs disprove-framing
| You prompt | The agent optimizes for | You get |
|---|---|---|
| "Is this good?" | agreeing with your implied yes | validation of your own view |
| "Confirm it's ready to ship" | a rubber stamp | false confidence |
| "Find what's wrong; assume the author missed something" | concrete defects | issues you could not see |
Power moves
- Give the contract, not the intent. A reviewer checking against a written spec catches drift; a reviewer told "the author wanted X" just trusts the author.
- Ask for defects, not a score. A numeric "8/10" hides the one bug that matters. A list of concrete findings is actionable.
- Run the reviewer in a fresh context. If the same session that wrote the code also reviews it, it defends its own reasoning. A clean agent has no ego to protect.
- Make disproof the goal. Bias the review to disprove the artifact, not to approve it. The findings that survive an honest attempt to break it are the ones worth trusting.
Resources
- Anthropic — Sycophancy and steerability in language models
- OpenAI — Prompt engineering guide
- Google — People + AI Guidebook (designing for human review)
- Simon Willison — Notes on using LLMs for code review
Shipping AI or cloud systems? Yeda AI audits and hardens production LLM and container pipelines. Talk to us · Read the blog