@google/gemini-cli 0.67.0-preview.0 → 0.68.0-preview.0

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 (58) hide show
  1. package/README.md +18 -24
  2. package/bundle/{chunk-4HG5TEPY.js → chunk-44PCK4QK.js} +1 -1
  3. package/bundle/{chunk-QVUC4J7B.js → chunk-6A5BTTNC.js} +9 -11
  4. package/bundle/{chunk-BFZQO5OI.js → chunk-B2FKXXUH.js} +327 -106
  5. package/bundle/{chunk-GTLUHCZL.js → chunk-BKVNBJ5C.js} +327 -106
  6. package/bundle/{chunk-IQFMOPBP.js → chunk-CXMHAFLN.js} +2 -2
  7. package/bundle/{chunk-76P7AV5J.js → chunk-G7EMTV2Q.js} +327 -106
  8. package/bundle/{chunk-VIWQUHCM.js → chunk-HRM7UWGB.js} +9 -11
  9. package/bundle/{chunk-WTMW35TZ.js → chunk-JMHCFAD6.js} +1 -1
  10. package/bundle/{chunk-WANMK7VA.js → chunk-KKKD4FID.js} +2 -2
  11. package/bundle/{chunk-5FYAQBC3.js → chunk-L57AYV6U.js} +1558 -996
  12. package/bundle/{chunk-6HF2HP2S.js → chunk-LQDISFTJ.js} +2 -2
  13. package/bundle/{chunk-R6BM7NWC.js → chunk-ODU7Z2RJ.js} +1 -1
  14. package/bundle/{chunk-THOV46FY.js → chunk-OZOUOK43.js} +1 -1
  15. package/bundle/{chunk-FPCAOQBY.js → chunk-Q76ZDILI.js} +3 -3
  16. package/bundle/{chunk-EAO5GUJT.js → chunk-RCF66HCI.js} +1625 -1006
  17. package/bundle/{chunk-FYX6LSG6.js → chunk-RD2EMHV2.js} +1 -1
  18. package/bundle/{chunk-QPO46AOD.js → chunk-VBHMFLBY.js} +1 -1
  19. package/bundle/{chunk-2BG2OMW3.js → chunk-VCO4TMD6.js} +9 -11
  20. package/bundle/{chunk-GI2BMP6K.js → chunk-WEP47ZZU.js} +1 -1
  21. package/bundle/{chunk-RNBD6XQX.js → chunk-XPTXBYQQ.js} +3 -3
  22. package/bundle/{chunk-SJ64DOGM.js → chunk-XVNEFQR3.js} +1 -1
  23. package/bundle/{chunk-JLA2J5MI.js → chunk-YPPJDFYP.js} +3 -3
  24. package/bundle/{chunk-SAQV5Q3G.js → chunk-ZEK4UYYW.js} +1 -1
  25. package/bundle/{chunk-HWPQINPO.js → chunk-ZZOOHVBL.js} +1627 -1008
  26. package/bundle/{cleanup-QXMGRCCJ.js → cleanup-CCR2EOHA.js} +2 -2
  27. package/bundle/{cleanup-R3QZGL6L.js → cleanup-OQV2G5Y3.js} +2 -2
  28. package/bundle/{cleanup-S6DWGSDA.js → cleanup-T24OFMOA.js} +2 -2
  29. package/bundle/{core-NQRYED5S.js → core-NQRKBS47.js} +3 -1
  30. package/bundle/{dist-XT4ZXTSC.js → core-UIPNZ5VU.js} +3 -1
  31. package/bundle/{devtoolsService-GPRO4RRU.js → devtoolsService-3G5ZA3JV.js} +2 -2
  32. package/bundle/{devtoolsService-WR3IFLZC.js → devtoolsService-EWNQDTC7.js} +2 -2
  33. package/bundle/{devtoolsService-ALST4BXH.js → devtoolsService-V3OEHE5V.js} +2 -2
  34. package/bundle/{core-3N7UGMI2.js → dist-OYZDNSTI.js} +3 -1
  35. package/bundle/docs/changelogs/index.md +24 -0
  36. package/bundle/docs/changelogs/latest.md +83 -90
  37. package/bundle/docs/changelogs/preview.md +89 -87
  38. package/bundle/docs/cli/sandbox.md +8 -2
  39. package/bundle/docs/cli/themes.md +6 -3
  40. package/bundle/docs/extensions/releasing.md +32 -0
  41. package/bundle/docs/reference/configuration.md +2 -10
  42. package/bundle/{gemini-K3EMSEQ5.js → gemini-2P73372G.js} +122 -24
  43. package/bundle/{gemini-MWKDIT7M.js → gemini-FSHMUCSM.js} +122 -24
  44. package/bundle/{gemini-5DCBUXWG.js → gemini-YFCTZ76S.js} +121 -23
  45. package/bundle/gemini.js +7 -7
  46. package/bundle/{interactiveCli-3B2SSFOJ.js → interactiveCli-F5RRE2VJ.js} +1350 -1145
  47. package/bundle/{interactiveCli-63JD5B2Z.js → interactiveCli-I75IWUIA.js} +1350 -1145
  48. package/bundle/{interactiveCli-QUIZ4FA2.js → interactiveCli-X54KN2EM.js} +1350 -1145
  49. package/bundle/{liteRtServerManager-M6NTFF5C.js → liteRtServerManager-FLPMMDNM.js} +4 -4
  50. package/bundle/{liteRtServerManager-QHOOPEJV.js → liteRtServerManager-JTOIS4KU.js} +4 -4
  51. package/bundle/{liteRtServerManager-AQUTLRTC.js → liteRtServerManager-UVQ2I6NL.js} +4 -4
  52. package/bundle/{oauth2-provider-3JCCMSND.js → oauth2-provider-AYO4BU7A.js} +1 -1
  53. package/bundle/{oauth2-provider-X55SWENY.js → oauth2-provider-NCQY7TJE.js} +1 -1
  54. package/bundle/{oauth2-provider-GCJTOYXK.js → oauth2-provider-VMBYZOC7.js} +1 -1
  55. package/bundle/{start-VKITAPOP.js → start-DFHM4HI4.js} +6 -6
  56. package/bundle/{start-X73XUSSH.js → start-IXQ2E7L6.js} +6 -6
  57. package/bundle/{start-4QIXXTMW.js → start-YEKGRZVH.js} +6 -6
  58. package/package.json +1 -1
@@ -12,8 +12,8 @@ import {
12
12
  runSyncCleanup,
13
13
  setupSignalHandlers,
14
14
  setupTtyCheck
15
- } from "./chunk-FYX6LSG6.js";
16
- import "./chunk-HWPQINPO.js";
15
+ } from "./chunk-WEP47ZZU.js";
16
+ import "./chunk-L57AYV6U.js";
17
17
  import "./chunk-664ZODQF.js";
18
18
  import "./chunk-IUUIT4SU.js";
19
19
  import "./chunk-L6PII3GR.js";
@@ -12,8 +12,8 @@ import {
12
12
  runSyncCleanup,
13
13
  setupSignalHandlers,
14
14
  setupTtyCheck
15
- } from "./chunk-THOV46FY.js";
16
- import "./chunk-5FYAQBC3.js";
15
+ } from "./chunk-RD2EMHV2.js";
16
+ import "./chunk-RCF66HCI.js";
17
17
  import "./chunk-664ZODQF.js";
18
18
  import "./chunk-IUUIT4SU.js";
19
19
  import "./chunk-L6PII3GR.js";
@@ -12,8 +12,8 @@ import {
12
12
  runSyncCleanup,
13
13
  setupSignalHandlers,
14
14
  setupTtyCheck
15
- } from "./chunk-GI2BMP6K.js";
16
- import "./chunk-EAO5GUJT.js";
15
+ } from "./chunk-OZOUOK43.js";
16
+ import "./chunk-ZZOOHVBL.js";
17
17
  import "./chunk-664ZODQF.js";
18
18
  import "./chunk-IUUIT4SU.js";
19
19
  import "./chunk-L6PII3GR.js";
@@ -962,6 +962,7 @@ import {
962
962
  mcpServerRequiresOAuth,
963
963
  moveInboxSkill,
964
964
  normalizeCommand,
965
+ normalizeEscapedNewlines,
965
966
  normalizePath,
966
967
  normalizeSecurityPath,
967
968
  normalizeSpace,
@@ -1141,7 +1142,7 @@ import {
1141
1142
  wrapWithSynchronizedOutput,
1142
1143
  writeToStderr,
1143
1144
  writeToStdout
1144
- } from "./chunk-EAO5GUJT.js";
1145
+ } from "./chunk-RCF66HCI.js";
1145
1146
  import "./chunk-664ZODQF.js";
1146
1147
  import {
1147
1148
  SpanStatusCode,
@@ -2114,6 +2115,7 @@ export {
2114
2115
  mcpServerRequiresOAuth,
2115
2116
  moveInboxSkill,
2116
2117
  normalizeCommand,
2118
+ normalizeEscapedNewlines,
2117
2119
  normalizePath,
2118
2120
  normalizeSecurityPath,
2119
2121
  normalizeSpace,
@@ -962,6 +962,7 @@ import {
962
962
  mcpServerRequiresOAuth,
963
963
  moveInboxSkill,
964
964
  normalizeCommand,
965
+ normalizeEscapedNewlines,
965
966
  normalizePath,
966
967
  normalizeSecurityPath,
967
968
  normalizeSpace,
@@ -1141,7 +1142,7 @@ import {
1141
1142
  wrapWithSynchronizedOutput,
1142
1143
  writeToStderr,
1143
1144
  writeToStdout
1144
- } from "./chunk-5FYAQBC3.js";
1145
+ } from "./chunk-ZZOOHVBL.js";
1145
1146
  import "./chunk-664ZODQF.js";
1146
1147
  import {
1147
1148
  SpanStatusCode,
@@ -2114,6 +2115,7 @@ export {
2114
2115
  mcpServerRequiresOAuth,
2115
2116
  moveInboxSkill,
2116
2117
  normalizeCommand,
2118
+ normalizeEscapedNewlines,
2117
2119
  normalizePath,
2118
2120
  normalizeSecurityPath,
2119
2121
  normalizeSpace,
@@ -2,7 +2,7 @@ const require = (await import('node:module')).createRequire(import.meta.url); co
2
2
  import {
3
3
  coreEvents,
4
4
  debugLogger
5
- } from "./chunk-HWPQINPO.js";
5
+ } from "./chunk-ZZOOHVBL.js";
6
6
  import "./chunk-664ZODQF.js";
7
7
  import "./chunk-IUUIT4SU.js";
8
8
  import "./chunk-L6PII3GR.js";
@@ -4387,7 +4387,7 @@ async function toggleDevToolsPanel(config, isOpen, toggle, setOpen) {
4387
4387
  return;
4388
4388
  }
4389
4389
  try {
4390
- const { openBrowserSecurely, shouldLaunchBrowser } = await import("./core-3N7UGMI2.js");
4390
+ const { openBrowserSecurely, shouldLaunchBrowser } = await import("./core-UIPNZ5VU.js");
4391
4391
  const url = await startDevToolsServer(config);
4392
4392
  if (shouldLaunchBrowser()) {
4393
4393
  try {
@@ -2,7 +2,7 @@ const require = (await import('node:module')).createRequire(import.meta.url); co
2
2
  import {
3
3
  coreEvents,
4
4
  debugLogger
5
- } from "./chunk-EAO5GUJT.js";
5
+ } from "./chunk-RCF66HCI.js";
6
6
  import "./chunk-664ZODQF.js";
7
7
  import "./chunk-IUUIT4SU.js";
8
8
  import "./chunk-L6PII3GR.js";
@@ -4387,7 +4387,7 @@ async function toggleDevToolsPanel(config, isOpen, toggle, setOpen) {
4387
4387
  return;
4388
4388
  }
4389
4389
  try {
4390
- const { openBrowserSecurely, shouldLaunchBrowser } = await import("./core-NQRYED5S.js");
4390
+ const { openBrowserSecurely, shouldLaunchBrowser } = await import("./core-NQRKBS47.js");
4391
4391
  const url = await startDevToolsServer(config);
4392
4392
  if (shouldLaunchBrowser()) {
4393
4393
  try {
@@ -3,7 +3,7 @@ import {
3
3
  CoreEvent,
4
4
  coreEvents,
5
5
  debugLogger
6
- } from "./chunk-5FYAQBC3.js";
6
+ } from "./chunk-L57AYV6U.js";
7
7
  import "./chunk-664ZODQF.js";
8
8
  import "./chunk-IUUIT4SU.js";
9
9
  import "./chunk-L6PII3GR.js";
@@ -4388,7 +4388,7 @@ async function toggleDevToolsPanel(config, isOpen, toggle, setOpen) {
4388
4388
  return;
4389
4389
  }
4390
4390
  try {
4391
- const { openBrowserSecurely, shouldLaunchBrowser } = await import("./dist-XT4ZXTSC.js");
4391
+ const { openBrowserSecurely, shouldLaunchBrowser } = await import("./dist-OYZDNSTI.js");
4392
4392
  const url = await startDevToolsServer(config);
4393
4393
  if (shouldLaunchBrowser()) {
4394
4394
  try {
@@ -962,6 +962,7 @@ import {
962
962
  mcpServerRequiresOAuth,
963
963
  moveInboxSkill,
964
964
  normalizeCommand,
965
+ normalizeEscapedNewlines,
965
966
  normalizePath,
966
967
  normalizeSecurityPath,
967
968
  normalizeSpace,
@@ -1141,7 +1142,7 @@ import {
1141
1142
  wrapWithSynchronizedOutput,
1142
1143
  writeToStderr,
1143
1144
  writeToStdout
1144
- } from "./chunk-HWPQINPO.js";
1145
+ } from "./chunk-L57AYV6U.js";
1145
1146
  import "./chunk-664ZODQF.js";
1146
1147
  import {
1147
1148
  SpanStatusCode,
@@ -2114,6 +2115,7 @@ export {
2114
2115
  mcpServerRequiresOAuth,
2115
2116
  moveInboxSkill,
2116
2117
  normalizeCommand,
2118
+ normalizeEscapedNewlines,
2117
2119
  normalizePath,
2118
2120
  normalizeSecurityPath,
2119
2121
  normalizeSpace,
@@ -18,6 +18,30 @@ 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.66.0 - 2026-10-27
22
+
23
+ - **Terminal UI Rendering & Flicker Prevention:** Implemented synchronized
24
+ output mode and isolated spinner rendering, eliminated buffer flickering, and
25
+ preserved terminal scrollback during viewport refreshes
26
+ ([#29725](https://github.com/google-gemini/gemini-cli/pull/29725) by
27
+ @diegogodinezr,
28
+ [#29695](https://github.com/google-gemini/gemini-cli/pull/29695) by
29
+ @ugorla-dev).
30
+ - **Tool Scheduling & Process Lifecycle:** Emitted tool call groups directly
31
+ from the scheduler and forwarded process termination signals from bootstrap
32
+ parent to child processes
33
+ ([#29736](https://github.com/google-gemini/gemini-cli/pull/29736) by
34
+ @jesussamuel-byte,
35
+ [#29790](https://github.com/google-gemini/gemini-cli/pull/29790) by
36
+ @villahernandez-coder).
37
+ - **Environment & MCP OAuth Security:** Supported opt-in private network
38
+ endpoints for MCP OAuth flows and preserved user-level git configuration while
39
+ suppressing interactive prompts
40
+ ([#29844](https://github.com/google-gemini/gemini-cli/pull/29844) by
41
+ @luisfelipe-alt,
42
+ [#29832](https://github.com/google-gemini/gemini-cli/pull/29832) by
43
+ @jesussamuel-byte).
44
+
21
45
  ## Announcements: v0.65.0 - 2026-10-20
22
46
 
23
47
  - **Custom Telemetry Headers:** Added support for configuring custom OTLP
@@ -1,6 +1,6 @@
1
- # Latest stable release: v0.65.0
1
+ # Latest stable release: v0.66.0
2
2
 
3
- Released: October 20, 2026
3
+ Released: October 27, 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,103 +11,96 @@ npm install -g @google/gemini-cli
11
11
 
12
12
  ## Highlights
13
13
 
14
- - **Custom Telemetry Headers:** Added support for configuring custom OTLP
15
- headers in telemetry settings, enabling authentication and header
16
- customization for OpenTelemetry collectors.
17
- - **File System Performance & Traversal:** Optimized ignore pattern filtering
18
- with subtree pruning to accelerate directory scanning, deferred recursive file
19
- reads for `@<directory>` references, and improved empty file handling across
20
- multi-byte encodings.
21
- - **Session Resilience & State Integrity:** Prevented session poisoning during
22
- rapid Ctrl+C interruptions, preserved resumed session history on quick exits,
23
- and eliminated duplicate tool response turns upon resuming sessions.
24
- - **Authentication & Workspace Security:** Enforced read-only workspace settings
25
- in untrusted folders, aligned OAuth callback parameter validation with RFC
26
- 9207 metadata, and resolved infinite authentication retry loops.
27
- - **Terminal UI & Interactive Stability:** Resolved interactive mode hangs on
28
- Enter keypresses, prevented unnecessary terminal clears and scroll resets when
29
- expanding output with Ctrl+O, and restored debounced static UI refreshes on
30
- terminal width changes.
14
+ - **Terminal UI & Display Rendering:** Implemented synchronized terminal output
15
+ mode, isolated spinner rendering, and preserved scrollback buffers across
16
+ viewport refreshes while eliminating buffer flickering and border bleed in
17
+ scrollable tool containers.
18
+ - **Execution Scheduling & Process Lifecycle:** Refactored the core scheduler to
19
+ emit tool call groups directly and eliminated UI lookahead, while ensuring
20
+ process termination signals forward reliably from bootstrap wrappers to child
21
+ processes.
22
+ - **Git & Shell Environment Robustness:** Preserved user-level `~/.gitconfig`
23
+ settings in shell and git environments, suppressed interactive SSH and
24
+ credential prompts to avoid execution hangs, and improved Windows diff
25
+ argument quoting.
26
+ - **Security & Configuration Management:** Added opt-in support for private
27
+ network endpoints during MCP OAuth flows, eliminated false positives in
28
+ authentication error detection, resolved settings placeholders after loading
29
+ `.env` files, and added `keys` array support for custom keybindings.
31
30
 
32
31
  ## What's Changed
33
32
 
34
- - fix(cli): enforce read-only workspace settings in untrusted folders by
35
- @jvargassanchez-dot in
36
- [#29583](https://github.com/google-gemini/gemini-cli/pull/29583)
37
- - fix(core): avoid duplicate tool response turns when resuming sessions by
38
- @diegogodinezr in
39
- [#29618](https://github.com/google-gemini/gemini-cli/pull/29618)
40
- - fix(core): prevent deletion of resumed session history on quick exit (#29198)
41
- by @villahernandez-coder in
42
- [#29584](https://github.com/google-gemini/gemini-cli/pull/29584)
43
- - Changelog for v0.64.0-preview.0 by @gemini-cli-robot in
44
- [#29656](https://github.com/google-gemini/gemini-cli/pull/29656)
45
- - Changelog for v0.63.0 by @gemini-cli-robot in
46
- [#29659](https://github.com/google-gemini/gemini-cli/pull/29659)
47
- - fix(core): align OAuth callback iss parameter validation with RFC 9207
48
- metadata by @luisfelipe-alt in
49
- [#29616](https://github.com/google-gemini/gemini-cli/pull/29616)
50
- - fix(cli): prevent unnecessary terminal clears and scroll resets when expanding
51
- with Ctrl+O by @jesussamuel-byte in
52
- [#29640](https://github.com/google-gemini/gemini-cli/pull/29640)
53
- - chore(release): bump version to 0.65.0-nightly.20261006.gfb972b2f8 by
33
+ - Update ROADMAP.md to no longer reference outdated 2025 roadmap by
34
+ @DavidAPierce in
35
+ [#29723](https://github.com/google-gemini/gemini-cli/pull/29723)
36
+ - Changelog for v0.65.0-preview.0 by @gemini-cli-robot in
37
+ [#29739](https://github.com/google-gemini/gemini-cli/pull/29739)
38
+ - chore(release): bump version to 0.66.0-nightly.20261013.g204db94ae by
54
39
  @gemini-cli-robot in
55
- [#29657](https://github.com/google-gemini/gemini-cli/pull/29657)
56
- - fix(ci): add missing loop in unassign-inactive-assignees workflow by
40
+ [#29740](https://github.com/google-gemini/gemini-cli/pull/29740)
41
+ - Changelog for v0.64.0 by @gemini-cli-robot in
42
+ [#29741](https://github.com/google-gemini/gemini-cli/pull/29741)
43
+ - fix(ui): implement synchronized output and isolate spinner rendering by
44
+ @diegogodinezr in
45
+ [#29725](https://github.com/google-gemini/gemini-cli/pull/29725)
46
+ - fix(ui): fix debug console height calculation and terminalBuffer flickering by
57
47
  @ugorla-dev in
58
- [#29609](https://github.com/google-gemini/gemini-cli/pull/29609)
59
- - fix(core): enforce terminal user turn invariant and normalize request contents
60
- by @luisfelipe-alt in
61
- [#29612](https://github.com/google-gemini/gemini-cli/pull/29612)
62
- - `feat(telemetry): support custom OTLP headers in telemetry configuration` by
63
- @jesussamuel-byte in
64
- [#29641](https://github.com/google-gemini/gemini-cli/pull/29641)
65
- - fix(auth): prevent infinite verification and OAuth retry loops by
48
+ [#29695](https://github.com/google-gemini/gemini-cli/pull/29695)
49
+ - fix(cli): prevent right-hand border bleed in scrollable tool containers by
66
50
  @villahernandez-coder in
67
- [#29655](https://github.com/google-gemini/gemini-cli/pull/29655)
68
- - fix(cli): handle JSON parse and response stream errors in fetchJson by
69
- @jesussamuel-byte in
70
- [#29658](https://github.com/google-gemini/gemini-cli/pull/29658)
71
- - fix(core): preserve line terminators in truncateString by @diegogodinezr in
72
- [#29673](https://github.com/google-gemini/gemini-cli/pull/29673)
73
- - fix(vscode-ide-companion): make IdeServer.stop() resolve while MCP sessions
74
- are open by @elberthc-byte in
75
- [#29674](https://github.com/google-gemini/gemini-cli/pull/29674)
76
- - fix(core): retain ask_user question text in the tool result display by
77
- @elberthc-byte in
78
- [#29677](https://github.com/google-gemini/gemini-cli/pull/29677)
79
- - fix(core): eliminate false positives on untrusted command flags and compound
80
- loops by @DavidAPierce in
81
- [#29672](https://github.com/google-gemini/gemini-cli/pull/29672)
82
- - fix(cli): clear cached credentials when re-selecting Google login by
83
- @urielefrenvirtusa in
84
- [#29643](https://github.com/google-gemini/gemini-cli/pull/29643)
85
- - fix(cli): resolve hang on Enter keypress in interactive mode (#23297) by
51
+ [#29742](https://github.com/google-gemini/gemini-cli/pull/29742)
52
+ - refactor(core,cli): emit tool call groups from the scheduler and drop the UI
53
+ lookahead by @jesussamuel-byte in
54
+ [#29736](https://github.com/google-gemini/gemini-cli/pull/29736)
55
+ - fix(core): format and quote Windows diff command arguments in openDiff by
56
+ @jvargassanchez-dot in
57
+ [#29753](https://github.com/google-gemini/gemini-cli/pull/29753)
58
+ - fix(cli): round before selecting units in formatDuration by @diegogodinezr in
59
+ [#29766](https://github.com/google-gemini/gemini-cli/pull/29766)
60
+ - fix(core): disable interactive credential and SSH prompts in getSafeGitEnv by
61
+ @villahernandez-coder in
62
+ [#29760](https://github.com/google-gemini/gemini-cli/pull/29760)
63
+ - fix(cli): resolve settings placeholders after loading .env files by
86
64
  @elberthc-byte in
87
- [#29476](https://github.com/google-gemini/gemini-cli/pull/29476)
88
- - perf(core): optimize ignore filtering and enable subtree pruning (#29077) by
89
- @amelidev in [#29582](https://github.com/google-gemini/gemini-cli/pull/29582)
90
- - fix(a2a-server): isolate tool rejection to active call in sequential batches
91
- by @jvargassanchez-dot in
92
- [#29683](https://github.com/google-gemini/gemini-cli/pull/29683)
93
- - fix(cli): skip eager recursive file reading for @<directory> references by
65
+ [#29750](https://github.com/google-gemini/gemini-cli/pull/29750)
66
+ - fix(core): harden SKILL.md frontmatter parsing for single-line descriptions by
67
+ @jesussamuel-byte in
68
+ [#29769](https://github.com/google-gemini/gemini-cli/pull/29769)
69
+ - Add Banner about Gemini CLI not being optimized for Gemini 4 by @srithreepo in
70
+ [#29774](https://github.com/google-gemini/gemini-cli/pull/29774)
71
+ - Update README to remove obsolete content by @srithreepo in
72
+ [#29775](https://github.com/google-gemini/gemini-cli/pull/29775)
73
+ - fix(ci): remove unsupported members permission in unassign-inactive-assignees
74
+ workflow by @ugorla-dev in
75
+ [#29770](https://github.com/google-gemini/gemini-cli/pull/29770)
76
+ - fix(cli): reset slash-command conflict dedupe when conflicts reappear by
94
77
  @jvargassanchez-dot in
95
- [#29617](https://github.com/google-gemini/gemini-cli/pull/29617)
96
- - fix(cli): keep loading other extensions when one fails the allowlist check by
78
+ [#29768](https://github.com/google-gemini/gemini-cli/pull/29768)
79
+ - fix(cli): verify active binary update to prevent PATH shadowing false success
80
+ by @urielefrenvirtusa in
81
+ [#29757](https://github.com/google-gemini/gemini-cli/pull/29757)
82
+ - fix(cli): support 'keys' array in keybindings.json by @urielefrenvirtusa in
83
+ [#29773](https://github.com/google-gemini/gemini-cli/pull/29773)
84
+ - fix(cli): forward termination signals from bootstrap parent to child process
85
+ by @villahernandez-coder in
86
+ [#29790](https://github.com/google-gemini/gemini-cli/pull/29790)
87
+ - fix(ui): preserve terminal scrollback during viewport refreshes by
88
+ @diegogodinezr in
89
+ [#29792](https://github.com/google-gemini/gemini-cli/pull/29792)
90
+ - fix(cli): decode streamed Node HTTP activity chunks with StringDecoder by
97
91
  @jesussamuel-byte in
98
- [#29720](https://github.com/google-gemini/gemini-cli/pull/29720)
99
- - fix(cli): correct reverse search highlight index for expanding unicode
100
- characters by @diegogodinezr in
101
- [#29699](https://github.com/google-gemini/gemini-cli/pull/29699)
102
- - fix(core): treat whitespace-only UTF-16 and UTF-32 files as empty by
92
+ [#29827](https://github.com/google-gemini/gemini-cli/pull/29827)
93
+ - chore: migrate gsutil usage to gcloud storage by @gurusai-voleti in
94
+ [#29839](https://github.com/google-gemini/gemini-cli/pull/29839)
95
+ - fix(core): preserve user-level ~/.gitconfig in shell and git environments by
103
96
  @jesussamuel-byte in
104
- [#29722](https://github.com/google-gemini/gemini-cli/pull/29722)
105
- - fix(cli): restore debounced static UI refresh on terminal width changes by
106
- @jvargassanchez-dot in
107
- [#29644](https://github.com/google-gemini/gemini-cli/pull/29644)
108
- - fix(cli): prevent session poisoning on rapid Ctrl-C interruption by
109
- @villahernandez-coder in
110
- [#29728](https://github.com/google-gemini/gemini-cli/pull/29728)
97
+ [#29832](https://github.com/google-gemini/gemini-cli/pull/29832)
98
+ - fix(core): prevent false positive matches in isAuthenticationError by
99
+ @urielefrenvirtusa in
100
+ [#29835](https://github.com/google-gemini/gemini-cli/pull/29835)
101
+ - fix(core): support opt-in private network endpoints for MCP OAuth flows by
102
+ @luisfelipe-alt in
103
+ [#29844](https://github.com/google-gemini/gemini-cli/pull/29844)
111
104
 
112
105
  **Full Changelog**:
113
- https://github.com/google-gemini/gemini-cli/compare/v0.64.0...v0.65.0
106
+ https://github.com/google-gemini/gemini-cli/compare/v0.65.0...v0.66.0
@@ -1,6 +1,6 @@
1
- # Preview release: v0.66.0-preview.0
1
+ # Preview release: v0.67.0-preview.0
2
2
 
3
- Released: October 20, 2026
3
+ Released: October 27, 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,99 +13,101 @@ npm install -g @google/gemini-cli@preview
13
13
 
14
14
  ## Highlights
15
15
 
16
- - **Terminal UI & Output Synchronization**: Implemented synchronized terminal
17
- output and isolated spinner rendering to prevent flickering, preserved
18
- terminal scrollback during viewport refreshes, corrected debug console height
19
- calculations, and eliminated right-hand border bleed in scrollable tool
20
- containers.
21
- - **Tool Execution & Scheduler Architecture**: Refactored the tool execution
22
- flow to emit tool call groups directly from the scheduler, removing UI
23
- lookahead logic and simplifying execution scheduling.
24
- - **Shell & Git Environment Integrity**: Preserved user-level `~/.gitconfig`
25
- settings across shell and Git environments, disabled interactive credential
26
- and SSH prompts to prevent hangs in automated environments, and forwarded
27
- termination signals from bootstrap parent processes.
28
- - **Configuration & Keybindings Flexibility**: Added support for a `keys` array
29
- in `keybindings.json`, ensured settings placeholders resolve correctly after
30
- loading `.env` files, and improved CLI self-update verification against PATH
31
- shadowing.
32
- - **Networking & MCP Security**: Supported opt-in private network endpoints for
33
- MCP OAuth flows and prevented false positive matches in authentication error
34
- handling.
16
+ - **Model Discovery Command & Flag**: Added a new `models` command and
17
+ `--list-models` flag for model discovery directly from the CLI.
18
+ - **Container Sandbox IDE Bridging**: Bridged the IDE companion into container
19
+ sandboxes over exec stdio to improve IDE integration in containerized
20
+ environments.
21
+ - **Cancellation & Signal Resilience**: Improved termination signal and
22
+ cancellation handling by stopping continuation stream processing, halting
23
+ auto-nudges, and preventing subsequent tool execution in non-interactive mode.
24
+ - **Terminal Rendering & Unicode Support**: Refined character width calculation
25
+ for terminals rendering ambiguous-width characters and corrected display width
26
+ for Thai and Lao SARA AM scripts.
27
+ - **Filesystem & Security Safeguards**: Hardened atomic file writing to respect
28
+ read-only files and hard links, resolved relative file paths against the
29
+ active IDE workspace root, scoped untrusted flag checks to external output,
30
+ and included MCP server and tool metadata in permission requests.
35
31
 
36
32
  ## What's Changed
37
33
 
38
- - Update ROADMAP.md to no longer reference outdated 2025 roadmap by
39
- @DavidAPierce in
40
- [#29723](https://github.com/google-gemini/gemini-cli/pull/29723)
41
- - Changelog for v0.65.0-preview.0 by @gemini-cli-robot in
42
- [#29739](https://github.com/google-gemini/gemini-cli/pull/29739)
43
- - chore(release): bump version to 0.66.0-nightly.20261013.g204db94ae by
34
+ - Changelog for v0.65.0 by @gemini-cli-robot in
35
+ [#29853](https://github.com/google-gemini/gemini-cli/pull/29853)
36
+ - chore(release): bump version to 0.67.0-nightly.20261020.gb041de017 by
44
37
  @gemini-cli-robot in
45
- [#29740](https://github.com/google-gemini/gemini-cli/pull/29740)
46
- - Changelog for v0.64.0 by @gemini-cli-robot in
47
- [#29741](https://github.com/google-gemini/gemini-cli/pull/29741)
48
- - fix(ui): implement synchronized output and isolate spinner rendering by
49
- @diegogodinezr in
50
- [#29725](https://github.com/google-gemini/gemini-cli/pull/29725)
51
- - fix(ui): fix debug console height calculation and terminalBuffer flickering by
52
- @ugorla-dev in
53
- [#29695](https://github.com/google-gemini/gemini-cli/pull/29695)
54
- - fix(cli): prevent right-hand border bleed in scrollable tool containers by
55
- @villahernandez-coder in
56
- [#29742](https://github.com/google-gemini/gemini-cli/pull/29742)
57
- - refactor(core,cli): emit tool call groups from the scheduler and drop the UI
58
- lookahead by @jesussamuel-byte in
59
- [#29736](https://github.com/google-gemini/gemini-cli/pull/29736)
60
- - fix(core): format and quote Windows diff command arguments in openDiff by
61
- @jvargassanchez-dot in
62
- [#29753](https://github.com/google-gemini/gemini-cli/pull/29753)
63
- - fix(cli): round before selecting units in formatDuration by @diegogodinezr in
64
- [#29766](https://github.com/google-gemini/gemini-cli/pull/29766)
65
- - fix(core): disable interactive credential and SSH prompts in getSafeGitEnv by
38
+ [#29854](https://github.com/google-gemini/gemini-cli/pull/29854)
39
+ - Changelog for v0.66.0-preview.0 by @gemini-cli-robot in
40
+ [#29852](https://github.com/google-gemini/gemini-cli/pull/29852)
41
+ - feat(cli): bridge the IDE companion into container sandboxes over exec stdio
42
+ by @elberthc-byte in
43
+ [#29858](https://github.com/google-gemini/gemini-cli/pull/29858)
44
+ - fix(core): prevent duplicate agent loading when workspace is home directory
45
+ (#27692) by @urielefrenvirtusa in
46
+ [#29847](https://github.com/google-gemini/gemini-cli/pull/29847)
47
+ - fix(ide): exclude IDE settings and GEMINI.md files from open file con text by
66
48
  @villahernandez-coder in
67
- [#29760](https://github.com/google-gemini/gemini-cli/pull/29760)
68
- - fix(cli): resolve settings placeholders after loading .env files by
69
- @elberthc-byte in
70
- [#29750](https://github.com/google-gemini/gemini-cli/pull/29750)
71
- - fix(core): harden SKILL.md frontmatter parsing for single-line descriptions by
49
+ [#29848](https://github.com/google-gemini/gemini-cli/pull/29848)
50
+ - fix(core): scope untrusted flag checks to external output and remember
51
+ approved flags by @luisfelipe-alt in
52
+ [#29833](https://github.com/google-gemini/gemini-cli/pull/29833)
53
+ - fix(a2a-server): mount express.json() before A2A SDK route registration by
72
54
  @jesussamuel-byte in
73
- [#29769](https://github.com/google-gemini/gemini-cli/pull/29769)
74
- - Add Banner about Gemini CLI not being optimized for Gemini 4 by @srithreepo in
75
- [#29774](https://github.com/google-gemini/gemini-cli/pull/29774)
76
- - Update README to remove obsolete content by @srithreepo in
77
- [#29775](https://github.com/google-gemini/gemini-cli/pull/29775)
78
- - fix(ci): remove unsupported members permission in unassign-inactive-assignees
79
- workflow by @ugorla-dev in
80
- [#29770](https://github.com/google-gemini/gemini-cli/pull/29770)
81
- - fix(cli): reset slash-command conflict dedupe when conflicts reappear by
82
- @jvargassanchez-dot in
83
- [#29768](https://github.com/google-gemini/gemini-cli/pull/29768)
84
- - fix(cli): verify active binary update to prevent PATH shadowing false success
85
- by @urielefrenvirtusa in
86
- [#29757](https://github.com/google-gemini/gemini-cli/pull/29757)
87
- - fix(cli): support 'keys' array in keybindings.json by @urielefrenvirtusa in
88
- [#29773](https://github.com/google-gemini/gemini-cli/pull/29773)
89
- - fix(cli): forward termination signals from bootstrap parent to child process
90
- by @villahernandez-coder in
91
- [#29790](https://github.com/google-gemini/gemini-cli/pull/29790)
92
- - fix(ui): preserve terminal scrollback during viewport refreshes by
55
+ [#29850](https://github.com/google-gemini/gemini-cli/pull/29850)
56
+ - fix(core): adhere to RFC 9110 token rules when splitting custom headers by
93
57
  @diegogodinezr in
94
- [#29792](https://github.com/google-gemini/gemini-cli/pull/29792)
95
- - fix(cli): decode streamed Node HTTP activity chunks with StringDecoder by
96
- @jesussamuel-byte in
97
- [#29827](https://github.com/google-gemini/gemini-cli/pull/29827)
98
- - chore: migrate gsutil usage to gcloud storage by @gurusai-voleti in
99
- [#29839](https://github.com/google-gemini/gemini-cli/pull/29839)
100
- - fix(core): preserve user-level ~/.gitconfig in shell and git environments by
58
+ [#29865](https://github.com/google-gemini/gemini-cli/pull/29865)
59
+ - fix(core): respect read-only files and hard links in atomic writeTextFile by
60
+ @elberthc-byte in
61
+ [#29749](https://github.com/google-gemini/gemini-cli/pull/29749)
62
+ - fix(a2a-server,core): preserve extended token usage metadata and align
63
+ per-turn reporting by @jvargassanchez-dot in
64
+ [#29834](https://github.com/google-gemini/gemini-cli/pull/29834)
65
+ - fix(core): ensure all model turns with function calls receive thought
66
+ signatures by @amelidev in
67
+ [#29828](https://github.com/google-gemini/gemini-cli/pull/29828)
68
+ - fix(cli): handle termination signals and prevent tool execution after
69
+ cancellation in non-interactive mode by @urielefrenvirtusa in
70
+ [#29849](https://github.com/google-gemini/gemini-cli/pull/29849)
71
+ - fix(cli): preserve ${VAR} placeholders during deprecated settings migration by
72
+ @villahernandez-coder in
73
+ [#29867](https://github.com/google-gemini/gemini-cli/pull/29867)
74
+ - fix(cli): stop continuation stream processing and auto-nudge after request
75
+ cancellation by @jesussamuel-byte in
76
+ [#29868](https://github.com/google-gemini/gemini-cli/pull/29868)
77
+ - fix(cli): correct Thai and Lao SARA AM display width by @elberthc-byte in
78
+ [#29883](https://github.com/google-gemini/gemini-cli/pull/29883)
79
+ - fix(core): resolve relative file paths against active IDE workspace root by
80
+ @villahernandez-coder in
81
+ [#29838](https://github.com/google-gemini/gemini-cli/pull/29838)
82
+ - feat(cli): add models command and --list-models flag for model discovery by
83
+ @urielefrenvirtusa in
84
+ [#29880](https://github.com/google-gemini/gemini-cli/pull/29880)
85
+ - fix(cli): convert Claude hook timeout from seconds to milliseconds during
86
+ migration by @villahernandez-coder in
87
+ [#29899](https://github.com/google-gemini/gemini-cli/pull/29899)
88
+ - fix(core): classify project spending cap errors as terminal quota errors by
101
89
  @jesussamuel-byte in
102
- [#29832](https://github.com/google-gemini/gemini-cli/pull/29832)
103
- - fix(core): prevent false positive matches in isAuthenticationError by
90
+ [#29961](https://github.com/google-gemini/gemini-cli/pull/29961)
91
+ - fix(acp): include MCP server and tool metadata in permission requests by
92
+ @duvanka-prasad in
93
+ [#29910](https://github.com/google-gemini/gemini-cli/pull/29910)
94
+ - fix(cli): prevent parent command name insertion on /chat list autocomplete by
104
95
  @urielefrenvirtusa in
105
- [#29835](https://github.com/google-gemini/gemini-cli/pull/29835)
106
- - fix(core): support opt-in private network endpoints for MCP OAuth flows by
107
- @luisfelipe-alt in
108
- [#29844](https://github.com/google-gemini/gemini-cli/pull/29844)
96
+ [#29967](https://github.com/google-gemini/gemini-cli/pull/29967)
97
+ - fix(cli): validate finite numbers in numeric settings editor by @diegogodinezr
98
+ in [#29968](https://github.com/google-gemini/gemini-cli/pull/29968)
99
+ - fix(core): allow trusted system paths on Android (Termux) for ripgrep
100
+ resolution (#21836) by @amelidev in
101
+ [#29884](https://github.com/google-gemini/gemini-cli/pull/29884)
102
+ - fix(core): normalize CRLF line endings before diffing in getDiffContextSnippet
103
+ by @jesussamuel-byte in
104
+ [#29966](https://github.com/google-gemini/gemini-cli/pull/29966)
105
+ - fix(cli): handle terminals that render ambiguous-width characters as wide by
106
+ @elberthc-byte in
107
+ [#29905](https://github.com/google-gemini/gemini-cli/pull/29905)
108
+ - fix(cli): prevent duplicate history and double telemetry in confirm_action
109
+ flow by @duvanka-prasad in
110
+ [#29974](https://github.com/google-gemini/gemini-cli/pull/29974)
109
111
 
110
112
  **Full Changelog**:
111
- https://github.com/google-gemini/gemini-cli/compare/v0.65.0-preview.0...v0.66.0-preview.0
113
+ https://github.com/google-gemini/gemini-cli/compare/v0.66.0-preview.0...v0.67.0-preview.0
@@ -415,8 +415,14 @@ $env:SANDBOX_FLAGS="--flag1 --flag2=value"
415
415
 
416
416
  ### Linux UID/GID handling
417
417
 
418
- The sandbox automatically handles user permissions on Linux. Override these
419
- permissions with:
418
+ Gemini CLI automatically handles user permissions in container sandboxes on
419
+ Linux. When the sandbox runs as your host UID/GID (the default on supported
420
+ Linux distributions) and you use rootless Podman, Gemini CLI also passes
421
+ `--userns=keep-id`. This keeps files that the sandbox creates in mounted
422
+ directories owned by your host user. To use a different user namespace mode, add
423
+ your own `--userns` option to `SANDBOX_FLAGS`.
424
+
425
+ Override the default Linux UID/GID mapping behavior with:
420
426
 
421
427
  **macOS/Linux**
422
428