关于身份验证
如果您使用自己的 LLM 提供商 API 密钥(BYOK),则无需 GitHub 验证。
对于任何其他 GitHub Copilot CLI 使用,都需要进行身份验证。
当需要身份验证时,Copilot CLI 支持三种方法。您使用的方法取决于是交互式工作还是在自动化环境中工作。
- OAuth 设备流程:交互式使用的默认且推荐方法。当您在 Copilot CLI 中运行
/login时,CLI 会生成一次性代码并指引您在浏览器中进行验证。这是最简便的验证方式。 - 环境变量:推荐用于 CI/CD 流水线、容器和非交互式环境。您将受支持的令牌设置为环境变量(
COPILOT_GITHUB_TOKEN、GH_TOKEN或GITHUB_TOKEN),CLI 会自动使用,无需提示。 - GitHub CLI 回退:如果您已安装并验证了 GitHub CLI(
gh)(注意:是ghCLI,而不是copilot),Copilot CLI 可以自动使用其令牌。这是最低优先级的方法,仅在未找到其他凭据时激活。
身份验证完成后,Copilot CLI 会记住您的登录信息,并自动在所有 Copilot API 请求中使用该令牌。您可以使用多个账户登录,CLI 会记住最近使用的账户。令牌的生命周期和过期时间取决于在您的账户或组织设置中创建令牌的方式。
未认证使用
如果您将 Copilot CLI 配置为使用自己的 LLM 提供商 API 密钥(BYOK),则 GitHub 验证不需要。Copilot CLI 可以直接连接到您配置的提供商,而无需 GitHub 账户或令牌。
但是,如果没有 GitHub 验证,以下功能不可用
/delegate:需要在 GitHub 服务器上运行的 Copilot 云代理- GitHub MCP 服务器:需要身份验证才能访问 GitHub API
- GitHub 代码搜索:需要身份验证才能查询 GitHub 的搜索索引
您可以将 BYOK 与 GitHub 验证相结合,以获得两者的最佳体验:使用您偏好的 AI 响应模型,同时访问 GitHub 托管的功能,如 /delegate 和代码搜索。
离线模式
如果将 COPILOT_OFFLINE 环境变量设置为 true,Copilot CLI 将在不联系 GitHub 服务器的情况下运行。在离线模式下
- 不会尝试 GitHub 验证。
- CLI 只会向您配置的 BYOK 提供商发送网络请求。
- 遥测功能已完全禁用。
仅当您的 BYOK 提供商是本地的或位于同一隔离环境中(例如,运行在本地且没有外部网络访问的模型)时,离线模式才完全与外部隔离。如果 COPILOT_PROVIDER_BASE_URL 指向远程或可通过互联网访问的端点,提示和代码上下文仍会通过网络发送到该提供商。未启用离线模式时,即使在使用 BYOK 且未进行 GitHub 验证的情况下,遥测仍会正常发送。
受支持的令牌类型
| 令牌类型 | 前缀 | Supported | 注意 |
|---|---|---|---|
| OAuth 令牌(设备流程) | gho_ | 是 | 通过 copilot login 的默认方法 |
| 细粒度个人访问令牌 | github_pat_ | 是 | 必须包含所需权限 Copilot Requests |
| GitHub App 用户到服务器 | ghu_ | 是 | 通过环境变量 |
| 传统个人访问令牌 | ghp_ | 否 | Copilot CLI 不支持 |
Copilot CLI 如何存储凭据
默认情况下,CLI 将您的 OAuth 令牌存储在操作系统的钥匙串中,服务名称为 copilot-cli
| 平台 | 钥匙串 |
|---|---|
| macOS | 钥匙串访问 |
| Windows | 凭据管理器 |
| Linux | libsecret(GNOME 密钥环,KWallet) |
如果系统钥匙串不可用——例如,在未安装 libsecret 的无头 Linux 服务器上——CLI 会提示您将令牌存储在明文配置文件 ~/.copilot/config.json 中。
当您运行命令时,Copilot CLI 按以下顺序检查凭据
COPILOT_GITHUB_TOKEN环境变量GH_TOKEN环境变量GITHUB_TOKEN环境变量- 系统钥匙串中的 OAuth 令牌
- GitHub CLI(
gh auth token)回退
注意
- 环境变量会悄然覆盖已存储的 OAuth 令牌。如果您为其他工具设置了
GH_TOKEN,CLI 将使用该令牌,而不是copilot login获得的 OAuth 令牌。为避免意外行为,请取消设置您不希望 CLI 使用的环境变量。 - 当您配置 BYOK 提供商的环境变量(例如
COPILOT_PROVIDER_BASE_URL、COPILOT_PROVIDER_API_KEY)时,Copilot CLI 会在不论 GitHub 身份验证状态如何的情况下使用这些变量进行 AI 模型请求。GitHub 令牌仅在使用 GitHub 托管的功能时才需要。
使用 OAuth 验证
OAuth 设备流程是交互式使用的默认身份验证方法。您可以通过在 Copilot CLI 中运行 /login 或在终端中运行 copilot login 来进行身份验证。
使用 /login 验证
-
在 Copilot CLI 中运行
/login。Bash /login
/login -
选择您想要验证的账户。对于具有数据驻留的 GitHub Enterprise Cloud,请输入您实例的主机名
What account do you want to log into? 1. GitHub.com 2. GitHub Enterprise Cloud with data residency (*.ghe.com) -
CLI 会显示一次性用户代码,并自动复制到剪贴板,同时打开浏览器。
Waiting for authorization... Enter one-time code: 1234-5678 at https://github.com/login/device Press any key to copy to clipboard and open browser... -
如果浏览器未自动打开,请前往验证 URL
https://github.com/login/device。 -
在页面的输入框中粘贴一次性代码。
-
如果您的组织使用 SAML 单点登录,请在每个您想授予访问权限的组织旁点击 Authorize(授权)。
-
审查请求的权限并点击 Authorize GitHub Copilot CLI(授权 GitHub Copilot CLI)。
-
返回终端。当身份验证完成时,CLI 会显示成功信息。
Signed in successfully as Octocat. You can now use Copilot.
使用 copilot login 验证
-
在终端中运行
copilot login。如果您使用具有数据驻留的 GitHub Enterprise Cloud,请提供实例的主机名。Bash copilot login
copilot login针对 GitHub Enterprise Cloud
Bash copilot login --host HOSTNAME
copilot login --host HOSTNAMECLI 会显示一次性用户代码,并自动复制到剪贴板,同时打开浏览器。
To authenticate, visit https://github.com/login/device and enter code 1234-5678. -
如果浏览器未自动打开,请前往验证 URL
https://github.com/login/device。 -
在页面的输入框中粘贴一次性代码。
-
如果您的组织使用 SAML 单点登录,请在每个您想授予访问权限的组织旁点击 Authorize(授权)。
-
审查请求的权限并点击 Authorize GitHub Copilot CLI(授权 GitHub Copilot CLI)。
-
返回终端。当身份验证完成时,CLI 会显示成功信息。
Signed in successfully as Octocat.
使用环境变量验证
对于非交互式环境,您可以通过设置包含受支持令牌的环境变量来进行身份验证。这非常适合 CI/CD 流水线、容器或无头服务器。
- 访问 细粒度个人访问令牌 页面。
- 在“权限”下,点击 Add permissions(添加权限)并选择 Copilot Requests(Copilot 请求)。
- 点击 生成令牌。
- 在终端或环境配置中导出该令牌。使用
COPILOT_GITHUB_TOKEN、GH_TOKEN或GITHUB_TOKEN环境变量(按优先级顺序)。
使用 GitHub CLI 验证
如果您已安装并验证 GitHub CLI,Copilot CLI 可以将其令牌作为回退。此方法优先级最低,仅在未设置环境变量且未找到存储的令牌时激活。
-
确认 GitHub CLI 已通过身份验证。
Bash gh auth status
gh auth status如果您使用具有数据驻留的 GitHub Enterprise Cloud,请确认已验证正确的主机名。
Bash gh auth status --hostname HOSTNAME
gh auth status --hostname HOSTNAME -
运行
copilot。Copilot CLI 会自动使用 GitHub CLI 令牌。 -
运行
/user以验证 CLI 中已认证的账户。
切换账户
Copilot CLI 支持多个账户。您可以在 CLI 中列出可用账户并在它们之间切换。要列出可用账户,请在 Copilot CLI 提示符下运行 /user list。要切换到其他账户,请在提示符下输入 /user switch。
要添加另一个账户,请在新的终端会话中运行 copilot login,或在 CLI 中运行登录命令并使用其他账户授权。
退出登录并删除凭据
要退出登录,请在 Copilot CLI 提示符下输入 /logout。这会删除本地存储的令牌,但不会在 GitHub 上撤销它。
要在 GitHub 上撤销 OAuth 应用授权并防止其在其他地方被使用,请按照以下步骤操作。
- 前往 Settings(设置)> Applications(应用)> Authorized OAuth Apps(已授权的 OAuth 应用)。
- 前往您的设置页面
- 在 GitHub 任意页面的右上角,点击您的个人资料图片。
- 点击 Settings(设置)。
- 在左侧边栏,点击 Applications(应用)。
- 在 Authorized OAuth Apps(已授权的 OAuth 应用)下,点击GitHub CLI 旁边展开菜单并选择 Revoke(撤销)。