[BUG] Windows terminal CLI: idle session intermittently kills long-running background Bash tasks with nested claude -p children (status=killed, "was stopped")

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

Environment: Claude Code 2.1.216, Windows 11, plain terminal CLI (parent=powershell.exe; NOT Desktop-embedded), bypassPermissions, long-lived interactive session (~3 days, heavy use).

Summary: Background Bash tasks (run_in_background) whose process tree contains a nested headless CLI (bash → python → claude -p worker, or codex exec) are intermittently stopped by the harness while the session is completely idle. The transcript records a queue-operation task-notification with <status>killed</status> / summary Background command "…" was stopped. No TaskStop tool call, no user interrupt, no UI action.

Evidence (from the session transcript + OS logs):

  • 9 kills over 3 days in one session; lifetimes 42s, 114s, 202s, 345s, 1093s, 1187s, 1344s, 1966s, 2049s — no consistent timeout.
  • ~57 same-shaped background dispatches in the same session completed fine (longest 2h06m); shallow background tasks (pollers/watchers) were never killed.
  • Both recent kills landed while the session was idle (108s and 37s after the turn ended; stop hooks had completed within ~6s of turn end).
  • Worker processes were alive and writing logs until the exact kill moment (196KB in 2 min), then cut with no error.
  • Windows Event Logs (System incl. Resource-Exhaustion, Application 1000/1001/1002, Defender) are empty in the window; 21/64GB RAM free.
  • Zero [Request interrupted] records in the entire 27.7MB transcript.
  • Project hooks audited: no taskkill/Stop-Process/pkill logic that could reach these PIDs.

Expected: a background task keeps running across turns until it exits or is explicitly stopped (TaskStop / user).
Actual: harness intermittently stops it (status=killed) with no actor identifiable from the transcript.

Workaround verified: detaching the worker from the session (PowerShell Start-Process, i.e., outside the session's process scope) + polling a status file from the session — 4/4 subsequent workers completed on the same machine/workload.

Possibly related: #25188, #8865, #68625 (Desktop WarmLifecycle — different entry point but same taskkill-tree substrate), #72851.

Ask: what harness-side reaper/lifecycle can stop a background task on Windows while the session is idle, and can it exempt (or at least log a reason for) tasks with live child trees? Happy to provide the full evidence bundle (delta table, transcript excerpts).

View original on GitHub ↗