Passer au contenu principal

Bascule à l’exécution du token GitHub utilisé pour l’authentification

Comment exécuter le Copilot CLI avec le token GitHub d’un utilisateur authentifié (par exemple via Socialite).
Un Personal Access Token doit disposer de la permission Copilot Requests. Les tokens Socialite ont vraisemblablement les mêmes exigences. Si vous ne pouvez pas obtenir un token utilisable via Socialite, demandez à l’utilisateur de saisir directement un PAT.
Cette méthode ne fonctionne qu’en mode stdio. En mode TCP, le processus Copilot CLI reste démarré, il n’est donc pas possible de basculer à l’exécution. Spécifier github_token ou use_logged_in_user en mode TCP (cli_url) provoque une erreur.
La section « Token GitHub par session (v0.3.0+) » ci-dessous fonctionne aussi en mode TCP.

Option github_token

Option officielle du SDK. Le token est transmis au CLI via la variable d’environnement COPILOT_SDK_AUTH_TOKEN.
use Revolution\Copilot\Facades\Copilot;

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

$response = Copilot::useStdio($config)->run(prompt: '...');
Copilot::stop(); // Détruit par précaution le client portant le token utilisateur

Option use_logged_in_user

Quand github_token est spécifié, use_logged_in_user passe automatiquement à false. Le CLI n’utilise donc ni le token OAuth enregistré ni l’authentification du CLI gh, uniquement le token explicitement passé. Vous pouvez aussi activer explicitement use_logged_in_user à true.
$config = [
    'github_token' => $user->github_token,
    'use_logged_in_user' => true, // Activation explicite
];
Si vous mettez use_logged_in_user à false sans github_token, le flag --no-auto-login est ajouté et le CLI ne se connecte pas automatiquement.

Token GitHub par session (v0.3.0+)

Le champ gitHubToken de SessionConfig permet de spécifier un token GitHub différent par session au sein d’un même processus CLI (compatible multi-locataire). Ce token étant transmis en paramètre de la requête JSON-RPC session.create, il est utilisable en mode stdio et TCP. Même en mode TCP avec CLI déjà démarré, vous pouvez basculer le token par session.
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionConfig;

$response = Copilot::run(
    prompt: '...',
    config: new SessionConfig(gitHubToken: $user->github_token),
);
Exemple en mode TCP :
// Le serveur CLI est déjà démarré (mode TCP)
// On peut passer un token utilisateur distinct par session
$response = Copilot::useTcp(url: 'tcp://127.0.0.1:12345')->run(
    prompt: '...',
    config: new SessionConfig(gitHubToken: $user->github_token),
);
Ce mécanisme est indépendant du github_token de niveau client (le token utilisé au démarrage du CLI). Utilisez-le si vous voulez basculer le token utilisateur session par session.
Pour les dernières informations, consultez le dépôt GitHub.
Dernière modification le 13 juillet 2026