ラビー合同会社のK@zuki氏は、Claude Codeに特定のコマンド実行を禁止する際、単にブロックするだけだとClaudeが「ユーザーに拒否された」と誤解し、作業が止まってしまう問題を紹介しています。

対策として、PreToolUseフック(ツール実行前に介入する仕組み)を使い、コマンドをブロックした際に「これは設定ルールによるブロックであり対話的なユーザー拒否ではない」ことと、代替手段を明示してモデルに返す方法を紹介しています。記事の例では、ファイルを直接上書きする「sed -i」コマンドを禁止し、代わりにEditツールの利用を提案するメッセージを返しています。実装は「~/.claude/hooks/suggest-edit.py」というPythonスクリプトで、コマンドをshlex.split()で解析し、終了コード2でブロックする仕組みです。この実装はGitHubのdotfilesリポジトリで公開されています。

著者は、この仕組みはあくまで作業継続のための工夫でありセキュリティ対策ではないと注意を促し、本番運用ではSandbox環境の利用が別途重要だと述べています。

出典が伝えている要点

  • 著者はK@zuki(corrupt952)というハンドルネームで、ラビー合同会社(labee)所属のWeb Programmer/SRE。
  • 記事はClaude CodeのPreToolUseフックを使い、禁止コマンド実行時に代替手段を伝える仕組みを紹介している。
  • 記事内の具体例では、ファイルを直接上書きする「sed -i」コマンドを禁止対象としている。
  • ブロック時に返すメッセージ例は「This command was blocked by a configured rule, not an interactive user rejection. Use the Edit tool to make the requested file change.」である。
  • この仕組みでは、禁止コマンドの代替手段としてEditツールの利用を提案している。
  • 実装は「~/.claude/hooks/suggest-edit.py」というPythonスクリプトとして配置される。
  • スクリプトはshlex.split()でコマンドを解析し、終了コード2を返すことでコマンド実行をブロックする。
  • 著者はこの仕組みが実装されたコードをGitHubのdotfilesリポジトリで公開している。
  • 記事は、この仕組みはセキュリティ対策ではないと明記している。
  • 記事は、本番環境ではSandbox環境の利用が重要だと述べている。

原文より

This command was blocked by a configured rule, not an interactive user rejection. Use the Edit tool to make the requested file change.

出典: zenn.dev

← 2026.09.16 の号を通しで読む