Skip to main content

Overview

When a service’s write permission is set to human approval, CelerFlow pauses the tool call and waits for a human to approve or deny it. This is the Human-in-the-Loop (HITL) flow.

How it works

1

Agent calls a tool

The agent tries to call a tool that matches a service with write_permission: human_approval (e.g., gmail_send).
2

CelerFlow creates a confirmation request

The tool call is paused. A confirmation request is created with the tool name, service, parameter summary, and a 5-minute expiry.
3

Human is notified

The notification appears in one of these channels:
  • Dashboard — the confirmation queue shows pending requests.
  • Telegram / Slack — for OpenClaw agents, the notification is sent through the agent’s existing messaging channel with inline approve/deny buttons.
  • WhatsApp / Telegram — for non-OpenClaw agents, the user sets up an approval channel by scanning a QR code in the dashboard.
4

Human decides

The reviewer sees the tool name, parameters, and context, then clicks Approve or Deny.
5

Result is delivered

  • Approved — the tool call executes and the result is returned to the agent.
  • Denied — the agent receives an error.
  • Timeout (5 minutes) — treated as denied.

Confirmation request fields

FieldDescription
tool_nameThe tool being called (e.g., gmail_send).
service_nameThe service it belongs to (e.g., gmail).
tool_args_summarySanitized parameters (truncated, no secrets).
action_descriptionHuman-readable description of the operation.
statuspending, approved, denied, or expired.
decision_channelWhere it was decided: dashboard, telegram, slack.
expires_atAuto-expires after 5 minutes.

Approval channels for non-OpenClaw agents

OpenClaw agents already have messaging channels (Telegram, Slack, Discord). For agents connected via the MCP Gateway:
  1. Open the agent’s settings in the dashboard.
  2. Select an approval method: Telegram, WhatsApp, or Dashboard only.
  3. For Telegram/WhatsApp, scan the QR code to connect the CelerFlow bot.
  4. Future approval requests are sent via that channel with inline buttons.
Human approval requires the Pro plan or higher. On the Free plan, only allowed and blocked are available for write permissions.