Budgets de tokens : un catalogue empirique de 63 incidents de dépassement de budget d'agents LLM, avec une mitigation en Rust à typage affine comme étude de cas
Token Budgets: An Empirical Catalog of 63 LLM-Agent Budget-Overrun Incidents, with an Affine-Typed Rust Mitigation as a Case Study
June 2, 2026
Auteurs: Sajjad Khan
cs.AI
Résumé
Les dépassements de budget des agents LLM constituent une classe documentée de défaillances en production : une simple boucle de réessai peut dépenser des milliers de dollars avant qu'un opérateur ne s'en aperçoive, et les propriétés d'intégrité en cours d'exécution qui les empêcheraient (pas d'aliasing, pas de double dépense, pas d'utilisation après délégation d'une valeur portant un coût) ne sont appliquées, quand elles le sont, que par des enveloppes ad hoc plutôt que par le système de types. Notre contribution centrale est empirique : un catalogue de 63 incidents de production confirmés issus de 21 frameworks d'orchestration (2023-2026), chacun étayé par un ticket GitHub cité et, lorsque rapportée, une perte financière, organisé en une taxonomie de défaillances à huit groupes (kappa de Cohen inter-évaluateur = 0,837, N = 113), accompagné de 47 entrées structurelles supplémentaires. Comme une mesure d'atténuation évaluée face à cette taxonomie, nous construisons token-budgets, une crate Rust de 1 180 lignes (sans unsafe) qui opérationnalise la possession affine afin que le clonage, la double dépense ou l'utilisation d'un budget après l'avoir délégué soient des erreurs de compilation plutôt que des dangers à l'exécution qu'un opérateur doit se rappeler d'éviter. Le plafond monétaire est une opération arithmétique à l'exécution sous une hypothèse d'estimateur ; la couche affine rend cette arithmétique non contournable. Sur des charges de travail à agent unique, un compteur Python de 4 lignes correspond à la crate avec 0/30 dépassements, donc la valeur distinctive réside dans le non-contournement en cas d'erreur de l'opérateur lors de la délégation multi-agents : la course de délégation en éventail documentée dans 11 incidents est rejetée par le vérificateur d'emprunts à la compilation, tandis que le même motif sous asyncio dépasse 30/30 et trois alternatives disciplinées dépassent 0/30. Sur cinq environnements d'exécution, trois fournisseurs et un test d'API en direct stratifié par température (N = 160), l'approche rapporte zéro violation de plafond et zéro faux refus, avec une parité opérationnelle par rapport aux travaux concurrents. La sur-réservation statique est de 4 à 6 fois (2,11 fois avec adaptation). La solidité du plafond au niveau binaire sur le binaire en cours d'exécution reste ouverte.
English
LLM-agent budget overruns are a documented production failure class: a single retry loop can spend thousands of dollars before an operator notices, and the in-process integrity properties that would prevent it (no aliasing, no double-spend, no use-after-delegation of a cost-bearing value) are enforced, if at all, by ad-hoc wrappers rather than by the type system. Our central contribution is empirical: a catalog of 63 confirmed production incidents from 21 orchestration frameworks (2023-2026), each backed by a quoted GitHub issue and, where reported, a dollar loss, organized into an eight-cluster failure taxonomy (inter-rater Cohen's kappa = 0.837, N = 113), plus 47 supplementary structural entries. As one mitigation evaluated against this taxonomy, we build token-budgets, an 1,180-line Rust crate (no unsafe) that operationalizes affine ownership so that cloning, double-spending, or using a budget after delegating it are compile errors rather than runtime hazards an operator must remember to avoid. The dollar cap is runtime arithmetic under an estimator assumption; the affine layer makes that arithmetic non-bypassable. On single-agent workloads a 4-line Python counter matches the crate at 0/30 overshoot, so the distinguishing value is non-bypassability under operator error in multi-agent delegation: the delegation-fanout race documented in 11 incidents is rejected by the borrow checker at compile time, while the same pattern under asyncio overshoots 30/30 and three disciplined alternatives overshoot 0/30. Across five runtimes, three providers, and a temperature-stratified live-API test (N = 160), the approach reports zero cap violations and zero false refusals, at operational parity with concurrent work. Static over-reservation is 4-6x (2.11x adaptive). Binary-level cap-soundness on the running binary is left open.