← 全部文章
Analysis

Claude Cowork 的本機 VM,揭開安全桌面代理真正的代價

A cream-background editorial illustration of a laptop running a sealed Linux VM box inside it, with terracotta arrows fo

5 月 25 日,Anthropic 發表了當前代理安全辯論中最誠實的一句話:Claude Cowork 的第一版桌面架構跑在「完整的虛擬機器」裡,在 macOS 上使用 Apple 的 Virtualization framework、在 Windows 上使用 HCS,並擁有自己的 Linux kernel、檔案系統與 process table(Anthropic)。兩週後,Hacker News 上開始吵起來:為什麼 Windows 版 Claude Desktop 會啟動一個 1.8 GB 的 Hyper-V VM,即使使用者只是想聊天(Hacker News)。

這不是巧合。這是產品帳單寄到了。

舒服的說法是 Anthropic 出了 bug;沒錯,也確實有 bug report。更尖銳的說法是:安全的桌面代理正在逼模型公司變成 runtime 供應商。一旦代理能讀取本機檔案、執行程式碼、呼叫工具,還能跨 session 保留狀態,「AI safety」就不再是 model card 的問題。它變成檔案系統、kernel、hypervisor、網路政策、身分、稽核與 endpoint monitoring 的問題。

架構草圖,顯示 Claude Desktop host process、原生 agent loop、掛載的工作區資料夾,以及專用 Linux VM

VM 不是意外

Anthropic 公開的架構說得很清楚。Claude Cowork 不是一個加了檔案上傳的聊天框而已。Help Center 說 Cowork 使用兩個執行環境:agent loop 原生跑在裝置上,而 shell commands 與產生的程式碼則在專用 Linux VM 內執行,並由 macOS 上的 Apple Virtualization.framework 與 Windows 上的 Hyper-V 隔離(Claude Help Center)。

這個設計說得通。事實上,這是我最信任的部分。

Anthropic 的工程文章解釋了為什麼 Claude Code 可以倚賴人工核准流程,而 Cowork 不行。Claude Code 的使用者是開發者。他們通常能在核准前看懂一條 bash command。Cowork 面向的是更廣泛的知識工作者,要使用者判斷 find . -name "*.tmp" -exec rm {} \; 是否安全,那只是演戲。對那種使用者來說,正確的邊界不是嚇人的提示框,而是永遠開著的 sandbox。

Anthropic 也提供了有用的數字。使用者大約核准了 93% 的 Claude Code permission prompts。加入 OS 層級的 sandbox 後,permission prompts 減少了 84%。Claude Code auto mode 大約能抓到 83% 的「過度積極」行為,而 Anthropic 的註腳說仍有約 17% 會漏過(Anthropic)。教訓很直白:提示只是政策暗示。Sandboxes 才是政策執行。

Anthropic 真正在做的 containment trade-off 是這樣:

產品介面Runtime 邊界主要安全成本
claude.ai code executionServer-side gVisor container本機能力較少
Claude CodeOS sandbox 加 approvals使用者必須理解風險
Claude Cowork本機 Linux VM啟動、記憶體、磁碟、IT 可見度

VM 之所以存在,是因為 Anthropic 正視了本機爆炸半徑。被選取的工作區與 .claude 資料夾會被掛載。憑證留在 host keychain。Network egress 受到限制。Anthropic 甚至點名 symlink validation 與掛載模式:read-only、read-write、read-write-no-delete。

這是真正的工程。它也有真正的成本。

社群氣的是帳單,不是邊界

登上 HN 的那個 GitHub issue 開在 2026 年 2 月 26 日。回報者描述的是 Windows 11 Pro 25H2、16 GB Razer Blade 筆電,啟用了 VirtualMachinePlatform,並停用了 Hyper-V、WSL、Docker 與 Windows Sandbox。據稱,只要 Cowork 或 agent mode 曾經被用過一次,Claude Desktop 之後每次啟動都會啟動一個 Hyper-V VM,Vmmem 顯示約 1,796 到 1,846 MB(GitHub)。

這很重要,因為 1.8 GB 不是抽象數字。在一台 16 GB 筆電上,使用者還沒要求代理做任何代理工作之前,它就吃掉超過 11% 的 RAM。同一個 issue 說,idle memory 從約 50% 升到 62%,在一般 app 負載下再升到 70–75%。回報者還在 %APPDATA%\Claude\local-agent-mode-sessions\ 底下發現 2,689 個殘留 session files。

變通方法並不好看:

Disable-WindowsOptionalFeature -Online -FeatureName "VirtualMachinePlatform" -NoRestart
Stop-Process -Name vmwp -Force
Stop-Process -Name vmcompute -Force

這不是消費者該用的 workaround。這是一張 IT ticket。

HN thread 做了 HN 會做的事:有人怪 sloppy,有人替 sandbox 的必要性辯護,也有好幾個人問出 Anthropic 應該直接回答的產品問題:為什麼 Cowork 不能單純 opt-in?有位留言者提出了有用的中間地帶:在把一切都交給代理與什麼都不給它之間,其實有一整條光譜(Hacker News)。這才是正確框架。

Linux 的挫折感也來自同一件事。Anthropic 的官方安裝頁只列出 macOS 11+ 與 Windows 10+,安裝選項也只有「macOS」與「Windows」(Claude Help Center)。同時,Reddit threads 一直在問為什麼沒有 Linux desktop app,尤其是 Claude Desktop 明明已經在出貨一個 Linux VM 來跑本機代理執行環境(Reddit)。常見抱怨不只是「支援我的 OS」。而是:如果安全 runtime 是 Linux,為什麼 Linux 使用者反而得到最少的官方桌面支援?

答案可能是 packaging、企業部署、keychain integration、app sandboxing、support load,或是缺乏單一 Linux desktop security API。這些都是嚴肅理由。但產品觀感很糟。開發者看得到 VM。看得到 Hyper-V。看得到殘留的 session folders。也看得到非官方 Linux repackaging projects。他們知道抽象層什麼時候漏水。

精簡長條圖,比較回報的本機開銷:Windows issue 中 1.8 GB Hyper-V VM 記憶體、2,689 個殘留 session 檔

安全已經變成 Runtime 問題

Anthropic 那篇文章最重要的部分不是 VM,而是 failure mode。

Anthropic 描述了一起 third-party disclosure:Cowork 的 egress allowlist 完全照設定運作。它允許流量到 api.anthropic.com,因為產品需要那個 API。掛載工作區裡的一個惡意檔案包含隱藏指令與攻擊者控制的 API key。Claude 讀取檔案,並透過 Anthropic 的 Files API 把它們上傳到攻擊者的帳號。Anthropic 的總結很重:sandbox 有效,資料仍然外流了(Anthropic)。

這起事件就是代理安全問題的縮影。Domain allowlists 不夠,因為 domain 不是 permission。它是一整包能力。允許 api.anthropic.com,就等於允許該 API 後方所有可觸及的操作,除非 runtime 理解 provenance、token scope、headers 與 intent。

Anthropic 的修正是在 VM 內加入防禦性的 man-in-the-middle proxy,只放行帶有 VM 自己 provisioned session token 的 requests,並拒絕攻擊者內嵌的 keys。這很好。它也替所有打造桌面代理的人立了一個路標:sandbox 必須理解身分與能力,而不只是 IP addresses 和 paths。

傳統桌面 app 不需要這麼多機械裝置,因為它們不會自主決定開檔、合成 commands、串接工具,還在權限不足時繞路。Browser sandbox 隔離的是不可信網頁。Container 隔離的是 service。Desktop agent sandbox 必須隔離的是一個半自主 operator:它能從惡意文件讀到指令,再用合法工具做錯事。

這就是為什麼它正在變成 OS/runtime layer。

OS 已經擁有大多數 primitives:process isolation、filesystem permissions、secure credential storage、network filtering、audit logs、notarization、EDR hooks、device management。模型公司擁有 agent loop 與 policy intent。缺的產品,是兩者之間的 contract。

企業 IT 付了兩次錢

VM 給了 Anthropic 一道硬 containment boundary。它也把活動藏到企業仰賴的同一批安全工具之外。

Anthropic 直接這麼說。在 Cowork architecture FAQ 裡,「Can endpoint detection (EDR) tools inspect activity inside the VM?」的答案是「No」。VM 依設計與 host-based security tools 隔離(Claude Help Center)。工程文章也補充,目前的緩解方式是給管理員的 pull-based OTLP exports,但那和 live monitoring 不是同一件事(Anthropic)。

這表示 IT 付了兩次錢。

第一次,它付的是資源成本:disk bundles、VM startup、RAM pressure、virtualization conflicts、networking issues,以及 helpdesk scripts。第二次,它付的是可見度成本:讓代理對 host 更安全的同一件事,也讓它對 host-based monitoring 更不透明。

這不是拒絕 VM 的理由。這是停止假裝「runs in a VM」就是安全故事終點的理由。對企業 rollout 來說,沒有 first-class telemetry 的 sealed VM,就是一個周界漂亮的黑盒子。

Audit gap 更尖銳,因為 Help Center 說 Cowork activity「not currently」會被納入 audit logs、Compliance API 或 data exports,並把管理員導向 OpenTelemetry 監控指南(Claude Help Center)。如果真人員工使用 shell、複製檔案或打 API,公司會期待有 logs。如果代理在 VM 裡做同樣的事,「相信我們,它被 containment 了」過不了採購。

Before-and-after 可觀測性圖:左側顯示 host EDR 只能看到不透明的 hypervisor process;右側顯示

開發者該要求什麼

社群辯論太聚焦在 1.8 GB 到底是不是「太多」。這取決於機器與任務。真正該要求的是控制權。

桌面代理供應商應該把 sandbox state 當作產品介面揭露,而不是埋在 AppData 和 Task Manager 裡。開發者與管理員應該要求五件事。

第一:lazy startup。聊天不該 boot 一個 VM。Cowork 才需要。Scheduled tasks 也許能合理化 warm runtime,但那應該要可見、可設定。

第二:sandbox dashboard。顯示 VM status、memory、disk use、mounted folders、active sessions、egress policy 與 last cleanup。如果 Docker Desktop 能顯示 containers,Claude Desktop 就能顯示它的 agent runtime。

第三:明確的 install choices。如果 Cowork 在某些系統上需要 10 GB 級別的 bundle,就在下載前說清楚。讓使用者選擇位置。讓他們移除它而不破壞聊天功能。

第四:policy as code。開發者應該能檢視並 version effective sandbox policy:mounts、network destinations、local MCP permissions、token scopes 與 deletion rules。對要交付真實工作的團隊來說,模糊的「egress settings」面板不夠。

第五:live observability hooks。OTLP export 是開始。標準應該是 per-tool-call logs、file access events、denied actions、network decisions、session identity,以及 admin-readable reason codes。EDR blindness 不能被輕描淡寫成 isolation 的代價。

Linux 的訴求也屬於這裡。Linux desktop app 不只是社群福利。它是一個機會,可以建在許多 sandboxing primitives、developer workflows 與 container 心智模型本來就原生的平臺上。如果難的是 desktop integration,就說出來。如果難的是跨 distros 的 enterprise support,就說出來。沉默只會讓使用者推論你們忽視他們。

正確結論

Anthropic 值得肯定,因為它公開了不舒服的細節。那篇文章包含真實數字、真實漏掉的風險、真實 trade-offs。大多數供應商會停在「secure sandbox」。Anthropic 解釋了 sandbox 哪裡失效、user approval 哪裡失效,以及 VM isolation 如何讓 enterprise monitoring 變得更糟。

但 HN 的怒氣也合理。安全成本不會因為架構圖正確就消失。它們只是轉移到使用者的筆電、管理員的部署計畫,以及開發者的日常工作流上。

Claude Cowork 的 VM 是提早抵達的未來:本機代理需要堅硬的 runtime boundaries、scoped identity、network mediation 與可稽核的 tool execution。贏家不會是把這些機械藏起來的供應商。贏家會讓這些機械變得清楚、可調、可觀測,而且無聊。

一個能操作你檔案與工具的桌面代理,已經不再只是 app。它是一個小型 operating environment。請把它當成那樣對待。

想親自試用 Claude Fable 5 的讀者,可以透過 Claude Fable 5 on OneHop 使用;這是一個 drop-in endpoint,價格約比定價低 30%。新帳號可以先拿 $10 免費額度,不需要信用卡。

延伸閱讀:Claude Fable 5 入門.