openclaw/docs/tools/reactions.md
Peter Steinberger f7d7148cf0
docs: rewrite published docs grounded in current source (#100142)
Source-grounded rewrite of 529 published docs pages with per-unit information-loss verification: 1,713 factual corrections cited to src/**, generated surfaces regenerated, frontmatter titles preserved for i18n, release notes pages untouched. All docs gates green.

Closes #100141
2026-07-05 00:32:47 -04:00

4.1 KiB

summary read_when title
Reaction tool semantics across all supported channels
Working on reactions in any channel
Understanding how emoji reactions differ across platforms
Reactions

The agent adds and removes emoji reactions with the message tool's react action. Behavior varies by channel.

How it works

{
  "action": "react",
  "messageId": "msg-123",
  "emoji": "thumbsup"
}
  • emoji is required when adding a reaction.
  • Set emoji to an empty string ("") to remove the bot's reaction(s) on channels that support it.
  • Set remove: true to remove one specific emoji (requires non-empty emoji).
  • On channels with status reactions, trackToolCalls: true on a reaction lets the runtime reuse that reacted message for subsequent tool-progress reactions during the same turn.

Channel behavior

- Empty `emoji` removes all of the bot's reactions on the message. - `remove: true` removes just the specified emoji. - Empty `emoji` (or `remove: true`) removes the bot's own reactions on the message, filtered to `emoji` when set. - `remove: true` removes just the specified emoji. - Adding reactions only: `emoji` is required and must be non-empty. - Reaction removal is not wired to a delete call yet; `remove: true` is rejected with an explicit error instead of silently no-oping. - Requires the Talk bot registered with the `reaction` feature (see [Nextcloud Talk channel docs](/channels/nextcloud-talk)). - Empty `emoji` removes the bot's reactions. - `remove: true` also removes reactions but still requires a non-empty `emoji` for tool validation. - Empty `emoji` removes the bot reaction. - `remove: true` maps to empty emoji internally (still requires `emoji` in the tool call). - WhatsApp has one bot reaction slot per message; sending a new reaction replaces it rather than stacking multiple emoji. - Requires non-empty `emoji` for both add and remove. - `remove: true` removes that specific emoji reaction. - Uses the same `react` action as other channels (add/remove/list via message reaction IDs), not a separate tool. - Adding requires non-empty `emoji` (mapped to a Feishu `emoji_type`, e.g. `SMILE`, `THUMBSUP`, `HEART`). - `remove: true` requires non-empty `emoji` and removes the bot's own reaction matching that emoji type. - Empty `emoji` with `clearAll: true` removes all of the bot's reactions on the message. - Inbound reaction notifications are controlled by `channels.signal.reactionNotifications`: `"off"` disables them, `"own"` (default) emits events when users react to bot messages, `"all"` emits events for all reactions, and `"allowlist"` emits events only for senders in `channels.signal.reactionAllowlist`. - Outbound reactions are iMessage tapbacks (`love`, `like`, `dislike`, `laugh`, `emphasize`, and `question`); `emoji` must map to one of these kinds to add a reaction. - `remove: true` without a recognized tapback kind removes all tapback kinds; with a recognized kind it removes just that one.

Reaction level

Per-channel reactionLevel throttles how often the agent sends its own reactions. Values: off, ack, minimal, or extensive.

  • Agent Send - the message tool that includes react
  • Channels - channel-specific configuration