AI
Zed と共通の AI の機能 (エージェントパネル、インラインアシスタント、プロバイダー) は Zed の AI の文書 を見る。この章は ForgeKairos が変えた点と足した点を書く。 制限の全体の図は AI と通信の制限の全体図 を見る。
既定でオフ
AI の機能はすべて、有効にするまでオフである。設定 → AI の先頭の エージェントを有効にする
(設定 agent.enabled、既定 false) で有効にする。変更は再起動なしで効き、同じ場所で戻せる。
AI を切るのに disable_ai を使わない。一方向の切り替えで、戻せない。
- 既定のモデルは設定していない。エージェントを有効にすると、認証済みの最初のプロバイダーを使う。 このため、動いているローカルの Ollama や LM Studio は設定なしで選ばれる。
- 編集予測はオフ (
edit_predictions.providerは"none")。 - エージェントパネルは起動時に開かない (
agent.starts_openはfalse)。
ローカル LLM
Ollama (localhost:11434)、LM Studio (localhost:1234)、llama.cpp (localhost:8080) は loopback で動き、
loopback は許可リストが常に許可する。同意も許可リストへの追加も要らない。OpenAI 互換と Anthropic 互換の
サーバーは、カスタムのプロバイダーとして足せる。
自分で足したプロバイダーは、設定 → AI → LLM プロバイダー で、その見出しの鉛筆 (編集) とゴミ箱 (削除) の ボタンから後で変えられる。
- 編集では API キーの欄は空で始まり、空のままなら保存済みのキーを使う。API URL を変えるとキーを入れ直させ (保存済みのキーを別の URL へ送らない)、古い URL 用に保存したキーをシステムのキーチェーンから消す。 API キーなしで接続する をオンにして保存しても、保存済みのキーを消す。どちらも、同じ URL を使うほかの プロバイダーがあればキーを残す。ホストが変わると同意をやり直させる。
- 名前を変えると、エージェントの設定でそのプロバイダーを指す箇所と同意を新しい名前に移す。保存済みの スレッドは古い名前のまま。
- 削除は確認してから行い、消えるもの (設定の項目、保存済みの API キー (同じ URL をほかのプロバイダーが使うなら 残す)、同意と許可リストのホスト、そのプロバイダーを指すモデルの選択) を示す。プロバイダー自身の画面の プロバイダーを削除 も同じ。
- リリースチャンネル・OS・プロファイルの上書きで定義したプロバイダーは、ここでは編集できないと示す。
クラウドのプロバイダー
外部の AI プロバイダーを使う前に、入力と会話がプロバイダーに送られ、保存や学習に使われうるという警告を 出す。確認のチェックを入れるとそのプロバイダーが有効になる。それまでは何も送らない。
- 警告には、そのプロバイダーに必要なホストと 許可リストに追加 のボタンを出す (外部通信の統制 を参照)。
- 承諾したプロバイダーは
acknowledged_external_ai_providersに記録する。項目を消すと警告が戻る。 承諾を取り消すと、ほかの承諾済みのプロバイダーが使わないホストを許可リストから外すか尋ねる。 - プロジェクトの設定では承諾できない。
- Copilot と Zed のホスト型の編集予測にも同じ承諾が要る。
Claude のサブスクリプション
内蔵の Anthropic プロバイダーは API キーだけを使う。Claude Pro / Max のサブスクリプションは Claude Code で使う。
- Claude Code を起動 は、公式の改変していない Claude Code CLI を開く。エージェントが有効ならエージェント パネルのタブに、そうでなければターミナルパネルに開く。サインインは CLI の中で Anthropic 自身の手順で 行い、ForgeKairos は URL もトークンも扱わない。
- ACP の Claude エージェントは、それ自身の
/loginでサブスクリプションのサインインができる。API キーでも 使え、両方あれば API キーを優先する。サブスクリプションのサインインを隠すにはagent_servers.<id>.allow_subscription_sign_inをfalseにする。 - 内蔵のエージェントと、後述の権限の判定にはサブスクリプションを使わない。
Claude Code 向けの IDE サーバー
ide_server.enabled (IDE サーバーを有効にする、既定でオフ) をオンにすると、ForgeKairos は Claude Code
CLI が繋いでくる loopback のサーバーを 127.0.0.1 で動かす。外部へは接続しない。動いている間、ローカルの
プロジェクトごとに ~/.claude/ide/<port>.lock を書く。
これを通して CLI は次のことができる。
- ForgeKairos のタブで差分を開き、承認・却下する (書き込みは CLI が行う)
- 診断、開いているエディター、選択範囲、ワークスペースのフォルダーを読む
- ファイルを開く、保存する
- 最後に失敗したタスクの出力の末尾を読む (
ide_server.share_task_output)
ide_server.assist_tools (エージェントに IDE ツールを渡す、既定でオン) では、エージェントに MCP サーバー
zed を渡す。ツールは highlightCode、annotateCode、startCodeTour、clearAnnotations、getHover、
getDocumentSymbols、searchSymbols、findDefinition、findReferences、getCallHierarchy、
getTypeLayout。注釈は保存せず、Esc で消える。シンボル検索はモデルも埋め込みも使わない。
内蔵のエージェントには、対応するツール hover、search_symbols、call_hierarchy、type_layout、
highlight_code、annotate_code、code_tour、clear_annotations がある。
エージェントのサンドボックス
エージェントが実行するコマンドは常にサンドボックスの中で動く。エージェントはサンドボックスの外での実行を 求められない。サンドボックスを作れないときは、再試行か取り消しを選ぶ。
- Windows は ForgeKairos の WSL の補助、Linux は bubblewrap、macOS は Seatbelt を使う。
~/.ssh、.npmrc、クラウドの CLI の設定、ブラウザーのプロファイル、ForgeKairos 自身のデータなどの 資格情報は、サンドボックスの中から読めない。- 外部の ACP エージェントもサンドボックスの中で動く (Windows では WSL の中)。
- リポジトリのメタデータを書く Git の操作 (コミットなど) はユーザーが行う。
- サンドボックスのネットワークは許可リストで制限する。
- サンドボックスを切る手段は
agent.sandbox_permissions.allow_unsandboxed(既定false) だけ。切っている 間は、すべてのコマンドで確認する。
サンドボックスの外で起動する
Claude Code や ACP エージェントを、ユーザーが自分でサンドボックスの外で起動できる。
- エージェントパネルの + メニューの Claude Code をサンドボックスの外で起動…
- 起動に失敗したときの通知や ACP の失敗のカードのボタン
- パネルの ⋯ メニューからの起動し直し
agent.claude_code_run_outside_sandboxとagent_servers.<id>.run_outside_sandbox(どちらも既定false、 ユーザー設定のファイルからだけ読む)
外で動いている間は常にバナーを出し、タブの名前にもそれを示す (例:「Claude Code (サンドボックスの外)」)。
サインインはふだんの ~/.claude のものを使う。ACP のスレッドの同意はスレッドごとに残り、AI のページの
サンドボックスの外での起動の同意 で取り消せる。
ツールの権限
agent.tool_permissions.default は "confirm" (既定)、"allow"、"deny"、"auto" のどれか。
エージェントパネルのメニューには 確認する、AI が判定 (安全なら自動実行)、全自動 (サンドボックス内) がある。
"auto"は、操作ごとに別のモデル (agent.permission_judge_model、無ければ高速モデル、次に既定のモデル) に 10 秒の上限で尋ねる。答えがSAFEのときだけ確認なしで実行する。コマンドとパスがそのモデルの プロバイダーに送られるので、ローカルのモデルを勧める。- 次のものは、どのモードでも確認する: 組み込みの安全の規則と
always_confirmの規則、サンドボックスの外の コマンド、サンドボックスの権限の昇格、.zed・グローバルの設定・スキル・シンボリックリンクへの書き込み、 プロジェクトの外のファイル操作。
プロファイルは 書き込み (既定)、質問、編集のみ、最小。編集のみはファイルを読み、編集するが、 ターミナル、fetch、削除、MCP のツールを持たない。
エージェントが書き込んだ後のプロジェクトのコードの停止
agent.pause_worktree_code_after_agent_writes をオンにすると、エージェントがプロジェクトのフォルダーに書き込んだ後、
そのフォルダー自身のコード (フォーマッター、ESLint、Python のインタープリター、rust-analyzer のビルドスクリプト) は、
変更を確認して 再開 を押すまで動かない。既定はオフで、オンにできるのはユーザー設定のファイルだけ。
止めているフォルダーがある間は、ステータスバーに件数が出る。押すと確認と再開の画面が開く。
MCP サーバー
設定 → AI → MCP サーバー で、各サーバーの状態の表示、接続の確認、追加ができる。ここで足したサーバーは ユーザー設定に入る。追加の画面には同梱のテンプレート (filesystem、github、playwright、fetch、memory) があり、必要なホストを出す。
プロジェクトの .zed/settings.json が定義する MCP サーバー、言語サーバー、外部のフォーマッターは、その中身を
承認するまで起動しない。中身が変わればまた確認する。承認の一覧は 設定 → 全般 → セキュリティ にあり、
取り消せる。session.trust_all_worktrees でも承認されない。
エージェントに見せないファイル
private_files (既定では .env*、*.pem、*.key、*.cert、*.crt、secrets.yml) や
file_scan_exclusions に一致するファイル、プロジェクトの外のファイル、外を指すシンボリックリンクは、
エージェントのツールと添付から隠す。こうしたファイルについて、定義と参照は場所 (パスと行) だけを返し、
中身は返さない。同じパスの別の綴り (大文字・小文字、Windows の短い名前、Unicode の正規化) も同じに扱う。
定義・参照・呼び出し階層の 1 回の応答が新しく開くファイルは、1000 個・合計 64 MiB までにする。
添付
大きな添付は、agent.context_attachments の上限 (設定の一覧 を参照) の中で、アウトラインと
続きの読み方の案内にして送る。添付のチップには大きさの見積もりを出し、右クリックで 自動・全文・要約 を
選べる。ブランチの差分は要約して送り、全文はエージェントが git_diff ツールで読める。
モデルの選択
お気に入りのモデル (agent.favorite_models) があるときは、ほかのプロバイダーの群を件数付きの見出しに
畳み、使っているモデルの群は開いたままにする。検索は群の名前にも一致する。最下段の エージェント の節
から、Claude Code の起動や、ほかのエージェントでのスレッドの開始ができる。
信頼していないフォルダー
信頼していないフォルダーでは、エージェントのプロファイルを「最小」(ツールなし) に下げる。入力欄の上に 理由を出し、モデルにもツールが無い理由を伝える。フォルダーを信頼すると、すぐにツールが戻る。