Appearance
Copilot CLI 支持三种认证方式:交互式 OAuth 流(个人日常使用)、环境变量 Token(CI/CD 和自动化脚本)、GitHub CLI 接力(如果你已经登录了 gh CLI)。本页介绍各方式的配置步骤和适用场景。
GitHub Copilot CLI 认证:OAuth、Token 和 CI/CD 三种方式
三种认证方式
| 方式 | 适合场景 |
|---|---|
| OAuth 设备流 | 个人开发机,交互式登录,最简单 |
| 环境变量 Token | CI/CD、Docker 容器、无头服务器 |
| GitHub CLI 接力 | 已经用 gh CLI 登录过 GitHub |
方式一:OAuth 设备流(推荐个人使用)
在终端运行:
bashcopilot login或在 CLI 内输入
/loginCLI 会显示一个一次性验证码,并自动打开浏览器
在浏览器中输入验证码,完成 GitHub 账号授权
终端显示「Signed in successfully」表示成功
企业账号(GHE.com):
bash
copilot login --host SUBDOMAIN.ghe.com凭据保存在系统 OS 密钥链中,下次运行无需重新登录。
方式二:环境变量 Token(CI/CD 推荐)
在 GitHub 创建 Fine-grained Personal Access Token:
- 访问
https://github.com/settings/personal-access-tokens/new - 权限:勾选 Copilot Requests
- 设置过期时间
- 访问
设置环境变量(三个变量,任一有值即可):
bashexport COPILOT_GITHUB_TOKEN="github_pat_xxx" # 或 export GH_TOKEN="github_pat_xxx" # 或 export GITHUB_TOKEN="github_pat_xxx"运行
copilot时不会弹出登录提示,直接使用 Token
支持的 Token 类型:
| Token 类型 | 前缀 | 是否支持 |
|---|---|---|
| OAuth(设备流) | gho_ | ✅ |
| Fine-grained PAT | github_pat_ | ✅(需要 Copilot Requests 权限) |
| GitHub App 用户 Token | ghu_ | ✅ |
| Classic PAT | ghp_ | ❌ 不支持 |
方式三:GitHub CLI 接力
如果你已经安装并登录了 gh CLI,Copilot CLI 会自动复用 gh 的凭据:
确认
gh已登录:bashgh auth status直接运行
copilot,会自动使用gh的凭据在 CLI 内用
/user命令确认当前用户
凭据查找优先级
1. COPILOT_GITHUB_TOKEN 环境变量
2. GH_TOKEN 环境变量
3. GITHUB_TOKEN 环境变量
4. OS 密钥链中的 OAuth Token
5. GitHub CLI 的凭据(fallback)环境变量会静默覆盖已存储的 OAuth Token,在同时设置两者时注意优先级。
多账号切换
查看已登录的账号:
/user list切换账号:
/user switch添加另一个账号:
bash
copilot login或在 CLI 内:
/login登出
在 CLI 内运行:
/logout撤销 GitHub 端的授权:访问 https://github.com/settings/applications → Authorized OAuth Apps → 撤销「Copilot CLI」。
离线模式
需要在不联网的情况下使用(配合自带模型 BYOK):
bash
export COPILOT_OFFLINE=true离线模式下:
- 不会联系 GitHub 进行认证
- 只使用你配置的 BYOK 模型
- 禁用遥测数据上传
/delegate、GitHub MCP Server、GitHub Code Search 不可用
常见问题
Q: 在 GitHub Actions 里怎么使用 Copilot CLI?
A: 设置 COPILOT_GITHUB_TOKEN 或 GH_TOKEN 环境变量,值来自 GitHub Actions secrets。示例:
yaml
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_TOKEN }}Q: Token 过期了,CLI 会有什么提示?
A: CLI 会提示认证失败,运行 /login 或 copilot login 重新认证即可。定期检查 Token 过期时间,在到期前更新。
Q: 换了 GitHub 账号,怎么确保 CLI 用的是新账号?
A: 先运行 /logout 登出旧账号,再运行 /login 用新账号登录。或者设置 COPILOT_GITHUB_TOKEN 环境变量直接指定新 Token。