AppleのContainerization資料では、コンテナは軽量なLinux仮想マシン内で実行されると説明されています。Apple Containerizationのアーキテクチャから分かる最初の判断は明確です。
症状: Linuxコマンドは隔離できても、FinderやXcodeを操作するAgentまで安全になったと思ってしまう。
最短解決策: Linux実行はApple Containerへ移し、macOS操作は主機側の権限で制限する二層サンドボックスにします。顧客コードや多ユーザー処理はFirecrackerへ分離します。
この構成が、Apple Container AI Agent サンドボックスを設計するときの基準です。Apple ContainerはmacOSアプリ用のコンテナではありません。Linuxのツール実行を囲う層です。
この記事は、デスクトップAI Agentの権限境界を設計するMac開発者、社内Agent基盤を運用するプラットフォームエンジニア、安全責任者向けです。Finderやブラウザの自動操作と、未知のコード実行を同じ場所で扱おうとしているなら、特に確認してください。
最終更新:2026年8月24日。Apple Container、DeepSeek Harness、Firecrackerの公式資料を基に内容を確認しています。
実行場所で分ける責任範囲
デスクトップAgentの機能を、次の三つに分けて考えます。
| Agentの処理 | 実行させる場所 | 主なリスク | 推奨する境界 |
|---|---|---|---|
| Linuxコマンド、依存関係の導入、テスト、リポジトリ解析 | Apple Container | 破壊的なスクリプト、外部通信、秘密情報の読み取り | 制限したイメージ、通信、認証情報、マウント |
| Mac上のファイル操作 | 主機側のプロセス | 作業領域外への書き込み、秘密情報の読み取り | Seatbelt、許可済み作業領域、専用アカウント |
| Finder、Xcode、ブラウザなどの操作 | 主機側のプロセス | Apple Events、画面操作、アプリ内データへのアクセス | 必要なアプリだけに権限を付与 |
| 顧客コード、未知のバイナリ、多ユーザー処理 | 独立したリモートmicroVM | 脱出時の宿主システム影響、テナント間干渉 | Firecrackerなどの専用実行基盤 |
Apple ContainerのLinux実行層と、macOSアプリの操作層は別の世界です。コンテナを使っているかどうかだけでは、Agent全体の安全性を判定できません。どのプロセスが、どの権限で、どのファイルと通信経路に触れるかを確認する必要があります。
Apple Containerの開始手順で確認できるのは、CLIからLinuxコンテナを起動する流れです。FinderやXcodeの操作をコンテナ内に閉じ込める仕組みではありません。
LinuxツールとmacOS操作の適性差
Linux側に置く処理
次の処理はApple Containerに移しやすい領域です。
- パッケージのインストール
- リポジトリの静的解析
- テストスイートの実行
- 生成コードの検証
- 不可信なシェルスクリプトの一次実行
- Linux向けCLIの組み合わせ
Apple Containerは、対応するApple silicon MacとmacOS 26上でLinuxワークロードを実行するための仕組みです。各コンテナに軽量仮想マシンの境界があるため、主機のプロセス空間で直接シェルを動かすより、実行位置を切り分けやすくなります。公式アーキテクチャ資料で、仮想マシンとLinuxゲストの関係を確認できます。
ただし、隔離は自動的に完成しません。Agentが使うイメージを固定し、ネットワークを必要な範囲に絞り、SSHキーやAPIトークンを渡さない設計にします。主機の作業領域をマウントする場合は、そのディレクトリがAgentから見えるデータ経路になります。Apple Containerのマウント仕様では、ホスト側のディレクトリを明示的に実行環境へ渡す仕組みが説明されています。
注意: 「仮想マシン境界がある」ことと、「マウントした主機データが見えない」ことは別です。書き込み可能なマウントは、隔離層をまたぐ正式な入口になります。
macOS側に残る処理
Finder、Xcode、ブラウザ、ターミナルなどを操作するAgentは、主機側のプロセスとmacOSの権限を必要とします。Apple Container内のLinuxプロセスに移しただけで、Macアプリの操作権限が消えるわけではありません。
macOSのアプリ操作ではApple Eventsの権限が関係します。アプリ自動化のエンタイトルメントについては、AppleのApple Events権限資料を確認してください。ここで重要なのは、必要なアプリへの許可と、ファイルアクセスの許可は同じではないという点です。
Apple Containerは、Macアプリを操作するAI Agentまで隔離できますか。
単独ではできません。Linuxコマンドをコンテナに移しても、FinderやXcodeを動かす協調プロセスは主機側に残ります。主機側には、Seatbelt、許可済み作業領域、最小権限アカウント、アプリごとの自動化許可を組み合わせます。
DeepSeek Harnessの公開実装は、macOSのローカルサンドボックスをSeatbeltまたはsandbox-execによるファイル効果の制約として扱っています。実装説明から読み取れる範囲を超えて、ネットワーク隔離、デスクトップ操作の隔離、完全な仮想マシン境界まで保証すると解釈してはいけません。
単層構成と二層構成の分岐
Apple Container AI Agent サンドボックスを設計するときは、技術名ではなく、Agentが越える境界で選びます。
| 実際のタスク | 単層構成の弱点 | 選ぶ構成 | 判定 |
|---|---|---|---|
| ローカルのLinuxツールだけを実行 | 主機ファイルを直接見せると影響範囲が広がる | Apple Containerのみ | 主機データをマウントしないか、読み取り専用にします |
| Macの作業領域を編集し、Linuxテストも実行 | 片方のツールだけが主機へ直行する可能性 | 主機サンドボックス+Apple Container | 多くのデスクトップAgentの基本形です |
| FinderやXcodeを操作し、生成物を検証 | コンテナからmacOSアプリは操作できない | 主機協調器+Apple Container | 原生操作を承認済み機能に限定します |
| 顧客リポジトリ、未知のバイナリを処理 | 広いマウントや主機実行では事故範囲が大きい | リモートFirecracker microVM | 実行層を日常のMacノードから出します |
| 複数利用者の同時実行 | 共有主機の権限と残留データが問題になる | テナント別の独立実行環境 | Mac操作とコード実行を別タスクに分けます |
混合タスクの二層設計
主機側の協調器には、承認済みのmacOS操作だけを残します。Linuxシェル、依存関係、未知のスクリプトはApple Containerへ送ります。ここでのポイントは、シェルツールとファイルツールが同じ作業領域の意味を使うことです。
例えばシェルだけをコンテナで実行し、ファイル編集ツールは主機の任意パスへ書き込む構成は危険です。Agentから見ると、実行経路と編集経路が異なるため、コンテナの境界を簡単に迂回できます。
次のようにデータの流れを固定します。
- 主機側で一時作業ディレクトリを作成します。
- 入力ファイルはコンテナへ読み取り専用で渡します。
- Linuxコマンドとファイル処理を同じコンテナ内で実行します。
- 書き込み先は専用の出力ディレクトリだけにします。
- 結果を明示的に主機協調器へ返します。
- macOSアプリへの操作は、返却済みの結果に対してだけ実行します。
この方式なら、主機側はMacアプリ操作を担当し、コンテナ側はコード実行を担当します。両方を一つの万能ツールにまとめないことが重要です。
運用上の経験則: 「同じAgentだから同じ権限でよい」と考えないでください。シェル、ファイル、アプリ操作は、失敗したときの影響範囲が異なります。
AI Agentのシェルとファイルツールは同じサンドボックスに置くべきですか。
原則として、同じデータ境界に置きます。シェルだけをApple Containerに入れて、ファイルツールを主機へ直結する構成は避けます。読み取り専用の入力、限定された出力、明示的な結果返却を共通ルールにしてください。
macOS 26の主機サンドボックスの限界
macOS側では、Seatbeltを万能の防御壁として扱わないことが必要です。Seatbeltは指定したプロファイルに基づいてファイルなどの効果を制約する仕組みであり、軽量仮想マシンと同じものではありません。
macOS AI Agentの本機ファイル変更はSeatbeltだけで足りますか。
単独では不十分です。Seatbeltのプロファイルに加えて、専用ユーザー、作業領域の許可リスト、秘密情報を置かない運用、アプリごとのApple Events許可を組み合わせます。ネットワークや未知のバイナリまで同じ前提で安全だと判断してはいけません。
確認すべき制限は少なくとも次の三つです。
- ファイル範囲: 作業領域外の読み書きを拒否できるか。
- アプリ操作: 許可していないMacアプリへApple Eventsを送れないか。
- 秘密情報: SSHキー、クラウド認証情報、ブラウザの保存データを読めないか。
Seatbeltを入れた後も、作業領域を広く許可すれば影響範囲は広がります。~/Documents全体のような大きなディレクトリではなく、タスク単位の一時ディレクトリを使います。主機側の権限とコンテナ側のマウント範囲を別々に記録してください。
Firecrackerへ移すリスク境界
顧客コード、未知の実行ファイル、公開ネットワークから取得した入力を扱う場合、Apple Containerを日常のMacノードに残す理由を見直します。問題はコマンドが失敗することではなく、失敗時に同じ宿主システムへ影響できることです。
FirecrackerはmicroVMを使ってワークロードを分離する設計です。Firecrackerの設計資料では、仮想マシンモニターとゲストの境界が説明されています。本番運用では、公式のホスト設定ガイドに沿って専用ホスト、権限、イメージ管理、破棄手順を設計します。
Apple ContainerとFirecrackerの使い分けは、次の条件で決めます。
- 自分が管理するコードで、単一利用者ならApple Containerを候補にします。
- macOSアプリ操作とLinuxツールの両方が必要なら、主機サンドボックスとApple Containerを分けます。
- 顧客コード、未知のバイナリ、複数利用者、公開入力の組み合わせなら、実行層をFirecrackerへ移します。
- macOSのアプリ操作が必要なタスクと、高リスクコードの実行タスクは分離します。
Firecracker側へmacOSアプリを移すことはできません。したがって「すべてをmicroVMへ入れる」のではなく、原生macOS操作をMac側に残し、不可信なコードだけを独立したLinux実行環境へ送る構成が現実的です。
隔離を動作で検証する手順
資料を読んだだけでは、実際のAgent境界は分かりません。次の手順で、許可と拒否を記録します。
-
作業領域外への書き込みを試します。
Agentに作業ディレクトリの外へファイルを作らせます。主機側では拒否、コンテナ側では未マウントのパスが見えないことを期待します。 -
未許可の認証情報を読み取らせます。
SSHキー、環境変数、アプリの保存データなどを対象にします。結果だけでなく、どのプロセスがアクセスしたかも記録します。 -
許可していない通信を試します。
外部API、ローカルネットワーク、名前解決などを個別に確認します。Seatbeltを使っているから通信も自動的に隔離される、とは判定しません。 -
未公開の主機パスを変更させます。
Apple Containerでは、マウントしていない主機パスに影響しないことを確認します。書き込み可能なマウントを使う場合は、変更可能な範囲を一覧化します。 -
macOSアプリ操作を分けて試します。
FinderやXcodeなど、許可したアプリだけが操作対象になるか確認します。Apple Eventsの許可が、ファイル全体への許可に広がっていないかを見ます。 -
リモートmicroVMを破棄します。
タスク終了後にディスク、プロセス、ログ、認証情報、作業領域が残っていないか確認します。再利用されるイメージとタスク固有データを分けて検証します。
判定は三段階にします。Linuxコマンドだけで、主機データを渡さないなら「主機サンドボックスまたはApple Containerで足りる」。Mac操作とLinux実行を組み合わせるなら「二層隔離」。顧客コードや多ユーザーの未知タスクなら「リモートmicroVMへ移行」です。
自托管AgentをMacノードで運用する場合は、実行環境の確認だけでなく、MacHTMLのコンソールで利用できる操作範囲と、タスク終了後の状態も同じ表に記録してください。隔離は設定値ではなく、拒否結果と残留状態で判定するものです。
既存のMac環境が、原生アプリ操作と高リスクコード実行を同時に担っているなら、単一のApple Containerへ寄せるより、Mac側とLinux実行側を分離したほうが事故の範囲を説明しやすくなります。ローカル環境だけで完結させる構成は、物理的なMacアプリ操作には強い一方、顧客コードや並行タスクの分離、破棄後の残留確認で運用負担が増えます。
その場合は、MacHTMLのMacレンタル案内を確認し、原生macOS操作用の独立ノードと、FirecrackerなどのLinux実行層を分ける構成を検討してください。短期の検証環境や一時的なAgent実行ならレンタルが扱いやすいですが、長期間の安定した高負荷処理や物理インターフェース依存の処理では、自社保有環境のほうが適する場合もあります。
最後に、あなたのタスクを「主機サンドボックスで足りる」「Apple Containerを加えた二層隔離」「リモートmicroVMへ移行」のどれかに分類してください。分類できない処理は、権限境界が曖昧なまま一つのAgentへ集約しないことが安全側の判断です。
AI Agentの安全な検証環境をMacHTMLで整えませんか
MacHTMLなら、専用のMac環境を遠隔から利用し、普段の作業環境と分けてAI Agentを検証できます。 Linux系の処理とmacOS上の操作を役割ごとに分離する二層構成にも取り組みやすく、権限管理を見直せます。 共有端末への影響を抑えながら、デスクトップ操作を含む自動化の開発とテストを進められます。 利用期間や用途に合わせてMac環境を用意できるため、個人開発からチームでの検証まで柔軟に活用できます。