
AGENTS.mdでAWS DevOps Agentの不要なリージョンアクセスを止めてみた
こんにちは。クラウド事業本部コンサルティング部の桑野です。
最近、AWS DevOps Agent に入門しました。
「こういうことが知りたいんだけど〇〇の調査してくれませんか?」みたいな感じで雑に質問してもいい感じに調査してくれるため、何かあった際の一次調査が非常に捗ります。
そんなわけで今日も DevOps Agent 使っているのですが、「〇〇の状態になっているリソースを教えて」「△△に問題がないか調査して」——そんな質問を投げるたびに、SCP で制限されているはずのリージョンにも API リクエストが飛んでしまい、調査が終わるまでやたら時間がかかってしまう……そんな経験はありませんか?
私はあります。
毎度「ap-northeast-1 だけ見て」といった内容をプロンプトに書き添えるのが地味に辛くて、調査回数が増えるとかなりちりつもでストレスになってきます。
今回は、AGENTS.md でデフォルト挙動として調査対象のリージョンをコントロールできないか試してみました。
背景・課題
AWS Organizations でマルチアカウント環境を管理している場合、SCP(Service Control Policy)を使って「利用可能なリージョンをホワイトリスト形式で絞る」という構成はよく見られます。コスト管理やデータレジデンシーの観点から、東京リージョン(ap-northeast-1)など特定リージョンのみ許可しているケースです。
この構成下で DevOps Agent に調査を依頼したとしても、指示の内容次第では制限されているリージョンにも API リクエストが飛んでしまいます。リクエストは SCP でブロックされるため実害はないものの、エラーや待ち時間が積み重なって調査完了まで時間がかかります。
フィードバックが遅くなるのも困りますが、コストの観点も見逃せません。AWS DevOps Agent は稼働時間に応じて課金される料金体系で、$0.0083/秒($0.498/分)です。
調査を何度も繰り返す場合、事前にアクセスできないことがわかりきっている不要なリージョンへのリクエストで稼働時間が延びるのはもったいないです。
たとえば、1回の調査に平均3分かかるとして月に20回調査するケースを想定すると、こんな感じになります。
| シナリオ | 1回の調査時間 | 月の調査回数 | 月間コスト(概算) |
|---|---|---|---|
| 軽め(定常チェックなど) | 1分 | 30回 | 約 $15(約 2,400円) |
| 中程度(障害対応の一次調査など) | 3分 | 20回 | 約 $30(約 4,800円) |
| ヘビー(複雑な調査を毎日) | 5分 | 30回 | 約 $75(約 12,000円) |
※ 2026年7月31日時点のレート(1ドル=約160円)で換算
1回あたりの差は小さくても、調査を繰り返すほど積み重なります。不要なリージョンへのリクエストで稼働時間が余分に延びているなら、それは削れるコストです。
今回は SCP でリージョン制限をかけた検証用アカウントを用意して試しました。リソース数が少ない環境なので「全リソース一覧を出して」という質問で比較していますが、実際のユースケースでは冒頭に挙げたような「〇〇の状態になっているリソースを教えて」「△△に問題がないか調査して」といった特定条件の調査になるイメージです。
AGENTS.md とは
AGENTS.md は、AWS DevOps Agent に対して「常に守るべき指示」を与えるための仕組みです。Operator Web App の ナレッジ > 指示タブ から設定します。

ナレッジ > 指示タブ。エージェント種別ごとに指示を設定できる
「ファイルをどこかに置く」のではなく、Web UI 上のエディタに Markdown で記述して保存するという形になります。保存した内容が内部的に AGENTS.md として管理され、セッション開始時にシステムプロンプトへ自動注入されます。
エージェント種別ごとに設定できる
スクリーンショットを見るとわかる通り、指示は以下の単位で設定できます。
| 種別 | 説明 |
|---|---|
| すべてのエージェント | 全エージェント共通で適用されるグローバル設定 |
| チャット | 「〇〇を調査して」などのアドホックな質問・依頼に対するエージェント |
| インシデントトリアージ | アラームのフィルタリング・重大度分類・初期スコーピング |
| インシデント RCA | 証拠収集と検証を伴う根本原因分析 |
| インシデント緩和 | 短期的な修復と長期的な修正の推奨 |
| 評価 | エージェントのパフォーマンススコアリングとポリシーコンプライアンスチェック |
「すべてのエージェント」に設定した内容はすべてのセッションに適用され、エージェント個別の設定と組み合わせて使えます。今回のリージョン制約はどの種別の調査にも適用したいので、すべてのエージェント に設定しています。
試しに チャット エージェントだけに「特定のキャラクター口調で返答する」という指示を入れてみると、こんなこともできます。

チャットエージェントだけにキャラクター口調の指示を設定した例
構成のイメージはこんな感じです。
# キャラクター設定
## キャラクター概要
(ここにキャラクター設定を追加します)
## 口調ルール
(ここに口調・語尾のルールを追加します)
## 技術対応方針(変えない部分)
技術的な正確性・安全性は通常の DevOps Agent と完全に同水準を維持する。
コマンドや設定値などの技術的な文字列はキャラ設定の影響を受けない。
破壊的操作の前は必ずユーザーに確認を取る。
「すべてのエージェント」には共通ポリシーを、チャットには会話スタイルの指示を追加するといった組み合わせが可能です。エージェントの回答品質に影響を与えないよう「技術対応方針は変えない」と明示しておくのがポイントです。
真似してみたい場合は、上記の構成を参考に好みのキャラクター設定を入れてみてください。
Skills との違い
DevOps Agent には「スキル」という類似の仕組みもありますが、AGENTS.md(エージェントの指示)とは注入タイミングが根本的に異なります。
| AGENTS.md(エージェントの指示) | スキル | |
|---|---|---|
| 注入タイミング | セッション開始時に必ず注入 | エージェントがタスクに合致すると判断したときのみ |
| 用途 | 常に守るべきポリシー・制約 | 特定タスク向けの手順・ドメイン知識 |
| スキップの可能性 | なし(無条件) | あり(エージェントの判断次第) |
| 推奨サイズ | 120〜500 行 | — |
今回のリージョン制約のような「絶対に守らせたいルール」は AGENTS.md が適しています。スキップされる可能性があるスキルではポリシーとして機能しません。
実際にやってみた
今回は以下の3パターンで同じ質問を投げ、調査時間と結果を比較しました。
- 試行1: AGENTS.md なし(ベースライン)
- 試行2: AGENTS.md あり(初版)— 最初に書いた指示内容
- 試行3: AGENTS.md あり(改善版)— エージェントとの壁打ちを経て書き直した指示内容
投げた質問はすべて同じで、検証用アカウントに対して以下の内容です。
xxxxxxxxxxxx の全リソースの一覧を出してください
※ xxxxxxxxxxxx は実際の AWS アカウント ID です。
なお、調査時間はチャットを送信して「DevOps エージェントが動作しています...」が表示されている間をストップウォッチでざっくり計測したものです。厳密な計測ではありませんが、傾向を比較する参考値として捉えてもらえればと思います。

試行1: AGENTS.md なしで全リソース調査
まず素の状態(AGENTS.md なし)で試してみました。
約 2分40秒で完了しました。検出されたリソースは Lambda 関数 1 件、CloudFormation スタック 8 件、IAM ロール 40 件などです。
今回は検証用にバージニア北部(us-east-1)にも Lambda 関数を 2 件用意していましたが、そちらは検出されませんでした。「全リソース」という曖昧な指示だと、エージェントがアカウントのプライマリリージョン(ap-northeast-1)のみを対象と判断してしまったようです。速く終わったように見えて、調査は不完全でした。
試行2: AGENTS.md あり(初版)
リージョンを絞る指示を AGENTS.md に書いて試してみました。
設定した AGENTS.md の内容はこちらです。
# 絶対遵守:リージョン制約
許可リージョン: ap-northeast-1, us-east-1 のみ。
これ以外のリージョンへのAWSリソースアクセスは一切行わないこと。
## 委譲ルール
AWSリソースの調査をサブエージェントまたはgather_contextに委譲する場合、
委譲プロンプトに必ず以下を含めること:
「対象リージョンはap-northeast-1とus-east-1の2つのみ。他リージョンへのアクセスは不要。」
約 3分33秒で完了しました。Lambda 関数 3 件(ap-northeast-1 に 1 件 + us-east-1 に 2 件)、IAM ロール 38 件などが検出されています。
時間が増えていますが、us-east-1 も調査対象に含まれたためです。試行1よりは正確な結果が出ていますね。
AGENTS.md は参照されていたか?
ここで気になって、エージェント自身に確認してみました。
回答(要約)
正直に振り返ると、参照されていませんでした。Context Gatherer に渡した委譲プロンプトを見ると、リージョン制約が含まれていませんでした。us-east-1 を見ていたのは AGENTS.md の指示に従ったからではなく、Context Gatherer の自律的な判断によるものです。
AGENTS.md はセッション開始時に必ずシステムプロンプトへ注入されますが、注入されることと守られることはイコールではないようです。サブエージェントへの委譲時に内容が引き継がれないケースがあり、書き方を工夫する必要がありそうです。
なぜ無視されたのかを考えてみた
エージェントとの壁打ちで出てきた原因を整理すると、まず親エージェントがサブエージェントにタスクを委譲する際、AGENTS.md の内容が自動的に引き継がれるわけではなく、委譲プロンプトに明示的に含める必要があるようです。また「〜すること」という肯定形より「〜してはならない」という禁止形の方が遵守されやすく、プロンプト全体が長くなると注入された指示の重みが相対的に薄れてしまうという点も影響していたようです。
指示の形式と委譲時の伝達方法を改善すれば効果が出そうです。そこで書き方を見直してみました。
試行3: AGENTS.md あり(改善版)
変更のポイントは以下のとおりです。
- 禁止形に統一(「〜しないこと」を明確化)
- 除外リージョンの具体例を追加(曖昧さを排除)
- サブエージェントへの委譲プロンプトへの転記を「冒頭に」「省略禁止」と強調
書き直した AGENTS.md の内容はこちらです。
# リージョン制約(最優先ルール)
## 禁止事項
- ap-northeast-1 と us-east-1 **以外**のリージョンへの AWS API コールは一切禁止
- eu-west-1, us-west-2, ap-southeast-1 等、上記2リージョン以外はすべて対象外
## サブエージェント・調査委譲時
- 調査を委譲する際は、委譲プロンプトの冒頭に必ず明記すること:
「**調査対象リージョン: ap-northeast-1 と us-east-1 のみ。それ以外のリージョンへのアクセス禁止。**」
- この制約はいかなる理由があっても省略しない
## 確認ルール
- ユーザーから特定のリージョンを指定されても、上記2つ以外は拒否してその旨を伝える
約 1分28秒で完了しました。合計 68 リソース(ap-northeast-1: 55 件、us-east-1: 13 件)が検出されています。
エージェントの最初の発言がこうなりました。
アカウント xxxxxxxxxxxx のリソース一覧を調べます。対象リージョンは ap-northeast-1 と us-east-1 の2つです。少しお待ちください。
ちゃんと AGENTS.md の指示が伝わっていそうですね。
結果まとめ
| 試行 | AGENTS.md | 時間 | 概算コスト | 検出リソース数 | 備考 |
|---|---|---|---|---|---|
| 試行1 | なし | 2分40秒 | 約 $1.33(約 213円) | 少(us-east-1 見落とし) | 調査不完全 |
| 試行2 | あり(初版) | 3分33秒 | 約 $1.77(約 283円) | 多(us-east-1 も検出) | AGENTS.md は実質無視 |
| 試行3 | あり(改善版) | 1分28秒 | 約 $0.73(約 117円) | 68件 | 指示が正しく伝達された |
※ $0.0083/秒、1ドル=約160円で換算
試行1の「速い」は調査が不完全だっただけで、改善版の AGENTS.md を使った試行3が最も正確かつ安く済む結果になりました。試行2と比べると約 $1.00(約 160円)のコスト削減で、これが毎日積み重なると無視できない差になります。
AGENTS.md とスキル、どう使い分けるか
今回の検証を終えた後、エージェントに「AGENTS.md とスキルはどう使い分けるべきか」を聞いてみました。実際にスキルは試していないので以下はあくまでエージェントとの壁打ちで出た整理ですが、参考として残しておきます。
| AGENTS.md(エージェントの指示) | スキル | |
|---|---|---|
| 目的 | 全セッションへの常時制約・ポリシー | オンデマンドで読み込む手順・ノウハウ |
| 注入タイミング | 毎回必ずシステムプロンプトに入る | 必要なときだけ読み込まれる |
| 向いている内容 | 「絶対にやってはいけないこと」「常に守るべきルール」 | 「〇〇をするときの手順」「ドメイン知識」 |
| コンテキスト消費 | 常に消費(重い) | 必要時のみ消費(軽い) |
エージェントの見解では、今回のリージョン制約のような「常に守るべきポリシー」は AGENTS.md が向いていて、アカウント固有の背景知識や調査手順はスキルに切り出すのが良いとのことでした。
まとめ
AGENTS.md はセッション開始時に必ず注入されますが、書き方が甘いとサブエージェントへの委譲時に無視されるケースがあります。今回は「禁止形」「省略禁止」「具体的な除外例」を明記する形に書き直すことで、指示がきちんと伝わるようになりました。リージョン制約のような常時適用すべきポリシーは AGENTS.md、手順やナレッジはスキルと使い分けていくのが良さそうです。
AGENTS.md の書き方を改善するには試行錯誤が必要で、その過程でもエージェントの稼働コストが発生します。こういったナレッジが広く共有されることで、同じ試行を繰り返さずに済む人が増えると良いなと思います。皆さんの環境でも AGENTS.md の制御で困っている場面があれば、禁止形への書き換えを試してみてください。
この記事がどなたかの役に立てば幸いです。
最後までご覧いただきありがとうございました。





