[BUG] Mobile: offline local sessions are displayed under Archived, and unarchiving removes them from every filter
Summary
On mobile, a local session whose Remote Control connection is offline is displayed under the
Archived filter, even though it is not archived. Unarchiving it then removes it from
every filter, because the mobile All filter is the union of the four workflow-status
buckets and an offline local session has no workflow status.
The result is that the one obvious corrective action — unarchive — is what makes the session
permanently unreachable from the phone.
Reproduced on two iPhones on the same account. Both show identical behavior.
Environment
- Claude Code desktop (macOS 15.6 / Darwin 25.6.0), embedded CLI
2.1.258, app1.44121.4 - Claude mobile app (iOS), Code tab — two devices, both affected
- Single account, single org, single registered device
Steps to reproduce
- Run several Claude Code sessions locally on a desktop machine.
- Let their local
claudeprocesses exit (e.g. restart the desktop app — an auto-update does
this), so Remote Control reports those sessions offline.
- Open the mobile app, Code tab.
- Observe those sessions listed under the Archived filter, several labelled "Connected".
- Unarchive one.
- Step through every option in the filter dropdown —
All,Needs input,Ready for review,
Working, Completed, Archived. The session appears under none of them.
Expected
A session that is not archived should not be displayed under Archived, and unarchiving
should increase a session's visibility rather than eliminate it. At minimum, All should be a
true superset of non-archived sessions.
Why All cannot show it
The filter counts are self-consistent in a way that identifies the cause:
All · 15
Needs input · 3
Ready for review · 10
Working · 0
Completed · 2
Archived · 68
3 + 10 + 0 + 2 = 15 = All. All is computed as the union of the four workflow-status
buckets, not as "everything not archived". Those four look like cloud-agent lifecycle states;
an offline local session holds none of them, so Archived is the only bucket that can render
it, and removing it from Archived leaves it with no bucket at all.
Evidence the sessions are not archived
Local session records on the desktop machine
(~/Library/Application Support/Claude/claude-code-sessions/<org>/<user>/local_*.json):
isArchived=true : 0
isArchived=false: 53
Zero of 53 are archived. The desktop sidebar shows all of them as active, and the
session-management API agrees — every session reports isArchived: false. The mobile client'sArchived · 68 corresponds to nothing stored on the machine, so the archived state shown on
mobile is not derived from the desktop record.
A structural diff between a session rendered under All and one rendered under Archived
shows the two stored records are identical in shape — same keys, both isArchived: false,
both carrying a bridgeSessionIds link. Only session identity and timestamps differ. Nothing
persisted distinguishes them.
What actually determines the bucket
Live process state, not age and not local-vs-cloud:
- A newly started local session appears under
Allimmediately. - Cloud sessions a week older also appear under
All. - Local sessions from hours ago sit under
Archived.
Cross-checking the process table against the mobile list: exactly two claude processes were
running on the machine, and exactly those two sessions rendered as "Connected" under All.
Every session whose process had exited rendered under Archived. Resuming one of those
sessions on the desktop — which starts its process again — moved it out of Archived and intoAll on both phones within seconds, with its isArchived value never changing.
Per the Remote Control documentation, a session going offline when its local process exits is
expected behavior. The defect is in how mobile renders that state: an offline session is
labelled Archived, which is both inaccurate and a trap, since unarchiving strands it.
Impact
After a desktop auto-update restarts the app, every prior session's process is gone at once, so
the entire session history moves into Archived on mobile. A user who reaches for the obvious
fix loses those sessions from the mobile UI entirely. The only recovery is physical access to
the desktop machine, which defeats the purpose of Remote Control.
Suggested fix
Any one of:
- Make
Alla true superset of all non-archived sessions regardless of workflow status. - Give offline local sessions a status of their own (e.g.
Offline) so they have a bucket
that is not Archived.
- Stop rendering offline-but-not-archived sessions under
Archived, and label them by their
actual connection state.
Possibly related (all closed)
- #45403 — mobile shows deleted Code conversations as archived (closed as duplicate)
- #68972 — sessions auto-archived immediately after a response (closed as duplicate)
- #32018 — archived mobile session cannot be unarchived (closed as not planned / stale)
- #59449 — active session auto-archived every ~5 minutes
The recurrence across platforms and releases suggests the underlying grouping logic, rather
than any one surface, is the common cause.