[Bug] Orphaned claude processes with --replay-user-messages accumulate unbounded, consuming ~2GB+ RAM
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
- Open Claude Code in VS Code
- Start a session and run any multi-step task (especially one using subagents/workflows)
- Close the VS Code tab or window without explicitly ending the session, or let the session end naturally
- Repeat across multiple sessions throughout the day
- 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 restoredue 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
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗