本記事では、Windows内の特定ディレクトリのみをAIエージェントに参照させ、それ以外のシステムや個人データから隔離した開発環境をゼロから構築する。 特定のツールに依存しない汎用的な構成とするが、本記事では例として「Antigravity IDE」を動かす環境を構築する。
- 全体構成
- Step 1. [Windows] WSL2(Ubuntu)のセットアップ
- Step 2. [WSL(Ubuntu)] WSL設定とディレクトリのマウント
- Step 3. [WSL(Ubuntu)] Docker Engineの導入(WSL2内)
- Step 4. [WSL(Ubuntu)] Antigravity IDEインストール
- Step 5. [WSL(Ubuntu)] プロジェクト作成と docker-compose.yml の配置
- Step 6. [WSL(Ubuntu)] Antigravity IDEからコンテナへのアタッチと確認
全体構成
構成の概要は以下の通りである。
[ Windows 11 (ホスト) ]
├── C:\Users\... (完全遮断・アクセス不可)
├── C:\Users\<Windowsユーザー>\AI-shared (マウントする共有フォルダ)
│
[ WSL2 (Ubuntu) ] ── (automount=false / Dockerホスト)
└── Antigravity IDE (GUI)
└── [ Docker コンテナ ]
├── AIエージェントの作業領域 (/workspace)
├── 参照フォルダ (/shared)
└── コマンド実行・自動化プロセスの完全隔離
Step 1. [Windows] WSL2(Ubuntu)のセットアップ
まずはWSL2とデフォルトディストリビューションであるUbuntuを導入する。
1. WSL2のインストール
PowerShellを管理者として起動し、Linux用Windowsサブシステム(WSL)およびUbuntuディストリビューション(デフォルト)をインストールする。
wsl --install # ダウンロード中: Linux 用 Windows サブシステム 2.7.11 # インストール中: Linux 用 Windows サブシステム 2.7.11 # Linux 用 Windows サブシステム 2.7.11 はインストールされました。 # この操作を正しく終了しました。 # ダウンロードしています: Ubuntu # インストールしています: Ubuntu # ディストリビューションが正常にインストールされました。'wsl.exe -d Ubuntu' を使用して起動できます # Ubuntu を起動しています... # Provisioning the new WSL instance Ubuntu # This might take a while... # Create a default Unix user account:
コマンド実行後、画面の指示に従い、システムの再起動を求められた場合は再起動を行う。
環境によっては、一度の実行でUbuntuまでインストールされず、再起動後に再度 wsl --install を実行する必要がある場合がある。
2. Windows側でのWSL network設定
Windowsホスト側の C:\Users\<ユーザー名>\.wslconfig ファイルを新規作成(または編集)し、以下の設定を記述して保存する。これによりネットワークの接続方式を設定する。
[wsl2] networkingMode=NAT dnsTunneling=true autoProxy=true
Step 2. [WSL(Ubuntu)] WSL設定とディレクトリのマウント
WSL2内の設定を変更し、WindowsのCドライブ全体が自動的にマウントされないようにする。
[!TIP] マウント制限による Windows 側コマンド(Interop)の安全性確保 本環境では、WSL2からWindowsホストへの実行パス(Interop)自体は有効であるものの、Cドライブ全体のマウントを無効化(
automount = false)している。 これにより、WSL2側からはpowershell.exeやcmd.exeなどのパスが見えず、実質的にマウントしたGoogle Chrome以外のホストコマンドは実行できない「ホワイトリスト状態」が作られ、安全性が向上する。※ただし、万が一コンテナからWSL2(Ubuntu)へエスケープされ、さらにUbuntu側で管理者権限(
sudo)を奪取された場合、攻撃者が手動でCドライブを強制マウントする可能性がある。 そのため、WSL2側ではsudo実行時に必ずパスワードを要求する設定(デフォルト状態)を維持するべきである。
1. パッケージの更新
sudo apt update sudo apt upgrade
2. 自動マウントの制限設定
WSL(Ubuntu)のターミナルを起動し、設定ファイル /etc/wsl.conf をテキストエディタで開く。
sudo nano /etc/wsl.conf
以下の設定を /etc/wsl.conf に追記して保存する。
enabled = false により、Windowsのドライブ全体の自動マウントを無効化する。
[automount] enabled = false mountFsTab = true options = "metadata,uid=1000,gid=1000,umask=022,fmode=11,dmode=755" [interop] appendWindowsPath = false # Windows側の環境変数を展開しない [network] generateResolvConf = false
3. DNSサーバーの設定とパッケージ更新
DNS名前解決を固定するためのDNSサーバー情報を書き込む。
# パブリックDNSを上書き sudo rm -f /etc/resolv.conf sudo bash -c 'cat << EOF > /etc/resolv.conf nameserver 8.8.8.8 nameserver 1.1.1.1 EOF'
4. 特定フォルダおよびChromeのマウント設定
AIに共有するフォルダ(ここでは例として AI-shared)と、OAuth認証で使用するWindows側のGoogle Chromeのみをマウントする設定を行う。
マウント先となるディレクトリを作成し、ファイル /etc/fstab を開く。
# Windowsユーザー名を確認し、マウント先ディレクトリを作成 sudo mkdir -p /mnt/c/Users/<Windowsユーザ>/AI-shared sudo mkdir -p /mnt/win-chrome sudo nano /etc/fstab
/etc/fstab に以下の設定を追記し、特定のフォルダのみをマウントさせる。
C:/Users/<Windows側のユーザー名>/AI-shared /mnt/c/Users/<Windows側のユーザー名>/AI-shared drvfs metadata,noatime,gid=1000,uid=1000,defaults 0 0 C:/Program\040Files/Google/Chrome/Application /mnt/win-chrome drvfs defaults,uid=1000,gid=1000,umask=022 0 0
※マウントオプションで使用するユーザーID(uid)とグループID(gid)は、以下のコマンドで確認できる。初期登録ユーザーは通常どちらも 1000 である。
$ id <WSLのユーザー名>
5. WSLの再起動とマウント状態の確認
一度WSLをシャットダウンして設定を反映させ、目的のディレクトリのみが適切に見えているか確認する。 WindowsのPowerShellで以下のコマンドを実行する。
wsl --shutdown # マウント状態と権限の確認 ls -ld /mnt/c/Users/<Windowsユーザ>/* # 出力にAI-shared のみが表示され、他の個人フォルダが見えなければ成功
Step 3. [WSL(Ubuntu)] Docker Engineの導入(WSL2内)
Docker Desktopを経由せず、WSL2(Ubuntu)内に直接 Docker Engine を導入してコンテナ実行環境を準備する。
1. Dockerのインストール
Docker本体およびビルド用の拡張パッケージをインストールする。
# Docker のインストール(WSL2 Ubuntu内) sudo apt install -y docker.io docker-compose-v2 sudo usermod -aG docker $USER sudo apt update sudo apt install -y docker-buildx
※インストール完了後、設定を反映させるために一度ターミナルを開き直す。
その後、docker run hello-world を実行し、sudoなしでコンテナが起動することを確認する。
2. Dockerデーモンの設定
DockerコンテナがWSL2のネットワーク構成に悪影響を与えないように設定を調整する。
/etc/docker/daemon.json を作成・編集する。
sudo mkdir -p /etc/docker
sudo bash -c 'cat << "EOF" > /etc/docker/daemon.json
{
"dns": ["8.8.8.8", "1.1.1.1"],
"max-concurrent-downloads": 1,
"iptables": true
}
EOF'
Step 4. [WSL(Ubuntu)] Antigravity IDEインストール
AIエージェントの開発環境として利用する「Antigravity IDE」をWSL2内にインストールする。
1. 必要パッケージの導入とダウンロード・展開
依存ライブラリをインストールし、一時ディレクトリにダウンロードしたパッケージを展開して /opt 領域に配置する。
その後、パスの通った場所にシンボリックリンクを作成する。
# パッケージ sudo apt install -y libgtk-3-0 libnss3 libasound2t64 xdg-utils # 一時ディレクトリへ移動 cd /tmp # 公式サイトから Linux版 (x64) アーカイブ (tar.gz)をダウンロード。URLは最新のものに書き換える curl -fSL -o antigravity-ide.tar.gz "https://edgedl.me.gvt1.com/edgedl/release2/j0qc3/antigravity/stable/2.5.5-4923483625488384/linux-x64/Antigravity%20IDE.tar.gz" # システム領域(/opt/antigravity)へ展開 sudo mkdir -p /opt/antigravity-ide sudo tar -xzf antigravity-ide.tar.gz -C /opt/antigravity-ide --strip-components=1 # コマンド一発で起動できるようにシンボリックリンクを作成 sudo ln -sf /opt/antigravity-ide/antigravity-ide /usr/local/bin/antigravity-ide
2. Windowsブラウザ(Chrome)によるOAuth認証連携の設定
WSL2上のアプリケーションから呼び出されるWebブラウザを、Windows側のGoogle Chromeに転送するためのラッパースクリプトとデスクトップエントリを作成し、規定のブラウザとして登録する。
# 呼び出しスクリプトを作成
mkdir -p ~/.local/bin
cat << 'EOF' > ~/.local/bin/win-chrome-wrapper
#!/bin/bash
if [ -n "$1" ]; then
/mnt/win-chrome/chrome.exe "$1" &
fi
EOF
chmod +x ~/.local/bin/win-chrome-wrapper
# ラッパースクリプト作成
mkdir -p ~/.local/bin ~/.local/share/applications
cat << 'EOF' > ~/.local/bin/win-chrome
#!/bin/bash
if [ -n "$1" ]; then
/mnt/win-chrome/chrome.exe "$1" &
fi
EOF
chmod +x ~/.local/bin/win-chrome
# デスクトップエントリ作成
cat << 'EOF' > ~/.local/share/applications/win-chrome.desktop
[Desktop Entry]
Version=1.0
Name=Windows Chrome
Exec=/home/<Ubuntuユーザ>/.local/bin/win-chrome %u
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https;
EOF
# XDG既定ハンドラに設定
xdg-mime default win-chrome.desktop x-scheme-handler/http
xdg-mime default win-chrome.desktop x-scheme-handler/https
xdg-settings set default-web-browser win-chrome.desktop
3. 起動確認とライセンス認証
以下のコマンドを実行し、WSLg(GUI表示機能)を介してAntigravity IDEが立ち上がることを確認する。 起動後、指示に従いブラウザ経由でライセンスなどの認証を行う。
antigravity-ide
Step 5. [WSL(Ubuntu)] プロジェクト作成と docker-compose.yml の配置
AIエージェントを閉じ込めて実行する「サンドボックスコンテナ」を作成し、起動する。
1. プロジェクトディレクトリの作成
任意の場所にプロジェクト用のフォルダを作成して移動する。
mkdir -p ~/workspace/my-first-app/ cd ~/workspace/my-first-app
2. サンドボックス構成ファイルの作成
コンテナの定義ファイル docker-compose.yml を作成する。
Windows側の共有フォルダのみを、コンテナ内部へ読み取り専用(:ro)でマウントするように制限する。
services: agent-sandbox: container_name: agent-sandbox image: mcr.microsoft.com/devcontainers/base:ubuntu working_dir: /workspace environment: - HOME=/workspace volumes: - .:/workspace - /mnt/c/Users/<Windowsユーザ>/AI-shared:/shared:ro command: sleep infinity
workspaceフォルダはAIエージェントが読み書き可能であるため、機密情報は決して置かないように運用する。
3. コンテナの起動
バックグラウンドでサンドボックスコンテナを起動する。
sudo docker compose up -d
Step 6. [WSL(Ubuntu)] Antigravity IDEからコンテナへのアタッチと確認
1. コンテナへのアタッチ
- Antigravity IDE を起動する。
bash antigravity . - エディタ上で
Ctrl + Shift + Pキーを押し、コマンドパレットを開く。 Dev Containers: Attach to Running Container...(実行中のコンテナにアタッチ)を選択する。- リストから
agent-sandboxを選択し、コンテナ内に入る。
2. サンドボックス環境の隔離検証
アタッチしたコンテナの統合ターミナルで以下のコマンドを実行し、ファイルシステムが適切に制限されているかを確認する。
- カレントディレクトリの確認:
pwdを実行し、出力結果が/workspaceになっていることを確認する。 - 共有フォルダの確認:
ls /sharedを実行し、Windows側のAI-sharedの中身のみが参照可能であることを確認する。 - 隔離状態の確認:
ls /mnt/cやls /homeを実行し、WindowsホストやWSL2側のシステム・個人データ領域に一切アクセスできないことを確認する。
























