Skip to content

How to gate autonomous chains ​

Goal: make sure a chain of agent actions — one agent triggering another, which goes on to take a gated action itself — cannot run until it's explicitly authorized.

This does not affect a single agent acting alone. A single browse, a single canvas write by an agent that already holds a role, or a single mesh message is never gated by this layer — see Orchestration Governance for exactly what counts as a chain.

1. Grant the cloud entitlement ​

Confirm nexus.orchestration is granted on the account:

bash
curl -s https://<your-nexus-host>/api/v1/nexus/entitlements \
  -H "Authorization: Bearer $TOKEN" | grep '"nexus.orchestration"'

This defaults to off. If it was just granted, allow up to 300 seconds for it to appear — see Entitlements.

2. Enable the local setting ​

The cloud entitlement is only one of two required gates. A local setting must also be turned on — it also defaults to off. Both must be open, or no chain forms at all.

3. Set chain limits ​

Configure a maximum chain depth and a maximum number of distinct agents a single chain may reach. These bound the worst case even if every other gate is open.

4. Populate the orchestrator allowlist ​

The allowlist starts empty, meaning nothing can orchestrate a chain until it is explicitly added. Add only the agents that should be allowed to originate a chain.

5. Decide on per-hop approval ​

Per-hop approval is on by default, and it works end to end: with it on, every hop after a chain's first is held until you answer an approval card in NEXUS. The held call is answered immediately with "not executed" and the request's id, and the agent retries the identical call once you approve — so nothing waits on an open connection. Leave it on unless you have a specific reason to let a chain run unattended; turning it off removes the pause point but leaves depth, breadth, the allowlist, and stop-all in force.

6. Know how to stop everything ​

A stop-all control halts chains already in flight. Use it if a running chain needs to be stopped immediately rather than waiting for it to finish or fail on its own.

7. Check what a chain actually did ​

Settings ▸ Agents ▸ Orchestration ▸ Recent chains lists each multi-agent run and every hop in it — the agent, the action, what it acted on, and the verdict, refusals included. Use it to confirm your gates behaved the way you configured them, and to see which hop a stopped run stopped on. The list is bounded and covers the current run of the app, so read it while investigating rather than treating it as a durable audit log.

8. Verify a denial tells you which gate closed it ​

Trigger a chain in a deliberately unauthorized state (entitlement off, or setting off, or depth set to 0) and confirm the denial reason matches: no entitlement, setting disabled, depth exceeded, breadth exceeded, not on the allowlist, or globally stopped. These six reasons are distinguishable from each other — if you can't tell which one you got, you're not reading the right field.

9. Confirm changes take effect without a restart ​

Gate settings are re-read at enforcement time, not cached. Turn the local setting off while a chain is running and confirm the next hop is denied — you should not need to restart anything for the change to take hold.

Built with purpose.