[BUG] Remote Control (mobile): every assistant reply is rendered twice — the brief-mode reminder makes the model restate it via SendUserMessage

Status Open
Reported on v2.1.266
Maintainer reply None cached
Activity 0 comments · opened Sep 14, 2026

Environment

  • Claude desktop app 1.52386.6 on macOS 26.6.2 (Darwin 25.6, Apple Silicon), Claude Code CLI 2.1.266
  • Claude mobile app (iOS), local agent mode session driven from the phone

What happens

Every assistant reply appears twice in a row, the second copy a slight paraphrase of the first. This is not a streaming artifact: both copies are persisted in the session transcript, survive reload, and are still there when the same session is reopened on the desktop. It happens on every substantive turn, in every session, not occasionally.

Why

The model ends its turn with ordinary assistant text. A reminder is then injected telling it that in brief mode plain assistant text is hidden from the user and that only SendUserMessage reaches them, and to call it now with its substantive reply. The model complies and restates the same content through SendUserMessage. The client then renders both, so the reminder's premise does not hold — the plain text is not in fact hidden.

Every duplicated pair in the transcript follows exactly this sequence:

[assistant/text]  <full answer>
[user/text]       You ended the turn without calling SendUserMessage. In brief mode, plain
                  assistant text is hidden from the user — only SendUserMessage reaches them.
                  Call it now with your substantive reply for this turn. …
[assistant/tool]  SendUserMessage {"message": "<the same answer, reworded>"}
[user/result]     "Message delivered to user."
[assistant/text]  No response requested.

Steps to reproduce

  1. Drive a session from the mobile app, so the model runs in brief mode.
  2. Send any message that warrants a substantive answer.
  3. Observe the answer, a Sent/Stopped separator, and then a near-identical restatement of the same answer.

Expected

One reply per turn.

Suggested fix

Either suppress the plain assistant text in the client as the reminder asserts, or stop injecting the reminder and render the plain text alone. The current combination guarantees a doubled answer on every single turn, and bills the tokens for the restatement.

Related

#88897 also reports duplicate rendering under Remote Control, but for user slash-command pills plus a stuck spinner, and verifies it as client-side render duplication with single delivery. This one is the opposite: the model genuinely produces the answer a second time, because it is told the first one was invisible.

🤖 Generated with Claude Code

View original on GitHub ↗