fix(imessage): honor disabled reply actions#93137
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 14, 2026, 11:22 PM ET / 03:22 UTC. Summary PR surface: Source +2, Tests +53. Total +55 across 2 files. Reproducibility: yes. for source-level reproduction: current main forwards final-delivery Review metrics: none identified. Stored data model Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this narrow send-boundary fix after maintainer handling, then let it close #92142 when merged. Do we have a high-confidence way to reproduce the issue? Yes for source-level reproduction: current main forwards final-delivery Is this the best way to solve the issue? Yes. Gating at AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 50c82b302006. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +2, Tests +53. Total +55 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
5c1db7e to
eddf034
Compare
|
Maintainer verification: land-ready.
The existing Known proof gap: no live SIP-enabled macOS round-trip was run in this closeout; the sender-boundary regression covers the exact outgoing RPC/attachment parameters. |
Co-authored-by: Omar Shahine <[email protected]>
Co-authored-by: Omar Shahine <[email protected]>
Co-authored-by: Omar Shahine <[email protected]>
Co-authored-by: Omar Shahine <[email protected]>
Summary
Fixes #92142 by making the iMessage sender honor
channels.imessage.actions.reply === falsebefore preserving outbound reply metadata.When reply actions are disabled,
sendMessageIMessagenow dropsreplyToIdbefore it can become theimsgRPCreply_toparameter orsend-attachment --reply-to. That lets final iMessage responses degrade to normal top-level sends on SIP-enabled macOS setups instead of entering the SIP-gated threaded reply path.Root cause
Final delivery passes
payload.replyToIdinto the iMessage sender for text and media replies. The sender previously sanitized and reused that value unconditionally, soactions.reply: falsedisabled advertised/private reply actions but not the lower-level final delivery metadata.Changes
createActionGate(account.config.actions)("reply")helper.Verification
node scripts/run-vitest.mjs extensions/imessage/src/send.test.tspassed: 43 tests.pnpm --silent exec oxfmt --check extensions/imessage/src/send.ts extensions/imessage/src/send.test.tspassed.git diff --check -- extensions/imessage/src/send.ts extensions/imessage/src/send.test.tspassed.Duplicate PRs
This maintainer PR supersedes #92170 and #92920. Both contributor PRs target the same issue and same sender line; this PR keeps the maintainer-owned fix while borrowing the stronger sender-boundary test shape.