@google/gemini-cli 0.64.0-preview.0 → 0.65.0-nightly.20261007.gef59c532f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/bundle/{chunk-EDVFNWRG.js → chunk-2QX7AFU2.js} +1 -1
  2. package/bundle/{chunk-EDYPRCAA.js → chunk-354KMHUX.js} +2 -2
  3. package/bundle/{chunk-UFQDAROY.js → chunk-3F7OA7UU.js} +1 -1
  4. package/bundle/{chunk-HN74ORTP.js → chunk-46A63GIT.js} +27 -4
  5. package/bundle/{chunk-ZQW7OGUO.js → chunk-6FH32SR7.js} +184 -45
  6. package/bundle/{chunk-SDWOC67Z.js → chunk-7NUXN3UV.js} +1 -1
  7. package/bundle/{chunk-Y2HXXBXI.js → chunk-ASQYH7O3.js} +1 -1
  8. package/bundle/{chunk-EBP6K2WG.js → chunk-BT4BJCGX.js} +32 -16
  9. package/bundle/{chunk-UBGF6JU5.js → chunk-CIKQQ32X.js} +1 -1
  10. package/bundle/chunk-DIMRHS5O.js +154 -0
  11. package/bundle/{chunk-NX7TO2DU.js → chunk-EIHDEZQ3.js} +1 -1
  12. package/bundle/{chunk-QUCRASYB.js → chunk-FE5UXCSL.js} +1 -1
  13. package/bundle/{chunk-EFX5XL6M.js → chunk-FTB4FVEK.js} +2 -2
  14. package/bundle/{chunk-A4TO2DY2.js → chunk-HYF74TEA.js} +8018 -14883
  15. package/bundle/{chunk-6OFXOGEG.js → chunk-JYWQ73Z5.js} +193 -47
  16. package/bundle/{chunk-HSZIYPL6.js → chunk-KHG7NKQK.js} +3 -3
  17. package/bundle/chunk-KTOZF7BG.js +401335 -0
  18. package/bundle/{chunk-2NQXIWQK.js → chunk-KV6RPWUP.js} +27 -4
  19. package/bundle/{chunk-KCCVXZ52.js → chunk-LNFN3PQL.js} +32 -16
  20. package/bundle/{chunk-MLSLNORV.js → chunk-LS355CSQ.js} +3 -3
  21. package/bundle/{chunk-2VN53SWW.js → chunk-NDVLWD4V.js} +9 -8
  22. package/bundle/{chunk-ZOHM7BPT.js → chunk-NUWDVBI7.js} +1 -1
  23. package/bundle/{chunk-VJYKQD5D.js → chunk-PYD373NJ.js} +3 -3
  24. package/bundle/{chunk-VBVCLWLA.js → chunk-QTGBWTWR.js} +2 -2
  25. package/bundle/chunk-U6ZQ2RUE.js +1571 -0
  26. package/bundle/chunk-UV4NDIKL.js +118 -0
  27. package/bundle/{chunk-U76XPSKR.js → chunk-VAONEIPY.js} +96 -67
  28. package/bundle/chunk-WGJZZTZY.js +425 -0
  29. package/bundle/{chunk-ZPLFLZQA.js → chunk-WXXOP3OP.js} +33 -8
  30. package/bundle/chunk-XOG2HJ3Y.js +17530 -0
  31. package/bundle/chunk-YSKY65XX.js +512 -0
  32. package/bundle/chunk-ZTPICUAP.js +103137 -0
  33. package/bundle/{cleanup-GGCB2LVD.js → cleanup-3V27AYOD.js} +2 -2
  34. package/bundle/{cleanup-JRDG3OTL.js → cleanup-4G3NPQT4.js} +2 -2
  35. package/bundle/{cleanup-SSW6IXTR.js → cleanup-5XQCOW5U.js} +2 -2
  36. package/bundle/cleanup-BBUUFPW4.js +32 -0
  37. package/bundle/{core-IUIZE6JW.js → core-AAGHH24E.js} +1 -1
  38. package/bundle/{devtoolsService-XZCKFZP5.js → devtoolsService-EVGTOLCK.js} +2 -2
  39. package/bundle/{devtoolsService-3SADPKKB.js → devtoolsService-J7VIMPHG.js} +2 -2
  40. package/bundle/{devtoolsService-MF6JKRUV.js → devtoolsService-PZBHHYCE.js} +4 -3
  41. package/bundle/devtoolsService-Z4ND55GM.js +4359 -0
  42. package/bundle/{dist-7L3BRW6V.js → dist-6PBUOORE.js} +1 -1
  43. package/bundle/{core-6HRWFQZW.js → dist-Q7B3BSZW.js} +1 -1
  44. package/bundle/dist-Z23CJKTC.js +2252 -0
  45. package/bundle/docs/changelogs/index.md +14 -0
  46. package/bundle/docs/changelogs/latest.md +55 -34
  47. package/bundle/docs/changelogs/preview.md +59 -54
  48. package/bundle/docs/tools/mcp-server.md +41 -12
  49. package/bundle/{gemini-JPMMQ3KA.js → gemini-2ZS4H5D5.js} +41 -21
  50. package/bundle/{gemini-QOQNG5VY.js → gemini-NHT6XRJ6.js} +241 -205
  51. package/bundle/gemini-ORQLMSXW.js +17954 -0
  52. package/bundle/{gemini-ZMMDUAQJ.js → gemini-YDK3BHCP.js} +41 -21
  53. package/bundle/gemini.js +7 -7
  54. package/bundle/{interactiveCli-R3P4A3FC.js → interactiveCli-22MUJI66.js} +23 -14
  55. package/bundle/{interactiveCli-UDWGRVJL.js → interactiveCli-2JNS4RJW.js} +23 -14
  56. package/bundle/{interactiveCli-3I4TG5SK.js → interactiveCli-EHUGFQPB.js} +327 -299
  57. package/bundle/interactiveCli-YANG53MI.js +34988 -0
  58. package/bundle/{liteRtServerManager-OVPUSK2T.js → liteRtServerManager-PGT3WQWS.js} +4 -4
  59. package/bundle/{liteRtServerManager-RAV63AGE.js → liteRtServerManager-TW45VSAX.js} +4 -4
  60. package/bundle/{liteRtServerManager-4MWCEVVM.js → liteRtServerManager-VCTOOEN4.js} +4 -4
  61. package/bundle/liteRtServerManager-Y2QFKZ5W.js +65 -0
  62. package/bundle/{oauth2-provider-XFP63FGJ.js → oauth2-provider-4AK74O2H.js} +1 -1
  63. package/bundle/{oauth2-provider-FVTRRJZR.js → oauth2-provider-IUYZ2A7H.js} +1 -1
  64. package/bundle/{oauth2-provider-EWOA64PR.js → oauth2-provider-JCJGEWMM.js} +38 -72
  65. package/bundle/oauth2-provider-QTTPZS6I.js +235 -0
  66. package/bundle/{start-DJAIXPPY.js → start-4O4IKUM4.js} +6 -6
  67. package/bundle/{start-VQQ2Q5KT.js → start-74BH6SEW.js} +6 -6
  68. package/bundle/{start-5O7TBK5L.js → start-EDAVUSEX.js} +6 -6
  69. package/bundle/start-Q6WRPG2O.js +18 -0
  70. package/package.json +1 -1
@@ -18,6 +18,20 @@ on GitHub.
18
18
  | [Preview](preview.md) | Experimental features ready for early feedback. |
19
19
  | [Stable](latest.md) | Stable, recommended for general use. |
20
20
 
21
+ ## Announcements: v0.63.0 - 2026-10-06
22
+
23
+ - **Autonomous Plan Execution:** Enabled autonomous plan execution in
24
+ non-interactive mode to support unattended agent workflows
25
+ ([#29539](https://github.com/google-gemini/gemini-cli/pull/29539) by
26
+ @urielefrenvirtusa).
27
+ - **Core Stability and Memory Lifecycle:** Bounded tool output sizes and
28
+ optimized memory management in long-running agent loops while preventing
29
+ infinite authentication loops across headless and supervisor environments
30
+ ([#29451](https://github.com/google-gemini/gemini-cli/pull/29451) by
31
+ @diegogodinezr,
32
+ [#29448](https://github.com/google-gemini/gemini-cli/pull/29448) by
33
+ @villahernandez-coder).
34
+
21
35
  ## Announcements: v0.61.0 - 2026-09-23
22
36
 
23
37
  - **Core Security Hardening:** Prevented indirect prompt injection
@@ -1,6 +1,6 @@
1
- # Latest stable release: v0.61.0
1
+ # Latest stable release: v0.63.0
2
2
 
3
- Released: September 23, 2026
3
+ Released: October 6, 2026
4
4
 
5
5
  For most users, our latest stable release is the recommended release. Install
6
6
  the latest stable version with:
@@ -11,41 +11,62 @@ npm install -g @google/gemini-cli
11
11
 
12
12
  ## Highlights
13
13
 
14
- - **Prompt Injection Defense:** Enhanced security by preventing indirect prompt
15
- injection attacks through build file modifications and untrusted command
16
- flags.
17
- - **Sandbox & State Hardening:** Hardened filesystem boundaries and isolated
18
- internal runtime state to ensure more secure execution environments.
19
- - **Agent Loop Robustness:** Guaranteed that internal state properties within
20
- `AgentLoopContext` are fully preserved during object spread operations,
21
- improving agent reliability.
22
- - **Versioned Model Preserves:** Ensured explicit versioned Flash model IDs are
23
- correctly preserved and used directly during routing and execution.
14
+ - **Autonomous Plan Execution:** Enabled autonomous plan execution in
15
+ non-interactive mode, allowing automated agent workflows to run multi-step
16
+ plans without requiring interactive user confirmation.
17
+ - **Memory Lifecycle & Output Bounding:** Bounded tool output sizes and
18
+ optimized the memory lifecycle in long-running agent loops to prevent memory
19
+ exhaustion, while formatting full output when truncation is disabled.
20
+ - **Authentication Resilience:** Prevented infinite authentication loops caused
21
+ by file contention, headless keyring environments, and supervisor state drops,
22
+ ensuring reliable credential handling across environments.
23
+ - **CLI & Connection Recovery UX:** Displayed a retry progress indicator during
24
+ connection recovery, restored paused stdin after capability detection, and
25
+ ensured automatic temporary directory cleanup upon background shell execution
26
+ exit.
24
27
 
25
28
  ## What's Changed
26
29
 
27
- - Changelog for v0.60.0-preview.0 by @gemini-cli-robot in
28
- [#29251](https://github.com/google-gemini/gemini-cli/pull/29251)
29
- - chore(release): bump version to 0.61.0-nightly.20260908.gc647533d6 by
30
+ - fix(cli): display retry progress indicator during connection recovery (#28340)
31
+ by @amelidev in
32
+ [#29468](https://github.com/google-gemini/gemini-cli/pull/29468)
33
+ - Changelog for v0.61.0-preview.1 by @gemini-cli-robot in
34
+ [#29469](https://github.com/google-gemini/gemini-cli/pull/29469)
35
+ - Changelog for v0.61.0 by @gemini-cli-robot in
36
+ [#29472](https://github.com/google-gemini/gemini-cli/pull/29472)
37
+ - fix(cli): distinguish missing MCP enablement config from malformed JSON by
38
+ @jesussamuel-byte in
39
+ [#29446](https://github.com/google-gemini/gemini-cli/pull/29446)
40
+ - fix(cli): restore paused stdin after capability detection by @ugorla-dev in
41
+ [#29487](https://github.com/google-gemini/gemini-cli/pull/29487)
42
+ - fix(core): bound tool output size and optimize memory lifecycle in
43
+ long-running agent loops by @diegogodinezr in
44
+ [#29451](https://github.com/google-gemini/gemini-cli/pull/29451)
45
+ - fix(core): remove invalid diff.external override by @urielefrenvirtusa in
46
+ [#29467](https://github.com/google-gemini/gemini-cli/pull/29467)
47
+ - chore(release): bump version to 0.63.0-nightly.20260923.gf50ba8608 by
30
48
  @gemini-cli-robot in
31
- [#29254](https://github.com/google-gemini/gemini-cli/pull/29254)
32
- - Changelog for v0.59.0 by @gemini-cli-robot in
33
- [#29253](https://github.com/google-gemini/gemini-cli/pull/29253)
34
- - fix(core): preserve explicit versioned Flash model IDs by @SandyTao520 in
35
- [#29252](https://github.com/google-gemini/gemini-cli/pull/29252)
36
- - fix(core): prevent indirect prompt injection via build file modifications and
37
- untrusted flags by @villahernandez-coder in
38
- [#29250](https://github.com/google-gemini/gemini-cli/pull/29250)
39
- - fix(sandbox): harden filesystem boundaries and isolate runtime state by
40
- @diegogodinezr in
41
- [#29214](https://github.com/google-gemini/gemini-cli/pull/29214)
42
- - fix(core): ensure AgentLoopContext properties are preserved across object
43
- spread by @diegogodinezr in
44
- [#29335](https://github.com/google-gemini/gemini-cli/pull/29335)
45
- - fix(patch): cherry-pick 62364cb to release/v0.61.0-preview.0-pr-29443 to patch
46
- version v0.61.0-preview.0 and create version 0.61.0-preview.1 by
47
- @gemini-cli-robot in
48
- [#29455](https://github.com/google-gemini/gemini-cli/pull/29455)
49
+ [#29471](https://github.com/google-gemini/gemini-cli/pull/29471)
50
+ - Changelog for v0.62.0-preview.0 by @gemini-cli-robot in
51
+ [#29470](https://github.com/google-gemini/gemini-cli/pull/29470)
52
+ - fix(core): clean up temporary directory when background shell execution exits
53
+ by @jesussamuel-byte in
54
+ [#29437](https://github.com/google-gemini/gemini-cli/pull/29437)
55
+ - fix(acp): resolve session before config initialization and avoid same-minute
56
+ filename collisions by @jesussamuel-byte in
57
+ [#29463](https://github.com/google-gemini/gemini-cli/pull/29463)
58
+ - fix(core): align policy redirection gates, path validation, and workflow
59
+ parsing by @DavidAPierce in
60
+ [#29506](https://github.com/google-gemini/gemini-cli/pull/29506)
61
+ - fix(auth): prevent infinite auth loop from file contention, headless keyring,
62
+ and supervisor state drops (#28341) by @villahernandez-coder in
63
+ [#29448](https://github.com/google-gemini/gemini-cli/pull/29448)
64
+ - fix(core): enable autonomous plan execution in non-interactive mode by
65
+ @urielefrenvirtusa in
66
+ [#29539](https://github.com/google-gemini/gemini-cli/pull/29539)
67
+ - fix(core): disable truncation when maxChars <= 0 in formatTruncatedToolOutput
68
+ by @diegogodinezr in
69
+ [#29542](https://github.com/google-gemini/gemini-cli/pull/29542)
49
70
 
50
71
  **Full Changelog**:
51
- https://github.com/google-gemini/gemini-cli/compare/v0.60.0...v0.61.0
72
+ https://github.com/google-gemini/gemini-cli/compare/v0.62.0...v0.63.0
@@ -1,6 +1,6 @@
1
- # Preview release: v0.63.0-preview.0
1
+ # Preview release: v0.64.0-preview.0
2
2
 
3
- Released: September 29, 2026
3
+ Released: October 6, 2026
4
4
 
5
5
  Our preview release includes the latest, new, and experimental features. This
6
6
  release may not be as stable as our [latest weekly release](latest.md).
@@ -13,62 +13,67 @@ npm install -g @google/gemini-cli@preview
13
13
 
14
14
  ## Highlights
15
15
 
16
- - **Autonomous Plan Execution**: Enabled autonomous plan execution in
17
- non-interactive mode, allowing automated agent workflows to run multi-step
18
- plans without requiring interactive user confirmation.
19
- - **Memory Lifecycle & Output Bounding**: Bounded tool output sizes and
20
- optimized the memory lifecycle in long-running agent loops to prevent memory
21
- leaks, while ensuring full output formatting when truncation is disabled.
22
- - **Authentication Resilience**: Prevented infinite authentication loops caused
23
- by file contention, headless keyring environments, and supervisor state drops,
24
- ensuring reliable credential handling across environments.
25
- - **CLI & Connection Recovery UX**: Displayed a retry progress indicator during
26
- connection recovery, restored paused stdin after capability detection, and
27
- ensured automatic temporary directory cleanup upon background shell execution
28
- exit.
16
+ - **Atomic File Operations & State Recovery**: Serialized file tool operations
17
+ with atomic writes and introduced atomic CLI state persistence with automatic
18
+ recovery from backup on corruption.
19
+ - **Chat Recording Optimization**: Implemented append-only delta patching and
20
+ bounded history windowing in ChatRecordingService to optimize memory and disk
21
+ efficiency during long-running sessions.
22
+ - **CLI Input & Reference Resolution**: Added support for resolving `@file:line`
23
+ references, resolved CPU hangs and quote swallowing on `@` symbols within code
24
+ blocks, and prevented ghost text wrap hangs.
25
+ - **Terminal UI & Interaction Stability**: Ensured Ctrl+C emergency aborts reach
26
+ active cancellation handlers, made selection list confirmation with Enter and
27
+ Spacebar reliable, and fixed Windows ConPTY IME cursor forwarding.
29
28
 
30
29
  ## What's Changed
31
30
 
32
- - fix(cli): display retry progress indicator during connection recovery (#28340)
33
- by @amelidev in
34
- [#29468](https://github.com/google-gemini/gemini-cli/pull/29468)
35
- - Changelog for v0.61.0-preview.1 by @gemini-cli-robot in
36
- [#29469](https://github.com/google-gemini/gemini-cli/pull/29469)
37
- - Changelog for v0.61.0 by @gemini-cli-robot in
38
- [#29472](https://github.com/google-gemini/gemini-cli/pull/29472)
39
- - fix(cli): distinguish missing MCP enablement config from malformed JSON by
40
- @jesussamuel-byte in
41
- [#29446](https://github.com/google-gemini/gemini-cli/pull/29446)
42
- - fix(cli): restore paused stdin after capability detection by @ugorla-dev in
43
- [#29487](https://github.com/google-gemini/gemini-cli/pull/29487)
44
- - fix(core): bound tool output size and optimize memory lifecycle in
45
- long-running agent loops by @diegogodinezr in
46
- [#29451](https://github.com/google-gemini/gemini-cli/pull/29451)
47
- - fix(core): remove invalid diff.external override by @urielefrenvirtusa in
48
- [#29467](https://github.com/google-gemini/gemini-cli/pull/29467)
49
- - chore(release): bump version to 0.63.0-nightly.20260923.gf50ba8608 by
31
+ - refactor(a2a-server): implement V1 to V2 settings migration logic by
32
+ @jvargassanchez-dot in
33
+ [#29450](https://github.com/google-gemini/gemini-cli/pull/29450)
34
+ - fix(acp): bridge PromptResponse.usage and emit usage_update notifications
35
+ (#29389) by @elberthc-byte in
36
+ [#29549](https://github.com/google-gemini/gemini-cli/pull/29549)
37
+ - Changelog for v0.63.0-preview.0 by @gemini-cli-robot in
38
+ [#29565](https://github.com/google-gemini/gemini-cli/pull/29565)
39
+ - fix(cli): propagate resolved folder trust state in headless mode (#29031) by
40
+ @amelidev in [#29528](https://github.com/google-gemini/gemini-cli/pull/29528)
41
+ - chore(release): bump version to 0.64.0-nightly.20260929.gd75234cae by
50
42
  @gemini-cli-robot in
51
- [#29471](https://github.com/google-gemini/gemini-cli/pull/29471)
52
- - Changelog for v0.62.0-preview.0 by @gemini-cli-robot in
53
- [#29470](https://github.com/google-gemini/gemini-cli/pull/29470)
54
- - fix(core): clean up temporary directory when background shell execution exits
55
- by @jesussamuel-byte in
56
- [#29437](https://github.com/google-gemini/gemini-cli/pull/29437)
57
- - fix(acp): resolve session before config initialization and avoid same-minute
58
- filename collisions by @jesussamuel-byte in
59
- [#29463](https://github.com/google-gemini/gemini-cli/pull/29463)
60
- - fix(core): align policy redirection gates, path validation, and workflow
61
- parsing by @DavidAPierce in
62
- [#29506](https://github.com/google-gemini/gemini-cli/pull/29506)
63
- - fix(auth): prevent infinite auth loop from file contention, headless keyring,
64
- and supervisor state drops (#28341) by @villahernandez-coder in
65
- [#29448](https://github.com/google-gemini/gemini-cli/pull/29448)
66
- - fix(core): enable autonomous plan execution in non-interactive mode by
43
+ [#29567](https://github.com/google-gemini/gemini-cli/pull/29567)
44
+ - fix(cli): prevent CPU hang and quote swallowing on @ within code (#29434) by
45
+ @elberthc-byte in
46
+ [#29557](https://github.com/google-gemini/gemini-cli/pull/29557)
47
+ - fix(core): serialize file tool operations and make writes atomic (#29078) by
48
+ @elberthc-byte in
49
+ [#29499](https://github.com/google-gemini/gemini-cli/pull/29499)
50
+ - fix(core): implement append-only delta patching and bounded history windowing
51
+ in ChatRecordingService by @jvargassanchez-dot in
52
+ [#29568](https://github.com/google-gemini/gemini-cli/pull/29568)
53
+ - fix(cli): persist state atomically and recover from backup on corruption by
67
54
  @urielefrenvirtusa in
68
- [#29539](https://github.com/google-gemini/gemini-cli/pull/29539)
69
- - fix(core): disable truncation when maxChars <= 0 in formatTruncatedToolOutput
70
- by @diegogodinezr in
71
- [#29542](https://github.com/google-gemini/gemini-cli/pull/29542)
55
+ [#29558](https://github.com/google-gemini/gemini-cli/pull/29558)
56
+ - fix(cli): ensure Ctrl+C emergency abort reaches cancellation handler during
57
+ active operations by @urielefrenvirtusa in
58
+ [#29586](https://github.com/google-gemini/gemini-cli/pull/29586)
59
+ - fix(cli): resolve @file:line references and prevent ghost text wrap hang by
60
+ @jesussamuel-byte in
61
+ [#29581](https://github.com/google-gemini/gemini-cli/pull/29581)
62
+ - fix(ui): ensure Windows ConPTY forwards IME cursor position by
63
+ @jesussamuel-byte in
64
+ [#29560](https://github.com/google-gemini/gemini-cli/pull/29560)
65
+ - fix(cli): retry directory removal on Windows locking errors during extension
66
+ updates by @jesussamuel-byte in
67
+ [#29540](https://github.com/google-gemini/gemini-cli/pull/29540)
68
+ - fix(acp): resolve session by exact id and handle listener cleanup on session
69
+ failure by @diegogodinezr in
70
+ [#29580](https://github.com/google-gemini/gemini-cli/pull/29580)
71
+ - fix(cli): preserve scroll position and partition pending height budget by
72
+ @luisfelipe-alt in
73
+ [#29520](https://github.com/google-gemini/gemini-cli/pull/29520)
74
+ - fix(cli): ensure Enter and Spacebar reliably confirm selection list options by
75
+ @ugorla-dev in
76
+ [#29502](https://github.com/google-gemini/gemini-cli/pull/29502)
72
77
 
73
78
  **Full Changelog**:
74
- https://github.com/google-gemini/gemini-cli/compare/v0.62.0-preview.0...v0.63.0-preview.0
79
+ https://github.com/google-gemini/gemini-cli/compare/v0.63.0-preview.0...v0.64.0-preview.0
@@ -326,17 +326,31 @@ This feature will not work in:
326
326
 
327
327
  <!-- prettier-ignore -->
328
328
  > [!IMPORTANT]
329
- > To protect against OAuth Identity Provider (IdP) mix-up attacks, Gemini CLI
330
- > validates the `iss` (issuer) parameter per
331
- > [RFC 9207](https://www.rfc-editor.org/rfc/rfc9207). When an expected issuer is
332
- > discovered or configured, authorization servers **must** return the `iss`
333
- > parameter in the callback redirect matching the issuer URL. Responses missing
334
- > `iss` or with mismatched issuers are rejected with HTTP 400.
329
+ > Gemini CLI validates the `iss` (issuer) parameter in OAuth authorization
330
+ > responses per [RFC 9207](https://www.rfc-editor.org/rfc/rfc9207) and the MCP
331
+ > specification:
332
+ >
333
+ > - Whenever the `iss` parameter is present in the callback redirect and an
334
+ > expected `issuer` is discovered or configured, `iss` **must** match the
335
+ > expected issuer URL.
336
+ > - When the authorization server metadata sets
337
+ > `authorization_response_iss_parameter_supported: true`, the callback
338
+ > redirect **must** include the `iss` parameter.
339
+ > - When the discovered authorization server metadata omits
340
+ > `authorization_response_iss_parameter_supported` or sets it to `false` (for
341
+ > example, providers that do not declare RFC 9207 support), callbacks without
342
+ > `iss` are accepted.
343
+ > - When you configure `issuer` explicitly in `settings.json` and Gemini CLI
344
+ > doesn't discover authorization server metadata, the callback redirect
345
+ > **must** include the `iss` parameter. To accept callbacks without `iss` for
346
+ > such a server, set `authorizationResponseIssParameterSupported` to `false`
347
+ > in the `oauth` configuration.
335
348
 
336
349
  ##### Expected authorization callback example
337
350
 
338
- When the authorization server redirects the user back to Gemini CLI, the
339
- redirect URI must include the `iss` parameter:
351
+ When the authorization server declares
352
+ `authorization_response_iss_parameter_supported: true`, the redirect URI must
353
+ include the `iss` parameter:
340
354
 
341
355
  ```http
342
356
  HTTP/1.1 302 Found
@@ -344,10 +358,14 @@ Location: http://localhost:<port>/oauth/callback?code=AUTH_CODE&state=STATE&iss=
344
358
  ```
345
359
 
346
360
  - **Valid response (accepted):** `iss` matches the configured or discovered
347
- issuer (`https://auth.example.com`).
348
- - **Missing `iss` (rejected):**
349
- `http://localhost:<port>/oauth/callback?code=AUTH_CODE&state=STATE` (fails
350
- with HTTP 400: `Missing issuer parameter in response`).
361
+ issuer (`https://auth.example.com`), or `iss` is omitted when the discovered
362
+ metadata doesn't set `authorization_response_iss_parameter_supported` to
363
+ `true`.
364
+ - **Missing `iss` when required (rejected):**
365
+ `http://localhost:<port>/oauth/callback?code=AUTH_CODE&state=STATE` when
366
+ `authorization_response_iss_parameter_supported` is `true`, or when `issuer`
367
+ is configured explicitly without discovered metadata (fails with HTTP 400:
368
+ `Missing issuer parameter in response`).
351
369
  - **Mismatched `iss` (rejected):** `iss` points to a different domain or
352
370
  includes userinfo (fails with HTTP 400: `Issuer mismatch`).
353
371
 
@@ -373,6 +391,12 @@ If your remote MCP server uses an authorization server with a known issuer URL:
373
391
  }
374
392
  ```
375
393
 
394
+ With this configuration, Gemini CLI requires the `iss` parameter in the
395
+ authorization callback. If the authorization server doesn't return `iss` in its
396
+ redirects, add `"authorizationResponseIssParameterSupported": false` to the
397
+ `oauth` block. Gemini CLI then accepts callbacks without `iss` while still
398
+ rejecting any `iss` value that doesn't match the configured `issuer`.
399
+
376
400
  #### Managing OAuth authentication
377
401
 
378
402
  Use the `/mcp auth` command to manage OAuth authentication:
@@ -398,6 +422,11 @@ Use the `/mcp auth` command to manage OAuth authentication:
398
422
  if omitted)
399
423
  - **`issuer`** (string): Authorization server issuer URL (auto-discovered if
400
424
  omitted; validated per RFC 9207)
425
+ - **`authorizationResponseIssParameterSupported`** (boolean): Whether the
426
+ authorization server returns the `iss` parameter in authorization responses
427
+ (RFC 9207). Auto-discovered from the authorization server metadata; defaults
428
+ to `true` when `issuer` is configured explicitly without discovered metadata.
429
+ Set to `false` to accept callbacks without `iss` for such a server.
401
430
  - **`tokenUrl`** (string): OAuth token endpoint (auto-discovered if omitted)
402
431
  - **`scopes`** (string[]): Required OAuth scopes
403
432
  - **`redirectUri`** (string): Custom redirect URI (defaults to an OS-assigned
@@ -2,7 +2,7 @@ const require = (await import('node:module')).createRequire(import.meta.url); co
2
2
  import {
3
3
  startCommand,
4
4
  startServer
5
- } from "./chunk-MLSLNORV.js";
5
+ } from "./chunk-KHG7NKQK.js";
6
6
  import {
7
7
  BuiltinCommandLoader,
8
8
  CommandService,
@@ -46,11 +46,11 @@ import {
46
46
  updateExtension,
47
47
  validateAuthMethod,
48
48
  validateContextFilePath
49
- } from "./chunk-EBP6K2WG.js";
49
+ } from "./chunk-ZTPICUAP.js";
50
50
  import {
51
51
  exitCli,
52
52
  require_source
53
- } from "./chunk-ZOHM7BPT.js";
53
+ } from "./chunk-U6ZQ2RUE.js";
54
54
  import {
55
55
  appEvents
56
56
  } from "./chunk-5PS3AYFU.js";
@@ -62,6 +62,7 @@ import {
62
62
  SessionError,
63
63
  SessionSelector,
64
64
  SettingScope,
65
+ UNTRUSTED_WORKSPACE_SETTINGS_ERROR,
65
66
  USER_SETTINGS_PATH,
66
67
  cleanupExpiredSessions,
67
68
  cleanupToolOutputFiles,
@@ -88,11 +89,11 @@ import {
88
89
  resolveGemmaConfig,
89
90
  saveModelChange,
90
91
  stripAnsi
91
- } from "./chunk-HN74ORTP.js";
92
+ } from "./chunk-WXXOP3OP.js";
92
93
  import {
93
94
  RELAUNCH_EXIT_CODE
94
- } from "./chunk-VBVCLWLA.js";
95
- import "./chunk-NX7TO2DU.js";
95
+ } from "./chunk-FTB4FVEK.js";
96
+ import "./chunk-EIHDEZQ3.js";
96
97
  import {
97
98
  cleanupCheckpoints,
98
99
  registerCleanup,
@@ -101,7 +102,7 @@ import {
101
102
  runExitCleanup,
102
103
  runSyncCleanup,
103
104
  setupSignalHandlers
104
- } from "./chunk-UBGF6JU5.js";
105
+ } from "./chunk-CIKQQ32X.js";
105
106
  import {
106
107
  ASK_USER_TOOL_NAME,
107
108
  ApprovalMode,
@@ -256,7 +257,7 @@ import {
256
257
  updatePolicy,
257
258
  writeToStderr,
258
259
  writeToStdout
259
- } from "./chunk-ZQW7OGUO.js";
260
+ } from "./chunk-KTOZF7BG.js";
260
261
  import "./chunk-664ZODQF.js";
261
262
  import "./chunk-IUUIT4SU.js";
262
263
  import "./chunk-L6PII3GR.js";
@@ -5132,14 +5133,20 @@ async function addMcpServer(name, commandOrUrl, args, options) {
5132
5133
  excludeTools
5133
5134
  } = options;
5134
5135
  const settings = loadSettings(process.cwd());
5135
- const inHome = settings.workspace.path === settings.user.path;
5136
- if (scope === "project" && inHome) {
5137
- debugLogger.error(
5138
- "Error: Please use --scope user to edit settings in the home directory."
5139
- );
5140
- process.exit(1);
5141
- }
5142
5136
  const settingsScope = scope === "user" ? "User" /* User */ : "Workspace" /* Workspace */;
5137
+ if (settingsScope === "Workspace" /* Workspace */) {
5138
+ const inHome = settings.workspace.path === "" || settings.workspace.path === settings.user.path;
5139
+ if (inHome) {
5140
+ debugLogger.error(
5141
+ "Error: Please use --scope user to edit settings in the home directory."
5142
+ );
5143
+ process.exit(1);
5144
+ }
5145
+ if ((settings.forScope(settingsScope).readOnly ?? false) || settings.isTrusted === false) {
5146
+ debugLogger.error(`Error: ${UNTRUSTED_WORKSPACE_SETTINGS_ERROR}`);
5147
+ process.exit(1);
5148
+ }
5149
+ }
5143
5150
  let newServer = {};
5144
5151
  const headers = header?.reduce(
5145
5152
  (acc, curr) => {
@@ -5319,6 +5326,19 @@ async function removeMcpServer(name, options) {
5319
5326
  const { scope } = options;
5320
5327
  const settingsScope = scope === "user" ? "User" /* User */ : "Workspace" /* Workspace */;
5321
5328
  const settings = loadSettings();
5329
+ if (settingsScope === "Workspace" /* Workspace */) {
5330
+ const inHome = settings.workspace.path === "" || settings.workspace.path === settings.user.path;
5331
+ if (inHome) {
5332
+ debugLogger.error(
5333
+ "Error: Please use --scope user to edit settings in the home directory."
5334
+ );
5335
+ process.exit(1);
5336
+ }
5337
+ if ((settings.forScope(settingsScope).readOnly ?? false) || settings.isTrusted === false) {
5338
+ debugLogger.error(`Error: ${UNTRUSTED_WORKSPACE_SETTINGS_ERROR}`);
5339
+ process.exit(1);
5340
+ }
5341
+ }
5322
5342
  const existingSettings = settings.forScope(settingsScope).settings;
5323
5343
  const mcpServers = existingSettings.mcpServers || {};
5324
5344
  if (!mcpServers[name]) {
@@ -7856,7 +7876,7 @@ async function loadSandboxConfig(settings, argv) {
7856
7876
  }
7857
7877
  const command2 = getSandboxCommand(sandboxValue);
7858
7878
  const packageJson = await getPackageJson(__dirname3);
7859
- const image = process.env["GEMINI_SANDBOX_IMAGE"] ?? "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.64.0-preview.0" ?? customImage ?? packageJson?.config?.sandboxImageUri;
7879
+ const image = process.env["GEMINI_SANDBOX_IMAGE"] ?? "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.65.0-nightly.20261007.gef59c532f" ?? customImage ?? packageJson?.config?.sandboxImageUri;
7860
7880
  const isNative = command2 === "windows-native" || command2 === "sandbox-exec" || command2 === "lxc";
7861
7881
  return command2 && (image || isNative) ? { enabled: true, allowedPaths, networkAccess, command: command2, image } : void 0;
7862
7882
  }
@@ -11527,7 +11547,7 @@ async function runNonInteractive({
11527
11547
  }
11528
11548
  });
11529
11549
  if (process.env["GEMINI_CLI_ACTIVITY_LOG_TARGET"]) {
11530
- const { setupInitialActivityLogger } = await import("./devtoolsService-XZCKFZP5.js");
11550
+ const { setupInitialActivityLogger } = await import("./devtoolsService-EVGTOLCK.js");
11531
11551
  setupInitialActivityLogger(config);
11532
11552
  }
11533
11553
  const { stdout: workingStdout } = createWorkingStdio();
@@ -12037,7 +12057,7 @@ async function runNonInteractive2(params) {
12037
12057
  }
12038
12058
  });
12039
12059
  if (process.env["GEMINI_CLI_ACTIVITY_LOG_TARGET"]) {
12040
- const { setupInitialActivityLogger } = await import("./devtoolsService-XZCKFZP5.js");
12060
+ const { setupInitialActivityLogger } = await import("./devtoolsService-EVGTOLCK.js");
12041
12061
  setupInitialActivityLogger(config);
12042
12062
  }
12043
12063
  const { stdout: workingStdout } = createWorkingStdio();
@@ -17418,7 +17438,7 @@ async function resolveSessionId(resumeArg, sessionIdArg, sessionFileArg) {
17418
17438
  }
17419
17439
  }
17420
17440
  async function startInteractiveUI(config, settings, startupWarnings, workspaceRoot = process.cwd(), resumedSessionData, initializationResult) {
17421
- const { startInteractiveUI: doStartUI } = await import("./interactiveCli-UDWGRVJL.js");
17441
+ const { startInteractiveUI: doStartUI } = await import("./interactiveCli-EHUGFQPB.js");
17422
17442
  await doStartUI(
17423
17443
  config,
17424
17444
  settings,
@@ -17627,7 +17647,7 @@ ${finalArgs[promptIndex + 1]}`;
17627
17647
  await config.storage.initialize();
17628
17648
  adminControlsListner.setConfig(config);
17629
17649
  if (config.isInteractive() && settings.merged.general.devtools) {
17630
- const { setupInitialActivityLogger } = await import("./devtoolsService-XZCKFZP5.js");
17650
+ const { setupInitialActivityLogger } = await import("./devtoolsService-EVGTOLCK.js");
17631
17651
  setupInitialActivityLogger(config);
17632
17652
  }
17633
17653
  registerTelemetryConfig(config);
@@ -17686,7 +17706,7 @@ ${finalArgs[promptIndex + 1]}`;
17686
17706
  const initAppHandle = startupProfiler.start("initialize_app");
17687
17707
  const initializationResult = await initializeApp(config, settings);
17688
17708
  initAppHandle?.end();
17689
- import("./liteRtServerManager-OVPUSK2T.js").then(({ LiteRtServerManager }) => {
17709
+ import("./liteRtServerManager-VCTOOEN4.js").then(({ LiteRtServerManager }) => {
17690
17710
  const mergedGemma = settings.merged.experimental?.gemmaModelRouter;
17691
17711
  if (!mergedGemma) return;
17692
17712
  const userGemma = settings.forScope("User" /* User */).settings.experimental?.gemmaModelRouter;