-
-
Notifications
You must be signed in to change notification settings - Fork 79.1k
iMessage bridge recovery can dispatch stale inbound backlog as fresh requests #89237
Copy link
Copy link
Closed
Closed
Copy link
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Metadata
Metadata
Assignees
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Summary
After recovering Messages.app /
imsg/ IMCore bridge and re-enabling the iMessage channel, OpenClaw processed a burst of old iMessage inbound messages as fresh user requests.This looks related to, but not fully covered by, the closed/locked stale replay issue #62761. I could not comment there because the issue is locked.
Environment
2026.5.28 (e932160)imsg:0.11.0imsg/Messages.app/IMCore bridge viacliPathwrapperchannels.imessage.catchup.enabled: not configured/enabled in the active configimsg statusshowed both Basic and Advanced IMCore bridge features available after recoveryWhat happened
After recovering Messages.app /
imsg/ IMCore bridge and re-enabling the iMessage channel, a burst of delayed iMessage inbound notifications arrived. They were old/backlog messages, but OpenClaw treated them as fresh inbound user requests and processed them one by one, causing an "iMessage backlog bomb" user experience.This was not an outbound delivery queue issue: delivery queues were empty, and
imsg statuswas healthy. The problematic path appears to be old inbound rows/notifications reaching the live iMessage monitor path after bridge recovery.Recovery context
The original incident was a bad Messages.app +
imsgbridge lifecycle:imsg launch --verboserestored Advanced features:Expected behavior
When the iMessage monitor starts/reconnects after bridge recovery, stale inbound messages should not be dispatched to agents as fresh requests by default. A safe behavior would be one of:
watch.subscribe, orSuggested guard shape
The right layer seems to be before agent dispatch, not assistant-level
NO_REPLY:parseIMessageNotification(raw)and beforeinboundDebouncer.enqueue(...)in the iMessagehandleMessagepath;A candidate policy:
Why this still matters after the catchup/cursor work
This occurred on
2026.5.28, after #62761 was marked fixed by the current catchup/cursor work. In this setup,catchup.enabledwas not set, and the observed problem looked like stale notifications flowing through the live monitor path after bridge recovery rather than explicit catchup replay.I have not applied any local code patch. I would prefer an upstream fix/maintainer decision because this changes default iMessage startup/reconnect semantics.