Approvals
A tool call that needs approval pauses the turn until a person approves or denies it. The paused turn is stored, so it survives a restart. It never times out.
wardrik approval lswardrik approval approve triage call_1 --note "Label it for the next sprint."wardrik approval deny triage call_1 --reason "Not on a Friday."- Approving runs the call with the model's arguments. The model receives the
--notewith the result. - Denying returns an error with your
--reasonto the model. The turn continues. - To change a call, deny it and say what to do instead.
- For a call in a conversation, pass
--conversation ID.approval lsshows the ID.
Over HTTP
Section titled “Over HTTP”curl -X POST -H "authorization: Bearer $TOKEN" \ -d '{"note": "Only staging."}' \ http://127.0.0.1:4747/v1/agents/agt_1/interrupts/call_1/approve| Route | Does |
|---|---|
POST /v1/agents/{agent}/interrupts/{interrupt}/approve |
approves one call |
POST /v1/agents/{agent}/interrupts/{interrupt}/deny |
denies one call, with an optional reason |
POST /v1/agents/{agent}/decisions |
approves or denies several calls |
GET /v1/interrupts |
lists every pending call |
A conversation's calls are under /v1/agents/{agent}/conversations/{conversation}/....
Who can approve
Section titled “Who can approve”- In the daemon: a subject bound to a role that allows
approve,denyordecideon the agent. - In a chat channel: the person who sent the message that started the turn.
- The
wardrikcommand, which runs as the admin.
While a call is pending
Section titled “While a call is pending”- Allowed calls in the same round have already run.
- Each pending call is approved or denied separately. The model receives the round's results once all are resolved.
- New messages are queued until the turn resumes.
wardrik agent cancelends the turn and drops the queued messages.- A call that needs a connected account is pending the same way, with a sign-in link. See Connect accounts.