Approvals & permission modes
How much autonomy you've given the swarm, what always stops for a human regardless of mode, and every place — desktop or mobile — where you make that call.
Why this page exists
SnapFlow never leaves your infrastructure to chance: two systems work together to decide what the swarm can do on its own and what it must ask you about first. Your permission mode sets the default level of autonomy for the whole agency; individual approvals are the moments — inside a mission, in Triage, or from a shared link — where SnapFlow actually stops and asks. This page explains both.
The four permission modes
Set from the pill button on the left of the top bar (only agency founders can change it — everyone else sees it read-only). It forms a ladder from strictest to loosest:
| Mode | What runs unattended, and what still stops for you |
|---|---|
| Plan only | Agents investigate and propose only. Nothing is created, changed, or deleted — every step that would modify anything is automatically rerouted to a read-only analysis instead. Nothing further needs your approval, because nothing runs. |
| Guarded (default) | Reads and non-destructive writes run without asking. Creating new cloud resources ("provisioning") and any destructive action still require your approval. |
| Autonomous | Reads, writes, and provisioning all run without asking. Destructive actions, renaming, and permission/IAM changes still require your approval. |
| Unattended | Everything runs without stopping — the most hands-off mode. The critical floor below still applies; nothing can turn it off. |
The critical floor — what no mode can turn off
Deleting or tearing down resources, moving or renaming things, permission/IAM changes, and anything targeting a production environment. Even in Unattended mode, SnapFlow stops and asks first. A footer note under the mode dropdown always reminds you of this.
SnapFlow can also automatically tighten your mode for a specific mission — for example, if the target environment is marked production, the effective mode is capped at Guarded even if your agency-wide setting is looser. When this happens, the Pre-Flight Manifest shows a note explaining why (e.g. "Clamped to Guarded: the target environment is production.").
SnapFlow used to have a simpler two-state toggle. It's been replaced by the four-mode ladder above — "Read-Only" maps to Plan only, and "Write-Enabled" maps to Guarded.
Where you'll actually be asked to approve something
An "approval" is a specific decision on a specific proposed action. You'll encounter it in four places:
1. The Pre-Flight Manifest
Every request goes through this confirmation screen before it starts. See Mission Control → The Pre-Flight Manifest for the full breakdown of its chips, verdict banner, and checklist.
2. Inside a running mission
If a step is gated, the mission pauses and shows a Gate Evidence card — the action, target environment, why it was gated, affected resources, and a rollback plan — with Approve and Reject & stop mission buttons, each behind a confirm step. See Mission Control → When a mission needs your approval.
3. The Triage queue
Every pending approval across your whole agency also lands in Triage & Gates → Queue, sorted by urgency, alongside incidents. Opening one shows the same plan viewer and Approve/Reject buttons, plus a "Share as mobile link" option — see below. Full detail: Triage & Gates → Queue.
4. A one-time mobile link — no login required
From Triage, click "Share as mobile link" on any approval to mint a one-time link — SnapFlow shows it as: "One-time link — expires in 1h, works without logging in." Anyone with that link (for example, on your phone) can open it and see:
- The requesting agent's name and the proposed change (as a plan viewer or summary).
- Two buttons: ❌ Deny and ✅ Approve.
- A required confirmation step before anything commits — "Approve this plan?" / "Reject this plan?" — with the same "cannot be undone" warning as everywhere else. Unlike the desktop flow, this mobile confirm step has no notes/reason field.
- A final "Approved" or "Rejected" screen: "This link has now been used and can't be opened again."
This page sits outside the normal signed-in app on purpose — possessing a valid, unexpired, unused link is enough to act on it. That's why it expires after an hour and can only ever be used once.
SnapFlow