Claude Code Hooks: Automatisierung mit Pre- und Post-Tool-Hooks
Claude Code Hooks sind das Feature, das aus einem smarten KI-Assistenten einen wirklich autonomen Agenten macht. Wer nur mit CLAUDE.md und settings.json arbeitet, steuert Claude über Anweisungen — Hooks dagegen greifen direkt in den Ablauf ein: Sie laufen vor einem Tool-Aufruf, nach ihm, beim Start einer Prompt-Eingabe oder wenn Claude seine Arbeit beendet. Das ist kein Komfort-Feature, das ist Infrastruktur.
Dieser Artikel erklärt, welche Hook-Typen es gibt, warum sie mächtiger sind als jede Konfigurationsdatei — und zeigt zwei Praxisbeispiele, die du heute noch einsetzen kannst.
Was sind Claude Code Hooks?
Hooks sind Shell-Befehle oder Skripte, die Claude Code zu definierten Zeitpunkten im Agentenablauf ausführt. Du registrierst sie in .claude/settings.json. Es gibt vier Hook-Typen:
- UserPromptSubmit — läuft, sobald du eine Eingabe absendest, bevor Claude antwortet. Geeignet zum Validieren, Anreichern oder Ablehnen von Prompts.
- PreToolUse — läuft unmittelbar bevor Claude ein Tool aufruft (z. B.
Bash,Write,Edit). Gibt dir die Möglichkeit, den Aufruf zu blockieren oder zu verändern. - PostToolUse — läuft nach dem Tool-Aufruf, bevor Claude das Ergebnis verarbeitet. Ideal für Logging, Benachrichtigungen oder nachgelagerte Checks.
- Stop — läuft, wenn Claude seine Antwort abgeschlossen hat und zum Warten auf deine nächste Eingabe übergeht. Nützlich für abschließende Prüfungen und Cleanup-Jobs.
Jeder Hook kann mit einem Matcher auf bestimmte Tool-Namen oder Kontexte eingeschränkt werden. Ein Hook mit leerem Matcher läuft bei jedem Aufruf des entsprechenden Typs.
Warum Hooks mächtiger sind als .clauderc
Eine CLAUDE.md-Datei ist Text. Claude liest ihn, folgt ihm — meistens. Aber Claude kann Anweisungen auch falsch interpretieren, vergessen oder im langen Kontext-Verlauf deprioritisieren. Das ist kein Bug, das ist das Wesen eines Sprachmodells.
Hooks dagegen laufen auf Systemebene. Wenn ein PreToolUse-Hook mit Exit-Code 2 zurückkehrt, blockiert Claude Code den Tool-Aufruf — ohne Ausnahme, ohne Interpretation. Du kannst in CLAUDE.md schreiben: "Führe niemals git push aus ohne meine Bestätigung." Claude wird es versuchen einzuhalten. Oder du schreibst einen PreToolUse-Hook, der bei jedem git push-Befehl eine Bestätigung einfordert. Der Hook hält es immer ein.
CLAUDE.md gibt Empfehlungen. Hooks setzen Grenzen durch.
Das ist der fundamentale Unterschied: Konfigurationsdateien sind Anweisungen an das Modell. Hooks sind Regeln, die das System um das Modell herum durchsetzt.
Praxisbeispiel 1: Stop-Hook — Commit-Check nach jeder Antwort
Eines der häufigsten Probleme im produktiven Claude-Code-Einsatz: Du arbeitest zwei Stunden, Claude editiert Dutzende Dateien — und irgendwann weißt du nicht mehr genau, was uncommitted ist. Mit einem Stop-Hook bekommst du nach jeder abgeschlossenen Antwort automatisch eine Übersicht der ungesicherten Änderungen.
// .claude/settings.json
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [{"type": "command", "command": "git diff --stat HEAD && echo 'Ungespeicherte Änderungen — commit?'"}]
}
]
}
}
Was passiert: Immer wenn Claude eine Antwort abschließt, läuft git diff --stat HEAD im Hintergrund. Gibt es Änderungen, siehst du sie direkt im Terminal. Das klingt simpel — in der Praxis verhindert es, dass Claude fünfzehn Dateien editiert und du eine halbe Stunde später den Überblick verlierst.
Erweiterung: Mit einem Exit-Code-2-Return kannst du Claude stoppen, bevor er eine neue Aufgabe beginnt, solange noch uncommittete Änderungen vorhanden sind. Dann ist Claude Code kein Produktivitäts-Werkzeug mehr, das dich in unordentliche Zustände laufen lässt — es erzwingt saubere Commits als Arbeitsrhythmus.
Praxisbeispiel 2: PreToolUse — Sicherheitsnetz für Delete-Operationen
Der Claude Code pre-tool-use hook ist das mächtigste Werkzeug für Sicherheit im automatisierten Betrieb. Mit ihm kannst du jeden Tool-Aufruf abfangen, bevor er ausgeführt wird — und bei kritischen Operationen eine Bestätigung verlangen oder den Aufruf komplett blockieren.
Folgendes Beispiel fängt alle Bash-Aufrufe ab, die destruktive Befehle enthalten:
// .claude/settings.json
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "bash -c 'echo \"$CLAUDE_TOOL_INPUT\" | python3 -c \"import sys,json; inp=json.load(sys.stdin); cmd=inp.get(\\\"command\\\",\\\"\\\"); exit(2) if any(x in cmd for x in [\\\"rm -rf\\\",\\\"drop table\\\",\\\"truncate\\\",\\\"format\\\"]) else exit(0)\"'"
}]
}
]
}
}
Gibt der Hook Exit-Code 2 zurück, bricht Claude Code den Tool-Aufruf ab und teilt dir mit, warum. Du kannst die Blacklist beliebig erweitern: git push --force, kubectl delete, DROP DATABASE — alles, was in deinem Kontext unumkehrbar ist.
Im realen Einsatz ersetzt das nicht das Nachdenken über Claude's Aufgaben — aber es gibt dir eine letzte Verteidigungslinie, wenn ein Prompt zu weit geht oder Claude einen unerwarteten Pfad einschlägt.
Wofür sich Hooks nicht eignen
Hooks sind mächtig, aber kein Ersatz für echte Programm-Logik. Drei Einschränkungen, die du kennen solltest:
- Kein persistenter State. Jeder Hook-Aufruf ist ein separater Prozess. Willst du Zähler, Historien oder Zustandsdaten zwischen Hooks teilen, brauchst du eine externe Datei oder Datenbank — Hooks selbst haben kein Gedächtnis.
- Kein Ersatz für eigenen Code. Komplexe Validierungslogik gehört in ein richtiges Skript, das der Hook dann aufruft — nicht inline in den JSON-String. Unlesbarer Hook-Code ist schwerer zu debuggen als ein schlechter Commit.
- Keine Garantie bei langen Kontexten. Hooks laufen zuverlässig. Aber wenn dein Hook-Skript selbst fehlerhaft ist oder Abhängigkeiten fehlen, schlägt der Hook still fehl. Immer mit einfachen Test-Eingaben verifizieren, bevor du kritische Hooks in Produktion bringst.
Wichtig: Ein fehlerhafter Hook der mit Exit-Code 0 zurückkehrt, obwohl er eigentlich blockieren sollte, gibt Claude Code grünes Licht. Teste deine Hooks immer gegen die Fälle, die sie abfangen sollen — nicht nur gegen den Happy Path.
Claude Code automatisieren — der nächste Schritt
Hooks sind der Einstieg in echter Automatisierung mit Claude Code. Nicht "Claude assistiert beim Coden", sondern "Claude Code läuft in einem definierten Rahmen, der verlässliche Ergebnisse produziert". Wer das einmal eingerichtet hat, will nicht mehr ohne.
Die Lernkurve ist moderat: Du brauchst grundlegendes Shell-Wissen und ein Verständnis davon, wie Claude Code Tools aufruft. Dann werden Hooks schnell zur Standardausstattung jeder Claude-Code-Installation.
12 fertige Hook-Vorlagen für den Produktionseinsatz
Im Kurs Claude Code Mastery gibt es ein komplettes Modul zu Hooks — mit 12 einsatzbereiten Vorlagen: Git-Schutz, Delete-Safeguards, Logging, Benachrichtigungen und mehr. Alle getestet im realen Agentenbetrieb.
Zum Kurs — Full Access → Einmalzahlung · Kein Abo · 14 Tage RückgaberechtKurs · Claude Code Mastery
Von Prompts zu produktiven AI-Agenten
Agent Architecture. CLI. Prompting. MCP. Multi-Agent. Und ein vollständiges Hooks-Modul mit 12 fertigen Vorlagen — auf Deutsch, einmalig bezahlt.
Einmalzahlung · Kein Abo · 14 Tage Rückgaberecht
Du willst sehen, wie Hooks im echten Agentenbetrieb aussehen?
Das Team hinter diesem Blog betreibt ein vollständig AI-geführtes Unternehmen — mit Claude Code Hooks in der Kern-Infrastruktur. Wir bauen das öffentlich bei agentic-movers.com.