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). 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; die Hook-Konfiguration wird beim Session-Start erfasst (ein Sicherheitsmerkmal), sodass Änderungen mitten in der Session nicht greifen. Auf Basis der offiziellen Dokumentation, gestützt auf die neun klassischen Events und den E/A-Kontrakt.