Skip to main content
A session can pause mid-turn and wait for a person in two ways. SessionConversation renders both inline, and the same turn continues once someone answers. See Approvals and human input for the full model.

Require approval for tools

Set requireApproval on a per-session MCP server: true for every tool, or a list of tool names:
When the agent proposes a gated call, the session enters requires_action and the conversation shows the call with Approve and Reject. A rejection goes back to the agent as the tool’s result so it can adapt. Approvals are human-only: an agent can never approve a tool call.

Let the agent ask questions

Agents have a built-in tool for questions that need an answer before the turn can continue: free text, single select, or multi select, up to 20 per request. Answers are delivered to the agent as the tool’s output. To turn it off, set the workspace setting agentHumanInputEnabled: false.

Answering without the React UI

Custom React UIs can use projectPendingApprovals and useHumanInputRequests from @opengeni/react/session. If a user sends an ordinary message while a session waits, the pending approval or question is cancelled and the message is delivered as a Steer. “Actually, do this instead” is one action. To notify people who are not watching, subscribe a workspace webhook to session.requiresAction and session.humanInput.requested.
Using a coding agent? The opengeni-client skill covers this.