An interaction is
open, then resolved (someone answered) or canceled (the turn was interrupted, superseded or archived). Desktop, mobile and integrations all see the same open interactions.
Approvals through the Managed Agents API
When a call needs approval, the stream emits theagent.tool_use and then session.status_idle with stop_reason.type = "requires_action" and the ids to answer. Reply with user.tool_confirmation:
- The tool runs only after
allow. A deny is recorded asuser.tool_confirmationwith yourdeny_message, and the model is told why. - With
always_ask, BMA asks before it creates the session’s machine, so a denied call never provisions one. - The stream announces only prompts that belong to this session. If a history page ends while a prompt is open, BMA appends the same
requires_actionidle event, so a restarted worker sees it must answer. user.interruptcancels open interactions of the interrupted turn.
Native API
GET /orgs/{org}/projects/{project}/agents/{agent}/interactions?state=open lists open interactions with a form description; resolve one with POST …/interactions/{interactionID}/resolve (see the API reference for the answer schema). Use the native API when you build your own approval UI for questions as well as permissions; the /v1 API only carries tool confirmations.