Remote Control daemon keeps ALL sessions alive, including ones without Remote Control, after the user exits them and even after they are killed in Task Manager

Status Open
Reported on v2.1.296
Maintainer reply None cached
Activity 1 comment · opened Oct 10, 2026

Environment: Claude Code 2.1.296, Windows 10 Pro 19045, installed via npm

What happened

  1. I used /remote-control in one session.
  2. Later I ended sessions in the console (exit) and closed the terminals.
  3. The sessions kept running, including a session in another project where I never used Remote Control. Killing claude.exe in Task Manager did not stop them either. They came back up on their own.

Root cause (from my system)

  • /remote-control starts claude.exe daemon run --json-path ~/.claude/daemon.json, launched detached via WMI (parent WmiPrvSE.exe), independent of the terminal.
  • The daemon adopts and resumes every session it knows, not only the remote-controlled one (bg adopt: adopted=3; bg spawned 9c0b7cd5 (fleet) for a project session without Remote Control; --bg-pty-host … --resume …). Killing a session process does not end it, because the daemon brings it back.
  • The daemon self-restarts on every binary update (binary … changed (mtime changed) — self-restarting for upgrade, roughly hourly) and re-adopts all sessions each time.
  • One extra forked session was created that I never asked for (--fork-session, spawned when /remote-control was invoked a second time).
  • No Windows service, scheduled task or Run key is involved. claude daemon --help says service install is disabled and the daemon "exits when the last client disconnects", but in practice it keeps itself and all adopted sessions alive.

Why this is a problem

  • Keeping the remote-controlled session alive is understandable. But keeping every other session alive, after the user explicitly exited it, is not.
  • Exiting a session and killing its process are clear signals to stop. Both are overridden.
  • The user never agreed to a background process that outlives its sessions. It effectively behaves like a service without consent.
  • There is no prompt or warning, and no setting to disable this. The only way out I found is claude daemon stop --any, which is not discoverable.

Expected

  • The daemon manages only sessions where Remote Control or background mode was explicitly enabled.
  • Exiting a session, or killing it, ends it for good. No re-adoption or resume.
  • When the last remote-controlled session ends, the daemon exits.
  • Clear notice and consent before /remote-control starts a detached daemon.
  • A setting to turn off the daemon or background sessions entirely.
  • /remote-control should not silently create additional forked sessions.

Related: #91143

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗