[BUG] Cowork desktop app — bash workspace fails to start repeatedly across sessions

Resolved 💬 18 comments Opened May 1, 2026 by rickettspaige-eng Closed Jul 10, 2026

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?

I am using the Cowork desktop app (not the Claude Code CLI). The bash/Linux workspace has been failing to start repeatedly across at least 4 separate sessions. I have had to restart the app and create multiple new chats just to get basic work done.

What Should Happen?

The bash/Linux workspace should initialize successfully and remain stable across sessions, allowing me to use the Cowork desktop app without having to restart or create new chats.

Error Messages/Logs

"Workspace unavailable. The isolated Linux environment failed to start. You can still use file tools directly."

Steps to Reproduce

Restarting the app multiple times
Creating new chat sessions
Checking for duplicate Claude/Cowork installations in Windows — none found

What I have NOT been able to try:

/bug, /doctor, /feedback commands — these do not exist in the Cowork desktop app. Support kept directing me to Claude Code CLI troubleshooting steps, which do not apply.

Claude Model

Not sure / Multiple models

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

Claude 1.5354.0 (9a9e3d) 2026-04-29T01:14:34.000Z

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Windows Terminal

Additional Information

_No response_

View original on GitHub ↗

18 Comments

github-actions[bot] · 2 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/48001
  2. https://github.com/anthropics/claude-code/issues/45577
  3. https://github.com/anthropics/claude-code/issues/48381

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

deyjayprakash123-cloud · 2 months ago

Title: [BUG] Cowork Desktop: "Workspace unavailable" - Isolated Linux environment fails to start

Description:
I'm seeing a recurring failure where the bash/Linux workspace in the Cowork desktop app (Windows) refuses to initialize. I've had this happen across 4+ sessions, and the only "fix" is to nuke the session and start a new chat, which is a major context killer.

The Error:
"Workspace unavailable. The isolated Linux environment failed to start. You can still use file tools directly."

Context for Devs:
I’m on Claude 1.5354.0. Troubleshooting is difficult because the GUI version doesn’t support the /bug or /doctor commands found in the CLI.

Environment:

OS: Windows 11

Version: 1.5354.0 (9a9e3d)

Note: No duplicate installations found. Virtualization is enabled in BIOS

seniortiger16 · 2 months ago

+1 reproducing on my account. Adding more detailed evidence than the original report — note this is a REGRESSION for me (bash worked before the latest update), which differs from OP's "never worked" answer.

Note re: auto-closure as duplicate of #48001 / #45577 / #48381: Those three issues all reference "VM service not running" — a different error string. My failure (and the failure described in the OP here) is "Workspace unavailable. The isolated Linux environment failed to start." — which surfaces after the VM service appears to be up. May share root cause but should not be auto-merged without engineer review.

Environment

  • Cowork desktop version: 1.5354.0.0 (latest, per Settings → Apps → Installed apps; auto-update reports "latest installed")
  • OS: Windows 11
  • Account/Plan: Max

Regression timing

  • Before the update: bash via mcp__workspace__bash worked normally. Late April 2026 plugin audit log shows successful bash invocations through approximately April 28.
  • Sunday April 26 evening: updated Cowork desktop to 1.5354.0.0.
  • Immediately after the update: intermittent bash workspace failures began.
  • April 29 onward: failures escalated from intermittent to persistent total-failure mode — every bash invocation fails, no in-session recovery, no cross-session recovery.
  • As of this comment: persistent total-failure has continued without interruption.
  • This pattern (worked → intermittent after update → persistent after April 29) appears to be a regression introduced by the 1.5354.0.0 release on this Windows 11 environment.

Symptoms

  • mcp__workspace__bash returns "Workspace unavailable. The isolated Linux environment failed to start. You can still use file tools directly." within ~1 second
  • Affects ALL bash commands invoked via mcp__workspace__bash, including trivial echo test
  • 100% within a failed session (no in-session recovery)
  • Persistent across full Cowork app quit/restart from system tray
  • Persistent across full laptop reboot
  • A non-bash "echo test" surface (appears to be a Cowork built-in diagnostic, separate from mcp__workspace__bash) does succeed — suggesting the failure is specific to the bash workspace MCP, not a global Cowork-infrastructure problem. Engineering can confirm which surface that is.

What works (verified throughout the failure window)

  • All file tools: Read, Write, Edit, Grep, Glob
  • Folder mount via request_cowork_directory
  • Plugin loading and skill dispatch via the Skill tool
  • Both Cowork-mode and Code-mode in the same desktop app
  • Only the workspace bash MCP fails to provision

Things ruled out

  • NOT plugin-caused — fails in fresh chat with no plugin loaded
  • NOT OneDrive-caused — file tools reading OneDrive paths work fine
  • NOT session-state corruption — fails on fresh-chat baseline
  • NOT a global Anthropic outage — status.anthropic.com clean during failure window
  • NOT a Cowork install issue — file tools, plugin install, and non-bash echo all function

UI diagnostics attempted

  • /mcp in Cowork mode → "Unknown skill: mcp" (Cowork uses / as skill prefix)
  • /mcp in Code mode → opens Connectors page, empty (workspace bash is built-in MCP, not an add-on)
  • No UI in either mode exposes workspace bash server status or offers a reconnect action
  • /bug, /doctor, /feedback commands do not exist in Cowork desktop (per OP)

For Anthropic engineering

  • Support ticket conversation ID: 215474156404848 (filed 2026-05-02 — no response yet)
  • This is a regression — bash worked on previous Cowork desktop builds for me, broke after updating to 1.5354.0.0 on Sunday evening April 26. Whatever changed between the prior build and 1.5354.0.0 in the workspace MCP provisioning path is the most likely culprit.
  • The escalation pattern (intermittent for a few days, then persistent total failure starting April 29) may correlate with a server-side change rolled out around that date, OR with my local state crossing some threshold. Server-side logs for my account should distinguish.
  • Server-side logs for my account during 2026-04-28 through report date should show the workspace MCP provisioning attempts and their failure mode (timeout vs refused vs container-init error vs resource exhaustion vs auth)
  • Happy to provide screen recordings, additional session IDs, or coordinate a debug session

What I need from engineering

Primary (the actual bug fix):

  1. Make mcp__workspace__bash work correctly. The bash workspace MCP needs to provision reliably and stay up. Bash is core functionality — without it, batched mechanical work and any pipeline that depends on shell commands cannot run. This is the main ask.

Secondary (defensive UX while the root cause is being investigated):

  1. Add a Cowork desktop UI control to (a) inspect the workspace MCP server's status (running/failed/initializing) and (b) trigger a reconnect/retry. Right now users have zero visibility and zero recovery actions when the sandbox fails to provision — even if the underlying bug remains, this would let users self-diagnose and self-recover from transient failures.
jskrzypek · 2 months ago

I'm seeing this error on Linux (NixOS) as well. I am running the FHS flavor of claude desktop from this repo.

WimO908 · 2 months ago

Bug report comment — issue #55404
URL to post on: https://github.com/anthropics/claude-code/issues/55404

Same issue here on Windows, Cowork desktop app. Sandbox / bash workspace has been completely unavailable for over 2 days (May 3 to May 5, 2026).
Error message (every bash call, no exceptions):
Workspace unavailable. The isolated Linux environment failed to start. You can still use file tools directly.
What I tried:

Multiple full restarts of the Claude Desktop app (via Task Manager, not just close)
Multiple new sessions
Checked for updates: no update available
Waited several minutes between retries

Impact:
This blocks any work that needs Python, openpyxl, python-docx, or any CLI tool. File tools (Read/Write/Edit) still work, but anything involving binary files (xlsx, docx, pdf creation) is impossible without bash.
Setup:

OS: Windows
Claude Desktop: latest version (no update offered)
Sessions affected: every single one across two days

Happy to provide additional logs if someone tells me where to find them.

690937427 · 2 months ago

found the solution here: https://linux.do/t/topic/2072551/10

seniortiger16 · 2 months ago

<html>
<body>
<!--StartFragment--><h3 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold">For engineers</h3>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><strong>TL;DR:</strong> I tried the solution suggested. Cowork's bash sandbox fails to provision <em>after</em> all host-level preconditions are confirmed working. Failure is fast (~1s), no error code, no logs, and the user has no UI to inspect or reconnect the failing MCP server. This account is reproducible.</p>
<h4 class="text-text-100 mt-2 -mb-1 text-base font-bold">Actionable signals</h4>
<ol class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2"><strong>Failure is sub-second, not on a 60s timeout.</strong> Whatever's failing isn't a slow VM boot — it's a pre-flight check rejecting before VM startup. Support's earlier "MCP SDK 60s timeout" theory doesn't fit my data.</li>
<li class="whitespace-normal break-words pl-2"><strong>Generic error message blocks all diagnosis.</strong> Users see only:</li>
</ol>
<div role="group" aria-label="Code" tabindex="0" class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"><div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
isolate
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md backdrop-blur-md _fill_10ocf_9 _ghost_10ocf_96" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3A1.5 1.5 0 0 1 14 4.5V6h1.5A1.5 1.5 0 0 1 17 7.5v8a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 6 15.5V14H4.5A1.5 1.5 0 0 1 3 12.5v-8A1.5 1.5 0 0 1 4.5 3zm1.5 9.5a1.5 1.5 0 0 1-1.5 1.5H7v1.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5H14zM4.5 4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.188 5.11a.5.5 0 0 1 .752.626l-.056.084-7.5 9a.5.5 0 0 1-.738.033l-3.5-3.5-.064-.078a.501.501 0 0 1 .693-.693l.078.064 3.113 3.113 7.15-8.58z"></path></svg></div></div></div></button></div></div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono);"><code style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono); white-space: pre-wrap;"><span><span> Workspace unavailable. The isolated Linux environment failed to start.
</span></span><span> You can still use file tools directly.</span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">No error code. No log path. No failure category. No way to tell whether it's BIOS virt, missing files, corrupt bundle, scanned-by-AV, or a Cowork-internal config issue. This message needs to expose at least: which subsystem failed, and whether logs exist on disk for users to share.</p>
<ol class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3" start="3">
<li class="whitespace-normal break-words pl-2"><strong>No user-facing UI to inspect or reconnect the workspace MCP server.</strong>
<ul class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2"><code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">/mcp</code> in Cowork mode → "Unknown skill: mcp" (Cowork uses <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">/</code> for skill invocation)</li>
<li class="whitespace-normal break-words pl-2"><code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">/mcp</code> in Code mode → opens Connectors page (workspace bash is a built-in MCP server, not listed there)</li>
<li class="whitespace-normal break-words pl-2">No menu entry, settings panel, or developer-tools route exposes built-in MCP server state</li>
</ul>
</li>
<li class="whitespace-normal break-words pl-2"><strong><code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">.auto_reinstall_attempted</code> flag in the VM bundle directory.</strong> Cowork has internal logic to detect bundle problems and try a reinstall, but the recovery code path apparently can leave users stuck — this flag persists indefinitely once set. Either the auto-reinstall isn't actually re-attempting, or it's silently failing and never clearing the flag.</li>
<li class="whitespace-normal break-words pl-2"><strong>At least two install layouts exist in the wild for the VM bundle path.</strong> The fix earlier in this thread targets one layout; my install uses a different one:
<ul class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2">Layout A (per @momo520, this thread): <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">~\AppData\Local\Claude-3p\vm_bundles\claudevm.bundle\</code></li>
<li class="whitespace-normal break-words pl-2">Layout B (mine): <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">~\AppData\Local\Packages\Claude_&lt;package-id&gt;\LocalCache\Roaming\Claude\vm_bundles\claudevm.bundle\</code></li>
</ul>
Note Layout B uses <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">Roaming\Claude\</code> not <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">Roaming\Claude-3p\</code>. Whatever code path checks "is the bundle present" needs to handle both layouts (or the install needs to converge on one).</li>
<li class="whitespace-normal break-words pl-2"><strong>VM bundle contents observed (Layout B):</strong></li>
</ol>
<div role="group" aria-label="Code" tabindex="0" class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"><div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
isolate
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md backdrop-blur-md _fill_10ocf_9 _ghost_10ocf_96" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3A1.5 1.5 0 0 1 14 4.5V6h1.5A1.5 1.5 0 0 1 17 7.5v8a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 6 15.5V14H4.5A1.5 1.5 0 0 1 3 12.5v-8A1.5 1.5 0 0 1 4.5 3zm1.5 9.5a1.5 1.5 0 0 1-1.5 1.5H7v1.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5H14zM4.5 4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.188 5.11a.5.5 0 0 1 .752.626l-.056.084-7.5 9a.5.5 0 0 1-.738.033l-3.5-3.5-.064-.078a.501.501 0 0 1 .693-.693l.078.064 3.113 3.113 7.15-8.58z"></path></svg></div></div></div></button></div></div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono);"><code style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono); white-space: pre-wrap;"><span><span> .auto_reinstall_attempted
</span></span><span> .initrd.origin initrd initrd.zst
</span><span> .initrd.zst.origin
</span><span> .rootfs.vhdx.origin rootfs.vhdx rootfs.vhdx.zst
</span><span> .rootfs.vhdx.zst.origin
</span><span> .vmlinuz.origin vmlinuz vmlinuz.zst
</span><span> .vmlinuz.zst.origin
</span><span> sessiondata.vhdx
</span><span> smol-bin.vhdx</span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">The <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">.origin</code> + <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">.zst</code> pattern suggests a verify-and-decompress flow. Worth checking if any of these are partial/checksum-mismatched — there's currently no user-facing way to validate bundle integrity.</p>
<ol class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3" start="7">
<li class="whitespace-normal break-words pl-2"><strong>Confirmed working baseline (the things engineering can take off the table):</strong>
<div class="overflow-x-auto w-full px-2 mb-6">
Subsystem | Test | Result
-- | -- | --
CPU virtualization | Get-CimInstance Win32_Processor after BIOS enable + Hyper-V running | HypervisorPresent: True
Hyper-V | Windows feature state | Enabled for VirtualMachinePlatform and HypervisorPlatform
WSL2 | wsl --status | Default version 2, Ubuntu installed
WSL kernel functional | wsl -e echo "hello from wsl" | Returns expected output
Defender | Get-MpPreference after Add-MpPreference -ExclusionPath | Exclusions registered
File-tool MCP server | Read/Write/Edit/Grep/Glob calls | Working throughout
VM bundle files on disk | Get-ChildItem against bundle path | All present

</div>
Yet <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">mcp__workspace__bash</code> still fails. Conclusion: the failing component is downstream of WSL2/Hyper-V/Defender/file-tools and inside Cowork's own VM-provisioning stack.</li>
</ol>
<h4 class="text-text-100 mt-2 -mb-1 text-base font-bold">Suggested investigation paths</h4>
<ul class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2"><strong>Server-side logs for this account</strong> during a failed <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">mcp__workspace__bash</code> call — what does the workspace MCP server log when it returns "failed to start"? That's the signal Cowork has but isn't surfacing.</li>
<li class="whitespace-normal break-words pl-2"><strong>Bundle integrity check</strong> — verify <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">.origin</code> checksums against actual file content for this user's bundle. Partial/corrupt downloads with the <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">.auto_reinstall_attempted</code> flag set seem to be a stuck state.</li>
<li class="whitespace-normal break-words pl-2"><strong><code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">.auto_reinstall_attempted</code> semantics</strong> — what exactly clears this flag? If Cowork sets it on first failure but never clears it, every subsequent launch enters a degraded state.</li>
<li class="whitespace-normal break-words pl-2"><strong>Consolidate install layouts</strong> — having <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">Local\Claude-3p\</code> vs <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">Packages\Claude_*\LocalCache\Roaming\Claude\</code> paths in the wild creates exactly the support burden visible in this thread.</li>
<li class="whitespace-normal break-words pl-2"><strong>Surface diagnostic info</strong> — at minimum expose the workspace MCP server stderr in a Cowork developer-tools panel, similar to how Claude Code CLI has <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">claude --debug mcp</code>.</li></ul><!--EndFragment-->
</body>
</html>

<!--StartFragment--><h3 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold">Bash Workspace Failure — Diagnostic Update</h3>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">I tried @momo520's Gemini-suggested hard-link fix from earlier in this thread plus several other steps. Posting the full record in case it helps anyone else hitting this.</p>
<hr class="border-border-200 border-t-0.5 my-3 mx-1.5">
<h4 class="text-text-100 mt-2 -mb-1 text-base font-bold">Environment</h4>
<ul class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2"><strong>Product:</strong> Cowork desktop (not Claude Code CLI)</li>
<li class="whitespace-normal break-words pl-2"><strong>OS:</strong> Windows 11</li>
<li class="whitespace-normal break-words pl-2"><strong>CPU:</strong> Intel Celeron N5095 @ 2.00 GHz</li>
<li class="whitespace-normal break-words pl-2"><strong>Status page:</strong> clean throughout</li>
<li class="whitespace-normal break-words pl-2"><strong>Symptom:</strong> every bash call returns</li>
</ul>
<div role="group" aria-label="Code" tabindex="0" class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"><div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
isolate
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md backdrop-blur-md _fill_10ocf_9 _ghost_10ocf_96" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3A1.5 1.5 0 0 1 14 4.5V6h1.5A1.5 1.5 0 0 1 17 7.5v8a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 6 15.5V14H4.5A1.5 1.5 0 0 1 3 12.5v-8A1.5 1.5 0 0 1 4.5 3zm1.5 9.5a1.5 1.5 0 0 1-1.5 1.5H7v1.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5H14zM4.5 4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.188 5.11a.5.5 0 0 1 .752.626l-.056.084-7.5 9a.5.5 0 0 1-.738.033l-3.5-3.5-.064-.078a.501.501 0 0 1 .693-.693l.078.064 3.113 3.113 7.15-8.58z"></path></svg></div></div></div></button></div></div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono);"><code style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono); white-space: pre-wrap;"><span><span> Workspace unavailable. The isolated Linux environment failed to start.
</span></span><span> You can still use file tools directly.</span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">File tools (Read/Write/Edit/Grep/Glob) work consistently. Only the bash sandbox fails.</p>
<hr class="border-border-200 border-t-0.5 my-3 mx-1.5">
<h4 class="text-text-100 mt-2 -mb-1 text-base font-bold">What I tried, in order</h4>
<h5 class="text-text-100 mt-2 -mb-1 text-base font-bold">1. The hard-link script from this thread</h5>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Ran @momo520's Gemini PowerShell script as-is. Result:</p>
<div role="group" aria-label="Code" tabindex="0" class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"><div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
isolate
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md backdrop-blur-md _fill_10ocf_9 _ghost_10ocf_96" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3A1.5 1.5 0 0 1 14 4.5V6h1.5A1.5 1.5 0 0 1 17 7.5v8a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 6 15.5V14H4.5A1.5 1.5 0 0 1 3 12.5v-8A1.5 1.5 0 0 1 4.5 3zm1.5 9.5a1.5 1.5 0 0 1-1.5 1.5H7v1.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5H14zM4.5 4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.188 5.11a.5.5 0 0 1 .752.626l-.056.084-7.5 9a.5.5 0 0 1-.738.033l-3.5-3.5-.064-.078a.501.501 0 0 1 .693-.693l.078.064 3.113 3.113 7.15-8.58z"></path></svg></div></div></div></button></div></div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono);"><code style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono); white-space: pre-wrap;"><span><span>[WARN] Source file does not exist: C:\Users\&lt;me&gt;\AppData\Local\Claude-3p\vm_bundles\claudevm.bundle\rootfs.vhdx
</span></span><span>[WARN] Source file does not exist: ...\vmlinuz
</span><span>[WARN] Source file does not exist: ...\initrd
</span><span>[WARN] Source file does not exist: ...\smol-bin.vhdx</span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><strong>The original script's source path doesn't exist on my install.</strong> My VM files live somewhere different.</p>
<h5 class="text-text-100 mt-2 -mb-1 text-base font-bold">2. Found my actual VM bundle path</h5>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Searched AppData:</p>
<div role="group" aria-label="powershell code" tabindex="0" class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"><div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
isolate
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md backdrop-blur-md _fill_10ocf_9 _ghost_10ocf_96" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3A1.5 1.5 0 0 1 14 4.5V6h1.5A1.5 1.5 0 0 1 17 7.5v8a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 6 15.5V14H4.5A1.5 1.5 0 0 1 3 12.5v-8A1.5 1.5 0 0 1 4.5 3zm1.5 9.5a1.5 1.5 0 0 1-1.5 1.5H7v1.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5H14zM4.5 4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.188 5.11a.5.5 0 0 1 .752.626l-.056.084-7.5 9a.5.5 0 0 1-.738.033l-3.5-3.5-.064-.078a.501.501 0 0 1 .693-.693l.078.064 3.113 3.113 7.15-8.58z"></path></svg></div></div></div></button></div></div><div class="text-text-500 font-small p-3.5 pb-0">powershell</div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono);"><code class="language-powershell" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono); white-space: pre;"><span><span class="token token" style="color: rgb(0, 81, 194);">Get-ChildItem</span><span> </span><span class="token token" style="color: rgb(20, 24, 31);">-</span><span>Path </span><span class="token token" style="color: rgb(0, 128, 0);">"C:\Users\</span><span class="token token" style="color: rgb(179, 74, 0);">$env</span><span class="token token" style="color: rgb(0, 128, 0);">:USERNAME\AppData"</span><span> </span><span class="token token" style="color: rgb(20, 24, 31);">-</span><span>Recurse
</span></span><span><span> </span><span class="token token" style="color: rgb(20, 24, 31);">-</span><span>Include </span><span class="token token" style="color: rgb(0, 128, 0);">"*.vhdx"</span><span class="token token" style="color: rgb(43, 48, 59);">,</span><span class="token token" style="color: rgb(0, 128, 0);">"vmlinuz"</span><span class="token token" style="color: rgb(43, 48, 59);">,</span><span class="token token" style="color: rgb(0, 128, 0);">"initrd"</span><span class="token token" style="color: rgb(43, 48, 59);">,</span><span class="token token" style="color: rgb(0, 128, 0);">"claudevm*"</span><span>

</span></span><span><span> </span><span class="token token" style="color: rgb(20, 24, 31);">-</span><span>ErrorAction SilentlyContinue </span><span class="token token" style="color: rgb(43, 48, 59);">|</span><span> </span><span class="token token" style="color: rgb(0, 81, 194);">Select-Object</span><span> FullName</span></span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">VM files were at:</p>
<div role="group" aria-label="Code" tabindex="0" class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"><div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
isolate
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md backdrop-blur-md _fill_10ocf_9 _ghost_10ocf_96" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3A1.5 1.5 0 0 1 14 4.5V6h1.5A1.5 1.5 0 0 1 17 7.5v8a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 6 15.5V14H4.5A1.5 1.5 0 0 1 3 12.5v-8A1.5 1.5 0 0 1 4.5 3zm1.5 9.5a1.5 1.5 0 0 1-1.5 1.5H7v1.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5H14zM4.5 4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.188 5.11a.5.5 0 0 1 .752.626l-.056.084-7.5 9a.5.5 0 0 1-.738.033l-3.5-3.5-.064-.078a.501.501 0 0 1 .693-.693l.078.064 3.113 3.113 7.15-8.58z"></path></svg></div></div></div></button></div></div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono);"><code style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono); white-space: pre-wrap;"><span><span>C:\Users\&lt;me&gt;\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\vm_bundles\claudevm.bundle\</span></span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Note: my path uses <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">Roaming\Claude\vm_bundles</code> — <strong>not</strong> <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">Roaming\Claude-3p\vm_bundles</code> like @momo520's case. Different install layout.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Files actually present in that folder (richer than the original script expected):</p>
<div role="group" aria-label="Code" tabindex="0" class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"><div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
isolate
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md backdrop-blur-md _fill_10ocf_9 _ghost_10ocf_96" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3A1.5 1.5 0 0 1 14 4.5V6h1.5A1.5 1.5 0 0 1 17 7.5v8a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 6 15.5V14H4.5A1.5 1.5 0 0 1 3 12.5v-8A1.5 1.5 0 0 1 4.5 3zm1.5 9.5a1.5 1.5 0 0 1-1.5 1.5H7v1.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5H14zM4.5 4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.188 5.11a.5.5 0 0 1 .752.626l-.056.084-7.5 9a.5.5 0 0 1-.738.033l-3.5-3.5-.064-.078a.501.501 0 0 1 .693-.693l.078.064 3.113 3.113 7.15-8.58z"></path></svg></div></div></div></button></div></div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono);"><code style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono); white-space: pre-wrap;"><span><span>.auto_reinstall_attempted
</span></span><span>.initrd.origin
</span><span>.initrd.zst.origin
</span><span>.rootfs.vhdx.origin
</span><span>.rootfs.vhdx.zst.origin
</span><span>.vmlinuz.origin
</span><span>.vmlinuz.zst.origin
</span><span>initrd
</span><span>initrd.zst
</span><span>rootfs.vhdx
</span><span>rootfs.vhdx.zst
</span><span>sessiondata.vhdx
</span><span>smol-bin.vhdx
</span><span>vmlinuz
</span><span>vmlinuz.zst</span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">That <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">.auto_reinstall_attempted</code> flag file is interesting — suggests Cowork already tried to auto-fix something and gave up.</p>
<h5 class="text-text-100 mt-2 -mb-1 text-base font-bold">3. Modified the script and re-ran</h5>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Adapted the script to source from <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">Claude\vm_bundles\claudevm.bundle\</code> (where files actually are) and link into <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">Claude-3p\vm_bundles\claudevm.bundle\</code> (in case Cowork checks that path). Used dynamic file discovery so it caught all 15 files. Output:</p>
<div role="group" aria-label="Code" tabindex="0" class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"><div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
isolate
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md backdrop-blur-md _fill_10ocf_9 _ghost_10ocf_96" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3A1.5 1.5 0 0 1 14 4.5V6h1.5A1.5 1.5 0 0 1 17 7.5v8a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 6 15.5V14H4.5A1.5 1.5 0 0 1 3 12.5v-8A1.5 1.5 0 0 1 4.5 3zm1.5 9.5a1.5 1.5 0 0 1-1.5 1.5H7v1.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5H14zM4.5 4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.188 5.11a.5.5 0 0 1 .752.626l-.056.084-7.5 9a.5.5 0 0 1-.738.033l-3.5-3.5-.064-.078a.501.501 0 0 1 .693-.693l.078.064 3.113 3.113 7.15-8.58z"></path></svg></div></div></div></button></div></div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono);"><code style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono); white-space: pre-wrap;"><span><span>[OK] Linked: .auto_reinstall_attempted
</span></span><span>[OK] Linked: .initrd.origin
</span><span>[OK] Linked: .initrd.zst.origin
</span><span>[OK] Linked: .rootfs.vhdx.origin
</span><span>[OK] Linked: .rootfs.vhdx.zst.origin
</span><span>[OK] Linked: .vmlinuz.origin
</span><span>[OK] Linked: .vmlinuz.zst.origin
</span><span>[OK] Linked: initrd
</span><span>[OK] Linked: initrd.zst
</span><span>[OK] Linked: rootfs.vhdx
</span><span>[OK] Linked: rootfs.vhdx.zst
</span><span>[OK] Linked: sessiondata.vhdx
</span><span>[OK] Linked: smol-bin.vhdx
</span><span>[OK] Linked: vmlinuz
</span><span>[OK] Linked: vmlinuz.zst</span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">All linked successfully. <strong>Restarted Cowork. Tested bash. Same error.</strong></p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">The path mismatch theory doesn't apply to my install. The hard-link fix from this thread did not resolve my issue.</p>
<h5 class="text-text-100 mt-2 -mb-1 text-base font-bold">4. Diagnosed host virtualization</h5>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Initial PowerShell check showed VT-x off in BIOS:</p>
<div role="group" aria-label="Code" tabindex="0" class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"><div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
isolate
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md backdrop-blur-md _fill_10ocf_9 _ghost_10ocf_96" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3A1.5 1.5 0 0 1 14 4.5V6h1.5A1.5 1.5 0 0 1 17 7.5v8a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 6 15.5V14H4.5A1.5 1.5 0 0 1 3 12.5v-8A1.5 1.5 0 0 1 4.5 3zm1.5 9.5a1.5 1.5 0 0 1-1.5 1.5H7v1.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5H14zM4.5 4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.188 5.11a.5.5 0 0 1 .752.626l-.056.084-7.5 9a.5.5 0 0 1-.738.033l-3.5-3.5-.064-.078a.501.501 0 0 1 .693-.693l.078.064 3.113 3.113 7.15-8.58z"></path></svg></div></div></div></button></div></div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono);"><code style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono); white-space: pre-wrap;"><span><span>VirtualizationFirmwareEnabled: False
</span></span><span>SecondLevelAddressTranslationExtensions: False
</span><span>Microsoft-Windows-Subsystem-Linux: Disabled
</span><span>wsl --status: "WSL is not installed"</span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">So I:</p>
<ol class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2">Rebooted, entered BIOS, enabled Intel VT-x, saved and exited.</li>
<li class="whitespace-normal break-words pl-2">Ran <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">wsl --install</code> (admin PowerShell), rebooted.</li>
</ol>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Post-fix check:</p>
<div role="group" aria-label="Code" tabindex="0" class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"><div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
isolate
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md backdrop-blur-md _fill_10ocf_9 _ghost_10ocf_96" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3A1.5 1.5 0 0 1 14 4.5V6h1.5A1.5 1.5 0 0 1 17 7.5v8a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 6 15.5V14H4.5A1.5 1.5 0 0 1 3 12.5v-8A1.5 1.5 0 0 1 4.5 3zm1.5 9.5a1.5 1.5 0 0 1-1.5 1.5H7v1.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5H14zM4.5 4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.188 5.11a.5.5 0 0 1 .752.626l-.056.084-7.5 9a.5.5 0 0 1-.738.033l-3.5-3.5-.064-.078a.501.501 0 0 1 .693-.693l.078.064 3.113 3.113 7.15-8.58z"></path></svg></div></div></div></button></div></div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono);"><code style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono); white-space: pre-wrap;"><span><span>HyperVisorPresent: True
</span></span><span>WSL Default Version: 2
</span><span>Default Distribution: Ubuntu
</span><span>wsl -e echo "hello from wsl" → hello from wsl</span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Virt stack is fully functional. WSL can run Linux. Hyper-V is up.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><strong>Tested bash in Cowork. Same error.</strong> Virt stack alone wasn't the bottleneck.</p>
<h5 class="text-text-100 mt-2 -mb-1 text-base font-bold">5. Defender exclusions</h5>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Added Windows Defender exclusions for both VM bundle paths and the <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">Claude.exe</code> process:</p>
<div role="group" aria-label="powershell code" tabindex="0" class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100"><div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
isolate
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md backdrop-blur-md _fill_10ocf_9 _ghost_10ocf_96" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3A1.5 1.5 0 0 1 14 4.5V6h1.5A1.5 1.5 0 0 1 17 7.5v8a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 6 15.5V14H4.5A1.5 1.5 0 0 1 3 12.5v-8A1.5 1.5 0 0 1 4.5 3zm1.5 9.5a1.5 1.5 0 0 1-1.5 1.5H7v1.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5H14zM4.5 4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-8a.5.5 0 0 0-.5-.5z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.188 5.11a.5.5 0 0 1 .752.626l-.056.084-7.5 9a.5.5 0 0 1-.738.033l-3.5-3.5-.064-.078a.501.501 0 0 1 .693-.693l.078.064 3.113 3.113 7.15-8.58z"></path></svg></div></div></div></button></div></div><div class="text-text-500 font-small p-3.5 pb-0">powershell</div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono);"><code class="language-powershell" style="color: rgb(20, 24, 31); background: transparent; font-family: var(--font-mono); white-space: pre;"><span><span class="token token" style="color: rgb(0, 81, 194);">Add-MpPreference</span><span> </span><span class="token token" style="color: rgb(20, 24, 31);">-</span><span>ExclusionPath </span><span class="token token" style="color: rgb(0, 128, 0);">"...\Roaming\Claude\vm_bundles"</span><span>
</span></span><span><span></span><span class="token token" style="color: rgb(0, 81, 194);">Add-MpPreference</span><span> </span><span class="token token" style="color: rgb(20, 24, 31);">-</span><span>ExclusionPath </span><span class="token token" style="color: rgb(0, 128, 0);">"...\Roaming\Claude-3p\vm_bundles"</span><span>
</span></span><span><span></span><span class="token token" style="color: rgb(0, 81, 194);">Add-MpPreference</span><span> </span><span class="token token" style="color: rgb(20, 24, 31);">-</span><span>ExclusionProcess </span><span class="token token" style="color: rgb(0, 128, 0);">"Claude.exe"</span></span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Verified via <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">Get-MpPreference</code>. <strong>Tested bash. Same error.</strong> Real-time scanning wasn't the bottleneck either.</p>
<hr class="border-border-200 border-t-0.5 my-3 mx-1.5">
<h4 class="text-text-100 mt-2 -mb-1 text-base font-bold">Summary of what's ruled out</h4>
<div class="overflow-x-auto w-full px-2 mb-6">
Cause | Ruled out by
-- | --
Plugin interference | Bash fails on fresh-chat baseline before any plugin loads
Long-running session state | Fails in brand-new sessions
Path mismatch (this thread's fix) | Hard links created with correct paths; bash still fails
Host virtualization | WSL works, HypervisorPresent: True, Linux command runs
Defender real-time scanning | Exclusions added; no change
OneDrive | File tools fully functional
Account-wide outage | Status page clean, account works in other ways

</div>
<hr class="border-border-200 border-t-0.5 my-3 mx-1.5">
<h4 class="text-text-100 mt-2 -mb-1 text-base font-bold">What's left</h4>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">The bottleneck appears to be inside <strong>Cowork's own VM provisioning code path</strong>, independent of the host virtualization stack. Most likely candidates:</p>
<ol class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2">Corrupted/partial VM bundle download — the <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">.auto_reinstall_attempted</code> flag suggests prior auto-recovery failed.</li>
<li class="whitespace-normal break-words pl-2">Cowork app config drift pointing at a stale VM definition.</li>
<li class="whitespace-normal break-words pl-2">Stuck Hyper-V VM record from a previous failed provisioning attempt.</li>
</ol>
<hr class="border-border-200 border-t-0.5 my-3 mx-1.5">
<h4 class="text-text-100 mt-2 -mb-1 text-base font-bold">Next step</h4>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Full Cowork uninstall + reinstall, then let it re-download a fresh VM bundle on first launch. OneDrive files are independent of Cowork app local data, so manuscripts and other work files survive.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Will post here whether the clean reinstall resolves it.</p><!--EndFragment-->
</body>
</html>

seniortiger16 · 2 months ago

Update — bash now works on this machine. Diagnosis revised; previous theories partially wrong.

Following the diagnostic path posted upthread, I did the full nuclear-option reset: uninstall Cowork via Settings → Apps, full reboot, removed all residual app state (%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc, %APPDATA%\Claude, %APPDATA%\Claude-3p, %LOCALAPPDATA%\Claude-3p), reinstalled fresh from claude.ai/download. After the reinstall, bash did eventually provision — but only after a 5-minute startup window during which the UI shows a mix of Workspace still starting and Workspace unavailable… failed to start. Posting the corrected timing picture because it changes the bug significantly.

The diagnosis I posted last time was partially wrong. The HCS 0xC037010D / Invalid JSON document '$' Hyper-V-Compute event isn't the root failure — it appears to be associated with the auto-reinstall teardown path that fires after Cowork's first-attempt connection timeout. The real failure on this hardware is much simpler: provisioning is just slow, and Cowork's first-attempt timeout is too aggressive to ever succeed.

Cold-start sequence on this hardware (Intel Celeron N5095, captured from cowork_vm_node.log):

20:56:55  Bundle:status rootfs.vhdx missing (fresh install, downloads from server)
21:02:41  rootfs.vhdx download completes
21:03:08  All VM files ready  → download_and_sdk_prepare completed (370798ms = 6m10s)
21:03:11  vm_boot completed (1714ms)
21:03:13  add_plan9_shares completed
21:03:23  Still waiting for guest connection... 10s
21:04:07  Still waiting for guest connection... 54s
21:04:14  [error] Connection timeout, last completed step: add_plan9_shares
21:04:25  Startup failed: VM connection timeout after 60 seconds
21:04:25  Auto-reinstalling workspace after startup failure
21:04:25  [warn] rootfs.vhdx locked by running VM (EBUSY), skipping
21:04:25  Reinstall files deleted (sessiondata.img and compressed cache preserved)
21:04:33  VM:shutdown completed in 7339ms
[Cowork app re-launches, second attempt begins]
21:05:05  VM:start beginning, NEW instance ID: 5d39ef36-ef21-4993-bdfe-78643ba1bf3e
21:08:44  rootfs.vhdx decompression from cache completed in 228834ms (3m49s)
21:09:18  vmlinuz decompression completed in 33809ms
21:09:27  initrd decompression completed in 8128ms
21:09:27  All files ready  → download_and_sdk_prepare completed (261439ms = 4m21s)
21:09:31  vm_boot completed (0ms)
21:09:42  Still waiting for guest connection... 10s
21:09:51  [VM] Network status: CONNECTED
21:09:51  [VM:steps] sdk_install started
21:09:56  [VM] API reachability: REACHABLE
21:10:06  [VM:steps] sdk_install completed (15112ms)
21:10:06  [VM:start] Startup complete, total time: 300756ms

Total time from app launch to working bash: 5 minutes 0 seconds. First attempt always fails at the 60-second add_plan9_shares → guest-connection wait. Cowork's auto-reinstall does fire correctly on this build (1.6259.0.0) and the second attempt succeeds. The user surface during this window is misleading — they see "failed to start" on the first attempt, the app appears to die, but it's actually re-launching and a second attempt is in progress.

What changed from my prior comment:

  • The HCS 0xC037010D error is now believed to be from the auto-reinstall teardown sequence, not the underlying provisioning bug. Engineering should still verify the JSON-builder path, but it's not the headline issue.
  • The 30-second SDK install timeout is not the bottleneck. The new log shows SDK install completes in 15 seconds. The actual long pole is rootfs.vhdx.zst decompression: ~229 seconds on this CPU.
  • The .auto_reinstall_attempted flag is not permanently stuck on this build. The auto-reinstall path completes successfully, just very slowly.
  • Hard-link path-mismatch fix from upthread definitively does not apply to this install. Verified: Test-Path "$env:LOCALAPPDATA\Claude-3p\vm_bundles\claudevm.bundle" returns False. The directory Local\Claude-3p exists but contains no VM bundle. The MSIX install pattern uses %LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\vm_bundles\ exclusively.

Two real bugs that should still be filed and Must Be Fixed:

  1. 60-second guest-connection timeout is too aggressive on low-end hardware. Every cold start on this machine fails the first attempt and wastes ~5 additional minutes redoing decompression on the second attempt. If the timeout were higher (300s) or progressive, users would save the entire wasted-attempt cycle and never see the "failed to start" UI surface on slow boxes.
  1. The "Workspace unavailable. The isolated Linux environment failed to start" UI message is misleading during the recoverable state. On this hardware, this is what users see during the first attempt — but it's not actually a terminal failure; Cowork's auto-reinstall is about to fire and a second attempt will succeed. Users who quit/restart at this message lose progress and never see the install complete. Suggested fix: distinguish "first attempt failed, auto-retrying — may take several more minutes" from "all attempts failed".

Bonus diagnosability ask still standing: the original "Workspace still starting" / "Workspace unavailable" error strings need to expose underlying state (which step is in progress, how many attempts have been made, ETA on slow hardware). Users on Celeron-class hardware are silently waiting through a 5-minute provisioning window with no signal that anything is happening.

App version in log: Claude_1.6259.0.0_x64__pzs8sxrjxfjjc (auto-updated since original report). Hardware: Intel Celeron N5095, Windows 11, MSIX install. Support ticket: 215474156404848. Account remains reproducible — happy to capture additional traces, run instrumented builds, or coordinate a debug session.

---

For other users hitting this issue — workaround until engineering ships a fix

If you're seeing Workspace unavailable. The isolated Linux environment failed to start. repeatedly on Cowork desktop (Windows), here's what worked for me. Read all the way through before starting — the most important step is "be patient," and partway through the process the app will look like it's failing when it isn't.

Step 1 — Confirm host prerequisites (skip if you already know these are good).
In an elevated PowerShell (aka Terminal Admin on Windows):

Get-CimInstance Win32_Processor | Select-Object VirtualizationFirmwareEnabled, SecondLevelAddressTranslationExtensions
wsl --status

VirtualizationFirmwareEnabled must be True. If it isn't, reboot into BIOS and enable Intel VT-x (or AMD-V). wsl --status should report a default version 2 distro. If WSL isn't installed, run wsl --install from an elevated prompt and reboot.

Step 2 — Full clean reset of Cowork.
Quit Cowork from the system tray. Then in elevated PowerShell:

Get-Process Claude -ErrorAction SilentlyContinue | Stop-Process -Force
Remove-Item "$env:LOCALAPPDATA\Packages\Claude_pzs8sxrjxfjjc" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATA\Claude" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATA\Claude-3p" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:LOCALAPPDATA\Claude-3p" -Recurse -Force -ErrorAction SilentlyContinue

Then uninstall via Settings → Apps → Installed apps → Claude/Cowork → Uninstall.

Step 3 — Reboot. This clears any stuck Hyper-V VM records or vmcompute state. Don't skip it.

Step 4 — Reinstall fresh from claude.ai/download. Sign in.

Step 5 — Be patient. This is the most important step.
On the first cold start after reinstall, Cowork has to download the Linux VM image from Anthropic's servers and decompress it. On low-end hardware (Celeron-class CPUs, etc.), this takes 5 to 10 minutes. During that window you will probably see, in this order:

  • Workspace still starting… for several minutes
  • Workspace unavailable. The isolated Linux environment failed to start. (this looks like a terminal failure but it isn't — Cowork's auto-reinstall is firing)
  • Workspace still starting… again
  • Eventually: bash works

Do not quit Cowork when you see "failed to start." Do not close the chat. Do not try to nuke the bundle manually. Just wait. The app is doing a second provisioning attempt in the background and will succeed if you let it finish.

Step 6 — Test bash. Once Cowork looks idle, ask Claude to run echo test in a fresh chat. If you see test come back, you're done.

If after 15 minutes bash is still failing, capture the log so engineers can see what your machine is doing differently:

$src = "$env:LOCALAPPDATA\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\logs\cowork_vm_node.log"
$dst = "$env:USERPROFILE\Desktop\cowork_vm_node.log"
Copy-Item $src $dst -Force
Get-Item $dst | Select Name, Length, LastWriteTime

Attach cowork_vm_node.log from your Desktop to a comment on this thread.

What did NOT work for me, despite being suggested earlier in the thread:

  • The Gemini-suggested hard-link script (path mismatch fix). My install layout doesn't match what the script expects, and the bug isn't a path-mismatch bug anyway.
  • Adding Defender exclusions. Real-time scanning isn't the bottleneck.
  • Toggling Memory Integrity / HVCI off. Not relevant to this failure mode.
  • Restarting Cowork repeatedly without the full clean reset above. The Cowork app holds onto bad state across normal restarts.

Going forward (workflow on slow hardware):
After the initial fix, every cold start of Cowork still takes 5–7 minutes to make bash available, and you'll typically see "failed to start" once during that window. The fix is the same: wait through it, don't quit. The auto-reinstall path on the current build (1.6259.0.0) recovers correctly. Don't manually nuke the bundle as a "workaround" — that just forces a 5-minute redownload for nothing.

If your hardware is faster than mine (anything above a Celeron N5095 / Jasper Lake should be), expect a shorter window — likely 1–3 minutes total. Same principle: be patient on the first attempt.

Hope this helps the next person who hits this.

Engineers, the diagnostic-UX gap is the single biggest contributor to people reporting this as a hard failure when it isn't — please consider Bugs 1 and 2 above a priority.

naivej · 2 months ago

This issue is fixed for me after upgrading to 1.6259.1

SsuHan-Liu · 2 months ago

Adding a verified workaround for what looks like a distinct failure mode from the auto-reinstall timeout pattern @seniortiger16 has documented so well above. On Windows 11 MSIX (Claude Desktop 1.6259.0), the same Workspace unavailable symptom can be caused by a path mismatch between the App and the service that I haven't seen sketched in this thread yet.

Failure mode: cross-process MSIX path mismatch

@seniortiger16 already noted "at least two install layouts exist in the wild for the VM bundle path." On a Layout B install (Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\…), the failure is not just which layout is on disk but who sees what:

  • Claude Desktop App (packaged, runs inside the MSIX container) writes to %APPDATA%\Claude\vm_bundles\…. MSIX File System Redirection silently rewrites this to %LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\vm_bundles\….
  • CoworkVMService (Windows service, runs outside the MSIX container) reads from the real %LOCALAPPDATA%\Claude\vm_bundles\….

These are two completely different directories. The bundle (rootfs.vhdx, vmlinuz, initrd, smol-bin.vhdx, sessiondata.vhdx) lives only in the MSIX-virtualized location; the path the service expects often doesn't even exist on disk. cowork_vm_node.log confirms (timestamps from my own machine, 2026-05-06):

[VM:start] Copying smol-bin.x64.vhdx to bundle:
    … -> C:\Users\<user>\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\smol-bin.vhdx
[error] Startup failed: Error: failed to set VHDX path:
    VHDX file not found: C:\Users\<user>\AppData\Local\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx

The outer Workspace unavailable is what most of the thread reports; the inner failed to set VHDX path is what distinguishes this mode from the auto-reinstall-timeout mode. Worth grepping cowork_vm_node.log to disambiguate before applying the workaround.

Why the obvious link-based workarounds don't work

CoworkVMService has explicit defensive checks against link-based redirection. I worked through three dead ends:

  1. Directory junction (mklink /J vm_bundles → MSIX path) → is a symlink or junction, refusing to open (FILE_ATTRIBUTE_REPARSE_POINT check on the directory).
  2. Per-file hardlinks (mklink /H on each bundle file — same approach @momo520 tried in the duplicate-flagged threads) → has multiple hard links, refusing to open (GetFileInformationByHandle nNumberOfLinks check on each file). This is why @seniortiger16's hardlink retry on Layout B failed: the service rejects any file with link count > 1 by design.
  3. Set-Service -StartupType AutomaticAccess is denied even with admin elevation, because CoworkVMService is registered as WIN32_PACKAGED_PROCESS (sc.exe TYPE: 210) and inherits MSIX AppContainer restrictions on service config (see #48468). sc.exe config / sc.exe delete fail the same way; the service can only be controlled via Start-Service / services.msc GUI / direct registry.

These three together establish that the service only accepts real, independent files in a real directory tree.

Verified workaround: real copy (not a "nuke")

Important distinction from "delete and redownload" (which @seniortiger16 rightly cautions against): the MSIX-virtualized bundle stays intact. We only add a real-Local copy that the service can reach.

# 1. Quit Claude Desktop completely (incl. system tray icon)
Stop-Process -Name Claude -Force -ErrorAction SilentlyContinue

# 2. Remove any prior junction/hardlink attempts (safe even if absent)
$real = "$env:LOCALAPPDATA\Claude\vm_bundles"
if (Test-Path $real) {
    $item = Get-Item $real -Force
    if ($item.LinkType -eq 'Junction') { cmd /c rmdir "$real" }
    else { Remove-Item $real -Recurse -Force }
}

# 3. Real copy from MSIX-virtualized path to real Local (~14.8 GB; 30-60s on SATA SSD)
$msix = "$env:LOCALAPPDATA\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\vm_bundles"
Copy-Item -Path $msix -Destination $real -Recurse -Force

# 4. Verify link count = 1 on key files (fsutil should list only the file's own path)
foreach ($f in 'sessiondata.vhdx','rootfs.vhdx','vmlinuz','initrd','smol-bin.vhdx') {
    fsutil hardlink list "$real\claudevm.bundle\$f"
}

# 5. Relaunch Claude → new session → bash works

Confirmed working on Claude Desktop 1.6259.0 (Layout B / MSIX): bash returns Linux 6.8.0-106-generic / Ubuntu 22.04 / x86_64.

Caveats

  • ~15 GB extra disk usage — the bundle is now duplicated; sessiondata.vhdx alone is ~2.5 GB.
  • Stale on Claude updates — when Claude itself updates, smol-bin.vhdx / rootfs.vhdx / vmlinuz / initrd in the MSIX-virtualized path get refreshed, but the real-Local copy stays at the old version and bash will re-break. A re-sync (steps 1-3) is needed after each Claude update.
  • Doesn't help every variant — @naivej's report that 1.6259.1 fixed it for them suggests at least one path was addressed upstream. If you're on 1.6259.1+ and still seeing Workspace unavailable, please post the tail of cowork_vm_node.log — that's how to tell whether it's the path-mismatch mode (this comment) or the auto-reinstall-timeout mode (@seniortiger16's analysis above).
  • This is a workaround, not a fix — the underlying issue is that the App writes to the MSIX-virtualized location while the service reads from the real-Local path. A proper fix would either have the App write to a non-virtualized location, or have the service follow MSIX redirection rules so both ends see the same directory.

Credit to @seniortiger16, whose two-layouts observation was the bridge to seeing this as a cross-process visibility issue rather than just a path-string difference.

simjbaumgart · 2 months ago

Adding another macOS data point — same pipeline bug appears to be present on SDK version 2.1.128 (your report was on 2.1.111). Same fingerprint: download truncates around 23 MB, app reports an inflated total size, checksum fails, dialog shows the misleading generic "Download failed" wrapper.

Environment

  • Claude Desktop 1.6259.1
  • macOS 26.2 (Tahoe), Apple Silicon (M2 Pro)
  • App running from /Applications/Claude.app (verified not translocated; quarantine cleared)

Wrapper-level error in cowork_vm_node.log — note that download_and_sdk_prepare fails after All files ready is logged, because the rootfs is fine but the SDK binary fetch fails:

[VM:steps] download_and_sdk_prepare started
[downloadVM] Decompressed rootfs.img from local cache
[cache] rootfs.img checksum validated
All files ready in <REDACTED>/Library/Application Support/Claude/vm_bundles/claudevm.bundle
[VM:steps] download_and_sdk_prepare failed (9906ms): Download failed. Check your internet connection and try again.
[VM:start] Skipping auto-reinstall (already attempted once)

Underlying error in main.log — same signature as this issue, occurs on every retry (3/3 attempts, on every relaunch):

[ClaudeCodeManager-VM] Downloading from https://downloads.claude.ai/claude-code-releases/2.1.128/linux-arm64/claude.zst
[ClaudeCodeManager-VM] Downloaded file size: 82968576 bytes, transferred bytes: 23222774 bytes (expected: 54376604)
[ClaudeCodeManager-VM] Verifying checksum
[ClaudeCodeManager-VM] Checksum mismatch: expected=d64248f96a0c7621dc462ca66180f3925c447caeef5b8ac8bb0d167267798a45, actual=2e30cff0aa1eabd2d89a4053956052cf77c7b2b367010f7c19958d7704559fb5
[ClaudeCodeManager-VM] File head: ELF...
[ClaudeCodeManager-VM] Download attempt 3/3 failed Error: Checksum verification failed
[ClaudeCodeManager-VM] All download attempts failed

The "Downloaded file size: 82968576 bytes, transferred bytes: 23222774 bytes (expected: 54376604)" line shows the same accounting inconsistency reported in this issue — reported total exceeds the expected size, while actual transferred bytes are far smaller. File head: ELF confirms the URL is correct and the partial bytes are the start of the real binary.

CDN independently verified clean (manual curl from the same machine, same network, at the same time the app fails):

$ curl -sIL https://downloads.claude.ai/claude-code-releases/2.1.128/linux-arm64/claude.zst | grep -i 'content-length\|http/'
HTTP/2 200
x-goog-stored-content-length: 54376604
content-length: 54376604

$ curl -sL -o /tmp/claude-test.zst https://downloads.claude.ai/claude-code-releases/2.1.128/linux-arm64/claude.zst && stat -f%z /tmp/claude-test.zst
54376604

$ shasum -a 256 /tmp/claude-test.zst
d64248f96a0c7621dc462ca66180f3925c447caeef5b8ac8bb0d167267798a45  /tmp/claude-test.zst

curl retrieves the full 54,376,604 bytes with a SHA-256 that exactly matches the expected hash the app is checking against. The CDN is serving the correct file; the bug is client-side.

Already attempted (none resolved it)

  • Cleared ~/Library/Application Support/Claude/vm_bundles/
  • "Reinstall the workspace" link in the dialog (multiple times — log shows Skipping auto-reinstall (already attempted once) after first try)
  • Reinstalled Claude Desktop from a fresh download
  • Cleared quarantine attribute (xattr -dr com.apple.quarantine /Applications/Claude.app); confirmed app no longer runs from AppTranslocation path
  • Fully quit Claude Desktop between attempts

VM bundle version that keeps failing: 5680b11bcdab215cccf07e0c0bd1bd9213b0c25d. Happy to provide additional logs.

aoothman-eng · 2 months ago

same issue on Windows MSIX, Claude_pzs8sxrjxfjjc, version [Claude 1.6608.2 (ebf1a1) 2026-05-08T23:17:27.000Z], rootfs.vhdx confirmed at LocalCache\Roaming\Claude\vm_bundles, Cowork fails with 'Workspace unavailable / isolated Linux environment failed to start

jrockne-cmyk · 2 months ago

I'm experiencing the same issue. Windows, Claude Desktop (latest build as of May 11, 2026). The sandbox has been completely nonfunctional for approximately 4 days across 6+ sessions, multiple app restarts, and an application update. Every bash command returns "Workspace unavailable. The isolated Linux environment failed to start."
This blocks all document generation workflows in Cowork mode — docx-js, pandoc, LibreOffice, and Python all require the sandbox. The impact is significant for professional use cases (in my case, legal document production).
Happy to provide Windows Event Viewer logs or any other diagnostic information if engineering can specify what to look for.

Jacopops · 2 months ago

Same issues with Arch Linux: Version :1.6608.0-1
Error code: Workspace unavailable. The host Linux environment failed to start. You can still use file tools directly

System info:

OS: EndeavourOS Linux x86_64
_Host: 21UT ThinkBook 16 G9 AHP
Kernel: 7.0.5-arch1-1
Uptime: 6 hours, 27 mins
Packages: 1308 (pacman)
Shell: bash 5.3.9
Resolution: 1920x1080
DE: Plasma 6.6.4
WM: kwin
Theme: Breeze-Dark [GTK2], Breeze [GTK3]
Icons: breeze-dark [GTK2/3]
Terminal: konsole
CPU: AMD Ryzen 7 250 w/ Radeon 780M Graphics (16) @ 5.134GHz
GPU: AMD ATI c5:00.0 HawkPoint1
Memory: 8704MiB / 29746MiB_

WimO908 · 2 months ago

GitHub comment voor issue #55404 en #34323

Plakken op beide issues op github.com/anthropics/claude-code.

---

I had this exact problem for weeks on Windows 11. "Workspace unavailable. The isolated Linux environment failed to start." on every single bash call across many sessions. Sharing what fixed it in case it helps others.

Symptoms

  • Every mcp__workspace__bash call returns "Workspace unavailable"
  • cowork_vm_node.log shows repeated connect ENOENT \\.\pipe\cowork-vm-service
  • Windows Event Log "System" shows "The Claude service terminated unexpectedly"
  • Restarting Claude Desktop, wsl --update, reinstalling — none of it worked

Diagnosis (PowerShell as admin)

The Hyper-V Compute Operational log gave the smoking gun:

Get-WinEvent -LogName Microsoft-Windows-Hyper-V-Compute-Operational -MaxEvents 30 |
  Where-Object {$_.TimeCreated -gt (Get-Date).AddHours(-2)} |
  Format-List TimeCreated, Id, Message

Output included:

[cowork-vm-...] Create compute system, result 0x80370102

Final confirmation:

(Get-CimInstance Win32_ComputerSystem).HypervisorPresent   # False
systeminfo | findstr /i "Virtuali"
# Virtualization Enabled In Firmware: No

Root cause

CPU virtualization (Intel VT-x / AMD SVM) was disabled in BIOS/UEFI. Hyper-V Windows features were all enabled, hypervisorlaunchtype was Auto, vmcompute and hns services were running, but without hardware virtualization the hypervisor never actually starts. The Cowork VM cannot be created, the cowork-svc.exe Windows service crashes immediately after start, and the named pipe is never created.

The misleading part: Windows lets you install Hyper-V and shows everything as enabled, but HypervisorPresent is still False if VT-x is off in firmware.

Fix

  1. Reboot, enter BIOS/UEFI (F2, Del or F10 depending on vendor)
  2. Find Intel Virtualization Technology / VT-x / SVM Mode (usually under Advanced or CPU Configuration)
  3. Enable it, save and exit
  4. Boot Windows, start Claude Desktop, sandbox works immediately

Why it suddenly broke for me

I had recently swapped my GPU and CPU. Many motherboards reset BIOS settings to factory defaults after a hardware change, and VT-x is off by default. If you have unexplained Cowork failures right after any hardware swap (CPU, GPU, RAM, motherboard battery), check BIOS first.

Hope this saves someone the multi-day rabbit hole.

melesteanion · 2 months ago

I ran into this same issue where Claude Cowork's Linux sandbox failed to start with the error:

Workspace unavailable. The isolated Linux environment failed to start.

And later, after partial fixes:

Virtualization is not available. Claude's workspace requires Virtual Machine Platform, but the virtualization service isn't responding. Restart your computer to resolve this.

This is expected behavior per Anthropic's Cowork architecture docs: on Windows, the Cowork sandbox runs inside a Hyper-V VM, so if Hyper-V isn't enabled and functional, shell commands and code execution will fail while file/web tools keep working.
Here are the steps that fixed it for me:

1. Check Hyper-V status
Open PowerShell as Administrator and run:

powershell
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

In my case, State was Disabled.
2. Enable Hyper-V (and related virtualization features)
powershell

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -All
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All
Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform -All

The -All flag ensures all dependent sub-features are enabled too.

3. Verify CPU virtualization is enabled in BIOS
Open Task Manager → Performance tab → CPU. Look for Virtualization: Enabled at the bottom. If it says Disabled, reboot into BIOS/UEFI and enable:
Intel VT-x (Intel CPUs), or
SVM Mode / AMD-V (AMD CPUs)

4. Make sure the hypervisor launches at boot
powershell
bcdedit /enum | findstr hypervisorlaunchtype

It should return hypervisorlaunchtype Auto. If not:

powershellbcdedit /set hypervisorlaunchtype auto

5. Restart the computer (not shut down!)
This is the critical step. Use Restart explicitly — Windows 10/11's "Shut down" uses Fast Startup and does not perform a full boot, so the hypervisor won't load.

6. Verify it works
After reboot, open Claude Desktop and ask Claude to run a simple shell command (e.g., uname -a or just ask if sandbox is working properelly). The sandbox should now start successfully.
Prerequisites / gotchas

Hyper-V is only available on Windows 10/11 Pro, Enterprise, or Education — not Home edition. Check yours with winver.
If you use VirtualBox, VMware Workstation, or Android emulators, they may conflict with Hyper-V. WSL2 and Docker Desktop work fine alongside it.

Anthropic's status page showed Cowork as Operational throughout, confirming this is a local-machine issue, not a service outage.

Hope this helps anyone else hitting this!

DNovacki · 1 month ago

Resolved on my machine — root cause was firmware not applying VMX, fixed by BIOS "Load Optimized Defaults" (not a Cowork bug)
My case was not the MSIX path-mismatch or auto-reinstall-timeout discussed above — it was a host firmware issue showing the same generic UI error.
Environment: Cowork Desktop (Windows MSIX), Win11 Pro 25H2 (Build 26200), Xeon E5-2667 v4, Machinist RS9 X99 (AMI Aptio BIOS 2022). Started ~Apr 29; bash worked fine before.
Symptom: every bash call → Workspace unavailable. The isolated Linux environment failed to start.
Diagnosis — the failure was below Cowork, in host virtualization:

CoworkVMService → Running ✓ (so not the service)
HypervisorPresent → False
Hyper-V-Compute log → repeated Create compute system, result 0x80370102
Hyper-V-Hypervisor log → Event 41: "VMX not present or not enabled in BIOS"

The trap: BIOS showed VMX = Enable, but VirtualizationFirmwareEnabled was False while SecondLevelAddressTranslationExtensions was True. Firmware displayed "Enable" but wasn't committing the VMX bit at POST.
Did NOT fix it: setting hypervisorlaunchtype Auto in BCD (verified persistent); powercfg /h off + full cold boot with PSU power removed; VBS confirmed off; toggling BIOS VMX Disable→Enable→save.
Fixed it: BIOS → Load Optimized Defaults, then re-set VMX = Enable + TXT = Disable, F10. HypervisorPresent flipped to True, VM provisioned, echo test returned test.
Note: VirtualizationFirmwareEnabled may stay False once the hypervisor is active — the indicator that matters is HypervisorPresent: True. On used server boards, a weak CR2032 is the classic reason VMX silently stops being applied; replace it if this recurs.
For engineering: the generic UI string hides the real subsystem. The actual signal was in Windows event logs (0x80370102 / Event 41). Surfacing "host hypervisor not present" vs. "VM provisioning timeout" vs. "package error" as distinct states would save days — this thread is many users with the same message but different root causes.
Quick triage:
powershell(Get-CimInstance Win32_ComputerSystem).HypervisorPresent
Get-Service CoworkVMService | Format-List Name, Status, StartType
If HypervisorPresent is False, it's BIOS/firmware, not Cowork — fix that first.

github-actions[bot] · 6 days ago

Closing for now — inactive for too long. Please open a new issue if this is still relevant.