Gefährliche Befehle in Claude Code blockieren, bevor sie laufen
Verweigert rm -rf /, Force-Push auf main, DROP TABLE, curl | sh und andere destruktive Bash-Befehle vor der Ausführung.
Berechtigungen
- Fängt Tool-Aufrufe abSieht jeden Tool-Aufruf von Claude (tool.call / tool.check) und könnte ihn blockieren oder verändern.
- Verändert die OberflächeZeichnet in die Oberfläche von Claude Code: Leisten, Bereiche, Statustext, Toasts (ui.render / $.ui.*).
- getestet mit
- v2.1.291
- zuletzt getestet
- erfordert
- Claude Code ≥ 2.1.287
- Oberflächen
- Toast
- Quelle
- ClaudeMods (MIT)
In Claude Code installieren:
/plugin install cm-block-dangerous-commands --marketplace rotbit/claudemods-marketplaceWas macht diese Mod?
Mit dieser Mod kannst du gefährliche Befehle in Claude Code blockieren, die Claude gerade über sein Bash-Tool ausführen will. Bevor ein Shell-Befehl läuft, wird er gegen eine kurze Liste von Regeln geprüft. Ein Treffer wird verweigert, Claude erfährt, welche Regel gegriffen hat und warum, und du siehst einen Toast mit dem Namen der Regel. Harmlose Befehle laufen unverändert durch.
Die eingebauten Regeln decken rm -rf auf /, ~, $HOME, . oder * ab; git push --force auf main oder master; git clean -fdx; SQL-DROP TABLE, DROP DATABASE, DROP SCHEMA und TRUNCATE; chmod -R 777 /; mkfs; dd auf ein Festplattengerät; das Umleiten von Ausgaben auf eine rohe Festplatte; das Pipen von curl oder wget in eine Shell; und die klassische Fork-Bombe. git reset --hard gibt es als optionale Regel, die du selbst einschaltest. Benötigt Claude Code 2.1.287 oder neuer.
Demo
In der Aufnahme wird Claude gebeten, in einem Demo-Projekt etwas Zerstörerisches zu tun. Die Mod verweigert den Bash-Aufruf, ein Toast nennt die Regel, die gegriffen hat, und Claude liest die Begründung und antwortet, ohne den Befehl auszuführen.
Installation
Nutze eine der Installationsmethoden im Installationsblock. Der Schutz ist ab dem nächsten Tool-Aufruf aktiv; nach /reload-plugins ist kein Neustart nötig.
$ install cm-block-dangerous-commands
Erfordert Claude Code ≥ 2.1.287
1.Eine Zeile, direkt in Claude Code
/plugin install cm-block-dangerous-commands --marketplace rotbit/claudemods-marketplaceIn eine laufende Sitzung einfügen (v2.1.275+). Claude Code fragt zuerst, ob der Marketplace hinzugefügt werden soll.
2.Aus deiner Shell
claude plugin marketplace add rotbit/claudemods-marketplace claude plugin install cm-block-dangerous-commands@claudemodsFühre danach in jeder bereits geöffneten Sitzung /reload-plugins aus.
3.Ohne Installation ausprobieren
git clone https://github.com/rotbit/claudemods-marketplace claude --plugin-dir ./claudemods-marketplace/cm-block-dangerous-commandsLädt die Mod nur für eine Sitzung. An deinen Einstellungen wird nichts geändert.
So funktioniert es
Die gesamte Logik steckt in einem einzigen tool.call-Hook. Aus hooks/register.ts:
on('tool.call', { tool: 'Bash' }, ($, e, next) => {
const match = findMatch(e.command, settings)
if (match === undefined) return next(e)
if (settings.mode === 'warn') {
$.ui.toast(`${$.plugin.name}: "${match.name}" is running (warn mode)`)
return next(e)
}
$.ui.toast(`${$.plugin.name}: blocked "${match.name}"`)
return { deny: denyReason($.plugin.name, match) }
}).catch(($, e, next) =>
next.called
? next(e)
: { deny: `${$.plugin.name}: its check failed, so the command was not run to be safe.` },
)Der Matcher { tool: 'Bash' } sorgt dafür, dass der Hook nur Shell-Befehle sieht. findMatch in hooks/rules.ts prüft zuerst allowPatterns, dann die eingebauten Regeln (abgeschaltete werden übersprungen) und anschließend deine extraPatterns. Gibt es keinen Treffer, führt next(e) den Befehl wie gewohnt aus. Bei einem Treffer gibt der Hook { deny: reason } zurück, und diese Begründung wird zum Tool-Ergebnis, das Claude liest.
Der .catch-Handler macht daraus einen echten Schutz statt nur eines Filters. Wirft die Prüfung einen Fehler, bevor next aufgerufen wurde, wird der Aufruf abgelehnt statt erlaubt: Die Mod schlägt sicher fehl (fail closed). Ein session.start-Hook zeigt einmalig einen Toast an, falls eines deiner eigenen Muster kein gültiger regulärer Ausdruck ist.
Jede Regel in rules.ts besteht aus einfachen Daten: einer ID, einem Namen, einer Begründung in einem Satz und Beispielbefehlen, die von den Tests geprüft werden.
Anpassen
Diese Optionen änderst du in /config. mode: warn macht aus dem Schutz einen reinen Hinweisgeber: Passende Befehle laufen trotzdem, und du bekommst einen Toast. extraPatterns und allowPatterns nehmen reguläre Ausdrücke in JavaScript-Syntax entgegen, einen pro Eintrag. Um eine eingebaute Regel zu ändern, bearbeite ihr pattern im Array RULES in hooks/rules.ts.
| Einstellung | Typ | Standard | Funktion |
|---|---|---|---|
| mode | string (block | warn) | "block" | Mode. block refuses a matching command; warn lets it run and shows a toast. |
| blockForcePush | boolean | true | Block force-push to main/master. Refuse git push --force / -f / +main to main or master. |
| blockHardReset | boolean | false | Block git reset --hard. Also refuse git reset --hard (off by default: it is a common, recoverable-ish workflow). |
| extraPatterns | string | [] | Extra patterns. Additional JavaScript regular expressions; a Bash command matching any of them is treated as dangerous. |
| allowPatterns | string | [] | Allow patterns. JavaScript regular expressions; a Bash command matching any of them is never blocked, whatever else it matches. |
Ändere diese Werte in Claude Code mit /config – die Mod lädt sich automatisch neu.
Berechtigungen & Sicherheit
Fängt Tool-Aufrufe ab ist der eigentliche Zweck der Mod: Sie sieht jeden Bash-Befehl, bevor er läuft, und kann ihn ablehnen. Sie schreibt nie einen Befehl um und führt selbst nie einen aus. Verändert die Oberfläche betrifft die Toasts. Eigenen Zugriff auf Dateien, Netzwerk, Modell oder Befehle hat sie nicht.
Das ist ein Schutz vor Versehen, keine Sandbox. Ein Befehl, der gezielt an den Mustern vorbei gebaut wurde, kommt durch – lass die Berechtigungsabfragen von Claude Code also eingeschaltet. Deaktiviere die Mod mit /plugin disable cm-block-dangerous-commands oder starte eine Sitzung ohne jede Mod mit claude --safe-mode.
- Fängt Tool-Aufrufe ab
- Sieht jeden Tool-Aufruf von Claude (tool.call / tool.check) und könnte ihn blockieren oder verändern.
- Verändert die Oberfläche
- Zeichnet in die Oberfläche von Claude Code: Leisten, Bereiche, Statustext, Toasts (ui.render / $.ui.*).
Kompatibilität & Fehlerbehebung
Getestet mit Claude Code 2.1.291 im Terminal unter macOS. Wenn Befehle, die blockiert werden sollten, trotzdem laufen:
- Prüfe, ob
claude --version2.1.287 oder neuer meldet und die Mod in/pluginaktiviert ist. - Führe nach einer Installation über die Shell
/reload-pluginsaus. - Prüfe in
/config, dassmodeaufblockund nicht aufwarnsteht. - Prüfe, ob ein Eintrag in
allowPatternsmehr erfasst als beabsichtigt. - Der Schutz deckt nur das
Bash-Tool ab. Dateiänderungen überEditundWritewerden nicht geprüft.
Wird ein harmloser Befehl abgelehnt, ergänze lieber ein eng gefasstes Erlaubnismuster, statt die ganze Mod in den Warnmodus zu schalten.
FAQ
- Ersetzt das die Berechtigungsabfragen von Claude Code?
- Nein. Es ist ein Musterschutz gegen typische Unfälle. Ein verschleierter Befehl kann an einem regulären Ausdruck vorbeikommen, also lass Berechtigungsabfragen und Deny-Regeln eingeschaltet.
- Was sieht Claude, wenn ein Befehl blockiert wird?
- Der Aufruf wird mit einer Begründung abgelehnt, die die Regel nennt, erklärt, warum, und vorschlägt, dich den Befehl selbst ausführen zu lassen oder allowPatterns bzw. mode in /config anzupassen. Claude wählt dann meist einen sichereren Befehl oder fragt dich.
- Wie erlaube ich einen bestimmten Befehl?
- Füge in /config einen regulären Ausdruck zu allowPatterns hinzu. Ein Treffer dort hat immer Vorrang vor den eingebauten Regeln und deinen extraPatterns.
- Wird git reset --hard blockiert?
- Standardmäßig nicht, weil es ein häufiger und oft bewusst eingesetzter Arbeitsschritt ist. Schalte blockHardReset ein, um ihn zu blockieren.
- Was passiert, wenn die Mod selbst abstürzt?
- Der tool.call-Hook schlägt sicher fehl (fail closed). Wirft die Prüfung einen Fehler, bevor der Befehl lief, wird der Befehl mit dem Hinweis abgelehnt, dass die Prüfung fehlgeschlagen ist.
# Ähnliche Mods

Git-Branch über dem Prompt
Zeigt Git-Branch, geänderte Dateien und Ahead/Behind-Status in einer Zeile über dem Prompt von Claude Code.
- über dem Prompt
- Führt Befehle aus
- Fängt Tool-Aufrufe ab
- Verändert die Oberfläche
getestet mit v2.1.291

Fertig-Toast
Toast „Done in 2m 14s“ und kurzer Klang, wenn ein langer Claude-Turn endet, optional mit Desktop-Benachrichtigung.
- Toast
- Führt Befehle aus
- Verändert die Oberfläche
- Spielt Ton ab
getestet mit v2.1.291

Tool-Call-Zähler
Zählt Claudes Tool-Aufrufe pro Turn und Sitzung, zeigt sie neben dem Spinner und ergänzt /tally als Übersicht.
- Spinner
- Verlauf
- Statuszeile
- Fängt Tool-Aufrufe ab
- Verändert die Oberfläche
- Fügt Befehle/Tools hinzu
getestet mit v2.1.291
Mehr in Sicherheits-Guards, Git & GitHub.