> ## Documentation Index
> Fetch the complete documentation index at: https://xura.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# The approval gate

> Human-in-the-loop before Xura takes any side-effect action.

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

## Skipping approvals (not recommended)

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.
