Hooks sind für fortgeschrittene Nutzer und Enterprise-Teams konzipiert, die eine granulare Kontrolle über das Verhalten von Cascade benötigen. Sie erfordern grundlegende Kenntnisse im Shell-Scripting.
Was Sie damit umsetzen können
- Protokollierung & Analysen: Erfassen Sie jede gelesene Datei, jede Codeänderung, jeden ausgeführten Befehl, jeden Nutzer-Prompt und jede Cascade-Antwort für Compliance- und Nutzungsanalysen
- Sicherheitskontrollen: Verhindern Sie, dass Cascade auf sensible Dateien zugreift, gefährliche Befehle ausführt oder gegen Richtlinien verstoßende Prompts verarbeitet
- Qualitätssicherung: Führen Sie Linter, Formatter oder Tests nach Codeänderungen automatisch aus
- Benutzerdefinierte Workflows: Integrieren Sie Issue-Tracker, Benachrichtigungssysteme oder Deployment-Pipelines
- Standardisierung im Team: Setzen Sie Coding-Standards und Best Practices in Ihrer Organisation durch
So funktionieren Hooks
- Erhält Kontextinformationen (Details zur ausgeführten Aktion) über JSON als Standardeingabe
- Führt Ihr Skript aus – Python, Bash, Node.js oder jedes andere ausführbare Programm
- Gibt ein Ergebnis zurück über den Exit-Code und die Ausgabeströme
2 beendet. Dadurch eignen sich Pre-Hooks ideal für die Umsetzung von Sicherheitsrichtlinien oder Validierungen.
Konfiguration
Auf Systemebene
- macOS:
/Library/Application Support/Windsurf/hooks.json - Linux/WSL:
/etc/windsurf/hooks.json - Windows:
C:\ProgramData\Windsurf\hooks.json
Nutzerebene
- Devin Desktop IDE:
~/.codeium/windsurf/hooks.json - JetBrains-Plugin:
~/.codeium/hooks.json
Workspace-Ebene
- Ort:
.windsurf/hooks.jsonim Workspace-Stammverzeichnis
Hooks aus allen drei Orten werden zusammengeführt. Wenn dasselbe Hook-Ereignis an mehreren Orten konfiguriert ist, werden alle Hooks in der folgenden Reihenfolge ausgeführt: System → Nutzer → Workspace.
Grundstruktur
pre_read_code sowohl einen Befehl für macOS/Linux als auch einen Windows-PowerShell-Befehl an. Der Hook post_write_code gibt nur command an und wird daher unter macOS/Linux ausgeführt; unter Windows wird stattdessen PowerShell verwendet.
Konfigurationsoptionen
Plattformübergreifendes Verhalten
command und powershell können Sie in einer einzigen Konfiguration plattformspezifische Befehle definieren. Das ist nützlich für Teams mit gemischten macOS-/Linux- und Windows-Umgebungen.
Zum Parameter
working_directory:- In Workspaces mit mehreren Repos ist das Standardverzeichnis das Stammverzeichnis des Repos, an dem gerade gearbeitet wird
- Relative Pfade beziehen sich auf den Standardspeicherort (Workspace- oder Repo-Stammverzeichnis)
- Absolute Pfade werden unterstützt
- Die Auflösung von
~zum Home-Verzeichnis wird nicht unterstützt
Hook-Ereignisse
Gemeinsame Eingabestruktur
In den folgenden Beispielen werden die gemeinsamen Felder der Kürze halber weggelassen. Es gibt zwölf Haupttypen von Hook-Ereignissen:
pre_read_code
file_path kann auch 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 nicht für diesen Hook.
post_cascade_response
response enthält den in Markdown formatierten Inhalt von Cascades Antwort seit der letzten Nutzereingabe. Dazu gehören Antworten des Planners, Tool-Aktionen (Dateilesevorgänge, Schreibvorgänge, Befehle) sowie alle anderen Schritte, die Cascade ausgeführt hat. Es enthält außerdem Informationen darüber, welche Regeln ausgelöst wurden. Im Beispiel Tracking Triggered Rules sehen Sie, wie Sie die Nutzung von Regeln auswerten.
Die Konfigurationsoption show_output gilt nicht für diesen Hook.
post_cascade_response_with_transcript
post_cascade_response. Statt inline eine Markdown-Zusammenfassung bereitzustellen, schreibt dieser Hook das vollständige Transkript der Unterhaltung (vom Beginn der Unterhaltung an) in eine lokale JSONL-Datei und gibt den Dateipfad zurück.
Anwendungsfälle: Audit- und Compliance-Protokollierung für Enterprise, Nachverfolgung KI-generierter Beiträge, Einspeisung 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 Unterhaltung darstellt, mit den Feldern type und status sowie schrittspezifischen Daten. Zum Beispiel:
0600 geschrieben. Devin Desktop begrenzt das Transkriptverzeichnis automatisch auf 100 Dateien und entfernt die ältesten anhand des Änderungszeitpunkts.
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 nicht versionierte Dateien in den Worktree kopieren, Abhängigkeiten installieren, Setup-Skripte ausführen
Umgebungsvariablen:
Eingabe-JSON:
Exit-Codes
Beachten Sie, dass der Nutzer jede von Hooks erzeugte Standardausgabe und Standardfehlerausgabe in der Cascade-UI sehen kann, wenn
show_output auf true gesetzt ist.
Beispielhafte Anwendungsfälle
Protokollierung aller Cascade-Aktionen
log_input.py):
Dateizugriff einschränken
block_read_access.py):
Gefährliche Befehle blockieren
block_dangerous_commands.py):
Blockieren von Prompts, die gegen Richtlinien verstoßen
block_bad_prompts.py):
Protokollierung von Cascade-Antworten
log_cascade_response.py):
Nachverfolgen ausgelöster Regeln
track_rules.py):
Always On- Regeln, die immer einbezogen werdenModel Decision- Regeln, deren Beschreibungen dem Modell zur bedingten Anwendung angezeigt wurdenManual- Regeln, die in der Nutzereingabe explizit mit @ erwähnt wurdenGlobal- Globale Regeln ausglobal_rules.mdGlob- Regeln, die durch Dateizugriffe ausgelöst werden, die mit Glob-Mustern übereinstimmen
Dies erfasst, welche Regeln dem Modell präsentiert oder durch Dateizugriff ausgelöst wurden, gibt jedoch nicht an, ob das Modell eine Regel tatsächlich befolgt hat. Regeln, die in der Unterhaltung vor Kurzem bereits angezeigt wurden, werden dedupliziert 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 Methoden
Sicherheit
- Alle Eingaben validieren: Vertrauen Sie Eingabe-JSON niemals, ohne sie zu validieren, insbesondere bei Dateipfaden und Befehlen.
- Absolute Pfade verwenden: Verwenden Sie in Ihren Hook-Konfigurationen immer absolute Pfade, um Unklarheiten zu vermeiden.
- Sensible Daten schützen: Vermeiden Sie das Protokollieren sensibler Informationen wie API-Schlüsseln oder Zugangsdaten.
- Berechtigungen überprüfen: Stellen Sie sicher, dass Ihre Hook-Skripte über geeignete Dateisystemberechtigungen verfügen.
- Vor dem Deployment prüfen: Überprüfen Sie jeden Hook-Befehl und jedes Skript, bevor Sie sie zu Ihrer Konfiguration hinzufügen.
- Isoliert testen: Führen Sie Hooks in einer Testumgebung aus, bevor Sie sie auf Ihrem primären Entwicklungsrechner aktivieren.
Performance-Hinweise
- Hooks schnell halten: Langsame Hooks beeinträchtigen die Reaktionsfähigkeit von Cascade. Ziel sollten Ausführungszeiten von unter 100 ms sein.
- Asynchrone Vorgänge verwenden: Bei nicht blockierenden Hooks sollten Sie die Protokollierung asynchron in eine Warteschlange oder Datenbank schreiben.
- Früh filtern: Prüfen Sie den Aktionstyp direkt zu Beginn Ihres Skripts, um unnötige Verarbeitung zu vermeiden.
Fehlerbehandlung
- JSON immer prüfen: Verwende Try-Catch-Blöcke, um fehlerhafte Eingaben robust zu behandeln.
- Fehler korrekt protokollieren: Schreibe Fehler in
stderr, damit sie sichtbar sind, wennshow_outputaktiviert ist. - Sicher fehlschlagen: Wenn dein Hook auf einen Fehler stößt, überlege, ob er die Aktion blockieren oder fortfahren lassen sollte.
Ihre Hooks testen
- Beginnen Sie mit Logging: Implementieren Sie zunächst einen einfachen Logging-Hook, um den Datenfluss besser zu verstehen.
- Verwenden Sie
show_output: true: Aktivieren Sie während der Entwicklung die Ausgabe, damit Sie sehen, was Ihre Hooks tun. - Testen Sie das Blockierverhalten: Stellen Sie sicher, dass Exit-Code 2 in Pre-Hooks Aktionen ordnungsgemäß blockiert.
- Prüfen Sie alle Codepfade: Testen Sie in Ihren Skripten sowohl Erfolgs- als auch Fehlerszenarien.
Verteilung in Enterprise-Umgebungen
- Cloud-Dashboard - Konfigurieren Sie Hooks über Team Settings im Devin Desktop-Dashboard
- Dateien auf Systemebene - Stellen Sie Hooks über MDM oder Konfigurationsmanagement-Tools bereit
Konfiguration im Cloud-Dashboard
- Enterprise-Plan
- Berechtigung
TEAM_SETTINGS_UPDATE
- Navigieren Sie im Devin Desktop-Dashboard zu Team Settings
- Suchen Sie den Abschnitt Cascade Hooks
- Geben Sie Ihre Hook-Konfiguration im JSON-Format ein
- Speichern Sie Ihre Änderungen
Wenn mehrere Team-Konfigurationen zusammengeführt werden, werden Hooks pro Aktion kombiniert, statt überschrieben zu werden. Das bedeutet, dass Hooks aus allen zutreffenden Team-Konfigurationen gemeinsam ausgeführt werden.
Bereitstellung von Dateien auf Systemebene
hooks.json-Konfiguration an diesen betriebssystemspezifischen Speicherorten bereit:
macOS:
/usr/local/share/windsurf-hooks/ auf Unix-Systemen).
Hooks auf Systemebene haben Vorrang vor Nutzer- 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) - Bereitstellung per PowerShell-Skripten oder Richtlinien
- 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 andere Tools Ihrer Wahl
Überprüfung und Auditierung
Wichtig: Hooks auf Systemebene werden vollständig von Ihrem IT- oder Sicherheitsteam verwaltet. Devin Desktop legt keine Dateien in systemweiten Pfaden ab und verwaltet sie dort auch nicht. Stellen Sie sicher, dass Ihre internen Teams Bereitstellung, Updates und Compliance gemäß den Richtlinien Ihrer Organisation übernehmen.
Workspace-Hooks für Team-Projekte
Zusätzliche Ressourcen
- MCP-Integration: Erfahren Sie mehr über das Model Context Protocol in Devin Desktop
- Workflows: Erfahren Sie, wie sich Hooks mit Cascade Workflows kombinieren lassen
- Analytics: Verfolgen Sie die Nutzung von Cascade mit Team Analytics

