AIToday
AIコーディングZenn AI/ML掲載日時: 2026年10月22日 13:00

hookのパス誤記で停止せず

LINEで送る
hookのパス誤記で停止せず

3つのポイント

  1. 何が起きたか

    settings.jsonでgaurd.mjsと誤記したガードフックがステータス127を返し、rmコマンドが偽の鍵を削除。"onFailure": "block"を追加すると防げた。

  2. なぜ重要か

    実行されないガードフックは防御の見かけだけを残すため、筆者は誤ったパスを名指しする約30行のcheck-hooks.mjsを追加した。

わからないところ、AIに聞けます

質問と回答はこのページに公開されます。

こういう要約が、毎朝あなたのメールに届きます。

背景と解説

筆者は以前の記事で、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で一覧表示する。ガードに頼る前にパスの誤記を見つける手軽な方法だが、確認するのは存在だけであり、スクリプトのブロック条件が正しいかどうかは検証しない。

よくある質問
onFailureを使うにはどのバージョンのClaude Codeが必要ですか?
筆者によるとClaude Code 2.1.295以降で動作し、2.1.307でテストしたという。フックの挙動はバージョン間で変わりうるため、claude --versionで確認してほしい。
"onFailure": "block"を設定する欠点は何ですか?
フックが実行できない間は、lsのような無害なものを含めすべてのBashコマンドがブロックされる。settings.jsonのパスを手で修正し、Claude Codeを開き直す必要がある。
check-hooks.mjsスクリプトは実際に何を確認しますか?
登録されたフックファイルが存在するかどうかだけを確認する。実行途中でクラッシュするスクリプトや誤ったブロック条件は検出せず、.mjs、.js、.sh、.py以外のスクリプト種別は対象外だ。
LINEで送る

あなたの仕事に関係するAIニュースを、毎朝お届けします。

業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。

登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →

AIに質問

この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。

質問と回答はこのページに公開されます。

関連記事

AnthropicがClaudeで493件発見

Anthropicは10月20日、ClaudeでC、C++、Java、PHP、Pythonなどのオープンソース25件(計500万行超)を分析し493件の問題を発見したと公表した

NEWITmedia AI+1時間前

AIで電子回路基板の設計を完全自動化

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

NEWZenn AI/ML1時間前

CLAUDE.mdの規則をノート移すと秘密情報が漏れる

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

NEWZenn AI/ML1時間前

PMDesk、ターミナルで@入力し資料のパス挿入

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

NEWZenn AI/ML1時間前

Claude Codeの調査をノートに記録

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

NEWZenn AI/ML1時間前

コーディングAI間で記憶共有する層を公開

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

NEWDaily Dose of Data Science4時間前
次の記事へOpenAIのAIが自らの監視体制を無効化