本文へスキップ
claudemods

Claude Code の危険なコマンドをブロックする Mod

rm -rf /、main への force-push、DROP TABLE、curl | sh などの破壊的な Bash コマンドを実行前に拒否します。

権限

  • ツール呼び出しを傍受Claude が行うすべてのツール呼び出しを参照でき(tool.call / tool.check)、ブロックや変更も可能です。
  • UI を変更Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
検証バージョン
v2.1.291
最終検証日
必要バージョン
Claude Code ≥ 2.1.287
表示先
トースト

Claude Code 内でインストール:

/plugin install cm-block-dangerous-commands --marketplace rotbit/claudemods-marketplace
すべてのインストール方法 ↓

このModでできること

この Mod を使うと、Claude Code の危険なコマンドをブロックできます。対象は、Claude が Bash ツールで実行しようとしているシェルコマンドです。どのコマンドも実行される前に、短いルールの一覧と照合されます。ルールに該当したコマンドは拒否され、どのルールがなぜ発動したのかが Claude に伝えられ、あなたの画面にはルール名を示すトーストが表示されます。安全なコマンドはそのまま素通りします。

組み込みルールがカバーするのは次のとおりです。/、~、$HOME、.、* に対する rm -rf、main または master への git push --force、git clean -fdx、SQL の DROP TABLE、DROP DATABASE、DROP SCHEMA、TRUNCATE、chmod -R 777 /、mkfs、ディスクデバイスへの dd、生のディスクへの出力リダイレクト、curl や wget の出力をシェルへパイプする操作、そして古典的なフォーク爆弾です。git reset --hard はオプトインのルールとして用意されています。Claude Code 2.1.287 以降が必要です。

デモ

録画では、デモ用プロジェクトで Claude に破壊的な操作を頼んでいます。Mod は Bash の呼び出しを拒否し、該当したルール名がトーストで表示され、Claude はその理由を読んだうえで、コマンドを実行せずに応答します。

インストール

インストールブロックにあるいずれかの方法を使ってください。ガードは次のツール呼び出しから有効になります。/reload-plugins の後に再起動する必要はありません。

$ install cm-block-dangerous-commands

Claude Code 2.1.287 以上が必要

  1. 1.Claude Code 内で1行

    /plugin install cm-block-dangerous-commands --marketplace rotbit/claudemods-marketplace

    実行中のセッション(v2.1.275 以降)に貼り付けます。最初に Claude Code がマーケットプレイスの追加を確認します。

  2. 2.シェルから

    claude plugin marketplace add rotbit/claudemods-marketplace
    claude plugin install cm-block-dangerous-commands@claudemods

    その後、すでに開いているセッションでは /reload-plugins を実行してください。

  3. 3.インストールせずに試す

    git clone https://github.com/rotbit/claudemods-marketplace
    claude --plugin-dir ./claudemods-marketplace/cm-block-dangerous-commands

    その1セッションだけ Mod を読み込みます。設定には何も追加されません。

仕組み

ロジックはすべて 1 つの tool.call フックに収まっています。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.` },
)

マッチャー { tool: 'Bash' } により、このフックはシェルコマンドだけを受け取ります。hooks/rules.ts の findMatch は、まず allowPatterns を確認し、次に組み込みルール(オフにしたものは除く)、最後にあなたの extraPatterns を確認します。どれにも該当しなければ、next(e) によってコマンドは通常どおり実行されます。該当した場合、フックは { deny: reason } を返し、その理由が Claude の読むツール結果になります。

.catch ハンドラーこそが、この Mod を単なるフィルターではなくガードにしている部分です。next が呼ばれる前にチェックが例外を投げた場合、呼び出しは許可されずに拒否されます。つまり、この Mod はフェイルクローズで動作します。また session.start フックは、カスタムパターンの中に正しくない正規表現があると、一度だけトーストで知らせます。

rules.ts の各ルールは、ID、名前、1 文の理由、そしてテストで検証されるコマンド例を持つ、ただのデータです。

カスタマイズ

以下のオプションは /config で変更できます。mode: warn にすると、ガードは通知役に変わります。該当するコマンドも実行され、トーストで知らせるだけになります。extraPatterns と allowPatterns には JavaScript の正規表現を 1 項目に 1 つずつ指定します。組み込みルールそのものを変えたい場合は、hooks/rules.ts の RULES 配列にある該当ルールの pattern を編集してください。

設定型デフォルト説明
modestring (block | warn)"block"Mode. block refuses a matching command; warn lets it run and shows a toast.
blockForcePushbooleantrueBlock force-push to main/master. Refuse git push --force / -f / +main to main or master.
blockHardResetbooleanfalseBlock git reset --hard. Also refuse git reset --hard (off by default: it is a common, recoverable-ish workflow).
extraPatternsstring[]Extra patterns. Additional JavaScript regular expressions; a Bash command matching any of them is treated as dangerous.
allowPatternsstring[]Allow patterns. JavaScript regular expressions; a Bash command matching any of them is never blocked, whatever else it matches.

Claude Code の /config で変更できます。Mod はホットリロードされます。

権限と安全性

ツール呼び出しを傍受 は、この Mod が存在する理由そのものです。すべての Bash コマンドを実行前に確認し、拒否することができます。コマンドを書き換えることはなく、自分でコマンドを実行することもありません。UI を変更 はトースト表示のためのものです。それ以外に、ファイル、ネットワーク、モデル、コマンドへの独自のアクセスは一切持ちません。

これは事故を防ぐための保護であり、サンドボックスではありません。パターンを回避するように組み立てられたコマンドは通ってしまうため、Claude Code の権限確認プロンプトは有効のままにしておいてください。Mod を無効にするには /plugin disable cm-block-dangerous-commands を実行します。すべての Mod をオフにしてセッションを始めるには claude --safe-mode を使います。

ツール呼び出しを傍受
Claude が行うすべてのツール呼び出しを参照でき(tool.call / tool.check)、ブロックや変更も可能です。
UI を変更
Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。

互換性とトラブルシューティング

macOS のターミナル上で Claude Code 2.1.291 にてテスト済みです。ブロックされるはずのコマンドが実行されてしまう場合は、次を確認してください。

  • claude --version が 2.1.287 以降であること、そして /plugin でこの Mod が有効になっていること。
  • シェルからインストールした場合は /reload-plugins を実行すること。
  • /config で mode が warn ではなく block になっていること。
  • allowPatterns のエントリーが、意図した以上に広くマッチしていないこと。
  • ガードが対象とするのは Bash ツールだけです。Edit や Write によるファイル編集はチェックされません。

安全なコマンドが拒否される場合は、Mod 全体を warn モードに切り替えるのではなく、範囲を絞った許可パターンを追加してください。

よくある質問

この Mod は Claude Code の権限確認プロンプトの代わりになりますか?
いいえ。これはよくある事故を防ぐためのパターンによるガードです。難読化されたコマンドは正規表現をすり抜ける可能性があるため、権限確認プロンプトと deny ルールは有効のままにしておいてください。
コマンドがブロックされたとき、Claude には何が伝わりますか?
呼び出しは拒否され、該当したルール名とその理由、そしてユーザー自身に実行してもらうか /config の allowPatterns や mode を調整するよう提案する説明が返されます。Claude はたいてい、より安全なコマンドを選ぶか、あなたに確認を求めます。
特定のコマンドだけを許可するにはどうすればよいですか?
/config の allowPatterns に正規表現を追加してください。ここにマッチしたものは、組み込みルールや extraPatterns よりも常に優先されます。
git reset --hard はブロックされますか?
デフォルトではブロックされません。一般的で、意図して使われることも多い操作だからです。ブロックしたい場合は blockHardReset をオンにしてください。
Mod 自体がクラッシュした場合はどうなりますか?
tool.call フックはフェイルクローズで動作します。コマンドの実行前にチェック処理が例外を投げた場合、そのコマンドは「チェックに失敗した」というメッセージとともに拒否されます。
Claude Code で動作中の プロンプト上の Git ブランチ表示

プロンプト上の Git ブランチ表示

Git のブランチ、変更ファイル数、ahead/behind の状態を Claude Code のプロンプトの上に 1 行で表示します。

  • プロンプト上部
  • コマンドを実行
  • ツール呼び出しを傍受
  • UI を変更

v2.1.291 で検証済み

Claude Code で動作中の 完了トースト

完了トースト

Claude の長いターンが終わると「Done in 2m 14s」のトーストと短いチャイムでお知らせ。デスクトップ通知にも対応します。

  • トースト
  • コマンドを実行
  • UI を変更
  • 音を再生

v2.1.291 で検証済み

Claude Code で動作中の ツール呼び出しカウンター

ツール呼び出しカウンター

Claude のツール呼び出しをターンごと・セッションごとに数え、スピナーの横に件数を表示。/tally で内訳も確認できます。

  • スピナー
  • トランスクリプト
  • ステータス
  • ツール呼び出しを傍受
  • UI を変更
  • コマンド・ツールを追加

v2.1.291 で検証済み

同じカテゴリの Mod: 安全ガード、Git と GitHub。