認証方法
| Method | ユースケース(事例) | Copilot サブスクリプションが必要です |
|---|---|---|
| GitHubサインインユーザー | ユーザーがGitHubを使用してサインインする対話型アプリ | はい |
| OAuth GitHub App | OAuth を介してユーザーに代わって動作するアプリ | はい |
| 環境変数 | CI/CD, 自動化, サーバー間 | はい |
| BYOK (bring your own key) | 独自の API キー (Azure AI Foundry、OpenAI など) の使用 | いいえ |
GitHub サインイン ユーザー
これは、Copilot CLI を対話形式で実行するときの既定の認証方法です。 ユーザーは OAuth デバイス フロー GitHub使用して認証を行い、SDK は保存された資格情報を使用します。
しくみ:
- ユーザーは
copilotCLI を実行し、GitHub OAuth 経由でサインインします - 資格情報はシステム キーチェーンに安全に格納されます
- SDK では、保存されている資格情報が自動的に使用されます
SDK の構成:
import { CopilotClient } from "@github/copilot-sdk";
// Default: uses logged-in user credentials
const client = new CopilotClient();
from copilot import CopilotClient
# Default: uses logged-in user credentials
client = CopilotClient()
await client.start()
package main
import copilot "github.com/github/copilot-sdk/go"
func main() {
// Default: uses logged-in user credentials
client := copilot.NewClient(nil)
_ = client
}
import copilot "github.com/github/copilot-sdk/go"
// Default: uses logged-in user credentials
client := copilot.NewClient(nil)
using GitHub.Copilot;
// Default: uses logged-in user credentials
await using var client = new CopilotClient();
import com.github.copilot.sdk.CopilotClient;
// Default: uses logged-in user credentials
var client = new CopilotClient();
client.start().get();
使用するタイミング:
- ユーザーが直接対話するデスクトップ アプリケーション
- 開発環境とテスト環境
- ユーザーが対話形式でサインインできるシナリオ
OAuth GitHub アプリ
OAuth GitHub アプリを使用して、アプリケーションを通じてユーザーを認証し、その資格情報を SDK に渡します。 これにより、アプリケーションは、アプリを承認するユーザーに代わって、Copilot API 要求を行うことができます。
しくみ:
- ユーザーが OAuth GitHub アプリを承認する
- アプリがユーザー アクセス トークン (
gho_またはghu_プレフィックス) を受け取る gitHubTokenオプションを使用して SDK にトークンを渡す
SDK の構成:
import { CopilotClient } from "@github/copilot-sdk";
const client = new CopilotClient({
gitHubToken: userAccessToken, // Token from OAuth flow
useLoggedInUser: false, // Don't use stored CLI credentials
});
from copilot import CopilotClient
client = CopilotClient({
"github_token": user_access_token, # Token from OAuth flow
"use_logged_in_user": False, # Don't use stored CLI credentials
})
await client.start()
package main
import copilot "github.com/github/copilot-sdk/go"
func main() {
userAccessToken := "token"
client := copilot.NewClient(&copilot.ClientOptions{
GitHubToken: userAccessToken,
UseLoggedInUser: copilot.Bool(false),
})
_ = client
}
import copilot "github.com/github/copilot-sdk/go"
client := copilot.NewClient(&copilot.ClientOptions{
GithubToken: userAccessToken, // Token from OAuth flow
UseLoggedInUser: copilot.Bool(false), // Don't use stored CLI credentials
})
using GitHub.Copilot;
var userAccessToken = "token";
await using var client = new CopilotClient(new CopilotClientOptions
{
GitHubToken = userAccessToken,
UseLoggedInUser = false,
});
using GitHub.Copilot;
await using var client = new CopilotClient(new CopilotClientOptions
{
GitHubToken = userAccessToken, // Token from OAuth flow
UseLoggedInUser = false, // Don't use stored CLI credentials
});
import com.github.copilot.sdk.CopilotClient;
import com.github.copilot.sdk.json.*;
var client = new CopilotClient(new CopilotClientOptions()
.setGitHubToken(userAccessToken) // Token from OAuth flow
.setUseLoggedInUser(false) // Don't use stored CLI credentials
);
client.start().get();
サポートされているトークンの種類:
gho_- OAuth ユーザー アクセス トークンghu_- GitHub App のユーザー アクセス トークンgithub_pat_- きめ細かい個人用アクセス トークン
サポート対象外:
ghp_- 従来の個人用アクセス トークン (非推奨)
使用するタイミング:
- ユーザーが GitHub 経由でサインインする Web アプリケーション
- Copilot上に構築された SaaS アプリケーション
- 異なるユーザーに代わって要求を行う必要があるマルチユーザー アプリケーション
環境変数
自動化、CI/CD パイプライン、およびサーバー間のシナリオでは、環境変数を使用して認証できます。
サポートされている環境変数 (優先度順):
COPILOT_GITHUB_TOKEN- Copilot を明示的に使用する場合に推奨GH_TOKEN- GitHub CLI互換GITHUB_TOKEN- GitHub Actions に対応
しくみ:
- サポートされている環境変数の 1 つを有効なトークンで設定する
- SDK はトークンを自動的に検出して使用します
SDK の構成:
コードの変更は必要ありません。SDK は環境変数を自動的に検出します。
import { CopilotClient } from "@github/copilot-sdk";
// Token is read from environment variable automatically
const client = new CopilotClient();
from copilot import CopilotClient
# Token is read from environment variable automatically
client = CopilotClient()
await client.start()
使用するタイミング:
- CI/CD パイプライン (GitHub Actions、Jenkins など)
- 自動テスト
- サービス アカウントを持つサーバー側アプリケーション
- 対話型ログインを使用しない場合の開発
BYOK (独自のキーを持ち込む)
BYOK を使用すると、Azure AI Foundry、OpenAI、Anthropicなどのモデル プロバイダーから独自の API キーを使用できます。 これにより、GitHub Copilot認証が完全にバイパスされます。
主な利点:
- GitHub Copilot サブスクリプションは必要ありません
- エンタープライズ モデルのデプロイを使用する
- モデルプロバイダーへの直接請求
- Azure AI Foundry、OpenAI、Anthropic、および OpenAI 互換エンドポイントのサポート
次のような詳細については、 BYOK (bring your own key) を参照してください。
- Azure AI Foundry のセットアップ
- プロバイダー構成オプション
- 制限事項と考慮事項
- 完全なコード例
認証の優先順位
複数の認証方法を使用できる場合、SDK では次の優先順位で使用されます。
- 明示的な
gitHubToken- SDK コンストラクターに直接渡されるトークン - HMAC キー -
CAPI_HMAC_KEYまたはCOPILOT_HMAC_KEY環境変数 - ダイレクト API トークン -
GITHUB_COPILOT_API_TOKENwithCOPILOT_API_URL - 環境変数トークン -
COPILOT_GITHUB_TOKEN→GH_TOKEN→GITHUB_TOKEN - 保存された OAuth 資格情報 - 以前の
copilotCLI ログインから - GitHub CLI -
gh auth資格情報
自動ログインの無効化
保存された資格情報または CLI 認証 gh SDK が自動的に使用されないようにするには、 useLoggedInUser: false オプションを使用します。
const client = new CopilotClient({
useLoggedInUser: false, // Only use explicit tokens
});
from copilot import CopilotClient
client = CopilotClient({
"use_logged_in_user": False,
})
client = CopilotClient({
"use_logged_in_user": False, # Only use explicit tokens
})
package main
import copilot "github.com/github/copilot-sdk/go"
func main() {
client := copilot.NewClient(&copilot.ClientOptions{
UseLoggedInUser: copilot.Bool(false),
})
_ = client
}
client := copilot.NewClient(&copilot.ClientOptions{
UseLoggedInUser: copilot.Bool(false), // Only use explicit tokens
})
await using var client = new CopilotClient(new CopilotClientOptions
{
UseLoggedInUser = false, // Only use explicit tokens
});
import com.github.copilot.sdk.CopilotClient;
import com.github.copilot.sdk.json.*;
var client = new CopilotClient(new CopilotClientOptions()
.setUseLoggedInUser(false) // Only use explicit tokens
);
client.start().get();
次のステップ
- BYOK (bring your own key) - 独自の API キーを使用する方法について説明します
- 初めてのCopilot搭載アプリを構築する - 初めてのCopilot搭載アプリを構築する
- Using MCP servers with the GitHub Copilot SDK - 外部ツールに接続する