2026-09-04

Why Doesn't Cursor Build What I Actually Asked For?

Cursor builds what your prompt describes, not what you meant. When you say add a login feature, it has to guess your stack, your existing auth pattern, your validation rules, and your edge cases - and it guesses using the most common pattern, not your actual codebase's pattern.

That gap between what I meant and what I typed is bigger in code than in writing, because code has to be exactly right to run. There is no partial credit for close enough.

Before

add a login feature

After

Role: senior engineer working in this repo's existing patterns. Task: add email/password login using our existing NextAuth setup in /lib/auth - do not introduce a new auth library. Constraints: rate-limit failed attempts, handle expired sessions gracefully, no new npm dependencies. Output: the code changes plus a one-line summary of files touched. Definition of done: passes existing test suite, includes one new test for the rate-limit case.

The three things Cursor is usually guessing

The stack and existing pattern. Add a login feature does not say if you are using NextAuth, a custom JWT setup, or something else already in the repo. Cursor picks the most common approach in its training data, which is often not what your repo already does.

The constraints. No rate limiting mentioned? No mention of error handling for expired sessions? Those get skipped, not because Cursor does not know they matter, but because you did not ask for them. A coding assistant answers the question asked, not the question you meant to ask.

The definition of done. Add tests means something different to every engineer. Unit tests only? Integration? What coverage threshold? Left unstated, you get whatever the model's default assumption is - which may not match your team's bar.

Why this is worse in code than in writing

A vague writing prompt gives you bland copy you can edit. A vague coding prompt can give you code that runs, looks plausible, and is subtly wrong for your actual repo - which is more expensive to catch than a bland paragraph, because it often is not obvious until it breaks something downstream.

Compile a rough feature description in Studio with Cursor as the target. MCP can reuse the same compiled prompt where you actually code.

FAQ

Related problems

Same class of brief failure, different search phrasing.