Blast Radius: Claude Code rm -rf Vorschau – erst sehen, was sich ändert
Hält rm -r, Force-Pushes und Migrationen in Claude Code an, zeigt betroffene Dateien oder Commits und wartet auf OK.
Berechtigungen
- Führt Befehle ausKann Shell-Programme auf deinem Rechner ausführen ($.process.run / spawn). Im Quellcode siehst du, welche genau.
- 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
- Bereich, über dem Prompt
- Quelle
- Hamza Zafar (hamzafer) (MIT)
In Claude Code installieren:
/plugin install blast-radius --marketplace hamzafer/claude-code-modsWas macht diese Mod?
Blast Radius ist eine Community-Mod von Hamza Zafar (hamzafer) aus seiner Sammlung claude-code-mods. Sie ist eine Claude Code rm -rf Vorschau: Wenn Claude über das Bash-Tool einen riskanten Shell-Befehl ausführen will, hält die Mod ihn an, zeigt dir, was er verändern würde, und wartet, bis du Cancel oder Proceed drückst.
Drei Arten von Befehlen werden angehalten. Ein rekursives rm bekommt eine Liste der Dateien, die es löschen würde, samt Gesamtgröße, etwa delete 42 files (1.3 MB). ~ und $HOME werden aufgelöst; ein Pfad mit einer anderen Shell-Variable, einer Befehlssubstitution oder ~user zeigt „can't preview“ statt einer Vermutung. Ein git push --force listet die Remote-Commits, die verloren gingen, und die lokalen, die gepusht würden, jeweils auf dem Stand des letzten Fetch. Eine Datenbankmigration (prisma, supabase, drizzle-kit, knex, sequelize, rails, alembic, typeorm) lässt sich nicht vorab simulieren, daher listet die Mod nicht committete Dateien, deren Namen nach Migrationen oder Schemas aussehen.
Der Bericht öffnet sich in einem Seitenbereich oder, wenn das Terminal dafür zu schmal ist, im Band über dem Prompt. Cancel ist standardmäßig fokussiert (Taste c); Proceed ist y. Ein Countdown zeigt auto-cancels in 42 s, und ohne Antwort innerhalb von 60 Sekunden wird der Befehl abgebrochen. So oder so bekommt Claude eine Begründung, sodass eine unbeaufsichtigte Sitzung weiterläuft, statt hängen zu bleiben. Es wird immer nur ein Befehl angehalten; ein zweiter wartet, bis er dran ist, und bekommt dann seinen eigenen vollen Countdown.
Verglichen mit unserer Mod Gefährliche Befehle blockieren, die eine feste Menge zerstörerischer Muster direkt ablehnt, ist Blast Radius ein Wächter nach dem Prinzip „frag mich mit Fakten“: Einen Befehl, den du freigibst, blockiert er nie, und er deckt gewöhnliches rm -r ab statt nur katastrophale Ziele. Beide lassen sich zusammen nutzen. Laut README des Autors ist Claude Code 2.1.287 oder neuer nötig.
Demo
Die Aufnahme legt im Demo-Projekt einen Wegwerf-Ordner dist mit drei kleinen Dateien an und bittet Claude, rm -r dist auszuführen. Blast Radius hält den Befehl an, bevor er läuft, und zeigt, was er löschen würde (3 Dateien, 12 KB, jeder Pfad aufgelistet), mit den Knöpfen Cancel und Proceed und einem Countdown bis zum automatischen Abbruch. Es wird Cancel gedrückt, also wird nichts gelöscht.
Installation
Nutze eine beliebige Methode aus dem Installationsblock; alle installieren direkt aus dem eigenen Marketplace des Autors. Der Schutz ist aktiv, sobald das Plugin geladen ist.
$ install blast-radius
Erfordert Claude Code ≥ 2.1.287
Wird aus dem Marketplace des Autors installiert: hamzafer/claude-code-mods
1.Eine Zeile, direkt in Claude Code
/plugin install blast-radius --marketplace hamzafer/claude-code-modsIn 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 hamzafer/claude-code-mods claude plugin install blast-radius@claude-code-modsFühre danach in jeder bereits geöffneten Sitzung /reload-plugins aus.
3.Ohne Installation ausprobieren
git clone https://github.com/hamzafer/claude-code-mods claude --plugin-dir ./claude-code-mods/mods/blast-radiusLädt die Mod nur für eine Sitzung. An deinen Einstellungen wird nichts geändert.
So funktioniert es
Die Mod hängt sich an tool.call für Bash. Eine reine Funktion classify teilt den Befehl an &&, ||, ; und Zeilenumbrüchen auf und sucht nach den drei riskanten Arten. Passt keine, geht der Aufruf mit next(e) direkt durch. Aus hooks/register.tsx die Vorschau für ein rekursives Löschen:
// Unquoted $t expands globs, and nothing else, without running the command.
const script =
'shopt -s nullglob; for t in "$@"; do for p in $t; do [ -e "$p" ] || continue; ' +
'echo "S $(du -sk "$p" | cut -f1)"; find "$p" -type f | head -n 5000 | sed "s/^/F /"; done; done'
const r = await $.process.run(['bash', '-c', script, 'blast-radius', ...targets], init)Die Ziele werden als Argumente übergeben, nicht in das Skript eingefügt, und die Liste ist auf 5000 Dateien begrenzt. Nach dem Messen legt die Mod den angehaltenen Befehl in einem $.state-Atom ab, öffnet den Bereich blast-radius mit $.ui.open und prüft alle Viertelsekunde, ob ein Knopf gedrückt wurde, die Frist abgelaufen ist oder der Aufruf abgebrochen wurde. Proceed gibt next(e) zurück, der Befehl läuft also genau wie geschrieben. Cancel oder ein Timeout gibt { deny: ... } mit einer Nachricht zurück, die die Zusammenfassung der Vorschau enthält. Vor alldem wird $.session.surfaces() geprüft: Ohne Bildschirm wird der Aufruf sofort abgelehnt.
Anpassen
Eine Option, timeoutSeconds (Standard 60, Minimum 0), legt fest, wie lange ein angehaltener Befehl wartet, bevor er abgebrochen wird; 0 wartet unbegrenzt und blendet den Countdown aus. Ändere sie in /config unter dem Namen der Mod oder in settings.json unter pluginConfigs. Die Liste der Migrationstools ist der reguläre Ausdruck MIGRATION oben in register.tsx, und MAX_LISTED (200) begrenzt, wie viele Zeilen der Bericht zeigt.
Berechtigungen & Sicherheit
Wir lesen jede Datei, die das Plugin ausführen kann, bevor wir es starten: hooks/hooks.json, hooks/register.tsx, die Typdeklarationen und die Tests. Es gibt keine package.json, kein Installationsskript und keinen gebündelten Code.
Fängt Tool-Aufrufe ab erscheint, weil die Mod Bash-Aufrufe kontrolliert: Sie kann sie anhalten und ablehnen, schreibt einen Befehl aber nie um. Führt Befehle aus erscheint wegen $.process.run. Die Programme, die sie startet, sind rein lesend: bash -c mit dem obigen du/find-Skript, zweimal git log --oneline für Force-Pushes, git status --porcelain für Migrationen und sleep 0.25 für die Abfrageschleife. Jeder Vorschau-Aufruf hat ein Timeout von 10 Sekunden; beachte, dass du und find auf einem sehr großen Ziel bis zu diesem Timeout dauern können. Sie liest die Umgebungsvariable HOME, um ~ aufzulösen. Ändert die UI betrifft den Seitenbereich und das Band.
Sie schreibt keine Dateien, nutzt kein Netzwerk und ruft das Modell nicht auf. claude plugin validate meldete keine Fehler oder Warnungen, und die 17 Tests des Autors liefen unter Claude Code 2.1.291 durch. Betrachte die Mod als zweiten Blick, nicht als Sandbox: Ein Befehl, der rm hinter einer Variable oder einem anderen Programm versteckt, wird nicht erkannt.
- Führt Befehle aus
- Kann Shell-Programme auf deinem Rechner ausführen ($.process.run / spawn). Im Quellcode siehst du, welche genau.
- 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
Geprüft mit Claude Code 2.1.291 unter macOS (validate und Tests). Wenn ein riskanter Befehl nicht angehalten wird:
claude --versionist 2.1.287 oder neuer, und die Mod ist in/pluginaktiviert.- Der Befehl gehört zu einer der drei Arten. Ein einfaches
rm file.txtohne-rwird nicht angehalten. - Die Force-Push-Vorschau zählt Commits gegen den Upstream-Stand des letzten Fetch; führe
git fetchaus, um eine aktuelle Liste zu bekommen. - In
claude -pund anderen Sitzungen ohne Bildschirm werden angehaltene Befehle sofort abgelehnt statt angezeigt.
FAQ
- Welche Befehle hält Blast Radius an?
- Ein rekursives rm (rm -r, rm -rf, rm --recursive, auch nach sudo), git push mit -f, --force, --force-with-lease oder einer +refspec sowie Migrationsbefehle von prisma, supabase, drizzle-kit, knex, sequelize, rails, alembic und typeorm. Jeder Teil eines zusammengesetzten Befehls wird geprüft.
- Führt die Vorschau den riskanten Befehl aus?
- Nein. Bei rm laufen du und find auf den Zielen in einem Bash-Skript, das nur Globs auflöst. Bei einem Force-Push laufen zwei git-log-Befehle gegen den Upstream-Stand des letzten Fetch. Bei einer Migration läuft git status. Jeder Aufruf hat ein Timeout von 10 Sekunden.
- Was passiert, wenn niemand antwortet?
- Nach 60 Sekunden wird der Befehl abgebrochen, und Claude erfährt, was er getan hätte, und dass er ihn nicht selbst erneut versuchen soll. Mit timeoutSeconds änderst du die Wartezeit; 0 wartet unbegrenzt.
- Was ist mit claude -p oder Headless-Läufen?
- Ohne angeschlossenen Bildschirm kann niemand einen Knopf drücken, daher wird ein angehaltener Befehl sofort abgelehnt – mit einer Begründung, die die Vorschau enthält.
- Worin unterscheidet es sich von Gefährliche Befehle blockieren (cm-block-dangerous-commands)?
- Gefährliche Befehle blockieren lehnt passende Befehle direkt mit einem Toast ab. Blast Radius fragt stattdessen dich, zeigt, was gelöscht oder überschrieben würde, und führt den Befehl unverändert aus, wenn du Proceed drückst.
# Ähnliche Mods
EmpfohlenGefährliche Befehle blockieren
Verweigert rm -rf /, Force-Push auf main, DROP TABLE, curl | sh und andere destruktive Bash-Befehle vor der Ausführung.
- Toast
- Fängt Tool-Aufrufe ab
- Verändert die Oberfläche
getestet mit v2.1.310
EmpfohlenGit-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.310
Mehr in Sicherheits-Guards, Git & GitHub.