0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

3行のJSONでrm -rfを止めた——Claude Codeの安全hookを最小構成で入れる

0
Last updated at Posted at 2026-04-17

「hookを入れたいけど、シェルスクリプトを書くのがハードル高い」——これはClaude Codeユーザーから一番よく聞く声だ。

実は、外部ファイルを1つも作らなくていい。settings.jsonの中にインラインで書ける。最小構成なら追加は実質3行。所要時間は1分。

Claude CodeをAuto Modeで使う場合、許可確認なしでコマンドが実行される。hookはその安全網になる。たった1分の設定で、その穴を塞げる。

前提

jqコマンドが必要。macOSならbrew install jq、Ubuntuならsudo apt install jqでインストールできる。

最小のhook

~/.claude/settings.jsonを開いて、以下を追加する:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'CMD=$(cat | jq -r \".tool_input.command // empty\"); echo \"$CMD\" | grep -qE \"rm\\s+-rf\\s+(/|~|\\$HOME)\" && echo BLOCKED >&2 && exit 2; exit 0'"
          }
        ]
      }
    ]
  }
}

これだけで、Bashツールが呼ばれるたびにコマンドをチェックし、rm -rf /rm -rf ~/をブロックする。

仕組み

  1. PreToolUse — ツール実行のに走るフック
  2. matcher: "Bash" — Bashツールの呼び出しだけに反応
  3. exit 2 — このコードを返すと操作がブロックされる
  4. exit 0 — 問題なければそのまま実行を許可

Claude Codeのhookはsettings.jsonに書くだけで動く。Claude側のコードを変更する必要はない。

なぜこれが必要なのか

Claude Code公式GitHub Issuesから実際に起きた事故:

  • #36339: NTFS junction経由でC:\Usersが全削除
  • #37331: Remove-Item -Recurse -Forceで未pushソース破壊
  • #37405: データベースをmigrate:freshで全削除

CLAUDE.mdに「rm -rfを使うな」と書いても、コンテキストが埋まると無視される。hookはプロセスレベルで動くため、Claude側から回避できない。

3行では不安な人へ

上のhookはrm -rfだけをブロックする最小構成。実際にはgit reset --hardgit push --force.envのコミットなど、防ぎたい操作は複数ある。

ワンコマンドで8つの安全hookをまとめてインストールできる:

npx cc-safe-setup

インストールされるhook:

hook 防ぐもの
destructive-guard rm -rf /, git reset --hard, chmod 777 /
branch-guard main/masterへの直接push、force-push
secret-guard .env、秘密鍵のgit add
syntax-check ファイル編集後の構文エラー
context-monitor コンテキスト使用量の監視
comment-strip Bashコメントによる権限allowlist不一致の防止
cd-git-allow cd+gitの読み取り専用コマンドを自動承認
api-error-alert セッション終了時のAPIエラー通知

もっと細かくカスタマイズしたい

667個のexample hookから選んでインストールできる:

# 一覧を見る
npx cc-safe-setup --examples

# 特定のhookをインストール
npx cc-safe-setup --install-example credential-exfil-guard

settings.jsonに3行追加するだけで、一番危険な操作をブロックできる。ゼロより1つhookがある方が圧倒的に安全だ。

自分の使い方に合ったhookを知りたいなら → Hook Selector(5問で最適なhookセットを推薦)

関連記事


📖 トークン消費に困っているならClaude Codeのトークン消費を半分にする——800時間の運用データから見つけた実践テクニック(¥2,500・はじめに+第1章 無料)


⚠ Opus 4.7緊急情報(2026年4月)
auto modeの安全分類器がOpus 4.6にハードコードされており、Opus 4.7では正常に機能しない(#49618)。hookはモデル非依存で動作するため、分類器の故障に関係なく防御が機能する。→ Opus 4.7 Survival Guide / Safety Scanner

📖 AIで事業を回す実体験を全記録Claude Code×個人事業 800時間の全記録(¥800・第2章まで無料)


⚠️ 新CVE公開(2026年4月): CVE-2026-21852でプロジェクト内の.claude/settings.jsonからAPIキーが窃盗される脆弱性が判明。npx cc-safe-setupはユーザーレベル設定のみを使用するため、この攻撃に免疫がある。詳細: Opus 4.7 Survival Guide(48問題追跡中)

📚 関連商品 (2026 年 5 月 22 日発売): 本記事の「rm -rf の 3 行の JSON の予防」 の系統の継続として、 利用者の集まりが観察した 27 件の同型の事例 (主張と実態の乖離 + 信頼の境界の崩壊) と 14 件の防衛の手順を整理した Claim-Verify Handbook (Gumroad、 19 米ドル、 同日発売)、 そして留まる + 切り替えるの 8 gate / 13 leaf の判定の樹を含む Migration Playbook 第 2 版 (Gumroad、 19 米ドル、 第 1 版の購入者は無償の更新)。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?