.devin/-Verzeichnis deines Projekts ab (oder in einer Konfiguration auf Nutzerebene), und Devin CLI führt sie bei passenden Lifecycle-Ereignissen aus. Vorhandene Hooks in .claude/-Verzeichnissen werden ebenfalls automatisch erkannt — siehe Wo Hooks zu finden sind.
Was können Hooks tun?
Richtlinien durchsetzen
Gefährliche Befehle blockieren, für bestimmte Aktionen eine Bestätigung verlangen oder den Zugriff auf Dateien einschränken.
Kontext hinzufügen
Zusätzliche Anweisungen oder Informationen einfügen, wenn bestimmte Tools aufgerufen werden.
Folgeaktionen ausführen
Skripte ausführen, Benachrichtigungen senden oder Ereignisse protokollieren, wenn etwas geschieht.
Berechtigungen ändern
Berechtigungen je nach Situation dynamisch gewähren oder einschränken.
Kurzes Beispiel
.devin/hooks.v1.json in Ihrem Projekt an:
./scripts/check-command.sh vor jeder Ausführung eines Shell-Befehls ausgeführt. Das Skript erhält Ereignisdaten über stdin und kann die Aktion blockieren, indem es einen Exit-Code ungleich null zurückgibt.
Hook-Ereignisse
| Ereignis | Wann es ausgelöst wird |
|---|---|
PreToolUse | Bevor ein Tool ausgeführt wird |
PostToolUse | Nachdem ein Tool beendet wurde |
PermissionRequest | Wenn eine Berechtigungsentscheidung erforderlich ist |
UserPromptSubmit | Wenn der Nutzer eine Nachricht absendet |
Stop | Wenn der Agent stoppen möchte |
SessionStart | Wenn eine Sitzung beginnt |
SessionEnd | Wenn eine Sitzung endet |
Hook-Format
command oder prompt), einen optionalen Matcher (Regex auf den tool_name des Hook-Ereignisses) und eine Konfiguration:
| Feld | Beschreibung |
|---|---|
matcher | Regex, die mit dem tool_name des Hook-Ereignisses abgeglichen wird. Eine leere Zeichenfolge oder ein weggelassener Matcher passt auf alle Tool-Namen. |
type | "command" zum Ausführen eines Shell-Befehls oder "prompt" zum Auswerten eines LLM-Prompts. |
command | Auszuführender Shell-Befehl (für den Typ command). |
prompt | Auszuwertender LLM-Prompt (für den Typ prompt). |
timeout | Timeout in Sekunden (optional). |
Befehls-Hooks
DEVIN_PROJECT_DIR wird automatisch auf das Projektstammverzeichnis gesetzt.
Unter Using the Matcher finden Sie die integrierten Tool-Namen und das MCP-Tool-Namensformat, nach denen Sie abgleichen können.
Ausgabeformat
decision-Feld auf oberster Ebene zurück (mit einem optionalen reason):
additionalContext in einem hookSpecificOutput-Objekt zurück, das mit dem Ereignisnamen versehen ist:
| Ausgabefeld | Beschreibung |
|---|---|
decision | "approve", um die Aktion zuzulassen, oder "block", um sie zu blockieren |
reason | Erklärung, die dem Agenten angezeigt wird |
hookSpecificOutput.hookEventName | Ereignis, für das die Ausgabe gilt (z. B. UserPromptSubmit, SessionStart, PostToolUse) |
hookSpecificOutput.additionalContext | Text, der in den Kontext des Agenten eingefügt wird (für UserPromptSubmit, SessionStart, PostToolUse) |
Exit-Codes
| Code | Bedeutung |
|---|---|
| 0 | Erfolg — Hook wird normal fortgesetzt |
| 2 | Blockiert — Aktion wird verweigert |
| Andere | Fehler — wird protokolliert, blockiert aber nicht |
Wo Hooks zu finden sind
Auf Projektebene
| Speicherort | Beschreibung |
|---|---|
.devin/hooks.v1.json | Eigenständige Hooks-Datei (empfohlen) |
.devin/config.json | "hooks"-Schlüssel in der Konfigurationsdatei |
.devin/config.local.json | "hooks"-Schlüssel (lokale Überschreibung, gitignored) |
.claude/settings.json | "hooks"-Schlüssel (Claude-Code-Format) |
.claude/settings.local.json | "hooks"-Schlüssel (Claude-Code-Format) |
Nutzerebene (global)
| Pfad | Beschreibung |
|---|---|
~/.config/devin/config.json (%APPDATA%\devin\config.json unter Windows) | "hooks"-Schlüssel in der Nutzerkonfiguration |
~/.claude.json | "hooks"-Schlüssel (Claude Code-Format) |
~/.claude/settings.json | "hooks"-Schlüssel (Claude Code-Format) |
~/.claude/settings.local.json | "hooks"-Schlüssel (Claude Code-Format) |
In
.devin/hooks.v1.json ist das Hooks-Objekt die gesamte Datei (kein umschließender Schlüssel erforderlich). An allen anderen Speicherorten sind Hooks in einer Settings-Datei unter dem "hooks"-Schlüssel verschachtelt.Hooks aus
.claude/-Pfaden werden geladen, wenn read_config_from.claude aktiviert ist (Standardeinstellung). Bei Bedarf kannst du dies in deiner Nutzerkonfiguration deaktivieren.Hooks überprüfen
/hooks, um alle aktuell geladenen Hooks und ihre Quelldateien anzuzeigen:
Nächste Schritte
Lifecycle Hooks
Detaillierte Informationen zu jedem Ereignistyp und den verfügbaren Daten.
Konfiguration
Legen Sie fest, aus welchen Konfigurationsorten Devin CLI Hooks liest.

