[Bug] Orphaned claude processes with --replay-user-messages accumulate unbounded, consuming ~2GB+ RAM

Resolved 💬 2 comments Opened Jun 28, 2026 by berniedurfee-amira Closed Jul 2, 2026

Description

Claude Code leaves large numbers of orphaned claude processes behind when sessions end or are interrupted. These processes are never reaped and accumulate indefinitely across VS Code sessions, consuming significant RAM.

Environment

  • OS: macOS Darwin 25.5.0 (arm64)
  • Claude Code versions affected: 2.1.191, 2.1.195
  • Editor: VS Code with Claude Code extension
  • Container runtime: OrbStack

What I observed

45 orphaned claude processes found, all sharing the --replay-user-messages flag. Some have been running since Saturday (3+ days). Collectively consuming ~2 GB of RAM on a 19.5 GB machine (~10% of total RAM).

$ ps aux | grep "claude.*--replay-user-messages" | grep -v grep | wc -l
45

Sample processes (user, pid, %cpu, %mem, start time):

berniedurfee  68226  8.7  0.6  12:53PM  claude --replay-user-messages ...  (v2.1.195)
berniedurfee  67252  0.9  0.3  11:58AM  claude --replay-user-messages ...  (v2.1.195)
berniedurfee  42785  0.9  0.3   1:52PM  claude --replay-user-messages ...  (v2.1.191)
berniedurfee   1445  0.6  0.3  Sat09AM  claude --replay-user-messages ...  (v2.1.191)

The oldest processes date back to Saturday. They accumulate across both minor versions (2.1.191 and 2.1.195), suggesting they survive extension updates.

How to reproduce

  1. Open Claude Code in VS Code
  2. Start a session and run any multi-step task (especially one using subagents/workflows)
  3. Close the VS Code tab or window without explicitly ending the session, or let the session end naturally
  4. Repeat across multiple sessions throughout the day
  5. Run ps aux | grep "claude.*--replay-user-messages" | grep -v grep | wc -l -- count grows unboundedly

The processes appear to be spawned as subagent/workflow workers. When the parent session ends (normally or via connection drop), child processes are not reaped.

Impact

  • ~2 GB RAM consumed by idle processes on a typical workday
  • Memory pressure causes downstream failures in other tools (in my case: Docker NuGet package extraction failures during dotnet restore due to partial writes under memory pressure)
  • Processes survive VS Code restarts and extension updates

Workaround

Manual kill from a separate terminal:

pkill -f "claude.*--replay-user-messages"

Note: this also kills any active session, so it must be run from outside Claude Code.

Related

  • #71730 -- similar orphaned subagent process report (filed 2026-06-27)
  • #62107, #66151 -- related cleanup gaps on Windows/hooks

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗