Use nos seguintes casos: Você precisa fixar uma versão específica da CLI ou trabalhar com o SDK do Go (que não inclui uma CLI).
Como funciona
Por padrão, os SDKs Node.js, Python e .NET incluem sua própria dependência da CLI (consulte Configuração padrão (CLI empacotada)). Se você precisar substituir isso, por exemplo, para usar uma CLI instalada pelo sistema, poderá usar a opção Connection .

Principais características:
- Você fornece explicitamente o caminho binário da CLI
- Você é responsável pela compatibilidade de versão da CLI com o SDK
- A autenticação usa as credenciais do usuário autenticado armazenadas no chaveiro do sistema (ou nas variáveis de ambiente)
- A comunicação ocorre por meio do stdio
Configuração
Usando um binário local da CLI
import { CopilotClient } from "@github/copilot-sdk";
const client = new CopilotClient({
cliPath: "/usr/local/bin/copilot",
});
const session = await client.createSession({ model: "gpt-4.1" });
const response = await session.sendAndWait({ prompt: "Hello!" });
console.log(response?.data.content);
await client.stop();
from copilot import CopilotClient
from copilot.generated.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-4.1")
response = await session.send_and_wait("Hello!")
if response:
match response.data:
case AssistantMessageData() as data:
print(data.content)
await client.stop()
Observação
O SDK do Go não agrupa uma CLI, portanto, você deve sempre fornecer Connection.
package main
import (
"context"
"fmt"
"log"
copilot "github.com/github/copilot-sdk/go"
)
func main() {
ctx := context.Background()
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-4.1"})
response, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: "Hello!"})
if response != nil {
if d, ok := response.Data.(*copilot.AssistantMessageData); ok {
fmt.Println(d.Content)
}
}
}
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-4.1"})
response, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: "Hello!"})
if response != nil {
if d, ok := response.Data.(*copilot.AssistantMessageData); ok {
fmt.Println(d.Content)
}
}
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-4.1" });
var response = await session.SendAndWaitAsync(
new MessageOptions { Prompt = "Hello!" });
Console.WriteLine(response?.Data.Content);
Opções adicionais
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",
});
Usando variáveis de ambiente
Em vez do conjunto de chaves, você pode autenticar por meio de variáveis de ambiente. Isso é útil para CI ou quando você não deseja logon interativo.
# 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
O SDK os seleciona automaticamente, sem necessidade de alterações de código.
Gerenciamento de sessões
As sessões são temporárias por padrão. Para criar sessões retomáveis, forneça sua própria ID de sessão:
// Create a named session
const session = await client.createSession({
sessionId: "my-project-analysis",
model: "gpt-4.1",
});
// Later, resume it
const resumed = await client.resumeSession("my-project-analysis");
O estado da sessão é armazenado localmente em ~/.copilot/session-state/{sessionId}/.
Limitações
| Limitation | Detalhes |
|---|---|
| Compatibilidade entre versões | Você deve garantir que sua versão da CLI seja compatível com o SDK |
| Usuário único | As credenciais estão vinculadas a quem entrou na CLI |
| Somente local | A CLI é executada no mesmo computador que seu aplicativo |
| Nenhum suporte para multiusuário | Não é possível atender vários usuários de uma instância da CLI |
Próximas Etapas
- Configuração padrão (CLI empacotada): Use a CLI interna do SDK (recomendada para a maioria dos casos de uso)
- Crie seu primeiro aplicativo com tecnologia do Copilot: Criar um aplicativo interativo completo
- Autenticação: Todos os métodos de autenticação em detalhes