Skip to main content
Human-in-the-loop (HITL) approvals are the platform’s safety gate: risky agent actions (sending messages, spending money, triggering runs) park as a pending approval until a human decides — via Telegram buttons, the in-app approvals inbox, or these tools.

approval_list

List HITL approvals in this workspace. Default: pending. Shows what is waiting for a human decision. Returns: { approvals: [...], count }. Each row: id, question, action_type, status, requested_by_agent_id, requested_by_user_id, requested_at, resolved_at, telegram_chat_id. Permissions: read; workspace-scoped.

approval_resolve

Approve or reject a pending approval from outside. Caution: this is the human gate — only call it when the human user explicitly decided. Approving executes the approved action deterministically (the same machinery as a Telegram tap). Returns: { ok:true, status:"approved"|"rejected" }. On approve the if_approved action is triggered deterministically; on reject an if_rejected follow-up run may fire. If the decision was recorded but the execution trigger failed, a warning field is added. Already-resolved or race-lost → { error }. Requires Company-Admin. Permissions: write; human-decided only.