Claude CodeKapitel 18 von 31

Hooks und Mods

Gleiches Kapitel, drei Tiefen. Die Wahl gilt überall und bleibt gespeichert.

Tiefe 1: Überblick · Lesezeit 8 Min. · Stand

Ein Hook ist ein Befehl, den Claude Code an einer festen Stelle der Sitzung selbst startet: vor einem Werkzeugaufruf, nach einer Dateiänderung, am Ende einer Antwort. Die Anleitung zu Hooks (externe Seite, code.claude.com) beschreibt sie als Shell-Befehle, die man selbst festlegt und die Claude Code an bestimmten Punkten seines Ablaufs ausführt. Seit Oktober 2026 gibt es dazu Mods. Ein Mod ist ein Plugin mit Funktionen in JavaScript oder TypeScript, die im Programm selbst laufen und ändern können, was Claude Code tut und zeichnet.

Warum eine Regel besser in einem Hook steht als in der Projektanweisung, in welchem Takt die Ereignisse kommen und wie ein Hook eine Handlung abweist, erklärt Vibe-Coding / Agentic Engineering, Kapitel 12 im Pfad zum Vibe Coding. Dieses Kapitel zeigt die Mechanik in Claude Code: wo ein Hook steht, welche Arten es gibt, wie man sie ansieht und abschaltet, und was ein Mod darüber hinaus kann.

Ein Hook in den Einstellungen

Hooks gibt es seit Version 1.0.38 vom 30.06.2025 (Versionsliste (externe Seite, code.claude.com)). Ein Hook entsteht in einer Einstellungsdatei, in einem Block hooks. Dieses Beispiel aus der Anleitung formatiert jede Datei, die Claude bearbeitet, mit Prettier:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
          }
        ]
      }
    ]
  }
}

Der Aufbau hat drei Stufen. Oben steht das Ereignis, hier PostToolUse, also der Moment nach einem Werkzeugaufruf. Darunter grenzt der matcher ein, bei welchen Werkzeugen der Hook läuft, hier nur bei Edit und Write. Ganz innen steht, was laufen soll. Claude Code übergibt dem Befehl die Daten des Ereignisses als JSON auf der Standardeingabe. Das Werkzeug jq holt daraus den Pfad der Datei, und Prettier formatiert sie. Gelingt der Hook, zeigt Claude Code im Gespräch nichts davon an.

Einen Hook muss man nicht von Hand schreiben. Man kann im Terminal beschreiben, was er tun soll, und Claude schreibt ihn.

Wo ein Hook steht, entscheidet, wo er gilt (Hook-Referenz (externe Seite, code.claude.com)):

  • ~/.claude/settings.json: in allen eigenen Projekten, nicht teilbar
  • .claude/settings.json: im Projekt, teilbar über das Repository
  • .claude/settings.local.json: im Projekt, nicht teilbar
  • verwaltete Einstellungen: in der ganzen Organisation, verteilt über die Admins
  • hooks/hooks.json eines Plugins: solange das Plugin an ist, teilbar mit dem Plugin
  • Kopf eines Skills: ab dem Aufruf bis zum Ende der Sitzung, teilbar mit dem Skill
  • Kopf eines Subagents: solange der Subagent läuft, teilbar mit der Agentendatei

Quelle: Hook-Referenz (externe Seite, code.claude.com), Stand 21.10.2026. Welche Datei wann gilt, steht in Kapitel 15. Eine Sitzung in der Cloud liest die eigene ~/.claude/settings.json nicht.

Fünf Arten von Hooks

Die meisten Hooks starten einen Befehl in der Shell. Vier weitere Arten schicken das Ereignis woandershin (Anleitung zu Hooks (externe Seite, code.claude.com)):

  • command startet einen Befehl oder ein Skript. Das ist der Normalfall.
  • http schickt die Daten des Ereignisses per POST an eine Adresse, etwa an einen gemeinsamen Dienst, der für ein Team protokolliert.
  • mcp_tool ruft ein Werkzeug auf einem eingebundenen MCP-Server auf.
  • prompt schickt die Daten mit einem eigenen Prompt an ein Claude-Modell, das in einer einzigen Runde urteilt. Die Bauart kam mit Version 2.0.30 als Prüfung am Ende einer Antwort.
  • agent startet einen Subagent, der Dateien lesen und Befehle ausführen kann, bevor er urteilt. Diese Art ist laut Doku experimentell und kann sich noch ändern.

Wie verlässlich ein Hook mit Modell urteilt, steht in Vibe-Coding / Agentic Engineering, Kapitel 12, wie man ihn einrichtet, auf der zweiten Ebene.

Was ein Hook zurückmeldet

Ein Befehl antwortet über seinen Rückgabewert und über das, was er ausgibt. Wie der Rückgabewert 2 eine Handlung anhält, warum der gewohnte Fehlercode 1 sie durchlässt und wie man das seit Version 2.1.295 mit onFailure ändert, steht in Vibe-Coding / Agentic Engineering, Kapitel 12 auf der zweiten Ebene.

Endet ein Hook vor einem Werkzeugaufruf mit 0 und ohne Ausgabe, hat er nichts einzuwenden, und der Aufruf geht durch die gewöhnliche Prüfung der Rechte. Die Referenz sagt es so: Der Hook kann den Aufruf ablehnen, sein Schweigen gibt ihn nicht frei. Wer mehr steuern will, endet mit 0 und gibt JSON aus, etwa um eine Rückfrage zu erzwingen oder Text für Claude beizusteuern.

Hooks ansehen und abschalten

Der Befehl /hooks öffnet eine Liste aller eingerichteten Hooks, nach Ereignis geordnet. Ändern lässt sich darin nichts, die Liste dient dem Nachsehen. Jeder Eintrag nennt seine Herkunft: Einstellungen des Nutzers, des Projekts, ein Plugin oder die laufende Sitzung. Wählt man einen aus, zeigt Claude Code den vollen Befehl und die Datei, in der er steht.

Ändert man eine Einstellungsdatei, während Claude Code läuft, übernimmt das Programm die Hooks in der Regel von selbst. Abschalten lassen sich alle Hooks auf einmal, mit "disableAllHooks": true in den Einstellungen. Hooks aus den verwalteten Einstellungen einer Organisation laufen dann weiter. Einzeln abschalten lässt sich ein Hook nicht. Wer ihn loswerden will, löscht seinen Eintrag.

Ein Repository bringt seine Hooks in .claude/settings.json mit. Im Terminal hält Claude Code deshalb alle Hooks aus Ein­stel­lungs­da­teien zurück, bis man dem Ordner vertraut hat, auch die eigenen. Mit -p gilt das nicht, mehr dazu auf der dritten Ebene.

Was ein Mod ist

Mods gibt es seit Version 2.1.287 vom 01.10.2026 (Versionsliste (externe Seite, code.claude.com)). Ein Mod ist ein Plugin, das ändert, wie Claude Code aussieht und sich verhält. Er besteht aus Funktionen in JavaScript oder TypeScript, die Claude Code bei einem Ereignis aufruft: bei einem Werkzeugaufruf, bei einem abgeschickten Prompt oder wenn ein Teil der Oberfläche gezeichnet wird (Doku zu Mods (externe Seite, code.claude.com)).

Auch diese Funktionen heißen in der Doku Hooks. Der Unterschied liegt im Ort. Ein Hook aus den Einstellungen ist ein Befehl, eine Anfrage über das Netz oder ein Prompt außerhalb des Programms. Die Hooks eines Mods laufen als Funktionen in Claude Code selbst. In diesem Kapitel heißt der erste deshalb einfach Hook, der zweite Hook eines Mods.

Ein Hook eines Mods steht zwischen dem Ereignis und dem, was Claude Code damit tun würde. Er kann auf drei Arten damit umgehen (Doku zu Ereignissen (externe Seite, code.claude.com)).

  • Beobachten: zählen, mitschreiben, und das Ereignis unverändert weiterreichen.
  • Umschreiben: das Ereignis ändern, bevor es weiterläuft, etwa einen Prompt ergänzen oder eine Anzeige erweitern.
  • Selbst beantworten: das Ereignis erledigen, sodass das gewohnte Verhalten ausbleibt, etwa einen Befehl ablehnen.

Ein kleines Beispiel nach der Doku zählt die Werkzeugaufrufe und schreibt die Zahl hinter das Wort neben dem Ladesymbol:

// hooks/register.js
let calls = 0

export function register(on) {
  // before each tool call: count it and redraw
  on('tool.call', async ($, e, next) => {
    calls += 1
    $.ui.invalidate('ui.render')
    return next(e)
  })
  // whenever the spinner is drawn: add the count
  on('ui.render', { component: 'Spinner' }, async ($, e, next) => {
    return next({
      ...e,
      props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' },
    })
  })
}

Beide Funktionen teilen sich die Variable calls. Ein Hook mit Befehl startet dagegen bei jedem Aufruf als neuer Prozess und behält nichts im Speicher. Ein Mod kann außerdem eigene Bereiche neben dem Verlauf zeichnen, Teile der Oberfläche ersetzen und Befehle anlegen, die sofort laufen, ohne dass Claude dafür antworten muss.

Die Hooks eines Mods hängen in einer Kette im Prozess von Claude Code. Ein Hook aus den Einstellungen läuft daneben, außerhalb des Programms. Links ein Rahmen für Claude Code, einen einzigen Prozess. Darin läuft ein Ereignis durch eine Kette: zuerst der Hook von Mod 1, danach der Hook von Mod 2, am Ende Claude Code selbst. Jeder Hook reicht mit next(e) weiter und bekommt das Ergebnis zurück. Jeder Hook in der Kette kann das Ereignis beobachten, es umschreiben, bevor es weiterläuft, oder es selbst beantworten, indem er next weglässt, etwa um einen Befehl abzulehnen. Solche Ereignisse sind ein Werkzeugaufruf (tool.call), ein abgeschickter Prompt und das Zeichnen der Oberfläche (ui.render). Die Hooks eines Mods teilen sich Variablen. Rechts, außerhalb des Rahmens, steht ein Hook aus den Einstellungen: ein Befehl, eine Anfrage über das Netz oder ein Prompt, als Befehl mit einem neuen Prozess je Aufruf. Claude Code schickt ihm das Ereignis als JSON, er antwortet mit Rückgabewert oder JSON. So kann er abweisen oder nichts einwenden, Text für Claude beisteuern und Eingaben und Ergebnis eines Werkzeugaufrufs ändern. In der Oberfläche zeichnet er nichts. Claude Code, ein Prozess hier drin laufen die Hooks der Mods Ereignis Hook, Mod 1 sieht es zuerst next(e) Ergebnis Hook, Mod 2 danach next(e) Ergebnis Claude Code am Ende Jeder Hook in der Kette kann beobachten zählen, mitschreiben, dann next(e) umschreiben das Ereignis ändern, bevor es weiterläuft selbst beantworten next weglassen, etwa einen Befehl ablehnen Ereignisse, etwa Werkzeugaufruf Prompt abgeschickt Oberfläche gezeichnet tool.call ui.render die Hooks eines Mods teilen sich Variablen außerhalb des Programms als JSON Rückgabewert oder JSON Hook aus den Einstellungen Befehl, Anfrage über das Netz oder Prompt als Befehl je Aufruf ein neuer Prozess Damit kann er abweisen oder nichts einwenden Text für Claude beisteuern Eingaben und Ergebnis eines Werkzeugaufrufs ändern
Ein Hook aus den Einstellungen läuft außerhalb von Claude Code und bekommt ein Ereignis als JSON. Er kann es abweisen, Text beisteuern und bei einem Werkzeugaufruf Eingaben und Ergebnis ändern. Die Hooks eines Mods laufen im Programm in einer Kette und können ein Ereignis beobachten, umschreiben oder selbst beantworten, auch beim Zeichnen der Oberfläche.

eigene Darstellung nach Anthropic, Hooks reference, Mods overview und Mods events, Stand 12.10.2026

Einen Mod muss man ebenfalls nicht selbst schreiben. Beschreibt man in einer Sitzung, was er tun soll, schreibt Claude ihn mit Hilfe eines mitgelieferten Skills, und Claude Code fragt, ob es ihn laden soll (Anleitung zum ersten Mod (externe Seite, code.claude.com)). Mods laufen im Terminal ab Version 2.1.287 und im Reiter Code der Desktop-App ab Version 2.1.286, in der Voreinstellung eingeschaltet. Warum Anthropic Mods neben die Hooks gestellt hat, erzählt die dritte Ebene.

Was ein Mod darf

Ein Mod läuft mit denselben Rechten wie Claude Code selbst (Doku zu Mods (externe Seite, code.claude.com)). Er liest und schreibt Dateien, startet Programme und schickt Anfragen ins Netz. Er liest Umge­bungs­va­ria­blen und damit auch einen API-Schlüssel, der dort liegt. Er sieht jeden Prompt und jeden Werkzeugaufruf und kann ein Modell aufrufen, auf Kosten des eigenen Tarifs.

Eine Sandbox umschließt ihn nicht. Ist die Sandbox eingeschaltet, schließt sie die Befehle ein, die Claude in der Shell startet. Ein Prozess, den ein Mod startet, läuft außerhalb davon. Was die Sandbox umschließt, steht in Kapitel 16.

Ein Mod kann auch über Werkzeugaufrufe entscheiden, bevor die Rückfrage erscheint. Auf einem Rechner mit verwalteten Einstellungen oder bei einer Anmeldung mit Team oder Enterprise kommt seine Freigabe in der Voreinstellung an Rückfrageregeln und eigenen Hooks nicht vorbei. Ohne beides kann er einen Aufruf freigeben, den eine Rückfrageregel vorlegen würde oder den ein eigener Hook vor dem Aufruf abgewiesen hat. Wann er auch ein Verbot übergeht, steht in Kapitel 16 auf der dritten Ebene. Die Rückfrage selbst kann ein Mod nicht umgestalten, er kann also nicht ändern, was sie anzeigt.

Die Doku rät deshalb, Mods nur von Autoren und Marktplätzen zu installieren, denen man vertraut. Vorher lässt sich nachsehen, was ein Mod tut, ohne ihn zu starten: claude plugin validate auf dem Ordner des Plugins listet die Ereignisse, an denen er hängt, und die Aufrufe, mit denen er Dateien, Prozesse oder das Netz erreicht. Wie Plugins installiert werden, steht in Kapitel 19. Ein Mod kommt auf demselben Weg.

Mitgelieferte Mods

Einige Funktionen von Claude Code sind selbst Mods. In /plugin stehen sie auf dem Reiter Installed unter Built-in. Aktualisieren oder deinstallieren lassen sie sich nicht, abschalten meist schon (Doku zu Mods (externe Seite, code.claude.com)). Dazu gehören cc-plugin-diff für den Befehl /diff, cc-plugin-agents-md, das eine AGENTS.md als Projektanweisung lädt (Kapitel 14), der Skill, mit dem Claude Mods schreibt, und cc-plugin-telemetry für die Nutzungsdaten. cc-plugin-sec-default schützt, was eine Organisation verwaltet, vor den Mods eines Nutzers und lässt sich nicht abschalten.

Der sechste, cc-plugin-you-should-know, lässt bei längeren Aufgaben einen zweiten Agenten mitlesen. Findet er etwas, das man übersehen könnte, zeigt er einen Hinweis über dem Eingabefeld. Er ist in der Voreinstellung aus.

Der Hinweis im Terminal erscheint, solange man You should know weder ein- noch ausgeschaltet hat. Einschalten lässt sich der Mod laut Versionsliste seit Version 2.1.287 in Sitzungen direkt bei Anthropic mit eingeschalteten Nutzungsdaten. In /plugin steht er wie die anderen mitgelieferten Mods auf dem Reiter Installed unter Built-in und lässt sich dort abschalten. Die Schalter, die installierte Mods anhalten, etwa disableAllHooks oder --safe-mode, halten die mitgelieferten nicht an.

Wann was passt

Hook, Mod, Skill und MCP-Server überschneiden sich. Für einen festen Befehl oder Pfad braucht es keinen Code. Dafür genügt eine Rechteregel wie Bash(npm test). Ein Hook passt, wenn man mit einem vorhandenen Skript abweisen, freigeben oder mitschreiben will. Ein Mod passt, wenn man einen eigenen Bereich, einen eigenen Befehl oder ein umgeschriebenes Ereignis braucht (Doku zu Mods (externe Seite, code.claude.com)). Skills stehen in Kapitel 17, MCP-Server in Kapitel 19. Die Gegenüberstellung aller vier steht auf der zweiten Ebene.

Dort folgen auch die Ereignisse, Filter, Fristen und der Bau eines Mods. Die dritte Ebene erzählt, wie die Hooks seit Juni 2025 gewachsen sind, warum Mods dazukamen und was Codex anders löst.

Quellen

13 Einträgealle erreichbar

Erreichbarkeit automatisch geprüft

  • Dokumentationerreichbar

    Automate actions with hooks (Claude Code Docs, Anthropic) (externe Seite, code.claude.com)

    code.claude.comgeprüft 25.10.2026

    Anleitung zu Hooks: Shell-Befehle, die Claude Code an festen Stellen der Sitzung selbst ausführt, etwa nach einer Dateiänderung, am Ende einer Antwort oder vor einer Rückfrage, mit Beispielen zum Formatieren, Benachrichtigen und Sperren.

  • Dokumentationerreichbar

    Anthropic, Hooks reference (externe Seite, code.claude.com)

    code.claude.comgeprüft 25.10.2026

    Die Herstellerdokumentation zu den Ereignissen, an denen sich eigene Programme einhängen lassen. Für das Gedächtnis sind zwei Stellen entscheidend, und sie sagen das Gegenteil dessen, was man erwartet. PreCompact kann das Verdichten anhalten, mit Exit-Code 2 oder "decision": "block", aber nichts beisteuern: Seine Ausgabe geht ins Debug-Protokoll. PostCompact hat laut Tabelle keine Entscheidungsgewalt und dient nur Nebenwirkungen wie Protokoll oder Aufräumen; es bekommt die fertige Zusammenfassung als compact_summary. Einspeisen kann SessionStart, dort fügt das Feld hookSpecificOutput.additionalContext dem Kontext etwas hinzu, und dieses Ereignis kennt fünf Auslöser, darunter ausdrücklich "compact". Der Rückweg nach dem Verdichten führt damit über den Sitzungsstart statt über das Verdichten selbst. Für den Auto-Modus kann ein PostToolUse-Hook dem Ergebnis eines Aufrufs im Feld classifierContext eine Notiz für den Klassifikator anhängen. Kommt der Hook aus den Einstellungen, gilt sie als ungeprüfter Hinweis der Anwendung und nie als Wille des Menschen. Seit Version 2.1.295 kann ein Befehls- oder HTTP-Hook mit onFailure: "block" festlegen, dass sein Scheitern die Handlung abweist: ein Rückgabewert außer 0 und 2, ein Skript, das nicht startet, eine Zeitüberschreitung. Am Ende einer Antwort und bei Hooks im Hintergrund wirkt die Einstellung nicht. Abgerufen am 09.10.2026.

  • Dokumentationerreichbar

    Mods overview (Claude Code Docs, Anthropic) (externe Seite, code.claude.com)

    code.claude.comgeprüft 25.10.2026

    Dokumentation mit der Mindestversion 2.1.287, der Standardaktivierung und den Wegen, einzelne oder alle Mods abzuschalten.

  • Dokumentationerreichbar

    Create a mod (Claude Code Docs, Anthropic) (externe Seite, code.claude.com)

    code.claude.comgeprüft 25.10.2026

    Anleitung zum ersten Mod: Claude schreibt ihn aus einer Beschreibung, oder man legt das Hooks-Modul selbst an und prüft es mit Neuladen und Validieren.

  • Dokumentationerreichbar

    React to events with a mod (Claude Code Docs, Anthropic) (externe Seite, code.claude.com)

    code.claude.comgeprüft 25.10.2026

    Wie ein Mod auf Ereignisse antwortet: Werkzeugaufrufe, Prompts und Züge beobachten, umschreiben oder beantworten, und wie mehrere Mods nebeneinander greifen.

  • Dokumentationerreichbar

    Anthropic, Claude Code changelog (externe Seite, code.claude.com)

    code.claude.comgeprüft 25.10.2026

    Die Versionsliste von Claude Code mit Neuerungen, Verbesserungen und Fehlerbehebungen je Fassung, erzeugt aus der Datei CHANGELOG.md im GitHub-Repository. Jede Fassung steht mit ihrem Erscheinungsdatum da, am 09.10.2026 zuoberst 2.1.296 vom selben Tag.

  • Dokumentationerreichbar

    Mods reference (Claude Code Docs, Anthropic) (externe Seite, code.claude.com)

    code.claude.comgeprüft 25.10.2026

    Referenz der Mods: Aufbau des Hooks-Moduls, Ereignisse, Methoden der Mods-API, Orte zum Zeichnen, Grenzen und Einstellungen.

  • Dokumentationerreichbar

    Manage mods for your organization (Claude Code Docs, Anthropic) (externe Seite, code.claude.com)

    code.claude.comgeprüft 25.10.2026

    Mods in Organisationen: über verwaltete Einstellungen eigene Mods erzwingen, fremde abschalten und prüfen, was ein Mod darf.

  • Dokumentationerreichbar

    Anthropic, Keep Claude working toward a goal (externe Seite, code.claude.com)

    code.claude.comgeprüft 25.10.2026

    Die Dokumentation zur Zielbedingung, der zweiten der vier Härtestufen. Daran hängt ein Ratschlag zur Formulierung: Der Bewerter urteilt allein über das, was in der Unterhaltung steht, ohne selbst Befehle auszuführen oder Dateien zu lesen. Als Beispiel für eine Nebenbedingung nennt die Seite ausgerechnet den Fall, um den es beim testgetriebenen Arbeiten geht, nämlich dass keine weitere Testdatei angefasst wird.

  • Ankündigung des Herstellerserreichbar

    Customize Claude Code with Mods in TypeScript (Anthropic, 1. Oktober 2026) (externe Seite, claude.com)

    claude.comgeprüft 25.10.2026

    Anthropics Ankündigung der Mods: Aufbau als TypeScript-Funktionen in Plugins, Zugriff wie Claude Code selbst, ausdrücklich ohne Sandbox.

  • Dokumentationerreichbar

    Anthropic, Configure permissions (externe Seite, code.claude.com)

    code.claude.comgeprüft 25.10.2026

    Die Herstellerdokumentation zu den Rechteregeln. Sie enthält den Satz, der die Grenze zwischen einer Projektanweisung und einem Riegel zieht: Durchgesetzt wird von der Umgebung, und was im Auftrag steht, beeinflusst nur den Versuch. Dazu die Rangfolge der drei Regelarten und eine Falle, die still bleibt: Pfadregeln werden allein gegen Edit und Read geprüft, eine auf Write geschriebene Regel nimmt die Umgebung an und schlägt sie nie nach.

  • Dokumentationerreichbar

    Anthropic, Plugin security and trust (externe Seite, code.claude.com)

    code.claude.comgeprüft 25.10.2026

    Die Dokumentation zur Frage, ob man einem Plugin vertraut: was ein Plugin auf dem eigenen Rechner tun kann, wie man eines prüft und wie man es wieder entfernt.

  • Dokumentationerreichbar

    OpenAI, Hooks (externe Seite, learn.chatgpt.com)

    learn.chatgpt.comgeprüft 25.10.2026

    OpenAIs Dokumentation zu Hooks in Codex: Skripte oder Werkzeuge eines MCP-Servers, die an festen Stellen einer Sitzung laufen, eingetragen in hooks.json oder config.toml. Codex merkt sich die Zustimmung zu jedem Hook über einen Hashwert und überspringt neue oder geänderte Hooks, bis man sie geprüft hat. Hooks mit Prompt oder Agent überspringt es.

↑↓ auswählenEnter öffnenDie Suche läuft im Browser. Nichts wird übertragen.