Hooks sind für Power-User und Enterprise-Teams konzipiert, die eine fein abgestimmte Kontrolle über das Verhalten von Cascade benötigen. Sie erfordern grundlegende Kenntnisse in Shell-Scripting.
Was Sie bauen können
- Protokollierung & Analytics: Verfolgen Sie jede gelesene Datei, jede Codeänderung, jeden ausgeführten Befehl, jede Nutzereingabe oder jede Cascade-Antwort für Compliance- und Nutzungsanalysen
- Sicherheitskontrollen: Verhindern Sie, dass Cascade auf sensible Dateien zugreift, gefährliche Befehle ausführt oder Prompts verarbeitet, die gegen Richtlinien verstoßen
- Qualitätssicherung: Führen Sie nach Codeänderungen automatisch Linter, Formatter oder Tests aus
- Benutzerdefinierte Workflows: Integrieren Sie Issue-Tracker, Benachrichtigungssysteme oder Deployment-Pipelines
- Team-Standardisierung: Setzen Sie Coding-Standards und Best Practices in Ihrer Organisation durch
Funktionsweise von Hooks
- Erhält Kontext (Details zur ausgeführten Aktion) über JSON über die Standardeingabe
- Führt Ihr Skript aus – Python, Bash, Node.js oder jede andere ausführbare Datei
- Gibt ein Ergebnis zurück über Rückgabecode und Ausgabeströme
2 beendet wird. Dadurch eignen sich Pre-Hooks ideal zur Umsetzung von Sicherheitsrichtlinien oder Validierungsprüfungen.
Konfiguration
Systemebene
- macOS:
/Library/Application Support/Windsurf/hooks.json - Linux/WSL:
/etc/windsurf/hooks.json - Windows:
C:\ProgramData\Windsurf\hooks.json
Benutzerebene
- Windsurf-IDE:
~/.codeium/windsurf/hooks.json - JetBrains-Plugin:
~/.codeium/hooks.json
Auf Workspace-Ebene
- Speicherort:
.windsurf/hooks.jsonim Workspace-Root
Hooks aus allen drei Speicherorten werden zusammengeführt. Wenn dasselbe Hook-Ereignis an mehreren Speicherorten konfiguriert ist, werden alle Hooks in folgender Reihenfolge ausgeführt: System → Benutzer → Workspace.
Grundstruktur
Konfigurationsoptionen
Zum Parameter
working_directory:- In Multi-Repo-Workspaces ist die Standardeinstellung das Root-Verzeichnis des Repos, an dem aktuell gearbeitet wird
- Relative Pfade werden ausgehend vom Standardpfad (Workspace- oder Repo-Root) aufgelöst
- Absolute Pfade werden unterstützt
- Die Verwendung von
~für die Erweiterung des Home-Verzeichnisses wird nicht unterstützt
Hook-Ereignisse
Gemeinsame Eingabestruktur
In den folgenden Beispielen werden die gemeinsamen Felder der Übersichtlichkeit halber weggelassen. Es gibt zwölf Haupttypen von Hook-Ereignissen:
pre_read_code
file_path kann ein Verzeichnispfad sein, wenn Cascade ein Verzeichnis rekursiv einliest.
post_read_code
file_path kann ein Verzeichnispfad sein, wenn Cascade ein Verzeichnis rekursiv einliest.
pre_write_code
post_write_code
pre_run_command
post_run_command
pre_mcp_tool_use
post_mcp_tool_use
pre_user_prompt
show_output gilt für diesen Hook nicht.
post_cascade_response
response enthält den in Markdown formatierten Inhalt der Antwort von Cascade seit der letzten Benutzereingabe. Dies umfasst Planner-Antworten, Tool-Aktionen (Datei-Lese- und -Schreibvorgänge, Commands) und alle anderen Schritte, die Cascade ausgeführt hat. Es enthält außerdem Informationen darüber, welche rules ausgelöst wurden. Siehe das Beispiel Tracking Triggered Rules, um zu erfahren, wie Sie die Nutzung von Regeln auswerten können.
Die Konfigurationsoption show_output gilt nicht für diesen Hook.
response enthält den in Markdown formatierten Inhalt der Antwort von Cascade seit der letzten Benutzereingabe. Dies umfasst Planner-Antworten, Tool-Aktionen (Datei-Lese- und -Schreibvorgänge, Commands) und alle anderen Schritte, die Cascade ausgeführt hat. Es enthält außerdem Informationen darüber, welche rules ausgelöst wurden. Siehe das Beispiel Tracking Triggered Rules, um zu erfahren, wie Sie die Nutzung von Regeln auswerten können.
Die Konfigurationsoption show_output gilt nicht für diesen Hook.
post_cascade_response_with_transcript
post_cascade_response. Anstatt eine Markdown-Zusammenfassung inline bereitzustellen, schreibt dieser Hook das vollständige Gesprächstranskript (vom Beginn der Unterhaltung an) in eine lokale JSONL-Datei und gibt den Dateipfad zurück.
Anwendungsfälle: Enterprise-Audit- und Compliance-Protokollierung, Nachverfolgung von KI-generierten Beiträgen, Einspeisen von Transkripten in externe Observability- oder Analytics-Tools
Eingabe-JSON:
transcript_path verweist auf eine JSONL-Datei unter ~/.windsurf/transcripts/{trajectory_id}.jsonl. Jede Zeile ist ein JSON-Objekt, das einen einzelnen Schritt in der Konversation darstellt, mit den Feldern type und status sowie schrittspezifischen Daten. Zum Beispiel:
0600-Berechtigungen geschrieben. Windsurf begrenzt das Transkriptverzeichnis automatisch auf 100 Dateien und entfernt die ältesten anhand der Änderungszeit.
Die Konfigurationsoption show_output gilt nicht für diesen Hook.
Diese Tabelle zeigt die wichtigsten Unterschiede zwischen den Hooks post_cascade_response und post_cascade_response_with_transcript:
post_setup_worktree
.env-Dateien oder andere unversionierte Dateien in den Worktree kopieren, Abhängigkeiten installieren, Setup-Skripte ausführen
Umgebungsvariablen:
Eingabe-JSON:
Exit Codes
Beachten Sie, dass der Nutzer jede vom Hook erzeugte Standardausgabe und jeden Standardfehler in der Cascade-UI sehen kann, wenn
show_output auf true gesetzt ist.
Anwendungsbeispiele
Protokollierung aller Cascade-Aktionen
log_input.py):
Dateizugriff einschränken
block_read_access.py):
Gefährliche Commands blockieren
block_dangerous_commands.py):
Blockieren von richtlinienwidrigen Prompts
block_bad_prompts.py):
Cascade-Antworten protokollieren
log_cascade_response.py):
Ausgelöste Regeln nachverfolgen
track_rules.py):
Always On- Regeln, die immer aktiv sindModel Decision- Regeln, deren Beschreibungen dem AI-Modell zur bedingten Anwendung angezeigt wurdenManual- Regeln, die explizit per @-Mention in der Benutzereingabe erwähnt werdenGlobal- Globale Regeln ausglobal_rules.mdGlob- Regeln, die durch Dateizugriff mit passenden Glob-Mustern ausgelöst werden
Dies erfasst, welche Regeln dem AI-Modell präsentiert oder durch Dateizugriff ausgelöst wurden, zeigt aber nicht an, ob das AI-Modell einer Regel tatsächlich gefolgt ist. Regeln, die kürzlich bereits im Gespräch angezeigt wurden, werden dedupliziert (Duplikate entfernt) und erscheinen möglicherweise erst später erneut.
Code-Formatter nach Änderungen ausführen
format_code.sh):
Worktrees einrichten
.windsurf/hooks.json):
hooks/setup_worktree.sh):
Bewährte Praktiken
Sicherheit
- Alle Eingaben validieren: Vertrauen Sie niemals dem Eingabe-JSON ohne Validierung, insbesondere bei Dateipfaden und Befehlen.
- Absolute Pfade verwenden: Verwenden Sie in Ihren Hook-Konfigurationen stets absolute Pfade, um Mehrdeutigkeiten zu vermeiden.
- Sensible Daten schützen: Vermeiden Sie das Protokollieren sensibler Informationen wie API-Schlüssel oder Anmeldedaten.
- Berechtigungen überprüfen: Stellen Sie sicher, dass Ihre Hook-Skripte geeignete Dateisystemberechtigungen haben.
- Vor der Bereitstellung prüfen: Überprüfen Sie jeden Hook-Befehl und jedes Skript, bevor Sie es Ihrer Konfiguration hinzufügen.
- Isoliert testen: Führen Sie Hooks zuerst in einer Testumgebung aus, bevor Sie sie auf Ihrem primären Entwicklungsrechner aktivieren.
Performance-Aspekte
- Hooks schnell halten: Langsame Hooks beeinträchtigen die Reaktionsfähigkeit von Cascade. Streben Sie Ausführungszeiten unter 100 ms an.
- Asynchrone Vorgänge nutzen: Für nicht blockierende Hooks sollten Protokollierungen asynchron in eine Warteschlange (Queue) oder eine Datenbank erfolgen.
- Früh filtern: Prüfen Sie den Aktionstyp gleich zu Beginn Ihres Skripts, um unnötige Verarbeitung zu vermeiden.
Fehlerbehandlung
- JSON immer validieren: Verwenden Sie try-catch-Blöcke, um fehlerhafte Eingaben robust zu behandeln.
- Fehler korrekt protokollieren: Schreiben Sie Fehler auf
stderr, damit sie sichtbar sind, wennshow_outputaktiviert ist. - Sicher ausfallen: Wenn Ihr Hook auf einen Fehler stößt, prüfen Sie, ob er die Aktion blockieren oder sie fortsetzen lassen sollte.
Testen Ihrer Hooks
- Mit Logging starten: Implementieren Sie zunächst einen einfachen Logging-Hook, um den Datenfluss nachzuvollziehen.
show_output: trueverwenden: Aktivieren Sie während der Entwicklung die Ausgabe, um zu sehen, was Ihre Hooks machen.- Blockierverhalten testen: Stellen Sie sicher, dass Exit-Code 2 Aktionen in Pre-Hooks ordnungsgemäß blockiert.
- Alle Codepfade prüfen: Testen Sie sowohl Erfolgs- als auch Fehlerfälle in Ihren Skripten.
Enterprise-Verteilung
- Cloud Dashboard – Konfigurieren Sie Hooks über die Team Settings im Windsurf-Dashboard
- System-Level Files – Verteilen Sie Hooks über MDM- oder Konfigurationsmanagement-Tools
Konfiguration im Cloud-Dashboard
- Enterprise-Plan
TEAM_SETTINGS_UPDATE-Berechtigung
- Navigieren Sie im Windsurf-Dashboard zu Team Settings
- Suchen Sie den Abschnitt Cascade Hooks
- Geben Sie Ihre Hooks-Konfiguration im JSON-Format ein
- Speichern Sie Ihre Änderungen
Wenn mehrere Teamkonfigurationen zusammengeführt werden, werden Hooks pro Aktion kombiniert, anstatt überschrieben zu werden. Das bedeutet, dass Hooks aus allen zutreffenden Teamkonfigurationen gemeinsam ausgeführt werden.
Systemweite Dateibereitstellung
hooks.json-Konfiguration an diesen betriebssystemspezifischen Speicherorten bereit:
macOS:
/usr/local/share/windsurf-hooks/ auf Unix-Systemen).
Systemweite Hooks haben Vorrang vor Benutzer- und Workspace-Hooks und können von Endnutzern ohne Root-Rechte nicht deaktiviert werden.
MDM und Konfigurationsmanagement
- Jamf Pro (macOS) - Bereitstellung über Konfigurationsprofile oder Skripte
- Microsoft Intune (Windows/macOS) - per PowerShell-Skripten oder Richtlinienbereitstellung
- Workspace ONE, Google Endpoint Management und andere MDM-Lösungen
- Ansible, Puppet, Chef, SaltStack - Nutzen Sie Ihre bestehende Infrastrukturautomatisierung
- Benutzerdefinierte Bereitstellungsskripte - Shell-Skripte, PowerShell oder Ihre bevorzugten Tools
Verifizierung und Auditing
Wichtig: Systemweite Hooks werden vollständig von Ihrem IT- oder Sicherheitsteam verwaltet. Windsurf installiert oder verwaltet keine Dateien in systemweiten Pfaden. Stellen Sie sicher, dass Ihre internen Teams Bereitstellung, Updates und Compliance gemäß den Richtlinien Ihrer Organisation übernehmen.
Workspace-Hooks für Teamprojekte
Zusätzliche Ressourcen
- MCP-Integration: Erfahren Sie mehr über das Model Context Protocol in Windsurf
- Workflows: Erfahren Sie, wie Sie Hooks mit Cascade Workflows kombinieren können
- Analytics: Verfolgen Sie die Nutzung von Cascade mit Team Analytics