Используйте когда: Нужно закрепить конкретную версию CLI или работать с Go SDK (который не включает CLI).
Принцип работы
По умолчанию SDK Node.js, Python и .NET содержат собственную зависимость CLI (см. Настройка по умолчанию (в комплекте CLI)). Если вам нужно это переопределить — например, чтобы использовать установленный системой CLI — вы можете воспользоваться этой Connection опцией.

Ключевые характеристики:
- Вы явно указываете бинарный путь CLI
- Вы отвечаете за совместимость версии CLI с SDK
- Аутентификация использует учетные данные авторизованного пользователя из системного ключа (или env vars)
- Связь происходит через stdio
Конфигурация
Использование локального бинарного файла 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()
Примечание.
В Go SDK не входит в комплект CLI, поэтому всегда нужно предоставлять 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);
Дополнительные параметры
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",
});
Использование переменных среды
Вместо связки ключей можно аутентифицироваться через переменные среды. Это полезно для CI или когда вы не хотите интерактивного входа.
# 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
SDK автоматически их принимает — изменения кода не требуются.
Управление сессиями
Сессии по умолчанию эфемерны. Чтобы создать возобновляемые сессии, укажите свой собственный идентификатор сессии:
// 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");
Состояние сессии хранится локально в ~/.copilot/session-state/{sessionId}/.
Ограничения
| Limitation | Сведения |
|---|---|
| Совместимость версий | Вы должны убедиться, что ваша версия CLI совместима с SDK |
| Одиночный пользователь | Учетные данные привязаны к тому, кто вошёл в CLI |
| Только местные | CLI работает на том же компьютере, что и ваше приложение |
| Нет мультиарендатора | Нельзя обслуживать нескольких пользователей из одного инстанса CLI |
Дальнейшие действия
- Настройка по умолчанию (в комплекте CLI): Используйте встроенный CLI SDK (рекомендуется для большинства случаев)
- Создайте своё первое приложение на базе Copilot: Создайте полноценное интерактивное приложение
- АВТОТИТРЫ: Все методы аутентификации подробно