Tokens from the GitHub Copilot CLI (prefixed with `gho_`) can be used directly with the Copilot API without requiring a token exchange via /copilot_internal/v2/token (which returns HTTP 404 for these tokens). This fixes authentication for users who: - Installed the Copilot CLI (`npm install -g @github/copilot`) - Authenticated via `copilot auth login` - Set COPILOT_GITHUB_TOKEN or GH_TOKEN to their gho_ token The fix detects gho_ prefixed tokens and skips the exchange, caching them with an 8-hour TTL (matching typical OAuth token lifetimes). Also adds COPILOT_API_BASE_URL env var support for enterprise users whose proxy blocks api.individual.githubcopilot.com. Set this to your enterprise endpoint (e.g., https://api.business.githubcopilot.com). [AI-assisted] Tested with GitHub Copilot CLI 0.0.399 on WSL2. Closes #3437
102 lines
3.0 KiB
Markdown
102 lines
3.0 KiB
Markdown
---
|
|
summary: "Sign in to GitHub Copilot from OpenClaw using the device flow"
|
|
read_when:
|
|
- You want to use GitHub Copilot as a model provider
|
|
- You need the `openclaw models auth login-github-copilot` flow
|
|
- You already use the GitHub Copilot CLI
|
|
---
|
|
# Github Copilot
|
|
|
|
## What is GitHub Copilot?
|
|
|
|
GitHub Copilot is GitHub's AI coding assistant. It provides access to Copilot
|
|
models for your GitHub account and plan. OpenClaw can use Copilot as a model
|
|
provider in three different ways.
|
|
|
|
## Three ways to use Copilot in OpenClaw
|
|
|
|
### 1) Built-in GitHub Copilot provider (`github-copilot`)
|
|
|
|
Use the native device-login flow to obtain a GitHub token, then exchange it for
|
|
Copilot API tokens when OpenClaw runs. This is the **default** and simplest path
|
|
because it does not require VS Code.
|
|
|
|
### 2) Copilot CLI token (`gho_` tokens)
|
|
|
|
If you already use the [GitHub Copilot CLI](https://docs.github.com/en/copilot/using-github-copilot/using-github-copilot-in-the-command-line),
|
|
you can use its OAuth token directly. These tokens (prefixed with `gho_`) work
|
|
with the Copilot API without any additional exchange.
|
|
|
|
\`\`\`bash
|
|
# Install and authenticate the Copilot CLI
|
|
npm install -g @github/copilot
|
|
copilot auth login
|
|
|
|
# Get your token from ~/.copilot/config.json and set it.
|
|
# The file structure looks like:
|
|
# {
|
|
# "github.com": {
|
|
# "token": "gho_your_token_here",
|
|
# "user": "your_username"
|
|
# }
|
|
# }
|
|
# Use the value of github.com.token:
|
|
export COPILOT_GITHUB_TOKEN="gho_your_token_here"
|
|
\`\`\`
|
|
|
|
For **enterprise users** whose proxy blocks the individual endpoint, set the
|
|
base URL to your enterprise endpoint:
|
|
|
|
\`\`\`bash
|
|
export COPILOT_API_BASE_URL="https://api.business.githubcopilot.com"
|
|
\`\`\`
|
|
|
|
### 3) Copilot Proxy plugin (`copilot-proxy`)
|
|
|
|
Use the **Copilot Proxy** VS Code extension as a local bridge. OpenClaw talks to
|
|
the proxy's `/v1` endpoint and uses the model list you configure there. Choose
|
|
this when you already run Copilot Proxy in VS Code or need to route through it.
|
|
You must enable the plugin and keep the VS Code extension running.
|
|
|
|
Use GitHub Copilot as a model provider (`github-copilot`). The login command runs
|
|
the GitHub device flow, saves an auth profile, and updates your config to use that
|
|
profile.
|
|
|
|
## CLI setup
|
|
|
|
\`\`\`bash
|
|
openclaw models auth login-github-copilot
|
|
\`\`\`
|
|
|
|
You'll be prompted to visit a URL and enter a one-time code. Keep the terminal
|
|
open until it completes.
|
|
|
|
### Optional flags
|
|
|
|
\`\`\`bash
|
|
openclaw models auth login-github-copilot --profile-id github-copilot:work
|
|
openclaw models auth login-github-copilot --yes
|
|
\`\`\`
|
|
|
|
## Set a default model
|
|
|
|
\`\`\`bash
|
|
openclaw models set github-copilot/gpt-4o
|
|
\`\`\`
|
|
|
|
### Config snippet
|
|
|
|
\`\`\`json5
|
|
{
|
|
agents: { defaults: { model: { primary: "github-copilot/gpt-4o" } } }
|
|
}
|
|
\`\`\`
|
|
|
|
## Notes
|
|
|
|
- Requires an interactive TTY; run it directly in a terminal.
|
|
- Copilot model availability depends on your plan; if a model is rejected, try
|
|
another ID (for example \`github-copilot/gpt-4.1\`).
|
|
- The login stores a GitHub token in the auth profile store and exchanges it for a
|
|
Copilot API token when OpenClaw runs.
|