The rename looks cosmetic, and that is the first trap. Windsurf did not disappear as a technology: Cognition keeps developing its IDE base under the name Devin Desktop. The editor, extensions, keybindings, language servers and familiar workflows are preserved, and an Agent Command Center was added on top of the IDE. From the outside it looks like the logo and the window title changed while everything else stayed the same. That impression is exactly what misleads: behind the same window there is now different internal machinery.
It helps to separate at once what was kept from what was added. The editor survives with all of its IDE machinery: extensions from the catalog, familiar shortcuts, language servers, the terminal, git. What is new is the Agent Command Center - a separate management surface that gathers local and cloud sessions into a single queue by status, but does not run the task itself. This is the first sign that Devin Desktop is not one window but a system of environments: a surface appeared whose job is to coordinate, not to write code.
The naive reading is understandable and therefore sticky: the same editor, a new brand, old habits carried over unchanged. From it grows the expectation that an instruction written for Windsurf and Cascade will keep working literally, that a command from the old interface will be in the same place, and that a permission granted once still applies as before. The interface plays along with that expectation: it deliberately keeps a familiar surface over an executor that has changed.
It breaks on the main practical change: Devin Local became the primary local agent and the successor to Cascade. The documentation calls it the primary local agent and a next-generation harness; new tabs pick it by default unless the user pinned another one, and it can fall back to Cascade when unavailable. So the word "agent" may now stand for one of two different executors with a different permission model and different behavior, and a command, file or permission without a note about the agent becomes ambiguous.
Hence the working technique: a new instruction must begin with the name of the chosen agent. Not "allow writing to src" but "for Devin Local allow writing to src"; not "set deny on rm" but "in Devin Local's permission rules set deny on rm". Naming the agent removes not a stylistic imprecision but a factual uncertainty: Cascade and Devin Local have different modes, different hooks and MCP mechanisms, a different memory store, and the same instruction gives a different result in the two environments.
Why it is built this way rather than reduced to a single agent. Cascade carries the legacy of the Windsurf era: checkpoints, memories, workflows and its own auto-execution model. Devin Local was rewritten from scratch around explicit permissions, a sandbox and subagents and, by Cognition's own claim, is up to 30% more token-efficient on typical tasks. Keeping both lines at once is the price of a transition period: old processes do not break in a single day, but the new process is already built on a different foundation.
The cost of ignoring this distinction is not abstract. An instruction without an agent name, inherited from Windsurf, may silently run in Devin Local under a different permission model - and what triggered a confirmation prompt in Cascade is in Devin Local either hard-blocked by a deny rule or, conversely, auto-approved by allow. The radius of that mistake is real edits in the repository, not a line in a log.
A dated caveat belongs precisely here. The announcement promised legacy Cascade through July 1, 2026, while at the date of this snapshot the interface and the documentation still describe it; actual availability depends on the release, the plan and team policy. So the book studies Cascade as a tool for migration and support of old projects, not as the recommended base of a new process - and any statement about its presence is checked against the current changelog, not against this page.
You should check the result of the transition not by the feeling that "it seems the same" but at a few concrete points. Open the selector and confirm which agent is chosen for the current tab. Match the stable changelog against the version you run. Look at the actual model picker and the usage page: the model catalog and prices change faster than a book. These four glances take a minute and remove most of the "for some reason" before the first task.
The typical failure is explaining new behavior with an old cause. A command "did not work" because it belonged to Cascade while the tab opened Devin Local; a permission "stopped applying" because the new agent has a different permission model; a feature "disappeared" because it was renamed or moved to the Next preview line. The sign in real work is simple: the phrase "it worked before" is uttered without naming which agent and which surface ran the task. Name the layer and the agent first - in most cases the answer is right there.