Skip to content

[BUG] [Cowork] Windows: EXDEV error when TEMP is on a different drive than AppData #25476

Description

@Wis7Com

Bug Description

Cowork VM bundle download fails with EXDEV: cross-device link not permitted on Windows when the TEMP/TMP environment variable points to a different drive than %AppData%.

Claude Desktop downloads the VM bundle (rootfs.vhdx, ~9GB) to a temp directory under %TEMP%, then attempts fs.rename() to move it to %AppData%\Claude\vm_bundles\claudevm.bundle\. On Windows, rename() cannot move files across different drives (volumes), resulting in EXDEV.

Environment

  • OS: Windows 11 Pro, Build 26200 (24H2)
  • Claude Desktop: v1.1.2998.0 (Microsoft Store)
  • TEMP: D:\Rust\tmp (different drive)
  • AppData: C:\Users\...\AppData\Roaming\Claude\ (C: drive)

Error Log

[error] [download] VM download failed: EXDEV: cross-device link not permitted,
  rename 'D:\Rust\tmp\wvm-WBv9YJ\rootfs.vhdx' ->
  'C:\Users\USER\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx'

This error repeats indefinitely on every retry (observed 30+ retries in logs from 2026-02-11 to 2026-02-13).

Root Cause

Node.js fs.rename() uses the OS-level rename syscall, which does not support cross-device moves on Windows. When TEMP is on drive D: and AppData is on drive C:, the rename always fails.

Suggested Fix

Replace fs.rename() with a cross-device-safe move:

const fs = require('fs');
const path = require('path');

async function safeMove(src, dest) {
  try {
    await fs.promises.rename(src, dest);
  } catch (err) {
    if (err.code === 'EXDEV') {
      // Cross-device: copy then delete
      await fs.promises.copyFile(src, dest);
      await fs.promises.unlink(src);
    } else {
      throw err;
    }
  }
}

Or use a library like move-file / fs-extra.move() which handles EXDEV automatically.

Additional Context

Steps to Reproduce

  1. Set user TEMP/TMP environment variable to a drive different from C: (e.g., D:\tmp)
  2. Install Claude Desktop from Microsoft Store
  3. Open Cowork tab
  4. VM bundle downloads but fails at the rename step with EXDEV

Metadata

Metadata

Assignees

No one assigned

    Labels

    invalidIssue doesn't seem to be related to Claude Code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions