Zum Hauptinhalt springen

Umschalten des GitHub-Tokens zur Laufzeit

Diese Methode zeigt, wie Sie die Copilot CLI mit einem benutzerbezogenen GitHub-Token ausführen, das z. B. über Socialite ermittelt wurde.
Ein Personal Access Token benötigt die Berechtigung Copilot Requests. Für Socialite-Tokens gilt vermutlich dieselbe Anforderung. Wenn Sie über Socialite kein nutzbares Token erhalten können, lassen Sie den Nutzer direkt ein PAT eingeben.
Diese Methode ist nur im stdio-Modus verfügbar. Der TCP-Modus verwendet einen dauerhaft laufenden Copilot-CLI-Prozess, sodass sich das Token zur Laufzeit nicht wechseln lässt. Die Angabe von github_token oder use_logged_in_user im TCP-Modus (cli_url) führt zu einem Fehler.
Der weiter unten beschriebene „GitHub-Token pro Session (v0.3.0+)” ist auch im TCP-Modus nutzbar.

Option github_token

Dies ist die offizielle SDK-Option. Das Token wird der CLI über die Umgebungsvariable COPILOT_SDK_AUTH_TOKEN übergeben.
use Revolution\Copilot\Facades\Copilot;

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

$response = Copilot::useStdio($config)->run(prompt: '...');
Copilot::stop(); // Zur Sicherheit den Client mit dem Nutzertoken verwerfen

Option use_logged_in_user

Wenn Sie github_token angeben, wird use_logged_in_user automatisch auf false gesetzt. Dadurch verwendet die CLI weder ein gespeichertes OAuth-Token noch die Authentifizierung der gh-CLI, sondern ausschließlich das explizit übergebene Token. Sie können use_logged_in_user auch explizit auf true setzen.
$config = [
    'github_token' => $user->github_token,
    'use_logged_in_user' => true, // Explizit aktivieren
];
Wenn Sie use_logged_in_user ohne github_token auf false setzen, wird das Flag --no-auto-login ergänzt, und die CLI führt kein automatisches Login durch.

GitHub-Token pro Session (v0.3.0+)

Mit dem Feld gitHubToken in SessionConfig können Sie im selben CLI-Prozess pro Session unterschiedliche GitHub-Tokens angeben (Multi-Tenant-Unterstützung). Da dieses Token als Parameter des session.create-JSON-RPC übergeben wird, ist es sowohl im stdio- als auch im TCP-Modus verfügbar. Auch bei bereits laufender CLI im TCP-Modus können Sie das Token pro Session wechseln.
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionConfig;

$response = Copilot::run(
    prompt: '...',
    config: new SessionConfig(gitHubToken: $user->github_token),
);
Beispiel im TCP-Modus:
// CLI-Server läuft bereits (TCP-Modus)
// Pro Session lassen sich unterschiedliche Nutzer-Tokens übergeben
$response = Copilot::useTcp(url: 'tcp://127.0.0.1:12345')->run(
    prompt: '...',
    config: new SessionConfig(gitHubToken: $user->github_token),
);
Diese Option funktioniert unabhängig vom github_token auf Client-Ebene (dem Token, das beim Start des CLI-Prozesses gesetzt wird). Verwenden Sie sie, wenn Sie das Nutzer-Token pro Session umschalten möchten.
Aktuelle Informationen finden Sie im GitHub-Repository.
Zuletzt geändert am 13. Juli 2026