Reactions
The agent can add and remove emoji reactions on messages using the message
tool with the react action. Reaction behavior varies by channel and transport.
How it works
Section titled “How it works”{ "action": "react", "messageId": "msg-123", "emoji": "thumbsup"}emojiis required when adding a reaction.- Set
emojito an empty string ("") to remove the bot’s reaction(s). - Set
remove: trueto remove a specific emoji (requires non-emptyemoji). - On channels that support status reactions,
trackToolCalls: trueon a reaction lets the runtime use that reacted message for subsequent tool progress reactions during the same turn.
Channel behavior
Section titled “Channel behavior”Discord and Slack
- Empty
emojiremoves all of the bot’s reactions on the message. remove: trueremoves just the specified emoji.
Google Chat
- Empty
emojiremoves the app’s reactions on the message. remove: trueremoves just the specified emoji.
Nextcloud Talk
- Adding reactions only:
emojiis required and must be non-empty. - Reaction removal is not supported yet; calls with
remove: true(or emptyemoji) are rejected with a clear error rather than silently no-oping. - Requires the Talk bot to be registered with the
reactionfeature (see Nextcloud Talk channel docs).
Telegram
- Empty
emojiremoves the bot’s reactions. remove: truealso removes reactions but still requires a non-emptyemojifor tool validation.
- Empty
emojiremoves the bot reaction. remove: truemaps to empty emoji internally (still requiresemojiin the tool call).- WhatsApp has one bot reaction slot per message; status reaction updates replace that slot rather than stacking multiple emoji.
Zalo Personal (zalouser)
- Requires non-empty
emoji. remove: trueremoves that specific emoji reaction.
Feishu/Lark
- Use the
feishu_reactiontool with actionsadd,remove, andlist. - Add/remove requires
emoji_type; remove also requiresreaction_id.
Signal
- Inbound reaction notifications are controlled by
channels.signal.reactionNotifications:"off"disables them,"own"(default) emits events when users react to bot messages, and"all"emits events for all reactions.
iMessage
- Outbound reactions are iMessage tapbacks (
love,like,dislike,laugh,emphasize, andquestion). - Inbound tapback notifications are controlled by
channels.imessage.reactionNotifications:"off"disables them,"own"(default) emits events when users react to bot-authored messages, and"all"emits events for all tapbacks from authorized senders.
Reaction level
Section titled “Reaction level”Per-channel reactionLevel config controls how broadly the agent uses reactions. Values are typically off, ack, minimal, or extensive.
- Telegram reactionLevel —
channels.telegram.reactionLevel - WhatsApp reactionLevel —
channels.whatsapp.reactionLevel
Set reactionLevel on individual channels to tune how actively the agent reacts to messages on each platform.
Related
Section titled “Related”- Agent Send — the
messagetool that includesreact - Channels — channel-specific configuration