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.
"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. See Your own domain for buyer agents. |
AGENTICORG_CUSTOM_DOMAIN_FIREBASE_ENABLED |
Off | Connects new custom domains through a Firebase Hosting site: merchants publish two DNS records and AgenticOrg does the rest. |
AGENTICORG_CUSTOM_DOMAIN_FIREBASE_SITE |
Empty | The Firebase Hosting site id; merchants point their CNAME at <site>.web.app. |
AGENTICORG_CUSTOM_DOMAIN_MAPPING_ACCOUNT |
Empty | The Google account that connects domains. Merchants add it as an owner in Search Console. |
AGENTICORG_CUSTOM_DOMAIN_OPERATOR_TENANT_ID |
Empty | Your own organization's id. Only its administrators see the operator queue. Empty, nobody does. |
AGENTICORG_CUSTOM_DOMAIN_OPERATOR_EMAIL |
Empty | Where each new operator queue item is emailed, with its command. |
AGENTICORG_CUSTOM_DOMAIN_CLOUD_RUN_PROJECT |
Empty | The project the queue's commands name. Region (asia-southeast1), service (agenticorg-api) and CNAME target (ghs.googlehosted.com) have their own settings with these defaults. |
AGENTICORG_CUSTOM_DOMAIN_CLOUD_RUN_AUTOMAP_ENABLED |
Off | Lets AgenticOrg connect and disconnect domains itself. Keep it off: Google names a very broad role for it. |
AGENTICORG_UCP_CHECKOUT_ENABLED |
Off | Serves UCP checkout, cart and order routes. Off, they answer 404. The network checkout gateway needs it too, and the once-a-minute Plural payment check runs only while UCP or ACP checkout is on. |
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. |
Sell everywhere network (off by default)
| Switch | Default | What it does |
|---|---|---|
AGENTICORG_NETWORK_ENABLED |
Off | Serves the network directory, the network checkout gateway and the Turn on Sell everywhere step. Off, they answer 404 and the page says Sell everywhere is not enabled; the setup steps before it still work. |
AGENTICORG_NETWORK_SERVICE_TOKEN |
Empty | The credential the hosted MCP server presents to the network checkout gateway (at least 32 characters, from the secret manager). Empty, the gateway refuses every call. |
AGENTICORG_NETWORK_AGENT_PROFILE |
https://agenticorg.ai/ucp/platforms/agenticorg-network/profile.json |
The platform profile network checkouts are opened for. |
AGENTICORG_NETWORK_TERMS_VERSION |
2026-10-25 |
The network terms version a merchant accepts when turning Sell everywhere on. |
AGENTICORG_NETWORK_REGISTRATIONS |
Empty | Where the network stands with the ChatGPT app directory, Google, Microsoft and Perplexity, as JSON (not_started, submitted or live, optionally per shop). Empty, every program shows as not registered yet. |
AGENTICORG_NETWORK_TELEGRAM_ENABLED |
Off | Serves the webhook of the public AgenticOrg shopping bot on Telegram. Off, it answers 404. |
AGENTICORG_NETWORK_TELEGRAM_BOT_USERNAME |
Empty | The bot's username, for each shop's t.me/<bot>?start=<shop> link. Empty, no Telegram link is shown. |
AGENTICORG_NETWORK_TELEGRAM_BOT_TOKEN, AGENTICORG_NETWORK_TELEGRAM_WEBHOOK_SECRET |
Empty | The bot's token and webhook secret, from the secret manager. |
AGENTICORG_NETWORK_TELEGRAM_CHAT_LIMIT_PER_HOUR, AGENTICORG_NETWORK_TELEGRAM_GLOBAL_LIMIT_PER_MINUTE |
20 and 60 |
How many messages one chat may send in an hour, and the whole bot in a minute. |
AGENTICORG_PLATFORM_SUBDOMAIN_APEX |
agenticorg.ai |
Shops without an address of their own get <shop>.<apex>. Needs custom domains through Firebase and one wildcard CNAME for the apex. |
AGENTICORG_PLATFORM_SUBDOMAIN_CAP |
20 |
How many platform addresses may be given out, Firebase's limit per domain. Past it, a shop is asked to connect its own domain. |
AGENTICORG_SHOPIFY_ENV_OPERATOR_TENANT_ID |
Empty | The only tenant that may read the deployment's own SHOPIFY_* store settings. Every other shop uses the token it stored itself. |
Payment links
The payment hand-off has no switch of its own: each merchant chooses where buyers pay on the Sell Everywhere page. It needs UCP or ACP checkout on and, for Plural, a public address:
| Setting | Default | What it does |
|---|---|---|
AGENTICORG_PUBLIC_API_BASE_URL |
Empty | The public https:// address of the AgenticOrg API. Plural payment links, the buyer's return page and the merchant's webhook URL are built on it, or on AGENTICORG_APP_URL when it is empty. Without either, Plural links are not offered. |
Agent-executed payment and mandates (off by default)
These switches belong to the path where AgenticOrg charges through a payment provider against buyer mandates. It stays off until a payment-provider sandbox run has passed. A merchant that chose where buyers pay keeps getting payment links whatever these say.
| 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. |
MCP server MCP_NETWORK_DIRECTORY_URL and AGENTICORG_NETWORK_SERVICE_TOKEN |
Unset | Network mode: one hosted server serves every listed shop, with list, search, checkout and payment-link tools and no tool that pays. |
MCP server MCP_OPENAI_APPS_CHALLENGE |
Unset | The ChatGPT app directory's domain-verification token, served at /.well-known/openai-apps-challenge. Unset, that path answers 404. |
Merchant provider_policy.payments |
None | Where buyers pay: shopify_cart or plural_hosted, set in the Payments step of Sell Everywhere. None means no payment link. |
Merchant provider_policy.arbiter |
None | Your order limits: per order, per day, items per order and currency, set in the Order limits step. |
Merchant provider_policy.ucp.fulfillment.flat_rates |
None | Your flat shipping fee, for a shop without Shopify, set in the policies step. |
Merchant provider_policy.ucp.executor |
None | Names the payment executor for agent-executed payment. None means no charge. It is not used while provider_policy.payments is set. |
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.
- Staging runOwner: Platform operator
Route enforcement log, signatures log, UCP checkout off, payments off. Check the ledger has no missing rows.
Blocked / exceptionFix every missing ledger row before production.
- Route enforcementOwner: Platform operator
Keep enforce in production, the default.
Blocked / exceptionUse log only for a short, recorded window.
- 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 / exceptionSet log again; requests are answered again.
- UCP profile and checkoutOwner: Platform operator
Turn on for a published merchant and run the UCP smoke test. Merchants that chose where buyers pay now get payment links.
Blocked / exceptionSet false; routes answer 404 and stored sessions are kept.
- Sell everywhere networkOwner: Platform operator
Set the service token on the API and the hosted MCP server, turn on the network, then the Telegram bot.
Blocked / exceptionSet false; the directory and gateway answer 404 and listings are kept.
- Grantex mandatesOwner: Platform operator
Turn on before agent-executed payments, merchant by merchant.
Blocked / exceptionSet false; production refuses agent-executed decisions again.
- Agent-executed paymentsOwner: Platform operator
Only after the sandbox run passes, one merchant at a time.
Blocked / exceptionUnset 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 set its payment method to Off or remove its executor.
The full table, with the exact turn-on condition and rollback for each switch, is in the launch and rollback runbook.