
Claude Code zum Gehorsam zwingen: Regeln in Hooks verwandeln
In der Welt des KI-unterstützten Codings haben Tools wie Claude Code die Art und Weise, wie Entwickler mit großen Sprachmodellen (LLMs) zusammenarbeiten, revolutioniert – von Debugging bis hin zum Aufbau ganzer Projektgerüste. Ein häufiges Ärgernis ist jedoch der Umgang mit Systemanweisungen, die oft in Dateien wie CLAUDE.md gespeichert werden. Diese Dateien sollen das Verhalten der KI lenken, werden aber schnell aufgebläht, veraltet oder wirkungslos. Je schlauer die Agenten werden, desto öfter entdecken sie Umgebungsdetails selbst – statische Regeln verlieren dadurch an Relevanz. Aber was, wenn man bestimmte Verhaltensweisen erzwingen möchte, z. B. die Nutzung von pnpm statt npm? Einfache Prompts wie „Benutze pnpm statt npm“ scheitern oft, weil beide Begriffe im Kontext bleiben und zu inkonsistenten Ergebnissen führen.
Hier kommen Claude Code Hooks ins Spiel – eine mächtige Funktion, die in der Dokumentation unter code.claude.com beschrieben wird. Hooks erlauben es, die Aktionen der KI an wichtigen Punkten abzufangen und zu verändern und aus vagen Richtlinien eiserne Regeln zu machen. Sie können nicht nur unerwünschte Befehle verhindern, sondern diese auch on-the-fly umschreiben – und das alles ohne Abhängigkeit von der probabilistischen Interpretation des Modells.
Das Problem mit klassischen Anweisungen
CLAUDE.md-Dateien enthalten meist einen Mix aus Regeln: manche deterministisch (z. B. „Nutze niemals npm; immer pnpm“), andere eher beratend (z. B. „Bevorzuge saubere Code-Strukturen“). Das Problem? LLMs verarbeiten das Ganze holistisch, aber in der Praxis passiert Folgendes:
- Kontexte verwässern Anweisungen – Erwähnungen von „npm“ an anderer Stelle verwirren das Modell.
- Veraltete Infos bleiben erhalten, da Agenten nicht immer „verlernen“ können.
- Durchsetzung ist nicht-deterministisch; die KI hält sich vielleicht zu 90 %, patzt aber genau dann, wenn es wichtig ist.
Genau hier glänzen Hooks. Durch Einhängen in Events wie PreToolUse (vor Tool-Ausführung), PostToolUse (danach) oder Stop (um die Ausführung zu stoppen) kannst du programmatisch Eingaben/Ausgaben prüfen und verändern. Ein Hook könnte z. B. nach npm in einem Befehl suchen und es durch pnpm ersetzen – die Anfrage wird nahtlos transformiert.
CLAUDE.md-Regeln systematisch in Hooks umwandeln
Um von einer aufgeblähten CLAUDE.md wegzukommen, empfiehlt sich ein strukturierter Prozess, um durchsetzbare Regeln zu identifizieren und umzusetzen. Hier ein prompt-inspirierter Workflow:
1Task: Convert deterministic rules from @CLAUDE.md into Claude Code hooks.2
3Goal4Identify instructions in @CLAUDE.md that can be enforced deterministically5(e.g. disallowed CLI commands, required CLI tools, forbidden file edits,6restricted directories).7
8Process9
101. Parse @CLAUDE.md and extract all instructions.11
122. Classify each instruction into:13 - Deterministic (can be enforced by a hook)14 - Non-deterministic (guidance only)15
163. For deterministic instructions:17 Map them to Claude Code hooks such as:18 - PreToolUse19 - PostToolUse20 - Stop21
224. For each hook:23 - Explain which rule it enforces24 - Show the hook configuration25 - Use a separate bash script to implement the logic.26
27Example hook script:28
29```bash30#!/bin/bash31INPUT=$(cat)32COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command')33
34if echo "$COMMAND" | grep -q "drop table"; then35 echo "Blocked: dropping tables is not allowed" >&236 exit 237fi38
39exit 040```41
425. Before implementing anything:43 Present a table with44 - Instruction from CLAUDE.md45 - Deterministic? (yes/no)46 - Proposed hook type47 - Enforcement strategy48
496. Wait for user confirmation.50
517. After confirmation:52 - Generate hook scripts53 - Generate hook configuration54 - Place scripts in /hooks/55 - Ensure scripts are executable.56
578. Finally:58 Provide instructions to test the hooks59 (restart Claude Code and trigger a blocked command).60
Claude gibt zuerst eine saubere Tabelle aus (z. B. npm → pnpm Rewrite bei PreToolUse), wartet auf dein OK und spuckt dann fertige Skripte aus.
Warum Hooks klassische Anweisungen schlagen
- Garantierte Ausführung – keine „Claude hat vergessen“-Momente mehr
- Umschreiben > Blockieren – Befehl transparent korrigieren (ideal für pnpm, bun vs npm usw.)
CLAUDE.mdentrümpeln – dort nur noch High-Level-Leitlinien und Architektur lassen- Agenten-freundliche Evolution – Claude darf das Repo dynamisch entdecken, nur die absoluten No-Go-Regeln werden erzwungen
Häufige Ideen zum Hook-ify-en: rm -rf blocken, .env/Secrets schützen, vor Commit lint erzwingen, veraltete Befehle umschreiben, Edits auf Legacy-Ordner beschränken.
Fang klein an: Such dir eine Regel, die dich schon mal gebissen hat, lass den obigen Prompt laufen, wende die Hooks an und teste. Sobald du siehst, dass Claude zu 100 % gehorcht, willst du nie wieder auf Hoffen setzen.
Viel Spaß beim Erzwingen – und einen sauberen, sicheren Workflow!