Skip to main content

Autenticação de servidor para servidor

Use um token de acesso de instalação de curta duração quando um serviço precisar fazer solicitações Copilot em nome de uma organização sem as credenciais de um usuário. Em GitHub Actions, use o internoGITHUB_TOKEN.

GitHub Actions

Para fluxos de trabalho em um repositório de propriedade da organização, conceda a permissão de token interno para fazer solicitações de Copilot:

permissions:
  contents: read
  copilot-requests: write

jobs:
  copilot:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - run: your-application
        env:
          GITHUB_TOKEN: $

A CLI de permitir o uso de Copilot da organização cobrada na política da organização deve ser habilitada. Essa abordagem não precisa de GitHub aplicativo ou 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:

  1. Crie um aplicativo GitHub com a permissão do repositório Copilot Solicitações definida como Leitura & gravação.

  2. Instale-o na organização que deve ser cobrada. A verificação de permissão de Copilot atual requer acesso a todos os repositórios.

  3. Gerando um token de acesso de instalação para um aplicativo GitHub com uma ID do repositório e a permissão Copilot:

    {
      "repository_ids": [123456789],
      "permissions": {
        "copilot_requests": "write"
      }
    }
    
  4. Passe o token resultante ghs_ para o runtime como COPILOT_GITHUB_TOKEN.

A organização deve ser habilitada para Copilot solicitações de instalações do GitHub App. Os tokens de instalação expiram após uma hora.

Aviso

Não passe um token de instalação por meio da opção do SDK gitHubToken``github_tokenou equivalente. Essa opção é para tokens de usuário. Os tokens de instalação devem usar o caminho de autenticação de ambiente de runtime.

Configurar o runtime

Os exemplos a seguir pressupõem que o token cunhado está em INSTALLATION_TOKEN. Eles o transmitem apenas para o runtime filho e desabilitam o fallback para as credenciais de usuário armazenadas.

Idiomas de código navigation

TypeScript
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(),
    env: {
        ...process.env,
        COPILOT_GITHUB_TOKEN: token,
    },
    useLoggedInUser: false,
});

Para o FFI em processo, defina COPILOT_GITHUB_TOKEN no ambiente do host antes de carregar o runtime; não há suporte para opções de ambiente por cliente. Para um URI de runtime existente, defina-o nesse processo de runtime.

Tokens de atualização

Mint um novo token de instalação antes do token atual expirar. Para um processo filho, reinicie o cliente do SDK com o novo ambiente. Para um runtime em processo ou existente, reinicie o runtime do host com o novo token.

Billing

O uso é atribuído e cobrado na conta que possui a instalação do aplicativo GitHub. Usar uma instalação da organização para cobrança da organização; um uso de atributos de instalação de conta de usuário para esse usuário.

Resolução de problemas

SintomaVerificação
401 UnauthorizedConfirme se a organização dá suporte à autenticação de instalação do aplicativo GitHub para Copilot.
403 Resource not accessible by integration ou um erro ao mencionar informações do usuárioConfirme se o token de instalação está dentro COPILOT_GITHUB_TOKEN, não a opção de token explícito do SDK.
403 Forbiddenda API de CopilotConfirme se a solicitação de token contém repository_ids e copilot_requests: write.
403 Forbidden com a solicitação de token necessáriaConfirme se a instalação do aplicativo tem acesso a Todos os repositórios e, em seguida, crie um novo token.
O modelo solicitado não está disponívelConfirme se a política de Copilot da organização permite o modelo e o runtime empacotado dá suporte a ele.
Conta incorreta cobradaConfirme se a instalação pertence à organização pretendida.

Leitura adicional