VCode home

The seven agents and what each one can do

Agents: claude, codex, opencode, cursor, devin, copilot, muse · On: phone, desktop

A tab runs one agent: claude, codex, opencode, cursor, devin, copilot or muse. They answer in the same transcript and take the same controls, but they do not support the same things, and VCode turns a control off rather than let you press something that would fail.

Why you would use it

You are choosing which agent to open a tab with, or you pressed a control on one agent and it was missing or disabled on another. This page is the table of what each one supports.

How to use it

  1. Open the agent picker beside the composer (#agentpick). It shows the agent's mark and name, and opens the slash panel on its Agent slot, under Agent for this tab, where the running agent reads running this tab now.
  2. Pick an agent. Picking a different one hands the tab over. See hand-a-tab-to-another-agent. The panel then shows that agent's models and effort.
  3. To start a tab on a given agent instead, use the new-thread form or /new.

The agent menu listing Claude Code, Codex, OpenCode, Cursor and Devin, each with its own mark and a line saying what picking it does.

What you see

Each agent has its own mark, used in the tab strip, the usage meters, the assistant cards and the agent picker. The names the server sends are Claude Code, Codex, OpenCode, Cursor, Devin, Copilot and Muse. An eighth agent, Mock, is marked synthetic: it exists for tests, is kept selectable, and is left out of the usage meters. Claude Code, Codex, Cursor, Devin, Copilot and Muse show · log in in the new-thread picker when their CLI is not logged in; see Log in to an agent from your phone and Log in to Cursor from your phone. Devin's login is on log-in-to-an-agent too.

An agent only appears if the server has its adapter configured. One whose CLI is not installed on the workstation still appears, as Install <agent> in the new-thread picker; see Install an agent from your phone.

Options and settings

Capability claude codex opencode cursor devin copilot muse What it means for you
liveModelSwitch no yes no no no no yes Whether a model change applies without restarting the agent process
effort yes yes yes no yes yes yes The effort dial does something
steerMidTurn yes yes yes no yes yes yes A message can join the turn already running
interrupt yes yes yes yes yes yes yes Stop ends the turn
resume yes yes yes yes yes yes yes The vendor session is picked up again after a restart
fork no yes no no yes (copied as text) no yes (copied as text) Whether a vendor session can fork into a new tab
realDiffs no yes yes yes yes yes no Edits arrive as patches instead of being synthesized
plan yes yes yes yes yes yes yes The plan strip is fed by the agent's own todo tool
usage yes yes no no yes (context only) no yes The agent has account usage windows to meter
compact yes yes yes no yes yes yes The agent compacts itself; without it VCode compacts by asking for a summary and starting a new session (auto compact)
approvals yes yes yes yes yes yes yes Below Full, a request shows as a card you answer (permission levels)
subagents yes yes no yes yes yes yes Subagents reach the subagent strip
attachments yes yes yes yes yes yes yes Images and files can ride with a message

Other per-agent differences:

Thing Behaviour
Images claude, opencode and devin take them inline as base64; copilot and muse take them inline with the message; codex takes a file path (localImage), so a large screenshot costs nothing on the wire
Compaction channel claude, opencode, devin and copilot get a /compact prompt (devin's own compaction shows as compacting context…, copilot's as context compacted); codex uses thread/compact/start; muse uses session/compact; cursor is asked for a summary, and its next message starts a new session carrying it
/compact typed by you Sent through to claude and opencode. On codex, cursor and devin VCode runs the compaction itself; on devin that sends Devin its own /compact, on copilot it sends Copilot its own /compact, and on muse VCode runs Muse's session/compact
Session adoption claude, codex, cursor, devin, copilot and muse. Cursor resumes its ACP session and imports no old cards; devin reads its session's replay over ACP; adopting an opencode session is refused with resume does not support opencode sessions
Usage meters Muse has a card with its session and weekly windows. No row for opencode, devin or copilot: they report no account windows. Devin's and Copilot's context figures still feed the context meter
Steering devin sends a steered message into the running turn at once; copilot joins a steered message to the turn already running; muse joins one with turn/steer. claude reads a steered message between tool calls and marks it waiting for Claude to read it until then; codex and opencode take it in with no mark, opencode at its next step; cursor cannot, so on a cursor tab every message queues

Limits and known gaps