Skip to content

Approvals

An approval node pauses the run until a person decides. It is how you gate a risky step and how you satisfy the taint rule for a write that follows untrusted data.

Terminal window
npx azhi approve <run> <node> # approve
npx azhi approve <run> <node> --reject # reject
npx azhi approve <run> <node> --data '{"drop":"2,4"}' # with decision data

The same approvals are listed in Mission Control › Approvals, with the message, payload, who may decide and the expiry.

SettingExample
Role who may decideauthor
Expiry, and what expiry meansThe issue splitter expires in 72 hours as a rejection
A decision schemaStructured answers, for example slice numbers to leave out, or open design questions as selections
A message and payloadThe diff, findings and an acceptance-criteria checklist
WorkflowWhat a person decides
AI-SDLC v2The design (answering open questions) and the release (diff, findings, criteria checklist) before any push
Issue splitterThe split plan, optionally leaving slices out. Nothing is written before this
Issue investigationThe exact text of the issue comment

PR review is deliberately different: it posts one guarded, ledgered, sticky comment without an approval, and its guard only allows the PR under review.

Per-tool permission prompts belong to an interactive session someone is watching. An approval node is part of a durable run: it survives restarts, shows in an inbox, has an owner role and an expiry, and is recorded in the audit log.