DEV Community

Anup Karanjkar
Anup Karanjkar

Posted on Originally published at wowhow.cloud

Devin Desktop ACP Setup — Codex, Claude, OpenCode in One IDE

Windsurf is gone; windsurf.com redirects to devin.ai. What replaced it on 2 June 2026 is Devin Desktop, and the part that matters for anyone who already pays for Claude Code or ChatGPT is the Agent Client Protocol (ACP) support: Devin Desktop can host Codex CLI, Claude Agent, OpenCode, Gemini CLI and JetBrains Junie as first-class agents in the same Kanban view, sharing context in the same Spaces as Devin itself. Setup is a registry file at ~/.windsurf/acp/registry.json, a toggle under Devin User Settings → Agents, and a restart. The catches: ACP agents need a Pro, Max or Teams plan, they do not work in Restricted Mode, and every external agent bills and logs under its own vendor, not Cognition's.

What ACP is and why this rebrand matters

ACP is an open-source protocol created by Zed Industries in August 2025 — the closest analogy is LSP, the Language Server Protocol, but for coding agents instead of language features. An editor that speaks ACP can drive any agent that speaks ACP: send it a task, stream its tool calls, show its diffs, approve its permissions. JetBrains, Google and GitHub adopted it over the following year. Devin Desktop adopting it is the biggest endorsement yet because Cognition is the vendor with the most to lose from you running a competitor's agent inside their IDE.

Alongside ACP, Cognition rewrote the local agent in Rust and says it is about 30% more token-efficient than the Windsurf agent it replaces. The Agent Command Center — a Kanban board of running local and cloud agents, their PRs and their context — is now the default surface, and Spaces let related agents share files and conversation history. That is the pitch: one window, several agents, shared context.

Setup: the exact steps

Devin Desktop looks for ACP agents in a registry file. The stable build reads ~/.windsurf/acp/registry.json; the Next (pre-release) build reads ~/.windsurf-next/acp/registry.json. You rarely edit it by hand — the Command Palette entry Open Local ACP Registry Config opens it for you, pre-populated with the popular agents.

1. Cmd+Shift+P (macOS) or Ctrl+Shift+P (Windows/Linux)
2. Devin User Settings
3. Agents tab
4. Toggle on: Codex CLI, Claude Agent, OpenCode (and any others you use)
5. Restart Devin Desktop
6. New conversation -> agent selector now lists the toggled agents
Enter fullscreen mode Exit fullscreen mode

The registry follows the ACP registry specification: each agent entry carries an id, a name, a version, a description and per-platform binary definitions. Supported targets are darwin-aarch64, darwin-x86_64, linux-aarch64, linux-x86_64, windows-aarch64 and windows-x86_64. If you maintain an internal agent, adding a stanza for it with a binary per platform is all the integration work required.

Authentication

Three ways, in the order we recommend. Use the agent's own /login slash command inside a Devin conversation — this stores credentials wherever that agent normally stores them, so a Claude Agent login here is the same login your terminal Claude Code uses. Or set environment variables for a specific agent from the "..." button on the Agents tab. Or, for reproducible team setups, put them in settings.json under devin.acp.agentEnv.<agentName>.

What each agent defaults to in September 2026

Claude Code, and therefore Claude Agent over ACP, defaults to Claude Opus 5. Codex defaults to GPT-5.6 Sol and has no standalone subscription — it is bundled into ChatGPT Plus at $20, Pro at $100 with 5× the usage, and the $200 tier at 20×. OpenCode is open source and brings whichever model keys you configure. Those defaults matter because Devin Desktop does not change them: you are getting exactly the agent you would get in a terminal, rendered in a nicer window.

What we ran and what we found

We gave the same three tasks to Devin, Claude Agent and Codex CLI inside one Space over two days: a dependency upgrade with test fallout, a feature touching four files, and a flaky-test investigation. Observations that generalise:

Shared context is real but shallow. Agents in a Space see the same files and can read each other's conversation summaries; they do not share tool state. If Claude Agent has a dev server running, Codex does not know, and will start a second one on the next port.

Permissions are per-agent. Each ACP agent surfaces its own permission prompts through Devin's UI. This is correct behaviour and also the main source of friction: three agents means three approval styles. Set your allow rules in each agent's own config (Claude Code's settings.json, Codex's config) rather than trying to manage it from Devin.

Billing is where you expect it. Cognition is explicit that when you use an external ACP agent, all agent operations are delegated to that agent under its own privacy policy and billing. Your Claude usage shows up on your Anthropic plan; your Codex usage on ChatGPT. Devin Desktop's own plan gates the feature — ACP needs Pro, Max or Teams — but does not meter the third-party tokens.

Restricted Mode disables ACP agents entirely. If your organisation runs Devin Desktop in Restricted Mode for compliance, this feature is not available to you, full stop.

Should you switch your workflow into it?

The strongest case for Devin Desktop is a team already split across agents: some engineers on Claude Code, some on Codex, a review bot on OpenCode. One IDE that shows all of them in a single board removes the "which terminal was that in" problem and gives managers a view they did not have. The strongest case against is that it adds a layer. Every ACP hop is one more place a permission prompt can stall or a stream can drop, and the agents themselves are not improved by being hosted.

The counter-argument from the editor-agnostic camp is fair: since JetBrains and Zed also speak ACP, you are not locked to Devin Desktop by adopting ACP. The protocol is the durable decision; the IDE is a preference. We would frame it that way to a team: standardise on ACP-capable agents now, pick the host later.

Before you commit engineering time, put your team's actual numbers into the coding assistant ROI calculator — three agents at once is a real cost, and the token counter will tell you what a shared-Space context costs per turn. For the Claude side specifically, the Claude Code Production Pack carries the settings and hook files we use so Claude Agent behaves identically in a terminal and inside Devin, and the MCP Server Pack covers the MCP configs that all three agents can share.

Registering an internal agent

The interesting use of ACP is not the big-name agents, which Devin pre-populates, but your own. If you have an internal agent — a release bot, a codebase-specific reviewer — that speaks ACP over stdio, one stanza in the registry makes it a peer of Codex and Claude in the same board. The shape, following the ACP registry specification, is an agent object with an identifier, display metadata and a binary per platform:

{
  "agents": [
    {
      "id": "acme-release-bot",
      "name": "Acme Release Bot",
      "version": "0.4.1",
      "description": "Cuts and verifies Acme service releases",
      "distribution": {
        "binary": {
          "darwin-aarch64": { "url": "https://releases.acme.internal/release-bot/0.4.1/darwin-arm64.tar.gz" },
          "linux-x86_64":   { "url": "https://releases.acme.internal/release-bot/0.4.1/linux-x64.tar.gz" }
        }
      }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Treat that as the shape, not gospel — check the current ACP registry schema before shipping, because field names have moved between protocol revisions. Once the stanza is in place, the agent appears on the Agents tab like any other, gets its environment through the same devin.acp.agentEnv mechanism, and shows up in Spaces alongside the commercial agents.

Team rollout checklist

From doing this for a twelve-person team: confirm everyone is on a Pro, Max or Teams seat first, because ACP silently does not exist on lower plans and the support ticket that generates is confusing. Decide per agent whether credentials are personal (/login) or shared (agentEnv), and write it down — mixing the two produces "works on my machine" failures that are actually billing-account mismatches. Standardise permission rules in each agent's own config and commit those files, so a new laptop gets identical behaviour. And keep one terminal-based run of each agent in CI as a control: if a task fails inside Devin but passes in the terminal, the problem is the ACP hop, not the agent, and that distinction saves hours.

Quick answers

Where is the ACP registry file?

~/.windsurf/acp/registry.json for Devin Desktop, ~/.windsurf-next/acp/registry.json for Devin Desktop Next. Open it from the Command Palette with "Open Local ACP Registry Config".

Which agents work out of the box?

Codex CLI, Claude Agent, OpenCode, JetBrains Junie and Gemini CLI, plus any custom agent you register.

Which plan do I need?

ACP support requires Devin Desktop Pro, Max or Teams. It is unavailable in Restricted Mode.

Who bills me for Claude or Codex usage inside Devin?

The agent's own vendor. Devin Desktop delegates the operation; Anthropic or OpenAI meter it.

Is Windsurf still available?

No. The Windsurf brand was retired on 2 June 2026 and windsurf.com redirects to devin.ai.

Read our earlier Claude Code vs Cursor vs Windsurf comparison for how the underlying agents differ; that analysis still holds with Windsurf renamed. Every product mentioned is available at wowhow.cloud — pay once, ship forever.

Originally published at wowhow.cloud

Top comments (0)