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

A per-hop approval setting exists among the controls, but the approval prompt itself is not yet built — treat this control as not yet usable end-to-end rather than enabling it and expecting a prompt to appear.

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. 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.

8. 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.