Claude code vs windsurf is a comparison with a stale left-hand side. Windsurf became Devin Desktop on 2026-06-02, windsurf.com answers a 308 to devin.ai/desktop today, and the Cascade agent that made it famous has been retired. The comparison is still worth running — you are choosing between a terminal agent and an IDE with an agent manager — but the useful version is a migration read, and Claude Code's own CLI is blunt about it: claude import windsurf exits 1. Our best AI coding assistant comparison covers the wider field; this one covers the specific decision in front of a Windsurf user.
Key takeaways
- Windsurf was renamed Devin Desktop on 2026-06-02;
windsurf.comnow 308s todevin.ai/desktop. codeium.com301s towindsurf.com, so the live chain runs through three brand names to one product.claude import windsurfexits 1 and namescodex,geminiandcursoras the only sources.- Devin Desktop documents four instruction formats —
.windsurfrules,.windsurf/rules/,.devin/rules/andAGENTS.md. Claude Code documents one. - Its MCP config still lives at
~/.codeium/mcp_config.json, a home-level path carrying a brand retired two names ago.
Claude code vs windsurf: what you are actually comparing
Cognition acquired Windsurf in an agreement announced on 2025-07-14 and introduced Devin Desktop on 2026-06-02 as its next generation. The transition documentation is explicit that the editor, extensions, keybindings and workflows carry over, and that the change is a rebrand with the agent manager elevated to the primary surface. Cascade, the local agent, became Devin Local and remained available through July 2026.
So the honest framing is Claude Code against Devin Desktop. We have covered part of this ground before — our Cursor, Windsurf and Cline comparison tracked the rebrand from the editor side and is not re-run here. What is new is the configuration surface, which is where a switch actually costs you time.
The redirect chain, run today
Three HEAD requests, run on 2026-09-16.
curl -s -o /dev/null -w "%{http_code} -> %{redirect_url}" -I https://codeium.com
# → 301 -> https://windsurf.com/
curl -s -o /dev/null -w "%{http_code} -> %{redirect_url}" -I https://windsurf.com
# → 308 -> https://devin.ai/desktop
Unlike the archived-project redirects we have chased before, this chain lands somewhere real and the destination documents the transition. That is a functioning migration, not an abandonment — but it is two renames deep, and the file paths below have not caught up with either of them.
Claude Code will not import it
Claude Code 2.1.273 ships a config importer. Windsurf is not one of the things it imports.
claude import windsurf --dry-run # → Usage: claude import [codex|gemini|cursor] [--dry-run] [--yes[=<digest>]] # → exit 1
We checked three more unsupported names — cline, aider, copilot — and every one produced the identical usage line and the same exit 1. This is an unsupported-source path rather than anything specific to Windsurf, and it means there is no scripted route out.
npm run check:windsurf
That check re-runs the import attempt live on every invocation rather than quoting a transcript, because the command costs nothing: it fails argument parsing before a session starts. If Anthropic ever adds a windsurf source, the guard goes red and this section is wrong the same minute.
Instruction files, side by side
This is the asymmetry worth publishing. One product reads four formats including two competitors'; the other reads one.
| Devin Desktop (ex-Windsurf) | Claude Code | |
|---|---|---|
| Instruction files read | .windsurfrules, .windsurf/rules/, .devin/rules/, AGENTS.md | CLAUDE.md |
| Can import from | .cursor/rules .mdc files | codex, gemini, cursor |
| Precedence note | .devin/ takes precedence over .windsurf/ | single file, no contest |
Devin Desktop's own transition FAQ is the source for every cell in its column. The pattern reads as backward compatibility taken seriously: each rename left its rules format readable, so a user who never touches their config keeps working.
Claude Code's column is shorter but not closed. It does not auto-discover AGENTS.md: our four-arm AGENTS.md probe found that a project holding only that file cannot answer a question about its own contents once file-reading tools are denied. One @AGENTS.md line in CLAUDE.md fixes it, which is the detail that makes the row below matter.
Where the MCP config lands
The scopes differ, and the difference decides whether a teammate gets your servers.
Devin Desktop reads MCP configuration from ~/.codeium/mcp_config.json. That is a home-directory path, so it reaches one machine and git never sees it — the same shape we found in Cline's ~/.cline/mcp.json when auditing where each agent's config actually lands. It is also still named for Codeium, the brand two renames back.
Claude Code reads a project-scoped .mcp.json committed alongside the code. Our MCP setup walkthrough covers the trap on that side: the default claude mcp add scope is local, not project, so you get the committed file only when you ask for it.
Is there a windsurf terminal?
Not one that makes this a like-for-like comparison. Devin Desktop is an IDE whose default surface is an agent command center for managing local and cloud agents; Claude Code is a terminal process. Anyone searching for a windsurf terminal agent to set against Claude Code is looking for a product that does not exist under that name.
If a terminal-to-terminal comparison is what you need, the honest substitutes are Codex CLI, Aider or Cursor's CLI — though Aider has not shipped a commit since May, which narrows that list to two. Our claude code vs cursor 2026 migration audit is the closest neighbour to this article, and it has an importer to measure where this one does not.
Which one to pick
- You already write
AGENTS.md. Either product works and the switch is nearly free. Claude Code costs one import line; Devin Desktop costs nothing. - Your rules are in
.windsurfrulesor.windsurf/rules/. Staying is cheaper than moving, because nothing automates the move. Budget the rewrite honestly or standardise onAGENTS.mdfirst and switch afterwards. - You want MCP servers that arrive with a
git clone. Claude Code's project-scoped.mcp.jsondoes that; a home-levelmcp_config.jsondoes not. - You want the IDE. Devin Desktop is one and Claude Code is not. That is a real preference and no config table overrules it.
What we could not measure
Neither Windsurf nor Devin Desktop is installed on this machine. Every cell in the Devin Desktop column is read from vendor documentation and labelled as such in the fixture, and the check script asserts that no output-quality claim is licensed by it. There is no latency figure, no token figure and no code-quality comparison in this article, because there is no second install to produce one.
devin.ai returned 429 to our HEAD request. The redirect chain above stops at windsurf.com for that reason; the destination URL is what the Location header supplied, not something we fetched and confirmed rendered.
We did not verify the retirement of Cascade first-hand. The July 2026 date comes from the transition FAQ. Without an install there is nothing to run, and an undated vendor claim repeated as an observation would be exactly the failure this section exists to prevent.
Best practices
- Check the brand before the feature list. A comparison written against a renamed product is stale in ways its feature table will not show.
- Standardise on
AGENTS.mdbefore switching anything. It is the one format both sides read, and it turns a migration into a one-line change. - Run
claude import <source>before planning a move. Exit 1 in under a second is a cheaper answer than a half-finished migration. - Treat home-directory config as unshared. If it is not in the repository, exactly one machine has it.
- Re-check the redirects yourself.
npm run check:windsurfre-runs the live half; the chain is onecurl -Iaway from confirmation.
Conclusion
If you are searching claude code vs windsurf, the first thing to fix is the premise: Windsurf is Devin Desktop as of 2026-06-02, and the tool you would be leaving reads four instruction formats while the one you would be joining reads one. Move your rules into AGENTS.md first, bridge it with a single @AGENTS.md line, and the choice stops being a migration at all. If the terminal is what you actually want, read the claude code vs cursor 2026 audit next — that comparison still has two live products in it.
Frequently asked questions
Does Windsurf still exist in 2026?
Can Claude Code import my Windsurf configuration?
What rules files does Devin Desktop read?
Is there a Windsurf terminal agent to compare with Claude Code?
Should I move from Windsurf to Claude Code?
Muhammad Kashif
Founder and editor of Devventa, covering AI coding assistants, Next.js and the modern AI development stack.




