@google/gemini-cli-core 0.66.0-preview.0 → 0.67.0-nightly.20261022.g09d81bf11
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.
- package/dist/docs/changelogs/index.md +19 -0
- package/dist/docs/changelogs/latest.md +91 -60
- package/dist/docs/changelogs/preview.md +86 -90
- package/dist/docs/cli/sandbox.md +24 -0
- package/dist/docs/ide-integration/index.md +30 -6
- package/dist/google-gemini-cli-core-0.67.0-nightly.20261020.gb041de017.tgz +0 -0
- package/dist/src/agents/registry.js +43 -40
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +81 -0
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/config/config.js +3 -0
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +12 -0
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/ide/ide-client.js +5 -5
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.sandbox.test.d.ts +6 -0
- package/dist/src/ide/ide-client.sandbox.test.js +283 -0
- package/dist/src/ide/ide-client.sandbox.test.js.map +1 -0
- package/dist/src/ide/ide-connection-utils.d.ts +11 -0
- package/dist/src/ide/ide-connection-utils.js +18 -1
- package/dist/src/ide/ide-connection-utils.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +5 -0
- package/dist/src/ide/ideContext.js +25 -0
- package/dist/src/ide/ideContext.js.map +1 -1
- package/dist/src/ide/ideContext.test.js +77 -1
- package/dist/src/ide/ideContext.test.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/services/fileSystemService.atomic.test.js +34 -0
- package/dist/src/services/fileSystemService.atomic.test.js.map +1 -1
- package/dist/src/services/fileSystemService.d.ts +9 -1
- package/dist/src/services/fileSystemService.js +44 -5
- package/dist/src/services/fileSystemService.js.map +1 -1
- package/dist/src/services/fileSystemService.test.js +62 -0
- package/dist/src/services/fileSystemService.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +6 -0
- package/dist/src/tools/shell.js +54 -11
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +88 -1
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/write-file.test.js +25 -0
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/customHeaderUtils.js +2 -2
- package/dist/src/utils/customHeaderUtils.js.map +1 -1
- package/dist/src/utils/customHeaderUtils.test.js +25 -0
- package/dist/src/utils/customHeaderUtils.test.js.map +1 -1
- package/dist/src/utils/textUtils.d.ts +2 -1
- package/dist/src/utils/textUtils.js +5 -2
- package/dist/src/utils/textUtils.js.map +1 -1
- package/dist/src/utils/textUtils.test.js +8 -0
- package/dist/src/utils/textUtils.test.js.map +1 -1
- package/dist/src/utils/untrustedContextTracker.d.ts +43 -1
- package/dist/src/utils/untrustedContextTracker.js +167 -16
- package/dist/src/utils/untrustedContextTracker.js.map +1 -1
- package/dist/src/utils/untrustedContextTracker.test.js +202 -2
- package/dist/src/utils/untrustedContextTracker.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -18,6 +18,25 @@ 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.65.0 - 2026-10-20
|
|
22
|
+
|
|
23
|
+
- **Custom Telemetry Headers:** Added support for configuring custom OTLP
|
|
24
|
+
headers in telemetry configuration
|
|
25
|
+
([#29641](https://github.com/google-gemini/gemini-cli/pull/29641) by
|
|
26
|
+
@jesussamuel-byte).
|
|
27
|
+
- **Filesystem & Traversal Performance:** Optimized ignore pattern filtering
|
|
28
|
+
with subtree pruning and deferred recursive file reads for directory
|
|
29
|
+
references ([#29582](https://github.com/google-gemini/gemini-cli/pull/29582)
|
|
30
|
+
by @amelidev, [#29617](https://github.com/google-gemini/gemini-cli/pull/29617)
|
|
31
|
+
by @jvargassanchez-dot).
|
|
32
|
+
- **Workspace Security & Session Resilience:** Enforced read-only workspace
|
|
33
|
+
settings in untrusted folders, resolved infinite OAuth retry loops, and
|
|
34
|
+
prevented session poisoning on rapid Ctrl+C interruptions
|
|
35
|
+
([#29583](https://github.com/google-gemini/gemini-cli/pull/29583) by
|
|
36
|
+
@jvargassanchez-dot,
|
|
37
|
+
[#29655](https://github.com/google-gemini/gemini-cli/pull/29655) by
|
|
38
|
+
@villahernandez-coder).
|
|
39
|
+
|
|
21
40
|
## Announcements: v0.64.0 - 2026-10-13
|
|
22
41
|
|
|
23
42
|
- **Atomic Operations & State Persistence:** Serialized file tool operations
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Latest stable release: v0.
|
|
1
|
+
# Latest stable release: v0.65.0
|
|
2
2
|
|
|
3
|
-
Released: October
|
|
3
|
+
Released: October 20, 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,72 +11,103 @@ npm install -g @google/gemini-cli
|
|
|
11
11
|
|
|
12
12
|
## Highlights
|
|
13
13
|
|
|
14
|
-
- **
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- **
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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.
|
|
27
31
|
|
|
28
32
|
## What's Changed
|
|
29
33
|
|
|
30
|
-
-
|
|
34
|
+
- fix(cli): enforce read-only workspace settings in untrusted folders by
|
|
31
35
|
@jvargassanchez-dot in
|
|
32
|
-
[#
|
|
33
|
-
- fix(
|
|
34
|
-
|
|
35
|
-
[#
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
|
41
54
|
@gemini-cli-robot in
|
|
42
|
-
[#
|
|
43
|
-
- fix(
|
|
44
|
-
@
|
|
45
|
-
[#
|
|
46
|
-
- fix(core):
|
|
55
|
+
[#29657](https://github.com/google-gemini/gemini-cli/pull/29657)
|
|
56
|
+
- fix(ci): add missing loop in unassign-inactive-assignees workflow by
|
|
57
|
+
@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
|
|
66
|
+
@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
|
|
47
77
|
@elberthc-byte in
|
|
48
|
-
[#
|
|
49
|
-
- fix(core):
|
|
50
|
-
|
|
51
|
-
[#
|
|
52
|
-
- fix(cli):
|
|
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
|
|
53
83
|
@urielefrenvirtusa in
|
|
54
|
-
[#
|
|
55
|
-
- fix(cli):
|
|
56
|
-
|
|
57
|
-
[#
|
|
58
|
-
-
|
|
84
|
+
[#29643](https://github.com/google-gemini/gemini-cli/pull/29643)
|
|
85
|
+
- fix(cli): resolve hang on Enter keypress in interactive mode (#23297) by
|
|
86
|
+
@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
|
|
94
|
+
@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
|
|
59
97
|
@jesussamuel-byte in
|
|
60
|
-
[#
|
|
61
|
-
- fix(
|
|
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
|
|
62
103
|
@jesussamuel-byte in
|
|
63
|
-
[#
|
|
64
|
-
- fix(cli):
|
|
65
|
-
|
|
66
|
-
[#
|
|
67
|
-
- fix(
|
|
68
|
-
|
|
69
|
-
[#
|
|
70
|
-
- fix(cli): preserve scroll position and partition pending height budget by
|
|
71
|
-
@luisfelipe-alt in
|
|
72
|
-
[#29520](https://github.com/google-gemini/gemini-cli/pull/29520)
|
|
73
|
-
- fix(cli): ensure Enter and Spacebar reliably confirm selection list options by
|
|
74
|
-
@ugorla-dev in
|
|
75
|
-
[#29502](https://github.com/google-gemini/gemini-cli/pull/29502)
|
|
76
|
-
- fix(patch): cherry-pick 2ce1a69 to release/v0.64.0-preview.0-pr-29672 to patch
|
|
77
|
-
version v0.64.0-preview.0 and create version 0.64.0-preview.1 by
|
|
78
|
-
@gemini-cli-robot in
|
|
79
|
-
[#29696](https://github.com/google-gemini/gemini-cli/pull/29696)
|
|
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)
|
|
80
111
|
|
|
81
112
|
**Full Changelog**:
|
|
82
|
-
https://github.com/google-gemini/gemini-cli/compare/v0.
|
|
113
|
+
https://github.com/google-gemini/gemini-cli/compare/v0.64.0...v0.65.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Preview release: v0.
|
|
1
|
+
# Preview release: v0.66.0-preview.0
|
|
2
2
|
|
|
3
|
-
Released: October
|
|
3
|
+
Released: October 20, 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,103 +13,99 @@ npm install -g @google/gemini-cli@preview
|
|
|
13
13
|
|
|
14
14
|
## Highlights
|
|
15
15
|
|
|
16
|
-
- **
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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.
|
|
33
35
|
|
|
34
36
|
## What's Changed
|
|
35
37
|
|
|
36
|
-
-
|
|
37
|
-
@
|
|
38
|
-
[#
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- fix(core): prevent deletion of resumed session history on quick exit (#29198)
|
|
43
|
-
by @villahernandez-coder in
|
|
44
|
-
[#29584](https://github.com/google-gemini/gemini-cli/pull/29584)
|
|
45
|
-
- Changelog for v0.64.0-preview.0 by @gemini-cli-robot in
|
|
46
|
-
[#29656](https://github.com/google-gemini/gemini-cli/pull/29656)
|
|
47
|
-
- Changelog for v0.63.0 by @gemini-cli-robot in
|
|
48
|
-
[#29659](https://github.com/google-gemini/gemini-cli/pull/29659)
|
|
49
|
-
- fix(core): align OAuth callback iss parameter validation with RFC 9207
|
|
50
|
-
metadata by @luisfelipe-alt in
|
|
51
|
-
[#29616](https://github.com/google-gemini/gemini-cli/pull/29616)
|
|
52
|
-
- fix(cli): prevent unnecessary terminal clears and scroll resets when expanding
|
|
53
|
-
with Ctrl+O by @jesussamuel-byte in
|
|
54
|
-
[#29640](https://github.com/google-gemini/gemini-cli/pull/29640)
|
|
55
|
-
- chore(release): bump version to 0.65.0-nightly.20261006.gfb972b2f8 by
|
|
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
|
|
56
44
|
@gemini-cli-robot in
|
|
57
|
-
[#
|
|
58
|
-
-
|
|
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
|
|
59
52
|
@ugorla-dev in
|
|
60
|
-
[#
|
|
61
|
-
- fix(
|
|
62
|
-
by @luisfelipe-alt in
|
|
63
|
-
[#29612](https://github.com/google-gemini/gemini-cli/pull/29612)
|
|
64
|
-
- `feat(telemetry): support custom OTLP headers in telemetry configuration` by
|
|
65
|
-
@jesussamuel-byte in
|
|
66
|
-
[#29641](https://github.com/google-gemini/gemini-cli/pull/29641)
|
|
67
|
-
- fix(auth): prevent infinite verification and OAuth retry loops by
|
|
53
|
+
[#29695](https://github.com/google-gemini/gemini-cli/pull/29695)
|
|
54
|
+
- fix(cli): prevent right-hand border bleed in scrollable tool containers by
|
|
68
55
|
@villahernandez-coder in
|
|
69
|
-
[#
|
|
70
|
-
-
|
|
71
|
-
@jesussamuel-byte in
|
|
72
|
-
[#
|
|
73
|
-
- fix(core):
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
[#
|
|
78
|
-
- fix(core):
|
|
79
|
-
@
|
|
80
|
-
[#
|
|
81
|
-
- fix(
|
|
82
|
-
loops by @DavidAPierce in
|
|
83
|
-
[#29672](https://github.com/google-gemini/gemini-cli/pull/29672)
|
|
84
|
-
- fix(cli): clear cached credentials when re-selecting Google login by
|
|
85
|
-
@urielefrenvirtusa in
|
|
86
|
-
[#29643](https://github.com/google-gemini/gemini-cli/pull/29643)
|
|
87
|
-
- fix(cli): resolve hang on Enter keypress in interactive mode (#23297) by
|
|
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
|
|
66
|
+
@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
|
|
88
69
|
@elberthc-byte in
|
|
89
|
-
[#
|
|
90
|
-
-
|
|
91
|
-
@
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
[#
|
|
95
|
-
-
|
|
70
|
+
[#29750](https://github.com/google-gemini/gemini-cli/pull/29750)
|
|
71
|
+
- fix(core): harden SKILL.md frontmatter parsing for single-line descriptions by
|
|
72
|
+
@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
|
|
96
82
|
@jvargassanchez-dot in
|
|
97
|
-
[#
|
|
98
|
-
- fix(cli):
|
|
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
|
|
93
|
+
@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
|
|
99
96
|
@jesussamuel-byte in
|
|
100
|
-
[#
|
|
101
|
-
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
- fix(core): treat whitespace-only UTF-16 and UTF-32 files as empty by
|
|
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
|
|
105
101
|
@jesussamuel-byte in
|
|
106
|
-
[#
|
|
107
|
-
- fix(
|
|
108
|
-
@
|
|
109
|
-
[#
|
|
110
|
-
- fix(
|
|
111
|
-
@
|
|
112
|
-
[#
|
|
102
|
+
[#29832](https://github.com/google-gemini/gemini-cli/pull/29832)
|
|
103
|
+
- fix(core): prevent false positive matches in isAuthenticationError by
|
|
104
|
+
@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)
|
|
113
109
|
|
|
114
110
|
**Full Changelog**:
|
|
115
|
-
https://github.com/google-gemini/gemini-cli/compare/v0.
|
|
111
|
+
https://github.com/google-gemini/gemini-cli/compare/v0.65.0-preview.0...v0.66.0-preview.0
|
package/dist/docs/cli/sandbox.md
CHANGED
|
@@ -118,6 +118,14 @@ mount your local project folder and operate within `/Users/you/project` inside
|
|
|
118
118
|
the container. This allows the AI to seamlessly read and modify your project
|
|
119
119
|
files while remaining isolated from the rest of your system.
|
|
120
120
|
|
|
121
|
+
**How it works (IDE integration):**
|
|
122
|
+
|
|
123
|
+
When you start Gemini CLI from your IDE's integrated terminal, the host process
|
|
124
|
+
bridges the IDE companion connection into the container over `docker exec` (or
|
|
125
|
+
`podman exec`). The companion's port and authentication token stay on the host;
|
|
126
|
+
only the IDE calls that Gemini CLI needs are relayed. For details, see
|
|
127
|
+
[Using with sandboxing](../ide-integration/index.md#using-with-sandboxing).
|
|
128
|
+
|
|
121
129
|
**Quick setup:**
|
|
122
130
|
|
|
123
131
|
To enable Docker sandboxing, run Gemini CLI with the sandbox flag and specify
|
|
@@ -220,6 +228,14 @@ To set up runsc:
|
|
|
220
228
|
2. Configure the Docker daemon to use the runsc runtime.
|
|
221
229
|
3. Verify the installation.
|
|
222
230
|
|
|
231
|
+
gVisor gives the container its own user-space network stack, so services bound
|
|
232
|
+
to your host's loopback interface aren't reachable from inside the sandbox, even
|
|
233
|
+
with `--network host`. Gemini CLI's IDE integration doesn't rely on container
|
|
234
|
+
networking: the host process bridges the connection over `docker exec` (see
|
|
235
|
+
[Using with sandboxing](../ide-integration/index.md#using-with-sandboxing)). If
|
|
236
|
+
you configure the `runsc` runtime with `--network=none`, the sandboxed CLI has
|
|
237
|
+
no external network access at all and can't reach the Gemini API.
|
|
238
|
+
|
|
223
239
|
### 5. LXC/LXD (Linux only, experimental)
|
|
224
240
|
|
|
225
241
|
Full-system container sandboxing using LXC/LXD. Unlike Docker/Podman, LXC
|
|
@@ -437,6 +453,14 @@ $env:SANDBOX_SET_UID_GID="false" # Disable UID/GID mapping
|
|
|
437
453
|
- Check sandbox profile allows network.
|
|
438
454
|
- Verify proxy configuration.
|
|
439
455
|
|
|
456
|
+
**IDE integration doesn't connect**
|
|
457
|
+
|
|
458
|
+
- Inside a container sandbox, the connection is bridged by the host process when
|
|
459
|
+
the sandbox starts. Make sure the IDE companion extension is running, then
|
|
460
|
+
restart Gemini CLI from the IDE's integrated terminal.
|
|
461
|
+
- Run with `DEBUG=1` and look for `[IdeBridge]` messages. See
|
|
462
|
+
[Using with sandboxing](../ide-integration/index.md#using-with-sandboxing).
|
|
463
|
+
|
|
440
464
|
### Debug mode
|
|
441
465
|
|
|
442
466
|
```bash
|
|
@@ -214,12 +214,22 @@ If you are using Gemini CLI within a sandbox, be aware of the following:
|
|
|
214
214
|
- **On macOS:** The IDE integration requires network access to communicate with
|
|
215
215
|
the IDE companion extension. You must use a Seatbelt profile that allows
|
|
216
216
|
network access.
|
|
217
|
-
- **In a
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
217
|
+
- **In a container sandbox (Docker, Podman, or gVisor/runsc):** IDE integration
|
|
218
|
+
works, but not over the network. The companion extension's server listens only
|
|
219
|
+
on your host's loopback interface and requires an authentication token that is
|
|
220
|
+
never passed into the container. Instead, Gemini CLI on the host bridges the
|
|
221
|
+
connection for you: it connects to the extension itself and relays the IDE
|
|
222
|
+
calls into the container over `docker exec` (or `podman exec`), using a Unix
|
|
223
|
+
socket inside the container. The bridge doesn't depend on container
|
|
224
|
+
networking, so it also works with gVisor's isolated network stack. Only
|
|
225
|
+
`openDiff` and `closeDiff` for files inside your IDE workspace, and the IDE
|
|
226
|
+
context updates, are relayed. For the bridge to be set up, the extension must
|
|
227
|
+
be running when you start Gemini CLI, and the sandbox image must provide
|
|
228
|
+
`node` (the default image does).
|
|
229
|
+
- **In a dev container or Remote - SSH session:** IDE integration connects
|
|
230
|
+
directly, because the extension host and Gemini CLI share the same loopback
|
|
231
|
+
interface.
|
|
232
|
+
- **With LXC/LXD:** IDE integration isn't available from inside an LXC sandbox.
|
|
223
233
|
|
|
224
234
|
## Troubleshooting
|
|
225
235
|
|
|
@@ -240,6 +250,20 @@ If you are using Gemini CLI within a sandbox, be aware of the following:
|
|
|
240
250
|
2. Open a new terminal window in your IDE to ensure it picks up the correct
|
|
241
251
|
environment.
|
|
242
252
|
|
|
253
|
+
- **Message:**
|
|
254
|
+
`🔴 Disconnected: Failed to connect to IDE companion extension in [IDE Name]. Gemini CLI is running inside a sandbox: make sure the extension is installed and running in your IDE, then restart Gemini CLI so the sandbox can bridge the connection.`
|
|
255
|
+
|
|
256
|
+
- **Cause:** Gemini CLI is running inside a container sandbox and the host
|
|
257
|
+
couldn't bridge the connection, usually because the extension wasn't running
|
|
258
|
+
when the sandbox started.
|
|
259
|
+
- **Solution:**
|
|
260
|
+
1. Make sure the **Gemini CLI Companion** extension is enabled and shows as
|
|
261
|
+
running in your IDE.
|
|
262
|
+
2. Quit Gemini CLI and start it again from the IDE's integrated terminal.
|
|
263
|
+
The bridge is set up when the sandbox starts.
|
|
264
|
+
3. If the problem continues, start Gemini CLI with `DEBUG=1` and look for
|
|
265
|
+
`[IdeBridge]` messages before the UI appears.
|
|
266
|
+
|
|
243
267
|
- **Message:**
|
|
244
268
|
`🔴 Disconnected: IDE connection error. The connection was lost unexpectedly. Please try reconnecting by running /ide enable`
|
|
245
269
|
- **Cause:** The connection to the IDE companion was lost.
|
|
@@ -133,51 +133,54 @@ export class AgentRegistry {
|
|
|
133
133
|
}
|
|
134
134
|
this.loadBuiltInAgents();
|
|
135
135
|
// Load project-level agents: .gemini/agents/ (relative to Project Root)
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const
|
|
143
|
-
errors
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
const projectRoot = this.config.getProjectRoot();
|
|
148
|
-
const unacknowledgedAgents = [];
|
|
149
|
-
const agentsToRegister = [];
|
|
150
|
-
for (const agent of projectAgents.agents) {
|
|
151
|
-
this.ensureRemoteAgentHash(agent);
|
|
152
|
-
if (!agent.metadata?.hash) {
|
|
153
|
-
agentsToRegister.push(agent);
|
|
154
|
-
continue;
|
|
136
|
+
// Skip if the workspace is the user's home directory to avoid loading global agents twice
|
|
137
|
+
if (!this.config.storage.isWorkspaceHomeDir()) {
|
|
138
|
+
const folderTrustEnabled = this.config.getFolderTrust();
|
|
139
|
+
const isTrustedFolder = this.config.isTrustedFolder();
|
|
140
|
+
if (!folderTrustEnabled || isTrustedFolder) {
|
|
141
|
+
const projectAgentsDir = this.config.storage.getProjectAgentsDir();
|
|
142
|
+
const projectAgents = await loadAgentsFromDirectory(projectAgentsDir);
|
|
143
|
+
for (const error of projectAgents.errors) {
|
|
144
|
+
const msg = `Agent loading error: ${error.message}`;
|
|
145
|
+
errors?.push(msg);
|
|
146
|
+
coreEvents.emitFeedback('error', msg);
|
|
155
147
|
}
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
148
|
+
const ackService = this.config.getAcknowledgedAgentsService();
|
|
149
|
+
const projectRoot = this.config.getProjectRoot();
|
|
150
|
+
const unacknowledgedAgents = [];
|
|
151
|
+
const agentsToRegister = [];
|
|
152
|
+
for (const agent of projectAgents.agents) {
|
|
153
|
+
this.ensureRemoteAgentHash(agent);
|
|
154
|
+
if (!agent.metadata?.hash) {
|
|
155
|
+
agentsToRegister.push(agent);
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
const isAcknowledged = await ackService.isAcknowledged(projectRoot, agent.name, agent.metadata.hash);
|
|
159
|
+
if (isAcknowledged) {
|
|
160
|
+
agentsToRegister.push(agent);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
unacknowledgedAgents.push(agent);
|
|
164
|
+
}
|
|
159
165
|
}
|
|
160
|
-
|
|
161
|
-
|
|
166
|
+
if (unacknowledgedAgents.length > 0) {
|
|
167
|
+
coreEvents.emitAgentsDiscovered(unacknowledgedAgents);
|
|
162
168
|
}
|
|
169
|
+
await Promise.allSettled(agentsToRegister.map(async (agent) => {
|
|
170
|
+
try {
|
|
171
|
+
await this.registerAgent(agent, errors);
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
const msg = `Error registering project agent "${agent.name}": ${e instanceof Error ? e.message : String(e)}`;
|
|
175
|
+
debugLogger.warn(`[AgentRegistry] ${msg}`, e);
|
|
176
|
+
errors?.push(msg);
|
|
177
|
+
coreEvents.emitFeedback('error', msg);
|
|
178
|
+
}
|
|
179
|
+
}));
|
|
163
180
|
}
|
|
164
|
-
|
|
165
|
-
coreEvents.
|
|
181
|
+
else {
|
|
182
|
+
coreEvents.emitFeedback('info', 'Skipping project agents due to untrusted folder. To enable, ensure that the project root is trusted.');
|
|
166
183
|
}
|
|
167
|
-
await Promise.allSettled(agentsToRegister.map(async (agent) => {
|
|
168
|
-
try {
|
|
169
|
-
await this.registerAgent(agent, errors);
|
|
170
|
-
}
|
|
171
|
-
catch (e) {
|
|
172
|
-
const msg = `Error registering project agent "${agent.name}": ${e instanceof Error ? e.message : String(e)}`;
|
|
173
|
-
debugLogger.warn(`[AgentRegistry] ${msg}`, e);
|
|
174
|
-
errors?.push(msg);
|
|
175
|
-
coreEvents.emitFeedback('error', msg);
|
|
176
|
-
}
|
|
177
|
-
}));
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
coreEvents.emitFeedback('info', 'Skipping project agents due to untrusted folder. To enable, ensure that the project root is trusted.');
|
|
181
184
|
}
|
|
182
185
|
// Load user-level agents: ~/.gemini/agents/
|
|
183
186
|
const userAgentsDir = Storage.getUserAgentsDir();
|