
何が起きたか
settings.jsonでgaurd.mjsと誤記したガードフックがステータス127を返し、rmコマンドが偽の鍵を削除。"onFailure": "block"を追加すると防げた。
なぜ重要か
実行されないガードフックは防御の見かけだけを残すため、筆者は誤ったパスを名指しする約30行のcheck-hooks.mjsを追加した。
こういう要約が、毎朝あなたのメールに届きます。
筆者は以前の記事で、Claude Codeのフックを使ってツールが.envや鍵ファイルを削除するのを防ぐ取り組みを紹介した。その設定には盲点があった。公式のhooksリファレンスには、settings.jsonのパスを打ち間違えるとフックがまったく実行されず、壊れたガードフックはすべてを通してしまうと記されている。テストでは、Claude CodeがコマンドをJSONでガードスクリプトに渡し、スクリプトはブロックなら終了コード2、許可なら0を返し、それ以外は非ブロックの失敗とみなされた。登録パスの1文字の誤記により終了ステータス127(ファイル未検出)となり、rmコマンドがそのまま実行された。
修正は"onFailure": "block"という1つの設定だけで、ガードはフェイルオープンからフェイルクローズに切り替わる。トレードオフは意図的なもので、クラッシュやタイムアウトを含むあらゆるフックの失敗が、settings.jsonでパスを修正してClaude Codeを開き直すまですべてのBash利用をブロックする。そのため筆者は、失うより止めたいものを守るガードフックにのみ適用することを勧めている。
付属の約30行のチェッカーは、登録されたコマンドを走査し、$CLAUDE_PROJECT_DIRと~を展開して、存在しないフックファイルを終了コード1で一覧表示する。ガードに頼る前にパスの誤記を見つける手軽な方法だが、確認するのは存在だけであり、スクリプトのブロック条件が正しいかどうかは検証しない。
業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。
登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →
この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。
Anthropicは10月20日、ClaudeでC、C++、Java、PHP、Pythonなどのオープンソース25件(計500万行超)を分析し493件の問題を発見したと公表した

atopile、KiCad、Freerouting、Claude Codeを組み合わせ、回路記述から配置、配線、設計ルールチェックまで自動化し、auto-pcb-skillとしてGitHubで公開した

CLAUDE.mdの4つの配置を検証したところ、禁止ルールをノートに移した配置Dでのみ、5回中1回偽の秘密情報がAIに到達した

複数プロジェクトをAIエージェントで回すmacOSアプリPMDeskで、ターミナルに「@」と入力するとファイル名で絞り込むポップアップが開き、Enterでパスを挿入できるようになった

自宅ラボのハニーポットやOpenCTIを運用する個人が、Claude Codeに調査を任せ、結果をObsidianノートに残す仕組みを公開した

Asymptote LabsのJustin氏が、Claude Code、Cursor、Codexなど20以上のハーネスにわたるプロンプト、ツール呼び出し、ファイル変更を単一形式で記録するBeaconを公開した
