Zum Inhalt springen
claudemods

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

In Claude Code installieren:

/plugin install blast-radius --marketplace hamzafer/claude-code-mods
Alle Installationswege ↓

Was 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. 1.Eine Zeile, direkt in Claude Code

    /plugin install blast-radius --marketplace hamzafer/claude-code-mods

    In eine laufende Sitzung einfügen (v2.1.275+). Claude Code fragt zuerst, ob der Marketplace hinzugefügt werden soll.

  2. 2.Aus deiner Shell

    claude plugin marketplace add hamzafer/claude-code-mods
    claude plugin install blast-radius@claude-code-mods

    Führe danach in jeder bereits geöffneten Sitzung /reload-plugins aus.

  3. 3.Ohne Installation ausprobieren

    git clone https://github.com/hamzafer/claude-code-mods
    claude --plugin-dir ./claude-code-mods/mods/blast-radius

    Lä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 --version ist 2.1.287 oder neuer, und die Mod ist in /plugin aktiviert.
  • Der Befehl gehört zu einer der drei Arten. Ein einfaches rm file.txt ohne -r wird nicht angehalten.
  • Die Force-Push-Vorschau zählt Commits gegen den Upstream-Stand des letzten Fetch; führe git fetch aus, um eine aktuelle Liste zu bekommen.
  • In claude -p und 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.
Gefährliche Befehle blockieren in Claude CodeEmpfohlen

Gefä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

Git-Branch über dem Prompt in Claude CodeEmpfohlen

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.310

Mehr in Sicherheits-Guards, Git & GitHub.