Both ride on the same tool-call machinery: the parent tool call waits while the interaction is
open. An interaction ends in one of two states — resolved (someone answered) or canceled (the work it guarded was canceled, superseded, or archived).
Find open interactions
- API
- Dashboard
The examples assume the client, Filter by
$ORG/orgID, and $PROJ/projectID setup from the quickstart, plus the $AGENT/agentID value above. The CLI has no interactions commands — respond from the dashboard or the API.state (open, resolved, canceled) or omit it for everything; results are cursor-paginated, oldest first. In practice you rarely poll this — open interactions announce themselves on the event stream as tool-call activity, and this endpoint is how you fetch the form to render.Full schema and playground: List agent interactions.
Render the form
Every interaction’srequest is the same small form structure, designed to render without special-casing:
title— one line saying what’s being asked.context— optional label/value pairs to display verbatim (the command about to run, the machine it targets). Show all of them; they’re the approver’s evidence.questions— one or more, in order. Each has apromptand at least one option.multiple: truemeans the answer may select several options; an option withallows_text: trueinvites free text alongside the selection (in permission forms, that’s the “Deny” option — the text becomes the reason the model sees).
Allow at index 0 and Deny at index 1. Question forms are composed by the agent, so treat them generically.
Resolve it
- API
- Dashboard
Answer with one entry per question, in order. To deny with a reason, select the Deny option and attach text:
option_indices are zero-based positions into that question’s options. The response is the interaction in its final state:- Resolution is first-writer-wins. Re-sending the same answers replays idempotently —
200with the already-resolved interaction. Sending different answers, or resolving a canceled interaction, returns409with codeidempotency_key_conflict. Whoever answers first, wins; build your approval UI to handle the race gracefully. - Attribution works like inputs. Services relaying human decisions pass
actoralongsideanswerssoresolved_by_input_idtraces to the real person — see actors.
Full schema and playground: Resolve agent interaction.
When interactions cancel
You never delete an interaction; it cancels when the work it guarded goes away:- Sending input with
cancel_open_interactions: true— your new message supersedes the pending prompts; their tool calls complete ascanceled. - Stopping the agent or archiving it — everything in flight, interactions included, is canceled.
request and stay listable, so audit trails show what was asked even when nobody answered.
Next
Artifacts
Download the files agents produce and reference
Agent configuration
Decide which tools require approval in the first place