外部通信の統制
ForgeKairos は、AI の機能が始める外部への通信を、許可したホスト以外は拒否する。許可するホストの一覧を ネットワーク許可リストと呼ぶ。
全体の図は AI と通信の制限の全体図 を見る。
許可リストが統制する範囲
許可リストは AI の機能が始める通信に効く。
- AI のモデルのプロバイダーと編集予測のプロバイダー
- エージェントの fetch と Web 検索のツール
- MCP サーバー (HTTP と OAuth)
- 外部エージェント (ACP) とそのバイナリーのダウンロード
- エージェントをインストールする npm
- エージェントがサンドボックスの中で実行するコマンド
エディター自身の道具は制限しない: 言語サーバー、フォーマッター、デバッグアダプター、拡張機能、それらの ための node と npm、本体の更新、リモートのサーバー、Git、内蔵ブラウザー (内蔵ブラウザー を参照)。
エディター自身の通信の印が無い要求は、AI の通信として扱う。
既定で拒否
統制の対象の要求は、ホストが許可リストのどれかに一致しない限り拒否する。loopback は常に許可する:
127.0.0.0/8、::1、::ffff:127.0.0.1、localhost (*.localhost は含まない)。このため、この PC で動く
ローカル LLM のサーバー (Ollama、LM Studio、llama.cpp) は、許可リストが空でも使える。
リダイレクトは 1 hop ずつ許可リストで確かめる。別のホストへのリダイレクトでは、資格情報のヘッダー
(authorization、cookie、x-api-key、api-key など) を外す。
次の組み込みの許可は、決まったパスに限って、許可リストに書かなくても通る。
- 拡張機能のマーケットプレイス
- ACP エージェントのレジストリとそのアイコン
- ForgeKairos の GitHub Releases への更新の確認
許可リストの編集
設定 → ネットワーク → 外部通信の統制 → ネットワーク許可リスト を開く。ここでホストの追加・編集・削除、
ファイルの再読み込み、network_allowlist.json をエディターで開く (無ければ作る) ができる。変更は再起動
なしで効く。
ファイルは設定フォルダーの settings.json の隣にある。
| OS | パス |
|---|---|
| Windows | %APPDATA%\ForgeKairos\network_allowlist.json |
| Linux | $XDG_CONFIG_HOME/forgekairos/network_allowlist.json |
| macOS | ~/.config/forgekairos/network_allowlist.json |
{
"allowed_hosts": [
"api.openai.com",
"*.example.com",
"[fd00::1]"
],
// 省略可。省略すると true
"proxy_child_processes": true
}
- 項目は、ホスト名そのもの、
*.domain(サブドメインだけ。そのドメイン自体は含まない)、IPv4 か IPv6 の アドレスのどれか。 - 大文字・小文字と末尾のドットは区別しない。国際化ドメイン名は Punycode で比べる。
- ポートは比べない。ホストを許可すると、すべてのポートを許可する。
- コメントと末尾のカンマを書ける。
- ファイルが無い・空・読めないときは loopback だけを許可する。誤った項目は飛ばしてログに出す。 ファイルを解析できないときは、設定ページから編集しない。
同意の画面からホストを足す
- 外部の AI プロバイダーを有効にするとき、必要なホストと 許可リストに追加 のボタンを出す。 追加しなければ、そのプロバイダーへの通信は拒否のまま。
- ACP エージェントのインストールと更新では、配布元のホストを調べ、許可リストに無ければ足す前に確認する。 更新のたびに調べ直し、インストールのときの同意は引き継がない。
- MCP サーバーのテンプレートも、必要なホストを同じボタンとともに出す。
エージェントと MCP サーバー
ACP エージェント、MCP サーバー、エージェントをインストールする npm には、HTTP_PROXY と HTTPS_PROXY
で loopback のプロキシを渡す (NO_PROXY は loopback)。このプロキシが通すのは allowed_hosts のホストと
loopback だけで、組み込みの許可は使わない。プロキシの設定があれば、その先へ転送する。
"proxy_child_processes": falseか、設定ページの AI エージェントの子プロセスにプロキシを適用 で 切れる。変更は、その後に起動する子プロセスから効く。- プロキシは、プログラムがプロキシの環境変数を読むことに頼る。読まないプログラムは制限できない。
- エージェントの
envの設定でプロキシの変数を指定しているときは、何も注入しない。
SSH のリモート
許可リストは手元の PC のものだけで、接続時と変更のたびにリモートのサーバーへ送る。リモートで動く ACP エージェントと MCP サーバーには、リモートのサーバーが自分の loopback のプロキシを立てる (Windows のリモートを除く)。
remote.relay_http_through_client (既定でオン) では、リモートのダウンロードを手元の PC 経由で行う。
インターネットに出られないリモートでも言語サーバーを取ってこられる。
エージェントのサンドボックス
サンドボックスの中のコマンドが届く範囲は、サンドボックス自身の許可を許可リスト (と loopback) で 絞ったもの。サンドボックスは許可リストを狭めることはできるが、広げることはできない。WSL と SSH の リモートでも同じ。変更は次のコマンドから効く。
内蔵ブラウザー
内蔵ブラウザーのパネルは、ターミナルと同じく人が操作するものとして、既定では制限しない。
browser.use_egress_proxy (内蔵ブラウザーを許可リストの対象にする) をオンにすると許可リストを通す。
ブラウザーを次に起動したときから効く。
テレメトリ、コラボレーション、更新
- このビルドは Zed 社へテレメトリもクラッシュレポートも送らず、設定にも出ない。
- コラボレーション (通話と画面共有) は ForgeKairos に組み込んでいない。
auto_install_extensionsは空で、起動時に何もダウンロードしない。auto_updateはオフ。更新の確認は ForgeKairos の GitHub Releases だけに問い合わせる (インストールと更新 を参照)。- 編集予測はオフ (
edit_predictions.providerは"none")。