認証
Copilot SDKは複数の認証方法をサポートします。用途に合わせて選択してください。認証方法
BYOKは Custom providers を参照。
Microsoft Entra ID
組み込みのMicrosoft Entraサインインとトークン更新を使うには、ホストアプリケーションをクライアントに登録します。clientIdにはEntraアプリ登録のアプリケーション(クライアント)IDを指定します。EntraAuthConfigインスタンスまたは配列を渡せます。空文字や空白のみの値はInvalidArgumentExceptionをスローします。
server.connectハンドシェイク時にクライアントIDをランタイムへ送信します。この登録は、トークンを明示的に要求するaccounts.acquireEntraTokenサーバーRPCとは別のものです。Entra設定を指定していて、ランタイムが古くconnectに対応していない場合、SDKは設定を黙って無視せずにThis runtime does not support Entra client configuration.をスローします。その場合はランタイムを更新してください。他の認証方法は引き続き利用できます。
ネットワークコールバック
network設定で、ランタイムのプロキシ解決とKerberos Negotiate認証をホスト側のコールバックに委譲できます。利用するCopilotランタイムはnetwork.setProvider RPCをサポートしている必要があります。未対応の場合、クライアント起動時にランタイムの更新を案内する例外が発生します。コールバックにはリクエスト型と、キャンセルを確認できるCancellationTokenが渡されます。
resolveProxyはPROXY proxy.example:8080; DIRECTのようなPAC形式の文字列、または直接接続するDIRECTを返します。nullを返すとランタイム自身がプロキシを解決します。authenticateNegotiateはNegotiate プレフィックスを含まない、単回使用のbase64 SPNEGOトークンを返し、資格情報がなければnullを返します。コールバックが例外を投げた場合はRPCが失敗し、直接接続にはフォールバックしません。SPNは資格情報を発行する前に検証してください。
scopeは省略するとconnectionです。connectionはこのクライアントが作成または再開したセッションのリクエストだけを対象にします。runtimeは共有のバックグラウンド通信も対象にしますが、同時にこのscopeを保持できる接続は1つだけです。
GitHubログイン(CLI)
copilot もしくは gh CLIでログイン済みの場合は、何も指定しなければ保存済みの認証情報が使われます。
OAuth GitHub App / PAT
OAuthフローで取得したユーザーアクセストークン、またはFine-grained PATをgithub_tokenに渡します。
gho_/ghu_/github_pat_を想定ghp_(Classic PAT)は非推奨
github_tokenを指定するとuse_logged_in_userは自動でfalseになります。明示的に切り替えたい場合は次の通り。
github_tokenとuse_logged_in_userはstdioモード専用です。TCPモードではCopilot CLI側で認証済みである必要があります。
ホストで生成したシークレットをマスク
ホストアプリケーションがMCP OAuthなどでトークンを動的に取得する場合は、Copilot CLIのリダクションフィルターに登録します。CLIは登録された値をセッションログとエクスポートでマスクします。onMcpAuthRequestでのトークン取得・受け渡しとは別のものです。トークンを取得した後に明示的に呼び出してください。SDKはこのRPCのために値を保存したり、別途ログに記録したりしません。
環境変数
環境変数でトークンを渡す場合は、CLIが自動的に検出します。優先順位は上から順です。COPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKEN
認証の優先順位
SDKは以下の順で認証情報を解決します。github_token(明示指定)- 環境変数トークン(
COPILOT_GITHUB_TOKEN→GH_TOKEN→GITHUB_TOKEN) - CLIに保存されたOAuth認証情報
ghCLIの認証情報
自動ログインを無効化
保存済みの認証情報を使いたくない場合はuse_logged_in_userをfalseにします。
falseにすると、認証に使われるのは明示的に指定したトークン(github_token)だけで、環境変数トークン(COPILOT_GITHUB_TOKEN、GH_TOKEN、GITHUB_TOKEN)は無視されます。
github_tokenと同様にstdioモードのみ対応です。TCPモードではCopilot CLI側で認証済みである必要があります。
認証状態の確認
auth.getStatusの結果を取得して確認できます。
対話型ログインのアカウント選択
セッションRPCからloginAccountsを列挙すると、指定したプロバイダーで再利用できる保存済みIDを取得できます。各項目のlabelは表示用、activeはそのIDが現在のセッションの有効なアカウントに対応するかを示します。accountIdはプロバイダーが所有する不透明なIDです。内容を解析・加工せず、そのままログイン開始時に渡してください。
mode: 'default'を指定します。プロバイダーのアカウント選択UIを明示的に表示したい場合はmode: 'selectAccount'を使い、この場合はaccountIdを渡しません。既存のbegin(LoginProviderKind::ENTRA)のような呼び出しも引き続き利用できます。
最新情報は GitHub リポジトリ を参照してください。