Bridge/daemon-hosted sessions never write transcript to local JSONL; no way to re-host or export them locally

Status Open
Reported on v2.1.215
Maintainer reply None cached
Activity 0 comments · opened Jul 20, 2026

Summary

Sessions started (or resumed) from the claude.ai mobile/web app while no terminal is open become cloud-hosted ("bridge" sessions). Their transcript is never written to the local project JSONL — the local file only receives bridge-session marker lines. Worse, there is no way to bring such a session back to local hosting: attaching to it from an open terminal, or toggling /remote-control off, does not change where the transcript lives. The hosting mode appears to be fixed at session birth.

This silently breaks every local-transcript workflow (claude --continue, claude --resume, local JSONL tooling) and feels like data loss to the user.

Environment

  • Claude Code 2.1.215 (autoUpdatesChannel: latest)
  • Windows 11 Pro 10.0.26200, PowerShell
  • remoteControlAtStartup: true

Steps to reproduce

  1. Have a project with an existing terminal session; exit it (/exit).
  2. From the claude.ai mobile app (or web), send a message to that machine/project — a bridge continuation of the previous session starts (the machine executes tools via the background daemon).
  3. Inspect ~/.claude/projects/<project>/<session>.jsonl: none of the new user/assistant messages are appended. Only type: "bridge-session" markers and a file-history-snapshot are added. The last real content is still the old /exit.
  4. Open a terminal and reattach to this conversation (it shows up and accepts input, local slash commands like /model work) — still nothing is written to the local JSONL.
  5. Run /remote-control (reports "Remote Control disconnected") — still nothing.
  6. claude --continue in the terminal resumes the stale local transcript (pre-bridge state), not the actual conversation.

Expected

Any of these would solve it:

  • Daemon/cloud-hosted sessions write through their transcript to the local JSONL (the local file is the user's expectation for --continue/--resume and tooling), or
  • A command to re-host / migrate a cloud-born session to the attached terminal (or at least claude export <session> to materialize the transcript locally), or
  • At minimum, an explicit opt-out of silent cold-start hosting (e.g. a setting so that messaging a machine with no live terminal fails/queues instead of spawning a cloud-hosted continuation), plus a clear UI indication of the session's hosting mode.

Actual

  • Transcript lives only on claude.ai; local JSONL gets bridge-session markers.
  • Reattaching from a terminal does not re-host; /remote-control off does not re-host.
  • No export/migration command found.
  • The behavior changed recently (the background daemon / cold-start machinery is new). Long-time Remote Control users were used to "phone messages join my open terminal session and everything lands in the local JSONL" — that still works, but the terminal-closed case now silently diverges instead of failing.

Impact

User believed weeks of context were lost (they were not — but only because the project keeps its decisions in git). Significant confusion and loss of trust in --continue/--resume. Please make the hosting mode explicit and give users a path back to local transcripts.

View original on GitHub ↗