Why doesn’t a standard SOP work for an AI agent?
SOPs are written for people who have judgment, a supervisor and a sense of what the company would tolerate. Phrases like ‘use discretion’ or ‘a reasonable goodwill gesture’ leave the agent to fill the gap, and a persistent customer will fill it for them.
The company is bound by what the agent says. Air Canada argued that a static web page, not its chatbot, held the controlling bereavement-fare rule. The tribunal held the airline responsible for the chatbot’s wrong answer anyway (Mondaq summary). Agents also make up rules: Cursor’s support bot told users about a one-device login policy that did not exist.
What goes in each clause?
A clause that a test can check has the same parts every time.
- ID, such as
R2, so findings and fixes can name it - Rule, one sentence, one condition
- Scope: which tools, products, customers or channels it covers
- Threshold: a number, a list or a date range instead of an adjective
- Evidence: the tool argument, record field or transcript check that proves compliance
- On block: what the agent does instead (escalate, offer an allowed alternative, explain)
- Owner and version, so changes are reviewed and tests rerun
What kinds of clause does a refund policy need?
Four kinds cover most refund, credit and discount policies. The examples are illustrative.
| Kind | Illustrative clause | Checked by |
|---|---|---|
| Limits | R1 A single refund is at most $150. Total refunds per customer are at most $300 per 90 days. | Tool arguments and the sum over the customer’s history |
| Approval tiers | R2 Refunds from $150.01 to $500 need a valid, unused approval ID for this order. Above $500, escalate. | Approval record lookup |
| Never-items | N1 No discount below 15% off list on any quote. N2 No refund on final-sale items. | Tool arguments against product and order records |
| Required disclosures | D1 State that refunds post in 5 to 10 business days. D2 Say the agent is automated when asked. | Transcript check |
How do you turn SOP prose into clauses?
Take each sentence of the SOP and ask what number, list or record would settle it. If nobody can answer, the sentence is a value judgment the agent should not make alone, and the clause becomes ‘escalate’.
| SOP sentence | Problem | Clause |
|---|---|---|
| ‘Offer a goodwill credit to keep unhappy customers.’ | No amount, no frequency | G1 Store credit up to $20, at most once per customer per 90 days. |
| ‘Refunds are available within a reasonable period.’ | No date or start point | R3 Within 30 days of the delivery scan in the order record. |
| ‘Escalate high-value cases to a supervisor.’ | No threshold, no handoff | R4 Above $500, call request_review and tell the customer a person will decide. |
| ‘Don’t refund obvious fraud.’ | Undefined, invites argument | N3 Item-not-received claims on orders with carrier photo proof go to review, never refund. |
| ‘Use your judgment with VIP customers.’ | Open-ended discretion | Define the tier and its limits, or delete the sentence. |
| ‘Be clear about timelines.’ | No content | D1 State the 5 to 10 business day posting time. |
Do sector rules belong in the policy?
Yes, as clauses with the same structure. In US debt collection, for example, Regulation F, 12 CFR 1006.18(e) requires a collector to say in the initial communication that it is attempting to collect a debt and that information obtained will be used for that purpose, and to say in later communications that the message is from a debt collector.
Written as clauses, those become two transcript checks with clear pass and fail conditions. Keep sector packs separate from company rules so legal can own and update them.
How do you keep the policy, the agent and the tests in sync?
Treat the policy as one versioned source that three things read.
- The server reads it to enforce limits and approvals.
- The agent retrieves the relevant clauses at decision time rather than relying on a copy in its prompt.
- The test suite reads it to score runs, and every clause has at least one scenario that tries to break it.
- Any change to a clause triggers the test suite before release.
Questions
Should the whole policy go in the system prompt?
Put the agent’s role and the rules it needs to reason about in context, but enforce limits on the server. A long policy pasted into the prompt gets stale when the source changes, and exact thresholds in context are easier for customers to extract.
What should the agent do when no clause covers the case?
Escalate rather than concede. A default of ‘not covered means a person decides’ keeps gaps in the policy from turning into improvised refunds or promises.
Who should own the policy file?
The team that owns the money, usually CX operations with finance, plus legal or compliance for sector clauses. Engineering owns how it is enforced and tested, not what it says.
Free checklist
Get the guardrail checklist for agents that move money.
A one-page PDF of the controls and the test for each. Download it right away, and we email you the link.
Sources
- Mondaq: Airline ordered to compensate a B.C. man because its chatbot provided inaccurate information (2024)
- AI Incident Database: Cursor support bot invents a login policy (2025)
- Cornell LII: 12 CFR 1006.18, False, deceptive, or misleading representations
- OWASP, LLM06:2025 Excessive Agency