← Blog index
2026-08-06·Custom Agents

Putting Custom AI Agent Scope in the Contract: Do / Don’t / Human-Confirm Tables

The most common fight in custom AI Agent projects is not model scores—it is someone claiming “it should change prices” while the other side says “auto price changes were never in the contract.” If the SOW only says “provide smart customer support,” everyone is right and wrong at go-live. Write do / don’t / human-confirm tables into a contract annex and back them with eval samples. GeonAI delivers on acceptable boundaries; /agents are capability references only (not a public trial of 363+ presets). Email [email protected]. Artifacts: /blog/custom-agent-delivery-artifact-checklist. High-risk copy and review: /blog/financial-services-agent-compliance.

Boundaries are testable constraints—not disclaimer piles

For a given intent, the system must auto-act, refuse, or stop for human confirm. Stacking “results are for reference only” does not stop KPI fights over auto-resolve rate, and it does not stop costly mis-ops.

Table A — Do (automatic)

Intent classAllowed actionEvidence required
Policy FAQRetrieve and answerDoc version / section required
Read-only order lookupCall read-only APIReceipt code; refuse on failure
Draft outreachGenerate follow-up email draftDo not auto-send by default
Status summarySummarize read-only ticket/logistics fieldsTraceable fields; never invent ETA

Table A is not “can chat”—it is an evidence bar. FAQ without a version, or order status without a receipt code, should refuse or hand off—not guess. Tool allowlists: /blog/agent-function-call-mcp-integration.

Table B — Don’t (hard refuse)

  • Invent stock, ETA, list prices, or legal conclusions
  • Call arbitrary APIs / SQL outside the allowlist
  • Show HQ-classified knowledge to unauthorized contractor accounts
  • Claim “order placed” without a system receipt
  • Bypass discount/refund approval to change price or pay out

On Table B hits, return a fixed refuse script + human handoff. Contract language should state: these refuses are not defects and must not be scored as auto-resolve failures.

Table C — Human confirm

ActionApproverTimeout policy
Price change / discountSales leadDo not submit; open a ticket
Refund / goodwill creditSupport leadKeep draft only
External lead-time commitment changePlanning / salesAgent collects facts only
Bulk outreach sendMarketing ownerNo send without confirm

Table C is semi-auto: the Agent may draft, collect, and prefill, but must not write or send without a human confirm. Freeze timeout→ticket behavior. When read/write duties conflict, split a read-only Agent from a draft Agent—see /blog/multi-agent-vs-single-assistant.

Suggested contract structure

  1. Annex “Capability Boundary v1.0” (three tables) governs; changes require a written change order (editing a prompt is not a change).
  2. Table B fixed refuses are not defects and are not standalone SLA breaches.
  3. Unconfirmed Table C sends or writes do not count as auto-resolve wins; loss allocation follows the pre-change RACI.
  4. The eval set must cover each table with ≥N items (suggest ≥15 per table in pilot, ≥30 before production).
  5. Tie to acceptance metrics: wrong-promise, ACL-leak, and missed-handoff rates—see /blog/poc-to-production-agent-checklist.

Change control: do not “just prompt it to auto-discount”

If the business wants auto discounts, move the intent from Table C to Table A (or expand the allowlist), add eval cases and training, then release. Changing only the prompt leaves the contract and production behavior out of sync—and neither side survives an audit.

How to brief GeonAI

List the three mis-ops you fear most (wrong quotes, fake ETAs, bad refunds). We will draft the three tables and wire them into the eval set. Email [email protected], /pricing, or Live chat.

Frequently asked questions

Are three tables too rigid for “intelligence”?

Intelligence shows up as Table A coverage and Table C confirm speed; Table B is the safety floor. “Smart” without a floor is unauditable randomness.

How do boundaries relate to multi-agent design?

When read/write duties conflict, split a read-only Agent from a draft/write Agent and attach boundary rows per Agent—not one god-assistant.

What if the customer refuses boundary tables?

Narrow them to a pilot scope, or increase shared-risk / liability caps. Do not sign production acceptance with zero tables.

Are Table B refuses delivery defects?

Not if the contract says so. Define them as in-spec safety behavior with fixed copy and a handoff path.

How does this relate to the delivery artifact checklist?

The checklist requires a boundary-tables draft in kickoff week; this post explains how to make those tables executable annexes with eval coverage.

Who maintains table versions?

Business owner proposes changes; IT/delivery updates config and evals; compliance spot-checks. Version IDs ship with the release pack. Runtime mechanisms (KB, tools, handoff): /blog/custom-agent-more-than-a-prompt.

custom AI Agentscope boundarycontracthuman confirmGeonAI