Gemini CLI v0.63 で diff の cannot spawn エラーが修正、変更点は全 15 件
Gemini CLI v0.63.0 は 15 件すべてが修正のリリースです。diff で cannot spawn エラーが出ていた原因の Git 設定上書きの削除、ツール出力の打ち切りが負の値で逆に 2 倍に膨らんでいた不具合、MCP 設定の判別の修正を整理します。
Gemini CLI の v0.63.0 は、15 件すべてが修正のリリースです。新しい設定キー、新コマンド、破壊的変更はリリースノートに載っていません。
結論として、このバージョンで価値があるのは 2 件です。diff の実行時に cannot spawn : No such file or directory が出ていた原因の削除と、ツール出力の打ち切りが負の値のときに逆に出力を膨らませていた不具合の修正です。
v0.63.0 のリリースノートは PR のタイトルが並んだ一覧で、各変更の説明文は付いていません。この記事では個別の PR と公式の設定リファレンスで裏を取れた範囲だけを書き、取れなかったものはその旨を明記します。
KEY POINT
この記事で分かること
cannot spawn :という diff のエラーが出ていた原因と、直ったこと- ツール出力の打ち切り設定を 0 以下にしたときの挙動
- MCP の設定まわりとプラン実行に入った修正
v0.63.0 の 15 件の内訳
| 分類 | 件数 | 内容 |
|---|---|---|
| 開発者に影響する修正 | 9 | diff、ツール出力、MCP 設定、認証ループ、stdin、一時ディレクトリ、プラン実行など |
| リリース作業(Changelog・バージョン採番) | 4 | v0.61.0-preview.1 / v0.61.0 / v0.62.0-preview.0 の Changelog、nightly への採番 |
| 内部的な修正 | 2 | ACP のセッション初期化順、ポリシーとワークフロー解析の整合 |
新機能にあたる項目は 1 件もありません。前バージョンの v0.62.0 ではモデルが 2 つ追加されていました(詳細は Gemini CLI v0.62 の変更点)。
diff の cannot spawn エラーが直った
これが v0.63.0 でいちばん影響の大きい修正です。症状は、Gemini CLI の操作中に Git の diff が次のようなエラーで失敗するものです。
cannot spawn : No such file or directory
error: cannot run : No such file or directory
原因は Gemini CLI 側にありました。以前のバージョンで Git の操作を隔離するために環境変数で Git 設定を上書きする仕組みが入り、そのとき diff.external を空文字に設定していました。「外部 diff を無効にする」意図だったものです。
ところが Git は diff.external に入っている値を、空文字であっても実行可能なコマンドのパスとして扱います。結果として Git が空文字を起動しようとして失敗していました。
v0.63.0 では、ShellExecutionService の Git 上書きリストと gitUtils.getSafeGitEnv() の両方からこの diff.external が削除されました。これで Git は組み込みの diff を使います。
diff.external は Gemini CLI の設定キーではない
diff.external は Git 側の設定キーです。公式の設定リファレンスには diff セクションも external キーもありません。settings.json に書いても効きません。エディタで開く設定として公式にあるのは general.preferredEditor と general.openEditorInNewWindow です。
ツール出力の打ち切りを 0 以下にしたときの挙動が直った
公式の設定リファレンスには、ツール出力の打ち切りに関する設定として次のキーがあります。
| 設定キー | 既定値 | 説明 |
|---|---|---|
tools.truncateToolOutputThreshold | 40000 | 大きなツール出力を打ち切るときに表示する最大文字数。0 または負の値で打ち切りが無効になる。再起動が必要 |
contextManagement.tools.distillation.maxOutputTokens | 10000 | 大きなツール出力を打ち切るときにモデルへ渡す最大トークン数。再起動が必要 |
打ち切りを使いたくない場合は、ユーザー設定の ~/.gemini/settings.json に次のように書きます。
{
"tools": {
"truncateToolOutputThreshold": 0
}
}
v0.63.0 より前は、この値を負の値にすると打ち切りが無効になるどころか、出力が約 2 倍に膨らんでいました。内部の formatTruncatedToolOutput が先頭と末尾を切り出すときに負のインデックスを渡してしまい、先頭側と末尾側の両方がほぼ全文を拾っていたためです。
v0.63.0 では maxChars <= 0 の場合に文字列をそのまま返すガードが入り、0 でも負の値でも打ち切りが無効になります。
設定キーと内部関数の対応は裏を取れなかった
formatTruncatedToolOutput の maxChars に tools.truncateToolOutputThreshold の値がそのまま渡るのかは、PR の説明にも公式ドキュメントにも書かれておらず、確認できませんでした。0 を指定する書き方は公式リファレンスの説明に沿ったものです。
MCP とプラン実行まわりの修正
残りのうち、設定に関係するものは次の 2 件です。
- MCP の設定不足と JSON の破損を区別するようになった: これまで MCP の有効化設定が「書かれていない」場合と、
settings.jsonが「壊れている」場合が同じ扱いになっていました。v0.63.0 で区別されます。MCP の有効・無効を決める公式の設定キーはmcp.allowed、mcp.excluded、admin.mcp.enabledです(いずれも再起動が必要)。サーバーごとのenabledフィールドはありません。設定の書き方は Gemini CLI に MCP サーバーを追加する にまとめてあります。 - 非対話モードで自律的なプラン実行ができるようになった: プラン関連の公式設定キーは
general.plan.enabled(既定true)、general.plan.modelRouting(既定true)、承認モードのgeneral.defaultApprovalMode(default/auto_edit/plan)です。この修正がどの症状を解消するかはリリースノートに書かれておらず、確認できませんでした。
このほか、接続復帰時の再試行インジケータの表示、能力検出のあとに停止した stdin の復帰、バックグラウンドのシェル実行終了時の一時ディレクトリ削除、ファイル競合やヘッドレス環境のキーリングによる認証の無限ループの防止が入っています。認証の設定については Gemini CLI の無料枠の上限 も参照してください。
まとめ
- v0.63.0 は 15 件すべてが修正で、新機能も新しい設定キーもない
- diff で
cannot spawn : No such file or directoryが出ていたのは、Gemini CLI が Git のdiff.externalを空文字で上書きしていたため。v0.63.0 で削除された diff.externalは Git の設定キーで、Gemini CLI のsettings.jsonのキーではないtools.truncateToolOutputThresholdを負の値にすると出力が約 2 倍に膨らむ不具合が直り、0 以下で打ち切りが無効になる- MCP の有効化設定は
mcp.allowed/mcp.excluded/admin.mcp.enabledで、サーバーごとのenabledはない
よくある質問
- v0.63 で追加された新機能はありますか?
- ありません。リリースノートの 15 件は修正とリリース作業の項目だけで、新しい設定キーやコマンド、破壊的変更は載っていません。
- cannot spawn : No such file or directory というエラーは直りますか?
- diff の実行時に出ていたものなら直ります。Gemini CLI が内部で Git の diff.external を空文字で上書きしていたため、Git が空文字をコマンドとして起動しようとして失敗していました。v0.63.0 でこの上書きが削除され、Git 組み込みの diff が使われます。
- diff.external は settings.json に書く設定ですか?
- いいえ。diff.external は Git 側の設定キーで、Gemini CLI の公式設定リファレンスには diff セクションも external キーもありません。今回削除されたのは Gemini CLI が内部で渡していた Git 設定の上書きです。
- ツール出力の打ち切りを無効にしたいときは何を設定しますか?
- 公式設定リファレンスでは tools.truncateToolOutputThreshold(既定 40000)を 0 または負の値にすると打ち切りが無効になると説明されています。再起動が必要です。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合は お問い合わせからお知らせください。