Skip to main content

排查 GitHub Copilot CLI 身份验证问题

诊断登录 Copilot 命令行界面(CLI) 时出现的身份验证失败。

身份验证错误

如果遇到身份验证错误,请使用下表确定原因和解决方法。

問题原因修复详细信息
找不到身份验证信息未存储任何凭据运行 copilot login
          [找不到身份验证信息](#no-authentication-information-found)       |

| 401 未授权 | 令牌吊销或权限不足 | 使用特定权限生成令牌 | 令牌已过期或已吊销 | | Token (classic) 被拒绝 | Token (classic) (ghp_) | 使用细粒度 personal access token | Token (classic) 被拒绝 | | 403 已禁止或策略被拒绝 | Copilot 许可证或企业/机构策略 | 检查订阅和组织配置 | Access被拒绝 | | 密钥链不可用 | 缺少系统密钥链 | 安装 libsecret 或允许纯文本 | 钥匙串访问失败 | | 帐户错误 | 多个帐户或环境变量替代 | 检查环境变量,使用 /user switch | 帐户错误 |

找不到身份验证信息

Copilot 命令行界面(CLI) 显示以下错误:

Error: No authentication information found
Copilot can be authenticated with GitHub using an OAuth Token or a Fine-Grained Personal Access Token

原因

在所有检查过的位置都没有发现凭据。

修复

使用以下步骤查找缺少身份验证的位置并恢复访问权限。

检查身份验证状态

Bash
gh auth status

如果看到一条消息,提示你未登录,请使用 gh auth login 登录或通过 copilot login 使用 OAuth 流。

检查是否已设置身份验证环境变量

如果使用环境变量,请检查是否设置了环境变量COPILOT_GITHUB_TOKEN``GH_TOKENGITHUB_TOKEN环境变量:

Bash
echo $COPILOT_GITHUB_TOKEN

如果命令不打印任何内容,则不会设置变量。 将变量设置为有效的令牌。 若要生成令牌,请参阅 GitHub Copilot CLI 身份验证

Bash
 export $COPILOT_GITHUB_TOKEN=PERSONAL_ACCESS_TOKEN

macOS 密钥链

Bash
security find-generic-password -s copilot-cli

如果未找到任何项,请再次进行身份验证,或使用/logincopilot login 来创建一项。 如果找到某个项,但身份验证仍然失败,请删除保存的凭据,然后再次进行身份验证, /login 或者 copilot login

Bash
  security delete-generic-password -s copilot-cli

令牌已过期或已吊销

Copilot 命令行界面(CLI) 显示以下错误:

Error: Authentication failed

Your GitHub token may be invalid, expired, or lacking the required permissions.

To resolve this, try the following:
  • Start 'copilot' and run the '${LOGIN_COMMAND}' command to re-authenticate
  • If using a Fine-Grained PAT, ensure it has the 'Copilot Requests' permission enabled
  • If using COPILOT_GITHUB_TOKEN, GH_TOKEN or GITHUB_TOKEN environment variable, verify the token is valid and not expired
  • Run 'gh auth status' to check your current authentication status

原因

令牌已被吊销、已过期或创建时未具备所需权限。

修复

在 GitHub 上查看令牌的状态和权限。 令牌必须具有 Copilot Requests 权限。 如有必要,请生成具有所需权限的新令牌。

Token (classic) 被拒绝

以无提示方式忽略开头 ghp_ 的令牌,CLI 的行为就像未设置令牌一样。

原因

Copilot 命令行界面(CLI) 不支持 personal access tokens 经典版本。

修复

生成具有所需范围的细化 personal access token。

访问被拒绝

Copilot 命令行界面(CLI) 显示以下其中一个错误:

Error: Access denied by policy settings

Your Copilot CLI policy setting may be preventing access. This can happen when:
  • Your organization has restricted Copilot access
  • Your Copilot subscription does not include this feature
  • Required policies have not been enabled by your administrator

To resolve this, visit your Copilot settings: 

原因

组织策略阻止 GitHub Copilot 命令行界面 (CLI),或者用户帐户缺少 GitHub Copilot 许可证。

修复

  • 检查您的帐户是否拥有有效的 GitHub Copilot 许可证。
  • 要求组织管理员在组织策略中启用GitHub Copilot 命令行界面 (CLI)。

密钥链访问失败

登录期间,CLI 会提示你系统密钥链不可用,并询问是否以纯文本形式存储凭据。

System keychain unavailable. Store token in plaintext config file? (y/N)

原因

系统密钥链不可访问。 这可能会发生在没有 libsecret 无头服务器的 Linux 系统上,或发生在存在权限问题的系统上。

修复

按照操作系统对应的步骤恢复安全凭据存储。

macOS 或 Windows

在 macOS 上,确保“钥匙串访问”应用可用,并且你可以解锁你的登录钥匙串。 在 Windows 上,确认“凭据管理器”可用,并且您可以访问 Windows 保管库。 如果无法访问系统凭据管理器,请使用纯文本存储(根据提示)或使用环境变量令牌进行身份验证,然后重新运行 /logincopilot login

Linux

在 Linux 上,使用系统密钥环或以纯文本形式存储凭据。

  1. 检查secret-tool是否已安装:

    Bash
    command -v secret-tool
    
  2. 如果未找到secret-tool,或者搜索命令不返回任何结果,请安装libsecret及其依赖项。

    Bash
    sudo apt sudo apt list libsecret-1-0 libsecret-1-dev libsecret-common gnome-keyring gnome-keyring-pkcs11 seahorse
    
  3. 安装 secret-tool 后,搜索密钥环以查找保存的凭据:

    Bash
    secret-tool search copilot-cli
    

    如果命令返回一个或多个结果,则密钥器中存在凭据。 再次在终端中运行 copilot login 或在 Copilot 命令行界面(CLI) 中运行 /login

帐户错误

对错误的用户进行身份验证,或者令牌属于错误的组织。

原因

存储了多个帐户,或环境变量覆盖了已存储的令牌。

修复

若要切换帐户,请在 CLI 提示符处使用 /user switch ,或者注销 /logout 并使用正确的帐户运行 /login