Gemini CLIにモデル一覧を確認するコマンドと、コンテナでの実行時にホストのエディターへ接続する機能が加わった。モデル一覧を自動化ツールで読み取ったり、隔離された開発環境でエディター機能を使ったりする開発者は、一覧取得とIDE連携をそれぞれ行いやすくなる。

1. モデル一覧をターミナルとJSONで確認

11月4日に公開されたこのバージョンでは、gemini modelsでモデル情報を取得する。gemini models listも同じ一覧を出力し、ターミナルで読みやすいテキストか、別のプログラムが処理できるJSONを選べる。

JSONは配列で、各項目にモデル識別子、表示名、説明、入出力トークンの上限が含まれる。そのため、モデル名の確認だけでなく、後続のスクリプトで一覧を読み取り、選択や表示に活用できる。

一覧の確認は、対話画面やサンドボックスを初期化する前に完了する。コマンドの結果を次のプログラムへ渡すパイプで出力する際に、標準出力という通常の結果出力先に認証情報の更新ログが混ざらないよう、ユーザー入力を待たない非対話型の一覧取得では、不要な認証更新も省略する。

原文の検証手順で、パッケージをビルドした後に実行するJSON出力の例は次のとおり。専用の取得コマンドと一覧出力用のオプションを、それぞれ使う方法だ。

node packages/cli/dist/index.js models -o json | jq .
node packages/cli/dist/index.js --list-models -o json | jq .

2. 隔離されたコンテナとホストのエディターを仲介

従来はCLIが隔離された実行空間であるコンテナサンドボックス内にあり、エディターが外部のホストコンピューターにあると、IDE連携が動作しなかった。エディター拡張機能がホスト内からの接続のみを受け付け、認証トークンを要求する一方、ランチャーはそのトークンをコンテナに渡していなかったためだ。

新方式では、ホストのCLIランチャーが認証情報を保持したままエディターと通信し、コンテナのコマンド実行経路と、プログラム間の通信接続点である内部ソケットを使ってやり取りを中継する。ネットワークの代わりに標準入出力で接続するため、コンテナのネットワークを別途隔離するgVisor環境でも利用できるよう設計されている。

中継機能はサンドボックスのセッションが維持されている間、動作する。エディター拡張機能との接続が切れると、CLIに接続を再び有効にするよう案内が表示され、次回の接続初期化時にホスト側でエディターを再検出して接続する。

3. エディターでの作業を継続し、パス検証はホストに任せる

ユーザーはVS Codeでプロジェクトを開き、Gemini CLIのコンパニオン拡張機能を起動した後、エディターの統合ターミナルでコンテナ方式のCLIを起動する。コンテナイメージにはnodeが必要で、サンドボックスの起動時に拡張機能が実行されていなければならない。

接続後は/ide statusで状態を確認し、修正を依頼してエディターで変更前後の差分を確認できる。原文の検証手順では、エディターで修正を承認または拒否した結果がCLIにも伝わるかを確認している。

開発者は実行環境をコンテナで隔離しながら、開いているファイルのコンテキスト共有と変更レビューの機能を引き続き使える。その代わり、ホストのランチャーが通信の中継とアクセス境界の検証を担う。許可されたツール要求と作業フォルダー内のパスのみを通し、フォルダー外のファイルに対する差分要求は、エディターに届く前に拒否する方式だ。

4. サポート範囲と確認済みの環境

変更はDockerとPodmanの実行経路に適用された。開発者が変更提案に記録した検証環境はLinuxワークステーションとDocker 29.7で、通常のDocker実行と、gVisor用ランタイムであるrunscを使った実行を両方試した。実際のVS Codeウィンドウと、エディターを模したテスト用プログラムの両方で接続を確認した。

ただし、LXCとWindowsホストは今回の実装対象に含まれず、変更前のイメージでは中継接続がない場合に以前の案内文が表示されることがある。検証ホストで管理者権限なしに実行するPodmanは、ホストとコンテナのアカウントを対応付ける既存のユーザーIDマッピングの問題によりCLI起動前に失敗したため、この実行経路は小さな単位で動作を確認する単体テストのみで検証した。

今回のバージョンの要点は、モデル情報を自動化に渡す入口を作り、コンテナの隔離を維持しながらエディター作業を続けるための接続経路を整えたことにある。