Skip to main content
A patch wired with Always ask does not execute when the agent calls it. The call is recorded, the run pauses in awaiting_input, and it waits for a human decision. See Confirmations for the flow.

Discovering one

GET /v1/loom/threads returns pending_confirmation on the affected thread:
uuid
required
The paused run.
uuid
required
Pass this to the confirm endpoint.
string
required
The patch the agent wants to call.
object
A human-readable description of the write, built for your approval prompt. Render this rather than raw args.
string
Effective risk level. A reasonable input to how prominent the prompt should be.
The same payload arrives as the write.confirmation_requested event if you use realtime.

Deciding

POST /v1/loom/runs/{run_id}/confirm
uuid
required
The held call.
enum
required
approve or reject.
object
Optional. Recorded on the tool call and passed to the model — a short reason on a rejection produces a better next turn.
Returns 202. On approve, Patchwork performs the write server-side and resumes the run; on reject, the model is told it was declined and the run resumes anyway.
A 202 means the decision was accepted, not that the write succeeded. If an approved write fails, the run continues so the agent can explain, and the tool call is recorded as failed. Check the run or the trace.

Errors