本稿の要点
- 症状:Agentが外部サイトへ接続できず、依存パッケージやAPIキーの扱いも決まっていない。
- 最速の解決策:まず無通信で設計し、必要な接続だけを限定的に許可し、私有API・データベース・社内サービスが必要なら自前運用環境または制御されたゲートウェイを優先してください。
- この判断は、OpenAI Agents APIでコード実行やファイル処理を行う独立開発者、業務APIをつなぐAIアプリケーションエンジニア、ネットワーク出口と監査境界を管理するプラットフォームエンジニア向けです。Hosted Sandboxに最初から強い権限を与えるより、タスクごとに通信範囲を増やすほうが、原因調査と事故対応を続けやすくなります。
症状:Agentが外部サイトへ接続できず、依存パッケージやAPIキーの扱いも決まっていない。 最速の解決策:まず無通信で設計し、必要な接続だけを限定的に許可し、私有API・データベース・社内サービスが必要なら自前運用環境または制御されたゲートウェイを優先してください。
この判断は、OpenAI Agents APIでコード実行やファイル処理を行う独立開発者、業務APIをつなぐAIアプリケーションエンジニア、ネットワーク出口と監査境界を管理するプラットフォームエンジニア向けです。Hosted Sandboxに最初から強い権限を与えるより、タスクごとに通信範囲を増やすほうが、原因調査と事故対応を続けやすくなります。
OpenAI Hosted Sandboxesのネットワーク設定は、どの経路から決めるべきか
Hosted Sandboxは、Linuxワークスペース、ファイル処理、コード実行、依存関係の設定を組み合わせてAgentを動かすための環境です。公式のSandbox AgentガイドやSandbox Agentsの仕様を確認し、利用時点で公開されているネットワーク機能と自前環境の境界を分けて考えてください。
「外部接続があるか」だけで判断すると、次の4種類の処理を混同します。
- ローカル入力の集計、変換、テスト:通常は無通信で設計できます。
- Python、Node.js、OSパッケージの取得:起動時の依存導入に限定的な出口が必要です。
- 公開API、パッケージレジストリ、Webhook:接続先と送信データを絞る必要があります。
- 社内API、データベース、管理画面:認証、経路、監査を含むため、直接接続より自前環境やプロキシを優先します。
| タスク | 第一候補 | 接続方針 | 回避すべき設計 |
|---|---|---|---|
| CSVやJSONの整形 | Hosted Sandbox | 無通信 | Agentに不要な外部検索を許可する |
| 依存関係を含むコード実行 | Hosted Sandbox | 起動時だけ限定出口 | 実行中に任意のパッケージを追加する |
| 公開APIの取得 | Hosted Sandboxまたはゲートウェイ | 宛先とメソッドを限定 | プロンプト内に固定キーを書く |
| 社内API・DB操作 | 自前運用または制御されたプロキシ | 短期資格情報と監査 | Sandboxから直接管理系ネットワークへ入れる |
| 長時間の状態保持 | 自前環境またはクラウドワークスペース | 固定された作業領域 | 一時環境に永続データを置く |
OpenAIのAgents API公式紹介でも、Agentはツールや実行処理と組み合わせて使う設計として説明されています。つまり、ツールを追加することと、任意のネットワーク権限を与えることは同じではありません。
依存関係と作業ディレクトリを、なぜ別々に管理するのか
Agentの失敗を通信障害だと思ったら、実際には作業ディレクトリの誤り、未導入のモジュール、OSパッケージの権限不足だったというケースがあります。Hosted Sandboxのクライアント仕様を確認し、環境の生成、ファイル配置、セットアップ、実行を別の観測点として記録してください。
| 管理対象 | 起動時に固定するもの | 実行時に検証するもの |
|---|---|---|
| 作業ディレクトリ | 入力・出力のルート | 現在位置と対象ファイルの存在 |
| Python | 仮想環境、依存ファイル | importとバージョン表示 |
| Node.js | lockfile、利用するスクリプト | Node/npmの実行結果 |
| OSパッケージ | 必要最小限の一覧 | コマンドの存在と終了コード |
| 生成物 | 出力先と命名規則 | サイズ、形式、取得可否 |
実装手順は次の順番にすると、Agentの判断と環境の問題を切り分けやすくなります。
- 入力ファイルを固定し、作業ディレクトリと出力ディレクトリを分離します。
- Python、Node.js、システムパッケージの必要一覧を人間側で作成します。
- 起動時のセットアップコマンドで依存関係を導入し、実行中の追加インストールを原則禁止します。
import、バージョン表示、主要コマンドの終了コードを確認する最小タスクを実行します。- 外部接続を使わない入力処理を先に完了させ、ファイルの読み書き範囲を確認します。
- 必要な公開APIを1つだけ追加し、宛先、TLS、認証、応答サイズを個別に検証します。
- 成功時だけ本番に近い処理へ進み、失敗時は環境状態とログを保存してから次の変更を加えます。
依存関係の導入方法は、Agentに自由に選ばせないことが重要です。パッケージ取得先、バージョン、キャッシュの扱いが毎回変わると、同じ入力でも再現できないからです。Agents SDKのツール関連ドキュメントも確認し、ツールの責務と実行環境の責務を分離してください。
外部APIと秘密情報を接続する設計はどう変えるべきか
公開API、社内API、データベース、Webhookは、それぞれ許可すべき操作が異なります。特に、Agentが生成したURLやSQLをそのまま実行する設計は、APIキーを隠していても権限の濫用につながります。
安全性を上げる構成は、次のような3層です。
- Sandbox:入力の解析、コード実行、結果の整形だけを担当します。
- 受け付け側のプロキシ:許可されたエンドポイント、HTTPメソッド、パラメーター、データ量を検証します。
- 業務システム:プロキシが発行した短期資格情報と最小権限で処理します。
APIキーをプロンプト、入力ファイル、ソースコード、標準出力、Agentが読めるログに置いてはいけません。資格情報はサーバー側の保管領域から取得し、必要な操作だけを代理実行します。エラーを返すときも、Authorizationヘッダー、接続文字列、署名付きURLがログへ残らないようにマスキングしてください。
第二段階:許可を増やす前に確認する条件
- 入力データに個人情報や社内機密が含まれていないか。
- 送信先が固定され、リダイレクト先まで確認できるか。
- 読み取りだけで足りるのに、書き込み権限を付けていないか。
- 失敗したリクエストを再実行しても二重登録にならないか。
- 資格情報を失効させる手順と担当者が決まっているか。
- 実行ログから秘密情報と不要な入力内容を除外できるか。
OpenAIのAgents SDKの進化に関する公式説明を読む場合も、SDKの機能と、あなたの側で実装する認証・監査設計を同じものとして扱わないでください。SDKがツール呼び出しを扱えても、業務システムの最小権限や秘密情報のライフサイクルまで自動で決めるわけではありません。
決定条件:Hosted Sandboxを続けるか、自前環境へ移すか
- 入力ファイルの処理だけで完結するなら、無通信のHosted Sandboxを選びます。
- 公開APIが少数で、宛先と送信データを固定できるなら、限定的な出口を追加します。
- 社内APIやデータベースを呼ぶが、プロキシで操作を白リスト化できるなら、ゲートウェイ経由にします。
- プライベートネットワークへの経路、永続ディスク、長時間の状態保持、細かな監査が必要なら、自前運用環境へ移します。
- Agentが任意の宛先、任意のコマンド、管理者権限を必要とするなら、Hosted Sandboxの権限拡大ではなく構成を見直します。
失敗したとき、どの順番で調査すればよいか
「接続できない」という報告だけでは、環境の作成失敗と外部サービス停止を区別できません。OpenAIのAgents SDKクイックスタートに沿って最小実行を作り、次の順番で一つずつ確認してください。
- 環境作成:環境識別子、作成イベント、初期状態、セットアップの終了結果を確認します。
- 作業領域:入力ファイルの版、現在のディレクトリ、読み書き権限、出力先を確認します。
- 依存関係:import、Node/npm、OSコマンドを個別に実行し、導入失敗と実行失敗を分けます。
- 接続先:宛先名、ポート、名前解決、TLS証明書、HTTP応答を順番に調べます。
- 認証:資格情報の期限、対象環境、権限、プロキシでの転送を確認します。
- Agentの判断:実際に実行したコマンドと、Agentが想定したコマンドが一致しているか確認します。
- タイムアウト:外部サービスの処理時間、入力サイズ、再試行回数、Sandboxの状態を比較します。
記録する最低限の情報は、環境状態、エラーイベント、実行コマンド、標準出力、標準エラー、入力ファイルの版、接続先、再現手順です。APIキーや個人情報をそのまま保存してはいけません。DNSやTLSの問題を、Agentの誤判断だけで説明しようとするのも危険です。
FAQ:導入前に判断しておきたい5つのこと
FAQの回答は、上の設計を実際の導入判断へ落とし込むための要約です。公式仕様が更新される可能性があるため、ネットワークの可否や環境APIの名称は、実装時に現行ドキュメントで再確認してください。
公開前に確認する最小チェック
- ネットワーク出口はタスクに必要な宛先だけですか。
- 作業ディレクトリは入力、実行中の一時ファイル、成果物で分離されていますか。
- Python、Node.js、OSパッケージの版と導入手順を固定しましたか。
- APIキーをプロンプト、ファイル、コード、ログに置いていませんか。
- 外部APIはプロキシ経由で操作とデータ量を制限していますか。
- Agentが宿主環境や無関係なファイルを読めないことを、実際の拒否テストで確認しましたか。
- エラーイベントと入力ファイルの版を追跡できますか。
- 長時間実行、永続ワークスペース、私有ネットワークが必要になった場合の移行先がありますか。
OpenAI Hosted Sandboxesは、入力ファイルの処理、依存関係を固定したコード実行、限定された公開API連携には向いています。一方、内部システムを横断するCloud AI Agent、長時間の状態保持、複雑な監査要件では、最初から自前環境や制御されたクラウドワークスペースを比較したほうが、後から権限を作り直すコストを抑えやすくなります。
現在の開発環境をそのまま使い続ける場合、ネットワークポリシーが担当者ごとに異なる、作業領域が消失しやすい、秘密情報と監査ログの管理が分散するという欠点が残りがちです。細かな通信経路、永続ワークスペース、開発ツールをまとめて管理したいなら、クラウドMacを使う方法も比較対象になります。短期の検証や一時的なAgent実行ならkvmbootのレンタル環境を確認し、必要な接続範囲と運用期間が合うかを見極めてください。長期の固定負荷や物理インターフェースが必須なら、自前のMacや専用環境のほうが適しています。
まずはネットワークと資格情報の運用相談で要件を整理し、Hosted Sandboxで続けるのか、より制御しやすいクラウドワークスペースへ移すのかを決めるのが安全です。kvmbootの提供条件を確認する場合は、サービス概要と実際の利用地域・作業時間を照合してください。