Patrick AraujoBuild durable, risk-based and auditable approval steps into automation.
Originally published on PkLavc.
Persist a unique proposal ID, actor or agent identity, target resource, requested operation, risk tier, evidence snapshot, policy version, creation time and deadline. The approval decision should refer to that immutable proposal. If inputs change, invalidate the approval and request review again rather than silently applying consent to a different action.
Risk should depend on scope, reversibility, amount, affected users and confidence in the evidence, not simply whether an AI produced the request. A human gate is not a substitute for authorization, input validation or least privilege. The execution service must re-check current permissions and policy after approval.
Show the exact proposed change, affected objects, expected consequence, source evidence, uncertainty, policy reason and a safe preview. Distinguish model-generated explanation from verified system facts. Do not pressure reviewers with preselected approval or hide rejection. If confidence or source data is inadequate, offer defer or request-more-information states.
Authenticate the reviewer independently, authorize them for the specific action and tenant, and bind the approval token to one proposal. Use short expiry and one-time consumption; protect callback links from forwarding and logging. Apply separation of duties where the proposer must not approve their own high-risk action. Record who decided, when, what version they saw and what the executor changed.
Pending work needs a durable workflow record rather than a process waiting in memory. On expiry, choose a safe terminal state such as rejected or needs-human-attention. Make the decision endpoint idempotent; a duplicate callback must not run the action twice. Use a compare-and-swap transition so two reviewers cannot both consume one pending proposal. If execution fails after approval, retain the decision and report the action as failed; do not imply that approval equals completion.
Track time to decision, approval and rejection rates by risk tier, expirations, overrides, execution failures after approval and reviewer workload. High approval speed with no rejections can mean the gate is rubber-stamping. Periodically sample decisions and test that unapproved, expired and cross-tenant proposals cannot execute.
Continue reading: Full technical article on PkLavc
Explore more technology articles: PkLavc Tech Blog