1. Home
  2. テクノロジー
  3. Visual Studio CodeのAgent Sandboxingを活用したプロトタイピング手法

Visual Studio CodeのAgent Sandboxingを活用したプロトタイピング手法

こんにちは。システム開発部のsonohaです。

ニフティ温泉の開発チームリーダーとして、上流工程やマネジメントを担当しています。

弊社では、AIエージェントとしてGitHub Copilotを採用しています。

かつてはコード補完に特化していた印象ですが、現在はチャットでの対話型コーディングやエージェントモードでのタスク実行など、一通りの支援機能が揃っています。

中でも強力なのは「Autopilot」です。
AIが自律的にイテレーションを回し、コードの修正からコマンドの実行まで連続して行ってくれる非常に便利な機能です。

しかし、強力であるがゆえに「勝手に意図しないコマンドを実行されるのではないか」「外部に情報が送信されないか」といったセキュリティ面の不安があります。

そこで今回は、Visual Studio Code(以降VS Code)で最近公開された「Agent Sandboxing」を組み合わせることで、これらの不安を解消し、安全かつ効率的にプロトタイピングを進める開発フローをご紹介します。

目次

1. 課題:自律型エージェントの自動承認リスク

Autopilotモードは、人間がいちいち介入しなくてもAIが自律的に実装を進めてくれるため、開発スピードを飛躍的に向上させる可能性を秘めています。

しかし、ターミナルでのコマンド実行やファイル編集が「自動承認(ダイアログなし)」になるため、以下のようなリスクが伴います。

  • 環境破壊のリスク: AIのハルシネーション(もっともらしい嘘)や、悪意のあるプロンプトインジェクションにより、意図せずシステムファイルを削除したり、設定を書き換えたりしてしまう危険性。
  • データ漏洩のリスク: 外部のネットワークへ勝手にアクセスし、ソースコードや環境変数を送信してしまう危険性。

これらのリスクを回避するため、弊社では基本的に、コマンド実行の権限を「手動承認(Default Approvals)」に設定することを推奨しています。

この設定により、AIがコマンドを提案するたびに人間が内容を確認して「許可」ボタンを押すフローを強制できます。

すでに成熟したコードベースでは、破壊や漏洩のリスクが重たいので安全に倒すべきです。

一方で、例えば新規サービスのプロトタイピングなどでは、すべてのステップで承認を行うことは、AIエージェントの実装スピードのメリットを活かしきれない「足枷」となる可能性があります。

2. 解決策:OSレベルの防護壁「Agent Sandboxing」

サンドボクシングとは、システムファイル破壊やデータ漏洩のリスクを防ぐために、AIエージェント専用の環境を分離しておく考え方です。

具体的な手法としては、例えば、AIエージェントを動かす専用のPCや仮想環境を用意する、あるいはDocker Sandboxesのような隔離されたコンテナを用意する、などが考えられます。
しかし、いずれも初期設定を含む立ち上げコストが煩わしい印象です。

「セキュリティリスク」と「隔離環境構築の手間」のジレンマを解決するのが、現在VS Codeでプレビュー版として提供されている「Agent Sandboxing」機能です。

この機能は、AIエージェントのコマンド実行環境を、OSに搭載されている標準の仕組みを利用して決定論的に隔離(サンドボックス化)します。
主に以下の2つの境界によって環境を守ります。

  • ファイルシステムの境界: ワークスペース外のディレクトリや、ユーザーのホームディレクトリ配下(~/.ssh など)へのアクセス(コマンドによる読み書き)をブロックします。
  • ネットワークの境界: 外部へのネットワーク通信を原則ブロックし、必要な通信のみをホワイトリスト形式で許可することができます。

サンドボックス化された環境であれば、AIが危険なコマンドを実行しようとしてもブロックされるため、安全性が担保されます。

3. 実践:Sandboxingを活用した、安全で高効率なプロトタイピングの流れ

ここからは、実際に私が新規サービスなどのプロトタイピングで実施している、サンドボックス化の活用方法についてご紹介します。

ポイントは、開発のフェーズに合わせて権限を切り替えることです。

フェーズ1:要件定義(Planモード)

まずは、人間とAIで実装方針をすり合わせます。

GitHub Copilotのチャット機能でPlanモードを活用し、どのようなアプリケーションを作るか、使用するフレームワークや依存パッケージは何かを決定します。

この段階ではまだコードの生成やコマンドの実行は行いません。

フェーズ2:環境構築(手動承認 + ネットワーク許可)

実装方針が決まったら、プロジェクトの初期化や必要なパッケージのインストールを行います。

[ Settings > Chat > Agent ]から、以下の設定を行います。

サンドボックス化: on
ネットワーク許可: on(外部からのダウンロードが必要なため)

また、右ペインのチャットから、権限レベルを設定します。

権限レベル: Default approvals(手動承認)

このフェーズでは、npm install などの外部通信を伴うコマンドが実行されます。

悪意のあるパッケージが混入するのを防ぐため、必ず人間がコマンドの内容を確認し、手動で承認します。

フェーズ3:自律実装(完全隔離 + 自動承認)

依存関係の解決が終わったら、ネットワークを遮断して、自律実装を回します。

ネットワーク許可: off

これにより、外部APIへの通信やデータの持ち出しが物理的に不可能になります。

一方、localhostのような外部を経由しない通信は可能なので、例えば「ローカルで立ち上げたサービスに対して、AIエージェントがブラウザ(VS Codeに統合済みのPlaywright MCPSharing Browser Tools)を介して動作確認を行う」といった動きは制限されません。

4. AIエージェントの成果物に対する注意事項

サンドボックス化やネットワーク遮断によって実行環境の安全性(プロセス)は担保されますが、生成されたコード(成果物)の安全性が保証されるわけではありません。

AIの自律実装による成果物には、例えば以下に代表されるようなリスクが潜んでいる可能性があります。

  • 認証認可や権限設定が弱い
  • CSRF・XSS・SQLインジェクション対策が甘い
  • バリデーションやサニタイズがない
  • 脆弱なバージョンや信頼性の低いライブラリに依存する

これらを防ぐためには、環境(ハーネスやガードレール)を整えることや、レビュープロセスでのチェックが重要になります。

リスクを許容する場合でも、まずは、プロダクトコードとは隔離された、プロトタイピングのみで試してみるのが安全でしょう。

5. 今後の展望とまとめ

VS CodeのAgent Sandboxingはまだプレビュー版であり、今後のアップデートで仕様が変わる可能性はありますが、現状でも「AIに渡す権限」を自分たちで簡単にコントロールできる有用な機能です。

「重要な判断は人間が確認し、安全が担保された範囲でのみ自律性を許可する」という堅実なアプローチが、AIコーディングにおいては特に重要視されていると感じます。

今後は、ハーネスやガードレールを整え、さらにAIエージェントを効率的に活用できるような環境づくりを進めていきたいと考えています。

「Copilotの自律実行は怖くて使えていなかった」という方は、ぜひ今回ご紹介したサンドボックス環境でのスモールスタートから試してみてください。

ニフティライフスタイルでは、今回ご紹介したようなAI活用を推進しています。

最新のテクノロジーを柔軟に取り入れ、プロダクトと組織の両方をアップデートし続けたいという方を、現在積極的に募集中です!
カジュアル面談も可能ですので、ぜひお気軽に採用ページよりご連絡ください!

この記事をシェア

掲載内容は、記事執筆時点の情報をもとにしています。