Mobile app and IDE chat never refresh when a session is advanced externally (hook decision or claude --resume -p) — even after closing and reopening the chat
Environment
- Claude Code 2.1.237, macOS (Darwin 25.6.0)
- Session driven in the VS Code extension, mirrored on the iPhone Claude app via Remote Control
Summary
When a live session is advanced by anything other than the client UI itself — a PermissionRequest hook returning a decision, or a user message injected with claude --resume -p "<text>" — the mobile app's chat view and the IDE chat do not pick up the new turns. The session's transcript on disk moves forward correctly (commands run, replies land), but the phone keeps rendering its last-known snapshot.
Crucially: leaving the chat and reopening it does not refresh it either (verified on device). The phone only catches up when the user actively sends a message from that surface.
Steps to reproduce
- Open a session in VS Code with Remote Control connected; view the same session's chat on the iPhone app.
- Register a
PermissionRequesthook that answers a prompt (allow) from an external device, or runclaude --resume -p "continue"against the live session from a terminal. - Watch the transcript (
~/.claude/projects/<dir>/<session>.jsonl) — it advances; the command runs. - Look at the phone: the chat still shows the pre-decision state. Close the chat, reopen it: still stale.
- Send any message from the phone: the entire missed history appears at once.
Expected
Reopening a chat (at minimum) re-reads the session's current state; ideally open views refresh when the transcript advances.
Actual
The chat view appears frozen — sometimes for hours — while the session has genuinely moved on. Users conclude the session is stuck or their answer was lost, and may re-answer a stale permission prompt (double-running a non-idempotent command).
Relation to #32493
#32493 documents the narrower case (a hook-approved permission prompt lingering on Remote Control clients). This report is the broader mechanism: no externally-added turns are ever reflected until the surface itself drives the session — reopen included. We verified the marker-file case from #32493 end-to-end as part of building a PermissionRequest-hook product, and hit this broader staleness daily.
Happy to provide transcripts or run diagnostics builds.