Skip to main content

GitHub Copilot CLI-Befehlsreferenz

Hier finden Sie Befehle und Tastenkombinationen, um Copilot CLI effektiv zu nutzen.

Kommandozeilenbefehle

BefehlPurpose
copilotStarten Sie die interaktive Benutzeroberfläche.
copilot help [TOPIC]Hilfeinformationen anzeigen. Zu den Hilfethemen gehören: config, commands, environment, logging, monitoring, permissions, und providers.
copilot initInitialisieren Sie Copilot benutzerdefinierte Anweisungen für dieses Repository.
copilot loginAuthentifizierung über den OAuth-Gerätefluss mit Copilot. Akzeptiert --host HOST , um die GitHub Host-URL anzugeben (Standard: https://github.com).
copilot login [OPTION]Authentifizierung über den OAuth-Gerätefluss mit Copilot. Weitere Informationen finden Sie copilot login unter "Optionen".
copilot mcpVerwalten Sie MCP-Serverkonfigurationen über die Befehlszeile.
copilot pluginVerwalten Sie Plugins und Plug-In-Marketplaces.
copilot updateLaden Sie die neueste Version herunter, und installieren Sie sie.
copilot versionZeigen Sie Versionsinformationen an, und suchen Sie nach Updates.

          `copilot login`-Optionen
AuswahlPurpose
--host HOST
          GitHub Host-URL (Standard: `https://github.com`). Verwenden Sie diese Methode, um sich mit einer GitHub Enterprise Cloud Instanz zu authentifizieren, die die Datenresidenz verwendet (z. B. `https://example.ghe.com`). |

| --config-dir PATH | Legen Sie das Konfigurationsverzeichnis fest (Standard: ~/.copilot). |

Der Standardauthentifizierungsmodus ist ein webbasierter Browserfluss. Nach Abschluss wird ein Authentifizierungstoken sicher im Systemanmeldeinformationsspeicher gespeichert. Wenn ein Anmeldeinformationsspeicher nicht gefunden wird, wird das Token in einer Klartext-Konfigurationsdatei unter ~/.copilot/ gespeichert.

Alternativ wird ein Authentifizierungstoken verwendet, Copilot CLI das in Umgebungsvariablen zu finden ist. Die folgenden Punkte werden in der Reihenfolge der Rangfolge überprüft: COPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKEN. Diese Methode eignet sich am besten für kopflose Verwendung wie Automatisierung.

Unterstützte Tokentypen sind fine-grained personal access tokens (v2 PATs) mit der Berechtigung "Copilot Requests", OAuth-Token aus der Copilot CLI-App und OAuth-Token aus der GitHub CLI (gh) App. Klassische personal access tokens (ghp_) werden nicht unterstützt.

          **Beispiele:**
# Authenticate with github.com
copilot login

# Authenticate with GitHub Enterprise Cloud (data residency)
copilot login --host https://example.ghe.com

# Use a fine-grained PAT via environment variable
COPILOT_GITHUB_TOKEN=github_pat_... copilot

Globale Tastenkombinationen in der interaktiven Benutzeroberfläche

VerknüpfungPurpose
@ FILENAMEFügen Sie Dateiinhalte in den Kontext ein.
# NUMBERSchließen Sie ein Problem oder eine GitHub Pullanforderung in den Kontext ein.
! COMMANDFühren Sie einen Befehl in der lokalen Shell aus und umgehen Sie Copilot.
?Öffnen Sie schnelle Hilfe (auf einer leeren Eingabeaufforderung).
ESCAbbrechen des aktuellen Vorgangs.
Strg+CVorgang abbrechen/Eingabe löschen. Drücken Sie zweimal, um zu beenden.
STRG+DHerunterfahren.
STRG+GBearbeiten Sie die Eingabeaufforderung in einem externen Editor ($EDITOR).
STRG+LLöschen Sie den Bildschirm.
Strg+Eingabe oder STRG+QEine Nachricht in die Warteschlange stellen, die gesendet werden soll, während der Agent ausgelastet ist.
STRG+RUmgekehrte Suche durch den Befehlsverlauf.
Strg+VFügen Sie aus der Zwischenablage als Datei ein.
Strg+X dann /Nachdem Sie mit der Eingabe einer Eingabeaufforderung begonnen haben, können Sie einen Schrägstrichbefehl ausführen, z. B. wenn Sie das Modell ändern möchten, ohne die Eingabeaufforderung erneut eingeben zu müssen.
Strg+X dann eBearbeiten Sie die Eingabeaufforderung in einem externen Editor ($EDITOR).
Strg+X dann oÖffnen Sie den neuesten Link aus der Timeline.
Strg+ZProzess in den Hintergrund verschieben (Unix).
Shift+Enter oder Option+Enter (Mac) / Alt+Enter (Windows/Linux)Fügen Sie eine neue Zeile in die Eingabe ein.
SHIFT+TABWechseln zwischen Standard-, Plan- und Autopilot-Modus.

Zeitleistenshortcuts in der interaktiven Benutzeroberfläche

VerknüpfungPurpose
Strg+OIn der Eingabeaufforderung steht zwar nichts, aber dies erweitert die letzten Einträge in der Zeitleiste von Copilot, um mehr Details anzuzeigen.
STRG+EWährend in der Eingabeaufforderung nichts steht, werden dadurch alle Elemente in der Antwortzeitleiste von Copilot erweitert.
Strg+TErweitern/Reduzieren der Anzeige der Begründung in Antworten.
Bild hoch/Bild abScrollen Sie die Zeitachse um eine Seite nach oben oder unten.
VerknüpfungPurpose
STRG+AWechseln zum Anfang der Zeile (beim Eingeben).
STRG+BWechseln zum vorherigen Zeichen
STRG+EWechseln zum Ende der Zeile (beim Eingeben).
STRG+FWechseln zum nächsten Zeichen
STRG+HLöschen Sie das vorherige Zeichen.
Strg+KLöscht vom Cursor bis zum Ende der Zeile. Wenn sich der Cursor am Ende der Zeile befindet, löschen Sie den Zeilenumbruch.
Strg+ULöscht vom Cursor bis zum Anfang der Zeile.
STRG+WLöschen Sie das vorherige Wort.
HomeWechseln zum Anfang des Texts.
EndeWechseln zum Ende des Texts.
ALT+/ (Windows/Linux)
          <kbd>Option</kbd>+<kbd>←</kbd>/<kbd>→</kbd> (Mac) | Bewegen sie den Cursor um ein Wort.             |

| / | Navigieren Sie im Befehlsverlauf. | | Tab / Strg+Y | Übernehmen Sie den aktuellen Vorschlag für die Inline-Vervollständigung. |

Slash-Befehle auf der interaktiven Benutzeroberfläche

BefehlPurpose
/add-dir PATHFügen Sie der Liste der zulässigen Dateien ein Verzeichnis für den Dateizugriff hinzu.
/agentDurchsuchen und wählen Sie aus den verfügbaren Agents (falls vorhanden) aus. Siehe Informationen zu benutzerdefinierten Agents.
/ask QUESTIONStellen Sie eine schnelle Nebenfrage, ohne sie dem Gesprächsverlauf hinzuzufügen. Nur im experimentellen Modus verfügbar.
/allow-all [on|off|show], /yolo [on|off|show]Alle Berechtigungen aktivieren (Tools, Pfade und URLs).
/changelog [summarize] [VERSION|last N|since VERSION], /release-notes [summarize] [VERSION|last N|since VERSION]Anzeigen des CLI-Änderungsprotokolls. Geben Sie optional eine Version, eine Anzahl der zuletzt verwendeten Versionen oder eine Startversion an. Fügen Sie das Schlüsselwort summarize für eine KI-generierte Zusammenfassung hinzu.
/chronicle <standup|tips|improve|reindex>Tools für den Sitzungsverlauf und Einblicke. Nur im experimentellen Modus verfügbar.
/clear [PROMPT], /new [PROMPT]``/reset [PROMPT]Beginnen Sie eine neue Unterhaltung.
/compactFassen Sie den Unterhaltungsverlauf zusammen, um die Nutzung von Kontextfenstern zu reduzieren. Siehe Verwalten des Kontexts in GitHub Copilot-CLI.
/contextAnzeigen von Verwendung und Visualisierung der Kontextfenster-Tokens. Siehe Verwalten des Kontexts in GitHub Copilot-CLI.
/copyKopieren Sie die letzte Antwort in die Zwischenablage.
/cwd, /cd [PATH]Ändern Sie das Arbeitsverzeichnis, oder zeigen Sie das aktuelle Verzeichnis an.
/delegate [PROMPT]Delegieren Sie Änderungen an einem Remote-Repository mit einer KI-generierten Pullanforderung. Siehe Delegieren von Aufgaben an GitHub Copilot-CLI.
/diffÜberprüfen Sie die im aktuellen Verzeichnis vorgenommenen Änderungen.
/downgrade <VERSION>Laden Sie eine bestimmte CLI-Version herunter, und starten Sie sie neu. Verfügbar für Teamkonten.
/envZeigen Sie geladene Umgebungsdetails an (Anweisungen, MCP-Server, Fähigkeiten, Agents, Plug-Ins, LSPs, Erweiterungen).
/exit, /quitBeenden Sie die CLI.
/experimental [on|off|show]Aktivieren, Festlegen oder Anzeigen experimenteller Features
/feedback, /bugGeben Sie Feedback zur CLI.
/fleet [PROMPT]Aktivieren Sie die parallele Subagentausführung von Teilen eines Vorgangs. Siehe Paralleles Ausführen von Aufgaben mit dem /fleet Befehl.
/helpZeigen Sie die Hilfe für interaktive Befehle an.
/ideStellen Sie eine Verbindung mit einem IDE-Arbeitsbereich her. Siehe Verbinden von GitHub Copilot-CLI mit VS Code.
/initInitialisieren Sie Copilot benutzerdefinierte Anweisungen und agentenbasierte Funktionen für dieses Repository. Siehe Projektinitialisierung für Copilot.
/instructionsAnzeigen und Umschalten von benutzerdefinierten Anweisungsdateien.
/keep-alive [on|busy|NUMBERm|NUMBERh]Verhindern Sie, dass der Computer in den Ruhezustand wechselt: Während eine CLI-Sitzung aktiv ist, während der Agent ausgelastet ist oder für eine definierte Zeitdauer. Nur im experimentellen Modus verfügbar.
/list-dirsZeigen Sie alle Verzeichnisse an, für die der Dateizugriff zulässig ist.
/loginMelden Sie sich auf Copilot an.
/logoutMelden Sie sich von Copilot ab.
/lsp [show|test|reload|help] [SERVER-NAME]Verwalten Sie die Sprachserverkonfiguration.
/mcp [show|add|edit|delete|disable|enable|auth|reload] [SERVER-NAME]Verwalten Sie die MCP-Serverkonfiguration. Siehe Hinzufügen von MCP-Servern für GitHub Copilot-CLI.
/model, /models [MODEL]Wählen Sie das KI-Modell aus, das Sie verwenden möchten.
/plan [PROMPT]Erstellen Sie vor dem Codieren einen Implementierungsplan.
/plugin [marketplace|install|uninstall|update|list] [ARGS...]Verwalten Sie Plugins und Plug-In-Marketplaces. Siehe Informationen zu Plug-Ins für GitHub Copilot-CLI.
/pr [view|create|fix|auto]Verwalten von Pull Requests für den aktuellen Branch. Siehe Verwalten von Pullanforderungen mit dem Befehl "/pr".
/remoteAktivieren Sie den Fernzugriff auf diese Sitzung von GitHub.com und GitHub Mobile aus. Siehe Steuern einer GitHub Copilot-CLI Sitzung von einem anderen Gerät.
/rename [NAME]Benennen Sie die aktuelle Sitzung um (generiert automatisch einen Namen, wenn nicht angegeben; Alias für /session rename).
/research TOPICFühren Sie eine umfassende Recherche mithilfe von GitHub Such- und Webquellen durch. Siehe Recherchieren mit GitHub Copilot-CLI.
/reset-allowed-toolsSetzen Sie die Liste der zulässigen Tools zurück.
/restartStarten Sie die CLI neu, wobei die aktuelle Sitzung erhalten bleibt.
/resume [VALUE], /continueWechseln Sie zu einer anderen Sitzung, indem Sie eine Liste auswählen. Geben Sie optional eine Sitzungs-ID, ein ID-Präfix oder einen Sitzungsnamen an, um eine bestimmte Sitzung fortzusetzen.
/review [PROMPT]Führen Sie den Codeüberprüfungs-Agent aus, um Änderungen zu analysieren. Siehe Anfordern einer Codeüberprüfung mit GitHub Copilot-CLI.
/session [info|checkpoints [n]|files|plan|rename [NAME]|cleanup|prune|delete [ID]|delete-all], /sessions [info|checkpoints [n]|files|plan|rename [NAME]|cleanup|prune|delete [ID]|delete-all]Anzeigen von Sitzungsinformationen und Verwalten von Sitzungen Unterbefehle: info, , checkpoints, files, plan``rename, cleanup, prune, . delete``delete-all
/share [file|html|gist] [session|research] [PATH], /export [file|html|gist] [session|research] [PATH]Teilen Sie die Sitzung mit einer Markdown-Datei, einer interaktiven HTML-Datei oder einem Gist.
/skills [list|info|add|remove|reload] [ARGS...]Verwalten Sie Fähigkeiten für erweiterte Funktionen. Siehe Hinzufügen von Agent-Fähigkeiten für GitHub Copilot-CLI.
/statusline, /footerKonfigurieren Sie, welche Elemente in der Statuszeile angezeigt werden.
/tasksAnzeigen und Verwalten von Hintergrundaufgaben (Subagenten und Shellsitzungen).
/terminal-setupKonfigurieren Sie das Terminal für die Unterstützung von Mehrzeileneingaben (Umschalt+Eingabe und Strg+Eingabe).
/theme [default|dim|high-contrast|colorblind]Anzeigen oder Festlegen des Farbmodus.
/undo, /rewindGehen Sie einen Schritt zurück und machen Sie die Dateiänderungen rückgängig.
/update, /upgradeAktualisieren Sie die CLI auf die neueste Version.
/usageAnzeigen von Sitzungsnutzungsmetriken und Statistiken.
/user [show|list|switch]Verwalten sie den aktuellen GitHub Benutzer.
/versionZeigen Sie Versionsinformationen an, und suchen Sie nach Updates.

Eine vollständige Liste der verfügbaren Slash-Befehle erhalten Sie durch Eingeben von /help auf der interaktiven Benutzeroberfläche der CLI.

Befehlszeilenoptionen

AuswahlPurpose
--add-dir=PATHFügen Sie der Liste für den Dateizugriff ein Verzeichnis hinzu (kann mehrmals verwendet werden).
--add-github-mcp-tool=TOOLFügen Sie ein Tool hinzu, um den GitHub MCP-Server anstelle der standardmäßigen CLI-Teilmenge zu aktivieren (kann mehrmals verwendet werden). Verwenden Sie * für alle Tools.
--add-github-mcp-toolset=TOOLSETFügen Sie ein Toolset hinzu, um den GitHub MCP-Server anstelle der standardmäßigen CLI-Teilmenge zu aktivieren (kann mehrmals verwendet werden). Verwenden Sie all für alle Toolsets.
--additional-mcp-config=JSONFügen Sie nur einen MCP-Server für diese Sitzung hinzu. Die Serverkonfiguration kann als JSON-Zeichenfolge oder als Dateipfad (Präfix mit @) bereitgestellt werden. Erweitert die Konfiguration von ~/.copilot/mcp-config.json. Überschreibt jede installierte MCP-Serverkonfiguration mit demselben Namen. Siehe Hinzufügen von MCP-Servern für GitHub Copilot-CLI.
--agent=AGENTGeben Sie eine Benutzerdefinierter Agent an, die verwendet werden soll. Siehe Informationen zu benutzerdefinierten Agents.
--allow-allAlle Berechtigungen aktivieren (entspricht --allow-all-tools --allow-all-paths --allow-all-urls).
--allow-all-pathsDeaktivieren Sie die Überprüfung des Dateipfads, und erlauben Sie den Zugriff auf einen beliebigen Pfad.
--allow-all-toolsZulassen, dass alle Tools automatisch ohne Bestätigung ausgeführt werden. Erforderlich bei programmgesteuerter Verwendung der CLI (env: COPILOT_ALLOW_ALL).
--allow-all-urlsZugriff auf alle URLs ohne Bestätigung zulassen.
--allow-tool=TOOL ...Tools, die von der CLI verwendet werden dürfen. Fordert keine Erlaubnis an. Verwenden Sie für mehrere Tools eine in Anführungszeichen gesetzte, durch Kommas getrennte Liste. Siehe Zulassen und Verweigern der Verwendung von Tools.
--allow-url=URL ...Zugriff auf bestimmte URLs oder Domänen zulassen. Verwenden Sie für mehrere URLs eine in Anführungszeichen gesetzte, durch Kommas getrennte Liste.
--autopilotAktivieren Sie die fortlaufende Autopilot-Ausführung im Prompt-Modus. Siehe Zulassen, dass GitHub Copilot CLI autonom arbeiten kann.
--available-tools=TOOL ...Nur diese Tools sind für das Modell verfügbar. Verwenden Sie für mehrere Tools eine in Anführungszeichen gesetzte, durch Kommas getrennte Liste. Siehe Zulassen und Verweigern der Verwendung von Tools.
--banner, --no-bannerEin- oder Ausblenden des Startbanners.
--bash-envAktiviert BASH_ENV- Unterstützung für Bash-Shells.
--config-dir=PATHLegen Sie das Konfigurationsverzeichnis fest (Standard: ~/.copilot).
--connect[=SESSION-ID]Stellen Sie eine direkte Verbindung mit einer Remotesitzung her (optional geben Sie eine Sitzungs-ID oder Aufgaben-ID an). Konflikte mit --resume und --continue.
--continueSetzen Sie die letzte Sitzung im aktuellen Arbeitsverzeichnis fort oder nutzen Sie gegebenenfalls die global zuletzt verwendete Sitzung.
--deny-tool=TOOL ...Tools, die von der CLI nicht verwendet werden dürfen. Fordert keine Erlaubnis an. Verwenden Sie für mehrere Tools eine in Anführungszeichen gesetzte, durch Kommas getrennte Liste.
--deny-url=URL ...Der Zugriff auf bestimmte URLs oder Domänen wird verweigert; hat Vorrang vor --allow-url. Verwenden Sie für mehrere URLs eine in Anführungszeichen gesetzte, durch Kommas getrennte Liste.
--disable-builtin-mcpsDeaktivieren Sie alle integrierten MCP-Server (derzeit: github-mcp-server).
--disable-mcp-server=SERVER-NAMEDeaktivieren Sie einen bestimmten MCP-Server (kann mehrmals verwendet werden).
--disallow-temp-dirVerhindern des automatischen Zugriffs auf das temporäre Systemverzeichnis.
--effort=LEVEL, --reasoning-effort=LEVELLegen Sie die Aufwandsstufe für die Begründung (low, medium, high) fest.
--enable-all-github-mcp-toolsAktivieren Sie alle GitHub MCP-Server-Tools anstelle der standardmäßigen CLI-Teilmenge. Überschreibt die Optionen --add-github-mcp-toolset und --add-github-mcp-tool.
--enable-reasoning-summariesFordern Sie Begründungszusammenfassungen für OpenAI-Modelle an, die sie unterstützen.
--excluded-tools=TOOL ...Diese Tools sind für das Modell nicht verfügbar. Verwenden Sie für mehrere Tools eine in Anführungszeichen gesetzte, durch Kommas getrennte Liste.
--experimentalAktivieren Sie experimentelle Features (verwenden Sie --no-experimental, um zu deaktivieren).
-h, --helpHilfe anzeigen.
-i PROMPT, --interactive=PROMPTStarten Sie eine interaktive Sitzung, und führen Sie diese Eingabeaufforderung automatisch aus.
--log-dir=DIRECTORYLegen Sie das Protokolldateiverzeichnis fest (Standard: ~/.copilot/logs/).
--log-level=LEVELLegen Sie die Protokollebene fest (Auswahlmöglichkeiten: none, error, warning, , info, debug, , all). default
--max-autopilot-continues=COUNTMaximale Anzahl von Fortsetzungsmeldungen im Autopilot-Modus (Standard: unbegrenzt). Siehe Zulassen, dass GitHub Copilot CLI autonom arbeiten kann.
--mode=MODELegen Sie den anfänglichen Agentmodus fest (Auswahlmöglichkeiten: interactive, plan, autopilot). Kann nicht mit --autopilot oder --plan kombiniert werden.
--model=MODELLegen Sie das KI-Modell fest, das Sie verwenden möchten. Übergeben Sie auto an Copilot, um das beste verfügbare Modell automatisch auszuwählen.
--mouse[=VALUE]Aktivieren Sie die Mausunterstützung im alternativen Bildschirmmodus. WERT kann on (Standard) oder off. Wenn diese Option aktiviert ist, erfasst die CLI Mausereignisse im Alternativbildschirmmodus, wie Scrollrad, Klicks usw. Wenn sie deaktiviert ist, wird das systemeigene Mausverhalten des Terminals beibehalten. Nachdem sie festgelegt wurde, wird die Einstellung beibehalten, indem sie in Die Konfigurationsdatei geschrieben wird.
-n NAME, --name=NAMELegen Sie einen Namen für die neue Sitzung fest. Wird von --resume und /resume verwendet, um Sitzungen anhand des Namens zu finden.
--no-ask-userDeaktivieren Sie das ask_user Tool (der Agent funktioniert autonom, ohne Fragen zu stellen).
--no-auto-updateAutomatisches Herunterladen von CLI-Updates deaktivieren.
--no-bash-envDeaktivieren Sie BASH_ENV die Unterstützung für Bash-Shells.
--no-colorAlle Farbausgabe deaktivieren.
--no-custom-instructionsDeaktivieren Sie das Laden von benutzerdefinierten Anweisungen aus AGENTS.md sowie verwandten Dateien.
--no-experimentalDeaktivieren Sie experimentelle Features.
--no-mouseDeaktivieren Sie die Mausunterstützung.
--no-remoteRemotezugriff für diese Sitzung deaktivieren.
--output-format=FORMATFORMAT kann text (Standard) oder json (Ausgabe JSONL: ein JSON-Objekt pro Zeile) sein.
-p PROMPT, --prompt=PROMPTFühren Sie ein Prompt programmgesteuert aus (endet nach Abschluss). Siehe Programmatisches Ausführen GitHub Copilot-CLI.
--planStarten Sie im Planmodus. Kurzform für --mode plan. Kann nicht mit --mode oder --autopilot kombiniert werden.
--plain-diffDeaktivieren Sie das erweiterte Diff-Rendering (Syntaxhervorhebung über das in Ihrer Git-Konfiguration angegebene Diff-Tool).
--plugin-dir=DIRECTORYLaden Sie ein Plug-In aus einem lokalen Verzeichnis (kann mehrmals verwendet werden).
--remoteAktivieren Sie den Fernzugriff auf diese Sitzung von GitHub.com und GitHub Mobile aus. Siehe Steuern einer GitHub Copilot-CLI Sitzung von einem anderen Gerät.
--resume[=VALUE]Setzen Sie eine vorherige interaktive Sitzung fort, indem Sie eine Liste auswählen. Geben Sie optional eine Sitzungs-ID, ein ID-Präfix oder einen Sitzungsnamen an. Der Namensabgleich ist exakt und unabhängig von Groß- und Kleinschreibung; es wird auf die automatisch generierte Zusammenfassung zurückgegriffen, wenn keine expliziten Namensübereinstimmungen vorliegen.
-s, --silentGibt nur die Agent-Antwort aus (ohne Nutzungsstatistiken). Dies ist nützlich für die Skripterstellung mit -p.
--screen-readerAktivieren Sie Bildschirmleser-Optimierungen.
--secret-env-vars=VAR ...Entfernen Sie eine Umgebungsvariable aus der Shell- und MCP-Server-Umgebung (kann mehrfach verwendet werden). Verwenden Sie für mehrere Variablen eine angeführte, kommagetrennte Liste. Die Werte in den GITHUB_TOKEN- und COPILOT_GITHUB_TOKEN-Umgebungsvariablen werden standardmäßig aus der Ausgabe entfernt.
--share=PATHTeilen einer Sitzung als Markdown-Datei nach Abschluss einer programmgesteuerten Sitzung (Standardpfad: ./copilot-session-<ID>.md).
--share-gistTeilen Sie eine Sitzung nach Abschluss einer programmatischen Sitzung mit einem geheimen GitHub Gist.
--stream=MODEAktivieren oder Deaktivieren des Streamingmodus (Modusoptionen: on oder off).
-v, --versionVersionsinformationen anzeigen.
--yoloAlle Berechtigungen aktivieren (entspricht --allow-all).

Um eine vollständige Liste der Befehle und Optionen zu erhalten, führen Sie copilot help aus.

Hinweis

Die Optionen --remote, --no-remote und --connect erfordern, dass die Remotesitzungsfunktion auf Ihrem Konto verfügbar ist.

Verfügbarkeitswerte für Tools

Die Optionen --available-tools und --excluded-tools unterstützen diese Werte:

Shell-Tools

Name des ToolsBeschreibung
bash / powershellBefehle ausführen
list_bash / list_powershellAuflisten aktiver Shellsitzungen
read_bash / read_powershellAusgabe aus einer Shellsitzung lesen
stop_bash / stop_powershellBeenden einer Shellsitzung
write_bash / write_powershellSenden von Eingaben an eine Shellsitzung

Dateivorgangstools

Name des ToolsBeschreibung
apply_patchAnwenden von Patches (verwendet von einigen Modellen anstelle von edit/create)
createErstellen neuer Dateien
editBearbeiten von Dateien über Zeichenfolgenersetzung
viewLesen von Dateien oder Verzeichnissen

Agenten- und Aufgaben-Delegierungstools

Name des ToolsBeschreibung
list_agentsAuflisten der verfügbaren Agents
read_agentÜberprüfen des Status des Hintergrund-Agents
taskAusführen von Subagenten

Weitere Tools

Name des ToolsBeschreibung
ask_userStellen Sie dem Benutzer eine Frage
globSuchen nach Übereinstimmenden Mustern für Dateien
grep (oder rg)Suchen nach Text in Dateien
show_filePräsentieren Sie Codeausschnitte inline in der Zeitachse. Nur im experimentellen Modus verfügbar.
skillAufrufen von benutzerdefinierten Fähigkeiten
web_fetchAbrufen und Analysieren von Webinhalten

Toolberechtigungsmuster

Die --allow-tool Und --deny-tool Optionen akzeptieren Berechtigungsmuster im Format Kind(argument). Das Argument ist optional. Wenn es ausgelassen wird, werden alle Tools dieser Art erfasst.

KindBeschreibungBeispielmuster
memorySpeichern von Fakten im Agentspeichermemory
readDatei- oder Verzeichnislesevorgänge
          `read`, `read(.env)` |

| shell | Shellbefehlsausführung | shell(git push), shell(git:*)``shell | | url | URL-Zugriff über Web-Fetch oder Shell | url(github.com), url(https://*.api.com) | | write | Dateierstellung oder -änderung | write, write(src/*.ts) | | SERVER-NAME | MCP-Server-Toolaufruf | MyMCP(create_issue), MyMCP |

Bei shell Regeln entspricht das :* Suffix dem Befehlsstamm gefolgt von einem Leerzeichen und verhindert partielle Übereinstimmungen. Zum Beispiel shell(git:*) entspricht git push und git pull, entspricht aber nicht gitea.

Ablehnungsregeln haben immer Vorrang vor Erlaubnisregeln, auch wenn --allow-all festgelegt ist.

# Allow all git commands except git push
copilot --allow-tool='shell(git:*)' --deny-tool='shell(git push)'

# Allow a specific MCP server tool
copilot --allow-tool='MyMCP(create_issue)'

# Allow all tools from a server
copilot --allow-tool='MyMCP'

Umgebungsvariablen

VariableBeschreibung
COLORFGBGFallback zur Erkennung von dunklen/hellen Terminal-Hintergründen.
COPILOT_ALLOW_ALLFestlegen auf true, um alle Berechtigungen automatisch zu erlauben (entspricht --allow-all).
COPILOT_AUTO_UPDATEStellen Sie false ein, um automatische Updates zu deaktivieren.
COPILOT_CACHE_HOMEÜberschreiben Sie das Cacheverzeichnis (verwendet für Marketplace-Caches, Automatischaktualisierungspakete und andere kurzlebige Daten). Siehe GitHub Copilot CLI-Konfigurationsverzeichnis für Plattformstandardwerte.
COPILOT_CUSTOM_INSTRUCTIONS_DIRSDurch Trennzeichen getrennte Liste zusätzlicher Verzeichnisse für benutzerdefinierte Anweisungen.
COPILOT_EDITOREditor-Befehl für die interaktive Bearbeitung (nach $VISUAL und $EDITOR überprüft). Wenn keine festgelegt sind, wird vi standardmäßig verwendet.
COPILOT_GH_HOST
          GitHub Hostname nur für Copilot CLI, wobei `GH_HOST` überschrieben wird. Verwenden Sie diese Option, wenn `GH_HOST` auf GitHub Enterprise Server zielt, aber Copilot sich gegen GitHub.com oder einem GitHub Enterprise Cloud Hostnamen authentifizieren muss. |

| COPILOT_GITHUB_TOKEN | Authentifizierungs-Token. Hat Vorrang vor GH_TOKEN und GITHUB_TOKEN. | | COPILOT_HOME | Überschreiben Sie das Konfigurations- und Statusverzeichnis. Standardwert: $HOME/.copilot. | | COPILOT_MODEL | Legen Sie das KI-Modell fest. | | COPILOT_PROMPT_FRAME | Stellen Sie auf 1, um den dekorativen UI-Rahmen um die Eingabeaufforderung einzuschalten, oder auf 0, um ihn auszuschalten. Überschreibt das experimentelle Funktionskennzeichen PROMPT_FRAME für die aktuelle Sitzung. | | COPILOT_SKILLS_DIRS | Durch Trennzeichen getrennte Liste zusätzlicher Verzeichnisse für Fähigkeiten. | | COPILOT_SUBAGENT_MAX_CONCURRENT | Maximale Anzahl gleichzeitiger Subagenten im gesamten Sitzungsbaum. Standardwert: 32. Bereich: 1256. | | COPILOT_SUBAGENT_MAX_DEPTH | Maximale Schachtelungstiefe für Subagenten. Standardwert: 6. Bereich: 1256. | | GH_HOST | GitHub Hostname für beide GitHub CLI und Copilot CLI (Standard: github.com). Legen Sie Ihren GitHub Enterprise Cloud Hostnamen für Datenresidenz fest. Überschreiben nur für COPILOT_GH_HOSTCopilot CLI. | | GH_TOKEN | Authentifizierungs-Token. Hat Vorrang vor GITHUB_TOKEN. | | GITHUB_TOKEN | Authentifizierungs-Token. | | PLAIN_DIFF | Legt dies auf true fest, um Rich-Diff-Rendern zu deaktivieren. | | USE_BUILTIN_RIPGREP | Legt dies auf false fest, um den System-ripgrep anstelle der gebündelten Version zu verwenden. |

Konfigurationsdateieinstellungen

Ausführliche Informationen zu Konfigurationsdateieinstellungen , einschließlich der vollständigen Liste der Benutzereinstellungen, Repositoryeinstellungen, lokalen Einstellungen und ihrer Weitergabe, finden Sie unter GitHub Copilot CLI-Konfigurationsverzeichnis.

Hinweis

Benutzereinstellungen wurden zuvor in ~/.copilot/config.json gespeichert. Vorhandene Einstellungen an diesem Speicherort werden automatisch beim Start von ~/.copilot/settings.json migriert.

Projektinitialisierung für Copilot

Wenn Sie den Befehl copilot init oder den Schrägstrichbefehl /init in einer interaktiven Sitzung verwenden, analysiert Copilot Ihre Codebasis und schreibt oder aktualisiert eine .github/copilot-instructions.md Datei im Repository. Diese datei mit benutzerdefinierten Anweisungen enthält projektspezifische Anleitungen, die zukünftige CLI-Sitzungen verbessern.

In der Regel verwenden copilot initSie beim Starten eines neuen Projekts oder /initwenn Sie mit der Verwendung Copilot CLI in einem vorhandenen Repository beginnen.

Die copilot-instructions.md Datei, die erstellt oder aktualisiert wird, dokumentiert normalerweise:

  • Erstellungs-, Test- und Lintenbefehle.
  • Architektur auf hoher Ebene
  • Codebasisspezifische Konventionen.

Wenn die Datei bereits vorhanden ist, werden Verbesserungen vorgeschlagen, Copilot die Sie auswählen können, um sie anzuwenden oder abzulehnen.

Die CLI sucht beim Start nach der copilot-instructions.md Datei, und wenn sie fehlt, wird die Meldung angezeigt:

          💡 Es wurden keine Copilot-Anweisungen gefunden. Führen Sie "/init" aus, um eine copilot-instructions.md Datei für dieses Projekt zu generieren.

Wenn Sie diese Datei nicht erstellen möchten, können Sie diese Startmeldung für das aktuelle Repository dauerhaft ausblenden, indem Sie den /init suppress Schrägstrichbefehl verwenden.

Weitere Informationen findest du unter Hinzufügen von benutzerdefinierten Repositoryanweisungen für GitHub Copilot.

Hooks-Referenz

Hooks sind externe Befehle, HTTP-Webhooks oder (nur auf sessionStart ) Eingabeaufforderungszeichenfolgen, die während einer Sitzung an bestimmten Lebenszykluspunkten ausgeführt werden, wodurch benutzerdefinierte Automatisierung, Sicherheitssteuerelemente und Integrationen aktiviert werden. Hook-Konfigurationsdateien werden automatisch von .github/hooks/*.json in Ihrem Repository geladen.

Hook-Konfigurationsformat

Hook-Konfigurationsdateien verwenden JSON-Format mit Version 1. Jeder Hook-Eintrag ist ein Befehlshaken, ein HTTP-Hook oder (nur auf sessionStart ) ein Eingabeaufforderungs-Hook.

Befehlshaken

Befehlshaken führen Shellskripts aus und werden für alle Hooktypen unterstützt.

{
  "version": 1,
  "hooks": {
    "preToolUse": [
      {
        "type": "command",
        "bash": "your-bash-command",
        "powershell": "your-powershell-command",
        "cwd": "optional/working/directory",
        "env": { "VAR": "value" },
        "timeoutSec": 30
      }
    ]
  }
}
FeldTypErforderlichBeschreibung
bashSchnurEiner von bash/powershellShell-Befehl für Unix.
cwdSchnurNoArbeitsverzeichnis für den Befehl (relativ zum Repositorystamm oder absolut).
envObjektNoFestzulegende Umgebungsvariablen (unterstützt variable Erweiterung).
powershellSchnurEiner von bash/powershellShellbefehl für Windows.
timeoutSecnumberNoTimeout in Sekunden. Standardwert: 30.
type"command"JaMuss "command"lauten.

Eingabeaufforderungshaken

Prompt-Hooks senden automatisch Text, als hätte der Benutzer ihn selbst eingegeben. Sie werden nur auf sessionStart unterstützt und laufen, bevor ein anfänglicher Befehl über --prompt übergeben wird. Der Text kann eine Aufforderung in natürlicher Sprache oder ein Slash-Befehl sein.

{
  "version": 1,
  "hooks": {
    "sessionStart": [
      {
        "type": "prompt",
        "prompt": "Your prompt text or /slash-command"
      }
    ]
  }
}
FeldTypErforderlichBeschreibung
promptSchnurJaText zum Einreichen – kann eine Nachricht in natürlicher Sprache oder ein Slash-Befehl sein.
type"prompt"JaMuss "prompt"lauten.

HTTP-Hooks

HTTP-Hooks senden das Ereignis-Payload als JSON an eine konfigurierte URL und analysieren den JSON-Antworttext. Sie werden für alle Hook-Ereignistypen unterstützt und eignen sich für Webhook-Stilintegrationen – Remoterichtliniendienste, Überwachungsendpunkte und Genehmigungsworkflows – ohne dass eine lokale ausführbare Datei erforderlich ist.

{
  "version": 1,
  "hooks": {
    "preToolUse": [
      {
        "type": "http",
        "url": "https://policy.example.com/preToolUse"
      }
    ]
  }
}
FeldTypErforderlichBeschreibung
type"http"JaMuss "http"lauten.
urlSchnurJaEndpunkt-URL. Es muss http: oder https: verwendet werden. Keine env var-Ersetzung in der URL selbst.
headersObjektNoAnforderungsheader. Werte unterstützen die $VAR / ${VAR} Ersetzung, die auf Namen beschränkt ist, die in allowedEnvVars aufgeführt sind.
allowedEnvVarsstring[]NoAllowlist für Kopfzeilenwert-Vorlagen. Das Festlegen auf ein nicht leeres Array erfordert HTTPS.
timeoutSecnumberNoTimeout pro Anforderung in Sekunden. Standardwert: 30.
          `timeout` wird als Alias akzeptiert; `timeoutSec` hat Vorrang. |

| matcher | Schnur | No | Regex-Filter. Wird nur für preCompact, subagentStart, permissionRequest und notification unterstützt. Verankert als ^(?:pattern)$. |

Der Antworttext verwendet dasselbe JSON-Schema wie Befehlshaken-Stdout für jedes Ereignis. Antworten Sie mit 204 No Content oder einem 2xx mit leerem Körper, wenn keine Aktion erforderlich ist.

Warnung

HTTP-Hooks haben keine Exit-Code-Semantik. Eine Nicht-2xx-Antwort ist eine Hook-Fehlfunktion, nicht eine Ablehnungsentscheidung. Wenn Sie einen Toolaufruf von einem HTTP-Hook preToolUse verweigern möchten, geben Sie 200 OK mit {"permissionDecision":"deny","permissionDecisionReason":"..."} zurück. Wenn Sie einen HTTP-Hook permissionRequest verweigern möchten, geben Sie 200 OK mit {"behavior":"deny","message":"..."} zurück.

Ein Hook-Eintrag mit beiden bash und url Feldern wird danach analysiert, welche Variante zuerst übereinstimmt; das nicht verwendete Feld wird stillschweigend gelöscht. Setzen Sie type bei der Verwendung von HTTP-Hooks stets explizit und entfernen Sie die Felder für Befehls-Hooks.

HTTP-Hook-Sicherheit

HTTPS ist in den folgenden Fällen erforderlich:

  • Wenn allowedEnvVars ein nicht leeres Array ist, um zu verhindern, dass Anmeldeinformationen im Klartext gesendet werden.
  • Standardmäßig für die preToolUse- und permissionRequest-Hooks, um den Kanal für Berechtigungsentscheidungen zu schützen.

Die CLI erzwingt eine SSRF-Standardrichtlinie: Jede URL, deren Hostname in eine Loopback-, private, link-lokale oder Cloudmetadatenadresse aufgelöst wird, wird vor der Verbindung abgelehnt. DNS wird im Vorfeld aufgelöst, und alle zurückgegebenen Adressen werden überprüft (DNS Rebinding Defense).

Die folgenden Umgebungsvariablen lockern diese Standardwerte nur für Entwicklungs- und Testzwecke.

VariableAuswirkungVerwendungszweck
COPILOT_HOOK_ALLOW_LOCALHOST=1Erlaubt http:// sowie literale localhost, 127.* oder [::1] (HTTPS-Regeln) und alle Hostnamen, die vollständig in Loopback aufgelöst werden (SSRF-Regel).Nur lokale Entwicklung
COPILOT_HOOK_ALLOW_HTTP_AUTH_HOOKS=1Erlaubt http:// für preToolUse- und permissionRequest-Hooks überall.Nur testen

Beide der Variablen müssen vor dem Start von copilot festgesetzt werden. Legen Sie sie nicht global, in CI oder in freigegebenen Umgebungen fest.

HTTP-Hook-Fehlersemantik
ZustandBehavior
2xx + gültiger JSON-TextkörperTextkörper, der gemäß dem Ereignisausgabeschema geparst wird.
2xx + leerer oder nicht JSON-TextkörperKeine Aktion.
Nicht-2xx-AntwortHook schlägt fehl. Fehler protokolliert. Der Agent läuft weiter.
3xx-WeiterleitungHook schlägt fehl ("Zurückgegebene Umleitung"). Agent läuft weiter.
TimeoutHook schlägt fehl. Fehler protokolliert. Agent fährt fort.
Netzwerk-, DNS- oder TLS-FehlerHook schlägt fehl. Fehler protokolliert. Der Agent läuft weiter.
Fehler bei der Konfigurationsüberprüfung beim LadenGesamte Konfigurationsdatei abgelehnt; keine Hooks aus dieser Datei werden registriert.

Für preToolUse und permissionRequest ist bei einem HTTP-Hook-Fehler das Verhalten "fail-open", was bedeutet, dass der Agent auf den Standardberechtigungsfluss zurückgreift.

Hook-Ereignisse

EreignisWird ausgelöst, wennVerarbeitete Ausgabe
sessionStartEine neue oder fortgesetzte Sitzung beginnt.Optional – kann additionalContext zurückgeben, um Kontexte auf Sitzungsebene vor jede Eingabe einzufügen.
sessionEndDie Sitzung wird beendet.No
userPromptSubmittedDer Benutzer sendet eine Eingabeaufforderung.No
preToolUseBevor jedes Tool ausgeführt wird.Ja – kann zulassen, ablehnen oder ändern.
postToolUseNachdem jedes Tool erfolgreich abgeschlossen hat.Ja - kann das erfolgreiche Ergebnis ersetzen (nur programmgesteuerte SDK-Hooks).
postToolUseFailureNachdem ein Werkzeug mit einem Fehler abgeschlossen wurde.Ja – kann Anleitungen zur Wiederherstellung über additionalContext (Exit-Code 2 für Befehlshaken) bereitstellen.
agentStopDer Hauptagent beendet eine Runde.Ja – kann die Fortsetzung blockieren und erzwingen.
subagentStopEin Subagent schließt ab.Ja – kann die Fortsetzung blockieren und erzwingen.
subagentStartEin Unteragent wird erzeugt (bevor er ausgeführt wird). Gibt additionalContext zurück, das der Eingabeaufforderung des Unteragenten vorangestellt wird. Unterstützt matcher zum Filtern nach Agentennamen.Nein – die Erstellung kann nicht blockiert werden.
preCompactDie Kontextkomprimierung beginnt (manuell oder automatisch). Unterstützt matcher das Filtern nach Trigger ("manual" oder "auto").Nein – nur Benachrichtigung.
permissionRequestBevor dem Benutzer ein Berechtigungsdialog angezeigt wird, wird anhand der regelbasierten Prüfungen keine übereinstimmende Zulassungs- oder Ablehnungsregel gefunden. Unterstützt matcher RegEx auf toolName.Ja – kann programmgesteuert zulassen oder verweigern.
errorOccurredWährend der Ausführung tritt ein Fehler auf.No
notificationWird asynchron ausgelöst, wenn die CLI eine Systembenachrichtigung sendet (Shell-Abschluss, Agentenabschluss oder Leerlauf, Berechtigungsaufforderungen, Abfragedialoge). Fire-and-forget: blockiert niemals die Sitzung. Unterstützt matcher RegEx auf notification_type.Optional — kann additionalContext in die Sitzung einfügen.

Hook-Ereignis-Eingabe-Nutzdaten

Jedes Hook-Event liefert eine JSON-Nutzlast an den Hook-Handler. Zwei Nutzlastformate werden unterstützt, ausgewählt durch den Ereignisnamen, der in der Hook-Konfiguration verwendet wird:

  • camelCase-Format – Konfigurieren Sie den Ereignisnamen in camelCase (z. B sessionStart. ). Felder verwenden camelCase.

          VS Code kompatibles Format** – Konfigurieren Sie den Ereignisnamen in PascalCase (z. B `SessionStart`. ). Felder verwenden snake_case, um dem Erweiterungsformat VS CodeCopilot zu entsprechen.

sessionStart / SessionStart

          **camelCase-Eingabe:**
{
    sessionId: string;
    timestamp: number;      // Unix timestamp in milliseconds
    cwd: string;
    source: "startup" | "resume" | "new";
    initialPrompt?: string;
}
          **
          VS Code kompatible Eingabe:**
{
    hook_event_name: "SessionStart";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    source: "startup" | "resume" | "new";
    initial_prompt?: string;
}

sessionEnd / SessionEnd

          **camelCase-Eingabe:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    reason: "complete" | "error" | "abort" | "timeout" | "user_exit";
}
          **
          VS Code kompatible Eingabe:**
{
    hook_event_name: "SessionEnd";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    reason: "complete" | "error" | "abort" | "timeout" | "user_exit";
}

userPromptSubmitted / UserPromptSubmit

          **camelCase-Eingabe:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    prompt: string;
}
          **
          VS Code kompatible Eingabe:**
{
    hook_event_name: "UserPromptSubmit";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    prompt: string;
}

preToolUse / PreToolUse

          **camelCase-Eingabe:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    toolName: string;
    toolArgs: unknown;
}
          **
          VS Code kompatible Eingabe:**

Bei der Konfiguration mit dem Namen des PascalCase-Ereignisses PreToolUseverwendet die Nutzlast snake_case Feldnamen, um dem Erweiterungsformat VS CodeCopilot zu entsprechen:

{
    hook_event_name: "PreToolUse";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    tool_name: string;
    tool_input: unknown;    // Tool arguments (parsed from JSON string when possible)
}

postToolUse / PostToolUse

          **camelCase-Eingabe:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    toolName: string;
    toolArgs: unknown;
    toolResult: {
        resultType: "success";
        textResultForLlm: string;
    }
}
          **
          VS Code kompatible Eingabe:**
{
    hook_event_name: "PostToolUse";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    tool_name: string;
    tool_input: unknown;
    tool_result: {
        result_type: "success" | "failure" | "denied" | "error";
        text_result_for_llm: string;
    }
}

postToolUseFailure / PostToolUseFailure

          **camelCase-Eingabe:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    toolName: string;
    toolArgs: unknown;
    error: string;
}
          **
          VS Code kompatible Eingabe:**
{
    hook_event_name: "PostToolUseFailure";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    tool_name: string;
    tool_input: unknown;
    error: string;
}

agentStop / Stop

          **camelCase-Eingabe:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    stopReason: "end_turn";
}
          **
          VS Code kompatible Eingabe:**
{
    hook_event_name: "Stop";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    transcript_path: string;
    stop_reason: "end_turn";
}

subagentStart

          **Eingabe**:
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    agentName: string;
    agentDisplayName?: string;
    agentDescription?: string;
}

subagentStop / SubagentStop

          **camelCase-Eingabe:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    agentName: string;
    agentDisplayName?: string;
    stopReason: "end_turn";
}
          **
          VS Code kompatible Eingabe:**
{
    hook_event_name: "SubagentStop";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    transcript_path: string;
    agent_name: string;
    agent_display_name?: string;
    stop_reason: "end_turn";
}

errorOccurred / ErrorOccurred

          **camelCase-Eingabe:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    error: {
        message: string;
        name: string;
        stack?: string;
    };
    errorContext: "model_call" | "tool_execution" | "system" | "user_input";
    recoverable: boolean;
}
          **
          VS Code kompatible Eingabe:**
{
    hook_event_name: "ErrorOccurred";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    error: {
        message: string;
        name: string;
        stack?: string;
    };
    error_context: "model_call" | "tool_execution" | "system" | "user_input";
    recoverable: boolean;
}

preCompact / PreCompact

          **camelCase-Eingabe:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    trigger: "manual" | "auto";
    customInstructions: string;
}
          **
          VS Code kompatible Eingabe:**
{
    hook_event_name: "PreCompact";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    transcript_path: string;
    trigger: "manual" | "auto";
    custom_instructions: string;
}

          `preToolUse` Entscheidungssteuerung

Der preToolUse Hook kann die Toolausführung steuern, indem ein JSON-Objekt in Stdout (Befehlshaken) geschrieben oder im Antworttext (HTTP-Hooks) zurückgegeben wird.

FeldWerteBeschreibung
permissionDecision
          `"allow"`, `"deny"``"ask"` | Gibt an, ob das Tool ausgeführt wird. Leere Ausgabe verwendet Standardverhalten. |

| permissionDecisionReason | Schnur | Grund, der dem Agenten angezeigt wird. Empfohlen, wenn die Entscheidung ist "deny" oder "ask". | | modifiedArgs | Unbekannt | Ersetzt die gesamte Tooleingabe vor der Ausführung. Nur gültig, wenn permissionDecision nicht "deny" oder "ask". | | additionalContext | Schnur | Als Kontext für den nächsten Iterationsschritt des Modells in die Warteschlange eingereiht. Nur gültig, wenn permissionDecision nicht "deny" oder "ask". |

Hinweis

Der VS Code Alias (PreToolUse) akzeptiert auch geschachtelte hookSpecificOutput.{permissionDecision, permissionDecisionReason, updatedInput, additionalContext}. updatedInput ist normalisiert auf modifiedArgs. Felder der obersten Ebene werden als Fallback akzeptiert.

          `agentStop`
           / 
          `subagentStop` Entscheidungssteuerung
FeldWerteBeschreibung
decision
          `"block"`, `"allow"` | 
          `"block"` Setzt einen anderen Agent-Turn mittels `reason` als Prompt durch. |

| reason | Schnur | Aufforderung für den nächsten Schritt, wenn decision``"block" ist. |

          `permissionRequest` Entscheidungssteuerung

Der permissionRequest Hook wird ausgelöst, wenn ein Berechtigungsdialogfeld auf Tool-Ebene angezeigt werden soll. Sie wird ausgelöst, wenn die regelbasierten Berechtigungsprüfungen keine passende Erlaubnis- oder Ablehnungsregel finden. Verwenden Sie sie, um Toolaufrufe programmgesteuert zu genehmigen oder zu verweigern – besonders nützlich im Pipemodus (-p) und CI-Umgebungen, in denen keine interaktive Eingabeaufforderung verfügbar ist.

          **Matcher:** Ein optionaler Regex, getestet gegen `toolName`. Wenn diese Option gesetzt ist, wird der Haken nur bei übereinstimmenden Werkzeugnamen ausgelöst.

Ausgabe von JSON an stdout, um die Berechtigungsentscheidung zu steuern.

FeldWerteBeschreibung
behavior
          `"allow"`, `"deny"` | Gibt an, ob der Toolaufruf genehmigt oder verweigert werden soll. |

| message | Schnur | Die Begründung wird bei der Ablehnung an den LLM zurückgegeben. | | interrupt | boolean | Wenn true mit "deny" kombiniert wird, wird der Agent vollständig gestoppt. |

Geben Sie eine leere Ausgabe oder {} zurück, um auf das Standardverhalten zurückzugreifen (den Benutzerdialog anzeigen oder im Pipe-Modus verweigern). Bei Befehls-Hooks wird der Beendigungscode 2 als Verweigerung behandelt; stdout JSON (falls vorhanden) wird mit {"behavior":"deny"} zusammengeführt, und stderr wird ignoriert.

          `notification` Haken

Der notification Hook wird asynchron ausgelöst, wenn die CLI eine Systembenachrichtigung ausgibt. Diese Hooks funktionieren nach dem Prinzip „Fire-and-Forget“: Sie blockieren niemals die Sitzung, und alle Fehler werden protokolliert und übersprungen.

          **Eingabe**:
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    hook_event_name: "Notification";
    message: string;           // Human-readable notification text
    title?: string;            // Short title (e.g., "Permission needed", "Shell completed")
    notification_type: string; // One of the types listed below
}
          **Benachrichtigungstypen:**
TypBei Aktivierung
shell_completedEin Shell-Befehl im Hintergrund (asynchron) wird beendet
shell_detached_completedEine getrennte Shell-Sitzung ist beendet.
agent_completedEin Unteragent im Hintergrund wird abgeschlossen (abgeschlossen oder fehlgeschlagen)
agent_idleEin Hintergrund-Agent beendet einen Umlauf und wechselt in den Leerlaufmodus (wartend auf write_agent)
permission_promptDer Agent fordert die Berechtigung zum Ausführen eines Tools an.
elicitation_dialogDer Agent fordert zusätzliche Informationen vom Benutzer an.
          **Ausgabe:**
{
    additionalContext?: string; // Injected into the session as a user message
}

Wenn der Text additionalContext zurückgegeben wird, wird er als vorangestellte Benutzernachricht in die Sitzung gespritzt. Dies kann eine weitere Verarbeitung durch den Agenten auslösen, wenn die Sitzung im Leerlauf ist. Geben Sie {} oder eine leere Ausgabe zurück, um keine Aktion auszuführen.

          **Matcher:** Optionales Regex für `notification_type`. Das Muster ist als `^(?:pattern)$`verankert. Um alle Benachrichtigungstypen zu erhalten, lassen Sie `matcher` weg.

Toolnamen für Hookabgleich

Name des ToolsBeschreibung
bashAusführen von Shellbefehlen (Unix).
powershellAusführen von Shellbefehlen (Windows).
viewDateiinhalte lesen.
editDateiinhalte ändern.
createErstellen Sie neue Dateien.
globSuchen Sie Dateien nach Mustern.
grepDateiinhalte durchsuchen.
web_fetchWebseiten abrufen.
taskFühren Sie Subagent-Aufgaben aus.

Wenn mehrere Hooks desselben Typs konfiguriert sind, werden sie in der reihenfolge ausgeführt. Wenn in preToolUse ein Hook "deny" zurückgibt, wird das Tool blockiert. Exitcodes gelten nur für Befehlshaken– für HTTP-Hooks finden Sie informationen zur HTTP-Hook-Fehlersemantik. Bei postToolUseFailure-Befehlshooks führt das Beenden mit dem Code 2 dazu, dass stderr als Wiederherstellungsanleitung für den Assistenten zurückgegeben wird. Bei permissionRequest Befehls-Hooks wird der Beendigungscode 2 als Verweigerung behandelt; stdout JSON (falls vorhanden) wird mit {"behavior":"deny"} zusammengeführt, und stderr wird ignoriert. Hookfehler (Nicht-Null-Beendigungscodes oder -Timeouts) werden protokolliert und übersprungen. Sie blockieren niemals die Agent-Ausführung.

MCP-Serverkonfiguration

MCP-Server stellen zusätzliche Tools für den CLI-Agent bereit. Konfigurieren von beständigen Servern in ~/.copilot/mcp-config.json. Verwenden Sie --additional-mcp-config, um Server für eine einzelne Sitzung hinzuzufügen.

          `copilot mcp` Unterbefehl

Verwenden Sie copilot mcp, um MCP-Serverkonfigurationen über die Befehlszeile zu verwalten, ohne eine interaktive Sitzung zu starten.

SubcommandBeschreibung
list [--json]Alle konfigurierten MCP-Server nach Quelle gruppiert auflisten.
get <name> [--json]Konfiguration und Tools für einen bestimmten Server anzeigen.
add <name>Fügen Sie der Benutzerkonfiguration einen Server hinzu. Schreibt in ~/.copilot/mcp-config.json.
remove <name>Entfernen Sie einen Server auf Benutzerebene. Arbeitsbereich-Server müssen direkt in ihren Konfigurationsdateien bearbeitet werden.
          **
          `copilot mcp add` Optionen:**
AuswahlBeschreibung
-- <command> [args...]Befehle und Argumente für lokale Server (Stdio).
--url <url>URL für Remoteserver.
--type <type>Transporttyp: local, stdio, , httpoder sse.
--env KEY=VALUEUmgebungsvariable (wiederholbar).
--header KEY=VALUEHTTP-Header für Remoteserver (wiederholbar).
--tools <tools>Toolfilter: "*" für alle, eine durch Kommas getrennte Liste oder "" für keine.
--timeout <ms>Der Timeout in Millisekunden.
--jsonFüge die Konfiguration als JSON aus.
--show-secretsVollständige Umgebungsvariablen und Headerwerte anzeigen.
--config-dir <path>Pfad zum Konfigurationsverzeichnis.

Achtung

          `--show-secrets` kann vertrauliche Umgebungsvariablen und Header-Werte an Ihr Terminal oder in Ihre Protokolle ausgeben. Verwenden Sie diese Option nur in vertrauenswürdigen Umgebungen, und vermeiden Sie das Kopieren, Einfügen oder anderweitige Erfassen der Ausgabe in freigegebenen Protokollen oder Verlauf.

Transporttypen

TypBeschreibungPflichtfelder
local / stdioLokaler Prozess kommuniziert über stdin/stdout.
          `command`, `args` |

| http | Remoteserver mit streambarem HTTP-Transport. | url | | sse | Remoteserver mit Server-Sent-Ereignistransport. | url |

Lokale Serverkonfigurationsfelder

FeldErforderlichBeschreibung
commandJaBefehl zum Starten des Servers.
argsJaBefehlsargumente (Array).
toolsJaZu aktivierende Tools: ["*"] für alle oder eine Liste bestimmter Toolnamen.
envNoUmgebungsvariablen. Unterstützt $VAR, ${VAR} und ${VAR:-default} Erweiterungen.
cwdNoArbeitsverzeichnis für den Server.
timeoutNoTimeout beim Aufruf des Tools in Millisekunden.
typeNo
          `"local"` oder `"stdio"`. Standardwert: `"local"`. |

Remote-Server-Konfigurationsfelder

FeldErforderlichBeschreibung
typeJa
          `"http"` oder `"sse"`. |

| url | Ja | Server-Adresse. | | tools | Ja | Tools zur Aktivierung. | | headers | No | HTTP-Header. Unterstützt variable Erweiterung. | | oauthClientId | No | Statische OAuth-Client-ID (überspringt dynamische Registrierung). | | oauthPublicClient | No | Gibt an, ob der OAuth-Client öffentlich ist. Standardwert: true. | | oidc | No | Aktivieren Sie die OIDC-Tokeneinfügung. Wenn true, fügt eine GITHUB_COPILOT_OIDC_MCP_TOKEN Umgebungsvariable (lokale Server) oder einen Bearer``Authorization Header (ferne Server) ein. | | timeout | No | Timeout beim Aufruf des Tools in Millisekunden. |

Erneute Authentifizierung von OAuth

Remote-MCP-Server, die OAuth verwenden, können einen needs-auth Status anzeigen, wenn ein Token abläuft oder ein anderes Konto erforderlich ist. Verwenden Sie /mcp auth <server-name>, um einen neuen OAuth-Fluss auszulösen. Dadurch wird eine Browserauthentifizierungsaufforderung geöffnet, sodass Sie sich anmelden oder Konten wechseln können. Nach Abschluss des Flusses wird die Verbindung automatisch vom Server erneut hergestellt.

Filterzuordnung

Steuern Sie, wie die MCP-Toolausgabe mithilfe des Felds in der filterMapping Konfiguration eines Servers verarbeitet wird.

ModusBeschreibung
noneKeine Filterung.
markdownFormatieren Sie die Ausgabe als Markdown.
hidden_charactersEntfernt verborgene oder Steuerzeichen. Standard.

Integrierte MCP-Server

Die CLI enthält integrierte MCP-Server, die ohne zusätzliche Einrichtung verfügbar sind.

ServerBeschreibung
github-mcp-server
          GitHub API-Integration: Probleme, Pullanforderungen, Commits, Codesuche und GitHub Actions. |

| playwright | Browserautomatisierung: Navigieren, Klicken, Eingeben, Screenshot und Formularverarbeitung. | | fetch | HTTP-Anforderungen über das fetch Tool. | | time | Zeithilfsprogramme: get_current_time und convert_time. |

Verwenden Sie --disable-builtin-mcps, um alle integrierten Server zu deaktivieren, oder --disable-mcp-server SERVER-NAME, um einen bestimmten zu deaktivieren.

MCP-Serverbenennung

Servernamen können beliebige druckbare Zeichen enthalten, einschließlich Leerzeichen, Unicode-Zeichen und Interpunktion. Steuerzeichen (U+0000–U+001F, U+007F) und die schließende geschweifte Klammer (}) sind nicht zulässig. Servernamen werden als Präfixe für Toolnamen verwendet, z. B. erzeugt ein Server namens my-server Toolnamen wie my-server-fetch, und ein Server mit dem Namen My Server erzeugt My Server-fetch.

MCP-Serververtrauensstufen

MCP-Server werden aus mehreren Quellen geladen, jeweils mit einer anderen Vertrauensstufe.

QuelleVertrauensebeneÜberprüfung erforderlich
IntegriertHochNo
Repository (.github/mcp.json)MittelstufeEmpfohlen
Arbeitsbereich (.mcp.json)MittelstufeEmpfohlen
Benutzerkonfiguration (~/.copilot/mcp-config.json)User-definedBenutzerverantwortung
RemoteserverNiedrigImmer

Alle MCP-Toolaufrufe erfordern explizite Berechtigungen. Dies gilt auch für schreibgeschützte Vorgänge bei externen Diensten.

Enterprise MCP-Zulassungsliste

          GitHub Enterprise Organisationen können eine Zulassungsliste zulässiger MCP-Server erzwingen. Wenn sie aktiv ist, wertet die CLI jeden nicht standardmäßigen Server anhand der Unternehmensrichtlinie aus, bevor eine Verbindung hergestellt wird.

Wenn eine GitHub Enterprise Registrierungsrichtlinie erkannt wird (oder das MCP_ENTERPRISE_ALLOWLIST experimentelle Feature-Flag aktiviert ist), wird die CLI:

  1. Berechnet einen Fingerabdruck für jeden konfigurierten nicht standardmäßigen Server basierend auf seinen Befehlen, Argumenten und Remote-URL.
  2. Sendet die Fingerabdrücke an den Evaluierungs-Endpunkt der Freigabeliste des Unternehmens.
  3. Lässt nur Server zu, deren Fingerabdrücke genehmigt werden; alle anderen Personen werden mit einer Nachricht blockiert, die das Unternehmen benennt.

Diese Überprüfung ist fehlgeschlagen: Wenn der auswertende Endpunkt nicht erreichbar ist oder einen Fehler zurückgibt, werden nicht standardmäßige Server blockiert, bis die Richtlinie überprüft werden kann.

Wenn ein Server von einer Unternehmens-Zulassungsliste blockiert wird, zeigt die CLI Folgendes an:

MCP server "SERVER-NAME" was blocked by your enterprise "ENTERPRISE-NAME".
Contact your enterprise administrator to add this server to the allowlist.

Integrierte Standardserver sind immer von der Durchsetzung der Erlaubnisliste ausgenommen.

Migrieren von .vscode/mcp.json

Wenn Ihr Projekt das MCP-Konfigurationsformat von VS Code verwendet .vscode/mcp.json, migrieren Sie zu .mcp.json für GitHub Copilot-CLI. Die Migration ordnet den servers Schlüssel neu zu mcpServers.

          **POSIX-Shells (bash, zsh, fish und andere):**
jq '{mcpServers: .servers}' .vscode/mcp.json > .mcp.json

Erfordert jq.

          **PowerShell**:
pwsh -NoProfile -Command "`$json = Get-Content '.vscode/mcp.json' -Raw | ConvertFrom-Json; `$content = ([pscustomobject]@{ mcpServers = `$json.servers } | ConvertTo-Json -Depth 100); [System.IO.File]::WriteAllText('.mcp.json', `$content, (New-Object System.Text.UTF8Encoding `$false))"

Ersetzen Sie auf Windows pwsh durch powershell, wenn Sie Windows PowerShell anstelle von PowerShell Core verwenden.

Referenz zu Skills

Fähigkeiten sind Markdown-Dateien, die erweitern, was die CLI tun kann. Jede Fähigkeit lebt in einem eigenen Verzeichnis, das eine SKILL.md Datei enthält. Beim Aufrufen (über /SKILL-NAME oder automatisch durch den Agenten) wird der Inhalt der Fähigkeit in die Unterhaltung eingefügt.

Frontmatterfelder der Fähigkeit

FeldTypErforderlichBeschreibung
nameSchnurJaEindeutiger Bezeichner für die Fähigkeit. Nur Buchstaben, Zahlen und Bindestriche. Max. 64 Zeichen.
descriptionSchnurJaWas die Fähigkeit tut und wann sie zu verwenden. Max. 1024 Zeichen.
allowed-toolsZeichenfolge oder Zeichenfolge[]NoEine durch Kommas getrennte Liste oder ein YAML-Array von Tools, die automatisch erlaubt sind, wenn die Funktion aktiv ist. Verwenden Sie "*" für alle Tools.
user-invocablebooleanNoOb Benutzer den Skill /SKILL-NAMEaufrufen können. Standardwert: true.
disable-model-invocationbooleanNoVerhindern Sie, dass der Agent diese Fähigkeit automatisch aufruft. Standardwert: false.

Qualifikationsstandorte

Fähigkeiten werden in der Reihenfolge der Priorität aus diesen Speicherorten geladen (bei duplizierten Namen wird der zuerst gefundene verwendet).

OrtGeltungsbereichBeschreibung
.github/skills/ProjektProjekt-spezifische Fähigkeiten.
.agents/skills/ProjektAlternative Projektstandort.
.claude/skills/ProjektClaude-kompatibler Standort.
Elternteil .github/skills/GeerbtUnterstützung für das übergeordnete Monorepo-Verzeichnis.
~/.copilot/skills/PersonalPersönliche Fähigkeiten für alle Projekte.
~/.agents/skills/PersonalAgentenkompetenzen, die für alle Projekte gemeinsam genutzt werden.
~/.claude/skills/PersonalClaude-kompatibler persönlicher Speicherort.
Plug-In-VerzeichnissePlug-InFähigkeiten von installierten Plug-Ins.
COPILOT_SKILLS_DIRSKundenspezifischZusätzliche Verzeichnisse (durch Trennzeichen getrennt).
(gebündelt mit CLI)IntegriertFähigkeiten, die mit der CLI ausgeliefert wurden. Niedrigste Priorität - kann von jeder anderen Quelle überschrieben werden.

Befehle (alternatives Qualifikationsformat)

Befehle sind eine Alternative zu "Skills", die in einzelnen .md Dateien in .claude/commands/ gespeichert werden. Der Befehlsname wird vom Dateinamen abgeleitet. Befehlsdateien verwenden ein vereinfachtes Format (kein name Feld erforderlich) und unterstützen description, allowed-toolsund disable-model-invocation. Befehle haben eine niedrigere Priorität als Fähigkeiten mit demselben Namen.

Referenz für benutzerdefinierte Agents

Kundenspezifische Agenten sind spezialisierte KI-Agenten, die in Markdown-Dateien definiert sind. Der Dateiname (ohne Erweiterung) wird zur Agent-ID. Verwenden .agent.md Oder .md als Dateierweiterung.

Integrierte Agenten

AgentStandardmodellBeschreibung
code-reviewclaude-sonnet-4.5Codeüberprüfung für hohes Signal-Rausch-Verhältnis. Analysiert Diffs für Fehler, Sicherheitsprobleme und Logikfehler.
configure-copilotvariiertIntegrierter Unter-Agent für die Verwaltung der Copilot CLI Konfiguration über natürliche Sprache – Hinzufügen von MCP-Servern, Installieren von Agents und Verwalten von Fähigkeiten. Nur im experimentellen Modus verfügbar.
exploreclaude-haiku-4.5Schnelle Code-Basissuche. Durchsucht Dateien, liest Code und beantwortet Fragen. Gibt fokussierte Antworten unter 300 Wörtern zurück. Kann sicher parallel ausgeführt werden.
general-purposeclaude-sonnet-4.5Vollfunktions-Agent für komplexe Aufgaben mit mehreren Schritten. Wird in einem separaten Kontextfenster ausgeführt.
researchclaude-sonnet-4.6Forschungsagent für tiefe Analysen. Generiert einen Bericht basierend auf Informationen in Ihrer Codebasis, in relevanten Repositorys und im Web.
rubber-duckErgänzendes ModellVerwenden Sie ein ergänzendes Modell, um eine konstruktive Kritik an Vorschlägen, Entwürfen, Implementierungen oder Tests bereitzustellen. Identifiziert Schwachstellen und schlägt Verbesserungen vor. Bei Verwendung von Claude verwendet es ein GPT-Modell; bei Verwendung von GPT verwendet es Claude Opus 4.7. Nimmt niemals direkte Codeänderungen vor. Nur im experimentellen Modus verfügbar.
taskclaude-haiku-4.5Befehlsausführung (Tests, Builds, Lints). Gibt eine kurze Zusammenfassung bei Erfolg, eine vollständige Ausgabe bei Fehlern zurück.

Benutzerdefinierte Agent-Vordergrundinformationsfelder

FeldTypErforderlichBeschreibung
descriptionSchnurJaBeschreibung, die in der Agentenliste und im task Tool angezeigt wird.
inferbooleanNoAutomatische Delegierung durch den Hauptagenten zulassen. Standardwert: true.
mcp-serversObjektNoMCP-Server zum Verbinden. Verwendet dasselbe Schema wie ~/.copilot/mcp-config.json.
modelSchnurNoKI-Modell für diesen Agent. Wenn dies nicht festgelegt ist, wird das Modell des äußeren Agents geerbt. Wenn das Sitzungsmodell auf Auto (servergewählt) festgelegt ist, erben Subagenten unabhängig von diesem Feld immer das aufgelöste Sitzungsmodell.
nameSchnurNoAnzeigename. Standardmäßig wird der Dateiname verwendet.
toolsstring[]NoTools, die für den Agent verfügbar sind. Standard: ["*"] (alle Tools).

Benutzerdefinierte Agent-Standorte

GeltungsbereichOrt
Projekt
          `.github/agents/` oder `.claude/agents/` |

| Benutzer | ~/.copilot/agents/ oder ~/.claude/agents/ | | Plug-In | <plugin>/agents/ |

Projektagenten haben Vorrang vor Benutzeragenten. Plug-In-Agents haben die niedrigste Priorität.

Subagent-Grenzwerte

Die CLI erzwingt Tiefen- und Gleichzeitigkeitsbegrenzungen, um zu verhindern, dass Agenten aus dem Ruder laufen.

BegrenzungVorgabeUmgebungsvariable
Max. Tiefe6COPILOT_SUBAGENT_MAX_DEPTH
Maximal zulässige Anzahl32COPILOT_SUBAGENT_MAX_CONCURRENT
          **Die Tiefe** zählt, wie viele Agents ineinander geschachtelt sind. Wenn die Tiefenbeschränkung erreicht ist, kann der innerste Agent keine weiteren Subagenten erzeugen. 
          **Parallelität** zählt, wie viele Unteragenten im gesamten Sitzungsbaum gleichzeitig laufen. Wenn der Grenzwert erreicht ist, werden neue Anfragen von Subagenten abgelehnt, bis ein aktiver Agent fertig ist. Werte werden zwischen `1` und `256` eingeschränkt.

Berechtigungsgenehmigungsantworten

Wenn die CLI zur Berechtigung zum Ausführen eines Vorgangs auffordert, können Sie mit den folgenden Schlüsseln antworten.

SchlüsselAuswirkung
yDiese bestimmte Anforderung einmal zulassen.
nVerweigern Sie diese spezifische Anforderung einmal.
!Alle ähnlichen Anfragen für die restliche Sitzung zulassen.
#Verweigern Sie alle ähnlichen Anforderungen für den Rest der Sitzung.
?Detaillierte Informationen zur Anforderung anzeigen.

Sitzungsgenehmigungen werden zurückgesetzt, wenn Sie /clear ausführen oder eine neue Sitzung starten.

OpenTelemetry-Überwachung

          Copilot CLI kann Ablaufverfolgungen und Metriken über [OpenTelemetry](https://opentelemetry.io/) (OTel) exportieren, sodass Sie Einblicke in Agentinteraktionen, LLM-Aufrufe, Toolausführungen und Tokenverwendung erhalten. Alle Signalnamen und Attribute folgen den [OTel GenAI-Semantikkonventionen](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/gen-ai/).

OTel ist standardmäßig deaktiviert und hat keinen Mehraufwand. Sie wird aktiviert, wenn eine der folgenden Bedingungen erfüllt ist:

  • COPILOT_OTEL_ENABLED=true
  • OTEL_EXPORTER_OTLP_ENDPOINT ist festgelegt.
  • COPILOT_OTEL_FILE_EXPORTER_PATH ist festgelegt.

OTel-Umgebungsvariablen

VariableVorgabeBeschreibung
COPILOT_OTEL_ENABLEDfalseOTel explizit aktivieren. Ist nicht erforderlich, wenn OTEL_EXPORTER_OTLP_ENDPOINT festgelegt ist.
OTEL_EXPORTER_OTLP_ENDPOINTOTLP-Endpunkt-URL. Wenn Sie diese Einstellung automatisch festlegen, wird OTel aktiviert.
COPILOT_OTEL_EXPORTER_TYPEotlp-httpExportertyp: otlp-http oder file. Wählt file automatisch aus, wenn COPILOT_OTEL_FILE_EXPORTER_PATH festgelegt ist.
OTEL_SERVICE_NAMEgithub-copilotDienstname in Ressourcenattributen.
OTEL_RESOURCE_ATTRIBUTESZusätzliche Ressourcenattribute als durch Trennzeichen getrennte key=value Paare. Verwenden Sie die Prozentcodierung für Sonderzeichen.
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENTfalseErfassen Sie vollständige Prompt- und Antwortinhalte. Siehe Inhaltserfassung.
OTEL_LOG_LEVELOTel-Diagnoseprotokollstufe: NONE, , ERROR``WARN, INFO, DEBUG, . VERBOSE``ALL
COPILOT_OTEL_FILE_EXPORTER_PATHSchreiben Sie alle Signale in diese Datei als JSON-Zeilen. Wenn Sie diese Einstellung automatisch festlegen, wird OTel aktiviert.
COPILOT_OTEL_SOURCE_NAMEgithub.copilotName des Instrumentierungsbereichs für Tracer und Meter.
OTEL_EXPORTER_OTLP_HEADERSAuthentifizierungsheader für den OTLP-Exporter (z. B. Authorization=Bearer token).

Ablaufverfolgungen

Die Laufzeit gibt für jede Agenteninteraktion einen hierarchischen Spannenbaum aus. Jede Struktur enthält ein invoke_agent Root-Spanelement, mit chat und execute_tool untergeordneten Spanelementen.

          `invoke_agent` Spanattribute

Umschließt den gesamten Agentaufruf: Alle LLM-Aufrufe und Toolausführungen für eine Benutzernachricht.

  • Sitzungen auf oberster Ebene verwenden den Span-Typ CLIENT (Aufruf von Remote-Diensten) mit server.address und server.port.
  • Subagent-Aufrufe (z. B. Erkunden, Aufgaben) verwenden Span-Art INTERNAL (in-Process) ohne Serverattribute.
MerkmalBeschreibungSpanart
gen_ai.operation.nameinvoke_agentBeides
gen_ai.provider.nameAnbieter (z. B github. , anthropic)Beides
gen_ai.agent.idSitzungs-IDBeides
gen_ai.agent.nameAgentname (sofern verfügbar)Beides
gen_ai.agent.descriptionAgent-Beschreibung (sofern verfügbar)Beides
gen_ai.agent.versionLaufzeitversionBeides
gen_ai.conversation.idSitzungs-IDBeides
gen_ai.request.modelAngefordertes ModellBeides
gen_ai.response.finish_reasons
          `["stop"]` oder `["error"]` | Beides |

| gen_ai.usage.input_tokens | Gesamtzahl der Eingabetoken (alle Wendungen) | Beides | | gen_ai.usage.output_tokens | Output-Token insgesamt (alle Turns) | Beides | | gen_ai.usage.cache_read.input_tokens | Zwischengespeicherte Eingabetoken lesen | Beides | | gen_ai.usage.cache_creation.input_tokens | Zwischengespeicherte Eingabetoken erstellt | Beides | | github.copilot.turn_count | Anzahl der LLM-Roundtrips | Beides | | github.copilot.cost | Geldkosten | Beides | | github.copilot.aiu | KI-Einheiten verbraucht | Beides | | server.address | Server-Hostname | Nur CLIENT | | server.port | Serverport | Nur CLIENT | | error.type | Fehlerklassenname (bei Fehler) | Beides | | gen_ai.input.messages | Vollständige Eingabemeldungen als JSON (nur Inhaltserfassung) | Beides | | gen_ai.output.messages | Vollständige Ausgabemeldungen als JSON (nur Inhaltserfassung) | Beides | | gen_ai.system_instructions | Systemaufforderungsinhalte als JSON (nur Inhaltserfassung) | Beides | | gen_ai.tool.definitions | Toolschemas als JSON (nur Inhaltserfassung) | Beides |

          `chat` Spanattribute

Eine Spanne pro LLM-Anforderung. Spanentyp: CLIENT.

MerkmalBeschreibung
gen_ai.operation.namechat
gen_ai.provider.nameAnbietername
gen_ai.request.modelAngefordertes Modell
gen_ai.conversation.idSitzungs-ID
gen_ai.response.idAntwort-ID
gen_ai.response.modelAufgelöstes Modell
gen_ai.response.finish_reasonsStoppgründe
gen_ai.usage.input_tokensEingabe-Tokens in diesem Turn
gen_ai.usage.output_tokensAusgabe-Tokens in diesem Turn
gen_ai.usage.cache_read.input_tokensZwischengespeicherte Token lesen
gen_ai.usage.cache_creation.input_tokensZwischengespeicherte Token erstellt
github.copilot.costKosten des Turns
github.copilot.aiuIn diesem Turn verbrauchte KI-Einheiten
github.copilot.server_durationServerseitige Dauer
github.copilot.initiatorAnforderungsinitiator
github.copilot.turn_idKennung des Turns
github.copilot.interaction_idInteraktionskennung
github.copilot.time_to_first_chunkZeit zum ersten Streamingblock in Sekunden (nur Streaming)
server.addressServer-Hostname
server.portServerport
error.typeFehlerklassenname (bei Fehler)
gen_ai.input.messagesVollständige Eingabeaufforderungsnachrichten als JSON (nur Inhaltserfassung)
gen_ai.output.messagesVollständige Antwortnachrichten als JSON (nur Inhaltserfassung)
gen_ai.system_instructionsSystemaufforderungsinhalte als JSON (nur Inhaltserfassung)

          `execute_tool` Spanattribute

Eine Spanne pro Toolaufruf. Spanentyp: INTERNAL.

MerkmalBeschreibung
gen_ai.operation.nameexecute_tool
gen_ai.provider.nameAnbietername (sofern verfügbar)
gen_ai.tool.nameWerkzeugname (z. B. readFile)
gen_ai.tool.typefunction
gen_ai.tool.call.idToolaufrufbezeichner
gen_ai.tool.descriptionToolbeschreibung
error.typeFehlerklassenname (bei Fehler)
gen_ai.tool.call.argumentsTooleingabeargumente als JSON (nur Inhaltserfassung)
gen_ai.tool.call.resultToolausgabe als JSON (nur Inhaltserfassung)

Metriken

GenAI-Konventionsmetriken

MetricTypEinheitBeschreibung
gen_ai.client.operation.durationHistogrammsDauer des LLM-API-Aufrufs und des Agentenaufrufs
gen_ai.client.token.usageHistogrammtokensTokenanzahl nach Typ (input/output)
gen_ai.client.operation.time_to_first_chunkHistogrammsZeitpunkt für den Empfang des ersten Streamingblocks
gen_ai.client.operation.time_per_output_chunkHistogrammsLatenz zwischen den Chunks nach dem ersten Chunk

Anbieterspezifische Metriken

MetricTypEinheitBeschreibung
github.copilot.tool.call.countZählerAnrufeToolaufrufe nach gen_ai.tool.name und success
github.copilot.tool.call.durationHistogrammsLatenz der Toolausführung nach gen_ai.tool.name
github.copilot.agent.turn.countHistogrammdrehtLLM-Roundtrips pro Agent-Aufruf

Span-Ereignisse

Lebenszyklusereignisse, die auf der aktiven chat oder invoke_agent Zeitspanne aufgezeichnet werden.

EreignisBeschreibungSchlüsselattribute
github.copilot.hook.startEin Hook begann die Ausführung
          `github.copilot.hook.type`, `github.copilot.hook.invocation_id` |

| github.copilot.hook.end | Ein Hook wurde erfolgreich abgeschlossen. | github.copilot.hook.type, github.copilot.hook.invocation_id | | github.copilot.hook.error | Ein Hook ist fehlgeschlagen | github.copilot.hook.type, github.copilot.hook.invocation_id``github.copilot.hook.error_message | | github.copilot.session.truncation | Der Verlauf der Unterhaltung wurde verkürzt | github.copilot.token_limit, , github.copilot.pre_tokens``github.copilot.post_tokens, github.copilot.pre_messages, github.copilot.post_messages, github.copilot.tokens_removed, , github.copilot.messages_removed``github.copilot.performed_by | | github.copilot.session.compaction_start | Die Verdichtung der Geschichte begann | Nichts | | github.copilot.session.compaction_complete | Verlaufskomprimierung abgeschlossen | github.copilot.success, , github.copilot.pre_tokens``github.copilot.post_tokens, github.copilot.tokens_removed, github.copilot.messages_removed, github.copilot.message (nur Inhaltserfassung) | | github.copilot.skill.invoked | Eine Fähigkeit wurde aufgerufen | github.copilot.skill.name github.copilot.skill.path github.copilot.skill.plugin_name github.copilot.skill.plugin_version | | github.copilot.session.shutdown | Die Sitzung wird beendet. | github.copilot.shutdown_type, , github.copilot.total_premium_requests``github.copilot.lines_added, , github.copilot.lines_removed``github.copilot.files_modified_count | | github.copilot.session.abort | Der Benutzer hat den aktuellen Vorgang abgebrochen. | github.copilot.abort_reason | | exception | Sitzungsfehler | github.copilot.error_type, github.copilot.error_status_code``github.copilot.error_provider_call_id |

Ressourcenattribute

Alle Signale tragen diese Ressourcenattribute.

MerkmalWert
service.name
          `github-copilot` (konfigurierbar über `OTEL_SERVICE_NAME`) |

| service.version | Laufzeitversion |

Inhaltserfassung

Standardmäßig werden keine Eingabeaufforderungsinhalte, Antworten oder Toolargumente erfasst – nur Metadaten wie Modellnamen, Tokenanzahlen und Dauer. Um den vollständigen Inhalt zu erfassen, aktivieren Sie OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true.

Warnung

Die Inhaltserfassung kann vertrauliche Informationen wie Code, Dateiinhalte und Benutzeraufforderungen enthalten. Aktivieren Sie dies nur in vertrauenswürdigen Umgebungen.

Wenn die Inhaltserfassung aktiviert ist, werden die folgenden Attribute aufgefüllt.

MerkmalContent
gen_ai.input.messagesVollständige Prompt-Nachrichten (JSON)
gen_ai.output.messagesVollständige Antwortnachrichten (JSON)
gen_ai.system_instructionsSystemaufforderungsinhalt (JSON)
gen_ai.tool.definitionsWerkzeugschemata (JSON)
gen_ai.tool.call.argumentsEingabeargumente des Tools
gen_ai.tool.call.resultWerkzeugausgabe

Weiterführende Lektüre