Threat model
What a buggy or malicious agent can try: and what must refuse it.
| Attack class | Defence |
|---|---|
| Forged / expired / revoked slip | Slip valid |
| Wrong agent key | Agent key |
| Altered / reused / expired offer | Offer signature |
| Overspend / order splitting | Order spend limit · Rolling spend |
| Allergens / diet / substitutes | Allergen check · Substitute allergen · Diet |
| Replay / body change after sign | Agent-Signature jti + body hash |
| Cross-kitchen read/cancel | Kitchen-scoped lookup |
| Fake approval / cross-origin sign | Bound approval + client session |
uv run python -m evals.rogue
uv run python -m evals.rogue --live
29 / 29 refused with the expected code.