Claude ACP for Copilot
Run Claude models from your own Claude plan inside GitHub Copilot Chat.
The extension runs Anthropic's official ACP adapter (@agentclientprotocol/claude-agent-acp) as a local process. Copilot keeps the agent loop, tools, approvals and diffs; Claude is the model driving them. It adds a Claude Agent group to the model picker, with Thinking Effort levels, streaming, cancellation, image attachments and token usage.
Unofficial. Not affiliated with Anthropic or GitHub. "Claude" and "GitHub Copilot" are trademarks of their owners.
Your account. Use your own credentials. Anthropic's terms for your account type decide which credentials may be used with which tools. Browser sign-ins stay in Anthropic's CLI, which keeps the tokens; the extension never sees them. The extension makes no Anthropic API requests itself.
Requirements
- VS Code 1.105 or newer with GitHub Copilot Chat, in a trusted workspace (not Restricted Mode or a virtual workspace).
- npm and network access to the npm registry, for the first install only. Nothing is installed globally.
Getting started
- Run Claude ACP: Set Up, or accept the prompt after installing. It downloads the pinned, integrity-checked adapter once and starts it.
- Run Claude ACP: Sign In if you are not signed in.
- In Copilot Chat, pick a model under Claude Agent.
Logs go to the Claude ACP output channel. Set the level to Debug to also see tool titles and permission requests.
Signing in
| Method |
Billing |
| Claude subscription (browser sign-in) |
Your Claude plan, with 5-hour and weekly limits |
| Anthropic Console (browser sign-in) |
Per token, against Console credits |
| Anthropic API key (saved in OS keychain, never in settings or logs) |
Per token, against the key's account |
- By default (
claudeAcp.authPreference = auto), a saved key beats a signed-in account. An ANTHROPIC_API_KEY set in the environment VS Code starts from is used regardless.
- Saving or removing a key restarts the agent. Choosing a browser sign-in while a key is saved asks whether to remove the key.
- Per-token accounts have no plan limits, so the usage item hides itself.
Commands
| Command |
What it does |
Claude ACP: Set Up |
Installs the adapter if needed, starts the agent, refreshes models |
Claude ACP: Sign In (Subscription, Console or API Key) |
Runs the chosen sign-in method |
Claude ACP: Set Anthropic API Key |
Saves a key and restarts the agent |
Claude ACP: Remove Anthropic API Key |
Deletes the saved key; the signed-in account is used instead |
Claude ACP: Restart Agent |
Restarts the agent, dropping cached models and sessions |
Claude ACP: Show Account |
Shows which credentials are in use |
Claude ACP: Refresh Usage |
Re-reads the plan limits in the status bar |
Settings
| Setting |
Default |
Meaning |
claudeAcp.permissionMode |
auto |
auto approves the first allow_once (or allow_always) option. ask shows the options; no answer within five minutes declines. Machine-scoped. |
claudeAcp.authPreference |
auto |
auto and apiKey use a saved key; oauth ignores it and ANTHROPIC_API_KEY. Restarts the agent. Machine-scoped. |
claudeAcp.usage.showInStatusBar |
true |
Shows 5-hour and weekly plan usage, warning at 80% and erroring at 95%. Read without a model call. |
How it works
- Copilot's tools reach the agent through a loopback MCP bridge on
127.0.0.1, with one token per session. Tool calls run through Copilot's confirmations and are refused when no open chat can run them. The agent's own tools are disabled. Requests with an Origin header or a non-loopback Host are refused.
- One ACP session per workspace folder. If a chat's history no longer matches what the session has seen, the session is rebuilt from recent messages.
- Short requests such as
initialize time out. After three failed starts in a row, the agent stays down until Claude ACP: Restart Agent.
Troubleshooting
- No models. Run Set Up. If it still fails, check the Claude ACP output channel, then restart the agent.
- Sign-in required. Run Sign In. After a browser sign-in, close the terminal or restart the agent.
- Authentication error after saving a key. The key may be wrong, revoked or out of credit. Set it again, or remove it.
- npm not found. Put npm on
PATH, then reload the window.
- Adapter update breaks turns. The version is pinned. Delete
<globalStorage>/adapter and reload.
Privacy
- The adapter, its logs and a version marker live in global storage. API keys live in secret storage and reach only the local agent process.
- Conversation text stays in memory and goes only to the local agent process.
- No telemetry. Logs never record your email address or organization.
License
MIT. See LICENSE.
| |