[BUG] Cowork scheduled tasks with high-frequency cron expressions cause unrecoverable startup freeze on Windows — standard VM recovery does not fix
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
After configuring scheduled tasks in Cowork on Windows, Claude Desktop freezes on every startup — no UI renders, the app is completely unusable. The root cause is the catch-up mechanism for missed scheduled task runs.
The scheduled task config (scheduled-tasks.json in local-agent-mode-sessions) contained a task with cron expression 0 21,22,23,0,1,2,3,4,5,6 * * * (10 runs per night). On every app launch, the catch-up mechanism detects a missed run and attempts to fire a catch-up session. This initialization hangs before the UI renders, creating an unbreakable boot loop.
Critical: Standard recovery steps do NOT fix this. All of the following were attempted and failed:
- Help → Troubleshooting → Clear cache and restart (unreachable — UI never renders)
- Kill processes + restart CoworkVMService
- Delete
%APPDATA%\Claude\vm_bundlesand%APPDATA%\Claude\claude-code-vmto force VM rebuild - Full PC restart
- Disabling auto-start and rebooting to clean state
The VM rebuilt successfully each time, but the freeze recurred because none of these steps touch the scheduled task configuration.
Fix that worked: Renaming the scheduled task config file:
Rename-Item "$env:APPDATA\Claude\local-agent-mode-sessions\<session-uuid>\<task-uuid>\scheduled-tasks.json" "scheduled-tasks.json.bak"
After this, Claude Desktop booted normally.
What Should Happen?
- The UI should fully render before catch-up runs are attempted, so users have a recovery path if catch-up initialization hangs.
- Catch-up initialization should have a timeout — if it doesn't complete within a reasonable window, skip and let the user decide.
- The Scheduled Tasks UI should be accessible even when catch-up runs are failing, so users can disable or delete problematic tasks without manually editing JSON on disk.
- Cron expressions should be validated against catch-up behavior — a task running 10 times per night guarantees a catch-up trigger on every launch.
Error Messages/Logs
No error message is displayed. The app simply hangs with no UI. Process is visible in Task Manager. The freeze is silent.
Steps to Reproduce
- Open Cowork on Claude Desktop (Windows)
- Create a scheduled task with a high-frequency cron expression, e.g.
0 21,22,23,0,1,2,3,4,5,6 * * * - Close Claude Desktop
- Wait for at least one scheduled run to be missed
- Relaunch Claude Desktop
- App freezes — no UI renders, process visible in Task Manager
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.71
Platform
Other
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
Directly related issues — same scheduled-tasks.json freeze, confirmed on macOS:
- #32167 — Claude Desktop freezes on launch when
scheduled-tasks.jsonexists (macOS, same root cause, same fix) - #32125 — Claude for OSX hangs on startup (resolved by removing
scheduled-tasks.jsonper #32167)
Related issues that describe overlapping Cowork stability problems but do NOT identify this root cause:
- #25663 — workspace bricked after Chrome automation (VM corruption)
- #26646 — freezing + API 500 + 12GB VM bundle (VM boot behavior)
- #26921 — UI freezes mid-response (renderer bug)
- #29022 — /schedule skill fails on Windows (task creation)
- #30092 — cache clear wiped scheduled task history (data loss)
- #31023 — CLI soft-bricked by hook on startup (closest analog — config-triggered freeze with no safe mode)
Full writeup with diagnosis walkthrough: [will add blog link after publishing]
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗