Skip to main content
Skip to content

服务器到服务器身份验证

当服务需要在没有用户凭据的情况下代表组织发起 Copilot 请求时,请使用短期有效的安装访问令牌。 在GitHub Actions中,改用内置GITHUB_TOKEN。

GitHub Actions

对于组织拥有的仓库中的工作流,授予内置令牌发出 Copilot 请求的权限:

permissions:
  contents: read
  copilot-requests: write

jobs:
  copilot:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - run: your-application
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

必须启用组织的允许使用向组织计费的 Copilot CLI 策略。 此方法不需要GitHub应用或存储的身份验证机密。 有关详细信息,请参阅 在 GitHub Actions 中使用 GITHUB_TOKEN 运行 Copilot CLI。

其他服务和 CI 系统

对于GitHub Actions之外的服务:

  1. 创建GitHub应用,并将Copilot请求组织权限设置为只读。

  2. 将其安装到应将使用情况归属到该组织并向其计费的组织中。

  3. 具有Copilot权限的 为 GitHub 应用生成安装访问令牌:

    {
      "permissions": {
        "organization_copilot_requests": "read"
      }
    }
    
  4. 将生成的 ghs_ 令牌传递给 SDK 的 gitHubToken或 github_token等效选项。 对于现有运行时 URI,请改为在运行时进程上将其设置为 COPILOT_GITHUB_TOKEN。

必须为该组织启用来自 GitHub App 安装的 Copilot 请求。 安装令牌在一小时后过期。

注意

无需用户登录。 useLoggedInUser: false 关闭自动凭据发现,包括环境变量令牌,例如 COPILOT_GITHUB_TOKEN,因此请通过 SDK 的显式令牌选项传递安装令牌。

配置运行时

以下示例假定铸造的令牌存储在 INSTALLATION_TOKEN 中。 它们仅将其传递给子运行时,并禁用回退到存储的用户凭据。

代码语言 navigation

TypeScript
import { CopilotClient, RuntimeConnection } from "@github/copilot-sdk";

const token = process.env.INSTALLATION_TOKEN;
if (!token) throw new Error("INSTALLATION_TOKEN is required");

const client = new CopilotClient({
    connection: RuntimeConnection.forStdio(),
    gitHubToken: token,
    useLoggedInUser: false,
});

对于进程内 FFI,请使用相同的令牌选项。当 useLoggedInUser 为 false 时,会忽略主机进程中的环境变量令牌。 对于现有的运行时 URI,在该运行时进程上设置 COPILOT_GITHUB_TOKEN。

刷新令牌

在当前令牌过期之前,先挖掘新的安装令牌。 对于子进程,请使用新令牌重启 SDK 客户端。 对于进程内或现有运行时,请使用新令牌重启主机运行时。

Billing

使用情况归属于拥有 GitHub 应用安装的组织,并向其计费。

Troubleshooting

症状检查
401 Unauthorized令牌可能已过期或无效。 生成新的安装令牌。
403表明未启用具有GitHub应用安装访问令牌的Copilot请求确认该组织支持适用于 Copilot 的 GitHub App 安装身份验证。
No GitHub OAuth token or Copilot HMAC key provided 或 Not authenticated确认安装令牌是通过 SDK 的显式令牌选项传递的。 使用 useLoggedInUser: false 时,运行时会忽略 COPILOT_GITHUB_TOKEN 和其他环境变量令牌。
403 Forbidden来自 Copilot API确认安装具有组织Copilot Requests权限,然后生成一个新令牌。
请求的模型不可用确认组织的 Copilot 策略允许使用该模型,并且随附的运行时支持它。
错误的帐户计费确认该安装归属于目标组织。

延伸阅读