ファイルガードフックがReadで登録されている場合、catを... ノート

ファイルガードフックがReadで登録されている場合、catを見ることはありません。

著者は、Claude Codeにおけるファイルアクセス制限、特にPreToolUseフックと拒否ルールがどのように機能するかを調査しました。モデルのコンテキストからファイルを排除するように設計された著者のPreToolUseフックは、Readツールではなくcatコマンドが使用された場合に予期せずバイパスされました。しかし、1行の拒否ルールはcatコマンドを正常にブロックしました。これにより、さまざまな条件やClaude Codeのバージョンにわたるこれらの制限の到達範囲を測定するための一連のテストが行われました。テストにより、Readに登録されたPreToolUseフックは、Bashでcatを介したファイルアクセスではトリガーされなかったことが確認されましたが、Readツール自体はブロックされました。逆に、権限拒否ルールはcatコマンドをブロックすることに成功しました。2つの対照実験により、重要なニュアンスが明らかになりました。単一のファイルに対して指定された拒否ルールは、システムメッセージでディレクトリ全体に適用されると誤って解釈され、Pythonスクリプトの実行は、当初拒否ルールによってブロックされているように見えましたが、実際には自動モード分類子によって停止されました。ドキュメントでは、拒否ルールはClaudeの組み込みツールと認識されているBashコマンドに適用されるが、ファイルを直接開くPythonスクリプトのような任意のサブプロセスには適用されないと明確にされています。包括的なOSレベルの強制には、サンドボックスが推奨されます。Editフックを使用した同様の実験では、sed -iによってバイパスされたことが示されましたが、拒否ルールはそれをブロックしました。しかし、拒否ルールには独自の制限があり、シェルリダイレクトを介したファイル変更をブロックできませんでしたが、1つの特定のredirectは捕捉しました。ファイルを書き込む別のコマンドはブロックされずに実行されました。これは、拒否ルールがフックよりも広範囲に及ぶものの、網羅的ではなく、OSレイヤーが完全なファイルアクセス制御のための最も堅牢なソリューションであることを示唆しています。著者は、潜在的なギャップを特定するために、自身のセットアップをテストすることを強調しています。