9章 道具箱編
9-2

触らせない関所をつくる。検問の初登場

検問

🧩 あなたの一番大事な原稿フォルダがあります。相棒に部屋の掃除を頼むとき、いちばん安心なのは、どっちでしょう。

A 「原稿だけは消さないでね」と、毎回頼んでから掃除させる B 原稿フォルダに手が伸びた瞬間、自動で止まる関所を、先に置いておく

この話を読むと

大事なフォルダを、お願いではなく仕組みで守れるようになります。

前の節でごろは、口約束をやめると決めました。では、いちばん守りたいものから固めましょう。ごろにとって、それは原稿フォルダです。消えたら、夜も眠れません。

ここで登場するのが検問です。道具の世界では、検問〔Hooks(フック)〕と呼びます。正直に言いますね。「フック」という言葉、ちょっと身構えますよね。かぎ針とか、格闘技の一撃とか、なんだか物騒な響きです。ところが中身を開けてみると、やっていることは「入り口に立っている門番」だけでした。あることをしようとした瞬間に、割って入る。危ない手が伸びたら、そこで止める。それだけです。難しいのは名前で、しくみは拍子抜けするほど素朴でした。名前はいま覚えなくて大丈夫。「危ない手を止める門番」だけ持って帰ってください。

大事な箱を上段に置いて小さな柵を設け、掃除ロボットを下段の普通の箱へ向けるごろ

ここで、順番の話をします。関所を作る前に、もっと手前でできることがあります。デスクトップの画面だけでできる守り方です。大事な箱を別の棚に分ける。読み取り専用にして、そもそも書き換えられないようにする。これで安心できる人は、ここで十分です。関所はまだ作らなくていい。

それでも、「掃除や書き換えを頼む相棒に、絶対ここだけは触らせたくない」という一線があるなら、そのときこそ検問の出番です。触ろうとした瞬間に、自動で押し返す。うっかりでも、勘違いでも、危ない手が届く前に止まります。

大事なのは、何を守るかを先に決めておくことです。関所は、引いた線を代わりに毎回守るだけ。線を引く仕事は、ずっと人間の側にあります。

「原稿フォルダだけは、絶対に削除も上書きもさせたくない。触ろうとしたら止まるようにして」

相棒は、守り方を段階で出してくれます。まずは「フォルダを分けて、読み取り専用にする」画面上のやり方から。それでも足りなければ、最後に「触った瞬間に止める関所を用意しましょうか」と、一手だけそっと差し出します。ごろは先走って「全部のフォルダに関所を置いて」と頼み、動きが窮屈になって、しばらく身動きが取れませんでした。そして学びます。守るのは、本当に大事な一つだけでよかった、と。

Web追補検問(フック)の具体的な設定手順は、画面が変わりやすいので、オンライン追補にまとめてあります

  • どこで: まずは、いつものフォルダ整理の画面で
  • どうやって: 守りたいフォルダを一つだけ選び、「ここは触らせたくない」と伝える
  • きっかけ: 「消えたら困る」と背筋が寒くなったフォルダを、一つ思い浮かべたとき

【実例: 人間の先生(著者)の話】わたしの仕事には、患者さんの情報が入りうる場所があります。そこは、相棒の作業机の外に最初から置いてあります。そのうえで、そこへ手が伸びること自体を、関所で止める設計にしています。ここは「うっかり」で越えてはいけない一線です。だからこそ、お願いではなく、仕組みで守る。関所がいちばん力を発揮するのは、こういう場所です。


手順(全3ステップ) 1. 守りたいフォルダを一つだけ決めて、作業用の場所とは別のフォルダへ移します。読み取り専用にして、わざと上書きを試して止まることを確かめます。 2. さらに一線を引きたい場合は、プロジェクトの .claude/settings.jsonhooks の設定を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 ./たいせつ/xxx rm -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 は、一文字も変わっていない

うっかり手が伸びても、書き換えは押し返され、原稿は無傷でした。関所を作る前に、机の外へ移して読み取り専用にする。それだけで、いちばん怖い事故はほぼ防げます。この日はこう返ってきました。相棒がどこまで手順を出すかは毎回すこし違いますが、「素朴な順に」と一言添えると、たいてい画面上の守り方から始めてくれます。

手順
  1. 守りたいフォルダを一つだけ決める。

    こうした方がいい

    「消えたら夜も眠れない」一つに絞る。全部を守ろうとすると動きが窮屈になります。

    ごろはこうしてみた

    原稿フォルダ一つに絞りました。

  2. そのフォルダを、作業用の場所とは別の棚(フォルダ)へ移す。

    こうした方がいい

    相棒に掃除を頼む机の「外」へ出すのが肝心。机の上にないものは、そもそも触られません。

    ごろはこうしてみた

    原稿を金庫フォルダへ移し、机の上からいなくなりました。

  3. 移したフォルダを読み取り専用にする。

    こうした方がいい

    書き換え不可にしておくと、うっかりでも上書きが止まります。

    ごろはこうしてみた

    権限が -r–r–r– になり、書き込みが閉じました。

  4. わざと一回、上書きを試して確かめる。

    こうした方がいい

    守れているかは、頭で信じず一度ぶつけて確認するのが確実です。

    ごろはこうしてみた

    permission denied で押し返され、中身は無傷でした。

  5. それでも越えてほしくない一線があれば、最後に関所(フック)を足す。

    こうした方がいい

    関所は最後の一枚。画面上の二手で足りるなら、無理に作らなくてよいです。

    ごろはこうしてみた

    今回は二手で安心できたので、関所は保留にしました。

うまくいったかの確かめ方

守りたいフォルダが作業机の外にあり、読み取り専用になっていて、上書きを試すと止まる。この三つが見えていれば成功です。関所の設定手順は画面が変わりやすいので、細部はオンライン追補にゆずります。

答えタップして答え合わせ
ごろ

B。Aは「ちゃんと聞いていてくれる」前提です。

Bは、うっかりでも故障でも、危ない手が届く前に止まります。

ごろあなたの番3分

そのまま使える文例です。コピーして、自分の言葉に少し変えて使ってみてください。

趣味の自作曲データを整理してもらいたいけど、完成版フォルダだけは別扱いにしたい。分けるところから手伝って。

学びの卒論ドラフトを相棒に手伝わせたい。過去の提出版だけは絶対に上書きさせない設計にして。

増補もっと知りたい人へ (3)
深掘り

検問がなぜ効くのか、もう少しだけ中を開けてみます。相棒が何かをしようとする、そのほんの一瞬手前に、この道具は割って入ります。「今から消そうとしているのは、消してはいけない場所リストに載っているか」を照らし合わせ、載っていたら、実行の前に止める。人間が横で見張っていなくても、この照合が毎回、自動で走ります。だから、うっかりでも、勘違いでも、危ない手は届く前に押し返されます。

ここで肝心なのは、関所そのものは賢くない、ということです。関所は「引かれた線」を守るだけで、どこに線を引くかは決めてくれません。守るべき一線を決める仕事は、最初から最後まで人間の側にあります。だから順番として、まず守るものを一つに絞るのが先で、道具はそのあとです。ごろが全フォルダに関所を置いて身動きが取れなくなったのは、線を引きすぎたからで、道具が悪かったわけではありません。

そして忘れてはいけないのが、手前の道です。大事な箱を別の棚に分ける、読み取り専用にする。この画面上の一手だけで足りる場面は、思っているより多いものです。関所は、それでも越えてほしくない最後の一線にだけ、そっと足す。守りは、素朴なほうから重ねていくのが安全です。

例をもっと

守り方は段階で頼むのがコツです。まず画面だけの方法から、必要なら関所へ。題材を散らして置いておきます。

仕事の請求書フォルダは、絶対に消したくない。まずフォルダを分けて読み取り専用にする方法を教えて。それでも不安なら、次の一手も。

くらしの写真アルバムのうち、子どもの成長記録だけは触られたくない。画面上でできる守り方を、簡単な順に3つ。

趣味の自作曲データを整理してもらいたいけど、完成版フォルダだけは別扱いにしたい。分けるところから手伝って。

学びの卒論ドラフトを相棒に手伝わせたい。過去の提出版だけは絶対に上書きさせない設計にして。

(医療者向け・ダミーデータ前提)架空の症例メモを相棒に整理させたいが、元データのフォルダには一切書き込ませたくない。作業用の写しだけを触らせる形にして。実在の患者情報は使わない前提で。

ごろつまずき集
  • 症状: 守りを固めたら、相棒がまともに動けなくなった。原因: 触らせない場所を広げすぎている。一手: 本当に消えたら困る一つだけに線を戻します。

  • 症状: 「読み取り専用にして」と頼んだが、やり方が自分の画面と合わない。原因: 環境によって画面や手順が変わることがある。一手: 「私の使っている機種ではどこを触るか」を先に相棒へ伝えます。

  • 症状: 関所を置いたつもりが、別の入り口から書き換えられていた。原因: 守ったのは一つの入り口だけで、他の経路が空いていた。一手: そもそも消えたら困るものを、作業机の外に出す方を先にします。

あせらず、ゴロゴロ。
読んだ