组织与服务端认证
使用 GitHub Actions 原生令牌或 GitHub App installation token,将用量归属到组织。
需要服务代表组织调用 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 与服务
- 创建 GitHub App,把 repository permission Copilot Requests 设为 Read & write。
- 安装到实际应被计费的组织;当前权限检查要求安装范围为 All repositories。
- 签发 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 支持。