Zum Hauptinhalt springen

Documentation Index

Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt

Use this file to discover all available pages before exploring further.

Mit Hooks kannst du benutzerdefinierte Logik ausführen, wenn Ereignisse im Lebenszyklus des Agenten auftreten. Du kannst Hooks verwenden, um Richtlinien durchzusetzen, Kontext hinzuzufügen, Aktionen zu protokollieren, Berechtigungen zu ändern oder externe Systeme zu integrieren. Devin CLI verwendet ein Hook-Format, das mit Claude Code-Hooks kompatibel ist. Wenn du bereits Hooks für Claude Code konfiguriert hast, funktionieren sie automatisch mit Devin CLI.

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

Legen Sie .devin/hooks.v1.json in Ihrem Projekt an:
{
  "PreToolUse": [
    {
      "matcher": "exec",
      "hooks": [
        {
          "type": "command",
          "command": "./scripts/check-command.sh"
        }
      ]
    }
  ]
}
Dabei wird ./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

Hooks können auf diese Ereignisse im Lebenszyklus reagieren:
EreignisWann es ausgelöst wird
PreToolUseBevor ein Tool ausgeführt wird
PostToolUseNachdem ein Tool beendet wurde
PermissionRequestWenn eine Berechtigungsentscheidung erforderlich ist
UserPromptSubmitWenn der Nutzer eine Nachricht absendet
StopWenn der Agent stoppen möchte
SessionStartWenn eine Sitzung beginnt
SessionEndWenn eine Sitzung endet
Unter Lifecycle Hooks finden Sie Details zu jedem Ereignis und den jeweils verfügbaren Daten.

Hook-Format

Jeder Hook hat einen Typ (command oder prompt), einen optionalen Matcher (Regex auf den tool_name des Hook-Ereignisses) und eine Konfiguration:
{
  "PreToolUse": [
    {
      "matcher": "exec",
      "hooks": [
        {
          "type": "command",
          "command": "./scripts/validate.sh",
          "timeout": 10
        }
      ]
    }
  ]
}
FeldBeschreibung
matcherRegex, 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.
commandAuszuführender Shell-Befehl (für den Typ command).
promptAuszuwertender LLM-Prompt (für den Typ prompt).
timeoutTimeout in Sekunden (optional).

Befehls-Hooks

Befehls-Hooks führen einen Shell-Befehl aus. Ereignisdaten werden als JSON über stdin übergeben, und der Befehl kann über stdout JSON zurückgeben, um das Ergebnis zu steuern. Eingabe (stdin):
{
  "hook_event_name": "PreToolUse",
  "tool_name": "exec",
  "tool_input": {
    "command": "rm -rf /"
  }
}
Ausgabe (stdout — optional):
{
  "decision": "block",
  "reason": "Destructive command blocked by policy"
}
AusgabefeldBeschreibung
decision"approve", "block" oder "deny"
reasonBegründung, die dem Agenten angezeigt wird
Die Umgebungsvariable 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.

Exit-Codes

CodeBedeutung
0Erfolg — Hook wird normal fortgesetzt
2Blockiert — Aktion wird verweigert
AndereFehler — wird protokolliert, blockiert aber nicht

Wo Hooks zu finden sind

Devin CLI liest Hooks aus den folgenden Speicherorten. Alle verwenden dasselbe JSON-Format.

Auf Projektebene

SpeicherortBeschreibung
.devin/hooks.v1.jsonEigenstä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)

PfadBeschreibung
~/.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

Verwenden Sie den Slash-Befehl /hooks, um alle aktuell geladenen Hooks und ihre Quelldateien anzuzeigen:
/hooks

Nächste Schritte

Lifecycle-Hooks

Detaillierte Informationen zu jedem Ereignistyp und den verfügbaren Daten.

Claude Code Hooks-Dokumentation

Vollständige Referenz zum Hook-Format.