[BUG] Scheduled Tasks fail on Windows MSIX: fs.link() crosses real ↔ virtualized filesystem boundary
Bug Description
All Scheduled Tasks in Cowork fail to run on Windows when Claude Desktop is installed via the official MSIX package (which is the only installer available via claude.ai/download). The error occurs every time a task is triggered via "Run now" or on schedule.
Clicking "Retry" pastes the prompt into the input field as a regular message — and that works fine. So the task content is valid; only the automatic loading mechanism is broken.
Error Message
UNKNOWN: unknown error, link 'C:\Users\lolly\Documents\Claude\Scheduled\<taskId>\SKILL.md' -> 'C:\Users\lolly\AppData\Roaming\Claude\local-agent-mode-sessions\<sessionId>\<subId>\<localId>\uploads\SKILL.md'
Root Cause
The MSIX package virtualizes AppData\Roaming into:
C:\Users\lolly\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\
The Scheduled Task runner calls fs.link() (hard link) from the real filesystem path (Documents\Claude\Scheduled\...\SKILL.md) to the non-virtualized path (AppData\Roaming\Claude\...). But AppData\Roaming\Claude does not exist as a real directory — it only exists inside the MSIX virtualized filesystem. The hard link target path is never resolved through the MSIX virtualization layer, so the operation fails.
Diagnostic Steps Performed
- Confirmed
SKILL.mdexists atC:\Users\lolly\Documents\Claude\Scheduled\<taskId>\SKILL.md✅ - Confirmed
C:\Users\lolly\AppData\Roaming\Claude\does not exist ❌ - Found actual data location:
C:\Users\lolly\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\local-agent-mode-sessions\...✅ - Created a directory junction from
AppData\Roaming\Claude→ MSIX path — task stopped starting entirely - Tried: Developer Mode enabled, Admin install, reinstall — no change
- "Retry" button (pasting prompt into input) works every time ✅
Suggested Fix
Replace fs.link() (hard link) with fs.copyFile() when loading SKILL.md into the session uploads directory. Hard links cannot cross filesystem boundaries, but a file copy works regardless of MSIX virtualization. Alternatively, resolve the target path through the MSIX virtualization layer before creating the link.
Environment
- OS: Windows 11
- Claude Desktop: Installed via ClaudeSetup.exe from claude.ai/download (MSIX package)
- Package ID:
Claude_pzs8sxrjxfjjc - Affects: All Scheduled Tasks, not just a specific one
- Workaround: "Retry" button works (bypasses fs.link mechanism)
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗