AIエージェントの権限を守る―ツール実行前のチェックと再テスト
Claude Code/Codexに渡せる調査・修正プロンプト付き。AIツール実行時の権限確認と、拒否時にデータが変わらないことまで確かめる手順を紹介します。
参考情報の確認日:2026-10-15 / 公開・最終確認:2026-10-15
Codingholic 編集部 · 約6分
AIエージェントに送金・投稿・データ更新を任せるなら、実行直前の権限チェックまで確認しましょう。Claude CodeやCodexに依頼するときも、「安全にして」だけでなく、対象・期待する権限・合格条件を渡すと、レビューできる作業になります。
以下は、対象リポジトリを開いたClaude Code/Codexに渡す共通の依頼例です。編集部が作成したテンプレートで、公式プロンプトや当社の実測結果ではありません。通常のチャットでコードを読むだけでは、修正やテスト実行まで確認したことにはなりません。
1. 対象と「誰が何をできるか」を決める
例として、下書きを更新するAIツールを扱います。一般利用者は自分の下書きだけ更新でき、他人・他組織の下書きは更新できない、という仕様です。自社の業務ルールに置き換えてください。
以下の[ ]を埋めて使います。対象パス、ローカルのテストコマンド、許可する操作を具体化し、外部の送金・投稿APIはテスト用の代替処理へ切り替えます。プロンプトの指示に加え、作業環境でも本番の認証情報を渡さない構成にします。
2. まず調査を依頼し、修正箇所を確認する
最初は読み取り調査に絞ります。IntentKitを使っていなくても、同じ種類の実行時チェックの不足がないか確認できます。AIが脆弱性と断定したら、入口から実行までつながる根拠を読みましょう。
このリポジトリのAIツール実行処理を、読み取りのみでレビューしてください。
対象:[ディレクトリ/機能名]
対象操作:[例:下書き更新]
期待する権限:匿名は不可、一般利用者は自分の下書きのみ更新可。他人・他組織のデータは不可。
この権限仕様が既存の仕様と食い違う場合は、修正せず確認事項にしてください。
入力受付 → 利用者の認証 → ツール選択 → 実行 → データ更新まで追跡し、次を確認してください。
・モデルに見せるツール一覧と、実行できるツールの範囲が一致するか
・実行時に、サーバーが確認した利用者・対象データ・引数で権限判定するか
・モデル出力やリクエスト中の「所有者」「承認済み」を信用していないか
・別利用者の会話履歴や、権限変更前の呼び出しを再利用できないか
変更・攻撃実行・外部通信はしないでください。秘密情報を読み出さないでください。
指摘ごとに、ファイルと行、成立条件、想定される影響、最小の修正案、必要なテストを示してください。
確認できた事実と仮説を分け、問題がない箇所も根拠を示してください。3. 問題を絞って、修正と回帰テストを依頼する
調査結果と業務ルールを人が確認した後、合意した問題だけを修正させます。権限不足なら操作前に拒否することが重要です。所有者専用の操作に承認を追加する場合も、承認を権限判定の代わりにしません。
先ほどの調査で確認した[指摘ID/ファイルと問題]を修正し、回帰テストを追加してください。
許可範囲:[対象パス]内の編集と、ローカルの[テストコマンド]の実行。
本番・実データ・実際の送金や投稿には接続せず、テスト用DBと外部APIのモックを使ってください。
利用者の識別はサーバーが検証した情報を使い、実行直前に対象と操作の権限を確認してください。
権限が不明・失効・判定エラーの場合は拒否し、モデルの出力だけで許可しないでください。
変更は最小限にし、既存の無関係な変更を上書きしないでください。
次をテストしてください。
1. 一般利用者が自分の下書きを更新できる
2. 匿名・別利用者・別組織からの更新を拒否する
3. モデル向け一覧にないツールを実行層へ直接渡しても、許可外なら拒否する
4. 他人の履歴の再利用と、権限失効後の再実行を拒否する
5. 拒否時はDBが変わらず、外部APIのモックも呼ばれない
新しいテストが修正前に失敗し、修正後に成功することを、元の作業を壊さない隔離環境で確認してください。
実行できないテストは理由付きで未検証としてください。合格と推測しないでください。
変更ファイル、修正理由、実行コマンドと結果、未確認事項を報告してください。
commit・push・デプロイは行わないでください。4. 「直りました」ではなく、差分と結果を見る
確認するのは、権限判定が実行側にあるか、拒否が状態変更より前に行われるか、テストが実際の実行経路を通るかです。判定関数自体をモックにして常に拒否させたテストでは、実装の不備を検出できません。
外部APIを呼ばないモックテストは、実際の接続先の権限設定までは保証しません。配備する版・設定・接続先の権限も確認して反映し、モデルやツールを変更した際は同じテストを再実行します。
許可外を止める
拒否した操作に、DB更新や外部送信の副作用がない。
通常利用を守る
正当な利用者の操作が、許可した対象だけに作用する。
未確認を残す
未実行のテストや本番設定の確認を、完了扱いにしない。
出典と編集について
OWASP:Authorization Cheat Sheet:最小権限・リクエストごとの判定・認可テスト ↗Lasso Security:IntentKitの実行側の対策提案 ↗
OpenAI:Codex Prompting Guide ↗
Anthropic:Claude Codeのベストプラクティス ↗
出典の報告と、編集部が提案する点検・対策を分けて記載しています。本記事の点検項目は個別環境の診断結果ではありません。