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

# Token de GitHub

> Explica cómo cambiar en tiempo de ejecución el token de GitHub por usuario en Laravel Copilot SDK.

## Cambio en tiempo de ejecución del token de GitHub para autenticarse

Método para ejecutar Copilot CLI con el token de GitHub de cada usuario autenticado, por ejemplo con Socialite.

<Note>
  En un Personal Access Token se requiere el permiso `Copilot Requests`. Con tokens de Socialite debería aplicar el mismo requisito.
  Si no puedes obtener un token utilizable desde Socialite, opta por que el usuario introduzca directamente un PAT.
</Note>

Este método solo está disponible en el modo stdio.
El modo TCP mantiene el proceso Copilot CLI arrancado, por lo que no permite cambiar en tiempo de ejecución.
En modo TCP (`cli_url`), si indicas `github_token` o `use_logged_in_user` se produce un error.

<Note>
  El apartado «Token de GitHub por sesión (v0.3.0+)» descrito más abajo sí funciona también en modo TCP.
</Note>

## Opción `github_token`

Es la opción oficial del SDK. El token se pasa al CLI mediante la variable de entorno `COPILOT_SDK_AUTH_TOKEN`.

```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(); // Descarta por seguridad el cliente que tenía el token del usuario
```

## Opción `use_logged_in_user`

Si indicas `github_token`, `use_logged_in_user` pasa automáticamente a `false`.
Así el CLI no usa el token OAuth guardado ni la autenticación del CLI `gh`, y utiliza únicamente el token pasado explícitamente.

También puedes poner `use_logged_in_user` a `true` de forma explícita:

```php theme={null}
$config = [
    'github_token' => $user->github_token,
    'use_logged_in_user' => true, // habilitación explícita
];
```

Si pones `use_logged_in_user` a `false` sin `github_token`, se añade la flag `--no-auto-login` y el CLI no realiza el login automático.

## Token de GitHub por sesión (v0.3.0+)

Con el campo `gitHubToken` de `SessionConfig` puedes indicar un token de GitHub distinto para cada sesión dentro del mismo proceso CLI (soporte multi-tenant).

Este token se pasa como parámetro del JSON-RPC `session.create`, por lo que **funciona tanto en stdio como en TCP**. Incluso en modo TCP con el CLI ya arrancado, puedes cambiar el token por sesión.

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

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

Ejemplo en modo TCP:

```php theme={null}
// Servidor CLI ya arrancado (modo TCP)
// Puedes pasar un token de usuario distinto por sesión
$response = Copilot::useTcp(url: 'tcp://127.0.0.1:12345')->run(
    prompt: '...',
    config: new SessionConfig(gitHubToken: $user->github_token),
);
```

Funciona de forma independiente al `github_token` a nivel de cliente (el token con el que se arranca el proceso CLI).
Úsalo cuando quieras cambiar el token del usuario por sesión.

<Info>
  Consulta la información más reciente en el [repositorio de GitHub](https://github.com/invokable/laravel-copilot-sdk).
</Info>


## Related topics

- [Autenticación - GitHub Copilot SDK for Laravel](/es/packages/laravel-copilot-sdk/auth.md)
- [Laravel Cloud - GitHub Copilot SDK for Laravel](/es/packages/laravel-copilot-sdk/laravel-cloud.md)
- [GitHub Actions - GitHub Copilot SDK for Laravel](/es/packages/laravel-copilot-sdk/github-actions.md)
- [GitHub Copilot SDK for Laravel](/es/packages/laravel-copilot-sdk/index.md)
- [Laravel Package Skeleton — Plantilla oficial para paquetes](/es/blog/package-skeleton-introduction.md)
