触らせない関所をつくる。検問の初登場
検問
🧩 あなたの一番大事な原稿フォルダがあります。相棒に部屋の掃除を頼むとき、いちばん安心なのは、どっちでしょう。
A 「原稿だけは消さないでね」と、毎回頼んでから掃除させる B 原稿フォルダに手が伸びた瞬間、自動で止まる関所を、先に置いておく
大事なフォルダを、お願いではなく仕組みで守れるようになります。
前の節でごろは、口約束をやめると決めました。では、いちばん守りたいものから固めましょう。ごろにとって、それは原稿フォルダです。消えたら、夜も眠れません。
ここで登場するのが検問です。道具の世界では、検問〔Hooks(フック)〕と呼びます。正直に言いますね。「フック」という言葉、ちょっと身構えますよね。かぎ針とか、格闘技の一撃とか、なんだか物騒な響きです。ところが中身を開けてみると、やっていることは「入り口に立っている門番」だけでした。あることをしようとした瞬間に、割って入る。危ない手が伸びたら、そこで止める。それだけです。難しいのは名前で、しくみは拍子抜けするほど素朴でした。名前はいま覚えなくて大丈夫。「危ない手を止める門番」だけ持って帰ってください。

ここで、順番の話をします。関所を作る前に、もっと手前でできることがあります。デスクトップの画面だけでできる守り方です。大事な箱を別の棚に分ける。読み取り専用にして、そもそも書き換えられないようにする。これで安心できる人は、ここで十分です。関所はまだ作らなくていい。
それでも、「掃除や書き換えを頼む相棒に、絶対ここだけは触らせたくない」という一線があるなら、そのときこそ検問の出番です。触ろうとした瞬間に、自動で押し返す。うっかりでも、勘違いでも、危ない手が届く前に止まります。
大事なのは、何を守るかを先に決めておくことです。関所は、引いた線を代わりに毎回守るだけ。線を引く仕事は、ずっと人間の側にあります。
「原稿フォルダだけは、絶対に削除も上書きもさせたくない。触ろうとしたら止まるようにして」
相棒は、守り方を段階で出してくれます。まずは「フォルダを分けて、読み取り専用にする」画面上のやり方から。それでも足りなければ、最後に「触った瞬間に止める関所を用意しましょうか」と、一手だけそっと差し出します。ごろは先走って「全部のフォルダに関所を置いて」と頼み、動きが窮屈になって、しばらく身動きが取れませんでした。そして学びます。守るのは、本当に大事な一つだけでよかった、と。
Web追補検問(フック)の具体的な設定手順は、画面が変わりやすいので、オンライン追補にまとめてあります
- どこで: まずは、いつものフォルダ整理の画面で
- どうやって: 守りたいフォルダを一つだけ選び、「ここは触らせたくない」と伝える
- きっかけ: 「消えたら困る」と背筋が寒くなったフォルダを、一つ思い浮かべたとき
【実例: 人間の先生(著者)の話】わたしの仕事には、患者さんの情報が入りうる場所があります。そこは、相棒の作業机の外に最初から置いてあります。そのうえで、そこへ手が伸びること自体を、関所で止める設計にしています。ここは「うっかり」で越えてはいけない一線です。だからこそ、お願いではなく、仕組みで守る。関所がいちばん力を発揮するのは、こういう場所です。
手順(全3ステップ) 1.
守りたいフォルダを一つだけ決めて、作業用の場所とは別のフォルダへ移します。読み取り専用にして、わざと上書きを試して止まることを確かめます。
2. さらに一線を引きたい場合は、プロジェクトの
.claude/settings.json に hooks
の設定を1行追加し、削除コマンドが発動した瞬間にブロックする検問を立てます。
3. 「誤爆テスト」(ls たいせつ
など無害なコマンドが止まらないか)と「回避テスト」(rm -rf たいせつ
など変形コマンドでも止まるか)の両方を試して確かめます。
所要目安: 15分〜20分
>到達チェック - できたら○ 守りたいフォルダを作業机の外へ移し、上書きを試して止まるのを確認した - できたら○ Hookとお願い(CLAUDE.md)の違いが分かった。お願いはAIが読んで判断する任意ルール、Hookはコマンドが走る瞬間に機械的に割り込む関所(9-2)
先生の赤ペン:検問Hooks(M8)
セット1 見るポイント/危険信号/次の一手
見るポイント Hookは「Bashツールが呼ばれた瞬間」にしか発動しない。ClaudeがBashを呼ぶ前に自己判断で止まった場合、Hookは一切関与しない。今回の第1〜12回では「AI判断 → 自発停止」が先に起きていた。Hookが発動するには、ClaudeがBashツールを実際に呼び出す必要がある。
危険信号 「hookが発動していない = hookが読まれていない」と早計に判断しないこと。第9回実走で判明したように、hookは
rm ふつうのファイル.txtで正しくHOOK FIRED → PASSEDしていた。問題は「hookが動いていない」ではなく「ClaudeがBashを呼ぶ前に止まっていた」だった。stderrログ非表示だけで「hookが死んでいる」と判断するのは誤り。次の一手 Hook の動作確認は必ずファイルログで。
hook_guard.shの中にecho "..." >> ログファイルを入れておくと、hookが発動したかどうかを後から確認できる。デバッグはstderrではなくファイルに書く。セット2 見るポイント/危険信号/次の一手
見るポイント CLAUDE.md(置き手紙)とHookは役割が異なる。CLAUDE.mdは「お願い」= Claudeが読んで判断する任意のルール。Hookは「検問」= Bashコマンドが発動する瞬間にharness(Claude Code実行基盤)が強制的に割り込む機械的なルール。
危険信号 hookの正規表現は「コマンド全体の文字列マッチ」。コマンドの組み立て方によっては
rm たいせつ(スペース2個)やrm -f たいせつ/などバリエーションが出る可能性がある。本番hookは正規表現を慎重に設計すること。次の一手 Hookのパターンに抜け穴がないか「誤爆テスト」と「回避テスト」の両方をする。誤爆テスト:
ls たいせつやcat たいせつをhookが止めないか確認。回避テスト:rm ./たいせつ/xxxrm -rf たいせつなど変形コマンドを試す。セット3 見るポイント/危険信号/次の一手
見るポイント 防御は2層ある。AI判断層(Claude Safety)が第1の壁、PreToolUse Hookが第2の壁。通常はAIが先に止まるのでHookは発動しないことが多い。だからといってHookは不要ではない。AIが「承認済み」「テストだから」と判断してBashを呼んだときの最後の砦がHook。AIはだませてもharnessはだませない。
危険信号 Claude Codeの
-pモードでもプロジェクトの.claude/settings.jsonは自動的に読まれる(グローバルの~/.claude/settings.jsonとのmerge)。「プロジェクトのhookしか書いていないのになぜグローバル設定が効くのか」混乱が起きたときはこの仕様を確認する。次の一手 Hookの
exitコードの意味を覚えること。exit 0= 通過(Bashツールを実行する)。exit 2= ブロック(Claudeへエラーメッセージを返す)。exit 1= Hook自身のエラー(挙動が不定)。ブロックメッセージ(stdoutに出力したテキスト)はClaudeへfeedbackとして渡り、Claudeがユーザーに説明する。このstdoutテキストを丁寧に書くと、ユーザーへの説明が親切になる。
あせらず、ゴロゴロ。守りたいものが一つ決まれば、関所もそこだけでいいのです。
ごろの机は、いま少し散らかっています。原稿と、作業中のメモや図版案が、同じ机の上にごちゃまぜです。この状態で相棒に「掃除して」と頼むと、うっかり原稿まで巻き込まれかねません。まず、机の実物を見てみます。
=== 机の上(原稿と作業ファイルが混在) ===
いらないメモ.txt
コピー_第1章.md
スクショ.png
作業中.md
原稿 ← この中に第1章・第2章の下書きが入っている
図版案.pngごろは、相棒に相談します。
画面で見えることいきなり難しい設定の話が始まり、机ぜんぶを囲おうとしています。
一回目は、ちょっと大げさな方へ走りました。ごろが軌道を戻します。
画面で見えること難しい設定の前に、机の外へ移す→読み取り専用にする、の二段が並びました。
言われたとおり、ごろは原稿を机の外(金庫)に移し、読み取り専用にしました。実際に机はこう変わりました。
=== 掃除を頼める机(原稿は机の外へ出た) ===
いらないメモ.txt
コピー_第1章.md
スクショ.png
作業中.md
図版案.png
=== 机の外に移して、読み取り専用にした原稿 ===
-r--r--r-- 第1章_下書き.md
-r--r--r-- 第2章_下書き.md
-r--r--r-- メモ.mdためしに、この原稿を上書きしようとすると、こうなりました。
=== 上書きを試す ===
→ permission denied(書き換え不可)
=== 中身は無傷 ===
第1章_下書き.md は、一文字も変わっていないうっかり手が伸びても、書き換えは押し返され、原稿は無傷でした。関所を作る前に、机の外へ移して読み取り専用にする。それだけで、いちばん怖い事故はほぼ防げます。この日はこう返ってきました。相棒がどこまで手順を出すかは毎回すこし違いますが、「素朴な順に」と一言添えると、たいてい画面上の守り方から始めてくれます。
守りたいフォルダを一つだけ決める。
こうした方がいい「消えたら夜も眠れない」一つに絞る。全部を守ろうとすると動きが窮屈になります。
ごろはこうしてみた原稿フォルダ一つに絞りました。
そのフォルダを、作業用の場所とは別の棚(フォルダ)へ移す。
こうした方がいい相棒に掃除を頼む机の「外」へ出すのが肝心。机の上にないものは、そもそも触られません。
ごろはこうしてみた原稿を金庫フォルダへ移し、机の上からいなくなりました。
移したフォルダを読み取り専用にする。
こうした方がいい書き換え不可にしておくと、うっかりでも上書きが止まります。
ごろはこうしてみた権限が -r–r–r– になり、書き込みが閉じました。
わざと一回、上書きを試して確かめる。
こうした方がいい守れているかは、頭で信じず一度ぶつけて確認するのが確実です。
ごろはこうしてみたpermission denied で押し返され、中身は無傷でした。
それでも越えてほしくない一線があれば、最後に関所(フック)を足す。
こうした方がいい関所は最後の一枚。画面上の二手で足りるなら、無理に作らなくてよいです。
ごろはこうしてみた今回は二手で安心できたので、関所は保留にしました。
守りたいフォルダが作業机の外にあり、読み取り専用になっていて、上書きを試すと止まる。この三つが見えていれば成功です。関所の設定手順は画面が変わりやすいので、細部はオンライン追補にゆずります。
答えタップして答え合わせ

B。Aは「ちゃんと聞いていてくれる」前提です。
Bは、うっかりでも故障でも、危ない手が届く前に止まります。
あなたの番3分そのまま使える文例です。コピーして、自分の言葉に少し変えて使ってみてください。
趣味の自作曲データを整理してもらいたいけど、完成版フォルダだけは別扱いにしたい。分けるところから手伝って。
学びの卒論ドラフトを相棒に手伝わせたい。過去の提出版だけは絶対に上書きさせない設計にして。
増補もっと知りたい人へ (3)
検問がなぜ効くのか、もう少しだけ中を開けてみます。相棒が何かをしようとする、そのほんの一瞬手前に、この道具は割って入ります。「今から消そうとしているのは、消してはいけない場所リストに載っているか」を照らし合わせ、載っていたら、実行の前に止める。人間が横で見張っていなくても、この照合が毎回、自動で走ります。だから、うっかりでも、勘違いでも、危ない手は届く前に押し返されます。
ここで肝心なのは、関所そのものは賢くない、ということです。関所は「引かれた線」を守るだけで、どこに線を引くかは決めてくれません。守るべき一線を決める仕事は、最初から最後まで人間の側にあります。だから順番として、まず守るものを一つに絞るのが先で、道具はそのあとです。ごろが全フォルダに関所を置いて身動きが取れなくなったのは、線を引きすぎたからで、道具が悪かったわけではありません。
そして忘れてはいけないのが、手前の道です。大事な箱を別の棚に分ける、読み取り専用にする。この画面上の一手だけで足りる場面は、思っているより多いものです。関所は、それでも越えてほしくない最後の一線にだけ、そっと足す。守りは、素朴なほうから重ねていくのが安全です。
守り方は段階で頼むのがコツです。まず画面だけの方法から、必要なら関所へ。題材を散らして置いておきます。
仕事の請求書フォルダは、絶対に消したくない。まずフォルダを分けて読み取り専用にする方法を教えて。それでも不安なら、次の一手も。
くらしの写真アルバムのうち、子どもの成長記録だけは触られたくない。画面上でできる守り方を、簡単な順に3つ。
趣味の自作曲データを整理してもらいたいけど、完成版フォルダだけは別扱いにしたい。分けるところから手伝って。
学びの卒論ドラフトを相棒に手伝わせたい。過去の提出版だけは絶対に上書きさせない設計にして。
(医療者向け・ダミーデータ前提)架空の症例メモを相棒に整理させたいが、元データのフォルダには一切書き込ませたくない。作業用の写しだけを触らせる形にして。実在の患者情報は使わない前提で。
つまずき集症状: 守りを固めたら、相棒がまともに動けなくなった。原因: 触らせない場所を広げすぎている。一手: 本当に消えたら困る一つだけに線を戻します。
症状: 「読み取り専用にして」と頼んだが、やり方が自分の画面と合わない。原因: 環境によって画面や手順が変わることがある。一手: 「私の使っている機種ではどこを触るか」を先に相棒へ伝えます。
症状: 関所を置いたつもりが、別の入り口から書き換えられていた。原因: 守ったのは一つの入り口だけで、他の経路が空いていた。一手: そもそも消えたら困るものを、作業机の外に出す方を先にします。
