[BUG] Scheduled Tasks fail on Windows MSIX: fs.link() crosses real ↔ virtualized filesystem boundary

Resolved 💬 2 comments Opened Apr 10, 2026 by lollylan Closed May 23, 2026

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

  1. Confirmed SKILL.md exists at C:\Users\lolly\Documents\Claude\Scheduled\<taskId>\SKILL.md
  2. Confirmed C:\Users\lolly\AppData\Roaming\Claude\ does not exist
  3. Found actual data location: C:\Users\lolly\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\local-agent-mode-sessions\...
  4. Created a directory junction from AppData\Roaming\Claude → MSIX path — task stopped starting entirely
  5. Tried: Developer Mode enabled, Admin install, reinstall — no change
  6. "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)

View original on GitHub ↗

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