Skip to the page
← All docs

Approvals

Approvals is where a write waits for a second person. In Policy, turn on Approval for a role on a tier (prod, usually): from the next publish, a write that role makes there does not run when asked. It waits here, up to 30 minutes, for someone else whose role writes on that tier.

  • Waiting lists each one: the tool, where it acts and that place's tier, the reason the asker gave, who asked and when, the arguments as the audit keeps them (secrets masked), whether the agent that would run it is online, and the minutes left.
  • Approve runs it at once, through the agent that holds the connection, after a last check. The service signs your approval of exactly those arguments, and the agent checks the signature, that the arguments are the ones approved, that the time has not run out, and that you are not the one who asked and your role writes on that tier, before it acts. What it answered is kept with the action, and the call is a row in Audit in the asker's name, its reason naming you.
  • Decline drops it. Whoever asked may Withdraw it. Nobody can approve their own.
  • A kube_apply dry run changes nothing, so it never waits; the apply that names its digest does.
  • Decided lists what became of each: ran, failed (with why), declined, or expired.

Your AI client is told the write waits, with the action's id, and the tool approval_status tells it how the action stands, and what it answered once it ran. It is offered only to a caller who may write.

Everyone who could approve a waiting action is sent a mail with the link here, where this tier sends mail. The agent must be online to run an approved action: start slate serve first.