{"meta":{"title":"Anpassen von Agentworkflows mit Hooks","intro":"Führen Sie automatisierte Überprüfungen ( z. B. Linting, Formatierung oder Sicherheitsüberprüfungen ) an wichtigen Punkten während der Agentausführung aus, um Qualitätsstandards durchzusetzen.","product":"GitHub Copilot","breadcrumbs":[{"href":"/de/copilot","title":"GitHub Copilot"},{"href":"/de/copilot/how-tos","title":"Vorgehensweisen"},{"href":"/de/copilot/how-tos/copilot-on-github","title":"Copilot auf GitHub"},{"href":"/de/copilot/how-tos/copilot-on-github/customize-copilot","title":"Anpassen Copilot"},{"href":"/de/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent","title":"Anpassen cloud agent"},{"href":"/de/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/use-hooks","title":"Verwenden Sie Hooks"}],"documentType":"article"},"body":"# Anpassen von Agentworkflows mit Hooks\n\nFühren Sie automatisierte Überprüfungen ( z. B. Linting, Formatierung oder Sicherheitsüberprüfungen ) an wichtigen Punkten während der Agentausführung aus, um Qualitätsstandards durchzusetzen.\n\nHooks ermöglichen es Ihnen, das Verhalten von GitHub Copilot Agents zu erweitern und anzupassen, indem Sie benutzerdefinierte Shellbefehle an wichtigen Stellen während der Agentausführung ausführen. Eine konzeptionelle Übersicht über Hooks – einschließlich Details zu den verfügbaren Hook-Triggern – finden Sie unter [Informationen zu Hooks für GitHub Copilot](/de/copilot/concepts/agents/hooks).\n\n## Erstellen eines Hooks in einem Repository auf GitHub\n\n1. Erstellen Sie eine neue `NAME.json`-Datei (wobei `NAME` den Zweck der Datei beschreibt) im Ordner `.github/hooks/` Ihres Repositorys.\n\n   > \\[!IMPORTANT]\n   > Die Hooks-Konfigurationsdatei **muss vorhanden sein** in der Standardverzweigung Ihres Repositorys, um von Copilot cloud agent verwendet zu werden.\n\n2. Kopieren Sie in Ihrem Text-Editor die folgende Hook-Vorlage, und fügen Sie sie ein. Entfernen Sie alle Hooks, die Sie nicht aus dem `hooks` Array verwenden möchten.\n\n   ```json copy\n   {\n     \"version\": 1,\n     \"hooks\": {\n       \"sessionStart\": [...],\n       \"sessionEnd\": [...],\n       \"userPromptSubmitted\": [...],\n       \"preToolUse\": [...],\n       \"postToolUse\": [...],\n       \"errorOccurred\": [...]\n     }\n   }\n   ```\n\n3. Konfigurieren Sie Ihre Hook-Syntax unter den Schlüsseln `bash` und `powershell`, oder referenzieren Sie direkt Skriptdateien, die Sie erstellt haben.\n\n   > \\[!NOTE]\n   > Schließen Sie sowohl einen `bash`-Schlüssel (mit einem Skript für Linux und macOS) als auch einen `powershell`-Schlüssel (für ein Skript für Windows) ein, damit die Hooks auf allen drei Betriebssystemen ausgeführt werden können.\n   > Copilot verwendet den entsprechenden Schlüssel basierend auf dem Betriebssystem des Benutzers.\n\n   * In diesem Beispiel wird ein Skript ausgeführt, das das Startdatum der Sitzung mithilfe des `sessionStart` Hooks in eine Protokolldatei ausgibt:\n\n     ```json copy\n     \"sessionStart\": [\n       {\n         \"type\": \"command\",\n         \"bash\": \"echo \\\"Session started: $(date)\\\" >> logs/session.log\",\n         \"powershell\": \"Add-Content -Path logs/session.log -Value \\\"Session started: $(Get-Date)\\\"\",\n         \"cwd\": \".\",\n         \"timeoutSec\": 10\n       }\n     ],\n     ```\n\n   * In diesem Beispiel wird ein externes `log-prompt` Skript aufgerufen:\n\n     ```json copy\n     \"userPromptSubmitted\": [\n       {\n         \"type\": \"command\",\n         \"bash\": \"./scripts/log-prompt.sh\",\n         \"powershell\": \"./scripts/log-prompt.ps1\",\n         \"cwd\": \"scripts\",\n         \"env\": {\n           \"LOG_LEVEL\": \"INFO\"\n         }\n       }\n     ],\n     ```\n\n     Eine vollständige Referenz zu den Eingabe-JSON aus Agentsitzungen sowie Beispielskripts finden Sie unter [GitHub Copilot-Hooks-Referenz](/de/copilot/reference/hooks-reference).\n\n4. Commit die Datei in das Repository und füge sie in den Standard Branch ein. Ihre Hooks werden jetzt während Agentsitzungen ausgeführt.\n\n## Troubleshooting\n\nWenn Probleme bei der Verwendung von Hooks auftreten, verwenden Sie die folgende Tabelle, um Probleme zu beheben.\n\n| Thema                         | Action                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |\n| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Hooks werden nicht ausgeführt | <ul><li>Überprüfen Sie, ob sich die JSON-Datei im `.github/hooks/` Verzeichnis befindet.</li><li>Überprüfen Sie die gültige JSON-Syntax (z. B `jq .  hooks.json`. ).</li><li>Stellen Sie sicher, dass `version: 1` in Ihrer `hooks.json`-Datei angegeben ist.</li><li>Vergewissern Sie sich, dass das Skript, das Sie von Ihrem Hook aufrufen, ausführbar ist (`chmod +x script.sh`)</li><li>Überprüfen Sie, ob das Skript über einen richtigen Shebang verfügt (z. B. `#!/bin/bash`).</li></ul> |\n| Hooks laufen ab               | <ul><li>Der Standardzeitraum bis zum Timeout beträgt 30 Sekunden. Erhöhen Sie `timeoutSec` in der Konfiguration bei Bedarf.</li><li>Optimieren Sie die Skriptleistung, indem Sie unnötige Vorgänge vermeiden.</li></ul>                                                                                                                                                                                                                                                                          |\n| Ungültige JSON-Ausgabe        | <ul><li>Stellen Sie sicher, dass sich die Ausgabe in einer einzelnen Zeile befindet.</li><li>Um auf Unix die JSON-Ausgabe zu komprimieren und zu validieren, verwenden Sie `jq -c`.</li><li>Verwenden Sie auf Windows den Befehl `ConvertTo-Json -Compress` in PowerShell, um dasselbe zu tun.</li></ul>                                                                                                                                                                                         |\n\n## Fehlersuche\n\nSie können Hooks mit den folgenden Methoden debuggen:\n\n* **Aktivieren Sie die ausführliche Protokollierung** im Skript, um die Eingabedaten zu überprüfen und die Skriptausführung nachzuverfolgen.\n\n  ```shell copy\n  #!/bin/bash\n  set -x  # Enable bash debug mode\n  INPUT=$(cat)\n  echo \"DEBUG: Received input\" >&2\n  echo \"$INPUT\" >&2\n  # ... rest of script\n  ```\n\n* **Testen Sie Hooks lokal**, indem Sie die Testeingaben in Ihre Hooks weiterleiten, um ihr Verhalten zu überprüfen.\n\n  ```shell copy\n  # Create test input\n  echo '{\"timestamp\":1704614400000,\"cwd\":\"/tmp\",\"toolName\":\"bash\",\"toolArgs\":\"{\\\"command\\\":\\\"ls\\\"}\"}' | ./my-hook.sh\n\n  # Check exit code\n  echo $?\n\n  # Validate output is valid JSON\n  ./my-hook.sh | jq .\n  ```\n\n## Weiterführende Lektüre\n\n* [GitHub Copilot-Hooks-Referenz](/de/copilot/reference/hooks-reference)\n* [Informationen zu GitHub Copilot Cloud-Agent](/de/copilot/concepts/agents/cloud-agent/about-cloud-agent)\n* [Informationen zu GitHub Copilot CLI](/de/copilot/concepts/agents/copilot-cli/about-copilot-cli)\n* [Konfigurieren der Entwicklungsumgebung](/de/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-environment)"}