Skip to content
FunCoding

Search

Search docs, Skills and MCP

组织与服务端认证

使用 GitHub Actions 原生令牌或 GitHub App installation token,将用量归属到组织。

This page has not been translated into English yet. The original Chinese version is shown below.

需要服务代表组织调用 Copilot 时,可以使用短期 GitHub App installation token;GitHub Actions 中则优先使用工作流自带的 GITHUB_TOKEN。这一方式不要求某个用户持有 Copilot 订阅,但需要组织允许。

GitHub Actions

组织仓库工作流需授予 copilot-requests: write,并把内置 GITHUB_TOKEN 传给应用。组织必须启用 Allow use of Copilot CLI billed to the organization。不需要为这个路径额外创建 GitHub App 或保存个人认证 secret。

完整 Actions 配置和组织策略见CLI 自动化。该路径使用工作流自身身份,不应替换为个人 PAT。

其他 CI 与服务

  1. 创建 GitHub App,把 repository permission Copilot Requests 设为 Read & write。
  2. 安装到实际应被计费的组织;当前权限检查要求安装范围为 All repositories。
  3. 签发 installation access token 时提供仓库 ID 与权限。
{
  "repository_ids": [123456789],
  "permissions": {
    "copilot_requests": "write"
  }
}

示例 ID 替换为实际目标。获得的 ghs_ token 通过 runtime 的 COPILOT_GITHUB_TOKEN 提供,不要放入 SDK gitHubToken 或其他语言等价选项,后者用于用户 token。

子进程 runtime 配置

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(),
    env: {
        ...process.env,
        COPILOT_GITHUB_TOKEN: token,
    },
    useLoggedInUser: false,
});

进程内模式必须在加载 runtime 前设置宿主环境,不能用 per-client env;外部 URI 模式则在实际 runtime 进程上设置。

轮换与计费

installation token 在 1 小时后过期。过期前重新签发:子进程方式用新环境重启 SDK client;进程内或外部 runtime 则重启宿主 runtime。不能套用用户会话的 gitHubTokenProvider 更新路径。

用量归属 installation 的拥有者。组织安装计费到组织,个人账户安装归属该用户;安装范围与令牌目标都应与预期一致。

常见失败

401 时确认组织已支持 installation 认证。403 或 user information 错误时先检查是否误用了显式用户 token 选项,再检查 token 请求的 repository_ids 与 copilot_requests: write,以及安装是否覆盖 All repositories。模型不可用时核对组织模型策略和 runtime 支持。