본문으로 건너뛰기
claudemods

Blast Radius: 실행 전에 변경 범위를 보여 주는 Claude Code rm -rf 미리보기

Claude Code가 rm -r, 강제 푸시, 마이그레이션을 실행하기 전에 멈추고, 바뀔 파일이나 커밋을 보여 준 뒤 확인을 기다립니다.

권한

  • 명령어 실행컴퓨터에서 셸 프로그램을 실행할 수 있습니다($.process.run / spawn). 정확히 어떤 프로그램인지는 소스를 확인하세요.
  • 도구 호출 가로채기Claude가 하는 모든 도구 호출을 볼 수 있고(tool.call / tool.check), 이를 차단하거나 변경할 수 있습니다.
  • UI 변경Claude Code 화면에 밴드, 패널, 상태 텍스트, 토스트를 그립니다(ui.render / $.ui.*).
테스트 버전
v2.1.291
마지막 테스트
필요 버전
Claude Code ≥ 2.1.287
표시 위치
패널, 프롬프트 위

Claude Code 안에서 설치:

/plugin install blast-radius --marketplace hamzafer/claude-code-mods
모든 설치 방법 ↓

이 모드는 무엇을 하나요?

Blast Radius는 Hamza Zafar(hamzafer)가 만든 커뮤니티 모드로, 그의 claude-code-mods 컬렉션에 속해 있습니다. 일종의 Claude Code rm -rf 미리보기로, Claude가 Bash 도구로 위험한 셸 명령을 실행하려 할 때 모드가 그 명령을 멈추고 무엇이 바뀔지 보여 준 다음, 사용자가 Cancel 또는 Proceed를 누를 때까지 기다립니다.

멈추는 명령은 세 종류입니다. 재귀 rm은 삭제될 파일 목록과 전체 크기를 보여 줍니다. 예를 들면 delete 42 files (1.3 MB)입니다. ~와 $HOME은 펼쳐지지만, 다른 셸 변수, 명령 치환, ~user가 들어 있는 경로는 추측하는 대신 "can't preview"를 표시합니다. git push --force는 마지막 fetch 시점을 기준으로 잃게 될 원격 커밋과 푸시될 로컬 커밋을 나열합니다. 데이터베이스 마이그레이션(prisma, supabase, drizzle-kit, knex, sequelize, rails, alembic, typeorm)은 미리 볼 수 없으므로, 이름이 마이그레이션이나 스키마처럼 보이는 커밋되지 않은 파일을 나열합니다.

보고서는 사이드 패널에 열리며, 터미널이 패널을 띄우기에 너무 좁으면 프롬프트 위 띠에 열립니다. 기본 포커스는 Cancel(단축키 c)이고, Proceed는 y입니다. 카운트다운은 auto-cancels in 42 s처럼 표시되며, 60초 안에 응답이 없으면 명령이 취소됩니다. 어느 쪽이든 Claude는 사유를 전달받으므로, 지켜보는 사람이 없는 세션도 멈추지 않고 계속 진행됩니다. 한 번에 하나의 명령만 멈추며, 두 번째 명령은 차례를 기다렸다가 자신만의 전체 카운트다운을 받습니다.

정해진 파괴적 패턴을 곧바로 거부하는 저희의 위험한 명령 차단과 비교하면, Blast Radius는 "사실을 보여 주고 물어보는" 보호 장치입니다. 사용자가 승인한 명령은 절대 막지 않으며, 치명적인 대상만이 아니라 평범한 rm -r까지 다룹니다. 두 모드는 함께 쓸 수 있습니다. 작성자의 README에 따르면 Claude Code 2.1.287 이상이 필요합니다.

데모

녹화 영상에서는 데모 프로젝트에 작은 파일 세 개가 든 일회용 dist 폴더를 만들고 Claude에게 rm -r dist를 실행해 달라고 요청합니다. Blast Radius는 명령이 실행되기 전에 이를 멈추고 삭제될 내용(파일 3개, 12 KB, 각 경로 나열)을 Cancel·Proceed 버튼, 자동 취소 카운트다운과 함께 보여 줍니다. Cancel을 누르므로 아무것도 삭제되지 않습니다.

설치

설치 블록의 방법 중 아무것이나 사용하십시오. 모두 작성자 자신의 마켓플레이스에서 바로 설치합니다. 플러그인이 로드되는 즉시 보호 장치가 활성화됩니다.

$ install blast-radius

Claude Code 2.1.287 이상 필요

작성자의 마켓플레이스에서 설치: hamzafer/claude-code-mods

  1. 1.Claude Code 안에서 한 줄로

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

    실행 중인 세션(v2.1.275 이상)에 붙여 넣으세요. Claude Code가 먼저 마켓플레이스 추가 여부를 묻습니다.

  2. 2.셸에서 설치

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

    그런 다음 이미 열려 있는 세션에서 /reload-plugins를 실행하세요.

  3. 3.설치하지 않고 사용해 보기

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

    한 세션에서만 모드를 불러옵니다. 설정에는 아무것도 추가되지 않습니다.

작동 방식

모드는 Bash에 대한 tool.call을 훅합니다. 순수 함수 classify가 명령을 &&, ||, ;, 줄바꿈 기준으로 나누고 세 가지 위험 유형을 찾습니다. 일치하는 것이 없으면 호출은 next(e)로 그대로 통과합니다. hooks/register.tsx에서 재귀 삭제의 미리보기 부분은 다음과 같습니다.

// 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)

대상은 스크립트에 붙여 넣지 않고 인수로 전달되며, 목록은 최대 5000개 파일로 제한됩니다. 측정을 마치면 모드는 멈춘 명령을 $.state 아톰에 저장하고, $.ui.open으로 blast-radius 패널을 열고, 0.25초마다 버튼 입력, 기한, 중단된 호출을 확인합니다. Proceed는 next(e)를 반환하므로 명령은 작성된 그대로 실행됩니다. Cancel이나 시간 초과는 미리보기 요약이 담긴 메시지와 함께 { deny: ... }를 반환합니다. 이 모든 것에 앞서 $.session.surfaces()를 확인하며, 화면이 없으면 호출을 즉시 거부합니다.

사용자 지정

옵션은 timeoutSeconds(기본값 60, 최솟값 0) 하나이며, 멈춘 명령이 취소되기 전까지 기다리는 시간을 정합니다. 0이면 무한정 기다리고 카운트다운을 숨깁니다. /config에서 모드 이름 아래에서 바꾸거나, settings.json의 pluginConfigs에서 바꾸십시오. 마이그레이션 도구 목록은 register.tsx 맨 위의 정규식 MIGRATION이며, MAX_LISTED(200)는 보고서에 표시할 최대 줄 수입니다.

권한 및 안전

저희는 실행하기 전에 플러그인이 실행할 수 있는 모든 파일을 읽었습니다. hooks/hooks.json, hooks/register.tsx, 타입 선언, 테스트입니다. package.json, 설치 스크립트, 번들된 코드는 없습니다.

도구 호출 가로채기는 모드가 Bash 호출을 통제하기 때문에 표시됩니다. 호출을 멈추고 거부할 수는 있지만 명령을 고쳐 쓰지는 않습니다. 명령어 실행은 $.process.run 때문에 표시됩니다. 실행하는 프로그램은 모두 읽기 전용입니다. 위의 du/find 스크립트를 실행하는 bash -c, 강제 푸시용 git log --oneline 두 번, 마이그레이션용 git status --porcelain, 그리고 폴링 루프용 sleep 0.25입니다. 각 미리보기 호출에는 10초 시간 제한이 있으며, 아주 큰 대상에 대한 du와 find는 그 제한 시간까지 걸릴 수 있다는 점에 유의하십시오. ~를 펼치기 위해 HOME 환경 변수를 읽습니다. UI 변경은 패널과 띠에 해당합니다.

파일을 쓰거나, 네트워크를 사용하거나, 모델을 호출하지 않습니다. claude plugin validate는 오류나 경고를 보고하지 않았고, 작성자의 테스트 17개가 Claude Code 2.1.291에서 모두 통과했습니다. 샌드박스가 아니라 두 번째 확인 수단으로 여기십시오. 변수나 다른 프로그램 뒤에 rm을 숨긴 명령은 분류되지 않습니다.

명령어 실행
컴퓨터에서 셸 프로그램을 실행할 수 있습니다($.process.run / spawn). 정확히 어떤 프로그램인지는 소스를 확인하세요.
도구 호출 가로채기
Claude가 하는 모든 도구 호출을 볼 수 있고(tool.call / tool.check), 이를 차단하거나 변경할 수 있습니다.
UI 변경
Claude Code 화면에 밴드, 패널, 상태 텍스트, 토스트를 그립니다(ui.render / $.ui.*).

호환성 및 문제 해결

macOS에서 Claude Code 2.1.291로 확인했습니다(validate와 테스트). 위험한 명령이 멈추지 않으면 다음을 확인하십시오.

  • claude --version이 2.1.287 이상이고 /plugin에서 모드가 활성화되어 있는지 확인하십시오.
  • 명령이 세 종류 중 하나인지 확인하십시오. -r 없는 단순한 rm file.txt는 멈추지 않습니다.
  • 강제 푸시 미리보기는 마지막 fetch 시점의 업스트림을 기준으로 커밋을 셉니다. 최신 목록을 보려면 git fetch를 실행하십시오.
  • claude -p와 화면이 없는 다른 세션에서는 멈춘 명령을 보여 주지 않고 즉시 거부합니다.

자주 묻는 질문

Blast Radius는 어떤 명령을 멈추나요?
재귀 rm(rm -r, rm -rf, rm --recursive, sudo 뒤에 와도 포함), -f, --force, --force-with-lease 또는 +refspec이 붙은 git push, 그리고 prisma, supabase, drizzle-kit, knex, sequelize, rails, alembic, typeorm의 마이그레이션 명령입니다. 복합 명령은 각 부분을 따로 검사합니다.
미리보기를 만들 때 위험한 명령을 실행하나요?
아닙니다. rm의 경우 글롭만 펼치는 bash 스크립트에서 대상에 du와 find를 실행합니다. 강제 푸시의 경우 마지막 fetch 시점의 업스트림을 기준으로 git log 명령 두 개를 실행합니다. 마이그레이션의 경우 git status를 실행합니다. 각각 10초 시간 제한이 있습니다.
아무도 응답하지 않으면 어떻게 되나요?
60초가 지나면 명령이 취소되고, Claude에게는 그 명령이 무엇을 했을지와 스스로 재시도하지 말라는 내용이 전달됩니다. 대기 시간은 timeoutSeconds로 바꾸며, 0이면 무한정 기다립니다.
claude -p나 헤드리스 실행에서는 어떻게 되나요?
화면이 연결되어 있지 않으면 아무도 버튼을 누를 수 없으므로, 멈춘 명령은 미리보기 내용이 담긴 사유와 함께 즉시 거부됩니다.
위험한 명령 차단(cm-block-dangerous-commands)과 무엇이 다른가요?
위험한 명령 차단은 일치하는 명령을 토스트와 함께 곧바로 거부합니다. Blast Radius는 대신 사용자에게 묻고, 무엇이 삭제되거나 덮어써질지 보여 주며, Proceed를 누르면 명령을 그대로 실행합니다.
Claude Code에서 실행 중인 위험한 명령 차단추천

위험한 명령 차단

rm -rf /, main 브랜치 강제 푸시, DROP TABLE, curl | sh 같은 파괴적인 Bash 명령을 실행 전에 거부합니다.

  • 토스트
  • 도구 호출 가로채기
  • UI 변경

v2.1.310에서 테스트됨

Claude Code에서 실행 중인 프롬프트 위 Git 브랜치추천

프롬프트 위 Git 브랜치

Claude Code 프롬프트 위 한 줄 띠에 git 브랜치, 변경된 파일 수, ahead/behind 상태를 표시합니다.

  • 프롬프트 위
  • 명령어 실행
  • 도구 호출 가로채기
  • UI 변경

v2.1.310에서 테스트됨

더 보기: 안전 가드, Git 및 GitHub.