Dogwoodは時間論理(Temporal Logic)、特にMetric First-Order Temporal Logic(MFOTL) という形式数学の一分野に基づいています。MFOTLは、命題時間論理に一階述語量化とメトリック制約(例:「過去5分以内」)を加えたもので、イベントの発生順序や時間的な関係性を厳密に監視することを可能にします。
Dogwoodのポリシーは、現在のリクエストだけでなく、セッション内におけるエージェントの行動履歴全体を考慮して判断を下します。ポリシーエンジンは過去のツール呼び出しとその応答を記録し、履歴に照らし合わせてから現在の呼び出しを許可または拒否します。
Dogwoodは、AWSが2023年にリリースした既存の認可用言語Cedarを拡張し、temporalブロックを用いたセッション認識条件を追加したものです。主な時間演算子は以下の通りです。
| 演算子 | 目的 |
|---|---|
formerly | セッション内で、ある条件が過去に真だったかを確認する |
count_within | 指定した時間枠内で、ある条件が発生した回数をカウントする |
count_distinct_within | 時間枠内で出現したフィールドの値の種類(ユニーク値)をカウントする |
sum_within | 時間枠内のイベントにおける数値フィールドの合計を計算する |
since | 最後に特定のイベントが発生してからの条件をチェックする |
once | 条件が一度でも発生したかをチェックする |
これらの演算子により、「支払いアクションは、formerly(過去に)請求書アクションが発生していなければ禁止する」といったルールや、「sum_within(amount, 1h)(過去1時間の金額合計)が閾値を超えたら禁止する」といったルールを簡単に記述できます。時間ポリシーは標準的なCedarルール(permit/forbid)として記述され、条件部分を temporal { ... } ブロック内に記述します。
時間ポリシーは、エージェントのコードの外部にあるAgentCore Gateway層で強制実行されます。ゲートウェイはすべてのツール呼び出しをリアルタイムで傍受し、セッション全体のイベント履歴に対してポリシーを評価してから、呼び出しを許可または拒否します。
この認可判断は、エージェントが変更できないインフラ(境界)で行われるため、プロンプト操作、ジェイルブレイク、エージェントが制御するコードによって回避することは原理的に不可能です。AWSは、ポリシーが「AgentCore Gatewayの境界、エージェント自身のコードの外側」で実行されると明言しており、エージェントが自身の指示を書き換えても影響を受けません。ポリシーエンジンは、ブロックせずに監査のみを行うLOG_ONLYモードと、積極的に拒否するENFORCEモードの2つをサポートしています。
Dogwoodは、2026年8月6日に発表されたAmazon Bedrock AgentCoreに時間ポリシー(Temporal Policies) として統合されています。これと同時に、ゲートウェイでのレート制限機能も発表されました。
Bedrock AgentCoreで現在利用可能な機能:
sum_withinを使ってセッションあたり60,000ドルの支出上限を強制することができます。Dogwood言語とそのリファレンス実装は、マネージドサービスであるBedrock AgentCoreとは別に、GitHub上でApache 2.0ライセンスのもと公開されています。