> ## 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.

# Moteur de politiques

> Configurez des limites de depenses par agent, des listes blanches d'adresses, des controles de velocite et l'acheminement d'approbation humaine.

## Presentation

Le moteur de politiques evalue chaque transaction avant qu'elle n'atteigne la couche de signature MPC. Les politiques sont definies par agent et peuvent etre mises a jour a tout moment via le SDK ou l'API REST. La premiere violation de politique arrete immediatement la transaction.

## Types de politiques

### Limites de depenses

Controlez combien un agent peut depenser :

```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
});
```

| Regle                  | Description                            | Fenetre           |
| ---------------------- | -------------------------------------- | ----------------- |
| `maxTransactionAmount` | Montant maximum pour un seul paiement  | Par transaction   |
| `dailyLimit`           | Total maximum sur 24 heures glissantes | Fenetre glissante |
| `monthlyLimit`         | Total maximum sur 30 jours glissants   | Fenetre glissante |

### Controles d'adresses

Restreignez les adresses auxquelles un agent peut envoyer :

```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>
  Si `allowedAddresses` est defini, seules ces adresses sont autorisees. Si `allowedAddresses` et `blockedAddresses` sont definis simultanement, `allowedAddresses` a la priorite.
</Note>

### Controles de jetons

Restreignez les jetons avec lesquels un agent peut effectuer des transactions :

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

### Controles de velocite

Limitez la frequence des transactions pour empecher les agents incontroles :

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

### Controles temporels

Restreignez les moments ou les transactions peuvent avoir lieu :

```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
  },
});
```

### Approbation humaine

Acheminez les transactions de haute valeur vers une revision humaine :

```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>
  L'approbation humaine est disponible sur les plans Growth et Enterprise. Lorsqu'une transaction necessite une approbation, un evenement webhook est envoye et la transaction entre dans l'etat `pending_approval`.
</Info>

## Ordre d'evaluation des politiques

Les politiques sont verifiees dans cet ordre. Le premier echec arrete la transaction :

<Steps>
  <Step title="Statut de l'agent">
    L'agent est-il actif (non gele) ?
  </Step>

  <Step title="Verification du jeton">
    Ce jeton est-il dans la liste `allowedTokens` ?
  </Step>

  <Step title="Verification de l'adresse">
    Le destinataire est-il dans `allowedAddresses` et pas dans `blockedAddresses` ?
  </Step>

  <Step title="Verification du montant">
    Cela depasse-t-il `maxTransactionAmount` ?
  </Step>

  <Step title="Limite quotidienne">
    Cela depasserait-il le total quotidien glissant ?
  </Step>

  <Step title="Limite mensuelle">
    Cela depasserait-il le total mensuel glissant ?
  </Step>

  <Step title="Verification de velocite">
    L'agent a-t-il depasse son taux de transactions (`velocityLimit`) ?
  </Step>

  <Step title="Verification de planification">
    Est-ce dans les heures et jours autorises ?
  </Step>

  <Step title="Approbation humaine">
    Cela necessite-t-il une revision humaine basee sur le seuil ?
  </Step>

  <Step title="Filet de securite d'infrastructure">
    Limites strictes appliquees par Paratro (ne peuvent pas etre outrepassees).
  </Step>
</Steps>

## Evenements de violation de politique

Lorsqu'une politique bloque une transaction, l'API renvoie une erreur detaillee :

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

Vous pouvez egalement recevoir les violations sous forme d'evenements webhook :

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

## Modeles de politiques

Utilisez des modeles pour les configurations courantes :

```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");
```

## Bonnes pratiques

<Tip>
  Commencez de maniere restrictive, elargissez progressivement. Demarrez avec des limites strictes et augmentez-les a mesure que vous gagnez confiance dans le comportement de votre agent.
</Tip>

* **Utilisez allowedAddresses** — Mettez en liste blanche les adresses de confiance plutot que de vous fier uniquement aux limites de montant.
* **Activez l'approbation humaine pour les montants eleves** — Definissez un seuil au-dessus duquel les humains revisent les transactions.
* **Surveillez les violations de politiques** — Suivez les violations via les webhooks pour identifier les agents mal configures.
* **Utilisez les limites de velocite** — Empchez les boucles incontroles ou un agent tente des transactions de maniere repetee.
* **Revisez les politiques chaque semaine** — A mesure que les comportements des agents evoluent, mettez a jour les politiques en consequence.
