Zenn Dev Yuhtaihara Ai Guardrails Machine Level
AI に「やるな」と書いても無駄だった — 機械で止める3層ガードレール
URL: https://zenn.dev/yuhtaihara/articles/ai-guardrails-machine-level
日付: 2026-06-14
Tier: Tier 3
要旨: CLAUDE.md への禁止事項の記述は「お願い」であり確率的にしか守られない。プロンプトに書く禁止事項から「設定で物理的に塞ぐ」3層ガードレール(入口でシークレット検査・実行で可逆性判定・構造でシークレットを平文保存しない)に移行した実践報告。
詳細
- CLAUDE.md 禁止事項の限界: LLM は指示に「確率的に」従うため 100 回に1回は破る。それが本番シークレットを漏らす1回になりうる。
- 3層ガードレール:
- 入口(シークレット検査): プロンプト送信時フックで
ghp_*、sbp_*、eyJ...(JWT)、接続文字列等を正規表現検査してクリップボード貼り付けも含めて遮断。 - 実行(可逆性×到達範囲): ローカル完結+git で戻せるもの→許可。ローカルだが戻せない(rm 系)→承認制。外部到達(push/PR/API 書き込み)→承認制。
- 構造(平文で持たない): シークレットを OS の環境変数で管理。設定ファイルにも .env にも書かない。月1回 grep で全体監査。
- 入口(シークレット検査): プロンプト送信時フックで
- 実際の効果: 記事執筆中に AI が rm で一括削除を試みたが第2層ガードが発動して拒否。「自分が過去に仕込んだ仕組みに今の自分が助けられた」。
- 良いガードレールは存在を忘れる(シートベルトと同じ)のがゴール。