How Coding Agents Work (and Their Limits)
Enough internals to teach the truth, not the hype
Anatomy of a coding agent
After this you can describe the agent loop from prompt to applied edit
A coding agent is a language model wrapped in a loop that lets it act, look at what happened and try again - the model supplies the reasoning, the harness supplies the hands.
A DX Engineer at Cursor teaches this for a living, so the bar is being able to draw the loop on a whiteboard cold and narrate every arrow. Most developers picture an agent as a model that magically edits files. The honest picture is plainer and more useful.
Three pieces compose every coding agent: the model that decides, the harness that gives it tools and context and the tools it calls to change the world.
The reasoning engine. Reads the assembled context, decides the next move, emits text or a tool call.
Swappable. The same harness can drive different high-capability models.
The scaffolding that turns a chat model into an agent: indexing, retrieval, tool definitions, the loop itself and guardrails.
This is where most of Cursor's engineering lives.
The verbs: read file, edit file, run terminal, search codebase, call an MCPModel Context Protocol. A standard that lets an AI agent pull in context from outside the repo, like Jira tickets or internal docs. server.
Each returns an observation the model reads on the next turn.
The loop, step by stepprompt → applied edit
An agent run is not one model call. It is a loop that keeps calling the model, feeding back what each action produced, until the task is done or a stop condition trips.
Interactive diagram. Tab through its regions; each focused region shows its detail in the panel below.
The whiteboard artifact: assemble, decide, act, observe, revise - the last step loops back until the task is done.
- 1Assemble context. The harness gathers the prompt, retrieved code, open files, rules and the running conversation into the context window.
- 2Plan / decide. The model reads that context and emits either a message, a plan or a structured tool call.
- 3Call a tool. The harness executes the call - runs the command, applies the edit, searches the repo - in the real environment.
- 4Observe. The tool's result (test output, file contents, an error) is appended to the context as the next observation.
- 5Revise or finish. The model reads the observation and either takes another action or declares the task complete.
Anyone can call a high-capability model's API. What makes Cursor an agent - and what makes one agent better than another on the same model - is the harness: how it indexes a million-line repo, what it retrieves into a finite context, how it defines tools the model can call reliably and how it decides when to stop. When a developer asks 'which model does Cursor use,' the more interesting answer is 'here's what we do around the model.'
Ground that claim in what Cursor's harness actually does. It is not a thin desktop app piping your prompt straight to a model provider - there is deep proprietary cloud infrastructure (the Cursor harnessCursor's hosted layer around each model (context selection, caching, retries) that makes the same model run better and cheaper than calling it directly.) doing optimization, context enrichment, caching and compaction around the model, with a model-specific harness tuned per frontier model. Two concrete proof points to keep on hand: independent analysis shows the same model (e.g. Claude) performs better inside the Cursor harness than in other harnesses, and dynamic context discoveryThe agent pulling only the relevant parts of files, tools and MCP servers into context as needed, instead of loading everything up front. (since v2.4) - where the agent reads from files/tools/MCPModel Context Protocol. A standard that lets an AI agent pull in context from outside the repo, like Jira tickets or internal docs. and pulls into the window only what it deems relevant - combined with caching cuts agent tokens by roughly 47% even when running other companies' models.
A misconception worth correcting cold: the model has no native memory. The sense that an agent 'remembers' comes entirely from the harness re-assembling context each turn. So you don't give an agent memory by hoping - you give it memory by referencing other chats or by persisting information as a skill, rule, command or hook. Output quality reduces to two levers: which model (~60-70%) and what context you supply (~30-40%) - and context is the lever you control.
The autonomy spectrum
Cursor's surfaces are not three names for the same thing. They sit at different points on how much the agent decides versus how much you steer and teaching developers to pick the right one for the task is pure DX.
- Surface
- Tab
- Autonomy
- Lowest - predicts your next edit as you type
- Best for
- Staying in flow on code you're actively writing
- Surface
- Agent / ComposerCursor's own fast coding model, tuned for the editor and priced well below frontier models; the recommended day-to-day model for executing a plan.
- Autonomy
- High - plans, edits across files, runs the loop
- Best for
- Multi-file changes where you describe the goal, not the keystrokes
- Surface
- Background / Cloud Agent
- Autonomy
- Highest - runs a task to completion off your machine
- Best for
- Longer tasks you hand off and review as a diff or PR later
| Surface | Autonomy | Best for |
|---|---|---|
| Tab | Lowest - predicts your next edit as you type | Staying in flow on code you're actively writing |
| Agent / ComposerCursor's own fast coding model, tuned for the editor and priced well below frontier models; the recommended day-to-day model for executing a plan. | High - plans, edits across files, runs the loop | Multi-file changes where you describe the goal, not the keystrokes |
| Background / Cloud Agent | Highest - runs a task to completion off your machine | Longer tasks you hand off and review as a diff or PR later |
Same underlying ideas, different leashes. Match the surface to how much you want to stay in the loop.
If a screen asks you to explain how Cursor works, resist the urge to dive into model internals. Draw the loop - assemble, decide, act, observe, revise - then place Tab, Agent and a cloud agent on an autonomy axis. That shows you can teach the mental model, which is the actual job, not just that you've read a model card.
Takeaway. A coding agent is model + harness + tools running a decide-act-observe-revise loop; the harness, not the raw model, is where the agent's quality is built.
Self-check
QA developer says 'an agent is just a smarter autocomplete that edits files.' What single distinction would you teach to correct that and why does it matter?
Context, indexing and retrieval
After this you can explain why the agent sometimes 'doesn't see' the right code
The model only knows what made it into the context window - and the context window is small, expensive and curated by the harness, not by your whole repo.
This one mechanism explains the single most common developer complaint about coding agents: why didn't it use my other file? Teaching it well retires a whole category of support questions, which is direct DX value.
Why you can't just dump the repo
A serious codebase is millions of tokens. A context window is a few hundred thousand at best and every token costs latency and money. So the agent can never see everything and pretending otherwise is the root of the confusion.
- Repo size
- Often 1M–100M+ tokens - far beyond any model's window.
- Context window
- Finite (hundreds of thousands of tokens) and shared across prompt, code and conversation.
- Cost of a full dump
- Even if it fit, more irrelevant context means slower, more expensive and often worse answers.
- Consequence
- The harness must choose a small, relevant slice. That choice is retrieval.
Index, then retrievehow the slice gets chosen
Cursor builds an index of your codebase so it can find relevant code fast, then retrieves a curated slice into the context at request time. Two distinct stages and conflating them is a common teaching mistake.
Interactive diagram. Tab through its regions; each focused region shows its detail in the panel below.
Indexing is ahead-of-time; retrieval is per request. Only the assembled slice reaches the model - everything else is invisible.
- 1Index (ahead of time). The codebase is chunked and embedded so semantically related code can be looked up quickly. This happens in the background, not on every keystroke.
- 2Retrieve (per request). When you ask for something, the harness searches the index plus signals like open files and recent edits to assemble the most relevant snippets.
- 3Assemble. The retrieved slice, your prompt, the active file and any rules are packed into the context window the model actually reads.
- 4Generate. The model reasons over only that slice - anything not retrieved is invisible to it, full stop.
What indexing actually stores (the privacy answer)
Be precise about the mechanic, because it doubles as the most-cited security reassurance. On first open Cursor chunks the repo into functions/pieces and generates vector embeddings; the embeddings are hashed and stored, but the raw code is held only ephemerally and then deleted - the long-term store is just the vector DB. At prompt time, semantic search pulls the most relevant chunks into context. A .cursorignore file specifies files Cursor should never index or view, the control surface for sensitive code.
Other tools lean on grep (substring search), which is slow and degrades on a 2M-line codebase. Because Cursor indexes the whole repo into a vector DB, it understands what you semantically mean and stays fast - even an ambiguous prompt like "change the button to blue" returns an applicable result. This is what lets cloud agents work in very large repos: demoed on Grafana at ~2 million-plus lines and 30,000 files. The hard numbers are worth memorizing - they're the concrete answer to "does it scale?"
"It didn't see my other file" almost never means the model is broken. It means that file wasn't retrieved into context. The fix is usually mechanical: open the file, @-mention it or write a rule that points the agent at it. Note that @-mentioning guarantees a file lands in context rather than relying on semantic search to surface it - and you can @-mention a past chat too, which summarizes it and reads the transcript so you inherit the summary without carrying all prior context forward. Teaching developers to reason in terms of 'what's in context right now' turns a frustrating mystery into a debuggable system.
When a long session fills the window, the real context the next agent needs isn't the chat back-and-forth - it's the codebase, the commits, the new code and the docs the previous agent left. So the handoff move is to ask the agent to "summarize what you've done up to this point," copy that small text into a fresh agent and continue. You can also fork a chat (hover a message, fork from there) to branch with only part of the prior context - you can't selectively delete context, only fork. For long runs Cursor auto-detects a near-full window, compacts the key learnings and initializes a new agent to resume the same task.
How rules and AGENTS.md shape the slice
Retrieval is automatic, but you are not powerless over it. Cursor gives developers explicit levers to bias what lands in context and a DX Engineer should be able to teach when to reach for each.
Persistent instructions and pointers the agent should always honor for this project or path.
Use them to encode conventions and steer the agent toward the right files and patterns.
A project-level brief the agent reads: how the codebase is laid out, how to build and test, what to avoid.
Good for the orienting context every task needs - the README written for an agent.
Explicitly pull a file, folder or symbol into the current request's context.
The most direct fix when retrieval missed something you know is relevant.
Implicit signals that bias retrieval toward what you're working on.
Why keeping the relevant file open often quietly fixes a 'wrong context' problem.
The model isn't reading your repo. It's reading a small slice the harness retrieved for this request. If the agent missed a file, the question to ask isn't 'why is it dumb' - it's 'was that file in context?' Open it, @-mention it or add a rule and you've fixed it.
Takeaway. The model only sees the retrieved slice, never the whole repo - so 'it didn't see my file' is a retrieval problem you fix with open files, @-mentions, rules or AGENTS.md.
Self-check
Tool calling, MCP and acting on the world
After this you can explain how agents do more than write text
Tool calling is what lets a text model touch reality - run a command, edit a file, query a database, hit an API - by emitting a structured request the harness executes and feeds back.
Without tools, a model can only describe a fix. With tools, it can apply the fix, run the tests, read the failure and try again. This is the mechanism behind every agent demo a DX Engineer will ever ship.
How a tool call actually works
The model doesn't run anything itself. It emits a structured call against a tool the harness advertised and the harness runs it and returns the result.
{
"name": "run_terminal",
"description": "Run a shell command in the project root and return stdout/stderr.",
"input_schema": {
"type": "object",
"properties": {
"command": { "type": "string", "description": "The exact command to run." }
},
"required": ["command"]
}
}
// The model emits a call:
// run_terminal({ command: "npm test" })
// The harness executes it, captures output and appends the result
// to the context as the next observation the model reads.The model's reach into the world is exactly the set of tools the harness defines. Built-in tools cover files, search and the terminal. MCPModel Context Protocol. A standard that lets an AI agent pull in context from outside the repo, like Jira tickets or internal docs. is how you extend that set beyond Cursor's defaults.
MCP: one protocol, many systemsModel Context Protocol
MCPModel Context Protocol. A standard that lets an AI agent pull in context from outside the repo, like Jira tickets or internal docs. is an open standard for exposing tools and data to an agent. Instead of every system inventing its own integration, a tool author writes one MCP server and any MCP-aware agent can call it.
- Standardizes
- One protocol for tools, resources and prompts - so integrations compose instead of multiplying.
- Decouples
- Tool authors and agent builders work independently; the server doesn't care which agent calls it.
- Extends Cursor
- Connect the agent to a database, an internal API, a docs system, an issue tracker - without forking the editor.
- Teaches well
- A clean MCPModel Context Protocol. A standard that lets an AI agent pull in context from outside the repo, like Jira tickets or internal docs. server is a canonical demo: 'here's how to give the agent a new capability in 50 lines.'
Tool reliability is where demos die on stage. A model will call a tool exactly as its schema and description imply - so a vague description, a sloppy schema or an unhandled error reads to the model as a broken or confusing capability. Most 'the agent went haywire' moments trace back to tool design, not the model. Tight schemas, honest descriptions and errors that explain what to do next are the difference between a demo that lands and one that flails.
Sub-agents: parallel tools with isolated contextthe file-handoff mechanic
The other way an agent acts beyond text is by spawning sub-agents (shipped in Cursor 2.5). A parent agent runs smaller agents simultaneously for parallelizable, independent subtasks - each with its own context window. The mechanic that makes this efficient: each sub-agentA child agent a main agent spawns to work in parallel with its own context window, handing results back so the parent's context stays clean. writes its findings to a file, and the parent reads the file and pulls in only what's relevant, so the parent's window fills slowly. In one demo the parent used only ~16% of its window to spin up two sub-agents and summarize. This also solves the old multi-tab collision problem, where two agents editing the same file would block each other.
- Explore
- Understand the codebase - the default research helper.
- Bash
- Run terminal commands in isolation.
- Browser
- Drive the built-in browser.
- Custom
- Create your own via a 'create sub agent' skill - e.g. a Devil's Advocate, or the internal 'Oracle' pinned to the most expensive thinking modelA reasoning model (shown with a brain icon in Cursor's picker) that spends extra compute before answering; reach for it on complex, nuanced work and a standard model for fast, simple tasks.. Pick each sub-agentA child agent a main agent spawns to work in parallel with its own context window, handing results back so the parent's context stays clean.'s model (inherit or override) and keep it specialized.
Each writes to a file; the parent reads only what it needs.
The clean heuristic to teach: if task B is unrelated to task A, start a NEW chat (don't carry A's context into B). If B and C both depend on A's output but are unrelated to each other, use sub-agents - they parallelize, keep contexts isolated and hand back only results. MCPModel Context Protocol. A standard that lets an AI agent pull in context from outside the repo, like Jira tickets or internal docs. is the connective-tissue layer that keeps all of this inside one surface, and cloud agents inherit the MCP tools you connected client-side - but watch the anti-pattern: loading every tool of an MCP server can blow up the context window, so audit installed integrations if MCP is eating context.
The human-in-the-loop boundary
Cursor doesn't auto-apply everything silently. It asks before some actions and shows diffs you accept. Frame that as a design decision, not a weakness - because the honest version is the more persuasive one.
Running a command or editing files has real consequences; a checkpoint keeps the developer in control of irreversible moves.
Trust is earned by being reviewable, not by being opaque.
For low-risk, well-scoped or background tasks, fewer prompts means more flow.
The right boundary depends on blast radiusHow much breaks if a change goes wrong; the scope of potential damage. - the DX skill is teaching developers to set it deliberately.
If a work-trial demo asks you to wire up an MCPModel Context Protocol. A standard that lets an AI agent pull in context from outside the repo, like Jira tickets or internal docs. server, treat the schema and error messages as the deliverable, not an afterthought. Show a call that fails gracefully - a tool that returns 'no record found for id X, try listing first' instead of a stack trace - and narrate why that makes the agent more reliable. That single detail signals you understand agents at the level Cursor hires for.
Takeaway. Tools turn a text model into an actor; MCPModel Context Protocol. A standard that lets an AI agent pull in context from outside the repo, like Jira tickets or internal docs. standardizes those tools so one server reaches many agents - and reliability lives in schemas, descriptions and error handling, not the model.
Self-check
QAn MCPModel Context Protocol. A standard that lets an AI agent pull in context from outside the repo, like Jira tickets or internal docs.-backed demo keeps failing: the agent calls your tool with malformed arguments and then loops. Before blaming the model, what would you inspect and why?
Evals and failure modes
After this you can talk credibly about when and why agents fail
The fastest way to lose a developer's trust is to oversell. The fastest way to earn it is to name the failure modes plainly and then teach how to prompt around them.
Truth-seeking is a stated Cursor value and for a DX Engineer it's also a distribution strategy - developers can smell marketing and naming a real failure mode is what makes the rest of your content credible.
The failure modes you should be able to name cold
- Failure mode
- Hallucinated API
- What it looks like
- Calls a method or flag that doesn't exist, confidently
- How to prompt around it
- Give it the real source or docs in context; ask it to verify against the file before using a symbol
- Failure mode
- Stale context
- What it looks like
- Edits against an old version of a file it cached earlier
- How to prompt around it
- Re-reference the current file; keep the relevant file open so retrieval stays fresh
- Failure mode
- Over-eager edits
- What it looks like
- Changes more than asked - refactors unrelated code
- How to prompt around it
- Scope the request tightly; ask for a plan first, then approve a narrow diff
- Failure mode
- Lost-in-the-middle
- What it looks like
- Ignores instructions buried in a long context
- How to prompt around it
- Put the critical instruction near the end; shorten the context; use a rule
- Failure mode
- Runaway loop
- What it looks like
- Retries the same broken action without progress
- How to prompt around it
- Add a stop/verify step; intervene and reset; tighten the tool's error message
| Failure mode | What it looks like | How to prompt around it |
|---|---|---|
| Hallucinated API | Calls a method or flag that doesn't exist, confidently | Give it the real source or docs in context; ask it to verify against the file before using a symbol |
| Stale context | Edits against an old version of a file it cached earlier | Re-reference the current file; keep the relevant file open so retrieval stays fresh |
| Over-eager edits | Changes more than asked - refactors unrelated code | Scope the request tightly; ask for a plan first, then approve a narrow diff |
| Lost-in-the-middle | Ignores instructions buried in a long context | Put the critical instruction near the end; shorten the context; use a rule |
| Runaway loop | Retries the same broken action without progress | Add a stop/verify step; intervene and reset; tighten the tool's error message |
Memorize this table. Each row is a teaching artifact waiting to be written.
Interactive diagram. Tab through its regions; each focused region shows its detail in the panel below.
Rough ranking of how frequently each mode shows up in real agent use - know the top ones cold.
Two groups of models, two jobsmatch the model to the task
Before you can reason about which model is best, sort them by what they're for. The cleanest mental model splits the field into two groups. One group is async and high-reasoning - highly intelligent, strong at long-horizon work, more costly - the models you reach for when you're planning, auditing or running plan mode. The other group is fast synchronous executors: near-frontier intelligence at much higher speed, the implementers that do the work once a plan exists.
One is an async and high reasoning group. The next group are fast and synchronous workers. These are like the executors. They're like the implementers.
Strong reasoning, excellent at long-horizon tasks, more costly per token.
Reach for planning, plan mode and auditing - GPT-5.x and Opus 4.x sit here.
Near-frontier intelligence at much higher speed - the implementers.
Cursor's in-house ComposerCursor's own fast coding model, tuned for the editor and priced well below frontier models; the recommended day-to-day model for executing a plan. models (Composer 2Cursor's in-house agentic coding model: frontier-level coding quality at high speed and low cost, built as a software-engineering specialist rather than a general-purpose model. / 2.5) live here; fast and reliable at medium-difficulty work, with frontier fast variants for documentation.
Interactive widget. Tab through its controls; the result updates in the panel below as you change them.
Plan with a thinker, execute with a fast model.
Sort by job first - reasoning for planning, fast executor for implementation - then let Auto mode route per task when you don't want to choose.
The practical rule: don't ask "which model is best" in the abstract, ask "best at what." Use a high-reasoning model to produce the plan, then hand the implementation to a fast executor. When you don't want to choose, Auto modeA router that reads your prompt and picks a model for you, defaulting to Composer; you steer it with cues like "quickly" or "carefully". routes the model per task. This pairs with the failure-mode work above - a wrong-tier choice (a fast executor asked to do deep planning) shows up as the over-eager or runaway behavior in the table.
Why evals are essential and genuinely hard
An eval is how you know whether a change made the agent better or just different. For coding, that's harder than it sounds, because the task is open-ended - there are many correct programs and 'correct' often means 'passes tests a human would accept,' which is expensive to define at scale.
- Open-ended tasks have no single right answer, so exact-match scoring fails and you need behavioral checks (does it compile, do the tests pass, does a grader prefer it).
- Real codebases are messy and stateful; a benchmark that runs in a clean sandbox may not predict behavior in a million-line repo.
- Good evals are expensive to build and maintain and a stale or contaminated eval quietly lies to you about progress.
CursorBench: a real eval to anchor the conversationperformance AND token efficiency
When the eval discussion gets abstract, ground it in a named, real benchmark: Cursor built its own, CursorBenchCursor's internal benchmark that scores models on both task performance and token efficiency, not accuracy alone., which tests performance and token efficiency together - reflecting the market's shift toward price and efficiency, not just raw capability. The headline efficiency metric is "tokens per $100 spent." Concrete readings to cite: on CursorBench, GPT 5.4 has the best performance and sits mid-range on token spend, while lower-effort GPT 5.3 Codex variants use far fewer tokens at slightly lower performance (Codex 5.3 is highlighted as very token-efficient and coding-specific; Opus 4.6 is well-liked but pricier).
A single-axis benchmark ("who scores highest") hides the cost of getting there - a model that one-shots a feature while burning a billion tokens isn't efficient, and a cheap model that needs 100 re-prompts isn't either. CursorBenchCursor's internal benchmark that scores models on both task performance and token efficiency, not accuracy alone.'s performance-and-efficiency framing is the institutional version of the true-efficiency mindset: optimize for the right tokens, not the fewest. Citing it lets you choose models with data instead of vibes, which is exactly the credible posture the DX role rewards.
When you publish 'here's where the agent struggles and here's how to work with it,' you're not admitting weakness - you're handing developers a mental model that makes them more effective. That post outperforms a glossy one because it's true and the next thing you publish inherits the trust you just built. This is the DX version of truth-seeking: credibility compounds.
Turn a failure into an artifact
The most useful DX move is to take a known failure mode and ship the workaround as content. A 'lost-in-the-middle' bug becomes a short post on structuring long prompts. A runaway loop becomes a guide on stop conditions and verification.
- 1Reproduce it. Get a clean, minimal case of the failure that a reader can run.
- 2Explain the cause. Tie it back to a real mechanism - context limits, retrieval, tool design - not vague 'AI is unreliable.'
- 3Show the fix. Give the exact prompt, rule or tool change that works and show the before/after.
- 4Ship it. A post or a doc that turns a papercut into a repeatable technique is content that spreads because it's useful.
When an interviewer asks 'where do coding agents fall short,' don't hedge and don't trash the product. Name two or three specific modes from the table, explain the mechanism behind each and end with the workaround you'd teach. That arc - honest, mechanistic, actionable - is exactly the voice Cursor wants pointed at the developer community.
Takeaway. Name failure modes plainly, tie each to a real mechanism and ship the workaround as content - honesty about limits is what makes a DX Engineer's writing spread and stick.
Self-check
QWhy are evals for open-ended coding tasks fundamentally harder than, say, scoring a multiple-choice benchmark?
The competitive field
After this you can position Cursor honestly against the field
The job description wants opinions, not neutrality - but credibility with developers comes from fair, specific comparisons, not from trash-talking the competition.
A DX Engineer is the public face of Cursor's take on the space, so you need a defensible map of the landscape and a real point of view about where it's heading. Developers will fact-check you, so accuracy is non-negotiable.
The landscape, briefly
- Tool
- Cursor
- Shape
- AI-native editor with an integrated agent
- Where it's strong
- Editor + agent integration, ComposerCursor's own fast coding model, tuned for the editor and priced well below frontier models; the recommended day-to-day model for executing a plan., Tab quality, the SDK/harness, cloud agents
- Tool
- Claude Code
- Shape
- Terminal/CLI-first agent
- Where it's strong
- Living in the terminal and existing workflows; scriptable
- Tool
- GitHub Copilot
- Shape
- Assistant inside existing editors + GitHub
- Where it's strong
- Ubiquity, GitHub integration, enterprise reach
- Tool
- Windsurf
- Shape
- AI-native editor
- Where it's strong
- An editor-centric agent experience, a direct shape comparison to Cursor
- Tool
- Codex / CLI agents
- Shape
- Model-vendor agents and CLIs
- Where it's strong
- Tight coupling to a specific model and its capabilities
| Tool | Shape | Where it's strong |
|---|---|---|
| Cursor | AI-native editor with an integrated agent | Editor + agent integration, ComposerCursor's own fast coding model, tuned for the editor and priced well below frontier models; the recommended day-to-day model for executing a plan., Tab quality, the SDK/harness, cloud agents |
| Claude Code | Terminal/CLI-first agent | Living in the terminal and existing workflows; scriptable |
| GitHub Copilot | Assistant inside existing editors + GitHub | Ubiquity, GitHub integration, enterprise reach |
| Windsurf | AI-native editor | An editor-centric agent experience, a direct shape comparison to Cursor |
| Codex / CLI agents | Model-vendor agents and CLIs | Tight coupling to a specific model and its capabilities |
Describe shapes and strengths accurately. Getting a competitor's strength right is what makes your Cursor claims trustworthy.
Where Cursor differentiatesspecific, not slogans
The agent lives where you already read and write code, with full editor context, rather than bolted onto a separate surface.
The low-autonomy, high-frequency surface most developers touch constantly - a place small quality gaps compound into a felt difference.
Indexing, retrieval and a TypeScript Agent SDKA programmatic interface for running Cursor agents from your own scripts, services or CI, locally or in the cloud. that let developers build on the same machinery, not just consume it.
Hand off longer tasks to run off your machine and review the result as a diff or PR.
Never trash a competitor in public or in the interview. It reads as insecure, it ages badly as products change weekly and developers who use that tool will tune you out. Say what a competitor does well, then make a specific, falsifiable claim about where Cursor is better. 'Copilot has unmatched GitHub reach; Cursor's edge is the editor-and-agent integration and here's a workflow that shows it' beats any dunk.
Have a take on where it's going
The role rewards a distinctive, evidenced point of view. You don't need to be right about the future - you need a thesis you can defend with first-hand evidence and update when the evidence changes.
- Pick a thesis you actually believe - for example, that more work shifts to background agents reviewed as diffs or that the editor stays central because verification needs a human-readable surface.
- Ground it in something you've used and observed, not in a tweet you skimmed.
- State the conditions that would change your mind; truth-seekers hold opinions loosely and update in public.
Interactive diagram. Tab through its regions; each focused region shows its detail in the panel below.
Same question - 'why Cursor over Copilot?' - answered two ways. The left earns trust; the right loses it.
Claude Code is excellent if you live in the terminal and Copilot's GitHub reach is genuinely hard to beat. Where I think Cursor wins is the editor-and-agent integration - the agent has the full context of what I'm reading and editing and Tab keeps me in flow between agent runs. My bet is that the editor stays central, because someone still has to verify the diff and that needs a human-readable surface.
Walk in with one comparison you can make in detail and one thesis about the future you can defend. When asked 'how do you think about Copilot,' give the competitor its due, make a specific Cursor claim and offer a workflow that demonstrates it. Neutrality reads as not having used the tools; a fair, opinionated, evidenced take reads as the power user Cursor is hiring.
Takeaway. Map the field accurately, give competitors their due, make specific falsifiable claims about Cursor's edge and carry one defensible thesis about where the space is heading.