Three tools dominate the AI coding conversation right now. They look similar from the outside — autocomplete that's smarter than autocomplete, chat that knows your codebase, agents that can write whole files. The differences matter more once you're shipping with them.
I've used all three across real work over the past few months. The notes below say what each one is good for and what it isn't.
Copilot is the default for a reason
GitHub Copilot is the safest pick if you already live inside VS Code or a JetBrains IDE. It autocompletes inline as you type, it answers questions in a side panel, and the cognitive cost is low. You don't have to learn anything new. For boilerplate, scaffolding, and the kind of "I know what this should say but I don't want to type it" work, it's still hard to beat.
Where it stalls: anything that requires real reasoning across files. Copilot's chat mode has gotten better, but you can feel it lose the thread when a question touches more than two or three files. It's a great pair-programmer for the next 30 lines of code. It's a mediocre architect for the next 300.
Cost is $10–$19 a month for individuals depending on the tier. Enterprise pricing climbs from there.
Cursor is what happens when Copilot grows up
Cursor is a fork of VS Code with deeper hooks into the model. The headline feature is Composer (the agent mode), which can read multiple files, plan a change, and apply edits across your project. The chat knows where you are in the tree, and the @ references let you point it at specific files, folders, docs, or web URLs.
The trade-off is that it's a separate editor. If your team is standardized on JetBrains, this is a non-starter. If you're already on VS Code, switching takes about an afternoon and your extensions mostly carry over.
I use Cursor when I want a model to actually do work: refactor a module, port a file from one framework to another, write a feature from a markdown spec. It's noticeably better than Copilot for that kind of thing. The Pro plan is $20/month and includes faster requests on the frontier models.
One real annoyance: Cursor sometimes rewrites code you didn't ask it to rewrite. Keep your diffs small and review every change before you accept.
Claude Code lives somewhere else
Claude Code is a CLI. There's no IDE. You run claude in your terminal, point it at a project, and you have a coding agent with full read/write access to your files, the ability to run commands, and persistent context across the session.
This sounds like a worse Cursor. It isn't, for one specific reason: it doesn't try to live inside the editor. When you give Claude Code a task ("fix the failing test in auth/session.spec.ts"), it reads the file, reads the related files, runs the test, sees the failure, fixes it, and reruns until it passes. You watch it work.
For greenfield work and serious refactors, this loop is the best of the three. For the next 10 lines while you're staring at a function, it's overkill. Copilot wins there.
Pricing is bundled with a Claude Pro or Max subscription ($20–$100/month depending on the tier).
How I actually use them
- Inline autocomplete and small chat questions: Copilot. Latency is low and the surface area is small.
- Refactor this file, port this folder, build this feature from a spec inside an existing project: Cursor.
- Multi-step tasks that require running tests, reading logs, and debugging across the stack: Claude Code.
The bigger point: these aren't competing for the same job. They look like substitutes because they all market themselves as "AI for coding." In practice, you'll likely run two of them at once and not feel guilty about it.
What to try first
Start with Copilot if you've never used any of these. The learning curve is the shortest and useful suggestions show up inside a day.
Move to Cursor once Copilot starts hitting a ceiling on anything bigger than a function.
Install Claude Code if you've used both and keep wanting an AI that can take a paragraph of instructions and just go.
I'll come back to Claude Code specifically in a future post. There's a workflow around CLAUDE.md files and custom slash commands that takes it from "neat" to "I rely on this."