> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub-Token

> Beschreibt, wie Sie im Laravel Copilot SDK das GitHub-Token pro Benutzer zur Laufzeit umschalten.

## 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.

<Note>
  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.
</Note>

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.

<Note>
  Der weiter unten beschriebene „GitHub-Token pro Session (v0.3.0+)" ist auch im TCP-Modus nutzbar.
</Note>

## Option `github_token`

Dies ist die offizielle SDK-Option. Das Token wird der CLI über die Umgebungsvariable `COPILOT_SDK_AUTH_TOKEN` übergeben.

```php theme={null}
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.

```php theme={null}
$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.

```php theme={null}
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:

```php theme={null}
// 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.

<Info>
  Aktuelle Informationen finden Sie im [GitHub-Repository](https://github.com/invokable/laravel-copilot-sdk).
</Info>


## Related topics

- [GitHub Actions - GitHub Copilot SDK für Laravel](/de/packages/laravel-copilot-sdk/github-actions.md)
- [Authentifizierung - GitHub Copilot SDK für Laravel](/de/packages/laravel-copilot-sdk/auth.md)
- [Laravel Cloud - GitHub Copilot SDK für Laravel](/de/packages/laravel-copilot-sdk/laravel-cloud.md)
- [GitHub Copilot SDK für Laravel](/de/packages/laravel-copilot-sdk/index.md)
- [Laravel Package Skeleton – Starter-Template für offizielle Pakete](/de/blog/package-skeleton-introduction.md)
