「AIエージェントに自由にツールを使わせたら、とんでもないことをやらかした…」そんな経験、あるいは想像してドキッとした方、多いんじゃないでしょうか。😅
LLM(大規模言語モデル)にシェルやパッケージマネージャー、ウォレット、メールアカウントなどの「本物のツール」を渡した瞬間、デモでは見せてもらえなかった怖い問題が顔を出します。
AIエージェントが引き起こす「あるある」危険事例

具体的にどんなことが起きるのか、代表的なケースを見てみましょう。
- 🚨 スロップスクワッティング(Slopsquatting):AIが存在しないパッケージ名を自信満々に hallucinate し、
pip installを実行。攻撃者がそのパッケージ名をあらかじめマルウェア入りで登録していて感染するケース - 📧 勝手にメール送信:「下書きして」と頼んだのに、エージェントが自己判断で送信ボタンを押す
- 🗑️ ファイルの大量削除:「このフォルダを整理して」という指示を文字通りに解釈して消しまくる
- 💸 想定外のAPI課金:ループ処理の中でAPIを無制限に叩き続けてコストが爆発する
共通しているのは、「エージェントが確信を持って、誰も見ていない瞬間に、素早く実行してしまう」という点です。怖いですよね。
「確率的な判断」に「決定論的な壁」を組み合わせる
LLMの判断はあくまでも確率的です。つまり「たぶん大丈夫」の積み重ねで動いています。
これに対して有効なのが決定論的ガードレール(Deterministic Guardrails)という考え方です。
イメージとしては、「AIが何をしようとしているかを、コードで機械的にチェックする門番」を設けるイメージです。AIの判断を信頼しながらも、特定の危険なアクションだけは問答無用でブロックする仕組みです。
Pythonで数行だけ書いてみる
実際にシンプルなガードレール関数を書いてみましょう。ポイントはシンプルに保つことです。
import re
# ブロックしたいコマンドのパターンリスト
DANGEROUS_PATTERNS = [
r"pip install", # 未知パッケージのインストールを防ぐ
r"rm -rf", # 再帰的削除を防ぐ
r"send_email", # メール誤送信を防ぐ
r"DELETE FROM", # DBの全削除を防ぐ
]
def check_guardrail(command: str) -> bool:
"""
コマンドが危険なパターンに一致するか確認する。
True = 安全(実行OK)
False = 危険(ブロック)
"""
for pattern in DANGEROUS_PATTERNS:
if re.search(pattern, command, re.IGNORECASE):
print(f"🚫 ガードレール発動:'{pattern}' が検出されました。実行をブロックします。")
return False # 実行しない
return True # 安全
# --- エージェントのツール実行ラッパー ---
def safe_execute(command: str):
if not check_guardrail(command):
# ログを残す・人間に通知する処理もここで行う
return {"error": "Action blocked by guardrail"}
# ここで実際のコマンド実行処理を行う
print(f"✅ 実行します:{command}")
# execute(command) # 実際の実行関数
# テスト
safe_execute("pip install some-hallucinated-package")
safe_execute("ls -la /tmp")
ポイントをまとめるとこんな感じです👇
- ✅ LLMの出力を直接実行せず、必ずラッパーを通す
- ✅ ブロックしたときはログに残す(あとで何が起きたか追えるように)
- ✅ パターンリストは運用しながら育てていく(最初から完璧でなくてOK)
- ✅ ブロック時は人間に通知する仕組みも入れると安心
「AIを信頼しないのか?」ではなく「AIを安全に使う」という発想
ガードレールを入れるのは、AIへの不信感からではありません。むしろ「AIをもっと安心して活用するための土台」です。
自動車にブレーキがあるのは車を信頼していないからではなく、安全に速く走るためですよね。それと同じ感覚です。
まとめ
AIエージェントに本物のツールを渡すなら、決定論的ガードレールはほぼ必須です。LLMの確率的な判断を、コードによる確実なチェックで補う。この組み合わせがプロダクション品質のAIエージェントには欠かせません。
まずは「自分のエージェントが絶対にやってはいけないこと」を3つ書き出すところから始めてみてください。それをパターンリストに変換するだけで、今日からガードレールを運用できます 🛡️
ぜひ試してみてください!
📚 関連商品・おすすめ書籍
もしも
ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付 mega2560 r3 nanoと互換 [並行輸入品]
チュートリアル付きのArduino入門セット
※本記事にはアフィリエイトリンクが含まれます。




