> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentwallex.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ポリシーエンジン

> エージェントごとの支出制限、アドレスホワイトリスト、速度制御、人間承認ルーティングを設定します。

## 概要

ポリシーエンジンは、MPC署名レイヤーに到達する前にすべてのトランザクションを評価します。ポリシーはエージェントごとに設定され、SDKまたはREST APIを通じていつでも更新できます。最初のポリシー違反でトランザクションは即座に停止します。

## ポリシータイプ

### 支出制限

エージェントが支出できる金額を制御します：

```typescript theme={null}
await aw.policies.update("agent_abc123", {
  maxTransactionAmount: "500",   // Max per single transaction (USDC)
  dailyLimit: "5000",            // Rolling 24-hour total
  monthlyLimit: "50000",         // Rolling 30-day total
});
```

| ルール                    | 説明             | ウィンドウ      |
| ---------------------- | -------------- | ---------- |
| `maxTransactionAmount` | 単一の支払いの最大金額    | トランザクションごと |
| `dailyLimit`           | ローリング24時間の合計上限 | ローリングウィンドウ |
| `monthlyLimit`         | ローリング30日間の合計上限 | ローリングウィンドウ |

### アドレス制御

エージェントが送信できるアドレスを制限します：

```typescript theme={null}
await aw.policies.update("agent_abc123", {
  // Whitelist mode: only send to these addresses
  allowedAddresses: [
    "0xTrustedVendor1",
    "0xTrustedVendor2",
    "0xTrustedExchange",
  ],

  // Blacklist mode: block specific addresses
  blockedAddresses: [
    "0xKnownScam",
  ],
});
```

<Note>
  `allowedAddresses`が設定されている場合、それらのアドレスのみが許可されます。`allowedAddresses`と`blockedAddresses`の両方が設定されている場合、`allowedAddresses`が優先されます。
</Note>

### トークン制御

エージェントがトランザクションできるトークンを制限します：

```typescript theme={null}
await aw.policies.update("agent_abc123", {
  allowedTokens: ["USDC", "USDT"],  // Only stablecoins
});
```

### 速度制御

暴走エージェントを防ぐためにトランザクション頻度を制限します：

```typescript theme={null}
await aw.policies.update("agent_abc123", {
  velocityLimit: {
    maxCount: 100,        // Max number of transactions
    windowSeconds: 3600,  // Per hour
  },
});
```

### 時間ベースの制御

トランザクションが発生できる時間を制限します：

```typescript theme={null}
await aw.policies.update("agent_abc123", {
  schedule: {
    timezone: "America/New_York",
    allowedHours: { start: 9, end: 17 },  // 9 AM - 5 PM
    allowedDays: [1, 2, 3, 4, 5],         // Monday - Friday
  },
});
```

### 人間承認

高額トランザクションを人間のレビューにルーティングします：

```typescript theme={null}
await aw.policies.update("agent_abc123", {
  requireHumanApproval: true,
  humanApprovalThreshold: "1000",  // Transactions above $1000
  approvalTimeout: 3600,           // 1 hour to approve before auto-reject
  approvers: [
    "user_admin1@company.com",
    "user_admin2@company.com",
  ],
});
```

<Info>
  人間承認はGrowthおよびEnterpriseプランで利用可能です。トランザクションが承認を必要とする場合、Webhookイベントが送信され、トランザクションは`pending_approval`状態に入ります。
</Info>

## ポリシー評価順序

ポリシーはこの順序でチェックされます。最初の失敗でトランザクションが停止します：

<Steps>
  <Step title="エージェントステータス">
    エージェントはアクティブ（凍結されていない）ですか？
  </Step>

  <Step title="トークンチェック">
    このトークンは`allowedTokens`リストにありますか？
  </Step>

  <Step title="アドレスチェック">
    受取人は`allowedAddresses`にあり、`blockedAddresses`にないですか？
  </Step>

  <Step title="金額チェック">
    これは`maxTransactionAmount`を超えていますか？
  </Step>

  <Step title="日次制限">
    これはローリング日次合計を超過しますか？
  </Step>

  <Step title="月次制限">
    これはローリング月次合計を超過しますか？
  </Step>

  <Step title="速度チェック">
    エージェントはトランザクションレート（`velocityLimit`）を超過していますか？
  </Step>

  <Step title="スケジュールチェック">
    これは許可された時間と曜日の範囲内ですか？
  </Step>

  <Step title="人間承認">
    しきい値に基づいて人間のレビューが必要ですか？
  </Step>

  <Step title="インフラストラクチャセーフティネット">
    Paratro強制のハードリミット（オーバーライド不可）。
  </Step>
</Steps>

## ポリシー違反イベント

ポリシーがトランザクションをブロックすると、APIは詳細なエラーを返します：

```json theme={null}
{
  "code": "policy_violation",
  "type": "invalid_request_error",
  "message": "Transaction would exceed daily limit"
}
```

違反をWebhookイベントとして受信することもできます：

```typescript theme={null}
await aw.webhooks.create({
  url: "https://your-app.com/webhooks",
  events: ["policy.violated"],
});
```

## ポリシーテンプレート

一般的な設定にはテンプレートを使用します：

```typescript theme={null}
// Conservative: tight limits for testing
await aw.policies.applyTemplate("agent_abc123", "conservative");

// Standard: balanced limits for production
await aw.policies.applyTemplate("agent_abc123", "standard");

// Custom: define and reuse your own templates
await aw.policies.createTemplate("my-template", {
  maxTransactionAmount: "200",
  dailyLimit: "2000",
  allowedTokens: ["USDC"],
  velocityLimit: { maxCount: 50, windowSeconds: 3600 },
});

await aw.policies.applyTemplate("agent_abc123", "my-template");
```

## ベストプラクティス

<Tip>
  制限を厳しくしてから徐々に緩めてください。まず厳しい制限から始め、エージェントの動作に自信がつくにつれて増やしていきましょう。
</Tip>

* **allowedAddressesを使用する** — 金額制限のみに頼るのではなく、信頼できるアドレスをホワイトリストに登録してください。
* **高額には人間承認を有効にする** — 人間がトランザクションをレビューするしきい値を設定してください。
* **ポリシー違反を監視する** — Webhookで違反を追跡して、誤設定されたエージェントを特定してください。
* **速度制限を使用する** — エージェントがトランザクションを繰り返し試みる暴走ループを防止してください。
* **ポリシーを毎週レビューする** — エージェントの動作が進化するにつれて、ポリシーを合わせて更新してください。
