Kurzfassung
- Behalte drei der zehn Mods: collision-guard, model-router und auto-handoff. Jeder zeigte bei einer headless Leseaufgabe gemessen ungefähr null Overhead, und jeder löst ein Problem, das du benennen kannst.
- Lösche next-steps. Es forkt die Session nach jeder passenden Antwort und kostete in unserem Lauf +250 Output-Tokens und +2850 ms pro Turn, auch auf Oberflächen, die seine Vorschläge nie anzeigen.
- Lösche cache-keeper (+1589 ms, bezahlte Modell-Pings), recording-mode (es maskiert die Anzeige, nicht den gespeicherten Verlauf) und session-bookmarks (ein Lesezeichen, das das Modell aufrufen, Prozesse starten und Dateien schreiben kann).
- Lösche goal-meter, repo-heatmap und flight-recorder, außer du willst die Visualisierungen. Sie kosten fast nichts und zeigten keinen messbaren Nutzen.
- Jeder Guard-Mod schlägt standardmäßig offen fehl. Ohne
.catch-Handler wird ein Guard, der eine Exception wirft, übersprungen und der Befehl läuft. - Mods sind nicht gesandboxt. Lies die Ausgabe von
claude plugin validate, bevor du einen installierst.
Was die Messungen zeigen
Hype und Größenordnung. Der Release-Tweet hatte 4.138.918 Aufrufe, 20.021 Likes und 13.440 Lesezeichen, als wir ihn am 2026-10-03 festgehalten haben s11. Der Community-Katalog listet 1018 Mods in 873 Kandidaten-Repos, gescannt am 2026-10-03 gegen Claude Code 2.1.288 s9.
Ein Mod ist eine Funktion, die sich in ein Event einklinkt. Sie kann vor dem Event laufen, danach, anstelle davon oder es umschließen s1. Mods setzen Claude Code v2.1.287 oder neuer voraus und sind standardmäßig aktiv s2.
Zuerst die Sicherheit. Anthropics eigene Formulierung: "Mods run with the same access to your machine as Claude Code itself. They aren't sandboxed" s1. Ein Prozess, den ein Mod startet, läuft außerhalb der Sandbox, selbst wenn du das Sandboxing einschaltest s2. Auch wenn Read(.env) verboten ist, kann ein Mod diese Datei mit $.fs.read lesen oder ein Programm starten, das es tut s6. Im Katalog-Scan starten 409 Mods Host-Prozesse, 167 schreiben Dateien, 150 greifen aufs Netzwerk zu, und 28 lassen sich in dieser Version nicht validieren s9.
Reichweite gegen Versprechen. In unserem statischen Audit ruft session-bookmarks $.model.complete, $.process.run und $.fs.write auf, die größte Reichweite im Set für eine Lesezeichen-Funktion. next-steps hatte den kleinsten Fußabdruck: kein fs, kein process, kein env. claude plugin validate gibt die Zeilen calls: und env reads: aus, die wir für dieses Audit genutzt haben s6.
Der Flaggschiff-Mod hat Kosten pro Turn. next-steps forkt die Session mit $.model.fork bei turn.complete, und das README sagt, der Fork "costs about one short reply" s10. Vorschläge werden nur im Terminal angezeigt; andere Oberflächen zeigen nichts s10. Der Fork lässt sich nicht abschalten. In unserem headless Lauf kamen +250 Output-Tokens und +2850 ms dazu, wobei der Fork in der Session-Nutzung landete, obwohl nichts angezeigt wurde s10.
Dokumentierte Grenzen. Die Ausführungszeit eines Hooks ist auf 10 Sekunden pro Event begrenzt, $.fs-Lese- und Schreibzugriffe auf 4 MiB pro Datei und $.store auf insgesamt 4 MiB JSON s3.
Guards schlagen offen fehl. Laut Doku wird ein Hook ohne .catch-Handler, der eine Exception wirft, ein Timeout hat oder die falsche Form zurückgibt, übersprungen, und der nächste Handler läuft an seiner Stelle s7. Wir haben es reproduziert: Ein Bash-Guard, der eine Exception wirft, ohne .catch, ließ touch ./marker-failopen.txt die Datei erzeugen. Derselbe Guard mit einem .catch, das {deny} zurückgibt, erzeugte keine Datei. Ein Praxisbericht beschreibt einen Guard, der aktiviert war und lief, aber nichts tat, während plugin list weiter "enabled" anzeigte s8.
Ein offener Bug in 2.1.288: Ein deny nach await next(e) stoppt das Tool nicht, und die Datei wurde 3 von 3 Mal geschrieben, während dem Modell gesagt wurde, das Schreiben sei fehlgeschlagen s5.
Mods gegen Settings-Hooks. Ein Settings-Hook startet pro Aufruf einen Prozess. Wir haben den Start gemessen: 2,2 ms für ein true-Binary, 8,3 ms für bash -c 'exit 0', 26,1 ms für python3 -c 'pass' und 43,1 ms für node -e ''. Bei 5.993 Tool-Aufrufen pro Woche kostet der node-Hook 258 s. Ein In-Process-Mod zahlt nichts davon. Die Doku empfiehlt einen Settings-Hook, wenn du bereits ein Skript hast, das ein Event blockiert, erlaubt oder protokolliert s2. Ein Migrationsbericht ging von 27 Shell-Hooks auf 5 Mods s8.
Maskierung gilt nur für die Anzeige. recording-mode schreibt um, was ui.render zeichnet. ~/.claude/history.jsonl behält den Prompt, wie er getippt wurde, und ein Tester fand seinen Canary-String 7 Mal in queue-operation-Einträgen des Transkripts s5.
Wo Mods nicht laufen. Headless claude -p und das Agent SDK führen Hooks aus, zeichnen aber nichts; eine Desktop-WSL-Session führt keines von beidem aus s2.
Vertrauen in den Katalog. Ein Tester veröffentlichte einen Mod, dessen Button mit $.process.run ein Programm startete und eine Datei in sein Home-Verzeichnis schrieb. Er ließ sich wie jeder andere Mod ohne Warnung installieren s5. Das war ein selbst veröffentlichter Proof of Concept, kein Angriff in freier Wildbahn.
Messwerte
Korpus: die letzten 7 Tage eines echten Setups, 85 Sessions, 4 Projekte, 882 User-Prompts, 11.010 Assistant-Turns, 5.993 Tool-Aufrufe. Benchmark auf Claude Code 2.1.288 (macOS).
| config | dur ms | Δdur | out tok | Δout | task ok |
|---|---|---|---|---|---|
| baseline | 3980 | 0 | 247 | 0 | 3/3 |
| next-steps | 6830 | +2850 | 497 | +250 | 3/3 |
| cache-keeper | 5569 | +1589 | 367 | +120 | 3/3 |
| recording-mode | 8240 | +4260* | 598 | +351* | 3/3 |
| goal-meter | 3722 | -258 | 244 | -3 | 3/3 |
| collision-guard | 4565 | +585 | 376 | +129* | 3/3 |
| repo-heatmap | 4119 | +139 | 257 | +10 | 3/3 |
| flight-recorder | 3949 | -31 | 261 | +14 | 3/3 |
| model-router | 3698 | -282 | 238 | -9 | 3/3 |
| session-bookmarks | 4152 | +172 | 235 | -12 | 3/3 |
| auto-handoff | 4051 | +71 | 248 | +1 | 3/3 |
Mit * markierte Zeilen sind vermutlich Varianz der Antworten. recording-mode war während des Laufs aus und injiziert im ausgeschalteten Zustand nichts.
Protokoll zum Nachmessen:
- Installiere jeweils nur einen Mod und prüfe, dass er
claude plugin validatebesteht. - Führe dieselbe schreibgeschützte Aufgabe headless mit
claude -pauf haiku aus, 3 Wiederholungen pro Konfiguration, und nimm den Median von Dauer und Output-Tokens. - Nenne nur die Deltas von Dauer und Output-Tokens. Die Kosten in USD schwanken mit der Cache-Reihenfolge zwischen den Konfigurationen, ignoriere sie also.
- Für die Startkosten miss 30 Starts jedes Hook-Bodys, nimm den Median und multipliziere mit deiner wöchentlichen Zahl an Tool-Aufrufen.
Das machst du am Montag
- Führe
claude plugin validatefür jeden installierten Mod aus und lies die Zeilencalls:undenv reads:. - Deaktiviere jeden Mod, dessen Reichweite (Prozess, fs-Schreiben, Modellaufruf) größer ist als seine Aufgabe.
- Deaktiviere next-steps, wenn du überwiegend in headless Läufen, im VS-Code-Panel oder im SDK arbeitest, wo seine Vorschläge nie angezeigt werden.
- Füge jedem Guard-Mod, auf den du dich verlässt, einen
.catch-Handler hinzu, der{ deny: ... }zurückgibt. - Beweise, dass jeder Guard geschlossen fehlschlägt: Lass ihn eine Exception werfen, führe einen Befehl aus, der eine Marker-Datei erzeugt, und prüfe, dass die Datei nicht erscheint.
- Verlass dich nicht auf einen Maskierungs-Mod, um Secrets aus
~/.claude/history.jsonloder dem Transkript herauszuhalten. Prüfe beides auf der Platte. - Ersetze Shell-Hooks pro Aufruf, die node oder python starten, durch einen In-Process-Mod oder ein kompiliertes Binary, wenn sich die Startkosten über deine wöchentlichen Tool-Aufrufe summieren.
- Lerne die Ausschalter: einen Mod in
/plugindeaktivieren,--safe-modefür eine Session,"disableAllHooks": truein~/.claude/settings.jsonfür überall.
Weiterlesen
- Bau deinen eigenen: eine praktische Anleitung für einen Mod mit etwa 80 Zeilen, mit den Fallstricken, die zählen (Zustand auf Modulebene wird beim Hot Reload zurückgesetzt, halte Daten also in
$.state) s4. - Entscheide aus deinem eigenen Verlauf, ob Mod, Hook, Skill oder Settings: Ein Praktiker empfiehlt, zuerst deine Session-Logs nach wiederkehrenden Problemen zu durchsuchen s12.
- Lies die vollständige Event-Liste und die Limits, bevor du einen Guard schreibst s3.
- Organisationsweite Verwaltung ist hier nicht Thema. Der eine Punkt für Solo-Entwickler:
sec-defaultwird geladen, wenn der Rechner verwaltete Einstellungen hat oder du mit einem Team- oder Enterprise-Plan angemeldet bist, und es fügt keine weiteren Einschränkungen hinzu s6. - Der Ursprung des Designs, samt einem in 2.1.288 behobenen Worktree-Isolationsbug und den Runtime-Interna, steht im offenen Thread s5.
- Beispiel-Mods von Anthropic (token-weather, blast-radius, replay-theater) sind als ohne Support geteilt gelistet s2.
Quellen
- Customize Claude Code with mods, Anthropic-Blog. Warum lesen: die offizielle Definition und die Warnung vor fehlender Sandbox in Anthropics eigenen Worten.
- Mods overview, Doku. Warum lesen: der Vergleich Mods gegen Hooks, die Matrix der Oberflächen und die Ausschalter.
- Mods reference, Doku. Warum lesen: die vollständige Event-Liste und die dokumentierten Limits.
- Getting started with Claude Code mods, claude.dev (Addy Osmani). Warum lesen: die beste praktische Anleitung, mit Fallstricken, die keine andere Quelle abdeckt.
- Mods issue #91870, GitHub. Warum lesen: Praxisberichte zu Isolation, Fail-closed-Verhalten und Lecks im Verlauf.
- Manage mods for your organization, Doku. Warum lesen: das Validate-Audit und die Grenzen jeder Sicherheitskontrolle.
- React to events with a mod, Doku. Warum lesen: die Reihenfolge der Middleware-Kette und der Fail-open-Standard.
- The Guard I Installed Was Enabled, Running, and Doing Nothing, Blog. Warum lesen: der einzige Migrationsbericht aus der Praxis, von 27 Shell-Hooks auf 5 Mods.
- awesome-claude-code-mods, GitHub. Warum lesen: Größe des Ökosystems und eine fertige Audit-Methode.
- next-steps plugin source, GitHub. Warum lesen: die tatsächliche Funktionsweise des Flaggschiff-Mods, einschließlich des Forks pro Turn.
- ClaudeDevs release tweet, X. Warum lesen: die Launch-Ankündigung und ihre Reichweite.
- Avid's session-log mining workflow, X. Warum lesen: eine Methode, um zu entscheiden, was du bauen oder installieren willst, bevor du irgendetwas installierst.
FAQ
Sind Mods gesandboxt?
Nein. Anthropic sagt, Mods laufen mit demselben Zugriff auf deinen Rechner wie Claude Code selbst s1. Programme, die ein Mod startet, laufen ebenfalls außerhalb der Sandbox s2.
Was passiert, wenn mein Guard-Mod abstürzt?
Ohne .catch-Handler wird er übersprungen und der Befehl läuft s7. Füge ein .catch hinzu, das { deny: ... } zurückgibt, damit er geschlossen fehlschlägt.
Kostet ein Mod Tokens?
Nur wenn er das Modell aufruft. Von den zehn, die wir getestet haben, zeigten next-steps und cache-keeper messbare Kosten; die anderen zeigten in unserem Lauf keinen belastbaren Overhead.
Wie schalte ich Mods schnell aus?
Deaktiviere einen in /plugin, starte eine Session mit --safe-mode oder setze "disableAllHooks": true in ~/.claude/settings.json s2. Keine dieser Optionen stoppt eingebaute Mods.
Kann ich prüfen, was ein Mod tut, bevor ich ihn installiere?
Ja. claude plugin validate listet die Hooks, die API-Aufrufe und die Umgebungsvariablen auf, die er liest s6.
AIDive