Skip to main content
Xura never sends an email, creates a ticket, or updates a record without your approval — even in a fully autonomous Flow. That’s the job of the approval gate.

When it fires

Any Flow that includes an approval 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 calls request_approval, the server:
  1. Emits an SSE gate event with the findings + proposed action.
  2. Registers a promise in a pendingApprovals map keyed by runId.
  3. Waits for POST /api/workflow/approve { runId, approved } — up to 5 minutes.
  4. Times out → auto-rejects if no response.
Clicking Approve on the client posts the resolver, unblocking the server-side await. Only then do subsequent action nodes fire.

Timeout behavior

If you close the browser or walk away, the gate auto-rejects after 5 minutes. The run appears in Run History with status cancelled and reason “Approval timed out”. There’s no way to bypass an approval gate for a specific run. If you want a Flow to run unattended, remove the approval node from the graph — but only after you’re confident the action is safe.