Kurz gesagt: Ein Mod ist ein Claude-Code-Plugin, dessen Code aus JavaScript- oder TypeScript-Funktionen besteht, die Claude Code bei Ereignissen aufruft: bei einem Tool-Aufruf, einem abgeschickten Prompt, beim Zeichnen der Oberfläche. Er läuft im Prozess von Claude Code und darf deshalb Dinge, die ein Skill, ein Settings-Hook oder ein MCP-Server nicht kann, etwa ein Panel neben den Verlauf zeichnen oder einen Tool-Aufruf anhalten. Du installierst einen Mod wie jedes andere Plugin aus einem Marketplace, oder du beschreibst ihn in einer Sitzung und lässt ihn von Claude schreiben.
Mod, Settings-Hook, Skill, MCP-Server
Die Doku nennt die Funktionen eines Mods Hooks. Die Shell-Befehle und HTTP-Aufrufe aus der Einstellungsdatei heißen dort ebenfalls Hooks, auf den Mod-Seiten aber Settings-Hooks. Was wofür taugt:
| Mod | Settings-Hook | Skill | MCP-Server | |
|---|---|---|---|---|
| Was es ist | Funktionen in einem Plugin, die Claude Code im eigenen Prozess aufruft | Shell-Befehl, HTTP-Aufruf oder Prompt, den Claude Code bei einem Lebenszyklus-Ereignis ausführt | eine SKILL.md mit Anweisungen, die Claude liest | ein externer Prozess oder Dienst, der Claude Tools gibt |
| Was es ändern kann | Tool-Aufrufe, Prompts, Befehle, Züge und was die Oberfläche zeichnet | ob ein Tool-Aufruf oder Prompt durchgeht, Argumente und Ergebnis eines Tool-Aufrufs, Kontext für Claude | was Claude weiß und tut | welche Tools Claude hat |
| Zeichnen in der Oberfläche | ja | nein | nein | nein |
| Was du schreibst | JavaScript oder TypeScript | ein Skript und einen Eintrag in settings.json | Markdown | einen Server in beliebiger Sprache |
Ein Plugin kann alles davon zugleich enthalten. Ein Mod kann also im selben Paket stecken wie ein Skill und ein MCP-Server.
Voraussetzungen
Mods sind an, ohne dass du etwas einschaltest. Du brauchst nur eine aktuelle Version:
- Terminal: Claude Code v2.1.287 oder neuer. In der Shell
claude --version. - Desktop-App: Sie bringt ihre eigene Kopie von Claude Code mit, dort laufen Mods ab 2.1.286. In einer lokalen Sitzung im Code-Tab
/statuseingeben und die Zeile zu Claude Code lesen.
Ob Mods bei dir überhaupt laden dürfen, sagt dir ein Befehl in einem Verzeichnis, in dem kein Mod liegt:
claude plugin test
| Meldung enthält | Bedeutung |
|---|---|
no hooks module to load | Mods dürfen laden, hier liegt nur keiner |
hooks modules are turned off here | disableAllHooks in deinen Einstellungen oder eine Richtlinie deiner Organisation blockiert sie |
the rollout switch served off | Anthropic hat installierte Mods aus der Ferne abgeschaltet |
the rollout switch was saved off by an earlier session | Der Wert stammt aus einer früheren Sitzung und kann veraltet sein. Einmal claude starten, dann erneut prüfen |
Hast du in der Early-Access-Zeit CLAUDE_CODE_ENABLE_FUNCTION_HOOKS gesetzt, nimm die Variable raus. Ab v2.1.287 ignoriert Claude Code sie; auf 0 gesetzt hält sie Mods nicht mehr fern.
Wo ein Mod läuft
Die Hooks laufen in jeder Sitzung, die das Plugin lädt. Gezeichnet wird nur an zwei Stellen:
| Wo du Claude Code benutzt | Hooks | Was der Mod zeichnet |
|---|---|---|
claude im Terminal, auch im Terminal einer IDE und im JetBrains-Plugin | ja | ja |
| Code-Tab der Desktop-App, außer in einer WSL-Sitzung | ja | ja, bis auf die Elemente, die nur im Terminal gehen |
| WSL-Sitzung in der Desktop-App | nein, dort gibt es keine Plugins | nein |
| Chat-Panel der VS-Code-Erweiterung | ja | nein |
claude -p und das Agent SDK | ja | nein |
| Remote Control von claude.ai oder aus der App | ja, in der Sitzung auf deinem Rechner | im Terminal auf deinem Rechner |
| Cloud-Sitzung | ja, für ein Plugin, das die Sitzung erreicht | nein |
Ein Mod kann abfragen, in welcher App er läuft, und dort, wo nichts gezeichnet wird, auf eine Zeile im Verlauf oder die Textantwort eines Befehls ausweichen.
Einen Mod installieren
Ein Mod kommt als Plugin aus einem Marketplace. Du gibst den Namen des Plugins, ein @ und den Namen des Marketplace an:
# in einer Claude-Code-Sitzung
/plugin install token-chart@your-org
# in der Shell
claude plugin install token-chart@your-org
Installierst oder aktualisierst du aus der Shell, während eine Sitzung offen ist, lädt /reload-plugins den Mod dort nachträglich. Sonst kommt er beim nächsten Start von Claude Code.
Vorher nachsehen, was er darf
Ein Mod ist Code, der mit deinen Rechten läuft, und er steckt in keiner Sandbox. Einmal geladen, kann er Dateien lesen und schreiben, wo dein Benutzerkonto das darf, Programme starten und Netzwerkanfragen stellen. Er kann Umgebungsvariablen und Einstellungsdateien samt einem API-Key darin lesen, jeden Prompt und jeden Tool-Aufruf sehen, einen Prompt oder Tool-Aufruf umschreiben, einen Tool-Aufruf genehmigen, bevor du gefragt wirst, und Modelle auf deinem Kontingent aufrufen. Schaltest du Sandboxing ein, umfasst es die Bash-Befehle von Claude; ein Prozess, den ein Mod startet, läuft daneben.
Installiere also nur aus Quellen, denen du traust. Welche Ereignisse ein Mod abfängt und was er von Claude Code anfordert, listet dir ein Befehl, ohne den Code auszuführen. Hol dir vorher die Dateien des Plugins, zum Beispiel per git clone:
claude plugin validate ./some-mod
Die Zeilen hooks: und calls: in der Ausgabe sind die Antwort.
Eines kann ein Mod nicht: den Berechtigungs-Dialog verändern. Was dort steht, steht dort. Und genehmigt ein Mod einen Aufruf, den eine deny-Regel verbietet, bleibt der Aufruf verboten; die eingebaute Wache schreibt dann tried to lift a deny rule in your settings.
Claude einen Mod schreiben lassen
Beschreib in einer interaktiven Sitzung, was du willst, etwa: mach einen Mod, der den aktuellen Git-Branch über der Eingabe zeigt. Claude arbeitet dabei mit dem eingebauten Skill plugin-authoring, den du auch selbst laden kannst, mit /plugin-authoring.
- Beschreiben. Claude legt den Mod in einem eigenen Verzeichnis unter
~/.claude/dev-mods/<Sitzungs-ID>/<name>/ab. In den BerechtigungsmodidefaultundacceptEditsfragt Claude Code vor jeder einzelnen Datei, weil~/.claudeein geschützter Pfad ist. - Zustimmen. Bei der ersten Datei fragt Claude Code, ob Hot Reloading für diese Sitzung an soll. Mit Enable for this session laden die Mods am Ende des Zugs und danach nach jeder Änderung neu; die Antwort gilt für die ganze Sitzung, auch nachdem du sie fortgesetzt hast. Mit Not now bleiben die Dateien liegen und laden erst beim nächsten Start dieser Sitzung.
- Prüfen.
/plugineingeben und mit Tab zum Tab Installed wechseln. Dort steht der Mod, und dort schaltest du ihn auch aus. - Behalten. Ein so geschriebener Mod lädt nur in der Sitzung, die ihn gemacht hat, und deren Mods-Ordner löscht Claude Code, sobald er älter ist als
cleanupPeriodDays. Kopier das Verzeichnis woandershin, etwa nach~/mods/git-branch, und lade es von dort mitclaude --plugin-dir ~/mods/git-branch. Für andere Leute: in einen Marketplace legen.
Nicht laden kann ein so geschriebener Mod, wenn niemand zustimmen kann (claude -p, Modus dontAsk), wenn du das Verzeichnis nicht als vertrauenswürdig bestätigt hast, oder wenn Mods abgeschaltet sind.
Mods zum Ausprobieren
Anthropic legt Beispiel-Mods im Verzeichnis claude-code/mods des Repositorys claude-code-playground ab. Jeder ist ein vollständiges Plugin, das README sagt, wie er gebaut wurde. Support gibt es dafür nicht.
token-weatherzeichnet über der Eingabe eine Vorhersage für dein Kontextfenster.blast-radiushält einen riskanten Shell-Befehl auf, etwarm -rfoder einen Force-Push, zeigt, was er ändern würde, und gibt dir zwei Knöpfe.replay-theaterbringt einen Befehl/replay, der die Datei-Änderungen des letzten Zugs durchblättert.
Auch ein Beispiel-Mod läuft mit deinen Rechten. Klone das Repository, sieh dir mit claude plugin validate an, was drinsteckt, und lade das Verzeichnis dann für eine Sitzung:
claude --plugin-dir <pfad-zum-klon>/claude-code/mods/<name>
Soll einer bleiben, trägst du das Verzeichnis claude-code/mods deines Klons als Marketplace ein und installierst den Mod aus claude-code-playground-mods. Der Marketplace zeigt auf deinen Klon: verschiebst oder löschst du ihn, lädt der Mod nicht mehr.
Die eingebauten Mods
Ein Teil von Claude Code ist selbst als Mod gebaut, zum Beispiel /diff. /plugin listet diese Stücke im Tab Installed unter Built-in. Aktualisieren oder deinstallieren kannst du sie nicht, und in der Zeile mods active tauchen sie nicht auf.
Name in /plugin | Was er tut | Ausschalten |
|---|---|---|
cc-plugin-agents-md | lädt AGENTS.md als Projektanweisung | in /plugin deaktivieren, oder festlegen, welche Anweisungsdateien laden |
cc-plugin-diff | übernimmt /diff und zeichnet dessen Panel | in /plugin deaktivieren. /diff bleibt, dann antwortet die eingebaute Variante des Befehls |
cc-plugin-plugin-authoring | gibt Claude den Skill plugin-authoring zum Schreiben von Mods; enthält selbst keinen Mod-Code | in /plugin deaktivieren |
cc-plugin-sec-default | schützt das, was deine Organisation verwaltet, vor selbst installierten Mods | nicht möglich; die Reihenfolge setzt ein Admin in den verwalteten Einstellungen |
cc-plugin-telemetry | schickt die Analytics-Daten von Claude Code und seinen eingebauten Mods | in /plugin deaktivieren, oder Analytics aus, etwa mit DISABLE_TELEMETRY |
cc-plugin-you-should-know | lässt einen Nebenagenten mitlaufen und meldet über der Eingabe, was dir bei längeren Aufgaben entgehen könnte | in /plugin deaktivieren. Standardmäßig aus, einschalten mit /plugin enable cc-plugin-you-should-know@builtin |
Der Quellcode einiger dieser Mods liegt offen im Verzeichnis mods des Claude-Code-Repositorys, jeder mit Hooks-Modul und Tests. diff, agents-md, sec-default und telemetry sind die lesbarsten Vorlagen für einen eigenen Mod.
Welche Mods geladen sind, und warum einer nichts tut
/plugin am Claude-Code-Prompt zeigt unter den Tabs eine blasse Zeile mit Anzahl und Namen, etwa 1 mod active · first-mod. Fehlt dein Mod dort, hat sein Hooks-Modul nicht geladen.
Scheitert ein Modul oder ein Hook, überspringt Claude Code es und die Sitzung läuft weiter. Ein kaputter Mod sieht deshalb aus wie einer, der nichts tut. Zwei Schritte:
- In der Shell
claude plugin validate ./first-mod. Das findet ein falsch geschriebenes Ereignis, ein kaputtes Manifest und ein Modul, das Claude Code nicht lesen kann, ohne dass du eine Sitzung startest. - Die Zeile lesen, die Claude Code schreibt, wenn es etwas überspringt. Wo sie landet, hängt von der Sitzung ab: in einer Sitzung mit Hot Reloading als blasse Zeile im Verlauf, in jeder anderen interaktiven Sitzung nur im Debug-Log (
claude --debug), beiclaude -pmit--plugin-dirauf stderr.
Die Zeile beginnt mit hooks module, dem Namen des Mods und not loaded:. Dahinter steht der Grund, etwa another plugin of that name loads first: ein anderes aktives Plugin trägt denselben Namen und hält ihn. Steht hooks module did not load: samt Datei und Zeile, liegt der Fehler in deinem Code.
Mods abschalten
- Einen Mod: sein Plugin im Tab Installed in
/plugindeaktivieren oder deinstallieren. - Alle, für eine Sitzung:
claude --safe-mode. Das schaltet deine übrigen Anpassungen mit ab. - Alle selbst installierten, in jeder Sitzung:
"disableAllHooks": truein~/.claude/settings.json. Deine Settings-Hooks und deine eigene Statuszeile sind damit auch aus. Was deine Organisation verwaltet, läuft weiter.
disableAllHooks und das allowManagedModsOnly deiner Organisation stoppen den Mod und lassen den Rest des Plugins in Ruhe: Es bleibt installiert, und seine Skills, Befehle, Agenten und MCP-Server laden weiter. Die eingebauten Mods hält keine dieser Einstellungen auf, auch --bare und --safe-mode nicht.
Grenzen
- Gezeichnet wird nur im Terminal und im Code-Tab der Desktop-App. Im Chat-Panel der VS-Code-Erweiterung, bei
claude -p, im Agent SDK und in einer Cloud-Sitzung laufen die Hooks, sichtbar wird davon nichts. - In einer WSL-Sitzung der Desktop-App gibt es keine Plugins, also auch keinen Mod.
- Keine Sandbox, und keinen Weg, den Berechtigungs-Dialog zu verändern.
- Eine Datei eines Hooks-Moduls darf Scopes, also Funktionen, Blöcke und Schleifen, nicht tiefer als 2.000 verschachteln, sonst lädt das Modul nicht.
- Deine Organisation kann mit
allowManagedModsOnlynur ihre eigenen Mods zulassen.claude plugin testmeldet das nicht; du merkst es erst, wenn Claude Code einen installierten Mod ablehnt.
Änderungen
- 2026-10-13: Erste Fassung, Satz für Satz gegen die Doku vom 13.10.2026 geprüft.
Quellen
- Mods overview (code.claude.com)
- Create a mod (code.claude.com)
- Troubleshoot a mod (code.claude.com)