Kommandozeilenbefehle
| Befehl | Purpose |
|---|---|
copilot | Starten Sie die interaktive Benutzeroberfläche. |
copilot help [TOPIC] | Hilfeinformationen anzeigen. Zu den Hilfethemen gehören: config, commands, environment, logging, monitoring, permissions, und providers. |
copilot init | Initialisieren Sie Copilot benutzerdefinierte Anweisungen für dieses Repository. |
copilot login | Authentifizierung ü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 mcp | Verwalten Sie MCP-Serverkonfigurationen über die Befehlszeile. |
copilot plugin | Verwalten Sie Plugins und Plug-In-Marketplaces. |
copilot update | Laden Sie die neueste Version herunter, und installieren Sie sie. |
copilot version | Zeigen Sie Versionsinformationen an, und suchen Sie nach Updates. |
`copilot login`-Optionen
| Auswahl | Purpose |
|---|---|
--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üpfung | Purpose |
|---|---|
@ FILENAME | Fügen Sie Dateiinhalte in den Kontext ein. |
# NUMBER | Schließen Sie ein Problem oder eine GitHub Pullanforderung in den Kontext ein. |
! COMMAND | Führen Sie einen Befehl in der lokalen Shell aus und umgehen Sie Copilot. |
? | Öffnen Sie schnelle Hilfe (auf einer leeren Eingabeaufforderung). |
| ESC | Abbrechen des aktuellen Vorgangs. |
| Strg+C | Vorgang abbrechen/Eingabe löschen. Drücken Sie zweimal, um zu beenden. |
| STRG+D | Herunterfahren. |
| STRG+G | Bearbeiten Sie die Eingabeaufforderung in einem externen Editor ($EDITOR). |
| STRG+L | Löschen Sie den Bildschirm. |
| Strg+Eingabe oder STRG+Q | Eine Nachricht in die Warteschlange stellen, die gesendet werden soll, während der Agent ausgelastet ist. |
| STRG+R | Umgekehrte Suche durch den Befehlsverlauf. |
| Strg+V | Fü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 e | Bearbeiten Sie die Eingabeaufforderung in einem externen Editor ($EDITOR). |
Strg+X dann o | Öffnen Sie den neuesten Link aus der Timeline. |
| Strg+Z | Prozess 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+TAB | Wechseln zwischen Standard-, Plan- und Autopilot-Modus. |
Zeitleistenshortcuts in der interaktiven Benutzeroberfläche
| Verknüpfung | Purpose |
|---|---|
| Strg+O | In der Eingabeaufforderung steht zwar nichts, aber dies erweitert die letzten Einträge in der Zeitleiste von Copilot, um mehr Details anzuzeigen. |
| STRG+E | Während in der Eingabeaufforderung nichts steht, werden dadurch alle Elemente in der Antwortzeitleiste von Copilot erweitert. |
| Strg+T | Erweitern/Reduzieren der Anzeige der Begründung in Antworten. |
| Bild hoch/Bild ab | Scrollen Sie die Zeitachse um eine Seite nach oben oder unten. |
Tastenkürzel in der interaktiven Benutzeroberfläche
| Verknüpfung | Purpose |
|---|---|
| STRG+A | Wechseln zum Anfang der Zeile (beim Eingeben). |
| STRG+B | Wechseln zum vorherigen Zeichen |
| STRG+E | Wechseln zum Ende der Zeile (beim Eingeben). |
| STRG+F | Wechseln zum nächsten Zeichen |
| STRG+H | Löschen Sie das vorherige Zeichen. |
| Strg+K | Löscht vom Cursor bis zum Ende der Zeile. Wenn sich der Cursor am Ende der Zeile befindet, löschen Sie den Zeilenumbruch. |
| Strg+U | Löscht vom Cursor bis zum Anfang der Zeile. |
| STRG+W | Löschen Sie das vorherige Wort. |
| Home | Wechseln zum Anfang des Texts. |
| Ende | Wechseln 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
| Befehl | Purpose |
|---|---|
/add-dir PATH | Fügen Sie der Liste der zulässigen Dateien ein Verzeichnis für den Dateizugriff hinzu. |
/agent | Durchsuchen und wählen Sie aus den verfügbaren Agents (falls vorhanden) aus. Siehe Informationen zu benutzerdefinierten Agents. |
/ask QUESTION | Stellen 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. |
/compact | Fassen Sie den Unterhaltungsverlauf zusammen, um die Nutzung von Kontextfenstern zu reduzieren. Siehe Verwalten des Kontexts in GitHub Copilot-CLI. |
/context | Anzeigen von Verwendung und Visualisierung der Kontextfenster-Tokens. Siehe Verwalten des Kontexts in GitHub Copilot-CLI. |
/copy | Kopieren 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. |
/env | Zeigen Sie geladene Umgebungsdetails an (Anweisungen, MCP-Server, Fähigkeiten, Agents, Plug-Ins, LSPs, Erweiterungen). |
/exit, /quit | Beenden Sie die CLI. |
/experimental [on|off|show] | Aktivieren, Festlegen oder Anzeigen experimenteller Features |
/feedback, /bug | Geben 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. |
/help | Zeigen Sie die Hilfe für interaktive Befehle an. |
/ide | Stellen Sie eine Verbindung mit einem IDE-Arbeitsbereich her. Siehe Verbinden von GitHub Copilot-CLI mit VS Code. |
/init | Initialisieren Sie Copilot benutzerdefinierte Anweisungen und agentenbasierte Funktionen für dieses Repository. Siehe Projektinitialisierung für Copilot. |
/instructions | Anzeigen 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-dirs | Zeigen Sie alle Verzeichnisse an, für die der Dateizugriff zulässig ist. |
/login | Melden Sie sich auf Copilot an. |
/logout | Melden 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". |
/remote | Aktivieren 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 TOPIC | Führen Sie eine umfassende Recherche mithilfe von GitHub Such- und Webquellen durch. Siehe Recherchieren mit GitHub Copilot-CLI. |
/reset-allowed-tools | Setzen Sie die Liste der zulässigen Tools zurück. |
/restart | Starten Sie die CLI neu, wobei die aktuelle Sitzung erhalten bleibt. |
/resume [VALUE], /continue | Wechseln 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, /footer | Konfigurieren Sie, welche Elemente in der Statuszeile angezeigt werden. |
/tasks | Anzeigen und Verwalten von Hintergrundaufgaben (Subagenten und Shellsitzungen). |
/terminal-setup | Konfigurieren 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, /rewind | Gehen Sie einen Schritt zurück und machen Sie die Dateiänderungen rückgängig. |
/update, /upgrade | Aktualisieren Sie die CLI auf die neueste Version. |
/usage | Anzeigen von Sitzungsnutzungsmetriken und Statistiken. |
/user [show|list|switch] | Verwalten sie den aktuellen GitHub Benutzer. |
/version | Zeigen 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
| Auswahl | Purpose |
|---|---|
--add-dir=PATH | Fügen Sie der Liste für den Dateizugriff ein Verzeichnis hinzu (kann mehrmals verwendet werden). |
--add-github-mcp-tool=TOOL | Fü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=TOOLSET | Fü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=JSON | Fü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=AGENT | Geben Sie eine Benutzerdefinierter Agent an, die verwendet werden soll. Siehe Informationen zu benutzerdefinierten Agents. |
--allow-all | Alle Berechtigungen aktivieren (entspricht --allow-all-tools --allow-all-paths --allow-all-urls). |
--allow-all-paths | Deaktivieren Sie die Überprüfung des Dateipfads, und erlauben Sie den Zugriff auf einen beliebigen Pfad. |
--allow-all-tools | Zulassen, dass alle Tools automatisch ohne Bestätigung ausgeführt werden. Erforderlich bei programmgesteuerter Verwendung der CLI (env: COPILOT_ALLOW_ALL). |
--allow-all-urls | Zugriff 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. |
--autopilot | Aktivieren 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-banner | Ein- oder Ausblenden des Startbanners. |
--bash-env | Aktiviert BASH_ENV- Unterstützung für Bash-Shells. |
--config-dir=PATH | Legen 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. |
--continue | Setzen 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-mcps | Deaktivieren Sie alle integrierten MCP-Server (derzeit: github-mcp-server). |
--disable-mcp-server=SERVER-NAME | Deaktivieren Sie einen bestimmten MCP-Server (kann mehrmals verwendet werden). |
--disallow-temp-dir | Verhindern des automatischen Zugriffs auf das temporäre Systemverzeichnis. |
--effort=LEVEL, --reasoning-effort=LEVEL | Legen Sie die Aufwandsstufe für die Begründung (low, medium, high) fest. |
--enable-all-github-mcp-tools | Aktivieren 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-summaries | Fordern 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. |
--experimental | Aktivieren Sie experimentelle Features (verwenden Sie --no-experimental, um zu deaktivieren). |
-h, --help | Hilfe anzeigen. |
-i PROMPT, --interactive=PROMPT | Starten Sie eine interaktive Sitzung, und führen Sie diese Eingabeaufforderung automatisch aus. |
--log-dir=DIRECTORY | Legen Sie das Protokolldateiverzeichnis fest (Standard: ~/.copilot/logs/). |
--log-level=LEVEL | Legen Sie die Protokollebene fest (Auswahlmöglichkeiten: none, error, warning, , info, debug, , all). default |
--max-autopilot-continues=COUNT | Maximale Anzahl von Fortsetzungsmeldungen im Autopilot-Modus (Standard: unbegrenzt). Siehe Zulassen, dass GitHub Copilot CLI autonom arbeiten kann. |
--mode=MODE | Legen Sie den anfänglichen Agentmodus fest (Auswahlmöglichkeiten: interactive, plan, autopilot). Kann nicht mit --autopilot oder --plan kombiniert werden. |
--model=MODEL | Legen 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=NAME | Legen Sie einen Namen für die neue Sitzung fest. Wird von --resume und /resume verwendet, um Sitzungen anhand des Namens zu finden. |
--no-ask-user | Deaktivieren Sie das ask_user Tool (der Agent funktioniert autonom, ohne Fragen zu stellen). |
--no-auto-update | Automatisches Herunterladen von CLI-Updates deaktivieren. |
--no-bash-env | Deaktivieren Sie BASH_ENV die Unterstützung für Bash-Shells. |
--no-color | Alle Farbausgabe deaktivieren. |
--no-custom-instructions | Deaktivieren Sie das Laden von benutzerdefinierten Anweisungen aus AGENTS.md sowie verwandten Dateien. |
--no-experimental | Deaktivieren Sie experimentelle Features. |
--no-mouse | Deaktivieren Sie die Mausunterstützung. |
--no-remote | Remotezugriff für diese Sitzung deaktivieren. |
--output-format=FORMAT | FORMAT kann text (Standard) oder json (Ausgabe JSONL: ein JSON-Objekt pro Zeile) sein. |
-p PROMPT, --prompt=PROMPT | Führen Sie ein Prompt programmgesteuert aus (endet nach Abschluss). Siehe Programmatisches Ausführen GitHub Copilot-CLI. |
--plan | Starten Sie im Planmodus. Kurzform für --mode plan. Kann nicht mit --mode oder --autopilot kombiniert werden. |
--plain-diff | Deaktivieren Sie das erweiterte Diff-Rendering (Syntaxhervorhebung über das in Ihrer Git-Konfiguration angegebene Diff-Tool). |
--plugin-dir=DIRECTORY | Laden Sie ein Plug-In aus einem lokalen Verzeichnis (kann mehrmals verwendet werden). |
--remote | Aktivieren 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, --silent | Gibt nur die Agent-Antwort aus (ohne Nutzungsstatistiken). Dies ist nützlich für die Skripterstellung mit -p. |
--screen-reader | Aktivieren 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=PATH | Teilen einer Sitzung als Markdown-Datei nach Abschluss einer programmgesteuerten Sitzung (Standardpfad: ./copilot-session-<ID>.md). |
--share-gist | Teilen Sie eine Sitzung nach Abschluss einer programmatischen Sitzung mit einem geheimen GitHub Gist. |
--stream=MODE | Aktivieren oder Deaktivieren des Streamingmodus (Modusoptionen: on oder off). |
-v, --version | Versionsinformationen anzeigen. |
--yolo | Alle 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 Tools | Beschreibung |
|---|---|
bash / powershell | Befehle ausführen |
list_bash / list_powershell | Auflisten aktiver Shellsitzungen |
read_bash / read_powershell | Ausgabe aus einer Shellsitzung lesen |
stop_bash / stop_powershell | Beenden einer Shellsitzung |
write_bash / write_powershell | Senden von Eingaben an eine Shellsitzung |
Dateivorgangstools
| Name des Tools | Beschreibung |
|---|---|
apply_patch | Anwenden von Patches (verwendet von einigen Modellen anstelle von edit/create) |
create | Erstellen neuer Dateien |
edit | Bearbeiten von Dateien über Zeichenfolgenersetzung |
view | Lesen von Dateien oder Verzeichnissen |
Agenten- und Aufgaben-Delegierungstools
| Name des Tools | Beschreibung |
|---|---|
list_agents | Auflisten der verfügbaren Agents |
read_agent | Überprüfen des Status des Hintergrund-Agents |
task | Ausführen von Subagenten |
Weitere Tools
| Name des Tools | Beschreibung |
|---|---|
ask_user | Stellen Sie dem Benutzer eine Frage |
glob | Suchen nach Übereinstimmenden Mustern für Dateien |
grep (oder rg) | Suchen nach Text in Dateien |
show_file | Präsentieren Sie Codeausschnitte inline in der Zeitachse. Nur im experimentellen Modus verfügbar. |
skill | Aufrufen von benutzerdefinierten Fähigkeiten |
web_fetch | Abrufen 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.
| Kind | Beschreibung | Beispielmuster |
|---|---|---|
memory | Speichern von Fakten im Agentspeicher | memory |
read | Datei- 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
| Variable | Beschreibung |
|---|---|
COLORFGBG | Fallback zur Erkennung von dunklen/hellen Terminal-Hintergründen. |
COPILOT_ALLOW_ALL | Festlegen auf true, um alle Berechtigungen automatisch zu erlauben (entspricht --allow-all). |
COPILOT_AUTO_UPDATE | Stellen 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_DIRS | Durch Trennzeichen getrennte Liste zusätzlicher Verzeichnisse für benutzerdefinierte Anweisungen. |
COPILOT_EDITOR | Editor-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: 1–256. |
| COPILOT_SUBAGENT_MAX_DEPTH | Maximale Schachtelungstiefe für Subagenten. Standardwert: 6. Bereich: 1–256. |
| 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
}
]
}
}
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
bash | Schnur | Einer von bash/powershell | Shell-Befehl für Unix. |
cwd | Schnur | No | Arbeitsverzeichnis für den Befehl (relativ zum Repositorystamm oder absolut). |
env | Objekt | No | Festzulegende Umgebungsvariablen (unterstützt variable Erweiterung). |
powershell | Schnur | Einer von bash/powershell | Shellbefehl für Windows. |
timeoutSec | number | No | Timeout in Sekunden. Standardwert: 30. |
type | "command" | Ja | Muss "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"
}
]
}
}
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
prompt | Schnur | Ja | Text zum Einreichen – kann eine Nachricht in natürlicher Sprache oder ein Slash-Befehl sein. |
type | "prompt" | Ja | Muss "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"
}
]
}
}
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
type | "http" | Ja | Muss "http"lauten. |
url | Schnur | Ja | Endpunkt-URL. Es muss http: oder https: verwendet werden. Keine env var-Ersetzung in der URL selbst. |
headers | Objekt | No | Anforderungsheader. Werte unterstützen die $VAR / ${VAR} Ersetzung, die auf Namen beschränkt ist, die in allowedEnvVars aufgeführt sind. |
allowedEnvVars | string[] | No | Allowlist für Kopfzeilenwert-Vorlagen. Das Festlegen auf ein nicht leeres Array erfordert HTTPS. |
timeoutSec | number | No | Timeout 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
allowedEnvVarsein nicht leeres Array ist, um zu verhindern, dass Anmeldeinformationen im Klartext gesendet werden. - Standardmäßig für die
preToolUse- undpermissionRequest-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.
| Variable | Auswirkung | Verwendungszweck |
|---|---|---|
COPILOT_HOOK_ALLOW_LOCALHOST=1 | Erlaubt 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=1 | Erlaubt 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
| Zustand | Behavior |
|---|---|
| 2xx + gültiger JSON-Textkörper | Textkörper, der gemäß dem Ereignisausgabeschema geparst wird. |
| 2xx + leerer oder nicht JSON-Textkörper | Keine Aktion. |
| Nicht-2xx-Antwort | Hook schlägt fehl. Fehler protokolliert. Der Agent läuft weiter. |
| 3xx-Weiterleitung | Hook schlägt fehl ("Zurückgegebene Umleitung"). Agent läuft weiter. |
| Timeout | Hook schlägt fehl. Fehler protokolliert. Agent fährt fort. |
| Netzwerk-, DNS- oder TLS-Fehler | Hook schlägt fehl. Fehler protokolliert. Der Agent läuft weiter. |
| Fehler bei der Konfigurationsüberprüfung beim Laden | Gesamte 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
| Ereignis | Wird ausgelöst, wenn | Verarbeitete Ausgabe |
|---|---|---|
sessionStart | Eine neue oder fortgesetzte Sitzung beginnt. | Optional – kann additionalContext zurückgeben, um Kontexte auf Sitzungsebene vor jede Eingabe einzufügen. |
sessionEnd | Die Sitzung wird beendet. | No |
userPromptSubmitted | Der Benutzer sendet eine Eingabeaufforderung. | No |
preToolUse | Bevor jedes Tool ausgeführt wird. | Ja – kann zulassen, ablehnen oder ändern. |
postToolUse | Nachdem jedes Tool erfolgreich abgeschlossen hat. | Ja - kann das erfolgreiche Ergebnis ersetzen (nur programmgesteuerte SDK-Hooks). |
postToolUseFailure | Nachdem ein Werkzeug mit einem Fehler abgeschlossen wurde. | Ja – kann Anleitungen zur Wiederherstellung über additionalContext (Exit-Code 2 für Befehlshaken) bereitstellen. |
agentStop | Der Hauptagent beendet eine Runde. | Ja – kann die Fortsetzung blockieren und erzwingen. |
subagentStop | Ein Subagent schließt ab. | Ja – kann die Fortsetzung blockieren und erzwingen. |
subagentStart | Ein 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. |
preCompact | Die Kontextkomprimierung beginnt (manuell oder automatisch). Unterstützt matcher das Filtern nach Trigger ("manual" oder "auto"). | Nein – nur Benachrichtigung. |
permissionRequest | Bevor 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. |
errorOccurred | Während der Ausführung tritt ein Fehler auf. | No |
notification | Wird 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.
| Feld | Werte | Beschreibung |
|---|---|---|
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
| Feld | Werte | Beschreibung |
|---|---|---|
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.
| Feld | Werte | Beschreibung |
|---|---|---|
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:**
| Typ | Bei Aktivierung |
|---|---|
shell_completed | Ein Shell-Befehl im Hintergrund (asynchron) wird beendet |
shell_detached_completed | Eine getrennte Shell-Sitzung ist beendet. |
agent_completed | Ein Unteragent im Hintergrund wird abgeschlossen (abgeschlossen oder fehlgeschlagen) |
agent_idle | Ein Hintergrund-Agent beendet einen Umlauf und wechselt in den Leerlaufmodus (wartend auf write_agent) |
permission_prompt | Der Agent fordert die Berechtigung zum Ausführen eines Tools an. |
elicitation_dialog | Der 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 Tools | Beschreibung |
|---|---|
bash | Ausführen von Shellbefehlen (Unix). |
powershell | Ausführen von Shellbefehlen (Windows). |
view | Dateiinhalte lesen. |
edit | Dateiinhalte ändern. |
create | Erstellen Sie neue Dateien. |
glob | Suchen Sie Dateien nach Mustern. |
grep | Dateiinhalte durchsuchen. |
web_fetch | Webseiten abrufen. |
task | Fü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.
| Subcommand | Beschreibung |
|---|---|
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:**
| Auswahl | Beschreibung |
|---|---|
-- <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=VALUE | Umgebungsvariable (wiederholbar). |
--header KEY=VALUE | HTTP-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. |
--json | Füge die Konfiguration als JSON aus. |
--show-secrets | Vollstä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
| Typ | Beschreibung | Pflichtfelder |
|---|---|---|
local / stdio | Lokaler Prozess kommuniziert über stdin/stdout. |
`command`, `args` |
| http | Remoteserver mit streambarem HTTP-Transport. | url |
| sse | Remoteserver mit Server-Sent-Ereignistransport. | url |
Lokale Serverkonfigurationsfelder
| Feld | Erforderlich | Beschreibung |
|---|---|---|
command | Ja | Befehl zum Starten des Servers. |
args | Ja | Befehlsargumente (Array). |
tools | Ja | Zu aktivierende Tools: ["*"] für alle oder eine Liste bestimmter Toolnamen. |
env | No | Umgebungsvariablen. Unterstützt $VAR, ${VAR} und ${VAR:-default} Erweiterungen. |
cwd | No | Arbeitsverzeichnis für den Server. |
timeout | No | Timeout beim Aufruf des Tools in Millisekunden. |
type | No |
`"local"` oder `"stdio"`. Standardwert: `"local"`. |
Remote-Server-Konfigurationsfelder
| Feld | Erforderlich | Beschreibung |
|---|---|---|
type | Ja |
`"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.
| Modus | Beschreibung |
|---|---|
none | Keine Filterung. |
markdown | Formatieren Sie die Ausgabe als Markdown. |
hidden_characters | Entfernt verborgene oder Steuerzeichen. Standard. |
Integrierte MCP-Server
Die CLI enthält integrierte MCP-Server, die ohne zusätzliche Einrichtung verfügbar sind.
| Server | Beschreibung |
|---|---|
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.
| Quelle | Vertrauensebene | Überprüfung erforderlich |
|---|---|---|
| Integriert | Hoch | No |
Repository (.github/mcp.json) | Mittelstufe | Empfohlen |
Arbeitsbereich (.mcp.json) | Mittelstufe | Empfohlen |
Benutzerkonfiguration (~/.copilot/mcp-config.json) | User-defined | Benutzerverantwortung |
| Remoteserver | Niedrig | Immer |
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:
- Berechnet einen Fingerabdruck für jeden konfigurierten nicht standardmäßigen Server basierend auf seinen Befehlen, Argumenten und Remote-URL.
- Sendet die Fingerabdrücke an den Evaluierungs-Endpunkt der Freigabeliste des Unternehmens.
- 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
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | Schnur | Ja | Eindeutiger Bezeichner für die Fähigkeit. Nur Buchstaben, Zahlen und Bindestriche. Max. 64 Zeichen. |
description | Schnur | Ja | Was die Fähigkeit tut und wann sie zu verwenden. Max. 1024 Zeichen. |
allowed-tools | Zeichenfolge oder Zeichenfolge[] | No | Eine 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-invocable | boolean | No | Ob Benutzer den Skill /SKILL-NAMEaufrufen können. Standardwert: true. |
disable-model-invocation | boolean | No | Verhindern 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).
| Ort | Geltungsbereich | Beschreibung |
|---|---|---|
.github/skills/ | Projekt | Projekt-spezifische Fähigkeiten. |
.agents/skills/ | Projekt | Alternative Projektstandort. |
.claude/skills/ | Projekt | Claude-kompatibler Standort. |
Elternteil .github/skills/ | Geerbt | Unterstützung für das übergeordnete Monorepo-Verzeichnis. |
~/.copilot/skills/ | Personal | Persönliche Fähigkeiten für alle Projekte. |
~/.agents/skills/ | Personal | Agentenkompetenzen, die für alle Projekte gemeinsam genutzt werden. |
~/.claude/skills/ | Personal | Claude-kompatibler persönlicher Speicherort. |
| Plug-In-Verzeichnisse | Plug-In | Fähigkeiten von installierten Plug-Ins. |
COPILOT_SKILLS_DIRS | Kundenspezifisch | Zusätzliche Verzeichnisse (durch Trennzeichen getrennt). |
| (gebündelt mit CLI) | Integriert | Fä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
| Agent | Standardmodell | Beschreibung |
|---|---|---|
code-review | claude-sonnet-4.5 | Codeüberprüfung für hohes Signal-Rausch-Verhältnis. Analysiert Diffs für Fehler, Sicherheitsprobleme und Logikfehler. |
configure-copilot | variiert | Integrierter 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. |
explore | claude-haiku-4.5 | Schnelle 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-purpose | claude-sonnet-4.5 | Vollfunktions-Agent für komplexe Aufgaben mit mehreren Schritten. Wird in einem separaten Kontextfenster ausgeführt. |
research | claude-sonnet-4.6 | Forschungsagent für tiefe Analysen. Generiert einen Bericht basierend auf Informationen in Ihrer Codebasis, in relevanten Repositorys und im Web. |
rubber-duck | Ergänzendes Modell | Verwenden 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. |
task | claude-haiku-4.5 | Befehlsausführung (Tests, Builds, Lints). Gibt eine kurze Zusammenfassung bei Erfolg, eine vollständige Ausgabe bei Fehlern zurück. |
Benutzerdefinierte Agent-Vordergrundinformationsfelder
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
description | Schnur | Ja | Beschreibung, die in der Agentenliste und im task Tool angezeigt wird. |
infer | boolean | No | Automatische Delegierung durch den Hauptagenten zulassen. Standardwert: true. |
mcp-servers | Objekt | No | MCP-Server zum Verbinden. Verwendet dasselbe Schema wie ~/.copilot/mcp-config.json. |
model | Schnur | No | KI-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. |
name | Schnur | No | Anzeigename. Standardmäßig wird der Dateiname verwendet. |
tools | string[] | No | Tools, die für den Agent verfügbar sind. Standard: ["*"] (alle Tools). |
Benutzerdefinierte Agent-Standorte
| Geltungsbereich | Ort |
|---|---|
| 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.
| Begrenzung | Vorgabe | Umgebungsvariable |
|---|---|---|
| Max. Tiefe | 6 | COPILOT_SUBAGENT_MAX_DEPTH |
| Maximal zulässige Anzahl | 32 | COPILOT_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üssel | Auswirkung |
|---|---|
y | Diese bestimmte Anforderung einmal zulassen. |
n | Verweigern 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=trueOTEL_EXPORTER_OTLP_ENDPOINTist festgelegt.COPILOT_OTEL_FILE_EXPORTER_PATHist festgelegt.
OTel-Umgebungsvariablen
| Variable | Vorgabe | Beschreibung |
|---|---|---|
COPILOT_OTEL_ENABLED | false | OTel explizit aktivieren. Ist nicht erforderlich, wenn OTEL_EXPORTER_OTLP_ENDPOINT festgelegt ist. |
OTEL_EXPORTER_OTLP_ENDPOINT | — | OTLP-Endpunkt-URL. Wenn Sie diese Einstellung automatisch festlegen, wird OTel aktiviert. |
COPILOT_OTEL_EXPORTER_TYPE | otlp-http | Exportertyp: otlp-http oder file. Wählt file automatisch aus, wenn COPILOT_OTEL_FILE_EXPORTER_PATH festgelegt ist. |
OTEL_SERVICE_NAME | github-copilot | Dienstname in Ressourcenattributen. |
OTEL_RESOURCE_ATTRIBUTES | — | Zusätzliche Ressourcenattribute als durch Trennzeichen getrennte key=value Paare. Verwenden Sie die Prozentcodierung für Sonderzeichen. |
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT | false | Erfassen Sie vollständige Prompt- und Antwortinhalte. Siehe Inhaltserfassung. |
OTEL_LOG_LEVEL | — | OTel-Diagnoseprotokollstufe: NONE, , ERROR``WARN, INFO, DEBUG, . VERBOSE``ALL |
COPILOT_OTEL_FILE_EXPORTER_PATH | — | Schreiben Sie alle Signale in diese Datei als JSON-Zeilen. Wenn Sie diese Einstellung automatisch festlegen, wird OTel aktiviert. |
COPILOT_OTEL_SOURCE_NAME | github.copilot | Name des Instrumentierungsbereichs für Tracer und Meter. |
OTEL_EXPORTER_OTLP_HEADERS | — | Authentifizierungsheader 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) mitserver.addressundserver.port. - Subagent-Aufrufe (z. B. Erkunden, Aufgaben) verwenden Span-Art
INTERNAL(in-Process) ohne Serverattribute.
| Merkmal | Beschreibung | Spanart |
|---|---|---|
gen_ai.operation.name | invoke_agent | Beides |
gen_ai.provider.name | Anbieter (z. B github. , anthropic) | Beides |
gen_ai.agent.id | Sitzungs-ID | Beides |
gen_ai.agent.name | Agentname (sofern verfügbar) | Beides |
gen_ai.agent.description | Agent-Beschreibung (sofern verfügbar) | Beides |
gen_ai.agent.version | Laufzeitversion | Beides |
gen_ai.conversation.id | Sitzungs-ID | Beides |
gen_ai.request.model | Angefordertes Modell | Beides |
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.
| Merkmal | Beschreibung |
|---|---|
gen_ai.operation.name | chat |
gen_ai.provider.name | Anbietername |
gen_ai.request.model | Angefordertes Modell |
gen_ai.conversation.id | Sitzungs-ID |
gen_ai.response.id | Antwort-ID |
gen_ai.response.model | Aufgelöstes Modell |
gen_ai.response.finish_reasons | Stoppgründe |
gen_ai.usage.input_tokens | Eingabe-Tokens in diesem Turn |
gen_ai.usage.output_tokens | Ausgabe-Tokens in diesem Turn |
gen_ai.usage.cache_read.input_tokens | Zwischengespeicherte Token lesen |
gen_ai.usage.cache_creation.input_tokens | Zwischengespeicherte Token erstellt |
github.copilot.cost | Kosten des Turns |
github.copilot.aiu | In diesem Turn verbrauchte KI-Einheiten |
github.copilot.server_duration | Serverseitige Dauer |
github.copilot.initiator | Anforderungsinitiator |
github.copilot.turn_id | Kennung des Turns |
github.copilot.interaction_id | Interaktionskennung |
github.copilot.time_to_first_chunk | Zeit zum ersten Streamingblock in Sekunden (nur Streaming) |
server.address | Server-Hostname |
server.port | Serverport |
error.type | Fehlerklassenname (bei Fehler) |
gen_ai.input.messages | Vollständige Eingabeaufforderungsnachrichten als JSON (nur Inhaltserfassung) |
gen_ai.output.messages | Vollständige Antwortnachrichten als JSON (nur Inhaltserfassung) |
gen_ai.system_instructions | Systemaufforderungsinhalte als JSON (nur Inhaltserfassung) |
`execute_tool` Spanattribute
Eine Spanne pro Toolaufruf. Spanentyp: INTERNAL.
| Merkmal | Beschreibung |
|---|---|
gen_ai.operation.name | execute_tool |
gen_ai.provider.name | Anbietername (sofern verfügbar) |
gen_ai.tool.name | Werkzeugname (z. B. readFile) |
gen_ai.tool.type | function |
gen_ai.tool.call.id | Toolaufrufbezeichner |
gen_ai.tool.description | Toolbeschreibung |
error.type | Fehlerklassenname (bei Fehler) |
gen_ai.tool.call.arguments | Tooleingabeargumente als JSON (nur Inhaltserfassung) |
gen_ai.tool.call.result | Toolausgabe als JSON (nur Inhaltserfassung) |
Metriken
GenAI-Konventionsmetriken
| Metric | Typ | Einheit | Beschreibung |
|---|---|---|---|
gen_ai.client.operation.duration | Histogramm | s | Dauer des LLM-API-Aufrufs und des Agentenaufrufs |
gen_ai.client.token.usage | Histogramm | tokens | Tokenanzahl nach Typ (input/output) |
gen_ai.client.operation.time_to_first_chunk | Histogramm | s | Zeitpunkt für den Empfang des ersten Streamingblocks |
gen_ai.client.operation.time_per_output_chunk | Histogramm | s | Latenz zwischen den Chunks nach dem ersten Chunk |
Anbieterspezifische Metriken
| Metric | Typ | Einheit | Beschreibung |
|---|---|---|---|
github.copilot.tool.call.count | Zähler | Anrufe | Toolaufrufe nach gen_ai.tool.name und success |
github.copilot.tool.call.duration | Histogramm | s | Latenz der Toolausführung nach gen_ai.tool.name |
github.copilot.agent.turn.count | Histogramm | dreht | LLM-Roundtrips pro Agent-Aufruf |
Span-Ereignisse
Lebenszyklusereignisse, die auf der aktiven chat oder invoke_agent Zeitspanne aufgezeichnet werden.
| Ereignis | Beschreibung | Schlüsselattribute |
|---|---|---|
github.copilot.hook.start | Ein 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.
| Merkmal | Wert |
|---|---|
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.
| Merkmal | Content |
|---|---|
gen_ai.input.messages | Vollständige Prompt-Nachrichten (JSON) |
gen_ai.output.messages | Vollständige Antwortnachrichten (JSON) |
gen_ai.system_instructions | Systemaufforderungsinhalt (JSON) |
gen_ai.tool.definitions | Werkzeugschemata (JSON) |
gen_ai.tool.call.arguments | Eingabeargumente des Tools |
gen_ai.tool.call.result | Werkzeugausgabe |