Skip to guide
AgenticOrgDocsOpen app
Documentation/OACP — agentic commerce, made safe

OACP — agentic commerce, made safe

Feature switches reference

Every OACP switch, its default and what it does, in plain tables, with the safe order for turning them on and how to turn them back off.

Platform operators and merchants6 min readReviewed 2026-10-21
On this page

Three kinds of switch

Safe by default

Safety checks start on in production. Every surface that publishes or moves money starts off. Request signatures start in log mode and move to enforce only by choice.

Three groups of switches. On in production: signature checks before keeping facts, verified buyer authority, the Grantex countersignature on allows, and a ledger row for every commerce write. Off until you turn it on: the UCP profile and checkout, the ACP feed and checkout, Grantex mandates, payment execution and refunds, and chain sealing, witness and retention. Log first and enforce only by choice: agent request signatures; ACP request signatures stay in log.On in productionSignature checks before keeping factsVerified buyer authorityGrantex countersignature on allowsLedger row for every commerce writeOff until you turn it onUCP profile and UCP checkoutACP feed and ACP checkoutGrantex mandatesPayment execution and refundsChain sealing, witness, retentionLog first, enforce by choiceAgent request signaturesACP request signatures: keep log

"Strict runtimes" are production, staging, preview and any unknown environment name. Local, dev, development, test and ci are not strict.

Safety checks (on in production)

Switch Default What it does
AGENTICORG_OACP_VERIFY_STRICT On in strict runtimes; log-only elsewhere Refuses to keep any fact whose signature, key, scope, expiry or revocation check fails.
AGENTICORG_ARBITER_REQUIRE_VERIFIED_AUTHORITY On in strict runtimes Refuses buyer authority that AgenticOrg did not verify itself (rule 4).
AGENTICORG_ARBITER_REQUIRE_GRANTEX_GRANT On in strict runtimes An allow decision can be used only with a verified Grantex countersignature.
AGENTICORG_ARBITER_GRANTEX_POST_ENABLED Follows the switch above Sends each decision to Grantex for its countersignature.
AGENTICORG_ROUTE_ENFORCEMENT_MODE enforce A commerce write that skips its ledger row is answered as an error. log only logs it.

Turning a safety check off weakens the shop's protection. Do it only as a recorded decision, for a short window.

Ledger extras (off by default)

Switch Default What it does
AGENTICORG_AUDIT_CHAIN_DEFAULT_ON Off Links the ledger rows of every commerce tenant into a hash chain (the global AGENTICORG_AUDIT_CHAIN_ENABLED does it for all tenants).
AGENTICORG_AUDIT_WITNESS_ENABLED Off Sends each sealed chain head to Grantex, which countersigns it as an outside witness.
AGENTICORG_OACP_RETENTION_APPLY_ENABLED Off Lets the daily task delete review manifests whose stored retention decision has come due.

Selling surfaces (off by default)

Switch Default What it does
AGENTICORG_UCP_PROFILE_ENABLED Off Serves your UCP profile, catalog and store locations. Off, they answer 404.
AGENTICORG_UCP_VERSIONS 2026-04-08 Which UCP releases are served. Add 2026-08-25 when platforms read it.
AGENTICORG_UCP_KEY_ROTATION_GRACE_DAYS 7 (minimum 7) How long a rotated-out signing key stays published.
AGENTICORG_CUSTOM_DOMAINS_ENABLED Off Lets you connect your own subdomain (for example agent.your-store.example) for your UCP profile under Commerce > Custom Domains. Off, those pages and routes answer 404.
AGENTICORG_UCP_CHECKOUT_ENABLED Off Serves UCP checkout, cart and order routes. Off, they answer 404.
AGENTICORG_ACP_FEED_ENABLED Off Lets you export the ACP product feed.
AGENTICORG_ACP_CHECKOUT_ENABLED Off Serves ACP checkout sessions (your shop must also opt in).
AGENTICORG_ACP_SIGNATURE_MODE log Keep log. ACP publishes no signing method yet, so enforce would refuse every request.
OACP_PUBLIC_CATALOG_PLATFORM_DISABLED Unset An operator override that withdraws the public catalog pages for every merchant.

Mandates and payments (off by default)

Switch Default What it does
AGENTICORG_GRANTEX_MANDATES_ENABLED Off A checkout Complete gets Intent, Cart and Payment mandates from Grantex and verifies them.
AGENTICORG_GRANTEX_MANDATE_CAPABILITY_EVIDENCE_ENABLED Off Sends your payment-capability check result to Grantex with the authority request.
PLURAL_PINE_LIVE_EXECUTION_ENABLED Off Registers the Plural executor, so an allowed checkout or refund can actually charge or pay back.
AGENTICORG_RBI_EMANDATE_AFA_LIMIT_MINOR_UNITS 1500000 (₹15,000) Later UPI AutoPay debits above this need RBI AFA.
AGENTICORG_RBI_EMANDATE_AFA_HIGHER_LIMIT_MINOR_UNITS 10000000 (₹1,00,000) The higher limit for insurance, mutual fund and credit-card bill debits.

Agent request signatures

Switch Default What it does
AGENTICORG_HTTPSIG_VERIFY_MODE log log checks and logs signatures and refuses nothing. enforce answers 401 to unsigned calls on the commerce API.
AGENTICORG_HTTPSIG_AUTHORITIES Empty The public host names a signature must cover. Set before enforce.
AGENTICORG_HTTPSIG_TAP_KEY_STORE_URLS Empty Where Visa TAP keys are looked up. Empty means no TAP key is found.
AGENTICORG_HTTPSIG_SIGNATURE_AGENT_ORIGINS Empty Which Web Bot Auth signature agents are trusted.
AGENTICORG_HTTPSIG_REGISTRY_LOOKUP_ENABLED Off Records a verified agent's DID and scheme ids from the Grantex registry.
AGENTICORG_HTTPSIG_SIGN_OUTBOUND Off Makes AgenticOrg's own buyer agent sign its requests.
AGENTICORG_A2A_SCHEME_AGENT_IDS Empty AgenticOrg's own scheme agent ids, shown in its A2A agent card.

MCP server and merchant settings

Setting Default What it does
MCP server AGENTICORG_UCP_PROFILE_URL and AGENTICORG_UCP_AGENT_PROFILE Unset Point an MCP install at your UCP profile. Unset, no checkout tools appear.
Merchant provider_policy.ucp.executor None Names the payment executor for your shop. None means no charge.
Merchant provider_policy.ucp.grantex_mandates None Names your Grantex commerce tenant and merchant for mandates.
Merchant provider_policy.acp.checkout_enabled False Your opt-in to ACP checkout.
Merchant provider_policy.arbiter.escalate_to_human False Copies refusals into your review queue. It never changes or delays a decision.

The order to turn things on

First run the release in staging with route enforcement and signatures in log, and UCP checkout and payments off. Then change one switch at a time, each followed by its smoke test.

  1. Staging runOwner: Platform operator

    Route enforcement log, signatures log, UCP checkout off, payments off. Check the ledger has no missing rows.

    Blocked / exception

    Fix every missing ledger row before production.

  2. Route enforcementOwner: Platform operator

    Keep enforce in production, the default.

    Blocked / exception

    Use log only for a short, recorded window.

  3. Request signaturesOwner: Platform operator

    Start in log. Move to enforce only when the expected callers show as verified and the owner records the decision.

    Blocked / exception

    Set log again; requests are answered again.

  4. UCP profile and checkoutOwner: Platform operator

    Turn on for a published merchant and run the UCP smoke test.

    Blocked / exception

    Set false; routes answer 404 and stored sessions are kept.

  5. Grantex mandatesOwner: Platform operator

    Turn on before payments, merchant by merchant.

    Blocked / exception

    Set false; production refuses checkout decisions again.

  6. PaymentsOwner: Platform operator

    Only after the sandbox run passes, one merchant at a time.

    Blocked / exception

    Unset and restart; checkout answers executor_unavailable.

The ACP feed and checkout, mandate-capability evidence, witnessing, retention and audit-chain sealing follow the same pattern, one at a time.

Turning something back off

Set the switch back and restart the service. For worker tasks (witness, retention, sealing), change the worker and scheduler too.

  • Data already written is kept: decisions, ledger rows, sessions, orders and payment records.
  • To stop one merchant only, use its merchant setting instead, for example remove its executor.

The full table, with the exact turn-on condition and rollback for each switch, is in the launch and rollback runbook.

Implementation references

This guide is checked against repository sources. Enabled features and deployed versions may differ by environment.