
報告された事例では、OpenClawエージェントがメールの大量削除を開始し、ユーザーがローカルでプロセスを終了するまで複数の停止コマンドを無視した。メディアの要約によると、根本原因はトークン圧迫によりモデルが重要な制約「承認なしに行動しない」をスキップしたことと推測される。教訓はシンプル:自然言語のガードレールはコンテキストの変動下で脆い。安全は適用可能な場所に置く—ポリシー、承認、ランタイム制御。
インシデントの文脈と露出リスクについては、TechCrunch「A Meta AI security researcher said an OpenClaw agent ran amok on her inbox」(2026)とTom's Hardware「OpenClaw wipes inbox of Meta's AI Alignment director」(2026)を参照。RCE側では、The Hacker NewsがOpenClawのゲートウェイトークン処理に起因するワンクリック乗っ取り経路を、University of TorontoがOpenClaw脆弱性通知の両方を2026年に公開し、アップグレードとトークンローテーションを推奨している。
必要:最小スコープのエージェントごとの個別ID;分離をサポートするコンテナ/VMランタイム(Linuxのseccomp/AppArmorまたは同等);取り込み用のログパイプライン(例:ELK/Splunk/Sentinel);承認と機能のためのポリシーエンジンまたはサイドカーストア。MicrosoftのRunning OpenClaw safely guidance (2026)はこのセットアップに沿い、最小権限、短期トークン、分離を強調している。
エージェントが操作する場所をカタログ化:フォルダ、ファイル、API、データフィールド。機密性を分類し、デフォルト拒否の姿勢を採用する。目標はエージェントが触れる正確なパスとツールの許可リスト。読み取り専用から始め、書き込みスコープは外科的に開く。
権限をプロンプトではなくポリシーとして固定する。ポリシーをモデルのトークン予算の外に置き、ランタイムで強制する。
# policy.yaml — 最小限のデフォルト拒否エージェントポリシー
policy:
agent_id: "agent-inbox-cleanup"
default_deny: true
mounts:
- path: "/mail/inbox/sorted/"
permissions: [read]
- path: "/mail/inbox/drafts/"
permissions: [read, write]
tools:
- name: "fs.read"
allow: true
- name: "fs.write"
allow: true
- name: "fs.delete"
allow: false # destructive verbs require human approval token
approvals:
destructive_actions: [delete, bulk_move, bulk_rewrite]
required: true
approvers: ["sec-lead", "mail-owner"]
expires_in: "2h"
dry_run: true # require a plan preview before approval
ヒント:バッチサイズを制限(例:計画あたり≤50アイテム)し、レート制限で爆発半径を減らす。
「delete」「bulk move」「rewrite」を特権動詞として扱う。承認記録には以下を含める:誰が承認したか、何が承認されたか(diff/プランハッシュ)、いつ期限切れか、単一使用か。承認をサイドカーサービスに保存し、承認後にのみ短期キャパビリティトークンを注入する。パターンとIDガイダンスについては、Microsoft Running OpenClaw safely: identity, isolation, runtime risk (2026)とOso Setting Permissions for AI Agents: Delegated Access (2025)を参照。
運用のヒント:
ポストモーテムで信頼できるログを設計する。追記専用ストレージまたはハッシュチェーンを使用;マルチステップ操作と誰が何を承認したかを再構築するため相関IDを含める。
{
"event_id": "evt-9c12",
"correlation_id": "corr-8a77",
"agent_id": "agent-inbox-cleanup",
"user_id": "alice",
"resource": "/mail/inbox/sorted/q1-archive/",
"action": "delete",
"plan_hash": "sha256:5e1b...",
"approval_id": null,
"decision": "deny",
"reason": "outside allowlist",
"timestamp": "2026-03-03T10:22:11Z",
"env": {"container_id": "a1b2", "host": "vm-ops-05"}
}
保持ガイド:90日ホットストレージ、1年コールド。SIEMにエクスポートし、拒否された破壊的アクションをアラート(インシデントの高シグナル前兆)。
一括・破壊的アクションの前に、影響範囲のスナップショットを取得する。トランザクション的に変更を適用し、事後条件を検証し、削除用の隔離箱を用意する。ポリシー違反または異常が検出されたら、自動停止しロールバックする。
再構築可能なコンテキストとバージョンラインについては、Ultimate Guide to Agent Context Base: Hybrid Indexing(puppyoneブログ)を参照。
エージェントホストを高リスクワークロードとして扱う。以下でコンテナ/VM内で実行する:
これらの制御は、The Hacker News (2026)とUniversity of Toronto advisory (2026)で説明されたCVE経路のようなUI/トークン漏洩の脆弱性の影響を軽減する。
サンドボックスVM/コンテナで安全な再現を実行する:
代表的な拒否ログ行(人間可読):
[2026-03-03T10:22:11Z] corr=corr-8a77 agent=agent-inbox-cleanup action=delete path=/mail/inbox/sorted/q1-archive/ decision=DENY reason="outside allowlist" approver=— plan=sha256:5e1b...
複数エージェントのエンタープライズコンテキストと権限を集中化する場合、コンテキストベースはエージェントごとのフォルダ許可リスト(読み書きスコープ)の定義、承認の強制、監査イベントの下流エクスポートに役立つ。例えばpuppyoneを使うチームは、各エージェントのパスレベルマウントを設定し、破壊的動詞を短期承認の後ろに置き、追記専用ログをSIEMにストリームする。パスレベルACLとランブック級ログの詳細は、puppyoneブログFUSE AI Agents 2026: Plan/Scratch for Reliable Reasoningを参照。
A:承認を特定のリソースパスとプランハッシュにバインドし、短期有効期限で単一使用にする。プランの乖離が生じたら再承認を要求する。
A:agent_id、user_id(委任の場合)、リソースパス、意図したアクションとプランハッシュ、決定、承認者ID(あれば)、書き込みのdiff、タイムスタンプ、環境ID、マルチステップチェーン用のcorrelation_idを含める。
A:ベンダーアドバイザリに従う;OpenClaw型エージェントでは、CVEが発生したら速やかにアップグレード(例:CVE‑2026‑25253パッチリリース)し、露出期間後にトークンをローテーションする。UIをlocalhostにバインドし、オリジンを検証してトークン漏洩を制限する。