メインコンテンツへスキップ

認証

Copilot SDKは複数の認証方法をサポートします。用途に合わせて選択してください。

認証方法

BYOKは Custom providers を参照。

Microsoft Entra ID

組み込みのMicrosoft Entraサインインとトークン更新を使うには、ホストアプリケーションをクライアントに登録します。clientIdにはEntraアプリ登録のアプリケーション(クライアント)IDを指定します。EntraAuthConfigインスタンスまたは配列を渡せます。空文字や空白のみの値はInvalidArgumentExceptionをスローします。
配列で渡すこともできます。
SDKは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 を参照。 github_tokenとuse_logged_in_userはstdioモード専用です。TCPモードではCopilot CLI側で認証済みである必要があります。

ホストで生成したシークレットをマスク

ホストアプリケーションがMCP OAuthなどでトークンを動的に取得する場合は、Copilot CLIのリダクションフィルターに登録します。CLIは登録された値をセッションログとエクスポートでマスクします。
この呼び出しは、onMcpAuthRequestでのトークン取得・受け渡しとは別のものです。トークンを取得した後に明示的に呼び出してください。SDKはこのRPCのために値を保存したり、別途ログに記録したりしません。

環境変数

環境変数でトークンを渡す場合は、CLIが自動的に検出します。優先順位は上から順です。
  1. COPILOT_GITHUB_TOKEN
  2. GH_TOKEN
  3. GITHUB_TOKEN
TCPモードではCLIサーバー側の環境変数を設定してください。

認証の優先順位

SDKは以下の順で認証情報を解決します。
  1. github_token(明示指定)
  2. 環境変数トークン(COPILOT_GITHUB_TOKEN → GH_TOKEN → GITHUB_TOKEN)
  3. CLIに保存されたOAuth認証情報
  4. gh CLIの認証情報

自動ログインを無効化

保存済みの認証情報を使いたくない場合は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です。内容を解析・加工せず、そのままログイン開始時に渡してください。
通常のプロバイダー動作で保存済みIDを使う場合はmode: 'default'を指定します。プロバイダーのアカウント選択UIを明示的に表示したい場合はmode: 'selectAccount'を使い、この場合はaccountIdを渡しません。既存のbegin(LoginProviderKind::ENTRA)のような呼び出しも引き続き利用できます。
最新情報は GitHub リポジトリ を参照してください。
最終更新日 2026年11月9日