PreToolUseフックでAIエージェントの設定ファイル改変を防ぐ
AIエージェントがタスク実行中にlinter設定やフォーマッタ設定を勝手に変更してしまう問題を、PreToolUseフックでガードする。
仕組みの概要:
- エージェントがファイル編集ツールを呼ぶ直前にフックが起動する
- 編集対象のファイルパスを保護リストと照合する
- 保護対象なら操作をブロックし、理由をエージェントに返す
# config-guard.sh(簡略版)
PROTECTED_FILES="biome.json .eslintrc tsconfig.json lefthook.yml"
for file in $PROTECTED_FILES; do
if echo "$INPUT" | grep -q "$file"; then
echo "BLOCKED: $file is a protected config file"
exit 1
fi
done
設計判断のポイント:
- ブロックリスト方式にする — 許可リスト方式だと新規ファイル追加時に漏れるため、明示的にガード対象を列挙する方が安全
- stdinからの入力を正しく処理する — フックはパイプ経由で入力を受け取る。対話的なプロンプト(read)を使うとブロックするため、stdinを一括読み取りする設計にする
- エージェントへのフィードバックを明確にする — なぜブロックされたかをメッセージで返すと、エージェントが代替手段を自律的に選べる