When it fires
Any Flow that includes anapproval node pauses at the Review stage. This includes:
- Flows generated by Plan from description — the planner inserts approval nodes before side-effect actions by default.
- Ad-hoc runs where the AI reasoning calls
request_approval. - Any Flow you’ve authored manually with an approval node.
What the gate shows
- Findings — labeled rows summarising what Xura learned. Flagged rows (things Xura thinks you should notice) get a warning icon and amber tint.
- Proposed action — one sentence: “Send reminder emails to the 12 owners of deals stuck >14 days.”
- Approve & continue — proceeds to the Act stage.
- Cancel — halts the run. No actions execute. The cancelled run is saved to Run History.
Under the hood
The gate is a real pause on the server. When Claude callsrequest_approval, the server:
- Emits an SSE
gateevent with the findings + proposed action. - Registers a promise in a
pendingApprovalsmap keyed byrunId. - Waits for
POST /api/workflow/approve { runId, approved }— up to 5 minutes. - Times out → auto-rejects if no response.
Timeout behavior
If you close the browser or walk away, the gate auto-rejects after 5 minutes. The run appears in Run History with statuscancelled and reason “Approval timed out”.
