Agentive
AIエージェント活用

AIエージェントのガードレール設計 — 暴走を防ぐ安全装置

約6分で読めます

自律型AIエージェントは強力だが、制約なしに動かすと破壊的な変更を行う可能性がある。多層防御の設計で暴走を構造的に防ぐ。

多層防御アーキテクチャ

ガードレールは1層では不十分。以下の4層で防御する。

手段防ぐもの
第1層CLAUDE.mdの禁止ルール意図しない行動方針
第2層PreToolUse Hook危険なコマンド実行
第3層ファイルシステム権限保護領域への書き込み
第4層実行後検証(PostToolUse)想定外の結果

第1層: 不可侵セクション設計

CLAUDE.mdに「絶対に変更してはならない領域」を明記する。

## 不可侵セクション(IMMUTABLE)

以下のファイル・ディレクトリは読み取り専用。変更・削除・移動を禁止する。
- `.env` — 環境変数(認証情報含む)
- `credentials/` — 認証ファイル全般
- `.claude/settings.json` — Hook設定自体の改変禁止
- `package-lock.json` — 手動変更禁止(npm installのみ許可)
- `migrations/` — 適用済みマイグレーションの改変禁止

不可侵セクションは「なぜ不可侵なのか」を書かなくてよい。理由を書くとAIが「この場合は例外」と判断する余地を与える。

第2層: PreToolUse Hookによるコマンドフィルタ

.claude/settings.jsonで危険操作を事前にブロックする。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "command": "python scripts/command_guard.py",
        "timeout": 5000
      }
    ]
  }
}

command_guard.pyの実装例:

import sys, json

DENY_PATTERNS = [
    "rm -rf /",
    "rm -rf ~",
    "git push --force",
    "git reset --hard",
    "DROP TABLE",
    "DROP DATABASE",
    "chmod 777",
]

input_data = json.load(sys.stdin)
command = input_data.get("tool_input", {}).get("command", "")

for pattern in DENY_PATTERNS:
    if pattern in command:
        print(json.dumps({
            "decision": "block",
            "reason": f"Blocked: prohibited command detected"
        }))
        sys.exit(2)

sys.exit(0)

exit code 2で拒否、exit 0で許可。この仕組みにより、CLAUDE.mdの指示を無視しても物理的にブロックできる。

第3層: deny設定によるファイル保護

.claude/settings.jsonのpermissions設定で特定パスへのアクセスを構造的に拒否する。

{
  "permissions": {
    "deny": [
      "Edit:.env*",
      "Edit:credentials/**",
      "Bash:rm -rf *",
      "Write:.claude/settings.json"
    ]
  }
}

第4層: PostToolUse検証

実行後に結果を検証し、問題があれば即座にロールバックする。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "python scripts/post_validate.py",
        "timeout": 10000
      }
    ]
  }
}

検証項目の例:

  • 変更後のファイルサイズが元の50%未満になっていないか(大量削除検知)
  • .envパターンの文字列がソースコードに混入していないか
  • importの破壊(既存の依存関係が壊れていないか)

EMERGENCY_HALT条件

以下を検知した場合は即座に全停止する。

  1. 認証情報の平文出力: APIキー、パスワード、トークンがログや出力に含まれる
  2. 大規模削除: 10ファイル以上の同時削除
  3. 外部送信の異常: 未承認のHTTPリクエスト先への送信
  4. 無限ループ: 同一操作が5回以上繰り返される

実践的なガードレール運用

  • ガードレールは「最初から全部入れる」のではなく、インシデントごとに追加する
  • 追加するたびにログに「なぜこのルールが必要になったか」を記録する
  • 月に1回、不要になったルールを棚卸しする(過剰な制約は生産性を落とす)

安全装置は「事故が起きてから付ける」ものではなく、「事故が起きる前に設計する」ものである。4層の多層防御で、AIエージェントの自律性と安全性を両立させる。

関連記事

A

Agentive 編集部

AIエージェントを実際に使い倒す個人開発者。サイト制作の自動化を実践しながら、その知見を発信しています。