anthropics / anthropics/claude-code

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

Open
#94,397 0 comments 0 reactions 0 assignees View on GitHub
area:agent-view bug has repro platform:ios platform:macos
Dominant language
Python
Stars
145k
Forks
23.1k
PR merge metrics
PR metrics pending

Description

### 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]
[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": ""}
[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](https://claude.com/claude-code)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing the brief-mode reminder and SendUserMessage flow in a Remote Control session, then reproduce the sequence described in the issue from the mobile app. Determine whether plain assistant text is rendered or should be suppressed, and verify that a substantive turn produces one persisted reply without the reminder-driven restatement.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, macos, python
Domain
cli, mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.