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: $
組織のポリシーに対して課金される Copilot CLI の使用を許可する必要があります。 この方法では、GitHubアプリや保存された認証シークレットは必要ありません。 詳細については、「GitHub Actions で GITHUB_TOKEN を使って Copilot CLI を使用する」を参照してください。
その他のサービスと CI システム
GitHub Actions外のサービスの場合:
-
Copilot要求リポジトリのアクセス許可が読み取りと書き込みに設定されたGitHub アプリを作成します。
-
課金対象の組織にインストールします。 現在のCopilotアクセス許可チェックでは 、すべてのリポジトリアクセスが必要です。
-
リポジトリ ID とCopilotアクセス許可を持つ GitHub アプリのインストール アクセス トークンの生成:
{ "repository_ids": [123456789], "permissions": { "copilot_requests": "write" } } -
結果の
ghs_トークンをCOPILOT_GITHUB_TOKENとしてランタイムに渡します。
組織は、GitHub アプリのインストールからのCopilot要求に対して有効にする必要があります。 インストール トークンは 1 時間後に期限切れになります。
警告
SDK の gitHubToken、 github_token、または同等のオプションを介してインストール トークンを渡さないでください。 このオプションは、ユーザー トークン用です。 インストール トークンでは、ランタイム環境の認証パスを使用する必要があります。
ランタイムを構成する
次の例では、作成されたトークンが INSTALLATION_TOKEN内にあるものとします。 子ランタイムにのみ渡し、保存されているユーザー資格情報へのフォールバックを無効にします。
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,
});
import os
from copilot import CopilotClient, RuntimeConnection
client = CopilotClient(
connection=RuntimeConnection.for_stdio(),
env={**os.environ, "COPILOT_GITHUB_TOKEN": os.environ["INSTALLATION_TOKEN"]},
use_logged_in_user=False,
)
package main
import (
"log"
"os"
copilot "github.com/github/copilot-sdk/go"
)
func main() {
token, ok := os.LookupEnv("INSTALLATION_TOKEN")
if !ok {
log.Fatal("INSTALLATION_TOKEN is required")
}
client := copilot.NewClient(&copilot.ClientOptions{
Connection: copilot.StdioConnection{},
Env: append(os.Environ(), "COPILOT_GITHUB_TOKEN="+token),
UseLoggedInUser: copilot.Bool(false),
})
_ = client
}
use github_copilot_sdk::{ClientOptions, Transport};
fn main() {
let token = std::env::var("INSTALLATION_TOKEN").expect("INSTALLATION_TOKEN is required");
let options = ClientOptions::new()
.with_transport(Transport::Stdio)
.with_env([("COPILOT_GITHUB_TOKEN", token)])
.with_use_logged_in_user(false);
drop(options);
}
using System.Collections;
using GitHub.Copilot;
var token = Environment.GetEnvironmentVariable("INSTALLATION_TOKEN")
?? throw new InvalidOperationException("INSTALLATION_TOKEN is required");
var environment = Environment.GetEnvironmentVariables()
.Cast<DictionaryEntry>()
.ToDictionary(entry => (string)entry.Key, entry => entry.Value?.ToString() ?? "");
environment["COPILOT_GITHUB_TOKEN"] = token;
await using var client = new CopilotClient(new CopilotClientOptions
{
Connection = RuntimeConnection.ForStdio(),
Environment = environment,
UseLoggedInUser = false,
});
import com.github.copilot.CopilotClient;
import com.github.copilot.rpc.CopilotClientOptions;
import java.util.HashMap;
import java.util.Objects;
var environment = new HashMap<>(System.getenv());
var token = Objects.requireNonNull(
System.getenv("INSTALLATION_TOKEN"), "INSTALLATION_TOKEN is required");
environment.put("COPILOT_GITHUB_TOKEN", token);
try (var client = new CopilotClient(new CopilotClientOptions()
.setEnvironment(environment)
.setUseLoggedInUser(false))) {
// Use the client.
}
インプロセス FFIは、ランタイムを読み込む前にホスト環境で COPILOT_GITHUB_TOKEN を設定します。クライアントごとの環境オプションはサポートされていません。 既存のランタイム URIは、そのランタイム プロセスに設定します。
更新トークン
現在のトークンの有効期限が切れる前に、新しいインストール トークンを作成します。 子プロセスの場合は、新しい環境で SDK クライアントを再起動します。 インプロセスまたは既存のランタイムの場合は、新しいトークンを使用してホスト ランタイムを再起動します。
Billing
使用状況は、GitHub アプリのインストールを所有するアカウントに属性付けされ、課金されます。 組織のインストールを組織の課金に使用する。ユーザー アカウントのインストール属性は、そのユーザーの使用状況を示します。
Troubleshooting
| 症状 | 検査 |
|---|---|
401 Unauthorized | 組織がCopilotのアプリ インストール認証GitHubサポートを確認します。 |
403 Resource not accessible by integration または、ユーザー情報のメンション中にエラーが発生しました | SDK の明示的なトークン オプションではなく、インストール トークンが COPILOT_GITHUB_であることを確認します。 |
403 ForbiddenCopilot API から | トークン要求に repository_ids と copilot_requests: writeが含まれていることを確認します。 |
403 Forbidden 必要なトークン要求を含む | アプリのインストールに [すべてのリポジトリ] アクセス権があることを確認し、新しいトークンを作成します。 |
| 要求されたモデルは使用できません | 組織のCopilot ポリシーでモデルが許可され、バンドルされたランタイムがモデルをサポートすることを確認します。 |
| 誤ったアカウントの請求 | インストールが目的の組織に属することを確認します。 |
詳細については、次を参照してください。
- 認証: その他の認証方法と優先順位
- GitHub アプリのインストール アクセス トークンの生成: GitHub アプリ トークンの作成