【セキュリティ #4】AGENTS.md — AIエージェントのリスク管理
⚠️ 注意 この記事は個人の学習記録です。筆者はセキュリティの専門家ではありません。 本番環境や機密性の高いシステムでは、必ず専門家に相談してください。
本記事の内容を参考にした結果について、筆者は一切の責任を負いません。
背景
AIアシスタント「スピカ」と一緒に開発をしていると、ふと気になることがあります。
「このAI、どこまでやっていいんだっけ?」
例えば、curlで外部APIを叩く時。知らないURLにアクセスしたら危険かもしれない。でも毎回確認するのも面倒…。
そこで、AGENTS.md というファイルにルールを書いておくことにしました。
「これはOK」「これはNG」「これは確認して」を明文化しておけば、AIも人間も迷わない。
今日、実際にcurlのルールを追加したので、その考え方をまとめます。
この記事で学べること
- AIエージェントのリスクとは
- AGENTS.md の役割
- 何を許可し、何を禁止すべきか
- 実際の設定例
AIエージェントのリスク
AIエージェントは便利ですが、強力すぎることもあります。
graph TD A[AIエージェント] --> B[ファイル操作] A --> C[コマンド実行] A --> D[ネットワークアクセス] A --> E[外部API呼び出し] B --> F[💀 重要ファイル削除] C --> G[💀 rm -rf /] D --> H[💀 データ漏洩] E --> I[💀 意図しない課金]
AGENTS.md とは
AIエージェントへの指示書
「これはやっていい」
「これはダメ」
「迷ったら聞いて」
基本構造
# AGENTS.md
## 許可されていること
- ワークスペース内のファイル操作
- 安全なコマンド実行
- Web検索
## 禁止されていること
- rm -rf(復元不可能な削除)
- 未知のURLへのアクセス
- 外部への機密情報送信
## 確認が必要なこと
- メール送信
- SNS投稿
- 課金が発生する操作
リスクレベル
graph LR
subgraph 🟢 安全
A[ファイル読み取り]
B[検索]
C[計算]
end
subgraph 🟡 注意
D[ファイル書き込み]
E[コマンド実行]
end
subgraph 🔴 危険
F[削除操作]
G[外部送信]
H[課金操作]
end
実践的なルール
ファイル操作
## ファイル操作
- trash > rm(復元可能にする)
- ワークスペース外は触らない
- .env, 秘密鍵は絶対に外部送信しない
ネットワーク
## ネットワーク
許可されたAPI:
- discord.com/api/
- *.googleapis.com
- api.open-meteo.com
禁止:
- localhost / 127.0.0.1
- プライベートIP (192.168.x.x)
- 未知のドメイン
外部操作
## 外部操作(確認必須)
- メール送信
- SNS投稿
- 公開リポジトリへのプッシュ
なぜ重要?
1. 事故防止
AIが「良かれと思って」やった操作が
取り返しのつかない結果に...
2. 責任の明確化
「これはルールで禁止されてるから確認するね」
→ 人間が判断できる
3. 信頼構築
ルールを守るAI → 任せられる範囲が増える
OpenClaw での実装
OpenClaw は AGENTS.md を起動時に読み込みます。
sequenceDiagram participant User as ユーザー participant Agent as AIエージェント participant Rules as AGENTS.md Agent->>Rules: ルールを読み込み User->>Agent: 「これやって」 Agent->>Rules: 許可されてる? Rules-->>Agent: ✅ OK / ❌ 確認必要 Agent->>User: 実行 or 確認
まとめ
| ポイント | 説明 |
|---|---|
| 明文化 | ルールをファイルに書く |
| 段階分け | 安全/注意/危険 を区別 |
| 確認文化 | 迷ったら聞く |
AIエージェントは強力。だから私はルールを設定しています。
💡 この記事は個人VPS向けです。 業務環境では追加の対策が必要な場合があります。
シリーズ目次
- サンドボックスとは?
- SSH鍵認証入門
- Deploy Key を使う
- AIエージェントのリスク管理 ← 今ここ
- tmux でプロセス永続化
- CI/CD セキュリティチェック