feat: add copilot-acp provider#8154
Conversation
Signed-off-by: Adrian Cole <adrian@tetrate.io>
cb61f72 to
de40be8
Compare
|
@michaelneale @DOsinga @alexhancock FYI this is the only ACP provider so far that eagerly persists ACP sessions on session/new. the other 3 only persist after first prompt. What this means is that for |
|
oops was wrong.. copilot does write logs even before a session has a prompt, but it doesn't support load really as everything is process-local. github/copilot-cli#1767 |
DOsinga
left a comment
There was a problem hiding this comment.
Looks good — clean, follows the existing ACP provider pattern exactly, CI passes.
One thought for a follow-up: now that we have three ACP providers (claude-acp, codex-acp, copilot-acp) that are structurally almost identical — same from_env skeleton, same ProviderDef impl, just different constants and mode/permission mappings — would it make sense to turn these into a declarative ACP provider type? Something like the existing declarative OpenAI-compatible providers, where each ACP provider is just a config struct (binary name, mode mapping, permission mapping, setup steps, etc.) and the shared from_env logic lives in one place.
Not blocking this PR on that — just curious what you think. You built the ACP infra so you'd know best whether the remaining differences (codex-acp's sandbox args, claude-acp's env_remove, etc.) make that awkward or whether they'd fit cleanly into a config-driven approach.
* origin/main: removed unused welcome route (#8196) fix: use build_host_url for GCP Vertex AI location fallback (#8185) fix: remove ui/acp/.npmrc to allow auth token inheritance fix(openai): use safely_parse_json for streaming tool arguments (#8208) feat: add copilot-acp provider (#8154) chore(deps): bump path-to-regexp from 8.3.0 to 8.4.0 in /evals/open-model-gym/mcp-harness (#8178) fix: add NODE_AUTH_TOKEN and always-auth (#8163) fix: i18n compile on windows (#8202)
Signed-off-by: Adrian Cole <adrian@tetrate.io> Signed-off-by: Cameron Yick <cameron.yick@datadoghq.com>
|
@DOsinga I completely agree. I will raise a pr on this |
* origin/main: (85 commits) docs: standardize on ~/.agents/skills/ as canonical skill path (#8239) feat: bump versions (already published) (#8240) Revert "fix: rename bin for the tui (#8231)" (#8238) docs: update reusable recipes docs (#8232) docs: add GOOSE_SHELL env var (#8233) feat(security): add egress logging inspector (#8149) blog: Adversary Mode — A Second Pair of Eyes on Every Tool Call (#8220) fix: rename bin for the tui (#8231) feat: goose serve (#8209) refactor: make --text mode independent of the normal TUI (#8210) refactor: handle complex streaming/scrolling with better rendering (#8214) Add Inference Mesh settings tab (#8094) only run windows compile on main branch (#8216) used simplified privacy info modal and removed unnecessary components (#8200) removed unused welcome route (#8196) fix: use build_host_url for GCP Vertex AI location fallback (#8185) fix: remove ui/acp/.npmrc to allow auth token inheritance fix(openai): use safely_parse_json for streaming tool arguments (#8208) feat: add copilot-acp provider (#8154) chore(deps): bump path-to-regexp from 8.3.0 to 8.4.0 in /evals/open-model-gym/mcp-harness (#8178) ... # Conflicts: # ui/desktop/.gitignore # ui/desktop/src/components/Layout/CondensedRenderer.tsx # ui/desktop/src/components/Layout/navigation/ChatSessionsDropdown.tsx # ui/desktop/src/components/Layout/navigation/SessionsList.tsx # ui/desktop/src/components/ParameterInputModal.tsx # ui/desktop/src/components/parameter/ParameterInput.tsx # ui/desktop/src/components/recipes/RecipeActivityEditor.tsx # ui/desktop/src/components/recipes/shared/CreateSubRecipeInline.tsx # ui/desktop/src/main.ts
Summary
Add an ACP provider for GitHub's Copilot CLI. Copilot CLI supports ACP natively via its
--acpflag.Notable limitations
mcpServersinsession/new(github/copilot-cli#1040)session/closeType of Change
AI Assistance
Testing
Provider integration tests
MCP tool tests skipped — github/copilot-cli#1040.
Goose CLI
Goose CLI — permission routing (approve mode)
Copilot-side logs (
~/.copilot/logs/)