Clawk: AI コーディングエージェント向けの使い捨て Linux VM

Clawk は、AI コーディングエージェントにユーザーのホストマシンへの直接アクセスではなく、使い捨ての Linux 仮想マシン (VM) を提供するローカル環境マネージャです。エージェントを独自のカーネルと制限されたネットワーク許可リストを持つ別個の VM に隔離することで、Clawk は開発者が --dangerously-skip-permissions のようなフラグを使用してエージェントを完全に自律的に実行できるようにし、ホストのファイルシステム、キーリング、ネットワークセキュリティを危険にさらすことはありません。

AI エージェントに仮想マシンを使用する理由

Clawk は、プロセスレベルのサンドボックスやコンテナではなくフル VM を使用することで、より強固なセキュリティ境界と、より従来型の Linux 環境を確保します。

  • カーネル分離: ゲストは独自の Linux カーネルを実行するため、ホストのファイルシステムは決してマウントされず、カーネルの脆弱性や誤設定された deny ルールを通じてアクセスされることはありません。
  • ゲスト内での root アクセス: エージェントはシステムパッケージをインストールしたり、/etc を編集したり、特権ポートにバインドしたりでき、ホストマシンに影響を与えません。
  • 従来のツールチェーン: 実際の Linux マシンであるため、ツールはドキュメント通りに動作し、制限されたプロセスサンドボックスでよく見られるシステムコールフィルタの予期せぬ挙動がありません。
  • 使い捨てライフサイクル: 侵害されたり破損したりした VM は clawk destroy && clawk で即座に置き換えることができ、プロジェクトリポジトリとエージェントの会話履歴はホスト上で安全に保たれます。
  • ネストされた仮想化: 対応ハードウェア上で KVM が有効なゲストカーネルを使用すれば、開発者はサンドボックス内で Docker や Kubernetes(例: Kind)を実行できます。

コア機能とワークフロー

Clawk は「ワンコマンド」セットアップを目指して設計されており、基本的なユースケースで Dockerfile や複雑な設定ファイルが不要です。

クイックスタートとライフサイクル

開発者は clawk を実行するだけで現在のディレクトリ用のサンドボックスを起動できます。一般的なライフサイクルコマンドは次のとおりです:

  • clawk run shell: ユーザーをアクティブなサンドボックス内のシェルにドロップします。
  • clawk down: リポジトリとエージェントの状態を保持したまま VM を停止します。
  • clawk attach: AI エージェント(例: Claude Code)を再起動し、セッションに再接続します。
  • clawk destroy: VM ディスクを完全に削除します。
  • clawk snapshot: VM をハイバネートし、RAM とディスクの状態を保存して、バックグラウンドプロセスのほぼ瞬時の再開を可能にします。

ネットワーキングとセキュリティ

Clawk は、ゲスト VM の下位ユーザースペースで実施される「デフォルトで拒否」アウトバウンドネットワークポリシーを実装しており、ゲスト内の root ユーザーでさえフィルタを回避できません。

  • 許可リスト: 一般的なレジストリ(npm、PyPI、GitHub、Anthropic)は事前に許可されています。ユーザーは clawk network allow で特定のドメインを追加できます。
  • トラフィックログ: clawk network denials は、フィルタによりブロックされたエージェントがアクセスしようとしたすべてのホスト名のログを提供します。
  • シークレット管理: VM 内にプライベートキーを置かないように、Clawk はホストの ssh-agent を転送し、キーがホストマシンから離れることなくエージェントが git push 操作を実行できるようにします。

clawk.mod による設定

複雑なプロジェクトでは、clawk.mod ファイルを使用して宣言的な環境定義が可能です。CPU/メモリ制限、ルートファイルシステム用の特定 OCI イメージ、環境変数、カスタムエージェント指示などを含められます。

技術アーキテクチャ

Clawk はホストの Docker デーモンに依存せず、OCI イメージを取得して直接 ext4 ディスクにフラット化します。macOS では Apple の Virtualization.framework を活用し、Linux では Firecracker(現在は実験的)を使用します。

データフローは以下のように構成されています:

User CLI -> Per-sandbox Daemon -> gvproxy (Userspace TCP/IP stack for filtering) -> vsock bridge (Control path to guest) -> VM (Guest Kernel + OCI rootfs)

他のサンドボックス手法との比較

手法 ホストのセキュリティ ツール互換性 セットアップ負荷
コンテナ カーネル共有; システムコールによる脱出リスク Docker/Podman が必要
プロセスサンドボックス ポリシーベース; 誤設定リスク
Clawk (VM) ハイパーバイザー境界; 別カーネル 非常に高 低 (Docker デーモン不要)
クラウドサンドボックス 高 (レイテンシ、課金、データ送出)

コミュニティの視点と代替案

Clawk に関する議論は、エージェント固有のサンドボックス化というトレンドの高まりを示しています。シンプルな別 OS ユーザーや Firejailbubblewrap といったツールで十分な隔離が得られると提案するユーザーもいれば、システムレベルの依存関係をインストールしたりバックグラウンドサービスを実行したりするエージェントにはハイパーバイザー境界が必要だと主張するユーザーもいます。

他に挙げられた代替案は次のとおりです:

  • yoloAI: 複数のサンドボックバックエンド(gVisor、Kata、Firecracker)をサポートする類似の FOSS プロジェクトです。
  • katsuobushi: microvm.nix を使用した Nix-flake ベースのサンドボックスです。
  • flar: エージェント向けの軽量名前空間ベースラッパーです。
  • Agentjail: OS ネイティブのサンドボックス(macOS の sbpl)と Open Policy Agent (OPA) のガードレールを使用します。

SUMMARY: Clawk は、AI コーディングエージェントがコマンドを実行したりパッケージをインストールしたりできる、ネットワークが制限された分離された Linux 仮想マシンを提供し、ホストマシンのセキュリティを危険にさらすことはありません。

TITLE: Clawk: AI コーディングエージェント向けの使い捨て Linux VM

Sources

関連

  • プロジェクト
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch