@google/gemini-cli 0.62.0-nightly.20260925.gbedef96ef → 0.62.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 (69) hide show
  1. package/bundle/{chunk-M4DUGOFW.js → chunk-2DHAEQE2.js} +90 -467
  2. package/bundle/{chunk-4JZM4J6T.js → chunk-2XM6DOWE.js} +2 -2
  3. package/bundle/{chunk-COHD3EAC.js → chunk-3VMO3WD7.js} +1 -1
  4. package/bundle/{chunk-TFNEL7HO.js → chunk-4GWDIIAP.js} +3 -3
  5. package/bundle/{chunk-LUG3MZLD.js → chunk-6DKHPDQ5.js} +1 -1
  6. package/bundle/{chunk-TYD74VXO.js → chunk-72GZSNV7.js} +14774 -8191
  7. package/bundle/{chunk-HBDPUOQW.js → chunk-7ETVC4KO.js} +1 -1
  8. package/bundle/{chunk-YIGDOMHJ.js → chunk-DML6Y2ZP.js} +2 -2
  9. package/bundle/{chunk-UFG6C5KE.js → chunk-DP2XO3WB.js} +1 -1
  10. package/bundle/{chunk-TNMENZTI.js → chunk-E2SRID3J.js} +1 -1
  11. package/bundle/{chunk-YZ6TLILF.js → chunk-F6RVU2CO.js} +1 -1
  12. package/bundle/{chunk-RETG7Z2C.js → chunk-GCL7X4WZ.js} +2 -2
  13. package/bundle/{chunk-QE6SEL5N.js → chunk-I47WLEEQ.js} +11 -45
  14. package/bundle/{chunk-AKMRRSMV.js → chunk-KCP45VUB.js} +1 -1
  15. package/bundle/{chunk-OF7DGARD.js → chunk-L5NOFB6M.js} +1 -1
  16. package/bundle/{chunk-H3SOW6BD.js → chunk-MLY4WQFO.js} +90 -421
  17. package/bundle/{chunk-MMWXIMUF.js → chunk-MNVEFU25.js} +3 -3
  18. package/bundle/{chunk-TKA3MSVK.js → chunk-OXDVMGJ3.js} +3 -3
  19. package/bundle/{chunk-GN6LRBHR.js → chunk-RWN52KQV.js} +5 -8
  20. package/bundle/{chunk-M5SV3LCW.js → chunk-T4GE6V5B.js} +8 -9
  21. package/bundle/{chunk-NZIIZAV3.js → chunk-TYBBTU4O.js} +1 -1
  22. package/bundle/{chunk-DOFIJ3YI.js → chunk-V43EQ7B6.js} +11 -45
  23. package/bundle/{chunk-R2TEKWUG.js → chunk-YOPBONYF.js} +1 -1
  24. package/bundle/{chunk-A3VAHJM3.js → chunk-ZRKGL4ZL.js} +62 -109
  25. package/bundle/{cleanup-HE7KYQAJ.js → cleanup-B2NP6ZJB.js} +2 -2
  26. package/bundle/{cleanup-INM5W2O2.js → cleanup-GJFEQLCV.js} +2 -2
  27. package/bundle/{cleanup-XSZILZES.js → cleanup-NYOWMRTL.js} +2 -2
  28. package/bundle/{core-PLITVDXB.js → core-4NPF436I.js} +1 -7
  29. package/bundle/{dist-5EPN333M.js → core-BXNHRQQE.js} +1 -7
  30. package/bundle/{devtoolsService-BUSRWWOS.js → devtoolsService-2TDRPBCW.js} +2 -2
  31. package/bundle/{devtoolsService-4D2QFII3.js → devtoolsService-47DUPCKM.js} +2 -2
  32. package/bundle/{devtoolsService-P7HLE6U4.js → devtoolsService-BIYZH2ME.js} +3 -4
  33. package/bundle/{dist-EBAUDX6K.js → dist-6S53KFXU.js} +1 -7
  34. package/bundle/docs/changelogs/index.md +0 -16
  35. package/bundle/docs/changelogs/latest.md +55 -34
  36. package/bundle/docs/changelogs/preview.md +3 -7
  37. package/bundle/{gemini-LJOD63ZZ.js → gemini-CGCV5XPN.js} +14 -14
  38. package/bundle/{gemini-E77OMSLO.js → gemini-J6X2T2ZI.js} +14 -14
  39. package/bundle/{gemini-III4I2TY.js → gemini-ZBM332DO.js} +198 -214
  40. package/bundle/gemini.js +7 -7
  41. package/bundle/{interactiveCli-GCRH54ZM.js → interactiveCli-HUDGOV74.js} +14 -31
  42. package/bundle/{interactiveCli-BJCS4WF5.js → interactiveCli-IDDEAOD5.js} +14 -31
  43. package/bundle/{interactiveCli-A3LNKRJV.js → interactiveCli-R4EMLFLM.js} +298 -334
  44. package/bundle/{liteRtServerManager-34QJA5UR.js → liteRtServerManager-A4B5FMXL.js} +4 -4
  45. package/bundle/{liteRtServerManager-PJMI7L5V.js → liteRtServerManager-QE27SHMQ.js} +4 -4
  46. package/bundle/{liteRtServerManager-TPFCEVH7.js → liteRtServerManager-WXCXUPDQ.js} +4 -4
  47. package/bundle/{oauth2-provider-HIFZ2YSU.js → oauth2-provider-3F6FOWLR.js} +1 -1
  48. package/bundle/{oauth2-provider-4IJXZY2A.js → oauth2-provider-43ANEHLB.js} +1 -1
  49. package/bundle/{oauth2-provider-65ESWRXC.js → oauth2-provider-MWRLM45J.js} +72 -38
  50. package/bundle/{start-6ET4IGUD.js → start-SQ2SPNQL.js} +6 -6
  51. package/bundle/{start-HKFTMESR.js → start-W7O4IWQ7.js} +6 -6
  52. package/bundle/{start-IYXWZL5M.js → start-ZMLXZ4VX.js} +6 -6
  53. package/package.json +1 -1
  54. package/bundle/chunk-BZNLCS4I.js +0 -398
  55. package/bundle/chunk-FW6KQPO4.js +0 -102951
  56. package/bundle/chunk-HM4SUAV7.js +0 -17368
  57. package/bundle/chunk-QPGOBA6C.js +0 -118
  58. package/bundle/chunk-X4QSELXY.js +0 -400361
  59. package/bundle/chunk-X63LZNK3.js +0 -1571
  60. package/bundle/chunk-YNCGLYYB.js +0 -154
  61. package/bundle/chunk-YUTWSGVZ.js +0 -512
  62. package/bundle/cleanup-ZZ2TESXC.js +0 -32
  63. package/bundle/devtoolsService-YD7ORPBB.js +0 -4359
  64. package/bundle/dist-SYCD6I6K.js +0 -2244
  65. package/bundle/gemini-46IOIZQR.js +0 -17863
  66. package/bundle/interactiveCli-XDQJSJNE.js +0 -34907
  67. package/bundle/liteRtServerManager-YPMJZLFF.js +0 -65
  68. package/bundle/oauth2-provider-KTV4RAAH.js +0 -235
  69. package/bundle/start-TIGZXUOM.js +0 -18
@@ -314,7 +314,6 @@ import {
314
314
  MAX_FILE_SIZE_MB,
315
315
  MAX_HISTORY_MESSAGES,
316
316
  MAX_LINE_LENGTH_TEXT_FILE,
317
- MAX_STORED_TOOL_OUTPUT_BYTES,
318
317
  MAX_TOKENS_EXCEEDED_SUGGESTION,
319
318
  MAX_TOOL_OUTPUT_SIZE,
320
319
  MCPDiscoveryState,
@@ -1094,9 +1093,7 @@ import {
1094
1093
  translateEvent,
1095
1094
  trimTrailingSpacesAndDots,
1096
1095
  truncateFastAckInput,
1097
- truncateFunctionResponsePart,
1098
1096
  truncateString,
1099
- truncateToolOutput,
1100
1097
  uiTelemetryService,
1101
1098
  unescapePath,
1102
1099
  updateGlobalFetchTimeouts,
@@ -1115,7 +1112,7 @@ import {
1115
1112
  wrapUntrusted,
1116
1113
  writeToStderr,
1117
1114
  writeToStdout
1118
- } from "./chunk-M4DUGOFW.js";
1115
+ } from "./chunk-72GZSNV7.js";
1119
1116
  import "./chunk-664ZODQF.js";
1120
1117
  import {
1121
1118
  SpanStatusCode,
@@ -1438,7 +1435,6 @@ export {
1438
1435
  MAX_FILE_SIZE_MB,
1439
1436
  MAX_HISTORY_MESSAGES,
1440
1437
  MAX_LINE_LENGTH_TEXT_FILE,
1441
- MAX_STORED_TOOL_OUTPUT_BYTES,
1442
1438
  MAX_TOKENS_EXCEEDED_SUGGESTION,
1443
1439
  MAX_TOOL_OUTPUT_SIZE,
1444
1440
  MCPDiscoveryState,
@@ -2220,9 +2216,7 @@ export {
2220
2216
  translateEvent,
2221
2217
  trimTrailingSpacesAndDots,
2222
2218
  truncateFastAckInput,
2223
- truncateFunctionResponsePart,
2224
2219
  truncateString,
2225
- truncateToolOutput,
2226
2220
  uiTelemetryService,
2227
2221
  unescapePath,
2228
2222
  updateGlobalFetchTimeouts,
@@ -314,7 +314,6 @@ import {
314
314
  MAX_FILE_SIZE_MB,
315
315
  MAX_HISTORY_MESSAGES,
316
316
  MAX_LINE_LENGTH_TEXT_FILE,
317
- MAX_STORED_TOOL_OUTPUT_BYTES,
318
317
  MAX_TOKENS_EXCEEDED_SUGGESTION,
319
318
  MAX_TOOL_OUTPUT_SIZE,
320
319
  MCPDiscoveryState,
@@ -1094,9 +1093,7 @@ import {
1094
1093
  translateEvent,
1095
1094
  trimTrailingSpacesAndDots,
1096
1095
  truncateFastAckInput,
1097
- truncateFunctionResponsePart,
1098
1096
  truncateString,
1099
- truncateToolOutput,
1100
1097
  uiTelemetryService,
1101
1098
  unescapePath,
1102
1099
  updateGlobalFetchTimeouts,
@@ -1115,7 +1112,7 @@ import {
1115
1112
  wrapUntrusted,
1116
1113
  writeToStderr,
1117
1114
  writeToStdout
1118
- } from "./chunk-H3SOW6BD.js";
1115
+ } from "./chunk-2DHAEQE2.js";
1119
1116
  import "./chunk-664ZODQF.js";
1120
1117
  import {
1121
1118
  SpanStatusCode,
@@ -1438,7 +1435,6 @@ export {
1438
1435
  MAX_FILE_SIZE_MB,
1439
1436
  MAX_HISTORY_MESSAGES,
1440
1437
  MAX_LINE_LENGTH_TEXT_FILE,
1441
- MAX_STORED_TOOL_OUTPUT_BYTES,
1442
1438
  MAX_TOKENS_EXCEEDED_SUGGESTION,
1443
1439
  MAX_TOOL_OUTPUT_SIZE,
1444
1440
  MCPDiscoveryState,
@@ -2220,9 +2216,7 @@ export {
2220
2216
  translateEvent,
2221
2217
  trimTrailingSpacesAndDots,
2222
2218
  truncateFastAckInput,
2223
- truncateFunctionResponsePart,
2224
2219
  truncateString,
2225
- truncateToolOutput,
2226
2220
  uiTelemetryService,
2227
2221
  unescapePath,
2228
2222
  updateGlobalFetchTimeouts,
@@ -3,7 +3,7 @@ import {
3
3
  CoreEvent,
4
4
  coreEvents,
5
5
  debugLogger
6
- } from "./chunk-TYD74VXO.js";
6
+ } from "./chunk-MLY4WQFO.js";
7
7
  import "./chunk-664ZODQF.js";
8
8
  import "./chunk-IUUIT4SU.js";
9
9
  import "./chunk-L6PII3GR.js";
@@ -4325,7 +4325,7 @@ async function toggleDevToolsPanel(config, isOpen, toggle, setOpen) {
4325
4325
  return;
4326
4326
  }
4327
4327
  try {
4328
- const { openBrowserSecurely, shouldLaunchBrowser } = await import("./dist-SYCD6I6K.js");
4328
+ const { openBrowserSecurely, shouldLaunchBrowser } = await import("./dist-6S53KFXU.js");
4329
4329
  const url = await startDevToolsServer(config);
4330
4330
  if (shouldLaunchBrowser()) {
4331
4331
  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-M4DUGOFW.js";
5
+ } from "./chunk-2DHAEQE2.js";
6
6
  import "./chunk-664ZODQF.js";
7
7
  import "./chunk-IUUIT4SU.js";
8
8
  import "./chunk-L6PII3GR.js";
@@ -4324,7 +4324,7 @@ async function toggleDevToolsPanel(config, isOpen, toggle, setOpen) {
4324
4324
  return;
4325
4325
  }
4326
4326
  try {
4327
- const { openBrowserSecurely, shouldLaunchBrowser } = await import("./core-PLITVDXB.js");
4327
+ const { openBrowserSecurely, shouldLaunchBrowser } = await import("./core-BXNHRQQE.js");
4328
4328
  const url = await startDevToolsServer(config);
4329
4329
  if (shouldLaunchBrowser()) {
4330
4330
  try {
@@ -1,9 +1,8 @@
1
1
  const require = (await import('node:module')).createRequire(import.meta.url); const __chunk_filename = (await import('node:url')).fileURLToPath(import.meta.url); const __chunk_dirname = (await import('node:path')).dirname(__chunk_filename);
2
2
  import {
3
- CoreEvent,
4
3
  coreEvents,
5
4
  debugLogger
6
- } from "./chunk-H3SOW6BD.js";
5
+ } from "./chunk-72GZSNV7.js";
7
6
  import "./chunk-664ZODQF.js";
8
7
  import "./chunk-IUUIT4SU.js";
9
8
  import "./chunk-L6PII3GR.js";
@@ -4174,7 +4173,7 @@ var bridgeAttached = false;
4174
4173
  function bridgeCoreEvents(capture) {
4175
4174
  if (bridgeAttached) return;
4176
4175
  bridgeAttached = true;
4177
- coreEvents.on(CoreEvent.ConsoleLog, (payload) => {
4176
+ coreEvents.on("console-log" /* ConsoleLog */, (payload) => {
4178
4177
  capture.logConsole(payload);
4179
4178
  });
4180
4179
  }
@@ -4325,7 +4324,7 @@ async function toggleDevToolsPanel(config, isOpen, toggle, setOpen) {
4325
4324
  return;
4326
4325
  }
4327
4326
  try {
4328
- const { openBrowserSecurely, shouldLaunchBrowser } = await import("./dist-5EPN333M.js");
4327
+ const { openBrowserSecurely, shouldLaunchBrowser } = await import("./core-4NPF436I.js");
4329
4328
  const url = await startDevToolsServer(config);
4330
4329
  if (shouldLaunchBrowser()) {
4331
4330
  try {
@@ -314,7 +314,6 @@ import {
314
314
  MAX_FILE_SIZE_MB,
315
315
  MAX_HISTORY_MESSAGES,
316
316
  MAX_LINE_LENGTH_TEXT_FILE,
317
- MAX_STORED_TOOL_OUTPUT_BYTES,
318
317
  MAX_TOKENS_EXCEEDED_SUGGESTION,
319
318
  MAX_TOOL_OUTPUT_SIZE,
320
319
  MCPDiscoveryState,
@@ -1094,9 +1093,7 @@ import {
1094
1093
  translateEvent,
1095
1094
  trimTrailingSpacesAndDots,
1096
1095
  truncateFastAckInput,
1097
- truncateFunctionResponsePart,
1098
1096
  truncateString,
1099
- truncateToolOutput,
1100
1097
  uiTelemetryService,
1101
1098
  unescapePath,
1102
1099
  updateGlobalFetchTimeouts,
@@ -1115,7 +1112,7 @@ import {
1115
1112
  wrapUntrusted,
1116
1113
  writeToStderr,
1117
1114
  writeToStdout
1118
- } from "./chunk-X4QSELXY.js";
1115
+ } from "./chunk-MLY4WQFO.js";
1119
1116
  import "./chunk-664ZODQF.js";
1120
1117
  import {
1121
1118
  SpanStatusCode,
@@ -1438,7 +1435,6 @@ export {
1438
1435
  MAX_FILE_SIZE_MB,
1439
1436
  MAX_HISTORY_MESSAGES,
1440
1437
  MAX_LINE_LENGTH_TEXT_FILE,
1441
- MAX_STORED_TOOL_OUTPUT_BYTES,
1442
1438
  MAX_TOKENS_EXCEEDED_SUGGESTION,
1443
1439
  MAX_TOOL_OUTPUT_SIZE,
1444
1440
  MCPDiscoveryState,
@@ -2220,9 +2216,7 @@ export {
2220
2216
  translateEvent,
2221
2217
  trimTrailingSpacesAndDots,
2222
2218
  truncateFastAckInput,
2223
- truncateFunctionResponsePart,
2224
2219
  truncateString,
2225
- truncateToolOutput,
2226
2220
  uiTelemetryService,
2227
2221
  unescapePath,
2228
2222
  updateGlobalFetchTimeouts,
@@ -18,22 +18,6 @@ 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.61.0 - 2026-09-23
22
-
23
- - **Core Security Hardening:** Prevented indirect prompt injection
24
- vulnerabilities via build file modifications and untrusted flags, while
25
- hardening filesystem boundaries and isolating runtime state
26
- ([#29250](https://github.com/google-gemini/gemini-cli/pull/29250) by
27
- @villahernandez-coder,
28
- [#29214](https://github.com/google-gemini/gemini-cli/pull/29214) by
29
- @diegogodinezr).
30
- - **Agent Loop and Model Stability:** Ensured AgentLoopContext state
31
- preservation across spread operations and preserved explicit versioned Flash
32
- model IDs ([#29335](https://github.com/google-gemini/gemini-cli/pull/29335) by
33
- @diegogodinezr,
34
- [#29252](https://github.com/google-gemini/gemini-cli/pull/29252) by
35
- @SandyTao520).
36
-
37
21
  ## Announcements: v0.60.0 - 2026-09-15
38
22
 
39
23
  - **Extension & Tool Safety Hardening:** Prompt for user consent on environment
@@ -1,6 +1,6 @@
1
- # Latest stable release: v0.61.0
1
+ # Latest stable release: v0.60.0
2
2
 
3
- Released: September 23, 2026
3
+ Released: September 15, 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
+ - **Extension Consent & Isolation:** Introduced explicit prompting for user
15
+ consent on environment changes requested by extensions, along with
16
+ sanitization of runtime-altering environment variables to ensure secure
17
+ execution environments.
18
+ - **Sandbox & Directory Hardening:** Isolated the settings directory and
19
+ temporary directories within sandbox containers, including specific path
20
+ isolation enhancements for the macOS Seatbelt sandbox.
21
+ - **Robust Boundary & Path Resolution:** Hardened workspace boundary validation,
22
+ symlink resolution, and NTFS 8.3 short name (SFN) path mitigation across
23
+ command safety and file discovery utilities.
24
+ - **Enhanced API & Connection Security:** Implemented strict RFC 9207 issuer
25
+ identification in the Model Context Protocol (MCP) OAuth flow, along with
26
+ improved destination validation and connection routing inside web fetch
27
+ utilities.
24
28
 
25
29
  ## What's Changed
26
30
 
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
31
+ - fix(core): improve destination validation and connection routing in web fetch
32
+ utilities by @diegogodinezr in
33
+ [#29120](https://github.com/google-gemini/gemini-cli/pull/29120)
34
+ - fix(core): enforce RFC 9207 issuer identification in MCP OAuth flow by
35
+ @jvargassanchez-dot in
36
+ [#29117](https://github.com/google-gemini/gemini-cli/pull/29117)
37
+ - chore(release): bump version to 0.60.0-nightly.20260901.g0bd1d4397 by
30
38
  @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)
39
+ [#29162](https://github.com/google-gemini/gemini-cli/pull/29162)
40
+ - Changelog for v0.58.0 by @gemini-cli-robot in
41
+ [#29161](https://github.com/google-gemini/gemini-cli/pull/29161)
42
+ - fix(cli): isolate temporary directory for macOS Seatbelt sandbox by
43
+ @jvargassanchez-dot in
44
+ [#29171](https://github.com/google-gemini/gemini-cli/pull/29171)
45
+ - feat(extensions): harden path resolution and boundary validation in extension
46
+ loader by @diegogodinezr in
47
+ [#29169](https://github.com/google-gemini/gemini-cli/pull/29169)
48
+ - Changelog for v0.59.0-preview.0 by @gemini-cli-robot in
49
+ [#29159](https://github.com/google-gemini/gemini-cli/pull/29159)
50
+ - fix(core): sanitize and remove hardcoded Google CrUX API key in
51
+ chrome-devtools-mcp by @amelidev in
52
+ [#29158](https://github.com/google-gemini/gemini-cli/pull/29158)
53
+ - fix(extensions): prompt for consent on environment changes and sanitize
54
+ runtime-altering environment variables by @amelidev in
55
+ [#28863](https://github.com/google-gemini/gemini-cli/pull/28863)
56
+ - fix(core): enhance workspace path boundary checks and symlink resolution in
57
+ command safety and file discovery by @jesussamuel-byte in
58
+ [#29170](https://github.com/google-gemini/gemini-cli/pull/29170)
59
+ - fix(config): enforce strict permission and ownership checks on system-wide
60
+ configuration paths by @jesussamuel-byte in
61
+ [#29115](https://github.com/google-gemini/gemini-cli/pull/29115)
62
+ - fix(core): mitigate NTFS 8.3 short name (SFN) path by @urielefrenvirtusa in
63
+ [#29116](https://github.com/google-gemini/gemini-cli/pull/29116)
64
+ - fix(cli): isolate settings directory in sandbox containers by
65
+ @jvargassanchez-dot in
66
+ [#29216](https://github.com/google-gemini/gemini-cli/pull/29216)
67
+ - fix(core): enforce envelope metadata provenance for untrusted tool outputs by
68
+ @luisfelipe-alt in
69
+ [#29215](https://github.com/google-gemini/gemini-cli/pull/29215)
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.59.0...v0.60.0
@@ -1,6 +1,6 @@
1
- # Preview release: v0.61.0-preview.1
1
+ # Preview release: v0.61.0-preview.0
2
2
 
3
- Released: September 23, 2026
3
+ Released: September 15, 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).
@@ -26,10 +26,6 @@ npm install -g @google/gemini-cli@preview
26
26
 
27
27
  ## What's Changed
28
28
 
29
- - fix(patch): cherry-pick 62364cb to release/v0.61.0-preview.0-pr-29443 to patch
30
- version v0.61.0-preview.0 and create version 0.61.0-preview.1 by
31
- @gemini-cli-robot in
32
- [#29455](https://github.com/google-gemini/gemini-cli/pull/29455)
33
29
  - Changelog for v0.60.0-preview.0 by @gemini-cli-robot in
34
30
  [#29251](https://github.com/google-gemini/gemini-cli/pull/29251)
35
31
  - chore(release): bump version to 0.61.0-nightly.20260908.gc647533d6 by
@@ -50,4 +46,4 @@ npm install -g @google/gemini-cli@preview
50
46
  [#29335](https://github.com/google-gemini/gemini-cli/pull/29335)
51
47
 
52
48
  **Full Changelog**:
53
- https://github.com/google-gemini/gemini-cli/compare/v0.60.0-preview.0...v0.61.0-preview.1
49
+ https://github.com/google-gemini/gemini-cli/compare/v0.60.0-preview.0...v0.61.0-preview.0
@@ -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-QPGOBA6C.js";
5
+ } from "./chunk-4GWDIIAP.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-QE6SEL5N.js";
49
+ } from "./chunk-ZRKGL4ZL.js";
50
50
  import {
51
51
  exitCli,
52
52
  require_source
53
- } from "./chunk-LUG3MZLD.js";
53
+ } from "./chunk-L5NOFB6M.js";
54
54
  import {
55
55
  appEvents
56
56
  } from "./chunk-5PS3AYFU.js";
@@ -88,11 +88,11 @@ import {
88
88
  resolveGemmaConfig,
89
89
  saveModelChange,
90
90
  stripAnsi
91
- } from "./chunk-AKMRRSMV.js";
91
+ } from "./chunk-RWN52KQV.js";
92
92
  import {
93
93
  RELAUNCH_EXIT_CODE
94
- } from "./chunk-YIGDOMHJ.js";
95
- import "./chunk-YZ6TLILF.js";
94
+ } from "./chunk-GCL7X4WZ.js";
95
+ import "./chunk-T4GE6V5B.js";
96
96
  import {
97
97
  cleanupCheckpoints,
98
98
  registerCleanup,
@@ -101,7 +101,7 @@ import {
101
101
  runExitCleanup,
102
102
  runSyncCleanup,
103
103
  setupSignalHandlers
104
- } from "./chunk-HBDPUOQW.js";
104
+ } from "./chunk-7ETVC4KO.js";
105
105
  import {
106
106
  ASK_USER_TOOL_NAME,
107
107
  AuthType,
@@ -239,7 +239,7 @@ import {
239
239
  updatePolicy,
240
240
  writeToStderr,
241
241
  writeToStdout
242
- } from "./chunk-M4DUGOFW.js";
242
+ } from "./chunk-72GZSNV7.js";
243
243
  import "./chunk-664ZODQF.js";
244
244
  import "./chunk-IUUIT4SU.js";
245
245
  import "./chunk-L6PII3GR.js";
@@ -7839,7 +7839,7 @@ async function loadSandboxConfig(settings, argv) {
7839
7839
  }
7840
7840
  const command2 = getSandboxCommand(sandboxValue);
7841
7841
  const packageJson = await getPackageJson(__dirname3);
7842
- const image = process.env["GEMINI_SANDBOX_IMAGE"] ?? "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.62.0-nightly.20260918.g9450ade79" ?? customImage ?? packageJson?.config?.sandboxImageUri;
7842
+ const image = process.env["GEMINI_SANDBOX_IMAGE"] ?? "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.62.0-preview.0" ?? customImage ?? packageJson?.config?.sandboxImageUri;
7843
7843
  const isNative = command2 === "windows-native" || command2 === "sandbox-exec" || command2 === "lxc";
7844
7844
  return command2 && (image || isNative) ? { enabled: true, allowedPaths, networkAccess, command: command2, image } : void 0;
7845
7845
  }
@@ -11510,7 +11510,7 @@ async function runNonInteractive({
11510
11510
  }
11511
11511
  });
11512
11512
  if (process.env["GEMINI_CLI_ACTIVITY_LOG_TARGET"]) {
11513
- const { setupInitialActivityLogger } = await import("./devtoolsService-4D2QFII3.js");
11513
+ const { setupInitialActivityLogger } = await import("./devtoolsService-BIYZH2ME.js");
11514
11514
  setupInitialActivityLogger(config);
11515
11515
  }
11516
11516
  const { stdout: workingStdout } = createWorkingStdio();
@@ -12020,7 +12020,7 @@ async function runNonInteractive2(params) {
12020
12020
  }
12021
12021
  });
12022
12022
  if (process.env["GEMINI_CLI_ACTIVITY_LOG_TARGET"]) {
12023
- const { setupInitialActivityLogger } = await import("./devtoolsService-4D2QFII3.js");
12023
+ const { setupInitialActivityLogger } = await import("./devtoolsService-BIYZH2ME.js");
12024
12024
  setupInitialActivityLogger(config);
12025
12025
  }
12026
12026
  const { stdout: workingStdout } = createWorkingStdio();
@@ -17331,7 +17331,7 @@ async function resolveSessionId(resumeArg, sessionIdArg, sessionFileArg) {
17331
17331
  }
17332
17332
  }
17333
17333
  async function startInteractiveUI(config, settings, startupWarnings, workspaceRoot = process.cwd(), resumedSessionData, initializationResult) {
17334
- const { startInteractiveUI: doStartUI } = await import("./interactiveCli-GCRH54ZM.js");
17334
+ const { startInteractiveUI: doStartUI } = await import("./interactiveCli-HUDGOV74.js");
17335
17335
  await doStartUI(
17336
17336
  config,
17337
17337
  settings,
@@ -17540,7 +17540,7 @@ ${finalArgs[promptIndex + 1]}`;
17540
17540
  await config.storage.initialize();
17541
17541
  adminControlsListner.setConfig(config);
17542
17542
  if (config.isInteractive() && settings.merged.general.devtools) {
17543
- const { setupInitialActivityLogger } = await import("./devtoolsService-4D2QFII3.js");
17543
+ const { setupInitialActivityLogger } = await import("./devtoolsService-BIYZH2ME.js");
17544
17544
  setupInitialActivityLogger(config);
17545
17545
  }
17546
17546
  registerTelemetryConfig(config);
@@ -17599,7 +17599,7 @@ ${finalArgs[promptIndex + 1]}`;
17599
17599
  const initAppHandle = startupProfiler.start("initialize_app");
17600
17600
  const initializationResult = await initializeApp(config, settings);
17601
17601
  initAppHandle?.end();
17602
- import("./liteRtServerManager-34QJA5UR.js").then(({ LiteRtServerManager }) => {
17602
+ import("./liteRtServerManager-WXCXUPDQ.js").then(({ LiteRtServerManager }) => {
17603
17603
  const mergedGemma = settings.merged.experimental?.gemmaModelRouter;
17604
17604
  if (!mergedGemma) return;
17605
17605
  const userGemma = settings.forScope("User" /* User */).settings.experimental?.gemmaModelRouter;
@@ -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-TFNEL7HO.js";
5
+ } from "./chunk-OXDVMGJ3.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-DOFIJ3YI.js";
49
+ } from "./chunk-V43EQ7B6.js";
50
50
  import {
51
51
  exitCli,
52
52
  require_source
53
- } from "./chunk-OF7DGARD.js";
53
+ } from "./chunk-YOPBONYF.js";
54
54
  import {
55
55
  appEvents
56
56
  } from "./chunk-5PS3AYFU.js";
@@ -88,11 +88,11 @@ import {
88
88
  resolveGemmaConfig,
89
89
  saveModelChange,
90
90
  stripAnsi
91
- } from "./chunk-GN6LRBHR.js";
91
+ } from "./chunk-3VMO3WD7.js";
92
92
  import {
93
93
  RELAUNCH_EXIT_CODE
94
- } from "./chunk-4JZM4J6T.js";
95
- import "./chunk-UFG6C5KE.js";
94
+ } from "./chunk-DML6Y2ZP.js";
95
+ import "./chunk-DP2XO3WB.js";
96
96
  import {
97
97
  cleanupCheckpoints,
98
98
  registerCleanup,
@@ -101,7 +101,7 @@ import {
101
101
  runExitCleanup,
102
102
  runSyncCleanup,
103
103
  setupSignalHandlers
104
- } from "./chunk-NZIIZAV3.js";
104
+ } from "./chunk-TYBBTU4O.js";
105
105
  import {
106
106
  ASK_USER_TOOL_NAME,
107
107
  ApprovalMode,
@@ -255,7 +255,7 @@ import {
255
255
  updatePolicy,
256
256
  writeToStderr,
257
257
  writeToStdout
258
- } from "./chunk-X4QSELXY.js";
258
+ } from "./chunk-MLY4WQFO.js";
259
259
  import "./chunk-664ZODQF.js";
260
260
  import "./chunk-IUUIT4SU.js";
261
261
  import "./chunk-L6PII3GR.js";
@@ -7855,7 +7855,7 @@ async function loadSandboxConfig(settings, argv) {
7855
7855
  }
7856
7856
  const command2 = getSandboxCommand(sandboxValue);
7857
7857
  const packageJson = await getPackageJson(__dirname3);
7858
- const image = process.env["GEMINI_SANDBOX_IMAGE"] ?? "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.62.0-nightly.20260925.gbedef96ef" ?? customImage ?? packageJson?.config?.sandboxImageUri;
7858
+ const image = process.env["GEMINI_SANDBOX_IMAGE"] ?? "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.62.0" ?? customImage ?? packageJson?.config?.sandboxImageUri;
7859
7859
  const isNative = command2 === "windows-native" || command2 === "sandbox-exec" || command2 === "lxc";
7860
7860
  return command2 && (image || isNative) ? { enabled: true, allowedPaths, networkAccess, command: command2, image } : void 0;
7861
7861
  }
@@ -11526,7 +11526,7 @@ async function runNonInteractive({
11526
11526
  }
11527
11527
  });
11528
11528
  if (process.env["GEMINI_CLI_ACTIVITY_LOG_TARGET"]) {
11529
- const { setupInitialActivityLogger } = await import("./devtoolsService-YD7ORPBB.js");
11529
+ const { setupInitialActivityLogger } = await import("./devtoolsService-2TDRPBCW.js");
11530
11530
  setupInitialActivityLogger(config);
11531
11531
  }
11532
11532
  const { stdout: workingStdout } = createWorkingStdio();
@@ -12036,7 +12036,7 @@ async function runNonInteractive2(params) {
12036
12036
  }
12037
12037
  });
12038
12038
  if (process.env["GEMINI_CLI_ACTIVITY_LOG_TARGET"]) {
12039
- const { setupInitialActivityLogger } = await import("./devtoolsService-YD7ORPBB.js");
12039
+ const { setupInitialActivityLogger } = await import("./devtoolsService-2TDRPBCW.js");
12040
12040
  setupInitialActivityLogger(config);
12041
12041
  }
12042
12042
  const { stdout: workingStdout } = createWorkingStdio();
@@ -17347,7 +17347,7 @@ async function resolveSessionId(resumeArg, sessionIdArg, sessionFileArg) {
17347
17347
  }
17348
17348
  }
17349
17349
  async function startInteractiveUI(config, settings, startupWarnings, workspaceRoot = process.cwd(), resumedSessionData, initializationResult) {
17350
- const { startInteractiveUI: doStartUI } = await import("./interactiveCli-XDQJSJNE.js");
17350
+ const { startInteractiveUI: doStartUI } = await import("./interactiveCli-IDDEAOD5.js");
17351
17351
  await doStartUI(
17352
17352
  config,
17353
17353
  settings,
@@ -17556,7 +17556,7 @@ ${finalArgs[promptIndex + 1]}`;
17556
17556
  await config.storage.initialize();
17557
17557
  adminControlsListner.setConfig(config);
17558
17558
  if (config.isInteractive() && settings.merged.general.devtools) {
17559
- const { setupInitialActivityLogger } = await import("./devtoolsService-YD7ORPBB.js");
17559
+ const { setupInitialActivityLogger } = await import("./devtoolsService-2TDRPBCW.js");
17560
17560
  setupInitialActivityLogger(config);
17561
17561
  }
17562
17562
  registerTelemetryConfig(config);
@@ -17615,7 +17615,7 @@ ${finalArgs[promptIndex + 1]}`;
17615
17615
  const initAppHandle = startupProfiler.start("initialize_app");
17616
17616
  const initializationResult = await initializeApp(config, settings);
17617
17617
  initAppHandle?.end();
17618
- import("./liteRtServerManager-PJMI7L5V.js").then(({ LiteRtServerManager }) => {
17618
+ import("./liteRtServerManager-QE27SHMQ.js").then(({ LiteRtServerManager }) => {
17619
17619
  const mergedGemma = settings.merged.experimental?.gemmaModelRouter;
17620
17620
  if (!mergedGemma) return;
17621
17621
  const userGemma = settings.forScope("User" /* User */).settings.experimental?.gemmaModelRouter;