Skip to content

Copilot CLI 支持三种认证方式:交互式 OAuth 流(个人日常使用)、环境变量 Token(CI/CD 和自动化脚本)、GitHub CLI 接力(如果你已经登录了 gh CLI)。本页介绍各方式的配置步骤和适用场景。

GitHub Copilot CLI 认证:OAuth、Token 和 CI/CD 三种方式

三种认证方式

方式适合场景
OAuth 设备流个人开发机,交互式登录,最简单
环境变量 TokenCI/CD、Docker 容器、无头服务器
GitHub CLI 接力已经用 gh CLI 登录过 GitHub

方式一:OAuth 设备流(推荐个人使用)

  1. 在终端运行:

    bash
    copilot login

    或在 CLI 内输入 /login

  2. CLI 会显示一个一次性验证码,并自动打开浏览器

  3. 在浏览器中输入验证码,完成 GitHub 账号授权

  4. 终端显示「Signed in successfully」表示成功

企业账号(GHE.com)

bash
copilot login --host SUBDOMAIN.ghe.com

凭据保存在系统 OS 密钥链中,下次运行无需重新登录。

方式二:环境变量 Token(CI/CD 推荐)

  1. 在 GitHub 创建 Fine-grained Personal Access Token:

    • 访问 https://github.com/settings/personal-access-tokens/new
    • 权限:勾选 Copilot Requests
    • 设置过期时间
  2. 设置环境变量(三个变量,任一有值即可):

    bash
    export COPILOT_GITHUB_TOKEN="github_pat_xxx"
    # 或
    export GH_TOKEN="github_pat_xxx"
    # 或
    export GITHUB_TOKEN="github_pat_xxx"
  3. 运行 copilot 时不会弹出登录提示,直接使用 Token

支持的 Token 类型

Token 类型前缀是否支持
OAuth(设备流)gho_
Fine-grained PATgithub_pat_✅(需要 Copilot Requests 权限)
GitHub App 用户 Tokenghu_
Classic PATghp_❌ 不支持

方式三:GitHub CLI 接力

如果你已经安装并登录了 gh CLI,Copilot CLI 会自动复用 gh 的凭据:

  1. 确认 gh 已登录:

    bash
    gh auth status
  2. 直接运行 copilot,会自动使用 gh 的凭据

  3. 在 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_TOKENGH_TOKEN 环境变量,值来自 GitHub Actions secrets。示例:

yaml
env:
  COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_TOKEN }}

Q: Token 过期了,CLI 会有什么提示?

A: CLI 会提示认证失败,运行 /logincopilot login 重新认证即可。定期检查 Token 过期时间,在到期前更新。

Q: 换了 GitHub 账号,怎么确保 CLI 用的是新账号?

A: 先运行 /logout 登出旧账号,再运行 /login 用新账号登录。或者设置 COPILOT_GITHUB_TOKEN 环境变量直接指定新 Token。