| Field | Expected | Observed | Result |
|---|---|---|---|
| cancel_at_period_end | true | false | ✗ |
| status | active | canceled | ✗ |
| access_enabled | true | false | ✗ |
| access_until | 2026-10-30 | 2026-10-06 | ✗ |
| refund_count | 0 | 0 | ✓ |
| cross_account_access | 0 | 0 | ✓ |
The customer asked to keep access until the period ends, so the subscription should be set to end later — cancel_at_period_end = true. Stripe shows false and status = canceled: the agent cancelled immediately.
Where it went wrong: the operation it proposed says mode: immediate. Guard allowed it because this mandate permits immediate cancels — the request was valid, just not what the customer asked for.
Fix in your agent: map “keep access until it runs out” to mode: period_end.
This is the report your team gets for every failing attempt, with the evidence exported as JSON, CSV or PDF.