message tool’s react
action. Behavior varies by channel.
How it works
emojiis required when adding a reaction.- Set
emojito an empty string ("") to remove the bot’s reaction(s) on channels that support it. - Set
remove: trueto remove one specific emoji (requires non-emptyemoji). - On channels with status reactions,
trackToolCalls: trueon a reaction lets the runtime reuse that reacted message for subsequent tool-progress reactions during the same turn.
Channel behavior
Discord and Slack
Discord and Slack
- Empty
emojiremoves all of the bot’s reactions on the message. remove: trueremoves just the specified emoji.
Google Chat
Google Chat
- Empty
emoji(orremove: true) removes the bot’s own reactions on the message, filtered toemojiwhen set. remove: trueremoves just the specified emoji.
Nextcloud Talk
Nextcloud Talk
- Adding reactions only:
emojiis required and must be non-empty. - Reaction removal is not wired to a delete call yet;
remove: trueis rejected with an explicit error instead of silently no-oping. - Requires the Talk bot registered with the
reactionfeature (see Nextcloud Talk channel docs).
Telegram
Telegram
- Empty
emojiremoves the bot’s reactions. remove: truealso removes reactions but still requires a non-emptyemojifor tool validation.
WhatsApp
- Empty
emojiremoves the bot reaction. remove: truemaps to empty emoji internally (still requiresemojiin the tool call).- WhatsApp has one bot reaction slot per message; sending a new reaction replaces it rather than stacking multiple emoji.
Zalo Personal (zalouser)
Zalo Personal (zalouser)
- Requires non-empty
emojifor both add and remove. remove: trueremoves that specific emoji reaction.
Feishu/Lark
Feishu/Lark
- Uses the same
reactaction as other channels (add/remove/list via message reaction IDs), not a separate tool. - Adding requires non-empty
emoji(mapped to a Feishuemoji_type, e.g.SMILE,THUMBSUP,HEART). remove: truerequires non-emptyemojiand removes the bot’s own reaction matching that emoji type.- Empty
emojiwithclearAll: trueremoves all of the bot’s reactions on the message.
Signal
Signal
- 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 inchannels.signal.reactionAllowlist.
iMessage
iMessage
- Outbound reactions are iMessage tapbacks (
love,like,dislike,laugh,emphasize, andquestion);emojimust map to one of these kinds to add a reaction. remove: truewithout a recognized tapback kind removes all tapback kinds; with a recognized kind it removes just that one.
Reaction level
Per-channelreactionLevel throttles how often the agent sends its own
reactions. Values: off, ack, minimal, or extensive.
- Telegram reaction notifications -
channels.telegram.reactionLevel(defaultminimal) - WhatsApp reaction level -
channels.whatsapp.reactionLevel(defaultminimal) - Signal reactions -
channels.signal.reactionLevel(defaultminimal)
Related
- Agent Send - the
messagetool that includesreact - Channels - channel-specific configuration