Windsurf vs Cursor: comparing AI editors by verifiable traits
We compare Windsurf and Cursor on what can be verified: agent modes, Tab, rules, MCP and bringing your own key, with an honest note where the docs are silent.
6 min · · IDE · сравнение
Windsurf and Cursor look like twins: both are built on a familiar editor, both have an agent, code completion and project rules. So the "windsurf vs cursor" query usually ends in arguments about taste. Below is a comparison without rankings, only on traits you can check in the documentation and in one day of work: agent modes, code completion, rules, MCP, bringing your own models and access from Russia. Where the documentation is silent, we say so.
First, about the names
In the current documentation at docs.windsurf.com the editor is presented as Devin Desktop, while plugins for other IDEs are still called Windsurf Plugins. Paths such as ~/.windsurf/plans remain in the documentation. We say "Windsurf" out of habit and for search queries, but you may see the new name in the interface and on the site. Subscription terms for both services change, so we do not quote prices or limits: check the current plan on the service's site.
Windsurf vs Cursor: what is shared and what differs
| Windsurf | Cursor | |
|---|---|---|
| Agent | Cascade, modes Code, Plan and Ask | Agent, a Plan mode, a Debug mode, "projects" with a coordinator |
| Completion and inline edits | Tab; Command (Cmd/Ctrl+I) | Tab |
| Rules | Memories and Rules, AGENTS.md, workflows | .cursor/rules (.mdc files), AGENTS.md, skills |
| MCP | Yes | Yes, mcp.json config |
| Own models | The SWE family | Composer, Grok |
| Parallel work | Agent Command Center, worktrees | Cloud agents, worktrees |
| Other IDEs | Plugins for JetBrains, VS Code, Vim and others | The agent in JetBrains through ACP |
| Settings import | From VS Code and Cursor | From VS Code |
What matters in practice.
The agent. In Windsurf, Plan mode writes the plan into a separate markdown file outside the repository, and you can continue from it in a new session. Ask mode only reads code. Cursor has a similar Plan mode, a Debug mode and "projects" where a coordinator agent splits a large piece of work among other agents. Both support action approval and terminal work.
Completion. Both products have their own models for Tab. The Windsurf documentation states separately that Tab runs on SWE-1-mini, optimized for latency. In Cursor, Tab also runs on built-in models. In both, completion does not switch to your key, so judge its quality only on your own code.
Rules. Both editors read AGENTS.md, so it is better to keep shared instructions there: you are not tied to one tool's format. For path-based fine-tuning Cursor uses .mdc files with metadata. If you are moving, check that a rule that worked with a model in one editor also fires in the other.
Own models and the gateway
This is where the documentation diverges, and it matters if you want to pay for tokens and not only for a subscription.
Cursor. The method is described in our Cursor documentation: Cursor Settings, Models, enable OpenAI API Key and paste the fetch_... key, enable Override OpenAI Base URL and enter https://api.zukko.pro/v1, add a model and click Verify. Then the limits from Cursor itself, as its help pages describe them:
- own keys work only with chat models, while Tab stays on the built-in ones;
- all requests go through Cursor's servers;
- Cursor's zero data retention policy does not apply to requests with your key;
- availability of own keys depends on the plan, see the terms on the Cursor site;
- model names Cursor already knows cannot be taken, so the gateway has second names in the documentation table.
One nuance for Claude. Overriding the OpenAI address means requests in the OpenAI format, and in it all Claude input is billed at the input price, with no cache discount. For GPT models the cache is visible in both formats.
Windsurf. The models documentation describes the in-house SWE models, choosing Claude and GPT models through a subscription, and a BYOK mode: you can add your own key only for a few Claude models listed there, in the subscription settings on the website, and only on individual plans. There is no field for your own API address (base URL), so the built-in agent cannot be pointed at a gateway. A workaround remains. The Cline documentation lists the editors it supports, and Windsurf and Cursor are among them. So you can install Cline inside either one and connect it to Zukko using the VS Code extensions guide. The editor's built-in agent and Cline then live side by side, each with its own bill.
Access from Russia and payment
Tokens on your own Zukko key are paid from a dollar balance: top-ups via SBP (the payment page charges 8.5% on top), MasterCard or cryptocurrency, so access from Russia goes through the gateway. Windsurf and Cursor subscriptions are paid to the services themselves; check their availability and payment methods on their sites, as this is outside the gateway.
What an agent costs on your own key in Cursor
A calculation as of October 18, 2026, not a forecast: a workday, 40 agent requests, each with 30,000 input tokens and 1,200 output tokens, OpenAI format, cache not counted.
- Claude Sonnet 5 (
claude-sonnet-5, added in Cursor under the second namecursor-sonnet-5from the documentation table; 0.4 / 2 per 1M): 30,000 × 0.4 + 1,200 × 2 = 12,000 + 2,400 = 14,400 micro-dollars per request, 14,400 × 40 = 576,000, which is $0.576 a day, $12.67 over 22 days. gpt-6.1-sol(0.27 / 1.32): 30,000 × 0.27 + 1,200 × 1.32 = 8,100 + 1,584 = 9,684 micro-dollars, 9,684 × 40 = 387,360, which is $0.387 a day, $8.52 over 22 days.
Look at real spend under "Usage" in the dashboard, and give the key a daily and monthly dollar limit. Choose a model by strength and price using the model table and your own tests: GET https://api.zukko.pro/v1/models.
What to test in one day
Take one real task and run it through both editors:
- An edit across three or four files with tests: how many times did you have to correct the agent?
- Completion in your language: does Tab match the project's style?
- An
AGENTS.mdwith your rules: is it honored? - Connecting the MCP server you need.
- Your own key: can you route requests to the gateway in your version?
- Subscription price and limits on the service's site today, not from someone else's review.
FAQ
Can I move settings from one editor to the other?
On first launch Windsurf can import VS Code or Cursor settings. Rules are easiest to move through AGENTS.md.
Does Windsurf support a gateway with an OpenAI-compatible address?
Per the Windsurf documentation, no: BYOK exists only for a few Claude models and without a field for your own address. To work through the gateway, use Cline inside the editor.
Do I need paid Cursor to use my own key?
Yes. Per Cursor's help pages, own keys are not available on every plan: the free plan and some paid ones do not include them. Cursor's terms change, so check its site.
What if I live in the terminal?
Then you may need neither of the two, and console agents may fit better. Comparisons: Claude Code vs Windsurf and Claude Code or Cursor.
zukko
Pay 25×
less
for Claude Code & ChatGPT
One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.
Related articles
- GitHub Copilot alternatives with your own API key: what to chooseCline, Kilo Code, Continue and Cursor work with your own key. We compare where they live, how they connect to a gateway and how to estimate spend.
- Zed AI vs Cursor: a fast editor against an AI fork of VS CodeZed and Cursor approach AI differently: one builds around its own editor and the ACP protocol, the other extends VS Code. We compare them and connect your own key.
- JetBrains AI vs Cursor: what a developer on IntelliJ and PyCharm should pickStay in a JetBrains IDE with AI Assistant or move to Cursor? We compare features, own-model support and costs, with step-by-step settings.
- Cline or Cursor: what to pick if you want to pay only for tokensCline is a free extension and you pay the provider for tokens. Cursor is sold as a product. We compare payment, context control and agent features and price a month of work.