MXCが必要とされる背景とAIエージェント実行時に生じる権限リスク
目次
MXCが必要とされる背景とAIエージェント実行時に生じる権限リスク
Microsoft Execution Containers(MXC)を理解する前提として、まずAIエージェントがもたらす新しいリスクの形を押さえておく必要があります。ここでは、なぜ実行時の隔離基盤が求められるのかを順に整理します。
AIエージェントがファイル操作やシェル実行で得る過剰な権限の問題
近年のAIエージェントは、単に質問へ答えるだけの存在ではなくなりました。ファイルの読み書きやシェルの実行、依存パッケージの導入、リポジトリの編集といった操作を、自律的に連鎖させながら進めます。こうした能力は生産性を大きく高める一方で、エージェントがログイン中のユーザーと同じ権限をそのまま引き継いでしまう点に深刻なリスクが潜んでいるのです。たとえばコード生成エージェントが誤った指示や不正なプロンプトに反応した場合、本来触れてはならない機密ファイルや外部ネットワークへ到達する恐れがあります。問題の本質は、エージェントの挙動が実行時に動的へ生成され、事前の静的な検査だけでは予測しきれない点にあります。従来の感覚では、信頼できるアプリかどうかを起動前に判断すれば十分でした。しかしモデルがプロンプトごとに新しいコードを生み出す状況では、その前提は成り立ちません。Microsoft Execution Containersは、まさにこの過剰権限の問題を出発点として設計されています。
従来のアプリ許可制御がランタイム生成コードに対応できない限界
これまでのエンドポイント制御は、アプリの起動可否やバイナリの信頼性、マルウェア定義への一致といった観点で判断してきました。つまり「何を動かしてよいか」を入口で見極める仕組みが中心だったといえます。ところがエージェントは、起動時点では無害な実行ファイルでありながら、プロンプトに応じて中身の挙動を実行時に変化させます。同じツールが、ある瞬間には正当な処理を行い、別の瞬間には想定外の操作へ踏み込む可能性があるわけです。この性質は、起動前の検査を前提とした従来モデルと根本的に相性が良くありません。MXCが重視するのは、入口での許可ではなく、実行中の境界そのものを継続的に強制するという考え方です。つまり、信頼できるアプリを選ぶ発想から、信頼できる実行範囲を定める発想への転換が求められているのです。アプリ単位の信頼判断だけでは、動的に生成されるコードの振る舞いを抑え込めないという限界が、新しい隔離レイヤーを必要とした背景になっています。
実行中エージェントへユーザー全権限を与える典型的な失敗
運用現場で起こりがちな失敗は、利便性を優先してエージェントへユーザーセッションの全権限をそのまま付与してしまう構成です。動かすことを急ぐあまり、次のような状態を放置すると、被害が一気に広がる温床となります。
- 対話デスクトップやクリップボードへ自由に触れられるため、画面情報や入力内容が意図せず漏れる経路が残る
- 読み取り専用にすべき設定ファイルや認証情報まで書き換え可能となり、改変や破壊のリスクが高まる
- 外部ネットワークへの送信が無制限となり、機密データが外部へ持ち出される経路を塞げない
これらは個別に見れば小さな油断ですが、自律的に操作を連鎖させるエージェントでは連動して大きな事故へ発展します。MXCはこうした「全権限付与」を避け、必要な範囲だけを宣言的に許可する発想で組み立てられているのが特徴です。権限を絞ることが、生産性を損なわずに信頼性を保つための前提条件になります。最小権限を出発点に据える姿勢こそが、安全な自動化の土台になるといえるでしょう。
Build 2026で示されたWindows標準の隔離基盤という方針
MicrosoftはBuild 2026において、AIエージェントの安全な実行を支える基盤としてMXCを公開しました。発表の中心にあったのは、コンテインメント(封じ込め)をアプリやモデルの外側、すなわちOSそのものへ組み込むという方針です。エージェントが読み込むファイルや到達できるネットワークを、ポリシーとして宣言し、その境界をWindowsが実行時に強制するという構図になっています。開発者は低レベルの隔離実装を細かく管理する必要がなく、抽象化されたレイヤー越しに制御できます。これは「速く作る」ことと「安全に運用する」ことを両立させるための設計判断だといえるでしょう。エンタープライズが自律的なツールを大量に展開する場面では、可観測性とガバナンスが欠かせません。Windowsを信頼できるエージェント実行基盤に育てるという長期的な狙いが、この方針の根底にあります。Build 2026の発表は、その狙いを具体的な仕組みとして示した節目だといえます。
コンテインメント・アイデンティティ・管理性を支える3つの基盤要素
MXCの設計思想は、単体の機能ではなくWindowsへ組み込まれた複数の基盤要素の組み合わせとして理解すると把握しやすくなります。Microsoftが基礎的なプリミティブとして挙げるのが、次の3つの柱です。
- コンテインメント:エージェントが触れられる範囲を境界として定め、非決定的な挙動が制御不能なリスクへ転じないよう抑える
- アイデンティティ:エージェントの活動へ固有のローカルIDやEntra連携の識別子を割り当て、人間の操作と明確に区別する
- 管理性:EntraやIntuneを通じてポリシーを集中管理し、組織として一貫したガバナンスと監査を効かせる
これら3要素は互いに補完し合う関係にあります。境界を引くだけでなく、誰が何をしたかを追跡でき、組織全体で統制できて初めて、エージェントを安心して本番投入できる土台が整うわけです。MXCはこの土台の上で、開発者向けの制御面として位置づけられています。三位一体で機能する点が、この基盤の要だといえるでしょう。
Microsoft Execution Containersの定義とSDKとしての提供形態
背景を押さえたうえで、MXCそのものが何であり、どのような形で提供されるのかを明確にします。製品名の印象だけで判断すると実態を取り違えやすいため、定義を丁寧に確認します。
モデル出力など未信頼コードを隔離実行するサンドボックスの役割
MXCは、モデルの出力やプラグイン、ツールといった「信頼しきれないコード」を隔離環境で実行するためのサンドボックスシステムです。対象はWindowsに限らず、LinuxとmacOSも含む構成になっています。中心となる役割は、未信頼コードがホスト全体へ自由に手を伸ばすことを防ぎ、あらかじめ定めた範囲の中だけで動かす点にあるのです。エージェントが生成したコードを実行する際、その処理を専用の境界へ閉じ込めれば、万一不正な動作が紛れ込んでも影響をサンドボックス内に留められます。重要なのは、実行を禁止するのではなく、制御された形で許可するという姿勢です。エージェントは依頼された作業を進められる一方、境界の外側にあるものは見ることも触れることもできません。いわば一方向ミラーのような環境を提供し、有用性と安全性を同時に成り立たせることがMXCの基本的な役割になっています。つまりMXCは、止めるための仕組みではなく、安全に動かし続けるための仕組みだといえます。
購入する製品ではなく開発者向けSDKとして配布される提供形態
MXCを語るうえで誤解されやすいのが、その提供形態です。これは店頭やライセンスで購入するパッケージ製品ではありません。開発者やIT管理者が自分のアプリやエージェントへ組み込むためのSDK、すなわちエンジニアリングのための部品として配布されています。利用者はポリシーを記述し、どのファイルやディレクトリ、ネットワーク資源へアクセスを許すかを定義するわけです。するとMXCがその宣言に基づいて隔離された実行環境を生成し、エージェントが何を試みても境界を維持し続けます。製品ではなくプリミティブであるという点は、適用範囲の広さにつながります。コーディング支援からエンタープライズのデータ処理まで、用途に応じて同じ仕組みを組み込めるからです。Build 2026の時点では早期プレビューという位置づけで公開され、開発者からの早期統合とフィードバックを募る段階にあります。買って導入する製品ではなく、自分の手で組み込む部品だと捉えると、その性格がつかみやすくなります。
WindowsとWSLを対象としたポリシー駆動の実行レイヤー
Microsoftの公式な説明では、MXCは「WindowsおよびWSL向けの、ポリシー駆動かつクロスプラットフォームな実行レイヤー」と位置づけられています。開発者がアプリやエージェントの中で「何を制約するか」を定義すると、Windowsがその制約を実行時に一貫して適用します。鍵となるのは「実行時に」という部分です。起動前の一度きりの審査ではなく、処理が走っている最中に境界を保ち続けるところに価値があります。WSLを対象に含めることで、Linux系のツールチェーンやMLフレームワークを使うエージェントにも、OSが強制する境界を広げられるようになるのです。MXCは複数の隔離プリミティブをまたぐ抽象化レイヤーとして機能するため、開発者は個々の低レベルな隔離方式を直接扱わずに済みます。ポリシーという共通言語を通じて、多様な実行環境へ一貫した安全性を持ち込める点が、このレイヤーの中核的な性格だといえるでしょう。
GitHub公開のmicrosoft/mxcとMITライセンスという開発体制
MXCのコードは、リポジトリ microsoft/mxc としてGitHub上に公開されています。ライセンスはMITが採用されており、開発者が中身を確認しながら統合を進められる体制が整えられているのです。公開の目的は、早期段階から実際の開発者に触れてもらい、統合の知見やフィードバックを集めることにあります。リポジトリにはネイティブのコンテナラッパーに加えて、TypeScript製のSDKが同梱されています。注意したいのは、これがあくまで早期プレビューだという点です。基盤となるサンドボックスは開発途上にあり、今後仕様が変化する可能性があると明記されています。さらに現時点では、SDKが生成するポリシーが過度に緩いケースが存在することも公式に認められています。そのため、現段階のMXCプロファイルをそのままセキュリティ境界として信頼するのは適切ではありません。セキュリティ研究者との連携を歓迎する姿勢も示されており、成熟へ向けた途上にある段階だと理解しておくと安全です。
Rust中心の実装とTypeScript SDKという二層構成の特徴
MXCの実装は、性能と安全性を重視したRust製のネイティブ部分と、開発者が扱いやすいTypeScript製のSDKという二層で構成されています。ネイティブ側がコンテナの実体を担い、SDK側が設定や起動を仲介する立場です。リポジトリの言語構成比を見ると、その重心がはっきりと表れています。
| 言語 | 構成比 | 主な担当領域 |
|---|---|---|
| Rust | 約71.0% | ネイティブのコンテナラッパーや共有ライブラリ |
| TypeScript | 約16.0% | @microsoft/mxc-sdkとして配布される開発者向けAPI |
| PowerShell | 約10.0% | ビルドやホスト準備などの補助スクリプト |
この比率は、メモリ安全性に配慮したRustへ実装の中心を置きつつ、利用面ではTypeScriptで間口を広げるという設計判断を示しています。開発者は通常、低レベルなRust部分を意識せず、SDKを経由して隔離環境を扱えます。二層構成は、堅牢さと使いやすさを両立させるための合理的な選択だといえるでしょう。
ポリシー駆動とランタイム強制によるMXCコンテインメントの仕組み
MXCの中核は、ポリシーで境界を宣言し、それをOSが実行時に強制するという動作モデルにあります。ここでは仕組みを構成要素ごとに分解し、どのように封じ込めが成立するのかを見ていきます。
許可するファイルやネットワーク範囲をポリシーで宣言する動作
MXCの動作は、まず開発者やIT管理者がポリシーを記述するところから始まります。ポリシーには、エージェントがアクセスしてよいファイルやディレクトリ、到達を許すネットワーク資源を具体的に書き込むものです。たとえば特定のファイルを読み取り専用に指定したり、ブラウザや画面キャプチャへのアクセスを制限したり、位置情報を見せるかどうかを切り替えたりできます。MXCはこの宣言を受け取ると、その範囲を反映した隔離実行環境を生成するのです。エージェントが何を試みても、ポリシーで許されていない操作は環境側が拒みます。たとえ保護対象のファイルへエージェントが手を出そうとしても、ポリシーで許可していない操作は環境側が拒むという設計です。重要なのは、許可を与えるという発想そのものです。あらかじめ許した範囲だけが通り、それ以外は既定で閉じられているため、想定外の挙動が境界の外へ漏れにくくなります。許可を起点に設計することが、想定外を防ぐ最初の一歩になります。
OS自身が実行時に境界を強制し続けるランタイム制御という発想
MXCの最大の特徴は、定義した制約をWindowsが実行時にOSのレベルで強制し続ける点にあります。ポリシーは単なる設定ファイルにとどまらず、処理が動いている最中に効力を持ち続けます。エージェントが境界の外へ踏み出そうとした瞬間に、その操作が阻まれる仕組みです。この「実行時の強制」は、起動前の審査を中心とした従来の制御と決定的に異なります。なぜなら、エージェントの挙動は実行中に動的へ生成されるため、事前の検査では捉えきれないからです。境界をOS側へ持たせることで、アプリやモデルがどう振る舞おうと、許された範囲を超えられないという保証へ近づきます。開発者はこの強制をMXC越しに利用でき、低レベルの隔離プリミティブを直接操作する必要はありません。起動時の判断に頼らず、動いている間ずっと境界が効き続ける点が、エージェント時代の制御として決定的に重要です。制御の主体をOSへ移すことが、非決定的なエージェントを安全に扱うための要となっています。
同一ポリシーが複数の隔離方式へ対応するコンポーザブル構造
MXCの背後には、Windowsが隔離と封じ込めを実際に適用する「コンポーザブルなサンドボックス」という考え方があります。MXCは開発者にとっての制御面であり、同じポリシーモデルとSDKが、ワークロードや封じ込め要件に応じて異なる隔離構造へ対応します。たとえばコーディングエージェントとエンタープライズのデータ処理エージェントでは、必要なガードレールが同じとは限りません。それでも、両者に一貫した信頼の物語を提供できる点が重要です。開発者は一度ポリシーを記述すれば、その意図を保ったまま、状況に合った隔離方式へ写像できます。この構造は、軽量なローカル封じ込めから強固なハードウェア境界まで、ひとつのSDKとポリシーモデルで橋渡しすることを狙いとするのです。隔離の強さを後から調整しても、ポリシーの書き換えを最小限に抑えられるという柔軟さが、コンポーザブル設計の利点になります。用途が変わっても作り直しの手間を抑えられる点が、現場での扱いやすさにつながるでしょう。
ファイルシステム・ネットワーク・UIの3領域に及ぶポリシー範囲
MXCのポリシーは、大きく3つの領域にわたって制御を行えます。それぞれが対象とする範囲と、現段階での制約を整理すると次のとおりです。
| ポリシー領域 | 制御できる内容 | 現段階での主な制約 |
|---|---|---|
| ファイルシステム | 読み取り専用・読み書き可能のパス一覧を指定 | 拒否パスの指定はWindowsで未対応 |
| ネットワーク | 送信の許可・遮断やホストのフィルタリング、プロキシ対応 | プロキシはmacOS非対応、ホストフィルタはWindows未対応 |
| UI | クリップボード・ディスプレイ・GUIアクセスの制御 | 対応範囲はバックエンドにより差がある |
この3領域を組み合わせることで、エージェントが触れられる世界を多面的に絞り込めます。注意したいのは、領域や機能ごとにプラットフォーム差が残っている点です。早期プレビューゆえに未対応の項目があり、利用前には対象環境での挙動を確認しておくと安心できます。想定した制御が効くかどうかは、対象OSとバックエンドの組み合わせ次第で変わる場合があるのです。
provisionからdeprovisionまでの状態遷移ライフサイクル
長時間動作するセッション型のサンドボックスに対して、MXCは状態を意識したライフサイクルAPIを提供します。単発実行とは別に、環境を準備してから破棄するまでの段階を順に進められる設計です。代表的な流れは次の手順で表されます。
- provision:隔離環境を準備し、ポリシーに基づくサンドボックスを構築する
- start:構築した環境を起動し、処理を受け付けられる状態にする
- exec:境界の内側でコードやコマンドを実行する
- stop:実行を停止し、環境を一時的に止める
- deprovision:環境を破棄し、割り当てた資源を解放する
この多段ライフサイクルにより、ひとつの隔離環境を使い回しながら複数の処理を順に走らせる運用が可能になります。単発実行向けのワンショットAPIと、状態を保持するAPIを使い分ければ、用途に応じた効率と制御の両立を図れるわけです。準備と破棄を明示的に扱える点は、資源管理や監査の観点でも扱いやすさにつながります。
プロセス分離からマイクロVMまでMXC隔離方式の使い分け基準
MXCは単一の隔離手段ではなく、リスクとワークロードに応じて選べる複数の方式を束ねています。ここでは代表的な隔離方式の性格と、どの場面でどれを選ぶべきかの判断材料を整理します。
軽量で高速なプロセス分離が適するコーディングエージェント用途
プロセス分離は、ユーザー環境の内部に軽量で高速な封じ込めを設ける方式です。モデルが生成したコードを、専用のプロセス境界の中で動かし、ポリシーで定めた範囲外のファイルやネットワークドメインへのアクセスを制限します。最大の利点は、開発者の内部ループ、いわゆるコードを書いて試す反復作業を、もたつかせずに保てる点にあるのです。重い隔離を挟むと応答が鈍くなりますが、プロセス分離なら軽快さを維持できます。こうした特性から、最も相性が良いのはコーディングエージェントのような用途です。実際にGitHub Copilot CLIは、動的に生成・実行されるコードができることを絞り込む目的で、MXCのプロセス分離を採用しました。WindowsとGitHubの連携によって生まれたこの成果は、軽量な隔離が現実の開発体験を損なわずにリスクを下げられることを示しています。応答性を重視する場面では、まず検討に値する選択肢です。
デスクトップやクリップボードを分けるセッション分離の判断基準
多数の長時間プロセスにまたがる処理や、自動化のために独自のデスクトップを必要とするワークロードでは、プロセス分離だけでは手狭になることがあります。そうした場面で選ばれるのがセッション分離です。Windowsのセッションは、エージェントの実行を、人間が使う対話デスクトップやクリップボード、UI、入力デバイス、アクティブなセッションから切り離します。これによりUIの偽装や入力の注入、セッションをまたぐデータ漏えいを緩和できます。ユーザー自身の作業と並行して走り続ける持続的なワークフローに向いた方式だといえるでしょう。Windowsのセッションは個別のユーザーアカウントで動くため、隔離が成立します。ローカルIDやEntra連携のクラウド識別子を割り当て、コンテナからの活動をその識別子へ帰属させることで、人間とエージェントを明確に区別できるのです。なお初期リリースでは非対話型のセッションが対象で、対話型の機能は今後の追加が見込まれています。
機微データや外部コードに向くマイクロVMによる強固な隔離境界
最先端の研究では、LLMがサンドボックスからの脱出能力を獲得しつつある可能性が指摘されています。そこで問われるのが、プロセス分離のような低オーバーヘッドの利点を保ちながら、より強い隔離境界を実現できないかという課題です。その答えのひとつがマイクロVMです。マイクロVMは、ハイパーバイザーを介したハードウェア支援の隔離を、軽量なイメージで提供します。フルVMよりも高い集積度を保ちながら、サンドボックス脱出に対する防御の水準を引き上げられる点が特徴です。そのため、機微なデータを扱うエージェントや、信頼できない外部コードを走らせる場面に適しています。ハイパーバイザーという強固な壁を挟むことで、万一内部が侵害されても影響を閉じ込めやすくなります。なおマイクロVMは、Microsoftが示すロードマップ上の封じ込め能力として位置づけられており、リスクの高いワークロードへ向けて段階的に整備が進む見通しです。
WSL経由でLinuxツールチェーンを隔離するLinuxコンテナ
Linux系の開発に重きを置くエージェントには、WSLを経由したLinuxコンテナによる封じ込めが用意されつつあります。これは、Linuxを前提としたエージェントのツールチェーンへ、MXCの封じ込めモデルを広げる方向性です。Linux向けのMLフレームワークやパッケージ群との互換性を保ちながら、OSが強制する境界を効かせられる点に意義があります。AIや機械学習の現場では、Linux上で整備されたライブラリ資産を活用する場面が少なくありません。そうした資産をそのまま使いつつ、エージェントの動作範囲を制御できれば、移行の負担を抑えながら安全性を高められます。実装面では、Linuxの既定バックエンドとしてBubblewrapが、別の選択肢としてLXCが用意されています。Windows一辺倒ではなく、Linux文化のツールにも一貫した封じ込めを届けるという姿勢が、この方式の狙いです。なおLinuxコンテナも、今後拡張が進むロードマップ上の能力として案内されています。
ローカル隔離からクラウドVMまで広がるコンテインメントの範囲
MXCの隔離は、ひとつの端末の中だけにとどまりません。軽量なローカル封じ込めから、ハードウェアに支えられた強固な境界、さらにはクラウド上の仮想マシンまで、連続したスペクトラムとして描かれています。各方式の位置づけを大まかに比べると、次のように整理できます。
| 隔離方式 | 隔離の強さ | オーバーヘッド | 主な適用場面 |
|---|---|---|---|
| プロセス分離 | 軽度 | 小さい | 応答性を重視するコーディングエージェント |
| セッション分離 | 中程度 | 中くらい | デスクトップを伴う持続的な自動化 |
| マイクロVM | 強い | やや大きい | 機微データや未信頼の外部コード |
| クラウドVM(Windows 365 for Agents) | 強い | 大きい | 集中管理されるエージェント群 |
この連続性が示すのは、リスクの高さに応じて隔離の強さを選べるという柔軟さです。しかも、ひとつのSDKとポリシーモデルを通じて切り替えられるため、要件が変わっても作り直しの負担を抑えられます。用途とリスクを見極めて適切な位置を選ぶことが、MXC活用の勘所になります。
MXC SDKのバックエンドとJSON設定スキーマの技術仕様
ここからは、MXCを実際に扱う際に押さえておきたい技術的な仕様へ踏み込みます。バックエンドの種類やスキーマの版、設定の書き方を具体的に確認します。
ProcessContainerやSeatbeltなど9種のバックエンド構成
MXCは、プラットフォームごとに適切な封じ込めバックエンドを備えています。OS標準のプロセスサンドボックスからフルVMまで、複数の実体を統一されたJSONスキーマとSDKの背後へ束ねている点が特徴です。代表的なバックエンドと、それぞれの既定環境を整理すると次のとおりです。
| プラットフォーム | 既定バックエンド | その他のバックエンド |
|---|---|---|
| Windows 11 24H2以降(25H2で検証) | processcontainer | windows_sandbox / wslc / microvm / hyperlight / isolation_session |
| Linux x64 / ARM64 | bubblewrap | lxc / microvm / hyperlight |
| macOS ARM64 / x64 | seatbelt | (追加の選択肢なし) |
これらを合わせると、ProcessContainer、Windows Sandbox、LXC、Bubblewrap、Seatbelt、MicroVM、Hyperlight、IsolationSession、WSLCといった多様な構成が用意されています。開発者は環境に応じた既定バックエンドをそのまま使えるほか、要件次第で別のバックエンドへ切り替えられます。プラットフォームごとに守備範囲が異なるため、対象OSで利用できるバックエンドを確認したうえで設計を進めると確実です。
安定版0.6.0-alphaと開発版0.7.0-devのスキーマ選択
MXCの設定スキーマには複数の版が存在し、用途に応じて選び分けます。新規のコードに推奨されるのは、現行の安定版である 0.6.0-alpha です。これは主要なプラットフォームで安定して使える版として案内されています。ひとつ前の 0.5.0-alpha も安定版として残されていますが、これから書き始めるなら現行版を選ぶのが無難でしょう。一方、実験的なバックエンドや状態を意識したライフサイクルを試したい場合には、開発版の 0.7.0-dev が用意されています。開発版は新しい機能を先取りできる反面、仕様が変わる可能性をはらんでいます。安定性を重視する本番寄りの検証では安定版を選び、最新機能の評価では開発版を使うといった切り分けが現実的です。スキーマの版を明示してから設定を書くことで、想定どおりの挙動を引き出しやすくなります。版の選択は、MXCを扱う最初の意思決定のひとつだと捉えておくとよいでしょう。迷ったときは、まず現行の安定版から始めるのが堅実です。
experimentalフラグが必要な実験的バックエンドの区別
MXCのバックエンドは、安定して使えるものと、実験的な扱いのものに分かれています。安定したワンショット向けのバックエンドは、特別な設定なしに利用できるのです。具体的には、processcontainer、bubblewrap、lxcの3つกがこれに当たります。これらは実験モードを必要とせず、対象プラットフォームの既定として安心して使える位置づけです。一方で、より新しい封じ込め方式は実験的バックエンドとして区別され、明示的な許可が求められます。利用するには、起動オプションへ { experimental: true } を指定するか、CLIで該当のフラグを付けるかたちです。windows_sandbox、wslc、microvm、seatbelt、isolation_session、hyperlightなどがこの区分に含まれます。この区別を理解しておくと、想定したバックエンドが動かない原因を切り分けやすくなります。本番に近い検証では安定版のバックエンドを軸に据え、実験的な方式は意図して有効化するという運用が安全です。
readonlyとreadwriteでファイルアクセスを定義するJSON記述
MXCのポリシーは、JSONで実行パラメータとセキュリティ方針を記述します。ファイルアクセスの制御では、読み取り専用のパス一覧と読み書き可能なパス一覧を分けて指定するのが基本です。SDKを使う場合は、ポリシーを組み立ててから設定オブジェクトへ変換します。たとえば、読み取り専用のパスへ readonlyPaths を、書き込みを許すパスへ readwritePaths を割り当てます。ネットワークについては、外向き通信を許すかどうかを allowOutbound のような項目で制御するかたちです。さらに、処理が長引いた際の打ち切りを定めるタイムアウトも設定できます。こうした項目を組み合わせることで、エージェントが触れられる世界を細かく描けるのです。SDKには、利用可能なツールや一時ファイルのポリシーを取得する補助関数も用意されており、現実的な初期設定を素早く組み立てられます。JSONという宣言的な記述に集約されているため、設定を版管理し、レビューや監査の対象として扱いやすい点も実務上の利点です。
ETWログとデバッグ出力によるサンドボックス実行の診断手段
MXCには、サンドボックスの挙動を確認するための診断手段が備わっています。既定では、ネイティブのバイナリは標準入出力をコンテナへ直結したサイレントモードで動く仕様です。動作の詳細を追いたいときには、冗長な出力を有効にするデバッグモードを使います。具体的には、実行時に --debug を付けることで、より多くの情報を得られるのです。加えてWindowsでは、Event Tracing for Windows、いわゆるETWによるトレースが利用できます。これにより、サンドボックスの内部で何が起きたかを体系的に記録し、問題の切り分けに役立てられるのです。早期プレビューの段階では、想定外の挙動や未対応の機能に遭遇する場面も考えられます。そうした際、デバッグ出力とETWを組み合わせて状況を可視化できることは、原因究明の大きな助けになります。診断のための仕組みがあらかじめ用意されている点は、検証目的でMXCを触る開発者にとって心強い要素だといえるでしょう。
DockerやWindows Sandboxと比較したMXCの位置づけと選定観点
MXCを既存の隔離技術と並べると、その狙いの違いが浮かび上がります。ここではDockerやWindows Sandboxとの対比を通じて、MXCをどう位置づけ、どう選ぶべきかを整理します。
アプリ配布用コンテナとエージェント隔離用MXCの設計目的の違い
同じ「コンテナ」という言葉でも、Dockerに代表されるアプリ配布用コンテナとMXCでは、設計の出発点が異なります。前者は、アプリケーションとその依存関係をまとめて再現性高く配布・実行することに主眼を置く仕組みです。一方MXCは、信頼しきれないコードやエージェントの挙動を、実行時に境界の内側へ閉じ込めることを目的としています。両者の性格を対比すると次のように整理できます。
| 観点 | アプリ配布用コンテナ | MXC |
|---|---|---|
| 主な目的 | アプリと依存関係の再現性ある配布・実行 | 未信頼コードやエージェントの実行時封じ込め |
| 境界の重点 | 環境の一貫性とパッケージング | ポリシーによるアクセス制御とランタイム強制 |
| 制御の主体 | イメージとランタイムの設定 | OSが実行時に強制する宣言的ポリシー |
つまり、Dockerが「どこでも同じように動かす」ための仕組みだとすれば、MXCは「許した範囲でしか動かさせない」ための仕組みだといえます。両者は競合というより、目的が異なる道具です。エージェントの権限を実行時に絞りたいという課題には、MXCの設計目的がより適合します。
Windows Sandboxを一バックエンドとして包含するMXCの抽象化
WindowsにはもともとWindows Sandboxという使い捨ての隔離環境が存在します。興味深いのは、MXCがこのWindows Sandboxを、選択可能なバックエンドのひとつとして取り込んでいる点です。つまりMXCは、特定の隔離技術を置き換えるというより、複数の隔離手段を統一的に扱う抽象化レイヤーとして振る舞います。開発者はポリシーを記述するだけで、その背後でどのバックエンドが使われるかを細かく意識せずに済みます。同じポリシーが、軽量なプロセス分離にも、より重いサンドボックスにも写像されるわけです。この抽象化のおかげで、要件が変わったときにも上位の記述を保ったまま隔離方式を切り替えやすくなります。Windows Sandboxを単体で使う場合と比べ、MXC経由なら他の隔離方式と一貫した形で運用できる点が利点です。個々の技術を直接操作するのではなく、共通の制御面から扱えることが、MXCを選ぶ理由のひとつになります。
オーバーヘッドと隔離強度のバランスで決める隔離方式の選定基準
MXCのもとで隔離方式を選ぶ際の基本軸は、隔離の強さと実行時のオーバーヘッドのバランスです。強い隔離は安全性を高めますが、その分だけ応答性や集積度を犠牲にしがちです。逆に軽量な方式は速い反面、守れる範囲には限界があります。判断のよりどころとなるのは、扱うデータの機微さと、走らせるコードの信頼度です。社内で生成した低リスクなコードを素早く試したいなら、軽量なプロセス分離が向きます。外部由来の未信頼コードや機微データを扱うなら、ハードウェアに支えられたマイクロVMのような強固な境界が望ましいでしょう。デスクトップ操作を伴う持続的な自動化では、セッション分離が選択肢に挙がります。大切なのは、すべてを最強の隔離で固めるのではなく、リスクに見合った水準を選ぶことです。MXCは同じポリシーモデルで方式を切り替えられるため、過剰でも不足でもない地点を探りやすい設計になっています。リスク評価を起点に方式を選ぶ姿勢が、無駄のない隔離設計につながるのです。
Entra・Intune連携で集中管理されるエンタープライズ適用
エンタープライズでMXCを活かす鍵は、Microsoft Agent 365のポリシーベース制御との連携にあります。EntraやIntuneを通じて、MXCの制約を特定のエージェントへ適用できる仕組みが想定されているのです。たとえばIntuneのポリシーで、MXCによる隔離を必須としたうえで、ファイルシステムのルールのようなガードレールを課せます。セッション分離と固有のローカルIDを組み合わせれば、最小権限のアクセスと完全な監査可能性を両立できます。エージェントの活動を識別子へ帰属させられるため、人間の操作と機械の操作を切り分けて記録できる点も実務的です。ライフサイクル全体のガバナンスをクラウド側のEntraやIntuneで管理できることは、多数のエージェントを展開する組織にとって大きな意味を持ちます。可観測性、ガバナンス、セキュリティという三本柱を、Windowsの基盤の上で一体的に効かせられるからです。単なる隔離機能ではなく、組織として統制可能な仕組みである点が、エンタープライズ適用での評価軸になります。
現段階でMXCプロファイルをセキュリティ境界として扱えない制約
MXCを評価するうえで、最も注意すべき点が現段階の位置づけです。公式には、これは早期プレビューであり、基盤となるサンドボックスは開発途上にあると明記されています。さらに、SDKが生成するポリシーが過度に緩くなるケースが存在することも認められています。そのため、現時点のMXCプロファイルをそのまま堅牢なセキュリティ境界として信頼するのは適切ではありません。あくまで早期統合とフィードバックを目的とした段階であり、本番のセキュリティ保証を前提に据えるべきではないのです。Microsoftはセキュリティ研究者との連携を歓迎しており、成熟へ向けた改善を続ける姿勢を示しています。実務で扱う際は、この制約を踏まえ、まずは検証や試験的な統合から始めるのが賢明でしょう。隔離の有無にかかわらず、機微な資産を扱う場面では多層的な防御を併用する慎重さが求められます。期待値を正しく設定し、過信しないことが、現段階のMXCと付き合ううえで欠かせない姿勢になります。
MXC導入に必要な動作環境とSDKを用いたサンドボックス実行手順
ここでは、実際にMXCを試すための前提環境と、SDKを使った基本的な実行の流れを具体的に追います。最初の一歩を踏み出すための実務的な手順を確認します。
Windows 11 24H2以降やNode.js18以上という動作要件
MXCを動かすには、対象プラットフォームごとの要件を満たす必要があります。ビルドや実行に共通する前提として、Rustツールチェーンとnode.js、そしてnpmが求められます。主な要件を整理すると次のとおりです。
| 項目 | 要件 |
|---|---|
| Windows | Windows 11 24H2以降(25H2で検証済み) |
| Rust | 1.93系(rustupが自動選択) |
| Node.js | 18以上 |
| npm | SDKおよびCLIのビルドに必要 |
LinuxやmacOSも対象に含まれ、それぞれ既定のバックエンドに対応するランタイムの導入が前提となります。たとえばLinuxの既定であるBubblewrapにはbwrapが、LXCバックエンドにはLXCのツール群が必要です。安定したワンショット向けのバックエンドは実験モードを要しませんが、新しい方式を試す場合は明示的な有効化が求められます。まずは手元の環境がこれらの要件を満たしているかを確認することが、導入の出発点になります。
npmでの@microsoft/mxc-sdk導入という最初の手順
環境が整ったら、最初に行うのはSDKの導入です。MXCのTypeScript SDKは、npmパッケージとして配布されているのです。プロジェクトのディレクトリで、パッケージマネージャを使って取り込みます。具体的には npm install @microsoft/mxc-sdk を実行するだけです。このコマンドにより、ポリシーの組み立てやサンドボックスの起動に必要なAPI群が手元に入ります。SDKには、一回限りの実行を行うワンショットAPIと、環境を準備してから破棄するまでを扱う状態保持型のAPIの両方が含まれています。導入後は、TypeScriptやJavaScriptのコードから関数を読み込んで利用できるのです。ネイティブのバイナリはSDKへ同梱される形で扱われるため、開発者が低レベルの実体を直接配置する手間は基本的に発生しません。最初の一歩としては、SDKを入れたうえで、対応環境かどうかを判定するところから始めると流れがつかみやすくなります。パッケージの導入そのものは単純ですが、ここがすべての実行の起点になります。
createConfigFromPolicyでポリシーを設定する基本コード
SDKを導入したら、次はポリシーから設定オブジェクトを組み立てます。ここで中心となるのが、ポリシーを設定へ変換する関数です。たとえば createConfigFromPolicy へ、スキーマの版やファイルシステム、ネットワークの方針を渡すのです。ファイルシステムでは読み取り専用のパスと読み書き可能なパスを指定し、ネットワークでは外向き通信を許すかどうかを定めます。さらに、処理が長引いた際に打ち切るためのタイムアウトも併せて設定するわけです。SDKには、利用可能なツールのポリシーや一時ファイルのポリシーを取得する補助関数が用意されており、これらを土台に現実的な初期設定を素早く整えられます。生成した設定オブジェクトには、実行したいコマンドラインを与えるかたちです。たとえば簡単な確認として、サンドボックス内で短いスクリプトを走らせる指定を加えるとよいでしょう。ポリシーという宣言を、実行可能な設定へと落とし込むこの段階が、MXCを使ううえでの中核的な作業になります。記述を版管理しておけば、後からの見直しや監査にも対応しやすくなります。
spawnSandboxFromConfigによる一回限りの実行フロー
設定が整えば、いよいよサンドボックスを起動します。ワンショットの実行では、設定オブジェクトを起動関数へ渡すのが基本の流れです。具体的には spawnSandboxFromConfig に設定を与え、子プロセスとしてサンドボックスを立ち上げるのです。起動した子プロセスからは、標準出力や終了コードを受け取れます。出力を購読すれば、サンドボックス内で実行した処理の結果を逐次受け取れますし、終了イベントを捉えれば処理の完了を検知できるのです。長時間動作させたい場合には、ワンショットではなく状態保持型のAPIを使い、準備から破棄までを段階的に進めます。こちらでは、環境の準備、起動、実行、停止、破棄という流れを明示的に制御するわけです。用途が単発の処理なら前者を、繰り返し使う環境なら後者を選ぶと効率的です。いずれの場合も、ポリシーで定めた境界が実行中に保たれる点は変わりません。起動から結果取得までの一連の流れを押さえれば、MXCを使った隔離実行の基本形が身につきます。
getPlatformSupportで対応環境を判定する事前チェック
実行へ進む前に、忘れずに行いたいのが対応環境の判定です。MXCはプラットフォームごとに利用できる機能やバックエンドが異なるため、手元のホストで動くかどうかを事前に確かめておくと安全です。SDKには、対応状況を返す関数が用意されています。たとえば getPlatformSupport を呼び出し、対応していない環境であれば早めにエラーとして扱う、といった作りにできます。この事前チェックを挟むことで、未対応の環境でいきなり実行して原因不明のエラーに悩む事態を避けられるのです。早期プレビューの段階では、プラットフォームや機能ごとに未対応の項目が残っています。だからこそ、走らせる前に「ここで使えるのか」を確認する習慣が効いてきます。判定結果に応じて処理を分岐させれば、利用者にとって分かりやすい振る舞いを実装できるのです。小さな確認ですが、検証を安定して進めるための土台になる作法だといえるでしょう。事前チェックを起点に、対応環境でのみ隔離実行へ進む流れを組み立てるのが堅実です。
早期プレビュー版の制限事項とパートナー連携から見るMXC実務評価
最後に、現段階のMXCをどう評価し、どう付き合うべきかを整理します。制限事項とパートナー連携、そして今後の方向性を踏まえ、実務的な判断材料をまとめます。
Windowsで拒否パス未対応などポリシー機能の現段階での制約
MXCは早期プレビューであり、ポリシー機能にはプラットフォームごとの差や未対応の項目が残っています。導入を検討する際は、こうした制約をあらかじめ把握しておくことが欠かせません。現段階で確認しておきたい主な制約を挙げます。
- ファイルシステムの拒否パス指定は、Windowsでまだ対応していない
- ネットワークのプロキシ対応はmacOSでは利用できず、ホストのフィルタリングはWindowsで未対応
- SDKが生成するポリシーが過度に緩くなるケースがあり、そのままでは想定より広い権限を許す恐れがある
これらは、MXCをそのまま堅牢な防御として頼り切れない理由でもあります。未対応の機能を前提に設計してしまうと、期待した境界が成立しないまま運用してしまう危険があるのです。利用前には、対象プラットフォームでどの機能が使えるのかを必ず確認し、足りない部分は他の防御策で補う姿勢が求められます。制約を理解することが、安全な活用の前提になります。
GitHub Copilot CLIが採用したプロセス分離の実務事例
MXCがすでに現実の製品へ組み込まれている例として、GitHub Copilot CLIの採用が挙げられます。Copilot CLIは、動的に生成・実行されるコードができる範囲を絞り込む目的で、MXCのプロセス分離を取り入れました。コーディング支援の現場では、モデルが生成したコードをその場で実行する場面が頻繁にあります。そのコードへ無制限の権限を与えてしまえば、開発者の環境全体が危険にさらされかねません。プロセス分離を挟むことで、生成コードができることを境界の内側へ限定しつつ、反復作業の軽快さを保てます。WindowsとGitHubの深い連携から生まれたこの成果は、軽量な隔離が開発体験を損なわずにリスクを下げられることを実証しているのです。抽象的な構想にとどまらず、広く使われるツールへ実装された点に、この事例の価値があります。これから自分のエージェントへMXCを組み込もうとする開発者にとって、現実的な参照点になるでしょう。実績ある適用例の存在は、技術選定の安心材料のひとつになります。
OpenAIやNVIDIAなど主要パートナーによる連携の広がり
MXCは、業界の主要な開発者やプラットフォームと連携しながら整備が進められています。Microsoftは、現実の開発ニーズへ封じ込めを適合させるために、複数のパートナーと協業していると説明しています。主な連携の例を整理すると次のとおりです。
| パートナー | 連携の内容 |
|---|---|
| OpenAI | Codexの能力とMXCの実行環境を組み合わせ、安全なコード生成・実行のパターンを模索 |
| NVIDIA | MXC上に構築したOpenShellをWindowsへ提供し、常時稼働の自律эージェントを扱いやすくする |
| OpenClaw | ノードとゲートウェイをMXCを活用してWindows上で安全に実行 |
| Hermes(Nous Research) | OpenShellとMXCを新しいWindowsアプリへ統合する方針 |
| Manus | MXCのポリシー駆動の制御を活かし、自律エージェントを企業環境で安全に運用 |
こうした連携の広がりは、MXCが特定企業の閉じた仕組みではなく、エコシステム全体で支えられつつあることを示しています。複数の有力プレイヤーが実際の製品で採用や統合を進めている事実は、技術の方向性を見極めるうえで参考になります。一社の構想にとどまらない動きが、MXCの将来性を支える要素のひとつです。
Windows 365 for AgentsへのMXC統合という今後の方向性
MXCの封じ込めは、ローカル端末の枠を越えてクラウドへも広がろうとしています。その中心にあるのが、一般提供が始まったWindows 365 for Agentsとの統合です。Windows 365 for Agentsでは、エージェントがIntuneで管理されるクラウドPC上で動き、ユーザーの端末から完全に切り離されます。万一エージェントが侵害されても、影響は使い捨てのクラウドインスタンス内に閉じ込められる仕組みです。これは、集中管理されたポリシーとコンプライアンスのもとでエージェント群を運用したい企業に適しています。将来的にMXC統合が加わることで、Windows 365 for Agentsは軽量なローカル隔離から、ハードウェアに支えられた強固な境界までを、ひとつのSDKとポリシーモデルで橋渡しできるようになる見通しです。ローカルとクラウドを連続した封じ込めスペクトラムとして扱えれば、用途やリスクに応じた柔軟な配置が現実的になります。Agent 365と組み合わせて、観測・統制・防御を一体で提供しようとする方向性が示されているのです。今後の拡張を見据えると、MXCは単体機能ではなく、より大きな基盤の一部として育っていくと捉えられます。
検証用途から段階的に始めるMXC導入における実務的な判断基準
ここまでの内容を踏まえると、現段階でのMXC導入は、いきなり本番の防御として据えるのではなく、検証から段階的に進めるのが現実的だと分かります。実務での進め方を手順として整理すると次のようになります。
- 公式のGitHubリポジトリやSDKを確認し、対象プラットフォームで使える機能と制約を把握する
- 動作要件を満たす検証環境を用意し、まずは低リスクなコードでプロセス分離を試す
- 扱うデータの機微さと信頼度に応じて、セッション分離やマイクロVMなど適切な隔離方式を見極める
- EntraやIntuneとの連携を見据え、組織のガバナンス方針へどう組み込むかを検討する
- 未対応の機能は他の防御策で補い、過信せず多層防御を前提に本番適用の可否を判断する
判断の軸となるのは、得られる生産性とリスクの釣り合いです。MXCは将来性のある基盤ですが、現時点では成熟の途上にあります。だからこそ、小さく試して知見を積み、自社の要件に合うかどうかを丁寧に見極める姿勢が報われます。早期プレビューの段階で触れておくことは、来たるエージェント時代の運用力を養う投資にもなるでしょう。