Parallel agent timers don't stop independently when individual agents complete

Resolved 💬 2 comments Opened Feb 12, 2026 by morahan Closed Mar 13, 2026

Bug Description

When running multiple Task agents in parallel (e.g., steve-jobs and code-grinch review agents), if one agent completes before the other, its elapsed timer in the terminal continues ticking until all parallel agents finish. The timer should freeze for each agent individually upon its completion.

Reproduction Steps

  1. Start a Claude Code session
  2. Trigger a workflow that launches 2+ Task agents in parallel (e.g., pre-commit review with steve-jobs + code-grinch)
  3. Observe that one agent finishes first (e.g., code-grinch at ~45s)
  4. Note that the completed agent's timer continues incrementing (45s → 46s → 47s…) until the slower agent also finishes
  5. Once all agents complete, all timers freeze — showing the same elapsed time regardless of when each actually finished

Expected Behavior

Each agent's elapsed timer should freeze independently the moment that specific agent returns its result. For example:

  • code-grinch: 45s (freezes at 45s)
  • steve-jobs: 1m 12s (freezes at 1m 12s)

Actual Behavior

Both timers show the same final time (the slowest agent's duration), e.g.:

  • code-grinch: 1m 12s
  • steve-jobs: 1m 12s

Environment

  • Claude Code version: v2.1.38
  • OS: macOS 15.4 (Darwin 25.3.0)
  • Node: v22.20.0
  • Terminal: VS Code integrated terminal & iTerm2 (same behavior in both)

Analysis

The likely root cause is that the spinner/timer interval for parallel agents is shared or only cleared when the entire parallel batch completes, rather than calling clearInterval per-agent as each one resolves. Each Task agent's timer UI update appears to be driven by a single interval that ticks for all active agents, and the "stop" signal is only sent once all promises in the parallel group settle.

Impact

This is a cosmetic/UX issue — it doesn't affect functionality, but it makes it impossible to gauge how long each individual agent actually took, which is useful for performance tuning and debugging agent configurations.

View original on GitHub ↗

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