claude.ai web slows down as stale scheduled-routine run cards accumulate (showing 137 'running' tasks)
Summary
The claude.ai web Tasks/Background view shows 137 "running" tasks, but there are only 5 actual scheduled routines configured. The 137 appear to be stale/orphaned run instances that never get marked complete and never get garbage-collected. The web UI has become noticeably slow, and I suspect rendering/tracking this large pile of phantom "running" cards is the cause.
Environment
- Surface: claude.ai web (Claude Code web)
- Also using: Claude Code CLI (
darwin, against a private repo) - Scheduled routines created via the remote-trigger /
/scheduleAPI (created_via: http_api)
What I expected
- The Tasks view reflects actual in-flight work: ~0 running when nothing is executing, plus the 5 routine definitions.
- Completed scheduled-routine runs close their card (or move to a history/collapsed state) rather than lingering as "running" forever.
What actually happens
- 137 cards show as "running."
- There are only 5 real routines (verified via the remote-trigger list API;
has_more: false):
| Routine | Schedule |
|---|---|
| codebase-overview-daily-update | daily 08:00 UTC |
| nightly-ui-audit | daily 09:00 UTC |
| nightly-security-audit | daily 09:30 UTC |
| weekly deferral audit | Sundays 08:00 UTC |
| docs-drift-fix | Mondays 10:00 UTC |
- All 5 routines have
persist_session: false. They've been firing daily/weekly for several weeks. The count of phantom "running" cards is roughly consistent with "every routine firing, every day, never closing its card" plus orphaned background-agent cards from past sessions.
Suspected cause
- Scheduled-routine runs (especially
persist_session: false) and/or background agent tasks spawned from a session do not transition out of "running" state when they finish or when the originating session is cleared (/clear). They accumulate unbounded and the web client renders/tracks all of them, degrading performance over time.
Impact
- claude.ai web is slow.
- No user-facing way to clear the stale cards. From the Claude Code CLI session there's also no tool to enumerate or clear individual remote run instances —
TaskList/CronListare empty, and the remote-trigger API only manages the 5 routine definitions (list/get/create/update/run), not their run history. So the cards can't be cleaned up from either side.
Suggested fixes
- Reap/auto-close run cards when a run completes (or errors/times out), especially for
persist_session: falseroutines. - Garbage-collect orphaned "running" cards whose originating session has ended (e.g. after
/clear). - Provide a "clear completed/stale tasks" affordance in the web Tasks view.
- Cap or paginate the Tasks list so a large backlog doesn't degrade web performance.
Notes
The 5 routine definitions themselves are healthy and intentional — the bug is the unbounded accumulation of stale run cards, not the routines.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗