ポリシーエンジンは、MPC署名レイヤーに到達する前にすべてのトランザクションを評価します。ポリシーはエージェントごとに設定され、SDKまたはREST APIを通じていつでも更新できます。最初のポリシー違反でトランザクションは即座に停止します。
ポリシータイプ
支出制限
エージェントが支出できる金額を制御します:
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日間の合計上限 | ローリングウィンドウ |
アドレス制御
エージェントが送信できるアドレスを制限します:
await aw.policies.update("agent_abc123", {
// Whitelist mode: only send to these addresses
allowedAddresses: [
"0xTrustedVendor1",
"0xTrustedVendor2",
"0xTrustedExchange",
],
// Blacklist mode: block specific addresses
blockedAddresses: [
"0xKnownScam",
],
});
allowedAddressesが設定されている場合、それらのアドレスのみが許可されます。allowedAddressesとblockedAddressesの両方が設定されている場合、allowedAddressesが優先されます。
トークン制御
エージェントがトランザクションできるトークンを制限します:
await aw.policies.update("agent_abc123", {
allowedTokens: ["USDC", "USDT"], // Only stablecoins
});
速度制御
暴走エージェントを防ぐためにトランザクション頻度を制限します:
await aw.policies.update("agent_abc123", {
velocityLimit: {
maxCount: 100, // Max number of transactions
windowSeconds: 3600, // Per hour
},
});
時間ベースの制御
トランザクションが発生できる時間を制限します:
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
},
});
人間承認
高額トランザクションを人間のレビューにルーティングします:
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",
],
});
人間承認はGrowthおよびEnterpriseプランで利用可能です。トランザクションが承認を必要とする場合、Webhookイベントが送信され、トランザクションはpending_approval状態に入ります。
ポリシー評価順序
ポリシーはこの順序でチェックされます。最初の失敗でトランザクションが停止します:
エージェントステータス
エージェントはアクティブ(凍結されていない)ですか?
トークンチェック
このトークンはallowedTokensリストにありますか?
アドレスチェック
受取人はallowedAddressesにあり、blockedAddressesにないですか?
金額チェック
これはmaxTransactionAmountを超えていますか?
速度チェック
エージェントはトランザクションレート(velocityLimit)を超過していますか?
スケジュールチェック
これは許可された時間と曜日の範囲内ですか?
人間承認
しきい値に基づいて人間のレビューが必要ですか?
インフラストラクチャセーフティネット
Paratro強制のハードリミット(オーバーライド不可)。
ポリシー違反イベント
ポリシーがトランザクションをブロックすると、APIは詳細なエラーを返します:
{
"code": "policy_violation",
"type": "invalid_request_error",
"message": "Transaction would exceed daily limit"
}
違反をWebhookイベントとして受信することもできます:
await aw.webhooks.create({
url: "https://your-app.com/webhooks",
events: ["policy.violated"],
});
ポリシーテンプレート
一般的な設定にはテンプレートを使用します:
// 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");
ベストプラクティス
制限を厳しくしてから徐々に緩めてください。まず厳しい制限から始め、エージェントの動作に自信がつくにつれて増やしていきましょう。
- allowedAddressesを使用する — 金額制限のみに頼るのではなく、信頼できるアドレスをホワイトリストに登録してください。
- 高額には人間承認を有効にする — 人間がトランザクションをレビューするしきい値を設定してください。
- ポリシー違反を監視する — Webhookで違反を追跡して、誤設定されたエージェントを特定してください。
- 速度制限を使用する — エージェントがトランザクションを繰り返し試みる暴走ループを防止してください。
- ポリシーを毎週レビューする — エージェントの動作が進化するにつれて、ポリシーを合わせて更新してください。