# Devin Desktop (formerly Windsurf) Setup

> **Last verified**: 2026-09-18 · 📄 Per official docs (Devin Desktop 3.10.31 (released 2026-09-16))

## At a glance

| Item | Details |
|---|---|
| Models you can use | depends on the mounted ACP agent: Claude ✅ (mount Claude Agent / Claude Code with env pointed at QCode) · GPT / Chinese models per-agent · Gemini ❌ |
| Protocol & Base URL | the agent's env `ANTHROPIC_BASE_URL=https://api.qcode.cc/api` |
| Where to configure | the Agents tab of Devin User Settings, or `~/.windsurf/acp/registry.json` (Windows: `%USERPROFILE%\AppData\Roaming\Code\User\acp\registry.json`); give an agent its environment through the `devin.acp.agentEnv.<agentName>` setting |
| Official docs | [docs.devin.ai](https://docs.devin.ai) |

> **⚠️ Windsurf was renamed.** On 2026-06-02 Cognition renamed **Windsurf to Devin Desktop** and
> shipped it as an over-the-air update. What the vendor promised item by item was plans, pricing,
> settings and extensions; keybindings and MCP connections are not individually guaranteed, and we
> did not verify them one by one. The original **Cascade agent has been removed**: the FAQ said at the
> time that it "remains available through July", but the removal actually landed in the
> **v3.9.19 changelog (September 8, 2026)** — "**Cascade** has been removed" — making
> **Devin Local the only agent built into Devin Desktop**.

[Devin Desktop](https://devin.ai/desktop) is now built around **[ACP (Agent Client Protocol)](/docs/ide/acp)**:
it acts as the host, and you attach any ACP-speaking agent — Claude Code, Codex CLI, OpenCode and
others. New capabilities include a Kanban-style Command Center, Spaces for grouping tasks, a local
local agent **Devin Local** (the vendor describes it as sharing the architecture of Devin CLI) and Codemaps.

## The right way to use QCode: ACP is the only route

Devin Desktop offers **no** BYOK field where you could type an arbitrary Base URL: searching the
official documentation index for BYOK / bring your own / custom endpoint / base URL / model override
returns **nothing**, and the model list is a fixed catalogue tied to your plan. To use your QCode key
and quota you have to **attach your own agent over ACP**:

> 🔑 Devin Desktop launches ACP agents as **child processes** on demand and talks to them over
> JSON-RPC on stdio (official wording). The two documented ways to give an agent environment
> variables are the "..." button in the **Agents** tab of Devin User Settings, and the
> `devin.acp.agentEnv.<agentName>` setting in `settings.json`. Whether the agent also inherits your
> shell environment is **not promised verbatim** by the vendor — usually true, not guaranteed, which is
> why step 1 puts the configuration into the agent's own file.

## Step 1: point Claude Code at QCode

```bash
export ANTHROPIC_BASE_URL="https://api.qcode.cc/api"
export ANTHROPIC_AUTH_TOKEN="cr_your_qcode_key"
```

From mainland China, use `https://asia.qcode.cc/api`.

> **More robust**: put these in the `env` block of `~/.claude/settings.json` rather than a shell
> profile — a GUI app launched from an icon does not read `~/.zshrc`, which is the most common
> failure. See [ACP Overview](/docs/ide/acp) and [Environment Variables](/docs/getting-started/environment).

Confirm the CLI works from a terminal first:

```bash
claude -p "reply with exactly: OK"
```

## Step 2: attach the agent inside Devin Desktop

**The only built-in agent is Devin Local.** The official docs list Codex CLI, Claude Agent, OpenCode,
Junie and Gemini CLI as *Example agents* — third-party ACP agents you can attach, **whose binaries you
must install yourself** (the docs state that, for security reasons, Devin Desktop does not download
agent distributions from the registry). Since v3.10.23 (2026-09-10) ACP is always enabled and the old
**Enable ACP** toggle is gone. How to attach:

- Command Palette (`Cmd/Ctrl + Shift + P`) → `Devin User Settings` → **Agents** tab → toggle on the
  ACP agents you want
- or edit the local registry: `~/.windsurf/acp/registry.json` on macOS / Linux
  (`~/.windsurf-next/acp/registry.json` for Devin Desktop Next), and
  `%USERPROFILE%\AppData\Roaming\Code\User\acp\registry.json` on Windows
- `Open Local ACP Registry Config` in the Command Palette opens that file directly; after editing, run
  `Reload ACP Connections` — no full restart needed

Keys and limits: [Devin's official ACP docs](https://docs.devin.ai/desktop/acp).

> ⚠️ Official warning: while a workspace is open in **Restricted Mode**, **every** agent — Devin Local
> and ACP agents alike — is unavailable, and hooks neither load nor run. Check this first when no agent
> shows up at all.

Once attached, open a session in Devin Desktop. A normal reply means it is spending your QCode quota.

## Verify traffic really goes to QCode

Open [probe.qcode.cc](https://probe.qcode.cc) and enter your API key. The session you just ran
should appear in the request list (with model, tokens and context length). **If it does not, the
agent did not inherit your environment** — go back to step 1 and use the
`~/.claude/settings.json` form.

## Troubleshooting

| Symptom | Cause | Fix |
|---------|-------|-----|
| Works in the terminal, fails to authenticate in Devin Desktop | GUI launch does not read the shell environment | Use the `env` block in `~/.claude/settings.json` |
| Cascade is gone | Removed in v3.9.19 (2026-09-08) | Use Devin Local, or attach an ACP agent |
| No field to type a Base URL into | The official docs have no BYOK / custom endpoint entry | Attach your agent over ACP |
| Nothing shows up in probe | The session did not go through QCode | Check that the agent inherited the environment |

## Related

- [ACP Overview](/docs/ide/acp) — the same setup also covers Zed and JetBrains
- [Environment Variables](/docs/getting-started/environment)
- [Endpoints & API Paths](/docs/getting-started/endpoints-and-api-paths)