Métodos de autenticação
| Método | Caso de uso | Assinatura de Copilot necessária |
|---|---|---|
| GitHub usuário conectado | Aplicativos interativos em que os usuários entrarão com GitHub | Yes |
| OAuth GitHub App | Aplicativos que atuam em nome dos usuários por meio do OAuth | Yes |
| Variáveis de ambiente | CI/CD, automação, servidor para servidor | Yes |
| BYOK (bring your own key) | Usando suas próprias chaves de API (Fábrica de IA do Azure, OpenAI etc.) | Não |
Usuário conectado do GitHub
Esse é o método de autenticação padrão ao executar a CLI Copilot interativamente. Os usuários se autenticam por meio do fluxo de dispositivo OAuth do GitHub, e o SDK usa suas credenciais armazenadas.
Como funciona:
- O usuário executa
copilotCLI e entra por GitHub OAuth - As credenciais são armazenadas com segurança no conjunto de chaves do sistema
- O SDK usa automaticamente as credenciais armazenadas
Configuração do SDK:
import { CopilotClient } from "@github/copilot-sdk";
// Default: uses logged-in user credentials
const client = new CopilotClient();
from copilot import CopilotClient
# Default: uses logged-in user credentials
client = CopilotClient()
await client.start()
package main
import copilot "github.com/github/copilot-sdk/go"
func main() {
// Default: uses logged-in user credentials
client := copilot.NewClient(nil)
_ = client
}
import copilot "github.com/github/copilot-sdk/go"
// Default: uses logged-in user credentials
client := copilot.NewClient(nil)
using GitHub.Copilot;
// Default: uses logged-in user credentials
await using var client = new CopilotClient();
import com.github.copilot.sdk.CopilotClient;
// Default: uses logged-in user credentials
var client = new CopilotClient();
client.start().get();
Quando usar:
- Aplicativos da área de trabalho em que os usuários interagem diretamente
- Ambientes de desenvolvimento e teste
- Qualquer cenário em que um usuário possa entrar interativamente
Aplicativo GitHub OAuth
Use um aplicativo GitHub OAuth para autenticar usuários por meio do aplicativo e passar suas credenciais para o SDK. Isso permite que seu aplicativo faça Copilot solicitações de API em nome de usuários que autorizam seu aplicativo.
Como funciona:
- Usuário autoriza seu aplicativo OAuth do GitHub
- Seu aplicativo recebe um token de acesso do usuário (com o prefixo
gho_oughu_) - Passar o token para o SDK por meio da
gitHubTokenopção
Configuração do SDK:
import { CopilotClient } from "@github/copilot-sdk";
const client = new CopilotClient({
gitHubToken: userAccessToken, // Token from OAuth flow
useLoggedInUser: false, // Don't use stored CLI credentials
});
from copilot import CopilotClient
client = CopilotClient({
"github_token": user_access_token, # Token from OAuth flow
"use_logged_in_user": False, # Don't use stored CLI credentials
})
await client.start()
package main
import copilot "github.com/github/copilot-sdk/go"
func main() {
userAccessToken := "token"
client := copilot.NewClient(&copilot.ClientOptions{
GitHubToken: userAccessToken,
UseLoggedInUser: copilot.Bool(false),
})
_ = client
}
import copilot "github.com/github/copilot-sdk/go"
client := copilot.NewClient(&copilot.ClientOptions{
GithubToken: userAccessToken, // Token from OAuth flow
UseLoggedInUser: copilot.Bool(false), // Don't use stored CLI credentials
})
using GitHub.Copilot;
var userAccessToken = "token";
await using var client = new CopilotClient(new CopilotClientOptions
{
GitHubToken = userAccessToken,
UseLoggedInUser = false,
});
using GitHub.Copilot;
await using var client = new CopilotClient(new CopilotClientOptions
{
GitHubToken = userAccessToken, // Token from OAuth flow
UseLoggedInUser = false, // Don't use stored CLI credentials
});
import com.github.copilot.sdk.CopilotClient;
import com.github.copilot.sdk.json.*;
var client = new CopilotClient(new CopilotClientOptions()
.setGitHubToken(userAccessToken) // Token from OAuth flow
.setUseLoggedInUser(false) // Don't use stored CLI credentials
);
client.start().get();
Tipos de token com suporte:
gho_– Tokens de acesso do usuário OAuthghu_– tokens de acesso do usuário do aplicativo GitHubgithub_pat_- Tokens de acesso pessoal refinados
Sem suporte:
ghp_- Tokens de acesso pessoal clássicos (preteridos)
Quando usar:
- Aplicativos Web em que os usuários se inscrevem por meio de GitHub
- Aplicativos SaaS baseados em Copilot
- Qualquer aplicativo multiusuário em que você precisa fazer solicitações em nome de usuários diferentes
Variáveis de ambiente
Para automação, pipelines de CI/CD e cenários de servidor para servidor, você pode se autenticar usando variáveis de ambiente.
Variáveis de ambiente com suporte (em ordem de prioridade):
COPILOT_GITHUB_TOKEN– Recomendado para uso explícito do CopilotGH_TOKEN– compatível com a CLI GitHubGITHUB_TOKEN– compatível com GitHub Actions
Como funciona:
- Definir uma das variáveis de ambiente com suporte com um token válido
- O SDK detecta e usa automaticamente o token
Configuração do SDK:
Nenhuma alteração de código necessária – o SDK detecta automaticamente variáveis de ambiente:
import { CopilotClient } from "@github/copilot-sdk";
// Token is read from environment variable automatically
const client = new CopilotClient();
from copilot import CopilotClient
# Token is read from environment variable automatically
client = CopilotClient()
await client.start()
Quando usar:
- Pipelines de CI/CD (GitHub Actions, Jenkins etc.)
- Teste automatizado
- Aplicativos do lado do servidor com contas de serviço
- Desenvolvimento quando você não quiser usar logon interativo
BYOK (Bring Your Own Key - traga sua própria chave)
O BYOK permite que você use suas próprias chaves de API de provedores de modelo, como Fábrica de IA do Azure, OpenAI ou Anthropic. Isso contorna totalmente a autenticação do GitHub Copilot.
Principais benefícios:
- Nenhuma assinatura de GitHub Copilot necessária
- Usar implantações de modelo empresarial
- Cobrança direta com seu fornecedor de modelo
- Suporte para pontos de extremidade compatíveis com AZure AI Foundry, OpenAI, Antropic e OpenAI
Consulte o BYOK (bring your own key) para obter detalhes completos, incluindo:
- Configuração do Fábrica de IA do Azure
- Opções de configuração do provedor
- Limitações e considerações
- Exemplos de código completos
Prioridade de autenticação
Quando vários métodos de autenticação estão disponíveis, o SDK os usa nesta ordem de prioridade:
- Explícito
gitHubToken- token passado diretamente para o construtor do SDK - Chave -
CAPI_HMAC_KEYHMAC ouCOPILOT_HMAC_KEYvariáveis de ambiente - Token de API direto -
GITHUB_COPILOT_API_TOKENcomCOPILOT_API_URL - Tokens de variáveis de ambiente -
COPILOT_GITHUB_TOKEN→GH_TOKEN→GITHUB_TOKEN - Credenciais OAuth armazenadas – Do logon anterior
copilotda CLI - GitHub CLI -
gh authcredenciais
Desabilitando o logon automático
Para impedir que o SDK use automaticamente credenciais armazenadas ou gh autenticação da CLI, use a opção useLoggedInUser: false :
const client = new CopilotClient({
useLoggedInUser: false, // Only use explicit tokens
});
from copilot import CopilotClient
client = CopilotClient({
"use_logged_in_user": False,
})
client = CopilotClient({
"use_logged_in_user": False, # Only use explicit tokens
})
package main
import copilot "github.com/github/copilot-sdk/go"
func main() {
client := copilot.NewClient(&copilot.ClientOptions{
UseLoggedInUser: copilot.Bool(false),
})
_ = client
}
client := copilot.NewClient(&copilot.ClientOptions{
UseLoggedInUser: copilot.Bool(false), // Only use explicit tokens
})
await using var client = new CopilotClient(new CopilotClientOptions
{
UseLoggedInUser = false, // Only use explicit tokens
});
import com.github.copilot.sdk.CopilotClient;
import com.github.copilot.sdk.json.*;
var client = new CopilotClient(new CopilotClientOptions()
.setUseLoggedInUser(false) // Only use explicit tokens
);
client.start().get();
Próximas Etapas
- BYOK (bring your own key) – Saiba como usar suas próprias chaves de API
- Crie seu primeiro aplicativo com tecnologia do Copilot - Crie seu primeiro aplicativo com tecnologia do Copilot
- Using MCP servers with the GitHub Copilot SDK – Conectar-se a ferramentas externas