Skip to content
Tool comparisons · 5 min read

Cursor, Copilot, Claude Code: assistants compared

These tools write code well. The differences that matter are about scope: how much of your system each one can hold in its head at once.

An AI coding assistant is a different product from an AI app builder. App builders make something from nothing. Assistants work inside a codebase that already exists, alongside someone who can read it.

The category is mature enough that raw code quality is no longer the differentiator. They are all good at writing a function. What separates them is how much of your system each one can see and act on at once.

The scope ladder

Every assistant sits somewhere on a ladder from "completes the line you are typing" to "executes a multi-file task on its own". Higher on the ladder means more leverage and more blast radius.

ToolWorks at the level ofBest forWhat you supervise
GitHub CopilotThe line, the file, and (in agent mode) a whole taskBroad rollout: it is the low-friction, compliance-friendly defaultA suggestion, or a delegated task's result
CursorThe file and the project, with retrieval across itMulti-file edits where you stay in the loopA diff, before you accept it
Devin Desktop (formerly Windsurf)The project, with an agentic edit loopLarger refactors that touch several filesA proposed change set
Claude CodeThe repository and the terminal: it can run thingsWhole tasks: implement, run the tests, fix what failedThe outcome, and the commit
Verified against vendor documentation on 9 August 2026. These products iterate constantly, so treat this as a map of approaches rather than a current feature matrix, and re-check before acting on it.

Moving up the ladder is a real trade, not a straight upgrade. Line-level completion is nearly impossible to get badly wrong and saves you minutes. Repository-level agents save you hours and can be wrong in ways that take a while to notice.

Choosing by how you work

01

You already know exactly what to write

Copilot, in completion mode. The lowest overhead per keystroke, and you catch mistakes instantly because you were about to write the correct version anyway. It has an agent mode too, but that is a different row of this table, not this one.

02

You are working across several files at once

Cursor or Devin Desktop. Project-level retrieval is the difference between an assistant that suggests a plausible function and one that suggests the function your codebase already has a convention for.

03

You want to hand over a whole task

Claude Code, or any agent that can run your tests. The ability to execute is what turns "here is some code" into "here is a change that passes".

04

You cannot read the output

None of these, on their own. Every one of them assumes a reviewer. See staying in control of software you cannot read.

What none of them track

Here is the thing they have in common, and it is not a criticism of any individual product. It is a property of the category.

An assistant's context is the code. It reads your files, and it is extremely good at answering "what does this codebase do?" What it cannot read is the thing that was never written down: what the codebase was supposed to do.

The payments service must never be called directly from the frontend. It goes through the API gateway, because that is where the audit log lives.

That rule exists in someone's head, and maybe in a diagram in a document that has not been opened since March. An assistant that reads only code will happily wire the frontend straight to payments, because nothing in the files says not to. The code compiles. The tests pass. The audit log has a hole in it.

Making the rules readable

The practical fix is to stop keeping architecture in your head and start keeping it somewhere both you and the tools can read.

  • Write the rules down as rules, not prose. "Frontend must not import payments directly" is checkable. A paragraph in a wiki is not.
  • Put them next to the code, in the repository, so they are versioned with the thing they describe.
  • Check them automatically, on every change, so a violation is a failed check rather than something spotted in review three weeks later.
  • Keep a map of the system that is generated from the code, so it cannot quietly stop being true.

That last point is what Graphlit does. It reads an existing repository, produces a typed graph of the services, routes, tables and the calls between them, and lets you declare rules on top of it, which are then enforced on every change.

~/work/acme-store · import

You do not have to start from a drawing.

Point it at a repository that already exists (a local folder, a git URL, or an upload) and the same graph comes out the other side.

Importing an existing repository into a typed architecture graph.

It is not a replacement for the assistants above; it runs alongside them. They write the code. The graph is what says whether the code they wrote still fits the system you meant to build.

Common questions

Is Cursor better than GitHub Copilot?

They overlap more than they used to. Copilot now has an agent mode that edits across files, so the old line between them has blurred. Copilot is still the lowest-friction option for a large team and the safest for compliance; Cursor is generally preferred by developers working in bursts of whole-feature changes. Both are good; the deciding factor is usually the team, not the tool.

Can AI coding assistants work on large existing codebases?

Yes, and that is where they earn the most, but the limitation is context. They can read the code and cannot read undocumented intent: the architectural rules that live in people's heads. On a large codebase that gap is where the expensive mistakes come from.

Do AI assistants introduce security vulnerabilities?

They can, in the same way any fast-moving contributor can. The higher risk is not exotic bugs but ordinary ones at scale: a missing authorisation check on one route out of forty. That is why review and automated checks matter more, not less, as the volume of generated code goes up.

Draw it. Then keep it true.

Graphlit turns an architecture drawing into a typed graph, builds against it, and proves the code still matches. Free to start.

Keep reading