# Configuración de la CLI local

Utilice un binario específico de la CLI en lugar de la gestión automática de la CLI por parte del SDK. Esta es una opción avanzada: proporciona la ruta de acceso de la CLI explícitamente y es responsable de garantizar la compatibilidad de versiones con el SDK.

<!-- markdownlint-disable GHD046 GHD005 -->

<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->

**Úselo cuando:** necesite fijar una versión específica de la CLI o trabajar con el SDK de Go (que no incluye una CLI automáticamente).

## Cómo funciona

De forma predeterminada, los SDK de Node.js, Python y .NET incluyen su propia dependencia de la CLI (consulte [Configuración predeterminada (CLI agrupada)](/es/copilot/how-tos/copilot-sdk/setup/bundled-cli)). Si necesita invalidar esto (por ejemplo, para usar una CLI instalada por el sistema), puede usar la `Connection` opción .

![Diagrama: Diagrama de flujo que muestra el proceso descrito.](/assets/images/help/copilot/copilot-sdk/setup-local-cli-diagram-0.png)

**Características principales:**

* Debe indicar explícitamente la ruta del archivo binario de la CLI
* Es responsable de la compatibilidad de la versión de la CLI con el SDK.
* La autenticación usa las credenciales del usuario que ha iniciado sesión desde la cadena de claves del sistema (o env vars)
* La comunicación se produce a través de stdio

## Configuración

### Uso de un binario local de CLI

<div class="ghd-codetabs">
<div class="ghd-codetab" data-lang="typescript" data-label="TypeScript"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">TypeScript</div>

```typescript
import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient({
    cliPath: "/usr/local/bin/copilot",
});

const session = await client.createSession({ model: "gpt-5.4" });
const response = await session.sendAndWait({ prompt: "Hello!" });
console.log(response?.data.content);

await client.stop();
```

</div>

<div class="ghd-codetab" data-lang="python" data-label="Python"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Python</div>

```python
from copilot import CopilotClient
from copilot.session_events import AssistantMessageData
from copilot.session import PermissionHandler

client = CopilotClient({
    "cli_path": "/usr/local/bin/copilot",
})
await client.start()

session = await client.create_session(on_permission_request=PermissionHandler.approve_all, model="gpt-5.4")
response = await session.send_and_wait("Hello!")
if response:
    match response.data:
        case AssistantMessageData() as data:
            print(data.content)

await client.stop()
```

</div>

<div class="ghd-codetab" data-lang="go" data-label="Go"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Go</div>

> \[!NOTE]
> El SDK de Go no envía automáticamente una CLI. Instale `copilot` en `PATH`, establezca la `COPILOT_CLI_PATH` variable de entorno, integre una CLI con el [empaquetador](https://github.com/github/copilot-sdk/tree/main/go/README.md#distributing-your-application-with-an-embedded-github-copilot-cli) o apunte `StdioConnection.Path` a un binario instalado.

```golang
client := copilot.NewClient(&copilot.ClientOptions{
    Connection: copilot.StdioConnection{Path: "/usr/local/bin/copilot"},
})
if err := client.Start(ctx); err != nil {
    log.Fatal(err)
}
defer client.Stop()

session, _ := client.CreateSession(ctx, &copilot.SessionConfig{Model: "gpt-5.4"})
response, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: "Hello!"})
if response != nil {
    if d, ok := response.Data.(*copilot.AssistantMessageData); ok {
        fmt.Println(d.Content)
    }
}
```

</div>

<div class="ghd-codetab" data-lang="dotnet" data-label=".NET"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">.NET</div>

```csharp
var client = new CopilotClient(new CopilotClientOptions
{
    Connection = RuntimeConnection.ForStdio(path: "/usr/local/bin/copilot"),
});

await using var session = await client.CreateSessionAsync(
    new SessionConfig { Model = "gpt-5.4" });

var response = await session.SendAndWaitAsync(
    new MessageOptions { Prompt = "Hello!" });
Console.WriteLine(response?.Data.Content);
```

</div>

</div>

## Opciones adicionales

```typescript
const client = new CopilotClient({
    cliPath: "/usr/local/bin/copilot",

    // Set log level for debugging
    logLevel: "debug",

    // Pass extra CLI arguments
    cliArgs: ["--log-dir=/tmp/copilot-logs"],

    // Set working directory
    cwd: "/path/to/project",
});
```

## Uso de variables de entorno

En lugar de la cadena de claves, puede autenticarse a través de variables de entorno. Esto es útil para CI o cuando no desea el inicio de sesión interactivo.

```bash
# Set one of these (in priority order):
export COPILOT_GITHUB_TOKEN="gho_xxxx"   # Recommended
export GH_TOKEN="gho_xxxx"               # GitHub CLI compatible
export GITHUB_TOKEN="gho_xxxx"           # GitHub Actions compatible
```

El SDK los recoge automáticamente, sin necesidad de cambios de código.

## Administración de sesiones

Las sesiones se configuran de forma predeterminada como efímeras. Para crear sesiones reanudables, proporcione su propio identificador de sesión:

```typescript
// Create a named session
const session = await client.createSession({
    sessionId: "my-project-analysis",
    model: "gpt-5.4",
});

// Later, resume it
const resumed = await client.resumeSession("my-project-analysis");
```

El estado de sesión se almacena localmente en `~/.copilot/session-state/{sessionId}/`.

## Limitaciones

| Limitación                      | Detalles                                                                        |
| ------------------------------- | ------------------------------------------------------------------------------- |
| **Compatibilidad de versiones** | Debe asegurarse de que la versión de la CLI sea compatible con el SDK.          |
| **Usuario único**               | Las credenciales están vinculadas a la persona que ha iniciado sesión en la CLI |
| **Solo local**                  | La CLI se ejecuta en la misma máquina que la aplicación.                        |
| **Sin multiinquilino**          | No se pueden atender varios usuarios desde una instancia de la CLI              |

## Pasos siguientes

* **[Configuración predeterminada (CLI agrupada)](/es/copilot/how-tos/copilot-sdk/setup/bundled-cli)**: use la CLI integrada del SDK (recomendado para la mayoría de los casos de uso)
* **[Crea tu primera aplicación con tecnología Copilot](/es/copilot/how-tos/copilot-sdk/getting-started)**: Creación de una aplicación interactiva completa
* **[Autenticación](/es/copilot/how-tos/copilot-sdk/auth/authenticate)**: todos los métodos de autenticación en detalle