Claude DesktopのCoworkモード、実は仮想マシンだった

Claude DesktopのCoworkモード、実は仮想マシンだった AI

Claude DesktopのCoworkモードは、AIがファイル操作やコード実行を行える強力な機能です。
しかし、その内部ではどのような仕組みが動いているのでしょうか。

本記事では、Redditで公開されたリバースエンジニアリングの分析結果をもとに、Coworkモードの内部アーキテクチャを解説します。

分析の背景

この分析を行ったのは、claude-desktop-debianプロジェクトのメンテナーであるaaddrick氏です。

LinuxへのCoworkサポート追加に向けて、minified JavaScriptをClaudeに解析させました。
そこからアーキテクチャを逆解析したとのことです。

興味深い発見がありました。
CoworkモードはAppleのVirtualization Frameworkを使い、軽量Linux VMを起動しているのです。

Coworkセッション開始時の流れ

Coworkセッションを開始すると、いくつかのプロセスが順番に実行されます。

最初に、約2GBのLinux rootfsがダウンロードされます。
すでにキャッシュが存在する場合は、そこから「プロモート」されます。

次に、VZVirtualMachineが8GB RAMを割り当てます。
そしてVMを起動します。

VM起動後、installSdk()というRPCコールが実行されます。
これにより、Claude Code CLIがVM内部にコピーされます。
ここで言う「SDK」とは、npm install -g @anthropic-ai/claude-codeでインストールできるCLIバイナリのことです。

ユーザーが指定したフォルダは、VirtioFSを通じてVM内にマウントされます。
すべての処理は、bubblewrapサンドボックスとseccompフィルターの中で実行されます。

多層構造のセキュリティモデル

Coworkモードのセキュリティは、複数のレイヤーで構成されています。

最も外側にあるのがハイパーバイザーによる分離です。
VMとホストOSは完全に分離されており、これが第一の防御線となります。

その内側では、名前空間によるサンドボックスが機能しています。
bubblewrapを使用し、プロセスの可視範囲を制限しているわけです。

さらに内側では、seccompフィルターがシステムコールレベルでの制限を行います。
許可されていないシステムコールは実行できません。

パス検証も重要な役割を果たします。
たとえClaudeがSSHキーを読み取ろうとしても、そもそもそのパスはVMにマウントされていません。
つまり、物理的にアクセス不可能なのです。

ネットワーク面では、OAuth MITMプロキシとエグレス許可リストが導入されています。
これにより、外部への通信が厳密に制御されます。

VM内部のアーキテクチャ

VM内部の動作についても詳細が明らかになりました。

Go言語で書かれたsdk-daemonがClaude Code CLIを起動します。
そして、vsock(仮想ソケット)を通じてElectronアプリと通信します。

Claude Code CLI自体は、おそらく内部でAgent SDKを使用しているでしょう。
API通信やエージェントループの処理に活用していると考えられます。

ただし、VM基盤、サンドボックス機構、IPCレイヤーはすべてカスタム実装です。
公開されているSDKの一部ではありません。

分析では、いくつかの内部コードネームも発見されました。
yukonSilver、chillingSloth、midnightOwlといった名前が使われているようです。

Linux実装の可能性

興味深い発見がもう一つあります。

Anthropicがx64アーキテクチャ向けのVMイメージもホストしているという点です。
ARM向けだけではありません。

この事実は重要な示唆を与えます。
完全なVM分離を備えたLinux向けCowork実装が、技術的には実現可能だということです。

設定による機能の無効化

macOSでは、設定ファイルを編集することでCowork機能を無効化できます。

設定ファイルのパスは ~/Library/Application Support/Claude/claude_desktop_config.json です。
以下のように記述します。

{
  "preferences": {
    "secureVmFeaturesEnabled": false
  }
}

この設定を行った後にCoworkへ切り替えようとすると、「Feature disabled」と表示されます。
実際のユーザーによって、この動作が確認されました。

まとめ

Claude DesktopのCoworkモードは、単純にAIがファイルにアクセスしているわけではありません。

軽量Linux VMを起動し、多層構造のセキュリティモデルの中でClaude Code CLIを実行しています。
かなり凝ったアーキテクチャと言えるでしょう。

セキュリティ面では、複数の防御層がユーザーのシステムを保護しています。
ハイパーバイザー分離、名前空間サンドボックス、syscallフィルタリング、パス検証、ネットワーク制限。
これらが組み合わさっています。

特に注目すべきは、マウントされていないパスには物理的にアクセスできないという設計です。
セキュリティの観点から、非常に堅牢な仕組みと言えます。

今後、Linux向けの完全なCowork実装が登場するかどうか。
注目していきたいところです。

タイトルとURLをコピーしました