Acciones de GitHub
Para los flujos de trabajo en un repositorio propiedad de la organización, conceda permisos al token integrado para hacer solicitudes a 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 }}
La directiva de la organización Permitir el uso de Copilot CLI facturado a la organización debe estar habilitada. Este enfoque no necesita ningún secreto de autenticación almacenado ni GitHub aplicación. Para obtener más información, consulte Uso de la CLI de Copilot en Acciones de GitHub con GITHUB_TOKEN.
Otros servicios y sistemas de CI
Para servicios fuera de Acciones de GitHub:
-
Cree una aplicación de GitHub con el permiso de organización Copilot Requests establecido en Solo lectura.
-
Instálelo en la organización a la que se le debe atribuir y facturar el uso.
-
Generación de un token de acceso de instalación para una aplicación de GitHub con el permiso Copilot:
{ "permissions": { "organization_copilot_requests": "read" } } -
Pase el token resultante
ghs_agithub_token,gitHubTokeno la opción equivalente del SDK. Para un URI en tiempo de ejecución existente, en su lugar, establézcalo comoCOPILOT_GITHUB_TOKENen el proceso de ejecución.
La organización debe estar habilitada para las solicitudes de Copilot de las instalaciones de GitHub App. Los tokens de instalación expiran después de una hora.
Nota:
No se requiere ningún usuario que haya iniciado sesión.
useLoggedInUser: false desactiva la detección automática de credenciales, incluidos los tokens de variables de entorno como COPILOT_GITHUB_TOKEN, por lo que pasa el token de instalación a través de la opción de token explícito del SDK.
Configuración del entorno de ejecución
En los ejemplos siguientes se supone que el token minted está en INSTALLATION_TOKEN. Solo lo pasan al entorno de ejecución hijo y deshabilitan el recurso a las credenciales de usuario almacenadas.
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 FFI en proceso, use la misma opción de token; los tokens de variables de entorno en el proceso de host se omiten cuando useLoggedInUser es falso. Para un URI de tiempo de ejecución existente, establezca COPILOT_GITHUB_TOKEN en ese URI.
Tokens de actualización
Emita un nuevo token de instalación antes de que expire el token actual. Para un proceso secundario, reinicie el cliente del SDK con el nuevo token. Para un entorno de ejecución en proceso o existente, reinicie el entorno de ejecución del host con el nuevo token.
Billing
El uso se atribuye y se factura a la organización que posee la instalación de la aplicación GitHub.
Troubleshooting
| Síntoma | Check |
|---|---|
401 Unauthorized | El token puede haber expirado o no ser válido. Genere un nuevo token de instalación. |
403que indica que las solicitudes de Copilot con tokens de acceso de instalación de la aplicación GitHub no están habilitadas | Confirme que la organización admite la autenticación de instalación de aplicaciones de GitHub para Copilot. |
No GitHub OAuth token or Copilot HMAC key provided o Not authenticated | Confirme que el token de instalación se pasa a través de la opción de token explícito del SDK. Con useLoggedInUser: false, el entorno de ejecución omite COPILOT_GITHUB_ y otros tokens de variables de entorno. |
403 Forbiddendesde la API de Copilot | Confirme que la instalación tiene el permiso Copilot Requests de la organización y, a continuación, emita un nuevo token. |
| El modelo solicitado no está disponible | Confirme que la directiva de Copilot de la organización permite usar el modelo y que el entorno de ejecución incluido sea compatible con él. |
| Cuenta incorrecta facturada | Confirme que la instalación pertenece a la organización deseada. |
Lectura adicional
- Autenticación: otros métodos de autenticación y prioridad
- Generación de un token de acceso de instalación para una aplicación de GitHub: creación de tokens de aplicación de GitHub