anthropics / anthropics/claude-code
Desktop: ghost scheduled tasks fire every minute but are absent from UI, MCP list, and on-disk registry
- Langage dominant
- Python
- Étoiles
- 145k
- Forks
- 23.1k
- Métriques de merge des PR
- Métriques de PR en attente
Description
## Summary
Two scheduled tasks that no longer exist anywhere on disk are still being dispatched by the Desktop app's `ScheduledTasks` manager **once per minute**, logging a warning/error each time. They cannot be removed: they do not appear in the Routines UI, in the `scheduled-tasks` MCP listing, or in the on-disk registry, and they survive a full app restart.
## Environment
- Claude Desktop: 1.52386.6
- Claude Code (bundled): 2.1.270
- macOS 26.6.2 (Apple Silicon)
## Symptoms
`~/Library/Logs/Claude/main.log` receives these lines every 60 seconds:
```
[warn] [ScheduledTasks] Skipping scheduled task ohayo-morning-report: task file not found at /Users//Claude/Scheduled/ohayo-morning-report/SKILL.md
[error] [ScheduledTasks] Failed to read task file for mercari-daily-sales-check: path not symlink-free before open { code: 'ENOENT' }
```
Volume, counted from the log:
| Date | Lines |
|---|---|
| 2026-09-09 | 708 (starts 12:12) |
| 2026-09-10 | 1444 |
| 2026-09-11 | 1442 |
| 2026-09-12 | 1440 |
| 2026-09-13 | 1444 |
| 2026-09-14 | 1443 |
~8,400 lines over six days, exactly one per minute.
The referenced path is a **legacy location**: `/Users//Claude/Scheduled/`. That directory does not exist — `~/Claude/` itself does not exist. Working tasks live under `~/.claude/scheduled-tasks/`.
## What I verified
1. `~/Claude/Scheduled/` — does not exist.
2. `~/.claude/scheduled-tasks/` — no directory for either task id.
3. `scheduled-tasks` MCP `list_scheduled_tasks` — returns 33 tasks; neither ghost is among them.
4. `scheduled-tasks` MCP `delete_scheduled_task` with the exact id — rejected: `Scheduled task "ohayo-morning-report" not found.`
5. Routines UI — searching `ohayo`, `おはよう`, and `メルカリ` each returns "no matching routines". Other routines (including paused ones) list normally.
6. `~/Library/Application Support/Claude/claude-code-sessions///scheduled-tasks.json` — exists (28 KB) and parses, but `grep` for either task id returns **0 matches**.
7. IndexedDB, Local Storage, Session Storage, and Partitions under `~/Library/Application Support/Claude/` — 0 matches.
8. `~/.claude.json` — the only match is an unrelated `skillUsage` counter.
9. **Restarting the app does not clear it.** The main process started at 08:33:48; the same warning was emitted at 08:38:54 and every minute after.
So the dispatcher is scheduling from a source that is not any of the on-disk registries, and that source is re-read after a restart.
## Expected
Either the stale registration is dropped when its task file is missing, or it is exposed somewhere the user can delete it (UI, or `delete_scheduled_task` accepting it).
## Actual
It fires forever, is invisible, and there is no supported way to remove it.
## Impact
Low but non-zero: log noise only. Log rotation caps disk use. No effect on the 33 working routines.
## Possible trigger
The first occurrence (2026-09-09 12:12) coincides with the last modification time of `~/Library/Application Support/Claude/` (12:11), which suggests an app update around that moment left the old-path registrations behind.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Évaluation
Cette issue n'a pas encore été évaluée.