ACP Pro
A unified chat interface for AI coding agents in VS Code. Run multiple agent sessions side-by-side in tabs, stream tool calls and inline diffs, and share live sessions with teammates over a built-in bridge.
ACP Pro speaks the Agent Client Protocol (ACP), so it works with any ACP-compatible agent: Claude Code, GitHub Copilot CLI, Gemini CLI, Qwen Code, Auggie CLI, Codex CLI, OpenCode, Qoder CLI, and more.

Features
- One sidebar, many agents — Run Claude, Copilot, Gemini, Codex, Qwen, Auggie, Qoder, OpenCode, and OpenClaw side-by-side; pick a different agent per tab.
- Multi-tab sessions — Independent history, model, and permission mode in every tab; reattach to past sessions from the
+ menu.
- Live tool streaming — Watch
read, edit, bash, and web_search calls appear as they run, with inline file diffs and word-level highlights.
- Plans and thinking, separated — Execution plans render in a collapsible task panel; reasoning streams into its own thought block you can expand on demand.
- Smart composer —
/ for slash commands, @ for files and workspace mentions, drag/paste for attachments, and : after a path to pin a line range.
- Markdown answers — GitHub-Flavored Markdown with
highlight.js-powered code blocks for assistant replies.
- Always-on remote bridge — A built-in HTTP + WebSocket server exposes your tabs to a teammate's browser via a 6-character share code; pair with VS Code port forwarding for public access.
- Per-session controls — Switch permission mode (
default, acceptEdits, plan, bypassPermissions), cancel a turn with Esc, and queue follow-up prompts mid-stream.
- Status-bar telemetry — Per-session token usage and cost surface in the status bar; the bridge share link is one click away.
- Diagnostics built in — A preflight check warns when
npx or node is missing, and the Diagnostics command lists what's resolvable on your PATH.
Requirements
- VS Code 1.96 or later
- Node.js 20 or later (agents launched via
npx require a working Node toolchain on your PATH)
- An ACP-compatible agent. See Supported Agents — all defaults use
npx, so no manual install is required.
Quick Start
- Click the ACP Pro icon in the Activity Bar (it uses the VS Code
sparkle icon).
- The chat sidebar opens with an empty session. The default agent is Claude Code.
- Type a prompt and press Enter. The extension launches the agent via
npx on first use (subsequent runs are cached).
- Use the
+ button in the tab bar to open another session — you can switch to a different agent per tab.
Sharing a Session
The bridge starts automatically when the extension activates — there is no enable toggle.
- Look at the status bar for
$(broadcast) ACP <shareCode> (a fresh 6-character code is generated each activation).
- Click it to copy the share URL (
http://<host>:<port>?code=<shareCode>).
- Open the URL in a browser to load your live tabs in a read-only view.
- To share beyond LAN, enable VS Code port forwarding for the bridge port — the status bar URL updates to the forwarded address automatically.
Configuration
All settings live under acpPro.* and can be edited via VS Code Settings UI or settings.json.
| Setting |
Type |
Default |
Description |
acpPro.agents |
object |
9 built-in agents |
Map of agent name → transport config. Each entry has command+args+env (stdio) or url+headers (http). |
acpPro.defaultAgent |
string |
Claude Code |
Agent used for new tabs. |
acpPro.defaultModel |
string |
— |
Model to request from the agent (optional, agent-dependent). |
acpPro.defaultMode |
enum |
default |
Permission mode: default, acceptEdits, plan, bypassPermissions. |
acpPro.autoApproveDefault |
boolean |
false |
Auto-approve tool calls for new sessions. |
acpPro.bridge.port |
integer |
4545 |
Preferred TCP port. 0 = ephemeral. Falls back to ephemeral if busy. |
acpPro.bridge.listenHost |
enum |
127.0.0.1 |
127.0.0.1 (loopback only) or 0.0.0.0 (all interfaces). |
acpPro.soundOnPromptEnd |
boolean |
false |
Play a notification when an agent finishes. |
acpPro.notificationSound |
enum |
Abstract Chime |
Sound: Abstract Chime, Gentle Bell, Soft Ping, Digital Tone, None. |
Example: custom agent over stdio
{
"acpPro.agents": {
"My Local Agent": {
"command": "node",
"args": ["/path/to/my-agent.js", "--acp"],
"env": { "MY_AGENT_API_KEY": "sk-..." }
}
}
}
Example: remote agent over HTTP
{
"acpPro.agents": {
"Remote Agent": {
"transport": "http",
"url": "https://agent.example.com/acp",
"headers": { "Authorization": "Bearer sk-..." }
}
}
}
Bridge — Remote Session Sharing
ACP Pro embeds a tiny HTTP + WebSocket server that starts automatically with the extension. The first VS Code window of a user becomes the leader and binds the configured port; subsequent windows join as followers over loopback IPC.
- Status bar indicator —
$(broadcast) ACP <shareCode>. Click to copy the shareable URL.
- Loopback (
127.0.0.1) — URL resolves via vscode.env.asExternalUri, so VS Code port forwarding (Remote - Tunnels / Codespaces / SSH) automatically produces a public URL.
- All interfaces (
0.0.0.0) — URL resolves to the host's first non-loopback IPv4 address for LAN sharing.
- Auth — Every HTTP route and WebSocket upgrade validates the
?code=<shareCode> query.
- Lockfile —
~/.vscode/extensions/acp-pro/bridge.lock (mode 0600, ephemeral per session).
Supported Agents
Defaults shipped in acpPro.agents:
| Agent |
Command |
| Claude Code |
npx @agentclientprotocol/claude-agent-acp@latest |
| GitHub Copilot |
npx @github/copilot-language-server@latest --acp |
| Gemini CLI |
npx @google/gemini-cli@latest --experimental-acp |
| Qwen Code |
npx @qwen-code/qwen-code@latest --acp --experimental-skills |
| Auggie CLI |
npx @augmentcode/auggie@latest --acp |
| Qoder CLI |
npx @qoder-ai/qodercli@latest --acp |
| Codex CLI |
npx @zed-industries/codex-acp@latest |
| OpenCode |
npx opencode-ai@latest acp |
| OpenClaw |
npx openclaw acp |
Any agent that implements the Agent Client Protocol will work — just add it to acpPro.agents.
Commands
All commands are available via the Command Palette (Ctrl/Cmd+Shift+P):
| Command |
Title |
acp-pro.newTab |
ACP Pro: New Tab |
acp-pro.closeTab |
ACP Pro: Close Active Tab |
acp-pro.cancelTurn |
ACP Pro: Cancel Current Turn |
acp-pro.focusChatView |
ACP Pro: Focus Chat View |
acp-pro.copyShareInfo |
ACP Pro: Copy Bridge Share Link |
acp-pro.doctor |
ACP Pro: Diagnostics |
Keyboard Shortcuts
ACP Pro does not register any default keybindings. Interactions happen inside the chat webview:
- Enter — send prompt
- Shift+Enter — newline
- Esc — cancel the current turn
- / — open slash-command autocomplete
- @ — open file/mention autocomplete
Bind any command via keybindings.json — for example:
{
"key": "ctrl+alt+c",
"command": "acp-pro.copyShareInfo"
}
Troubleshooting
- Agent fails to start — Check the Output panel → "ACP Pro" channel. First run may take time while
npx downloads the agent package.
- Bridge port in use — The extension falls back to an ephemeral port and surfaces a warning. Set
acpPro.bridge.port to 0 to always use ephemeral.
- Share URL is
127.0.0.1 — That means asExternalUri did not produce a forwarded URL. Enable VS Code port forwarding for the bridge port, or switch acpPro.bridge.listenHost to 0.0.0.0.
- Stale lockfile — Delete
~/.vscode/extensions/acp-pro/bridge.lock and restart VS Code.
License
MIT © Duc Lv. See LICENSE.