openclaw - ✅(Solved) Fix iMessage plugin: surface tapback/reaction events to agent [1 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#60446Fetched 2026-04-08 02:51:07
View on GitHub
Comments
0
Participants
1
Timeline
3
Reactions
0
Participants
Timeline (top)
cross-referenced ×2referenced ×1

Fix Action

Fixed

PR fix notes

PR #60677: fix(imessage): filter tapback reactions in imsg rpc inbound processing

Description (problem / solution / changelog)

Summary

Fixes #60274 — iMessage plugin using imsg rpc does not filter tapback reactions, causing them to be delivered to the agent as regular text messages.

Problem

When a user reacts to a message with a tapback (❤️ Loved, 👍 Liked, 😂 Laughed at, ‼️ Emphasized, ❓ Questioned), the iMessage plugin forwards the synthetic tapback message (e.g. Loved "Hey there") to the agent as a regular text message. The agent then responds to it unnecessarily.

The BlueBubbles provider already handles this correctly via resolveTapbackContext() + parseTapbackText(), but the imsg rpc code path has no tapback detection at all.

Solution

Added isIMessageTapback() detection in resolveIMessageInboundDecision() using three signals (any one is sufficient):

  1. is_tapback flag — explicit boolean from imsg v0.5.0+
  2. associated_message_type in the 2000-3999 range — Apple's internal tapback type codes
  3. Text pattern matching — known prefixes (Loved, Liked, Laughed at, Emphasized, Questioned, and their removal counterparts) followed by quoted text

The text-based heuristic requires a quoted portion after the prefix (e.g. Loved "...") to avoid false positives on regular messages like "Loved the movie we watched last night".

Detected tapback messages are dropped with reason "tapback reaction" and logged at verbose level.

Changes

  • types.ts — Added is_tapback and associated_message_type fields to IMessagePayload
  • parse-notification.ts — Added validation for the new optional fields
  • inbound-processing.ts — Added isIMessageTapback() function and filtering logic
  • inbound-processing.test.ts — Added 9 test cases covering all tapback patterns, the is_tapback flag, associated_message_type ranges, and false-positive prevention

Related Issues

  • #60446 — Feature: surface tapback events to agent (this PR lays groundwork)
  • #39031 — Feature: forward tapback reactions to agent
  • #26924 — (closed/stale) Full imsg v0.5.0 integration proposal

Changed files

  • extensions/imessage/src/monitor/inbound-processing.test.ts (modified, +189/-0)
  • extensions/imessage/src/monitor/inbound-processing.ts (modified, +73/-0)
  • extensions/imessage/src/monitor/monitor-provider.ts (modified, +27/-3)
  • extensions/imessage/src/monitor/parse-notification.ts (modified, +3/-1)
  • extensions/imessage/src/monitor/types.ts (modified, +3/-0)
RAW_BUFFERClick to expand / collapse

Feature Request

Channel: iMessage plugin

Description: iMessage tapback reactions (heart, thumbs up, thumbs down, ha ha, !!, ?) are currently dropped by the iMessage plugin and never delivered to the agent. The agent has no awareness of user reactions to its messages.

Desired behavior: Tapback events should be surfaced to the agent as inbound events, either:

  • As a lightweight reaction event type (preferred): { type: 'reaction', reaction: 'heart', targetMessageId: '...' }
  • Or as a text message summarizing the reaction: e.g. [Reacted ❤️ to: "Your last message"]

Use case: Allows the agent to acknowledge positive/negative feedback, track sentiment on responses, and potentially adjust behavior. Simple quality-of-life improvement for conversational iMessage sessions.

Environment:

  • OpenClaw 2026.4.2
  • iMessage plugin (imsg CLI)
  • macOS

Notes: The imsg CLI may already receive tapback events in the message stream - the gap is likely in the plugin's event filtering/forwarding logic rather than at the CLI level.

extent analysis

TL;DR

Modify the iMessage plugin's event filtering and forwarding logic to include tapback reactions as inbound events to the agent.

Guidance

  • Investigate the imsg CLI's message stream to confirm if tapback events are being received, as this will help determine if the issue lies in the plugin's logic.
  • Review the iMessage plugin's event filtering code to identify where tapback reactions are being dropped and modify it to forward these events to the agent.
  • Consider implementing a new event type, such as { type: 'reaction', reaction: 'heart', targetMessageId: '...' }, to surface tapback reactions to the agent.
  • If modifying the event type is not feasible, explore sending a text message summarizing the reaction, e.g., [Reacted ❤️ to: "Your last message"], as an alternative solution.

Example

No code snippet is provided due to the lack of specific implementation details in the issue.

Notes

The solution may require updates to the iMessage plugin's code and potentially the imsg CLI, depending on where the tapback events are being dropped. The OpenClaw version and macOS environment may also impact the implementation.

Recommendation

Apply a workaround by modifying the iMessage plugin's event filtering and forwarding logic to include tapback reactions, as upgrading to a fixed version is not mentioned in the issue. This approach allows for a targeted solution to the specific problem described.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING