# Configuration de l’interface CLI locale

Utilisez un binaire CLI spécifique au lieu de la gestion automatique de l’interface CLI du Kit de développement logiciel (SDK). Il s’agit d’une option avancée : vous fournissez explicitement le chemin d’accès CLI et vous êtes responsable de la compatibilité de la version avec le Kit de développement logiciel (SDK).

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

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

**À utiliser lorsque :** vous devez fixer une version spécifique de la CLI ou travailler avec le SDK Go (qui n’inclut pas automatiquement d’interface en ligne de commande).

## Fonctionnement

Par défaut, les sdk Node.js, Python et .NET incluent leur propre dépendance CLI (voir [Configuration par défaut (interface CLI groupée)](/fr/copilot/how-tos/copilot-sdk/setup/bundled-cli)). Si vous devez remplacer cela, par exemple, pour utiliser une interface CLI installée par le système, vous pouvez utiliser l’option `Connection` .

![Diagramme : Organigramme montrant le processus décrit.](/assets/images/help/copilot/copilot-sdk/setup-local-cli-diagram-0.png)

**Principales caractéristiques :**

* Vous fournissez explicitement le chemin binaire CLI
* Vous êtes responsable de la compatibilité de la version CLI avec le Kit de développement logiciel (SDK)
* L’authentification utilise les identifiants de l’utilisateur connecté stockés dans le trousseau système (ou les variables d’environnement)
* La communication s’effectue via stdio

## Paramétrage

### Utilisation d’un binaire CLI local

<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]
> Le Kit de développement logiciel (SDK) Go n’envoie pas automatiquement une interface CLI. Installez `PATH` sur `copilot`, définissez la variable d’environnement `COPILOT_CLI_PATH`, intégrez une interface en ligne de commande à l’aide de l’[outil bundler](https://github.com/github/copilot-sdk/tree/main/go/README.md#distributing-your-application-with-an-embedded-github-copilot-cli), ou faites pointer `StdioConnection.Path` vers un binaire installé.

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

## Options supplémentaires

```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",
});
```

## Utilisation de variables d’environnement

Au lieu du trousseau d'accès, vous pouvez vous authentifier via des variables d’environnement. Ceci est utile pour la CI ou lorsque vous ne souhaitez pas d’authentification interactive.

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

Le Kit de développement logiciel (SDK) les récupère automatiquement, sans modification du code nécessaire.

## Gestion des sessions

Les sessions par défaut sont éphémères. Pour créer des sessions pouvant être reprise, fournissez votre propre ID de session :

```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");
```

L’état de session est stocké localement à l’adresse `~/.copilot/session-state/{sessionId}/`.

## Limitations

| Limitation                     | Détails                                                                                                  |
| ------------------------------ | -------------------------------------------------------------------------------------------------------- |
| **Compatibilité des versions** | Vous devez vous assurer que votre version cli est compatible avec le Kit de développement logiciel (SDK) |
| **Utilisateur unique**         | Les informations d’identification sont liées à la personne qui s’est connectée à l’interface CLI         |
| **Local uniquement**           | L’interface CLI s’exécute sur la même machine que votre application                                      |
| **Pas de multi-locataire**     | Impossible de servir plusieurs utilisateurs à partir d’une instance CLI                                  |

## Étapes suivantes

* **[Configuration par défaut (interface CLI groupée)](/fr/copilot/how-tos/copilot-sdk/setup/bundled-cli)** : Utiliser l’interface CLI intégrée du SDK (recommandée pour la plupart des cas d’usage)
* **[Créez votre première application avec Copilot](/fr/copilot/how-tos/copilot-sdk/getting-started)** : Créer une application interactive complète
* **[Authentification](/fr/copilot/how-tos/copilot-sdk/auth/authenticate)** : toutes les méthodes d’authentification en détail