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

認証するGitHubトークンの実行時切り替え

Socialite などを使って認証したユーザーごとの GitHub トークンで Copilot CLI を実行する方法です。
Personal Access Token では Copilot Requests の権限が必要です。Socialite のトークンでも同様の要件になるはずです。 Socialite から使えるトークンを取得できない場合は、PAT を直接入力してもらう方式にします。
この方法は stdio モードでのみ利用できます。 TCP モードは Copilot CLI プロセスを起動したまま使うため、実行時に切り替えできません。 TCP モード(cli_url)で github_tokenuse_logged_in_user を指定するとエラーになります。
下記の「セッションごとのGitHubトークン(v0.3.0+)」は TCP モードでも利用可能です。

github_token オプション

SDK の公式オプションです。トークンは環境変数 COPILOT_SDK_AUTH_TOKEN 経由で CLI に渡されます。
use Revolution\Copilot\Facades\Copilot;

$config = array_merge(
    config('copilot'),
    [
        'github_token' => $user->github_token,
    ]
);

$response = Copilot::useStdio($config)->run(prompt: '...');
Copilot::stop(); // 念のためユーザートークンを持ったクライアントを破棄

use_logged_in_user オプション

github_token を指定すると自動的に use_logged_in_userfalse になります。 これにより CLI は保存済み OAuth トークンや gh CLI 認証を使わず、明示的に渡したトークンだけを使います。 明示的に use_logged_in_usertrue にすることもできます。
$config = [
    'github_token' => $user->github_token,
    'use_logged_in_user' => true, // 明示的に有効化
];
github_token なしで use_logged_in_userfalse にすると、--no-auto-login フラグが追加され、CLI は自動ログインを行いません。

セッションごとのGitHubトークン(v0.3.0+)

SessionConfiggitHubToken フィールドを使うと、同一 CLI プロセス内でセッションごとに異なる GitHub トークンを指定できます(マルチテナント対応)。 このトークンは session.create JSON-RPC のパラメーターとして渡されるため、stdio モードと TCP モードの両方で利用可能です。CLI がすでに起動している TCP モードでも、セッション単位でトークンを切り替えられます。
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionConfig;

$response = Copilot::run(
    prompt: '...',
    config: new SessionConfig(gitHubToken: $user->github_token),
);
TCP モードでの使用例:
// CLIサーバーは起動済み(TCPモード)
// セッションごとに異なるユーザートークンを渡せる
$response = Copilot::useTcp(url: 'tcp://127.0.0.1:12345')->run(
    prompt: '...',
    config: new SessionConfig(gitHubToken: $user->github_token),
);
クライアントレベルの github_token(CLI プロセス起動時のトークン)とは別に機能します。 セッション単位でユーザートークンを切り替えたい場合に使用してください。
最新情報は GitHub リポジトリ を参照してください。
最終更新日 2026年4月25日