cap_cost est le disjoncteur pour cela : vous rédigez un plafond
en centimes par exécution une fois, et la passerelle refuse le prochain appel
d’outil au moment où la dépense accumulée d’une exécution le franchit —
avant que cet appel n’atteigne le modèle ou l’outil.
C’est du contrôle de coût des agents IA appliqué à la passerelle, pas
greffé sur votre boucle d’agent. Comme chaque
verdict firewall, une règle cap_cost vit
dans une politique d’espace de travail, s’attache à une clé, et prend effet
dès le prochain appel sans redéploiement.
1. Le disjoncteur de dépense par exécution
cap_cost est un verdict de règle que vous rédigez avec un champ
supplémentaire — cap_cost_cents, le plafond de dépense de l’exécution en
centimes USD. Quand la règle correspond à un appel d’outil, le moteur compare
la dépense accumulée de l’exécution d’agent à ce plafond :
- Sous le plafond → l’appel est autorisé ; l’évaluation continue.
- Au-dessus du plafond → l’appel est refusé, avec une raison nommant le total de l’exécution par rapport au plafond. C’est le résultat terminal de disjoncteur — l’exécution ne peut pas émettre un autre appel gouverné jusqu’à une nouvelle exécution.
Portée d’exécution, avec un fallback par requête. Quand la requête porte
un id d’exécution d’agent, le plafond s’applique à la dépense accumulée de
l’exécution. Un appel sans association d’exécution (par ex. un dispatch MCP nu
sans session transmise) retombe sur une comparaison par requête à la place.
Dans les deux cas, le disjoncteur se déclenche avant que l’appel hors-budget
ne soit dispatché.
2. Un exemple concret
Plafonnez toute exécution sur une clé à 5,00 $ de dépense accumulée. Une seule règle wildcard fait l’affaire —cap_cost_cents est 500 (centimes) :
firewall_policy_id, ou faites-en le défaut de l’espace de travail,
et chaque exécution que cette clé pilote est désormais bornée.
Vous pouvez scoper le plafond plus serré que « chaque outil ». Restreignez le
glob de nom d’outil de sorte que seule
une famille coûteuse d’appels compte vers le disjoncteur — par ex. cap_cost
sur *.search pour borner le déploiement de recherche web tout en laissant
les outils locaux bon marché non comptabilisés.
3. Où elle se déclenche — et où elle ne peut pas
cap_cost n’a de sens qu’avant qu’un appel ne soit dispatché — c’est
l’unique point où arrêter l’appel empêche encore la dépense. Donc elle est
active sur les deux surfaces de pré-dispatch et
rejetée sur celles de post-dispatch :
| Surface | cap_cost ? |
|---|---|
inbound (outils annoncés) | Appliquée. |
mcp (dispatch tools/call) | Appliquée. |
response (appels émis par le modèle) | Rejetée à l’enregistrement — plus rien à arrêter. |
egress (destination sortante) | Rejetée à l’enregistrement — plus rien à arrêter. |
cap_cost épinglée à response ou egress est refusée à
l’enregistrement, de sorte qu’une règle ne peut jamais s’afficher comme
active tout en étant incapable de jamais refuser. Laissez le stage vide pour
couvrir les deux surfaces de pré-dispatch, ou épinglez-le à inbound / mcp.
4. À quoi ressemble le disjoncteur quand il se déclenche
Un appel hors-budget est un deny firewall normal :- Sur
inbound, le relais renvoie HTTP 400 avec le code d’erreurfirewall_blocked. Le block se déclenche avant l’appel au modèle amont, donc il ne coûte aucun token de modèle, et il est marqué skip-retry — ré-exécuter le même appel ne ferait que déclencher à nouveau le disjoncteur. - Sur
mcp, il revient comme une erreur d’outil de sorte que le modèle voit le rejet et peut s’arrêter ou demander à l’utilisateur, plutôt que de planter.
cap_cost: estimated run cost $5.40 exceeds cap $5.00, de sorte qu’un opérateur lisant le
flux d’événements voit exactement pourquoi
le disjoncteur s’est déclenché.
Les événements ne portent jamais un
cap_cost littéral. Vous rédigez le
verdict comme cap_cost, mais le moteur le résout en un allow ou deny
concret avant que l’événement ne soit enregistré. Le flux montre l’allow/deny
que l’agent a réellement vu — le plafond de coût d’exécution est la raison,
pas le label du verdict. Cela reflète la façon dont les
verdicts se résolvent.5. Le déployer en toute sécurité
Parce qu’un disjoncteur déclenché arrête durement une exécution, validez-le avant d’appliquer. Activez le mode shadow sur la politique : la règlecap_cost évalue quand même et un deny potentiel
est rétrogradé en audit, préfixé [shadow] would …. Surveillez le flux
d’événements pour confirmer que le plafond se déclenche là où vous attendez —
et seulement là où vous attendez — puis désactivez le mode shadow pour
commencer à appliquer.
Vous pouvez aussi exécuter une politique en dry-run contre un appel
d’échantillon dans l’onglet Test (un
sandbox Developer+) pour voir le verdict résolu et la règle correspondante
avant que quoi que ce soit n’en dépende.
6. Comment elle s’intègre au reste du firewall
cap_cost est un verdict parmi six. Il s’associe naturellement aux autres
contrôles de la même politique :
Verdicts
L’ensemble complet — allow, audit, deny, sanitize, pending_approval, et
comment cap_cost se résout.
Bloquer les outils dangereux
Refuser le shell destructeur, les suppressions et autres appels à haut
risque purement et simplement.
Référence des règles
Le langage de correspondance complet — globs, clauses d’arguments,
séquences.
Détection d'anomalies
Pics de coût signalés contre une baseline heure-de-la-semaine apprise.
cap_cost pour l’arrêt dur, les anomalies pour le signal
précoce.
Les limites de quota sur la clé elle-même (
credit_limit_usd) bornent la
dépense totale à travers toutes les exécutions ; cap_cost borne une
seule exécution. Elles se composent — une boucle emballée déclenche le
disjoncteur par exécution bien avant de pouvoir épuiser le crédit à vie de la
clé. Voir
portée : clés, politiques, espaces de travail.Où aller ensuite
Créer et attacher une politique
Créez une politique, choisissez un verdict par défaut, liez-la à une clé.
Mode shadow
Mesurez un plafond avant qu’il ne change le trafic.
