Workbranch › Anleitungen

Anleitung

So nutzen Sie Hooks in Claude Code

Manches soll jedes Mal passieren, etwa dass eine Datei formatiert wird, nachdem Claude sie bearbeitet hat, oder dass Sie einen Hinweis bekommen, wenn Claude auf Sie wartet, und zwar ohne darauf zu hoffen, dass Claude daran denkt. Genau dafür gibt es Hooks. Diese Anleitung erklärt, was sie sind, führt durch einen ersten Hook und zeigt, wo sie hingehören.

Aktualisiert am 30. Oktober 2026

Kurz gesagt: Ein Hook ist ein Shell-Befehl, den Claude Code automatisch an einem festen Punkt ausführt, zum Beispiel bevor ein Werkzeug läuft, nachdem eine Datei bearbeitet wurde oder wenn Claude Ihre Eingabe braucht. Sie tragen Hooks unter dem Schlüssel hooks in eine Einstellungsdatei ein, etwa ~/.claude/settings.json (alle Projekte) oder .claude/settings.json (ein Projekt), und tippen dann /hooks, um zu prüfen, dass Claude Code sie erkennt.

Eventnamen, Speicherorte und Verhalten stammen aus der Claude-Code-Dokumentation von Anthropic, Stand Oktober 2026. Claude Code wird oft aktualisiert; führen Sie claude update aus, wenn etwas fehlt.

Was Hooks sind und warum sie helfen

Anweisungen in einem Prompt oder in einer CLAUDE.md-Datei sind Vorschläge: Claude folgt ihnen meist, entscheidet aber selbst. Ein Hook ist anders. Claude Code selbst führt Ihren Befehl aus, sobald das Event eintritt, die Aktion ist also deterministisch. Typische Einsätze aus der Anleitung von Anthropic:

Zu den meistgenutzten Events gehören SessionStart (eine Sitzung beginnt oder wird fortgesetzt), UserPromptSubmit (Sie senden einen Prompt), PreToolUse (vor einem Werkzeugaufruf, den es blockieren kann), PostToolUse (nach einem erfolgreichen Werkzeugaufruf), Notification, Stop (Claude ist mit der Antwort fertig), PreCompact und SessionEnd. Die vollständige Liste in der Hooks-Referenz ist deutlich länger.

Ihr erster Hook: eine Desktop-Benachrichtigung

Dieses Beispiel, angelehnt an die Schritt-für-Schritt-Anleitung von Anthropic, meldet sich unter macOS, sobald Claude Code Ihre Aufmerksamkeit braucht.

  1. Öffnen Sie ~/.claude/settings.json in einem Texteditor. Legen Sie die Datei an, falls es sie nicht gibt.
  2. Fügen Sie ein Objekt hooks mit einem Eintrag Notification hinzu. Darin steht eine Liste von Matcher-Gruppen; jede hat einen matcher (als leere Zeichenkette lassen, damit er bei jeder Benachrichtigung auslöst) und eine Liste hooks mit einem Element vom Typ "type": "command".
  3. Setzen Sie als Befehl osascript -e 'display notification "Claude Code needs your attention" with title "Claude Code"'. Unter Linux verwendet das Beispiel von Anthropic stattdessen notify-send. Denken Sie daran, die inneren doppelten Anführungszeichen im JSON zu maskieren.
  4. Hat die Datei schon einen Schlüssel hooks, ergänzen Sie Notification neben den vorhandenen Events, statt das ganze Objekt zu ersetzen.
  5. Tippen Sie in Claude Code /hooks. Die Hook-Übersicht sollte Ihren neuen Hook unter Notification anzeigen. Mit Esc gehen Sie zurück.
  6. Bitten Sie Claude um etwas, das eine Berechtigung braucht, und wechseln Sie in ein anderes Fenster. Eine Benachrichtigung sollte erscheinen.

Damit der Hook nur bei bestimmten Benachrichtigungen auslöst, setzen Sie den Matcher auf einen Typ wie permission_prompt (eine Berechtigungsrückfrage wartet seit etwa sechs Sekunden) oder idle_prompt (Claude ist fertig und Sie haben etwa eine Minute lang nichts getippt).

Ein zweites Beispiel: Dateien nach Änderungen formatieren

Für einen Projekt-Hook kommt die Konfiguration in .claude/settings.json im Projektstamm. Verwenden Sie das Event PostToolUse mit dem Matcher Edit|Write, damit er nur nach Werkzeugen zum Bearbeiten von Dateien läuft. Der Beispielbefehl von Anthropic liest den Pfad der bearbeiteten Datei aus dem JSON, das Claude Code über die Standardeingabe übergibt, und reicht ihn an Prettier weiter: jq -r '.tool_input.file_path' | xargs npx prettier --write. Dafür muss jq installiert sein. Ein erfolgreicher Hook zeigt im Gespräch nichts an; Sie sehen nur, dass die Datei neu formatiert ist.

Wo Hooks konfiguriert werden

OrtGilt fürGeteilt?
~/.claude/settings.jsonAlle Ihre ProjekteNein, nur Ihr Rechner
.claude/settings.jsonEin ProjektJa, kann committet werden
.claude/settings.local.jsonEin ProjektNein, bleibt außerhalb von git
Verwaltete RichtlinieneinstellungenGanze OrganisationVon Admins festgelegt
hooks/hooks.json eines PluginsSolange das Plugin aktiviert istIm Plugin enthalten
Skill-FrontmatterDen Rest der Sitzung, nachdem der Skill aufgerufen wurdeIn der Skill-Datei
Subagent-FrontmatterSolange dieser Subagent läuftIn der Subagent-Datei

Um Hooks abzuschalten, setzen Sie "disableAllHooks": true in einer Einstellungsdatei. Hooks aus verwalteten Einstellungen laufen weiter, sofern es nicht auch dort gesetzt ist.

Wie ein Hook antwortet

Tritt ein Event ein, schickt Claude Code die Event-Details als JSON an die Standardeingabe Ihres Befehls. Ihr Befehl antwortet mit seinem Exit-Code:

Für genauere Steuerung beenden Sie mit Exit 0 und geben stattdessen ein JSON-Objekt aus. Wählen Sie pro Hook einen der beiden Wege.

Gut zu wissen

Wenn es nicht funktioniert

Festhalten, was jede Sitzung offen lässt

Das Workbranch-Plugin für Claude Code nutzt eine Zusammenfassung beim Sitzungsstart: In einem Ordner, der mit einem Workbranch-Projekt verknüpft ist, zeigt es zu Beginn einer Sitzung, was noch offen ist, und wenn Sie „save this to Workbranch“ (speichere das in Workbranch) sagen, legt es die Aufgaben, Entscheidungen und offenen Fragen der Sitzung in diesem Projekt ab. Mehr dazu unter Workbranch für Claude. Neu bei Claude Code? Beginnen Sie mit dem Einstieg in Claude Code.

Quellen

Häufige Fragen

Kann Claude einen Hook für mich schreiben?

Ja. Laut der Anleitung von Anthropic können Sie den gewünschten Hook im Prompt von Claude Code beschreiben und Claude bitten, ihn zu Ihren Einstellungen hinzuzufügen. Prüfen Sie das Ergebnis anschließend mit /hooks.

Kann ein Hook Claude auch im Bypass-Modus stoppen?

Ein PreToolUse-Hook, der eine deny-Entscheidung zurückgibt, blockiert das Werkzeug in jedem Berechtigungsmodus, auch in bypassPermissions. Deshalb eignen sich Hooks für Regeln, die man nicht durch einen Moduswechsel aushebeln kann.

Gibt es Hooks, die statt eines Skripts ein Modell nutzen?

Ja. Neben Shell-Befehlen kann ein Hook eine HTTP-Anfrage, ein MCP-Werkzeugaufruf, ein einzelner Prompt, den ein Claude-Modell auswertet, oder ein experimenteller Agent-Hook mit Werkzeugzugriff sein.