Was sind Claude Code Hooks? Shell-Befehle deterministisch ausführen
Claude Code Hooks sind benutzerdefinierte Shell-Befehle, die an bestimmten Punkten im Lebenszyklus von Claude Code automatisch laufen und machen "das muss immer passieren" real und deterministisch, ohne sich auf das Ermessen des LLM zu verlassen. Die klassischen Events sind neun – SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Notification, Stop, SubagentStop, SessionEnd, PreCompact –, von denen PreToolUse und andere blockieren können (Bearbeitungen geschützter Dateien oder gefährliche Befehle stoppen). Konfiguriert werden sie in settings.json unter dem Schlüssel "hooks" als Event-Name -> matcher -> type + command. Der E/A-Kontrakt: Ein Hook empfängt JSON über stdin (session_id, tool_input usw.) und gibt über Exit-Code 0 (Erfolg) / 2 (blockieren, mit stderr zurück an Claude) oder strukturiertes JSON (continue, decision:block, permissionDecision: deny/allow/ask) zurück. Das zentrale Prinzip lautet "Hooks können Beschränkungen verschärfen, aber nicht lockern" (deny gewinnt immer, blockiert sogar unter bypassPermissions; ein Plugin-Mod kann das in manchen Fällen übergehen). Klassische Anwendungsfälle: Auto-Format nach Bearbeitungen (PostToolUse + Edit|Write), kritische Dateien schützen, gefährliche Befehle stoppen, Kontext erneut einspeisen (SessionStart), Benachrichtigungen/Audit-Logging und Testen vor dem Stoppen (Stop). Zur Sicherheit: Hooks führen beliebige Shell-Befehle mit deinen Rechten aus, konfiguriere also nur vertrauenswürdige und validiere/quote Eingaben; in interaktiven Sessions laufen Hooks aus Einstellungsdateien erst, wenn du dem Ordner vertraust (ein Sicherheitsmerkmal), und direkte Änderungen an diesen Dateien werden normalerweise automatisch übernommen. Auf Basis der offiziellen Dokumentation, gestützt auf die neun klassischen Events und den E/A-Kontrakt.