- Claude Code for webには/dev/kvmがなくsmolvmが起動できない
- GitHub Actions ubuntuランナーが/dev/kvmを公開しておりテスト成功
- 目標はRAM・CPU制限、ネット無し、特定ファイルのみアクセス可能な実行環境
検証の目的
Simon Willison氏は、AIアシスタントのClaude Fable 5に、smolvmを未検証コードの実行環境として評価するよう依頼した。対象となるコードは、PythonとJavaScriptのユーザー提供タスクで、データ変換などの処理を想定している。要件は、RAMとCPU時間を制限し、無限ループなどの暴走を防ぐこと、ネットワークアクセスを遮断すること、そしてファイルシステムへのアクセスを指定ファイルに限定することだ。
smolvmは、このような用途に特化した高速なサンドボックスとして紹介されている。実際にsmolvmを操作するコマンドとして「smolvm machine run」が使われており、仮想マシンを起動してコードを実行する仕組みとみられる。
環境の壁と回避策
Claude Code for webの実行環境は、FirecrackerをゲストOSとするLinux 6.18.5-fc-v20で、4vCPUと15GBのRAMを備えていた。しかし、/dev/kvmが存在せず、CPUにもvmx/svmフラグがなかったため、入れ子型仮想化が不可能だった。このため、smolvm machine runは「kvm not available」というエラーで失敗したと記録されている。
Willison氏は、この制約に対してAIがGitHub Actionsのubuntuランナーを代替環境として選んだことに注目している。GitHub Actionsのランナーには/dev/kvmが公開されているため、一時的なワークフローをブランチに追加し、そこで実際のテストを実行した。最後にワークフローを削除してクリーンな状態に戻すという手順だった。
smolvmの位置づけ
smolvmは、未検証コードを隔離して実行するための選択肢の一つとして評価されている。従来のコンテナやサンドボックスと異なり、軽量な仮想マシンを起動して、リソース消費をハードに制限できる点が特徴とみられる。この記事では、RAMとCPU時間の制限によって「while true」のような無限ループから保護できること、ネットワークアクセスを遮断できること、ファイルシステムへのアクセスを指定ファイルに限定できることが挙げられている。
検証はあくまで実行可能性の確認に焦点が当てられており、具体的なパフォーマンス数値や制限の強度は示されていない。GitHub Actions上でテストが通ったという事実が、CI環境での利用可能性を示す一つの証拠になる。
残る課題
現時点では、smolvmが実際にどの程度のオーバーヘッドで動作するのか、またリソース制限がどのように実装されているのかは公開情報だけでは判断できない。記事では、テストの詳細や結果のログも提示されていないため、実運用での安全性を確認するには追加の情報が必要だ。
また、Claude Code for webのようにKVMを利用できない環境では、smolvmは直接動作しない。GitHub ActionsのようなKVM付き環境を用意するか、別の仮想化技術を検討する必要がある。
| 項目 | Claude Code for web | GitHub Actions ubuntuランナー |
|---|---|---|
| KVMの有無 | なし | あり(/dev/kvm) |
| smolvm実行結果 | 失敗(kvm not available) | テストを実行 |
This Claude Code container: Linux 6.18.5-fc-v20 (itself a Firecracker guest), 4 vCPU, 15GB RAM. No /dev/kvm, no vmx/svm CPU flags → no nested virt. smolvm machine run fails as expected: "kvm not available".
このClaude Codeコンテナは、Linux 6.18.5-fc-v20(それ自体がFirecrackerゲスト)で、4vCPU、15GB RAMを搭載している。/dev/kvmがなく、vmx/svm CPUフラグもないため、入れ子型仮想化はできない。smolvm machine runは想定どおり「kvm not available」で失敗する。
今後の見通し
今回の検証では、smolvmがGitHub Actions上で動くことまで確認できたが、実運用に使うには、リソース制限の実効性や起動速度、セキュリティ監査などの情報が不足している。今後、smolvmのドキュメントや実際のベンチマーク結果が公開されれば、既存のサンドボックスと比較して採用を判断できるようになるだろう。また、KVMを利用できない環境での代替手段も検討課題だ。
日本の開発者・IT企業にとっての意味
日本のIT企業にとって、ユーザーが投稿したコードやスクリプトをサーバー上で実行する機会は多い。データ変換や簡単な処理をユーザーに委ねる場合、悪意のあるコードや事故でシステム全体が影響を受けないよう、強力な隔離が必要になる。smolvmのような軽量仮想マシンは、コンテナより厳密な分離を求める場面で有用になる可能性がある。今回の検証で、GitHub ActionsのCI環境で利用できることが示されたため、既存のCIパイプラインに組み込みやすいと言える。一方で、KVMが利用できない環境では動かないため、開発環境やオンプレミスで使う場合は導入前に仮想化支援機能を確認する必要がある。AIエージェントがこのような制約を自律的に回避した事例は、開発プロセスにおけるAI活用を考える上でも参考になる。
気になる点
- なぜClaude Code for webの環境ではsmolvmが動かなかったのか?
- Claude Code for webのコンテナには/dev/kvmが存在せず、CPUにもvmx/svmフラグがなかったため、入れ子型仮想化ができなかった。smolvmはKVMを利用して仮想マシンを起動するため、「kvm not available」というエラーで失敗した。
- GitHub Actionsではどのようにテストを実行したのか?
- 一時的なワークフローを作成し、GitHub Actionsのubuntuランナー上でsmolvmをインストールして直接テストを実行した。このランナーには/dev/kvmが公開されているため、KVMを使った仮想マシン起動が可能だった。テスト後はワークフローを削除してクリーンな状態に戻した。
- smolvmのリソース制限はどのように設定するのか?
- 記事では具体的な設定方法やパラメータは説明されていない。RAMとCPU時間の制限によって無限ループから保護できると述べられているが、実際の設定手順は公開されたドキュメントを確認する必要がある。
用語解説
- smolvm
- 未検証コードを実行するための高速なサンドボックス。KVMを使った軽量仮想マシンを提供する。
- KVM
- Linuxで仮想マシンを動かすためのハイパーバイザー。/dev/kvmを通じて利用する。
- Firecracker
- AWSが開発した軽量仮想マシンモニター。マイクロVMを高速に起動できる。
- Claude Code for web
- ブラウザ上で動作するClaudeのコーディングエージェント環境。
- GitHub Actions
- GitHubのCI/CDサービス。一時的な仮想マシン上でビルドやテストを実行できる。
出典
smolmachines / smolvm as a sandbox for untrusted Python & JavaScript
https://simonwillison.net/2026/Aug/19/smolmachines-untrusted-sandbox
AI導入も顧問も、お任せください
何から手をつけるか、どこまでAIに任せるか。自社の業務に合わせて整理し、導入から運用まで伴走します。相談だけでも構いません。
AI導入について相談する