Skip to content

feat: add GitHub Copilot CLI as supported ACP backend#264

Closed
Reese-max wants to merge 2 commits intoopenabdev:mainfrom
Reese-max:feat/copilot-support
Closed

feat: add GitHub Copilot CLI as supported ACP backend#264
Reese-max wants to merge 2 commits intoopenabdev:mainfrom
Reese-max:feat/copilot-support

Conversation

@Reese-max
Copy link
Copy Markdown

Summary

Add first-class support for GitHub Copilot CLI via its native --acp mode, following the same pattern as the existing Gemini integration.

Changes

File Change Description
Dockerfile.copilot NEW Runtime image with Copilot CLI installed via npm + gh CLI for auth
README.md MOD Add Copilot to backend table, Helm install example, manual config.toml example

How it works

OpenAB (Rust)
       │ stdio JSON-RPC (ACP protocol)
       ▼
  copilot --acp (native ACP server mode)
       │ Copilot SDK internal
       ▼
  GitHub Copilot service

No third-party adapter needed — Copilot CLI ships built-in ACP support.

Configuration

Helm

helm install openab openab/openab \
  --set agents.kiro.enabled=false \
  --set agents.copilot.discord.botToken="$DISCORD_BOT_TOKEN" \
  --set-string 'agents.copilot.discord.allowedChannels[0]=YOUR_CHANNEL_ID' \
  --set agents.copilot.image=ghcr.io/openabdev/openab-copilot:latest \
  --set agents.copilot.command=copilot \
  --set 'agents.copilot.args={--acp}' \
  --set agents.copilot.workingDir=/home/node

Manual config.toml

[agent]
command = "copilot"
args = ["--acp"]
working_dir = "/home/node"

Auth

# Inside the container or on the host
gh auth login          # GitHub OAuth
# or
copilot auth           # Copilot-specific auth

Tested capabilities

Feature Status
Basic chat
Model switching (8 models)
Mode switching (agent/plan/autopilot)
Tool execution
usage_update notifications
configOptions (filtered model list)

Add first-class support for GitHub Copilot CLI via its native `--acp`
mode, following the same pattern as the existing Gemini integration.

- Add `Dockerfile.copilot` with Copilot CLI installed via npm
- Add Copilot to the backend table in README
- Add Helm install example and manual config.toml example
- Auth: `gh auth login` or `copilot auth`

Copilot CLI ships built-in ACP support (`copilot --acp`) — no
third-party adapter needed. Config:

  [agent]
  command = "copilot"
  args = ["--acp"]
@Reese-max Reese-max requested a review from thepagent as a code owner April 13, 2026 02:53
Copilot AI review requested due to automatic review settings April 13, 2026 02:53
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds first-class support for running GitHub Copilot CLI as an ACP backend (via native copilot --acp), alongside the existing CLI backends.

Changes:

  • Add a new runtime Docker image (Dockerfile.copilot) that bundles Copilot CLI + gh for authentication.
  • Update README.md to list Copilot as a supported backend and document Helm/manual configuration examples.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
README.md Documents Copilot as a supported ACP backend and adds Helm/manual config examples.
Dockerfile.copilot Introduces a dedicated container image that installs Copilot CLI and gh and runs openab.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md Outdated
Comment on lines 170 to 176

# GitHub Copilot (native ACP — requires copilot CLI in PATH)
[agent]
command = "copilot"
args = ["--acp"]
working_dir = "/home/node"
env = { GEMINI_API_KEY = "${GEMINI_API_KEY}" }
Copy link

Copilot AI Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the manual config.toml examples, the Gemini block now ends right after args = ["--acp"], so working_dir / env are no longer shown for Gemini even though the following working_dir line appears intended for the Gemini example. This makes the sample config misleading; please keep Gemini’s working_dir (and env if needed) within the Gemini example block, and start the Copilot example as a separate, complete snippet.

Suggested change
# GitHub Copilot (native ACP — requires copilot CLI in PATH)
[agent]
command = "copilot"
args = ["--acp"]
working_dir = "/home/node"
env = { GEMINI_API_KEY = "${GEMINI_API_KEY}" }
working_dir = "/home/node"
env = { GEMINI_API_KEY = "${GEMINI_API_KEY}" }
# GitHub Copilot (native ACP — requires copilot CLI in PATH)
[agent]
command = "copilot"
args = ["--acp"]
working_dir = "/home/node"

Copilot uses AI. Check for mistakes.
Comment thread README.md Outdated
command = "copilot"
args = ["--acp"]
working_dir = "/home/node"
env = { GEMINI_API_KEY = "${GEMINI_API_KEY}" }
Copy link

Copilot AI Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Copilot config.toml example includes env = { GEMINI_API_KEY = "${GEMINI_API_KEY}" }, which appears to be copied from the Gemini section and is unrelated to Copilot auth. This will confuse users and may lead to incorrect setups; remove it or replace it with Copilot-relevant environment/auth guidance.

Suggested change
env = { GEMINI_API_KEY = "${GEMINI_API_KEY}" }

Copilot uses AI. Check for mistakes.
Comment thread Dockerfile.copilot Outdated
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl && rm -rf /var/lib/apt/lists/*

# Install GitHub Copilot CLI (native ACP support via --acp)
RUN npm install -g @githubnext/github-copilot-cli --retry 3
Copy link

Copilot AI Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The image installs @githubnext/github-copilot-cli without a version pin, making builds non-reproducible and potentially introducing breaking changes when the upstream package updates. Consider pinning to a known-good version (similar to the pinned dependencies in Dockerfile.claude / Dockerfile.codex) to improve release stability.

Suggested change
RUN npm install -g @githubnext/github-copilot-cli --retry 3
ARG GITHUB_COPILOT_CLI_VERSION=0.0.82
RUN npm install -g @githubnext/github-copilot-cli@${GITHUB_COPILOT_CLI_VERSION} --retry 3

Copilot uses AI. Check for mistakes.
- Dockerfile: @githubnext/github-copilot-cli → @github/copilot@1
  (the old package is deprecated; the new Copilot CLI v1.x ships
  native --acp support)
- README: fix Gemini config example that lost its working_dir and
  env fields when the Copilot block was inserted
- README: simplify auth to "gh auth login (GitHub OAuth)"
@Reese-max
Copy link
Copy Markdown
Author

Note for maintainer: Dockerfile.copilot needs to be added to the CI build matrix in .github/workflows/build.yml:

- { suffix: "-copilot", dockerfile: "Dockerfile.copilot", artifact: "copilot" }

I couldn't push this change because OAuth tokens can't modify workflow files (requires workflow scope). Happy to submit a separate PR if you grant the scope, or you can add this one line when merging.

@Reese-max
Copy link
Copy Markdown
Author

Closing — will resubmit after more thorough review and CI matrix fix.

@Reese-max Reese-max closed this Apr 13, 2026
@Reese-max Reese-max deleted the feat/copilot-support branch April 13, 2026 03:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants