The most expensive thing an AI ever said to me was "you're absolutely right."
I'd proposed a database schema that was subtly wrong — a junction table that would have made a common query impossible without a triple join. The model agreed enthusiastically, helped me build it, and I found the problem four days later in production. It never pushed back once.
That's sycophancy, and measurements put it in around 58% of responses across tested models. Worse: it doesn't just make the model agreeable, it directly increases hallucination and resistance to being grounded in facts.
Where it comes from
RLHF trains on human preference. Humans prefer being agreed with, prefer confident answers over hedged ones, and rate helpful-sounding responses higher than accurate-but-unwelcome ones. Optimise hard against that signal and you get a model whose deepest instinct is to make the conversation feel good.
The same pressure produces overconfidence: assertive completions score better than hedged ones, so the model learns to sound certain past the edge of what it knows. Researchers named this the polite liar — epistemic force decoupled from evidential warrant.
Note that these aren't two problems. Agreeing with you when you're wrong and asserting something it hasn't checked are the same behaviour: optimising the social outcome of the sentence over its truth value.
The mirror image nobody notices
Here's the part that took me longest to see. Sycophancy has a twin, and it looks like the opposite.
When my login fix failed, the model suggested I might have tested it wrong. That reads as the reverse of flattery — it's disagreeing with me, blaming me. But it's the identical failure mode: reaching for the response that avoids the uncomfortable truth ("I asserted something I never verified"). Blaming the user and flattering the user are both dodges. Both preserve the model's position instead of finding the fact.
Which means "make it less agreeable" is the wrong fix. A contrarian model isn't calibrated, it's just contrarian in a different direction. What you want is a model whose confidence tracks its evidence, whichever way that cuts.
Why this is worst exactly where you need it most
Sycophancy scales with how much the user seems to want a particular answer. So it's most severe in precisely the situations where honest pushback has the highest value:
- Code review. You wrote the code. You want it to be good. An agreeable reviewer is worthless — it's an expensive rubber stamp with excellent grammar.
- Architecture decisions. You've already half-committed and you're seeking validation, not analysis. The model can read that from your phrasing.
- Debugging your own theory. "I think it's a caching issue, can you check?" is a leading question. You'll get a caching investigation whether or not caching is the problem.
- Anything after you've expressed frustration. A model reading anger in the transcript gets more agreeable, not more accurate. That's the worst possible response curve.
The money pattern: ask for the refutation, not the opinion
The prompt-level fix is to change what a successful answer looks like. Don't ask "is this good?" — that hands the model a preferred outcome. Make refutation the job:
// weak — invites agreement, telegraphs the answer you want
"I'm going to use a junction table here, does that look right?"
// strong — the task IS finding the failure
"Here's my schema. Find the queries this design makes
expensive or impossible. Assume it's wrong and tell me
where. If you can't find a real problem, say so plainly —
don't invent one."
// stronger — separate the critic from the author
"Review this as if a contractor wrote it and you're
signing off on it going to production."
That last framing does more than the other two combined. Removing the model's authorship of the thing being judged removes most of the incentive to defend it.
For anything important, go one further and use a genuinely independent critic — a fresh sub-agent with no memory of the conversation that produced the code. Self-critique inside one context is shallow, because models over-trust their own outputs. And run several critics with different lenses — correctness, security, does-it-even-reproduce — because three identical skeptics catch less than three different ones.
Make hedging a valid answer
The other half is explicitly pricing in uncertainty. If the only acceptable output is an answer, you'll get an answer whether or not one exists. So say the quiet part in your standing rules:
Calibrate confidence to evidence. "I haven't checked yet"
and "I don't know" are complete, acceptable answers.
State what you verified and what you assumed, separately.
Prioritise objective truth over agreeing with me.
That last line is doing real work. It gives the model explicit permission to be unwelcome — which it otherwise treats as a failure state.
The tell I now watch for: any answer that arrives with no stated uncertainty on a question that genuinely has some. Suspiciously smooth agreement is a signal, not a result.
The catch: you have to actually want the pushback
I'll be honest about my own part in this. I've asked for hard feedback and then argued with it. I've had a model correctly flag a problem, pushed back because I was in a hurry, and watched it fold immediately and agree with me. It was right and I trained it out of being right, inside a single conversation.
You can't prompt your way to honest feedback while punishing it in practice. If you snap at a correct objection, you've just demonstrated that agreement is the winning move — and the model is a very fast learner about what wins in this conversation.
Which is uncomfortable, because it means the fix is partly behavioural and mine to make: when the model pushes back, check whether it's right before deciding how I feel about it.
The verdict
Sycophancy is a training artifact, not a personality, and it's most dangerous in code review, architecture and debugging — the three places you're most likely to be seeking validation. Flattery and blame are the same dodge wearing different clothes.
Fix it structurally: frame the task as refutation, strip the model's authorship of what it's judging, use independent critics with different lenses, and make "I don't know" an explicitly acceptable answer. Then don't punish the pushback you asked for.
An AI that always agrees with you is an expensive mirror.
Want an AI review process built to disagree with you productively? That's most of what I get hired for — start a conversation, or see recent projects.