Gemini CLI v0.64 で @ を含むコードを渡すと固まる不具合と headless の信頼状態が修正
v0.64.0 は新機能のない修正のみのリリースです。@scope/pkg を含むコードを -p に流すと CPU 100% で止まる不具合、headless で未信頼フォルダが信頼済みになる問題、ファイル書き込みの atomic 化を解説します。
Gemini CLI の v0.64.0 には新機能がありません。リリースノートの「What's Changed」は 17 件すべてが修正・リファクタリング・リリース作業です。
ただし、そのうち 2 件は実害の大きい不具合の修正です。@ を含むコードを -p に流すと CPU 100% のまま固まる問題と、headless モードで未信頼のフォルダが信頼済みとして扱われる問題です。前者に心当たりがあるなら、更新する理由になります。
KEY POINT
この記事で分かること
@scope/pkgのようなコードを渡すと固まっていた原因と、効いていた回避策- headless モードのフォルダ信頼が実際の判定とずれていた問題
- ファイル書き込みと状態保存が atomic になったこと
@ を含むコードを渡すと CPU 100% で固まる
修正されたのは PR #29557(Issue #29434)です。症状は、-p に標準入力でコードを流したとき、モデルへのリクエストを送る前に止まるというものでした。報告者の記述では「The node process sits at ~100% CPU (state RN) indefinitely」です。
引き金は、@ で始まるトークンの直後に二重引用符が来て、そのあとにも引用符付きの文字列が続く入力です。具体的には、スコープ付きの npm パッケージを import する行が該当します。
import { x } from "@scope/pkg";
import { y } from "./local";
症状は次のとおりでした。
| 項目 | 挙動 |
|---|---|
| 出力 | 何も出ない。エラーも出ない |
--output-format stream-json | init イベントだけが出て止まる |
| シグナル | SIGINT と SIGTERM を無視する。SIGKILL でしか止まらない |
| 再現バージョン | 報告者は v0.59.0 と v0.60.0 で再現したと書いている |
報告者は、@ のパスを拾う正規表現が複数の引用符の範囲をまたいで一致し、結果が glob として扱われて、巨大なブレース展開を minimatch が同期的に処理するためだと分析しています。これは報告者による分析で、公式の修正内容としては「@ inside code による CPU ハングと引用符の飲み込みを止める」とだけ書かれています。
古いバージョンを使い続ける場合の回避策
更新できない事情があるなら、渡すテキスト中の @ をすべてエスケープすると回避できる、と報告者は書いています。CI で gemini -p にソースコードを流している場合は、更新するまでこの前処理を挟んでください。
headless で未信頼フォルダが信頼済みになっていた
PR #29528(Issue #29031)の修正です。headless モード(-p)では、フォルダ信頼を扱う内部の処理が信頼状態を常に「信頼済み」として渡していました。結果として、警告メッセージは「このフォルダは信頼されていない」と出ているのに、アプリ側の判定は信頼済みになる、というずれが起きていました。
フォルダ信頼は、信頼していないプロジェクトの設定を読み込ませないための機能です。公式ドキュメントによると、未信頼のフォルダでは次が無効になります。
- プロジェクトの
.gemini/settings.jsonを読み込まない - プロジェクトの
.envファイルを読み込まない - 拡張機能のインストール・更新・削除ができない
- ツールの自動承認が無効になる(常に確認が入る)
- ローカル設定で指定したディレクトリからの自動メモリ読み込みが無効になる
- MCP サーバーに接続しない
.tomlのカスタムコマンドを読み込まない(プロジェクトとユーザーの両方)
つまり、ずれていた間は、信頼していないフォルダの設定やフックや MCP サーバーが headless 実行で効いてしまう余地がありました。CI でこの機能に頼っているなら、更新する理由になります。
フォルダ信頼の既定値は公式ドキュメント内で食い違っている
設定一覧は security.folderTrust.enabled の既定を true と書いています。一方 Trusted Folders のページは「The Trusted Folders feature is disabled by default」と書いています。どちらも同じリポジトリの main にあるドキュメントです(2026 年 10 月 21 日確認)。自分の環境でどちらになっているかは、実際に /permissions を開いて確認してください。
有効にするときの書き方は次のとおりです。
{
"security": {
"folderTrust": {
"enabled": true
}
}
}
判断の結果は ~/.gemini/trustedFolders.json に保存されます。headless で未信頼のフォルダを実行すると FatalUntrustedWorkspaceError で終了するため、CI で通す必要がある場合は --skip-trust フラグか GEMINI_CLI_TRUST_WORKSPACE=true を使います。MCP サーバーの設定は Gemini CLI で MCP サーバーを設定する方法 にまとめてあります。
書き込みと状態保存が atomic になった
データが壊れる系の修正が 3 件入りました。
| 修正 | 内容 |
|---|---|
| PR #29499 | ファイルツールの操作を直列化し、書き込みを atomic にした |
| PR #29558 | 状態の保存を atomic にし、壊れていた場合はバックアップから復旧するようにした |
| PR #29568 | 会話の記録を追記のみの差分方式にし、履歴の保持範囲に上限を設けた |
並列に走るファイル操作が互いの書き込みを壊す問題と、保存中に落ちたときに状態ファイルが壊れる問題への対処です。長時間のセッションを回している場合に効きます。
Windows と操作まわりの修正
残りのうち、日常的に効くものは次の 4 件です。
- Windows の ConPTY が IME のカーソル位置を転送するようになった(PR #29560)。日本語入力の変換中にカーソル位置がずれる問題に対応します
- Ctrl+C の緊急中断が、処理の実行中でもキャンセル処理に届くようになった(PR #29586)
@file:lineの参照と、ゴーストテキストの折り返しによるハングが修正された(PR #29581)- Enter と Space が選択リストの項目を確実に確定するようになった(PR #29502)
このほか、Windows で拡張機能を更新する際のファイルロックによるディレクトリ削除エラーに再試行が入り(PR #29540)、スクロール位置の保持(PR #29520)と ACP のセッション解決(PR #29580)も直っています。前バージョンの内容は Gemini CLI v0.63 で diff の cannot spawn エラーが修正 を参照してください。
まとめ
- v0.64.0 に新機能はない。「What's Changed」の 17 件はすべて修正・リファクタリング・リリース作業
@scope/pkgを含むコードを-pに流すと CPU 100% で固まる不具合が修正された。SIGKILL でしか止まらなかった- headless モードで未信頼のフォルダが信頼済みとして扱われる問題が修正された
- ファイル書き込みと状態保存が atomic になり、状態が壊れたときはバックアップから復旧する
security.folderTrust.enabledの既定値は、公式ドキュメント内でtrueと「disabled by default」に食い違っている
よくある質問
- v0.64.0 に新機能はありますか?
- ありません。リリースノートの「What's Changed」は 17 件すべてが修正・リファクタリング・リリース作業です。
- @ を含むコードを渡すと固まるのはどのバージョンですか?
- 報告者は v0.59.0 と v0.60.0 で再現したと書いています。修正は PR #29557 で入り、v0.64.0 に含まれています。
- フォルダ信頼は既定で有効ですか?
- 公式ドキュメント内で記述が食い違っています。設定一覧は security.folderTrust.enabled の既定を true と書き、Trusted Folders のページは「disabled by default」と書いています(2026 年 10 月 21 日確認)。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合は お問い合わせからお知らせください。