Skip to main content

Session-Hooks

Mit hooks können Sie sich in die einzelnen Lebenszyklusphasen einer Copilot-Session einklinken. Tool-Ausführungssteuerung, Audit-Logs, Prompt-Anreicherung, Fehlerbehandlung usw. lassen sich hinzufügen, ohne die Kernimplementierung zu ändern.

Ablauf der Hooks

Grundlegende Verwendung

Verfügbare Hooks

Wird null zurückgegeben, läuft das Standardverhalten weiter.

Typische Anwendungsfälle

1) Berechtigungssteuerung (Ausführungskontrolle)

  • Zulassene Tools per Allow-List über onPreToolUse
  • Destruktive Operationen mit permissionDecision: 'ask' menschlich freigeben lassen
  • Über permissionDecisionReason den Ablehnungsgrund explizit machen
  • Kandidaten für toolName finden Sie in der Liste unter Tools (z. B. view, glob, bash)

2) Auditing / Compliance

  • Audit-Ereignisse durch Kombination der Lebenszyklus-Hooks sammeln
  • Gesammelte Daten pro Session-ID persistieren

3) Prompt-Anreicherung

  • In onSessionStart Projektinformationen (Sprache, Framework, Konventionen) via additionalContext ergänzen
  • In onUserPromptSubmitted Shortcuts (/fix, /test) expandieren

4) Ergebnisfilterung

  • In onPostToolUse API-Keys / Tokens / Passwörter maskieren
  • Zu lange Ergebnisse zusammenfassen und Details nur bei Bedarf ausgeben

5) Fehler-Recovery

  • In onErrorOccurred nur bei model_call und recoverable=true einen retry ausführen
  • Nicht wiederherstellbare Fälle über userNotification knapp an den Nutzer melden

6) Session-Metriken

  • In onSessionStart die Startzeit erfassen
  • In onPreToolUse / onUserPromptSubmitted Zähler aktualisieren
  • In onSessionEnd Dauer, Anzahl der Tool-Aufrufe und Abschlussgrund ausgeben

Hook-Input-/Output-Typen

Gemeinsame Eingabe (BaseHookInput)

PreToolUseHookInput

PreToolUseHookOutput

PostToolUseHookInput

PostToolUseHookOutput

UserPromptSubmittedHookInput

UserPromptSubmittedHookOutput

SessionStartHookInput

SessionStartHookOutput

SessionEndHookInput

SessionEndHookOutput

ErrorOccurredHookInput

ErrorOccurredHookOutput

ToolResultObject

Standard-Objekt für Tool-Ausführungsergebnisse.

Best Practices

  1. Führen Sie schwere synchrone Verarbeitung nicht direkt im Hook aus. Bei Bedarf asynchron auslagern.
  2. Wenn keine Änderung nötig ist, geben Sie null zurück und überlassen den Standardablauf.
  3. Setzen Sie permissionDecision möglichst explizit.
  4. Unterdrücken Sie kritische Fehler nicht zu stark – halten Sie Log-/Notification-Pfade offen.
  5. Verwalten Sie Session-bezogenen Zustand auf Basis der Session-ID und räumen Sie ihn in onSessionEnd auf.
Aktuelle Informationen finden Sie im GitHub-Repository.
Zuletzt geändert am 13. Juli 2026