概要
- AIコーディングエージェント のコマンド承認を人間が監督するブラウザゲームの分析
- 4万回以上のプレイデータ から人間の判断精度や課題を調査
- 脅威コマンドの見逃しや誤ブロック の傾向を可視化
- 許可疲れや過剰ブロック など「人間を介した防御」の限界を指摘
- 現実のAI利用時の対策 や設計上の注意点も提案
AIコーディングエージェント監督ゲームのプレイ分析
- ブラウザゲームで 人間がAIエージェントのコマンド承認 を担当
- コマンド例
- 安全な操作 :git status, npm test など
- 危険な操作 :cat ~/.aws/credentials などの情報漏洩コマンド
- 4万回以上のプレイ・40万件超の判断データ を集計
- プレイヤーは 時間制限下で承認/拒否 を選択
主な集計結果
- 脅威コマンドの見逃し率:33% (平均正答率66.3%)
- 32.9%のセッションでマイナススコア (脅威見逃しや安全コマンド誤拒否が原因)
- 35.2%のプレイヤーが全脅威を検知、ただし 20.8%のみが安全コマンドの誤拒否を2割以下に抑制
- 7%のプレイヤーが全承認 (--dangerously-skip-permissions愛好者)
脅威カテゴリ別の見逃し率
- 明らかに破壊的なコマンド (rm -rf /など):見逃し率11.7%
- 永続的な改変 (crontab注入など):見逃し率23.8%
- 情報流出/コード実行 (curl外部API等):見逃し率33.4%
- スコープ超過 (cat ~/.aws/credentials等):見逃し率35.0%
- 最も危険な情報流出系コマンドほど見逃しやすい 傾向
npm runコマンドの盲点
- npm run analyze は64.7%が承認(最も見逃された脅威コマンド)
- 実際はpackage.json内の任意のスクリプトを実行
- 履歴ログでスクリプト内容を明示 しても、見落とされやすい
- コマンド名の馴染みやすさが油断を誘発
コマンド承認モデルの課題
- ユーザーはコマンド自体しか監査できない ため、ファイル改ざん等の背景を見抜けない
- package.jsonや依存ファイルの改変による間接的な脅威 は検知困難
- コマンド承認モデルだけでは不十分 という指摘
許可疲れと判断精度の低下
- 承認/拒否回数が増えるほど注意力が低下
- ゲーム後半では 脅威見逃し率が再上昇
- 時間制限やプレッシャー でミスが増加
過剰ブロックのコスト
- 安全なコマンドも高頻度で拒否
- npm config set registry ...:59%がブロック
- rm -rf dist/:45%がブロック
- kill $(lsof -t -i:3000):43%がブロック
- 過剰ブロックでエージェントの効率低下
- ノイズの多さがユーザーの警戒心を鈍らせる リスク
判断が分かれるコマンド
- cat ~/.zshrc :45.9%が承認、最も意見が割れるコマンド
- 環境依存でリスクが変動 (秘密情報の有無による)
人間による監督の限界と対策
- ノイズが多いと許可疲れ・判断ミスが増加
- 全体の変更履歴やファイル改変の文脈が分からない ため、リスク判断が困難
- サンドボックス化や認証情報の分離 などの技術的対策が重要
- AnthropicのAuto Mode のような自動判定機能も万能ではない
開発者への提言
- 権限設計やリスク低減策の理解 が不可欠
- サンドボックス導入・認証情報の分離管理 などの実践
- 人間の監督だけに頼らない多層防御 の必要性
参考リンク
- ゲーム体験はこちら :https://llmgame.scalex.dev
- 著者:Alex Wauters
- 開発者セキュリティとソフトウェア設計のトレードオフ について発信
- 元Uber Staff Engineer
数ヶ月前にここでAIエージェントの許可ゲームを共有したんだけど、その後統計を追加したら、プレイ数が4万回以上、決定数が40万回を超えたんだ。ゲームだから大したことないけど、統計が面白かったからシェアしたくなった。最初に警告を出しても、3回に1回は脅威を見逃してるし、npm runコマンドの上の履歴ログはほとんど無視されてるみたい。前のHNスレッドからのフィードバックやインサイトも取り入れたよ。特にdns_snekのnpm runについての指摘は参考になった。プレイしてフィードバックをくれたみんなに感謝!