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 the same turn’s status lifecycle. Discord keeps the chosen reaction stable during work and signals actual failures, rather than cycling through tool-specific emoji.
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.
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
- Use
emoji-listto find allowed standard reactions and numeric custom emoji identifiers. - 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