@machina.ai/cell-cli-core 1.40.1-rc2 → 1.41.1-rc2

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 (178) hide show
  1. package/dist/docs/AFTER_MERGE_PROMPT.md +1 -1
  2. package/dist/docs/CHANGES.md +19 -0
  3. package/dist/docs/changelogs/index.md +18 -0
  4. package/dist/docs/changelogs/latest.md +243 -255
  5. package/dist/docs/changelogs/preview.md +168 -18
  6. package/dist/docs/cli/sandbox.md +162 -45
  7. package/dist/docs/cli/settings.md +19 -13
  8. package/dist/docs/reference/configuration.md +77 -0
  9. package/dist/docs/reference/keyboard-shortcuts.md +1 -0
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/package.json +3 -2
  14. package/dist/src/agents/local-executor.js +8 -0
  15. package/dist/src/agents/local-executor.js.map +1 -1
  16. package/dist/src/agents/skill-extraction-agent.js +5 -4
  17. package/dist/src/agents/skill-extraction-agent.js.map +1 -1
  18. package/dist/src/agents/skill-extraction-agent.test.js +4 -2
  19. package/dist/src/agents/skill-extraction-agent.test.js.map +1 -1
  20. package/dist/src/agents/types.d.ts +2 -0
  21. package/dist/src/agents/types.js.map +1 -1
  22. package/dist/src/code_assist/server.js +16 -0
  23. package/dist/src/code_assist/server.js.map +1 -1
  24. package/dist/src/code_assist/server.test.js +18 -0
  25. package/dist/src/code_assist/server.test.js.map +1 -1
  26. package/dist/src/config/config.d.ts +6 -0
  27. package/dist/src/config/config.js +26 -8
  28. package/dist/src/config/config.js.map +1 -1
  29. package/dist/src/config/config.test.js +39 -1
  30. package/dist/src/config/config.test.js.map +1 -1
  31. package/dist/src/config/defaultModelConfigs.js +69 -0
  32. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  33. package/dist/src/config/models.d.ts +5 -1
  34. package/dist/src/config/models.js +34 -6
  35. package/dist/src/config/models.js.map +1 -1
  36. package/dist/src/config/models.test.js +23 -1
  37. package/dist/src/config/models.test.js.map +1 -1
  38. package/dist/src/context/config/configLoader.d.ts +1 -2
  39. package/dist/src/context/config/configLoader.js +12 -7
  40. package/dist/src/context/config/configLoader.js.map +1 -1
  41. package/dist/src/context/config/configLoader.test.js +8 -12
  42. package/dist/src/context/config/configLoader.test.js.map +1 -1
  43. package/dist/src/context/config/profiles.d.ts +7 -1
  44. package/dist/src/context/config/profiles.js +46 -5
  45. package/dist/src/context/config/profiles.js.map +1 -1
  46. package/dist/src/context/contextManager.js +5 -3
  47. package/dist/src/context/contextManager.js.map +1 -1
  48. package/dist/src/context/eventBus.d.ts +7 -0
  49. package/dist/src/context/eventBus.js +6 -0
  50. package/dist/src/context/eventBus.js.map +1 -1
  51. package/dist/src/context/graph/builtinBehaviors.js +3 -3
  52. package/dist/src/context/graph/builtinBehaviors.js.map +1 -1
  53. package/dist/src/context/graph/mapper.d.ts +4 -2
  54. package/dist/src/context/graph/mapper.js +15 -3
  55. package/dist/src/context/graph/mapper.js.map +1 -1
  56. package/dist/src/context/graph/toGraph.d.ts +13 -2
  57. package/dist/src/context/graph/toGraph.js +88 -32
  58. package/dist/src/context/graph/toGraph.js.map +1 -1
  59. package/dist/src/context/historyObserver.d.ts +1 -0
  60. package/dist/src/context/historyObserver.js +25 -26
  61. package/dist/src/context/historyObserver.js.map +1 -1
  62. package/dist/src/context/initializer.d.ts +9 -0
  63. package/dist/src/context/initializer.js +75 -0
  64. package/dist/src/context/initializer.js.map +1 -0
  65. package/dist/src/context/pipeline/contextWorkingBuffer.js +12 -6
  66. package/dist/src/context/pipeline/contextWorkingBuffer.js.map +1 -1
  67. package/dist/src/context/pipeline/contextWorkingBuffer.test.js +1 -1
  68. package/dist/src/context/pipeline/environmentImpl.d.ts +3 -2
  69. package/dist/src/context/pipeline/environmentImpl.js +6 -3
  70. package/dist/src/context/pipeline/environmentImpl.js.map +1 -1
  71. package/dist/src/context/pipeline/environmentImpl.test.js +1 -1
  72. package/dist/src/context/pipeline/environmentImpl.test.js.map +1 -1
  73. package/dist/src/context/pipeline/orchestrator.js +5 -0
  74. package/dist/src/context/pipeline/orchestrator.js.map +1 -1
  75. package/dist/src/context/processors/toolMaskingProcessor.js +21 -5
  76. package/dist/src/context/processors/toolMaskingProcessor.js.map +1 -1
  77. package/dist/src/context/processors/toolMaskingProcessor.test.js +22 -0
  78. package/dist/src/context/processors/toolMaskingProcessor.test.js.map +1 -1
  79. package/dist/src/context/system-tests/lifecycle.golden.test.js +5 -0
  80. package/dist/src/context/system-tests/lifecycle.golden.test.js.map +1 -1
  81. package/dist/src/context/system-tests/simulationHarness.js +1 -1
  82. package/dist/src/context/system-tests/simulationHarness.js.map +1 -1
  83. package/dist/src/context/testing/contextTestUtils.js +7 -3
  84. package/dist/src/context/testing/contextTestUtils.js.map +1 -1
  85. package/dist/src/context/tracer.js +3 -1
  86. package/dist/src/context/tracer.js.map +1 -1
  87. package/dist/src/context/tracer.test.js +4 -2
  88. package/dist/src/context/tracer.test.js.map +1 -1
  89. package/dist/src/context/utils/contextTokenCalculator.d.ts +2 -1
  90. package/dist/src/context/utils/contextTokenCalculator.js +13 -11
  91. package/dist/src/context/utils/contextTokenCalculator.js.map +1 -1
  92. package/dist/src/core/client.d.ts +1 -0
  93. package/dist/src/core/client.js +9 -8
  94. package/dist/src/core/client.js.map +1 -1
  95. package/dist/src/core/client.test.js +0 -3
  96. package/dist/src/core/client.test.js.map +1 -1
  97. package/dist/src/core/geminiChat.d.ts +2 -1
  98. package/dist/src/core/geminiChat.js +72 -20
  99. package/dist/src/core/geminiChat.js.map +1 -1
  100. package/dist/src/core/geminiChat.test.js +1 -0
  101. package/dist/src/core/geminiChat.test.js.map +1 -1
  102. package/dist/src/core/geminiChat_network_retry.test.js +1 -0
  103. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  104. package/dist/src/core/tokenLimits.d.ts +1 -0
  105. package/dist/src/core/tokenLimits.js +5 -1
  106. package/dist/src/core/tokenLimits.js.map +1 -1
  107. package/dist/src/generated/git-commit.d.ts +2 -2
  108. package/dist/src/generated/git-commit.js +2 -2
  109. package/dist/src/index.d.ts +9 -1
  110. package/dist/src/index.js +10 -1
  111. package/dist/src/index.js.map +1 -1
  112. package/dist/src/policy/policy-engine.js +12 -7
  113. package/dist/src/policy/policy-engine.js.map +1 -1
  114. package/dist/src/policy/policy-engine.test.js +69 -1
  115. package/dist/src/policy/policy-engine.test.js.map +1 -1
  116. package/dist/src/prompts/snippets.js +2 -1
  117. package/dist/src/prompts/snippets.js.map +1 -1
  118. package/dist/src/prompts/snippets.legacy.js +2 -1
  119. package/dist/src/prompts/snippets.legacy.js.map +1 -1
  120. package/dist/src/services/chatRecordingService.d.ts +1 -0
  121. package/dist/src/services/chatRecordingService.js +23 -0
  122. package/dist/src/services/chatRecordingService.js.map +1 -1
  123. package/dist/src/services/chatRecordingTypes.d.ts +13 -0
  124. package/dist/src/services/memoryService.d.ts +5 -0
  125. package/dist/src/services/memoryService.js +76 -53
  126. package/dist/src/services/memoryService.js.map +1 -1
  127. package/dist/src/services/memoryService.test.js +256 -12
  128. package/dist/src/services/memoryService.test.js.map +1 -1
  129. package/dist/src/services/sessionScratchpadUtils.d.ts +7 -0
  130. package/dist/src/services/sessionScratchpadUtils.js +121 -0
  131. package/dist/src/services/sessionScratchpadUtils.js.map +1 -0
  132. package/dist/src/services/sessionScratchpadUtils.test.d.ts +6 -0
  133. package/dist/src/services/sessionScratchpadUtils.test.js +27 -0
  134. package/dist/src/services/sessionScratchpadUtils.test.js.map +1 -0
  135. package/dist/src/services/sessionSummaryUtils.d.ts +3 -3
  136. package/dist/src/services/sessionSummaryUtils.js +232 -27
  137. package/dist/src/services/sessionSummaryUtils.js.map +1 -1
  138. package/dist/src/services/sessionSummaryUtils.test.js +449 -10
  139. package/dist/src/services/sessionSummaryUtils.test.js.map +1 -1
  140. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +24 -0
  141. package/dist/src/services/test-data/resolved-aliases.golden.json +24 -0
  142. package/dist/src/tools/mcp-client.js +12 -2
  143. package/dist/src/tools/mcp-client.js.map +1 -1
  144. package/dist/src/tools/trackerTools.test.js +7 -2
  145. package/dist/src/tools/trackerTools.test.js.map +1 -1
  146. package/dist/src/utils/binaryCheck.d.ts +9 -0
  147. package/dist/src/utils/binaryCheck.js +13 -0
  148. package/dist/src/utils/binaryCheck.js.map +1 -0
  149. package/dist/src/utils/fsErrorMessages.js +4 -0
  150. package/dist/src/utils/fsErrorMessages.js.map +1 -1
  151. package/dist/src/utils/fsErrorMessages.test.js +21 -0
  152. package/dist/src/utils/fsErrorMessages.test.js.map +1 -1
  153. package/dist/src/utils/tokenCalculation.d.ts +2 -2
  154. package/dist/src/utils/tokenCalculation.js +15 -14
  155. package/dist/src/utils/tokenCalculation.js.map +1 -1
  156. package/dist/src/voice/audioRecorder.d.ts +27 -0
  157. package/dist/src/voice/audioRecorder.js +95 -0
  158. package/dist/src/voice/audioRecorder.js.map +1 -0
  159. package/dist/src/voice/geminiLiveTranscriptionProvider.d.ts +20 -0
  160. package/dist/src/voice/geminiLiveTranscriptionProvider.js +140 -0
  161. package/dist/src/voice/geminiLiveTranscriptionProvider.js.map +1 -0
  162. package/dist/src/voice/transcriptionFactory.d.ts +12 -0
  163. package/dist/src/voice/transcriptionFactory.js +32 -0
  164. package/dist/src/voice/transcriptionFactory.js.map +1 -0
  165. package/dist/src/voice/transcriptionProvider.d.ts +29 -0
  166. package/dist/src/voice/transcriptionProvider.js +7 -0
  167. package/dist/src/voice/transcriptionProvider.js.map +1 -0
  168. package/dist/src/voice/whisperModelManager.d.ts +26 -0
  169. package/dist/src/voice/whisperModelManager.js +79 -0
  170. package/dist/src/voice/whisperModelManager.js.map +1 -0
  171. package/dist/src/voice/whisperTranscriptionProvider.d.ts +34 -0
  172. package/dist/src/voice/whisperTranscriptionProvider.js +151 -0
  173. package/dist/src/voice/whisperTranscriptionProvider.js.map +1 -0
  174. package/dist/src/voice/whisperTranscriptionProvider.test.d.ts +6 -0
  175. package/dist/src/voice/whisperTranscriptionProvider.test.js +24 -0
  176. package/dist/src/voice/whisperTranscriptionProvider.test.js.map +1 -0
  177. package/dist/tsconfig.tsbuildinfo +1 -1
  178. package/package.json +3 -2
@@ -1,6 +1,6 @@
1
- # Preview release: v0.39.0-preview.0
1
+ # Preview release: v0.40.0-preview.3
2
2
 
3
- Released: April 14, 2026
3
+ Released: April 24, 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,24 +13,174 @@ npm install -g @google/gemini-cli@preview
13
13
 
14
14
  ## Highlights
15
15
 
16
- - **Refactored Subagents and Unified Tooling:** Consolidate subagent tools into
17
- a single `invoke_subagent` tool, removed legacy wrapping tools, and improved
18
- turn limits for codebase investigator.
19
- - **Advanced Memory and Skill Management:** Introduced `/memory` inbox for
20
- reviewing extracted skills and added skill patching support, enhancing agent
21
- learning and persistence.
22
- - **Expanded Test and Evaluation Infrastructure:** Added memory and CPU
23
- performance integration test harnesses and generalized evaluation
24
- infrastructure for better suite organization.
25
- - **Sandbox and Security Hardening:** Centralized sandbox paths for Linux and
26
- macOS, enforced read-only security for async git worktree resolution, and
27
- optimized Windows sandbox initialization.
28
- - **Enhanced CLI UX and UI Stability:** Improved scroll momentum, added a
29
- `debugRainbow` setting, and resolved various memory leaks and PTY exhaustion
30
- issues for a smoother terminal experience.
16
+ - **Ripgrep Binary Bundling:** Ripgrep binaries are now bundled into the Single
17
+ Executable Application (SEA), enabling grep functionality in offline
18
+ environments.
19
+ - **MCP Resource Tools:** New core tools added to list and read MCP (Model
20
+ Context Protocol) resources, expanding the agent's ability to interact with
21
+ MCP servers.
22
+ - **Local Model Setup:** Introduced a streamlined `gemini gemma` command for
23
+ easier local model setup and integration.
24
+ - **Prompt-Driven Memory Management:** Refactored memory management into a
25
+ prompt-driven, four-tier system and integrated `skill-creator` for robust
26
+ skill extraction.
27
+ - **Enhanced UI and Accessibility:** Added support for OSC 777 terminal
28
+ notifications and GitHub colorblind themes for better user feedback and
29
+ accessibility.
31
30
 
32
31
  ## What's Changed
33
32
 
33
+ - update FatalUntrustedWorkspaceError message to include doc link by @ehedlund
34
+ in [#25874](https://github.com/google-gemini/gemini-cli/pull/25874)
35
+ - feat(core): enhance shell command validation and add core tools allowlist by
36
+ @galz10 in [#25720](https://github.com/google-gemini/gemini-cli/pull/25720)
37
+ - feat(cli): secure .env loading and enforce workspace trust in headless mode by
38
+ @ehedlund in [#25814](https://github.com/google-gemini/gemini-cli/pull/25814)
39
+ - chore(release): bump version to 0.40.0-nightly.20260414.g5b1f7375a by
40
+ @gemini-cli-robot in
41
+ [#25420](https://github.com/google-gemini/gemini-cli/pull/25420)
42
+ - Fix(core): retry additional OpenSSL 3.x SSL errors during streaming (#16075)
43
+ by @rcleveng in
44
+ [#25187](https://github.com/google-gemini/gemini-cli/pull/25187)
45
+ - fix(core): prevent YOLO mode from being downgraded by @galz10 in
46
+ [#25341](https://github.com/google-gemini/gemini-cli/pull/25341)
47
+ - feat: bundle ripgrep binaries into SEA for offline support by @scidomino in
48
+ [#25342](https://github.com/google-gemini/gemini-cli/pull/25342)
49
+ - Changelog for v0.39.0-preview.0 by @gemini-cli-robot in
50
+ [#25417](https://github.com/google-gemini/gemini-cli/pull/25417)
51
+ - feat(test): add large conversation scenario for performance test by
52
+ @cynthialong0-0 in
53
+ [#25331](https://github.com/google-gemini/gemini-cli/pull/25331)
54
+ - improve(core): require recurrence evidence before extracting skills by
55
+ @SandyTao520 in
56
+ [#25147](https://github.com/google-gemini/gemini-cli/pull/25147)
57
+ - test(evals): add subagent delegation evaluation tests by @anj-s in
58
+ [#24619](https://github.com/google-gemini/gemini-cli/pull/24619)
59
+ - feat: add github colorblind themes by @Z1xus in
60
+ [#15504](https://github.com/google-gemini/gemini-cli/pull/15504)
61
+ - fix(core): honor GOOGLE_GEMINI_BASE_URL and GOOGLE_VERTEX_BASE_URL by
62
+ @chrisjcthomas in
63
+ [#25357](https://github.com/google-gemini/gemini-cli/pull/25357)
64
+ - fix(cli): clean up slash command IDE listeners by @jasonmatthewsuhari in
65
+ [#24397](https://github.com/google-gemini/gemini-cli/pull/24397)
66
+ - Changelog for v0.38.0 by @gemini-cli-robot in
67
+ [#25470](https://github.com/google-gemini/gemini-cli/pull/25470)
68
+ - fix(evals): update eval tests for invoke_agent telemetry and project-scoped
69
+ memory by @SandyTao520 in
70
+ [#25502](https://github.com/google-gemini/gemini-cli/pull/25502)
71
+ - Changelog for v0.38.1 by @gemini-cli-robot in
72
+ [#25476](https://github.com/google-gemini/gemini-cli/pull/25476)
73
+ - feat(core): integrate skill-creator into skill extraction agent by
74
+ @SandyTao520 in
75
+ [#25421](https://github.com/google-gemini/gemini-cli/pull/25421)
76
+ - feat(cli): provide default post-submit prompt for skill command by @ruomengz
77
+ in [#25327](https://github.com/google-gemini/gemini-cli/pull/25327)
78
+ - feat(core): add tools to list and read MCP resources by @ruomengz in
79
+ [#25395](https://github.com/google-gemini/gemini-cli/pull/25395)
80
+ - fix(evals): add typecheck coverage for evals, integration-tests, and
81
+ memory-tests by @SandyTao520 in
82
+ [#25480](https://github.com/google-gemini/gemini-cli/pull/25480)
83
+ - Use OSC 777 for terminal notifications by @jackyliuxx in
84
+ [#25300](https://github.com/google-gemini/gemini-cli/pull/25300)
85
+ - fix(extensions): fix bundling for examples by @abhipatel12 in
86
+ [#25542](https://github.com/google-gemini/gemini-cli/pull/25542)
87
+ - fix(cli): reset plan session state on /clear by @jasonmatthewsuhari in
88
+ [#25515](https://github.com/google-gemini/gemini-cli/pull/25515)
89
+ - feat(core): add .mdx support to get-internal-docs tool by @g-samroberts in
90
+ [#25090](https://github.com/google-gemini/gemini-cli/pull/25090)
91
+ - docs(policy): mention that workspace policies are broken by @6112 in
92
+ [#24367](https://github.com/google-gemini/gemini-cli/pull/24367)
93
+ - fix(core): allow explicit write permissions to override governance file
94
+ protections in sandboxes by @galz10 in
95
+ [#25338](https://github.com/google-gemini/gemini-cli/pull/25338)
96
+ - feat(sandbox): resolve custom seatbelt profiles from $HOME/.cell-cli first by
97
+ @mvanhorn in [#25427](https://github.com/google-gemini/gemini-cli/pull/25427)
98
+ - Reduce blank lines. by @gundermanc in
99
+ [#25563](https://github.com/google-gemini/gemini-cli/pull/25563)
100
+ - fix(ui): revert preview theme on dialog unmount by @JayadityaGit in
101
+ [#22542](https://github.com/google-gemini/gemini-cli/pull/22542)
102
+ - fix(core): fix ShellExecutionConfig spread and add ProjectRegistry save
103
+ backoff by @mahimashanware in
104
+ [#25382](https://github.com/google-gemini/gemini-cli/pull/25382)
105
+ - feat(core): Disable topic updates for subagents by @gundermanc in
106
+ [#25567](https://github.com/google-gemini/gemini-cli/pull/25567)
107
+ - feat(core): enable topic update narration by default and promote to general by
108
+ @gundermanc in
109
+ [#25586](https://github.com/google-gemini/gemini-cli/pull/25586)
110
+ - docs: migrate installation and authentication to mdx with tabbed layouts by
111
+ @g-samroberts in
112
+ [#25155](https://github.com/google-gemini/gemini-cli/pull/25155)
113
+ - feat(config): split memoryManager flag into autoMemory by @SandyTao520 in
114
+ [#25601](https://github.com/google-gemini/gemini-cli/pull/25601)
115
+ - fix(core): allow Cloud Shell users to use PRO_MODEL_NO_ACCESS experiment by
116
+ @sehoon38 in [#25702](https://github.com/google-gemini/gemini-cli/pull/25702)
117
+ - fix(cli): round slow render latency to avoid opentelemetry float warning by
118
+ @scidomino in [#25709](https://github.com/google-gemini/gemini-cli/pull/25709)
119
+ - docs(tracker): introduce experimental task tracker feature by @anj-s in
120
+ [#24556](https://github.com/google-gemini/gemini-cli/pull/24556)
121
+ - docs(cli): fix inconsistent system.md casing in system prompt docs by @Bodlux
122
+ in [#25414](https://github.com/google-gemini/gemini-cli/pull/25414)
123
+ - feat(cli): add streamlined `gemini gemma` local model setup by @Samee24 in
124
+ [#25498](https://github.com/google-gemini/gemini-cli/pull/25498)
125
+ - Changelog for v0.38.2 by @gemini-cli-robot in
126
+ [#25593](https://github.com/google-gemini/gemini-cli/pull/25593)
127
+ - Fix: Disallow overriding IDE stdio via workspace .env (RCE) by @M0nd0R in
128
+ [#25022](https://github.com/google-gemini/gemini-cli/pull/25022)
129
+ - feat(test): refactor the memory usage test to use metrics from CLI process
130
+ instead of test runner by @cynthialong0-0 in
131
+ [#25708](https://github.com/google-gemini/gemini-cli/pull/25708)
132
+ - feat(vertex): add settings for Vertex AI request routing by @gordonhwc in
133
+ [#25513](https://github.com/google-gemini/gemini-cli/pull/25513)
134
+ - Fix/allow for session persistence by @ahsanfarooq210 in
135
+ [#25176](https://github.com/google-gemini/gemini-cli/pull/25176)
136
+ - Allow dots on GEMINI_API_KEY by @DKbyo in
137
+ [#25497](https://github.com/google-gemini/gemini-cli/pull/25497)
138
+ - feat(telemetry): add flag for enabling traces specifically by @spencer426 in
139
+ [#25343](https://github.com/google-gemini/gemini-cli/pull/25343)
140
+ - fix(core): resolve nested plan directory duplication and relative path
141
+ policies by @mahimashanware in
142
+ [#25138](https://github.com/google-gemini/gemini-cli/pull/25138)
143
+ - feat: detect new files in @ recommendations with watcher based updates by
144
+ @prassamin in [#25256](https://github.com/google-gemini/gemini-cli/pull/25256)
145
+ - fix(cli): use newline in shell command wrapping to avoid breaking heredocs by
146
+ @cocosheng-g in
147
+ [#25537](https://github.com/google-gemini/gemini-cli/pull/25537)
148
+ - fix(cli): ensure theme dialog labels are rendered for all themes by
149
+ @JayadityaGit in
150
+ [#24599](https://github.com/google-gemini/gemini-cli/pull/24599)
151
+ - fix(core): disable detached mode in Bun to prevent immediate SIGHUP of child
152
+ processes by @euxaristia in
153
+ [#22620](https://github.com/google-gemini/gemini-cli/pull/22620)
154
+ - feat: add /new as alias for /clear and refine command description by @ved015
155
+ in [#17865](https://github.com/google-gemini/gemini-cli/pull/17865)
156
+ - fix(cli): start auto memory in ACP sessions by @jasonmatthewsuhari in
157
+ [#25626](https://github.com/google-gemini/gemini-cli/pull/25626)
158
+ - fix(core): remove duplicate initialize call on agents refreshed by
159
+ @adamfweidman in
160
+ [#25670](https://github.com/google-gemini/gemini-cli/pull/25670)
161
+ - test(e2e): default integration tests to Flash Preview by @SandyTao520 in
162
+ [#25753](https://github.com/google-gemini/gemini-cli/pull/25753)
163
+ - refactor(memory): replace MemoryManagerAgent with prompt-driven memory editing
164
+ across four tiers by @SandyTao520 in
165
+ [#25716](https://github.com/google-gemini/gemini-cli/pull/25716)
166
+ - fix(cli): fix "/clear (new)" command by @mini2s in
167
+ [#25801](https://github.com/google-gemini/gemini-cli/pull/25801)
168
+ - fix(core): use dynamic CLI version for IDE client instead of hardcoded '1.0.0'
169
+ by @thekishandev in
170
+ [#24414](https://github.com/google-gemini/gemini-cli/pull/24414)
171
+ - fix(core): handle line endings in ignore file parsing by @xoma-zver in
172
+ [#23895](https://github.com/google-gemini/gemini-cli/pull/23895)
173
+ - Fix/command injection shell by @Famous077 in
174
+ [#24170](https://github.com/google-gemini/gemini-cli/pull/24170)
175
+ - fix(ui): removed background color for input by @devr0306 in
176
+ [#25339](https://github.com/google-gemini/gemini-cli/pull/25339)
177
+ - fix(devtools): reduce memory usage and defer connection by @SandyTao520 in
178
+ [#24496](https://github.com/google-gemini/gemini-cli/pull/24496)
179
+ - fix(core): support jsonl session logs in memory and summary services by
180
+ @SandyTao520 in
181
+ [#25816](https://github.com/google-gemini/gemini-cli/pull/25816)
182
+ - fix(release): exclude ripgrep binaries from npm tarballs by @SandyTao520 in
183
+ [#25841](https://github.com/google-gemini/gemini-cli/pull/25841)
34
184
  - refactor(plan): simplify policy priorities and consolidate read-only rules by
35
185
  @ruomengz in [#24849](https://github.com/google-gemini/gemini-cli/pull/24849)
36
186
  - feat(test-utils): add memory usage integration test harness by @sripasg in
@@ -254,4 +404,4 @@ npm install -g @google/gemini-cli@preview
254
404
  [#25336](https://github.com/google-gemini/gemini-cli/pull/25336)
255
405
 
256
406
  **Full Changelog**:
257
- https://github.com/google-gemini/gemini-cli/compare/v0.38.0-preview.0...v0.39.0-preview.0
407
+ https://github.com/google-gemini/gemini-cli/compare/v0.38.0-preview.0...v0.40.0-preview.3
@@ -31,6 +31,53 @@ The benefits of sandboxing include:
31
31
  - **Safety**: Reduce risk when working with untrusted code or experimental
32
32
  commands.
33
33
 
34
+ ## Quickstart
35
+
36
+ You can enable sandboxing using a command flag, environment variable, or
37
+ configuration file.
38
+
39
+ ### Using the command flag
40
+
41
+ ```bash
42
+ gemini -s -p "analyze the code structure"
43
+ ```
44
+
45
+ ### Using an environment variable
46
+
47
+ **macOS/Linux**
48
+
49
+ ```bash
50
+ export GEMINI_SANDBOX=true
51
+ gemini -p "run the test suite"
52
+ ```
53
+
54
+ **Windows (PowerShell)**
55
+
56
+ ```powershell
57
+ $env:GEMINI_SANDBOX="true"
58
+ gemini -p "run the test suite"
59
+ ```
60
+
61
+ ### Configuring via settings.json
62
+
63
+ ```json
64
+ {
65
+ "tools": {
66
+ "sandbox": "docker"
67
+ }
68
+ }
69
+ ```
70
+
71
+ ## Configuration
72
+
73
+ Enable sandboxing using one of the following methods (in order of precedence):
74
+
75
+ 1. **Command flag**: `-s` or `--sandbox`
76
+ 2. **Environment variable**:
77
+ `GEMINI_SANDBOX=true|docker|podman|sandbox-exec|runsc|lxc`
78
+ 3. **Settings file**: `"sandbox": true` in the `tools` object of your
79
+ `settings.json` file (for example, `{"tools": {"sandbox": true}}`).
80
+
34
81
  ## Sandboxing methods
35
82
 
36
83
  Your ideal method of sandboxing may differ depending on your platform and your
@@ -43,12 +90,92 @@ Lightweight, built-in sandboxing using `sandbox-exec`.
43
90
  **Default profile**: `permissive-open` - restricts writes outside project
44
91
  directory but allows most other operations.
45
92
 
93
+ Built-in profiles (set via `SEATBELT_PROFILE` env var):
94
+
95
+ - `permissive-open` (default): Write restrictions, network allowed
96
+ - `permissive-proxied`: Write restrictions, network via proxy
97
+ - `restrictive-open`: Strict restrictions, network allowed
98
+ - `restrictive-proxied`: Strict restrictions, network via proxy
99
+ - `strict-open`: Read and write restrictions, network allowed
100
+ - `strict-proxied`: Read and write restrictions, network via proxy
101
+
46
102
  ### 2. Container-based (Docker/Podman)
47
103
 
48
- Cross-platform sandboxing with complete process isolation.
104
+ Cross-platform sandboxing with complete process isolation using container
105
+ technology. By default, it uses the `ghcr.io/google/gemini-cli:latest` image.
106
+
107
+ **Prerequisites:**
108
+
109
+ - Docker or Podman must be installed and running on your system.
110
+
111
+ **How it works (Workspace directory):**
49
112
 
50
- **Note**: Requires building the sandbox image locally or using a published image
51
- from your organization's registry.
113
+ Inside the sandbox container, your current working directory is mounted at the
114
+ **exact same absolute path** as it is on your host machine. For example, if you
115
+ run the CLI from `/Users/you/project` on your host machine, the sandbox will
116
+ mount your local project folder and operate within `/Users/you/project` inside
117
+ the container. This allows the AI to seamlessly read and modify your project
118
+ files while remaining isolated from the rest of your system.
119
+
120
+ **Quick setup:**
121
+
122
+ To enable Docker sandboxing, run Cell CLI with the sandbox flag and specify
123
+ Docker as the provider:
124
+
125
+ ```bash
126
+ # Using the environment variable (Recommended)
127
+ export GEMINI_SANDBOX=docker
128
+ gemini -p "build the project"
129
+
130
+ # Or configure it permanently in your settings.json
131
+ # {"tools": {"sandbox": "docker"}}
132
+ ```
133
+
134
+ **Customizing the Sandbox Image:**
135
+
136
+ If your project requires specific dependencies, you can specify a custom image
137
+ name or have Cell CLI build one for you automatically. You can use any Docker or
138
+ Podman image as your sandbox, provided it has standard shell utilities (like
139
+ `bash`) available.
140
+
141
+ **Option A: Using an existing custom image (e.g., Artifact Registry)**
142
+
143
+ To configure a custom image that is hosted on a registry (or built locally),
144
+ update your `settings.json` to use an object for the sandbox configuration, or
145
+ set the `GEMINI_SANDBOX_IMAGE` environment variable.
146
+
147
+ _Example: Configuring via `settings.json`_
148
+
149
+ ```json
150
+ {
151
+ "tools": {
152
+ "sandbox": {
153
+ "command": "docker",
154
+ "image": "us-central1-docker.pkg.dev/my-project/my-repo/my-custom-sandbox:latest"
155
+ }
156
+ }
157
+ }
158
+ ```
159
+
160
+ _Example: Configuring via environment variable_
161
+
162
+ ```bash
163
+ export GEMINI_SANDBOX_IMAGE="us-central1-docker.pkg.dev/my-project/my-repo/my-custom-sandbox:latest"
164
+ ```
165
+
166
+ **Option B: Building a local custom image automatically**
167
+
168
+ If you prefer to define your environment as code, you can provide a Dockerfile
169
+ and Cell CLI will build the image automatically.
170
+
171
+ 1. Create a `.cell-cli/sandbox.Dockerfile` in your project root.
172
+ 2. Ensure you have the `gh` CLI installed and authenticated (if you are using
173
+ the default `ghcr.io/google/gemini-cli` image as a base).
174
+ 3. Run your command with the `BUILD_SANDBOX` environment variable set:
175
+
176
+ ```bash
177
+ BUILD_SANDBOX=1 GEMINI_SANDBOX=docker gemini -p "run my custom build"
178
+ ```
52
179
 
53
180
  ### 3. Windows Native Sandbox (Windows only)
54
181
 
@@ -187,59 +314,49 @@ This mechanism ensures you don't have to manually re-run commands with more
187
314
  permissive sandbox settings, while still maintaining control over what the AI
188
315
  can access.
189
316
 
190
- ## Quickstart
317
+ ### Including files outside the workspace
191
318
 
192
- ```bash
193
- # Enable sandboxing with command flag
194
- gemini -s -p "analyze the code structure"
195
- ```
319
+ By default, the sandbox only has access to the current project workspace. If you
320
+ need the sandbox to have permission to operate on certain files or directories
321
+ from the local file system outside of the project workspace, you can mount them
322
+ using the `SANDBOX_MOUNTS` environment variable.
196
323
 
197
- **Use environment variable**
324
+ Provide a comma-separated list of mount definitions in the format
325
+ `from:to:opts`. If `to` is omitted, it defaults to the same path as `from`. If
326
+ `opts` is omitted, it defaults to `ro` (read-only). Note that the `from` path
327
+ must be an absolute path.
198
328
 
199
- **macOS/Linux**
329
+ **Example**:
200
330
 
201
331
  ```bash
202
- export GEMINI_SANDBOX=true
203
- gemini -p "run the test suite"
204
- ```
205
-
206
- **Windows (PowerShell)**
207
-
208
- ```powershell
209
- $env:GEMINI_SANDBOX="true"
210
- gemini -p "run the test suite"
211
- ```
212
-
213
- **Configure in settings.json**
214
-
215
- ```json
216
- {
217
- "tools": {
218
- "sandbox": "docker"
219
- }
220
- }
332
+ export SANDBOX_MOUNTS="/path/on/host:/path/in/container:rw,/another/path:ro"
221
333
  ```
222
334
 
223
- ## Configuration
335
+ ## Running inside a Docker container
224
336
 
225
- ### Enable sandboxing (in order of precedence)
337
+ If you are running Cell CLI itself from within an official or custom Docker
338
+ container and want to enable sandboxing, you must share the host's Docker socket
339
+ and ensure your workspace paths align.
226
340
 
227
- 1. **Command flag**: `-s` or `--sandbox`
228
- 2. **Environment variable**:
229
- `GEMINI_SANDBOX=true|docker|podman|sandbox-exec|runsc|lxc`
230
- 3. **Settings file**: `"sandbox": true` in the `tools` object of your
231
- `settings.json` file (for example, `{"tools": {"sandbox": true}}`).
341
+ 1. **Mount the Docker socket**: Map `/var/run/docker.sock` so the CLI can spawn
342
+ sibling sandbox containers via the host's Docker daemon.
343
+ 2. **Align workspace paths**: The path to your workspace inside the container
344
+ must exactly match the absolute path on the host. Because the sandbox
345
+ container is spawned by the host's Docker daemon, it resolves volume mounts
346
+ against the host file system.
232
347
 
233
- ### macOS Seatbelt profiles
348
+ **Example**:
234
349
 
235
- Built-in profiles (set via `SEATBELT_PROFILE` env var):
350
+ ```bash
351
+ docker run -it \
352
+ -v /var/run/docker.sock:/var/run/docker.sock \
353
+ -v /absolute/path/on/host/project:/absolute/path/on/host/project \
354
+ -w /absolute/path/on/host/project \
355
+ -e GEMINI_SANDBOX=docker \
356
+ ghcr.io/google/gemini-cli:latest
357
+ ```
236
358
 
237
- - `permissive-open` (default): Write restrictions, network allowed
238
- - `permissive-proxied`: Write restrictions, network via proxy
239
- - `restrictive-open`: Strict restrictions, network allowed
240
- - `restrictive-proxied`: Strict restrictions, network via proxy
241
- - `strict-open`: Read and write restrictions, network allowed
242
- - `strict-proxied`: Read and write restrictions, network via proxy
359
+ ## Advanced settings
243
360
 
244
361
  ### Custom sandbox flags
245
362
 
@@ -278,7 +395,7 @@ export SANDBOX_FLAGS="--flag1 --flag2=value"
278
395
  $env:SANDBOX_FLAGS="--flag1 --flag2=value"
279
396
  ```
280
397
 
281
- ## Linux UID/GID handling
398
+ ### Linux UID/GID handling
282
399
 
283
400
  The sandbox automatically handles user permissions on Linux. Override these
284
401
  permissions with:
@@ -179,19 +179,25 @@ they appear in the UI.
179
179
 
180
180
  ### Experimental
181
181
 
182
- | UI Label | Setting | Description | Default |
183
- | ---------------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- |
184
- | Enable Git Worktrees | `experimental.worktrees` | Enable automated Git worktree management for parallel work. | `false` |
185
- | Use OSC 52 Paste | `experimental.useOSC52Paste` | Use OSC 52 for pasting. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it). | `false` |
186
- | Use OSC 52 Copy | `experimental.useOSC52Copy` | Use OSC 52 for copying. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it). | `false` |
187
- | Model Steering | `experimental.modelSteering` | Enable model steering (user hints) to guide the model during tool execution. | `false` |
188
- | Direct Web Fetch | `experimental.directWebFetch` | Enable web fetch behavior that bypasses LLM summarization. | `false` |
189
- | Enable Gemma Model Router | `experimental.gemmaModelRouter.enabled` | Enable the Gemma Model Router (experimental). Requires a local endpoint serving Gemma via the Gemini API using LiteRT-LM shim. | `false` |
190
- | Auto-start LiteRT Server | `experimental.gemmaModelRouter.autoStartServer` | Automatically start the LiteRT-LM server when Cell CLI starts and the Gemma router is enabled. | `false` |
191
- | Memory v2 | `experimental.memoryV2` | Disable the built-in save_memory tool and let the main agent persist project context by editing markdown files directly with edit/write_file. Route facts across four tiers: team-shared conventions go to project GEMINI.md files, project-specific personal notes go to the per-project private memory folder (MEMORY.md as index + sibling .md files for detail), and cross-project personal preferences go to the global ~/.cell-cli/GEMINI.md (the only file under ~/.cell-cli/ that the agent can edit — settings, credentials, etc. remain off-limits). Set to false to fall back to the legacy save_memory tool. | `true` |
192
- | Auto Memory | `experimental.autoMemory` | Automatically extract reusable skills from past sessions in the background. Review results with /memory inbox. | `false` |
193
- | Use the generalist profile to manage agent contexts. | `experimental.generalistProfile` | Suitable for general coding and software development tasks. | `false` |
194
- | Enable Context Management | `experimental.contextManagement` | Enable logic for context management. | `false` |
182
+ | UI Label | Setting | Description | Default |
183
+ | ---------------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------- |
184
+ | Gemma Models | `experimental.gemma` | Enable access to Gemma 4 models (experimental). | `false` |
185
+ | Voice Mode | `experimental.voiceMode` | Enable experimental voice dictation and commands (/voice, /voice model). | `false` |
186
+ | Voice Activation Mode | `experimental.voice.activationMode` | How to trigger voice recording with the Space key. | `"push-to-talk"` |
187
+ | Voice Transcription Backend | `experimental.voice.backend` | The backend to use for voice transcription. | `"gemini-live"` |
188
+ | Whisper Model | `experimental.voice.whisperModel` | The Whisper model to use for local transcription. | `"ggml-base.en.bin"` |
189
+ | Voice Stop Grace Period (ms) | `experimental.voice.stopGracePeriodMs` | How long to wait for final transcription after stopping recording. | `1000` |
190
+ | Enable Git Worktrees | `experimental.worktrees` | Enable automated Git worktree management for parallel work. | `false` |
191
+ | Use OSC 52 Paste | `experimental.useOSC52Paste` | Use OSC 52 for pasting. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it). | `false` |
192
+ | Use OSC 52 Copy | `experimental.useOSC52Copy` | Use OSC 52 for copying. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it). | `false` |
193
+ | Model Steering | `experimental.modelSteering` | Enable model steering (user hints) to guide the model during tool execution. | `false` |
194
+ | Direct Web Fetch | `experimental.directWebFetch` | Enable web fetch behavior that bypasses LLM summarization. | `false` |
195
+ | Enable Gemma Model Router | `experimental.gemmaModelRouter.enabled` | Enable the Gemma Model Router (experimental). Requires a local endpoint serving Gemma via the Gemini API using LiteRT-LM shim. | `false` |
196
+ | Auto-start LiteRT Server | `experimental.gemmaModelRouter.autoStartServer` | Automatically start the LiteRT-LM server when Cell CLI starts and the Gemma router is enabled. | `false` |
197
+ | Memory v2 | `experimental.memoryV2` | Disable the built-in save_memory tool and let the main agent persist project context by editing markdown files directly with edit/write_file. Route facts across four tiers: team-shared conventions go to project GEMINI.md files, project-specific personal notes go to the per-project private memory folder (MEMORY.md as index + sibling .md files for detail), and cross-project personal preferences go to the global ~/.cell-cli/GEMINI.md (the only file under ~/.cell-cli/ that the agent can edit — settings, credentials, etc. remain off-limits). Set to false to fall back to the legacy save_memory tool. | `true` |
198
+ | Auto Memory | `experimental.autoMemory` | Automatically extract reusable skills from past sessions in the background. Review results with /memory inbox. | `false` |
199
+ | Use the generalist profile to manage agent contexts. | `experimental.generalistProfile` | Suitable for general coding and software development tasks. | `false` |
200
+ | Enable Context Management | `experimental.contextManagement` | Enable logic for context management. | `false` |
195
201
 
196
202
  ### Skills
197
203
 
@@ -570,6 +570,18 @@ their corresponding top-level category object in your `settings.json` file.
570
570
  "model": "gemini-2.5-flash-lite"
571
571
  }
572
572
  },
573
+ "gemma-4-31b-it": {
574
+ "extends": "chat-base-3",
575
+ "modelConfig": {
576
+ "model": "gemma-4-31b-it"
577
+ }
578
+ },
579
+ "gemma-4-26b-a4b-it": {
580
+ "extends": "chat-base-3",
581
+ "modelConfig": {
582
+ "model": "gemma-4-26b-a4b-it"
583
+ }
584
+ },
573
585
  "gemini-2.5-flash-base": {
574
586
  "extends": "base",
575
587
  "modelConfig": {
@@ -841,6 +853,28 @@ their corresponding top-level category object in your `settings.json` file.
841
853
  "multimodalToolUse": false
842
854
  }
843
855
  },
856
+ "gemma-4-31b-it": {
857
+ "displayName": "gemma-4-31b-it",
858
+ "tier": "custom",
859
+ "family": "gemma-4",
860
+ "isPreview": false,
861
+ "isVisible": true,
862
+ "features": {
863
+ "thinking": true,
864
+ "multimodalToolUse": false
865
+ }
866
+ },
867
+ "gemma-4-26b-a4b-it": {
868
+ "displayName": "gemma-4-26b-a4b-it",
869
+ "tier": "custom",
870
+ "family": "gemma-4",
871
+ "isPreview": false,
872
+ "isVisible": true,
873
+ "features": {
874
+ "thinking": true,
875
+ "multimodalToolUse": false
876
+ }
877
+ },
844
878
  "auto": {
845
879
  "tier": "auto",
846
880
  "isPreview": true,
@@ -911,6 +945,12 @@ their corresponding top-level category object in your `settings.json` file.
911
945
 
912
946
  ```json
913
947
  {
948
+ "gemma-4-31b-it": {
949
+ "default": "gemma-4-31b-it"
950
+ },
951
+ "gemma-4-26b-a4b-it": {
952
+ "default": "gemma-4-26b-a4b-it"
953
+ },
914
954
  "gemini-3.1-pro-preview": {
915
955
  "default": "gemini-3.1-pro-preview",
916
956
  "contexts": [
@@ -1711,6 +1751,37 @@ their corresponding top-level category object in your `settings.json` file.
1711
1751
 
1712
1752
  #### `experimental`
1713
1753
 
1754
+ - **`experimental.gemma`** (boolean):
1755
+ - **Description:** Enable access to Gemma 4 models (experimental).
1756
+ - **Default:** `false`
1757
+ - **Requires restart:** Yes
1758
+
1759
+ - **`experimental.voiceMode`** (boolean):
1760
+ - **Description:** Enable experimental voice dictation and commands (/voice,
1761
+ /voice model).
1762
+ - **Default:** `false`
1763
+
1764
+ - **`experimental.voice.activationMode`** (enum):
1765
+ - **Description:** How to trigger voice recording with the Space key.
1766
+ - **Default:** `"push-to-talk"`
1767
+ - **Values:** `"push-to-talk"`, `"toggle"`
1768
+
1769
+ - **`experimental.voice.backend`** (enum):
1770
+ - **Description:** The backend to use for voice transcription.
1771
+ - **Default:** `"gemini-live"`
1772
+ - **Values:** `"gemini-live"`, `"whisper"`
1773
+
1774
+ - **`experimental.voice.whisperModel`** (enum):
1775
+ - **Description:** The Whisper model to use for local transcription.
1776
+ - **Default:** `"ggml-base.en.bin"`
1777
+ - **Values:** `"ggml-tiny.en.bin"`, `"ggml-base.en.bin"`,
1778
+ `"ggml-large-v3-turbo-q5_0.bin"`, `"ggml-large-v3-turbo-q8_0.bin"`
1779
+
1780
+ - **`experimental.voice.stopGracePeriodMs`** (number):
1781
+ - **Description:** How long to wait for final transcription after stopping
1782
+ recording.
1783
+ - **Default:** `1000`
1784
+
1714
1785
  - **`experimental.adk.agentSessionNoninteractiveEnabled`** (boolean):
1715
1786
  - **Description:** Enable non-interactive agent sessions.
1716
1787
  - **Default:** `false`
@@ -1840,6 +1911,12 @@ their corresponding top-level category object in your `settings.json` file.
1840
1911
  - **Default:** `true`
1841
1912
  - **Requires restart:** Yes
1842
1913
 
1914
+ - **`experimental.stressTestProfile`** (boolean):
1915
+ - **Description:** Significantly lowers token limits to force early garbage
1916
+ collection and distillation for testing purposes.
1917
+ - **Default:** `false`
1918
+ - **Requires restart:** Yes
1919
+
1843
1920
  - **`experimental.autoMemory`** (boolean):
1844
1921
  - **Description:** Automatically extract reusable skills from past sessions in
1845
1922
  the background. Review results with /memory inbox.