
何が起きたか
Claude Code 2.1.304の実セッションで、PreToolUseフックが『rm -rf build』を終了コード2で阻止したが、『rm -fr build』は実行されフォルダが削除された。
なぜ重要か
フックはコマンド文字列のパターン照合のみのため、サンドボックスではなく危険な定番形を拾う初期網として機能する。著者は権限設定や作業前のgitコミットとの併用を勧めている。
こういう要約が、毎朝あなたのメールに届きます。
検証は使い捨てフォルダで、非対話モードのclaude -pと、コマンドごとの承認が干渉しないよう--dangerously-skip-permissionsを付けて実行された。著者はこのオプションを通常業務で使わないよう明示的に警告している。承認をスキップしても、フックが終了コード2を返せばコマンドは停止し、エラー文はClaudeに返された。著者はClaude Codeが渡すのと同じ形のJSONをスクリプトに与える単体テストも行った。この単体実行では『git push --force origin main』と『git reset --hard HEAD~3』は停止し、『rm -fr build』と『rm -r -f build』は通過した。後者2つは実セッションでは行われていない。
スクリプトはコマンド読み取りにjqに依存しており、著者は『command -v jq』の行がなぜ重要かを示す。これがないと、jqのない環境では何も読めずに終了コード0となり、すべてが通過してしまう。しかも終了コードが0なので、onFailureは失敗とみなさない。実セッションでPATHからjqを外すと、チェック付きの版は『jq is required』のメッセージを出して『ls build』さえブロックしたが、チェックなしの版は『rm -rf build』がフォルダを削除するのを許した。
onFailure設定はバージョン2.1.295で導入され、2.1.294ではスクリプトパスを間違えてもコマンドは止まらなかった。著者が試したのはスクリプト欠如のケースのみで、ドキュメントでは0/2以外の終了コード、タイムアウト、読み取れないJSON出力も失敗として扱われると注記している。最後の助言は、確実にブロックしたいコマンドには権限設定を使い、フックは初期網として残し、信頼する前にダミーフォルダで動作を確認することだ。
業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。
登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →
この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。
研究者が所得3水準・人種3グループの米国おとりアカウント91件を運用したところ、広告はアカウント作成から約2週間後に表示され始め、低所得アカウントほど広告の表示頻度が高かった

マイクロソフトは2026年7月に発表したサイバーセキュリティシステム「Project Perception」を拡張し、組織内で稼働するAIエージェントの監視・統制に乗り出す方針を示した

GPTがブラインド判定した日本語40課題で、Sarashina3 miniの意味を保てた書き直しは10問中1問

Zenn連載の最新回で、著者はqt_add_qml_moduleのRESOURCESにパスを列挙し、Qt/QML画像ビューアにSVGツールバーアイコンを追加した

Claude Code 2.1.303が公開されたが、変更履歴には個別の修正が列挙されず「不具合修正と信頼性の改善」とだけ記され、実際に何が変わったのか利用者には分からないままだ

tanashun氏はtanacode 2.0.0のチャット機構をターミナル画面の読み取りからstream-jsonへ作り直し、親子セッション・チェックリスト・最適化圧縮を組み合わせて1日で完了した
