GitHub Actions
Erteilen Sie für Workflows in einem organisationseigenen Repository dem integrierten Token die Berechtigung, Copilot-Anfragen zu stellen:
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 }}
Die Richtlinie Verwendung von Copilot CLI zulassen, die der Organisation in Rechnung gestellt wird muss aktiviert sein. Dieser Ansatz benötigt weder eine GitHub App noch ein gespeichertes Authentifizierungsgeheimnis. Ausführliche Informationen findest du unter Verwenden von Copilot CLI in GitHub Actions mit GITHUB_TOKEN.
Andere Dienste und CI-Systeme
Für Dienste außerhalb GitHub Actions:
-
Erstellen Sie eine GitHub-App mit der Organisationsberechtigung Copilot Requests, die auf Schreibgeschützt festgelegt ist.
-
Installieren Sie sie für die Organisation, der die Nutzung zugeordnet und in Rechnung gestellt werden soll.
-
Generieren eines Installationszugriffstokens für eine GitHub App mit der Copilot-Berechtigung:
{ "permissions": { "organization_copilot_requests": "read" } } -
Übergeben Sie das resultierende
ghs_Token an die SDK-OptiongitHubToken,github_tokenoder eine entsprechende Option. Legen Sie ihn für einen vorhandenen Laufzeit-URI stattdessen alsCOPILOT_GITHUB_TOKENfür den Laufzeitprozess fest.
Die Organisation muss für Copilot-Anfragen von GitHub App-Installationen aktiviert sein. Installationstoken laufen nach einer Stunde ab.
Hinweis
Es ist kein angemeldeter Benutzer erforderlich.
useLoggedInUser: false deaktiviert die automatische Erkennung von Anmeldeinformationen, einschließlich Umgebungsvariablentoken wie COPILOT_GITHUB_TOKEN, also übergeben Sie das Installationstoken über die explizite Tokenoption des SDK.
Runtime konfigurieren
In den folgenden Beispielen wird davon ausgegangen, dass das gemintete Token in INSTALLATION_TOKEN ist. Sie übergeben es nur an die Child-Runtime und deaktivieren Fallback auf gespeicherte Benutzeranmeldeinformationen.
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.
}
Verwenden Sie für prozessinterne FFI dieselbe Tokenoption; Umgebungsvariablentoken im Hostprozess werden ignoriert, wenn useLoggedInUser false ist. Legen Sie für einen vorhandenen Laufzeit-URI COPILOT_GITHUB_TOKEN für diesen Laufzeitprozess fest.
Aktualisierungs-Token
Erstellen Sie vor Ablauf des aktuellen Tokens ein neues Installationstoken. Starten Sie für einen untergeordneten Prozess den SDK-Client mit dem neuen Token neu. Starten Sie für eine in-Process- oder vorhandene Laufzeit die Hostlaufzeit mit dem neuen Token neu.
Billing
Die Verwendung wird der Organisation zugeordnet und in Rechnung gestellt, die die GitHub App-Installation besitzt.
Troubleshooting
| Symptom | Prüfen |
|---|---|
401 Unauthorized | Das Token ist möglicherweise abgelaufen oder ungültig. Erstelle ein neues Installations-Token. |
403 mit dem Hinweis, dass Copilot Anforderungen mit GitHub App-Installationszugriffstoken nicht aktiviert sind. | Bestätigen Sie, dass die Organisation GitHub App-Installationsauthentifizierung für Copilot unterstützt. |
No GitHub OAuth token or Copilot HMAC key provided oder Not authenticated | Bestätigen Sie, dass das Installationstoken über die explizite Tokenoption des SDK übergeben wird. Mit useLoggedInUser: false ignoriert die Laufzeit COPILOT_GITHUB_ und andere Umgebungsvariablen-Token. |
403 Forbiddenaus der Copilot-API | Vergewissern Sie sich, dass die Installation über die Copilot Requests-Berechtigung der Organisation verfügt, und generieren Sie dann ein neues Token. |
| Das angeforderte Modell ist nicht verfügbar. | Vergewissern Sie sich, dass die Richtlinie der Organisation die Verwendung von Copilot zulässt und die gebündelte Laufzeit es unterstützt. |
| Falsches Konto belastet | Bestätigen Sie, dass die Installation zur beabsichtigten Organisation gehört. |
Weiterführende Lektüre
- Authentication: andere Authentifizierungsmethoden und Priorität
- Generieren eines Installationszugriffstokens für eine GitHub App: GitHub App-Tokenerstellung