GitHub Actions
Para fluxos de trabalho em um repositório pertencente à organização, conceda ao token interno a permissão para fazer solicitações ao Copilot:
permissions:
contents: read
copilot-requests: write
jobs:
copilot:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: your-application
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
A política Permitir o uso do Copilot CLI cobrado da organização da organização deve estar habilitada. Essa abordagem não requer GitHub App nem segredo de autenticação armazenado. Para obter detalhes, consulte Usando Copilot CLI em GitHub Actions com GITHUB_TOKEN.
Outros serviços e sistemas de CI
Para serviços fora GitHub Actions:
-
Crie um aplicativo GitHub com a permissão da organização Copilot Solicitações definida como somente leitura.
-
Instale-o na organização à qual o uso deve ser atribuído e cobrado.
-
Gerando um token de acesso de instalação para um aplicativo GitHub com a permissão Copilot:
{ "permissions": { "organization_copilot_requests": "read" } } -
Passe o token resultante
ghs_para o SDKgitHubToken``github_tokenou a opção equivalente. Para um URI de runtime existente, defina-o comoCOPILOT_GITHUB_TOKENno processo de runtime.
A organização deve estar habilitada para receber solicitações do Copilot de instalações do GitHub App. Os tokens de instalação expiram após uma hora.
Observação
Nenhum usuário conectado é necessário.
useLoggedInUser: false desativa a descoberta automática de credenciais, incluindo tokens de variável de ambiente, como COPILOT_GITHUB_TOKEN, portanto, passe o token de instalação por meio da opção de token explícito do SDK.
Configurar o tempo de execução
Os exemplos a seguir partem do pressuposto de que o token emitido está em INSTALLATION_TOKEN. Eles o transmitem apenas para o runtime filho e desativam o fallback para credenciais de usuário armazenadas.
import { CopilotClient, RuntimeConnection } from "@github/copilot-sdk";
const token = process.env.INSTALLATION_TOKEN;
if (!token) throw new Error("INSTALLATION_TOKEN is required");
const client = new CopilotClient({
connection: RuntimeConnection.forStdio(),
gitHubToken: token,
useLoggedInUser: false,
});
import os
from copilot import CopilotClient, RuntimeConnection
client = CopilotClient(
connection=RuntimeConnection.for_stdio(),
github_token=os.environ["INSTALLATION_TOKEN"],
use_logged_in_user=False,
)
package main
import (
"log"
"os"
copilot "github.com/github/copilot-sdk/go"
)
func main() {
token, ok := os.LookupEnv("INSTALLATION_TOKEN")
if !ok {
log.Fatal("INSTALLATION_TOKEN is required")
}
client := copilot.NewClient(&copilot.ClientOptions{
Connection: copilot.StdioConnection{},
GitHubToken: token,
UseLoggedInUser: copilot.Bool(false),
})
_ = client
}
use github_copilot_sdk::{ClientOptions, Transport};
fn main() {
let token = std::env::var("INSTALLATION_TOKEN").expect("INSTALLATION_TOKEN is required");
let options = ClientOptions::new()
.with_transport(Transport::Stdio)
.with_github_token(token)
.with_use_logged_in_user(false);
drop(options);
}
using GitHub.Copilot;
var token = Environment.GetEnvironmentVariable("INSTALLATION_TOKEN")
?? throw new InvalidOperationException("INSTALLATION_TOKEN is required");
await using var client = new CopilotClient(new CopilotClientOptions
{
Connection = RuntimeConnection.ForStdio(),
GitHubToken = token,
UseLoggedInUser = false,
});
import com.github.copilot.CopilotClient;
import com.github.copilot.rpc.CopilotClientOptions;
import java.util.Objects;
var token = Objects.requireNonNull(
System.getenv("INSTALLATION_TOKEN"), "INSTALLATION_TOKEN is required");
try (var client = new CopilotClient(new CopilotClientOptions()
.setGitHubToken(token)
.setUseLoggedInUser(false))) {
// Use the client.
}
Para o FFI em processo, use a mesma opção de token; tokens de variável de ambiente no processo de host são ignorados quando useLoggedInUser é falso. Para um URI de runtime existente, defina COPILOT_GITHUB_TOKEN nesse processo de runtime.
Tokens de atualização
Gere um novo token de instalação antes que o token atual expire. Para um processo filho, reinicie o cliente SDK com o novo token. Para um runtime em processo ou existente, reinicie o runtime do host com o novo token.
Billing
O uso é atribuído e cobrado para a organização que possui a instalação do aplicativo GitHub.
Resolução de problemas
| Sintoma | Verificação |
|---|---|
401 Unauthorized | O token pode estar expirado ou inválido. Mint um novo token de instalação. |
403informando que Copilot solicitações com tokens de acesso à instalação do aplicativo GitHub não estão habilitadas | Confirme se a organização dá suporte à autenticação de instalação do aplicativo GitHub para Copilot. |
No GitHub OAuth token or Copilot HMAC key provided ou Not authenticated | Confirme se o token de instalação é passado por meio da opção de token explícito do SDK. Com useLoggedInUser: false, o runtime ignora COPILOT_GITHUB_ e outros tokens de variável de ambiente. |
403 Forbidden da API do Copilot | Confirme se a instalação tem a organização Copilot permissão Solicitações e, em seguida, crie um novo token. |
| O modelo solicitado não está disponível | Confirme se a política do Copilot da organização permite esse modelo e se o runtime incluído é compatível com ele. |
| Cobrança feita na conta errada | Confirme se a instalação pertence à organização pretendida. |
Leitura adicional
- Autenticação: outros métodos de autenticação e prioridade
- Gerando um token de acesso de instalação para um aplicativo GitHub: criação de token de aplicativo GitHub