GuidesGuessed requirements

Your agent is not a yes-man — your prompt is missing a spec

Agreement and invention are different failures, and the advice that fixes the first one does nothing about the second.

Where this comes from

The quote is verbatim from a public Hacker News thread, part of a 293-quote corpus of developers describing their own AI-assisted projects, 2026. Sycophancy in preference-tuned models is well documented in the literature; the argument here is about a different mechanism, not a rebuttal of that work. The claim about locking is limited to what the code does — an exclusion from the set handed to the model, in services/llm_jobs.py.

The complaint, filed under the wrong heading

It starts with incomplete plans, and when I point out what's missing, it says, 'Oh, I missed that.' There's also a lot of 'yes-man' behavior.

twoelf, Hacker News

The agreed-on diagnosis is sycophancy: models are trained on human preference data, humans prefer being agreed with, so the model agrees. That is real and well documented. It is also not what is happening when your agent builds the wrong feature and sounds certain about it.

Agreement and invention are different failures

Sycophancy is about opinions. You say the architecture is fine, the model says the architecture is fine.

What breaks your feature is about gaps. You said "add password reset". You did not say the link expires in an hour, that reuse is refused, that a reset invalidates active sessions, that an unknown email must return the same response as a known one, or that the address is normalised before lookup. You did not say those things because you know them, and knowing something makes it invisible.

The model now has a hole in the instruction. It cannot ask what it does not know is missing, any more than you can — it has never seen your product and has no basis to suspect your reset flow differs from the ten thousand it was trained on. So it predicts the most typical completion. Typical is exactly what your product is not, because if it were typical you would not be building it.

Then it says "Oh, I missed that" when you point it out, which reads as yes-man behaviour and is really the same fact from the other side: it had no way to know, and once told, it agrees, because you are right.

the rule of thumb

An agent's confidence is a function of the specification it was given, not of the code it produced. A confident answer to an under-specified prompt is the expected output, not a malfunction.

Why the standard advice only half-works

"Ask it to argue against the plan." Genuinely effective — asking for the strongest reasons a plan fails produces a real list of risks from the same model that just enthusiastically approved it. What it surfaces is generic risk, though: the risks a typical project of this shape has. Your actual risk is that refunds above 200 need a manager, and no amount of adversarial prompting extracts a fact the model does not have.

"Make it ask you questions first." The best of the lot, and the closest to what actually fixes this. It produces exactly the missing constraints — for one session. The answers live in a chat log. Next week, next session, next agent: gone, and you answer the same six questions again, slightly differently, because you are a person and not a database.

"Use plan mode and read the plan." Same shape. It moves the review to the right place — see nobody reviews a 2,000-line AI diff — but a plan is a transient artifact for one change. It is not the project.

"Write it all in `CLAUDE.md`." The default answer, and the right one until the file gets big. Everything in it loads on every invocation; past a couple of thousand tokens the agent starts skimming, and a rule that gets skimmed is a rule you do not have. It is also a file in a directory the agent can write to.

Every one of these is a way of producing the missing constraints on demand. None of them is a way of keeping them.

The durable version

What you want is boring, and it is why this whole category of tool exists: the answers to the questions the agent should have asked, stored once, structured, and handed to the agent every session without you remembering to.

  • Stated once, kept. "Reset links expire in one hour" is a fact about the product, not about the session in which it came up. It gets answered on the day it is first asked and never again.
  • Linked, so the gaps are visible. A requirement with no acceptance criteria and a story with no requirements are both detectable — the structure shows the hole before the agent starts, rather than after the feature is built to a guess.
  • Not editable by the model. Locked requirements are filtered out of the set handed to the model before generation runs, so what you decided is not quietly restated as something more typical the next time the agent tidies up.

what actually changes

Not that the model stops guessing — models guess, it is what they do with a gap. The gap it would have guessed into is filled in advance, with your answer instead of the population average.

The uncomfortable half

Most of the missing constraints are missing because you have not decided them yet. "What happens if the same email requests three resets in a minute" is not a question you forgot to write down — it is a question you have never considered, and the agent shipping something plausible is the first time it comes up.

That is the real work, and no tool does it for you. What a structured store changes is where the question surfaces: at the point you are defining the feature, alongside the other open questions, rather than at the point where a user hits it in production and you find out that a model decided for you eighteen months ago.

Questions this raises

Is this the same as AI sycophancy?

No. Sycophancy is a model agreeing with a stated opinion it should push back on. This is a model filling a gap in an instruction with the most typical answer, because there was nothing else to fill it with. Anti-sycophancy prompting surfaces generic risks; it cannot produce a fact about your product that the model was never given.

Will asking the agent to ask me questions fix it?

For that session, largely yes — it is the most effective of the prompt-level techniques. The limitation is durability: the answers live in a chat log, so the next session starts from the same gaps and you answer the same questions again, slightly differently each time.

What if I have not decided the answer yet?

Then no tool has it either, and the honest outcome is that the question gets recorded as open rather than silently resolved by the model. Surfacing it while you are defining the feature is the entire difference between deciding it and discovering it in production.

entalpa

Entalpa gives your agent one locked source of truth

Structured, traceable requirements your agent reads over MCP — so it works from a curated spec instead of reconstructing your project every session. Free to start, no card, and MCP calls never spend credits.