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

> Leer hoe je in de Laravel Copilot SDK per gebruiker een GitHub-token wisselt tijdens runtime.

## Het GitHub-token voor authenticatie wisselen tijdens runtime

Zo voer je de Copilot CLI uit met het GitHub-token van elke gebruiker die bijvoorbeeld via Socialite is geauthenticeerd.

<Note>
  Voor een Personal Access Token is de permissie `Copilot Requests` vereist. Voor een token via Socialite geldt naar verwachting dezelfde eis.
  Als je via Socialite geen bruikbaar token kunt verkrijgen, laat je gebruikers direct een PAT invoeren.
</Note>

Deze methode is alleen beschikbaar in stdio-modus.
In TCP-modus blijft het Copilot CLI-proces draaien, dus kun je tijdens runtime niet wisselen.
Als je in TCP-modus (`cli_url`) `github_token` of `use_logged_in_user` opgeeft, krijg je een foutmelding.

<Note>
  Het hieronder beschreven "GitHub-token per session (v0.3.0+)" is wél beschikbaar in TCP-modus.
</Note>

## De optie `github_token`

Dit is de officiële optie van de SDK. Het token wordt via de omgevingsvariabele `COPILOT_SDK_AUTH_TOKEN` aan de CLI doorgegeven.

```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(); // Voor de zekerheid de client met het gebruikerstoken opruimen
```

## De optie `use_logged_in_user`

Als je `github_token` opgeeft, wordt `use_logged_in_user` automatisch `false`.
Hierdoor gebruikt de CLI geen opgeslagen OAuth-tokens of `gh` CLI-authenticatie, maar alleen het expliciet doorgegeven token.

Je kunt `use_logged_in_user` ook expliciet op `true` zetten.

```php theme={null}
$config = [
    'github_token' => $user->github_token,
    'use_logged_in_user' => true, // Expliciet inschakelen
];
```

Als je `use_logged_in_user` op `false` zet zonder `github_token`, wordt de flag `--no-auto-login` toegevoegd en voert de CLI geen automatische login uit.

## GitHub-token per session (v0.3.0+)

Met het veld `gitHubToken` van `SessionConfig` kun je binnen hetzelfde CLI-proces per session een ander GitHub-token opgeven (voor multi-tenant scenario's).

Dit token wordt doorgegeven als parameter van de `session.create` JSON-RPC, dus het is **beschikbaar in zowel stdio-modus als TCP-modus**. Ook in TCP-modus, waar de CLI al draait, kun je per session van token wisselen.

```php theme={null}
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionConfig;

$response = Copilot::run(
    prompt: '...',
    config: new SessionConfig(gitHubToken: $user->github_token),
);
```

Voorbeeld van gebruik in TCP-modus:

```php theme={null}
// De CLI-server draait al (TCP-modus)
// Je kunt per session een ander gebruikerstoken doorgeven
$response = Copilot::useTcp(url: 'tcp://127.0.0.1:12345')->run(
    prompt: '...',
    config: new SessionConfig(gitHubToken: $user->github_token),
);
```

Dit werkt onafhankelijk van het `github_token` op clientniveau (het token bij het starten van het CLI-proces).
Gebruik dit wanneer je per session van gebruikerstoken wilt wisselen.

<Info>
  Raadpleeg de [GitHub-repository](https://github.com/invokable/laravel-copilot-sdk) voor de meest actuele informatie.
</Info>


## Related topics

- [Authenticatie - GitHub Copilot SDK for Laravel](/nl/packages/laravel-copilot-sdk/auth.md)
- [Remote sessions](/nl/packages/laravel-copilot-sdk/remote-sessions.md)
- [Cloud Sessions](/nl/packages/laravel-copilot-sdk/cloud-sessions.md)
- [GitHub Actions - GitHub Copilot SDK voor Laravel](/nl/packages/laravel-copilot-sdk/github-actions.md)
- [Laravel Cloud - GitHub Copilot SDK voor Laravel](/nl/packages/laravel-copilot-sdk/laravel-cloud.md)
