Skip to main content
Activation status: Source-ready for exact recorded browser actions, with compatible Worker code deployed. Required production database activation and authenticated approval canaries remain pending. Do not call this mutation until Praxa confirms activation for your tenant.
Praxa exposes a public approval only when it can prove render == record == gate-match. You see the exact immutable browser instruction or steps and its target host. The digest you return binds to that same stored action.

Read the pending action

An exact pending browser action appears on the run resource:
The same presentation arrives as approval.required on the run event stream. Render summary exactly as supplied. Do not replace it with a shorter or client-derived description.

Approve or deny

decision is approve or deny. The key must carry runs:write, and the run must belong to its tenant. Copy action_digest from the exact pendingApproval or approval.required projection. The response is the updated RunResource. approve records the digest-bound approval and wakes that exact suspended action. deny records refusal and does not authorize the action. It can move the run into cancellation and close-out processing; follow the run until you observe its real terminal status.

What Praxa checks

Praxa re-derives the presentation when it reads the run, emits the event, and receives your decision. Public projection and approval require all of these:
  1. The run is waiting for a pending approval with an approval reference and a 64-character action digest.
  2. The executor is a browser action using browse_session_act.
  3. The immutable executor request carries the same action digest.
  4. The recorded instruction or steps, URL, and target host pass the strict browser-action schema and fit the public presentation unchanged.
  5. The submitted digest still matches that exact pending presentation.
If any check fails, Praxa omits pendingApproval, emits no approval.required, and refuses the decision. A stale or mismatched digest returns 409 conflict. A foreign run is not projected. Expiry, replay, changed state, and workflow-wake failures also fail closed. Praxa never turns a missing approval integration or generic summary into approval.
Last modified on August 14, 2026