@google/gemini-cli-core 0.37.2 → 0.38.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 (449) hide show
  1. package/README.md +58 -50
  2. package/dist/docs/changelogs/index.md +25 -0
  3. package/dist/docs/changelogs/latest.md +353 -362
  4. package/dist/docs/changelogs/preview.md +399 -366
  5. package/dist/docs/cli/plan-mode.md +1 -0
  6. package/dist/docs/cli/sandbox.md +52 -0
  7. package/dist/docs/cli/settings.md +17 -14
  8. package/dist/docs/core/remote-agents.md +14 -18
  9. package/dist/docs/core/subagents.md +63 -27
  10. package/dist/docs/get-started/authentication.md +2 -2
  11. package/dist/docs/get-started/installation.md +7 -0
  12. package/dist/docs/hooks/index.md +6 -6
  13. package/dist/docs/reference/configuration.md +41 -11
  14. package/dist/docs/reference/keyboard-shortcuts.md +14 -9
  15. package/dist/docs/reference/tools.md +4 -4
  16. package/dist/docs/release-confidence.md +0 -6
  17. package/dist/docs/releases.md +4 -0
  18. package/dist/docs/tools/mcp-server.md +3 -3
  19. package/dist/docs/tools/web-fetch.md +3 -0
  20. package/dist/src/agent/agent-session.test.js +14 -6
  21. package/dist/src/agent/agent-session.test.js.map +1 -1
  22. package/dist/src/agent/event-translator.js +2 -1
  23. package/dist/src/agent/event-translator.js.map +1 -1
  24. package/dist/src/agent/event-translator.test.js +1 -0
  25. package/dist/src/agent/event-translator.test.js.map +1 -1
  26. package/dist/src/agent/legacy-agent-session.d.ts +47 -4
  27. package/dist/src/agent/legacy-agent-session.js +38 -15
  28. package/dist/src/agent/legacy-agent-session.js.map +1 -1
  29. package/dist/src/agent/legacy-agent-session.test.js +60 -73
  30. package/dist/src/agent/legacy-agent-session.test.js.map +1 -1
  31. package/dist/src/agent/mock.js +7 -1
  32. package/dist/src/agent/mock.js.map +1 -1
  33. package/dist/src/agent/mock.test.js +1 -1
  34. package/dist/src/agent/mock.test.js.map +1 -1
  35. package/dist/src/agent/types.d.ts +34 -1
  36. package/dist/src/agents/agent-scheduler.js +6 -1
  37. package/dist/src/agents/agent-scheduler.js.map +1 -1
  38. package/dist/src/agents/agent-scheduler.test.js +38 -0
  39. package/dist/src/agents/agent-scheduler.test.js.map +1 -1
  40. package/dist/src/agents/auth-provider/api-key-provider.test.js +18 -2
  41. package/dist/src/agents/auth-provider/api-key-provider.test.js.map +1 -1
  42. package/dist/src/agents/auth-provider/value-resolver.test.js +30 -0
  43. package/dist/src/agents/auth-provider/value-resolver.test.js.map +1 -1
  44. package/dist/src/agents/browser/analyzeScreenshot.js +36 -6
  45. package/dist/src/agents/browser/analyzeScreenshot.js.map +1 -1
  46. package/dist/src/agents/browser/analyzeScreenshot.test.js +35 -3
  47. package/dist/src/agents/browser/analyzeScreenshot.test.js.map +1 -1
  48. package/dist/src/agents/browser/browserAgentFactory.d.ts +8 -0
  49. package/dist/src/agents/browser/browserAgentFactory.js +174 -118
  50. package/dist/src/agents/browser/browserAgentFactory.js.map +1 -1
  51. package/dist/src/agents/browser/browserAgentFactory.test.js +70 -1
  52. package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -1
  53. package/dist/src/agents/browser/browserAgentInvocation.js +29 -2
  54. package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
  55. package/dist/src/agents/browser/browserAgentInvocation.test.js +51 -5
  56. package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -1
  57. package/dist/src/agents/browser/browserManager.d.ts +38 -0
  58. package/dist/src/agents/browser/browserManager.js +117 -6
  59. package/dist/src/agents/browser/browserManager.js.map +1 -1
  60. package/dist/src/agents/browser/browserManager.test.js +156 -2
  61. package/dist/src/agents/browser/browserManager.test.js.map +1 -1
  62. package/dist/src/agents/browser/modelAvailability.d.ts +5 -0
  63. package/dist/src/agents/browser/modelAvailability.js +12 -0
  64. package/dist/src/agents/browser/modelAvailability.js.map +1 -1
  65. package/dist/src/agents/local-executor.d.ts +5 -0
  66. package/dist/src/agents/local-executor.js +98 -181
  67. package/dist/src/agents/local-executor.js.map +1 -1
  68. package/dist/src/agents/local-executor.test.js +386 -101
  69. package/dist/src/agents/local-executor.test.js.map +1 -1
  70. package/dist/src/agents/memory-manager-agent.js +1 -0
  71. package/dist/src/agents/memory-manager-agent.js.map +1 -1
  72. package/dist/src/agents/memory-manager-agent.test.js +6 -0
  73. package/dist/src/agents/memory-manager-agent.test.js.map +1 -1
  74. package/dist/src/agents/registry.js +3 -10
  75. package/dist/src/agents/registry.js.map +1 -1
  76. package/dist/src/agents/skill-extraction-agent.d.ts +24 -0
  77. package/dist/src/agents/skill-extraction-agent.js +269 -0
  78. package/dist/src/agents/skill-extraction-agent.js.map +1 -0
  79. package/dist/src/agents/types.d.ts +11 -0
  80. package/dist/src/code_assist/admin/admin_controls.js +1 -1
  81. package/dist/src/code_assist/admin/admin_controls.js.map +1 -1
  82. package/dist/src/code_assist/experiments/flagNames.d.ts +1 -0
  83. package/dist/src/code_assist/experiments/flagNames.js +1 -0
  84. package/dist/src/code_assist/experiments/flagNames.js.map +1 -1
  85. package/dist/src/code_assist/server.js +1 -1
  86. package/dist/src/code_assist/server.js.map +1 -1
  87. package/dist/src/commands/memory.js +1 -1
  88. package/dist/src/commands/memory.js.map +1 -1
  89. package/dist/src/config/config.d.ts +34 -31
  90. package/dist/src/config/config.js +101 -38
  91. package/dist/src/config/config.js.map +1 -1
  92. package/dist/src/config/config.test.js +102 -15
  93. package/dist/src/config/config.test.js.map +1 -1
  94. package/dist/src/config/extensions/integrity.js +1 -1
  95. package/dist/src/config/extensions/integrity.js.map +1 -1
  96. package/dist/src/config/projectRegistry.js +5 -3
  97. package/dist/src/config/projectRegistry.js.map +1 -1
  98. package/dist/src/config/scoped-config.d.ts +30 -0
  99. package/dist/src/config/scoped-config.js +69 -0
  100. package/dist/src/config/scoped-config.js.map +1 -0
  101. package/dist/src/config/scoped-config.test.d.ts +6 -0
  102. package/dist/src/config/scoped-config.test.js +161 -0
  103. package/dist/src/config/scoped-config.test.js.map +1 -0
  104. package/dist/src/config/storage.d.ts +2 -0
  105. package/dist/src/config/storage.js +7 -2
  106. package/dist/src/config/storage.js.map +1 -1
  107. package/dist/src/config/storage.test.js +7 -7
  108. package/dist/src/config/storage.test.js.map +1 -1
  109. package/dist/src/confirmation-bus/types.d.ts +2 -2
  110. package/dist/src/context/agentHistoryProvider.d.ts +1 -1
  111. package/dist/src/context/agentHistoryProvider.js +1 -5
  112. package/dist/src/context/agentHistoryProvider.js.map +1 -1
  113. package/dist/src/context/agentHistoryProvider.test.js +2 -39
  114. package/dist/src/context/agentHistoryProvider.test.js.map +1 -1
  115. package/dist/src/context/contextCompressionService.d.ts +30 -0
  116. package/dist/src/context/contextCompressionService.js +405 -0
  117. package/dist/src/context/contextCompressionService.js.map +1 -0
  118. package/dist/src/context/contextCompressionService.test.d.ts +1 -0
  119. package/dist/src/context/contextCompressionService.test.js +253 -0
  120. package/dist/src/context/contextCompressionService.test.js.map +1 -0
  121. package/dist/src/context/{contextManager.d.ts → memoryContextManager.d.ts} +1 -1
  122. package/dist/src/context/{contextManager.js → memoryContextManager.js} +2 -2
  123. package/dist/src/context/memoryContextManager.js.map +1 -0
  124. package/dist/src/context/{contextManager.test.js → memoryContextManager.test.js} +22 -28
  125. package/dist/src/context/memoryContextManager.test.js.map +1 -0
  126. package/dist/src/context/profiles.d.ts +7 -0
  127. package/dist/src/context/profiles.js +21 -0
  128. package/dist/src/context/profiles.js.map +1 -0
  129. package/dist/src/context/toolDistillationService.test.js +3 -0
  130. package/dist/src/context/toolDistillationService.test.js.map +1 -1
  131. package/dist/src/context/types.d.ts +36 -0
  132. package/dist/src/context/types.js.map +1 -0
  133. package/dist/src/core/baseLlmClient.js +1 -1
  134. package/dist/src/core/baseLlmClient.js.map +1 -1
  135. package/dist/src/core/baseLlmClient.test.js +1 -0
  136. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  137. package/dist/src/core/client.js +1 -1
  138. package/dist/src/core/client.js.map +1 -1
  139. package/dist/src/core/client.test.js +7 -6
  140. package/dist/src/core/client.test.js.map +1 -1
  141. package/dist/src/core/geminiChat.js +8 -0
  142. package/dist/src/core/geminiChat.js.map +1 -1
  143. package/dist/src/core/geminiChat.test.js +1 -0
  144. package/dist/src/core/geminiChat.test.js.map +1 -1
  145. package/dist/src/core/geminiChat_network_retry.test.js +1 -0
  146. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  147. package/dist/src/core/logger.js +4 -4
  148. package/dist/src/core/logger.js.map +1 -1
  149. package/dist/src/core/logger.test.js +1 -1
  150. package/dist/src/core/logger.test.js.map +1 -1
  151. package/dist/src/core/loggingContentGenerator.js +1 -1
  152. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  153. package/dist/src/generated/git-commit.d.ts +2 -2
  154. package/dist/src/generated/git-commit.js +2 -2
  155. package/dist/src/hooks/hookEventHandler.js +8 -0
  156. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  157. package/dist/src/hooks/hookRunner.js +9 -5
  158. package/dist/src/hooks/hookRunner.js.map +1 -1
  159. package/dist/src/hooks/hookRunner.test.js +20 -3
  160. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  161. package/dist/src/hooks/hookSystem.d.ts +2 -0
  162. package/dist/src/hooks/hookSystem.js +1 -0
  163. package/dist/src/hooks/hookSystem.js.map +1 -1
  164. package/dist/src/hooks/hookTranslator.js +20 -13
  165. package/dist/src/hooks/hookTranslator.js.map +1 -1
  166. package/dist/src/hooks/hookTranslator.test.js +36 -0
  167. package/dist/src/hooks/hookTranslator.test.js.map +1 -1
  168. package/dist/src/hooks/types.d.ts +2 -0
  169. package/dist/src/ide/ide-client.js +3 -3
  170. package/dist/src/ide/ide-client.js.map +1 -1
  171. package/dist/src/ide/ide-connection-utils.js +1 -1
  172. package/dist/src/ide/ide-connection-utils.js.map +1 -1
  173. package/dist/src/ide/ide-installer.js +3 -3
  174. package/dist/src/ide/ide-installer.js.map +1 -1
  175. package/dist/src/ide/process-utils.js +3 -3
  176. package/dist/src/ide/process-utils.js.map +1 -1
  177. package/dist/src/index.d.ts +4 -1
  178. package/dist/src/index.js +5 -1
  179. package/dist/src/index.js.map +1 -1
  180. package/dist/src/output/json-formatter.js +2 -1
  181. package/dist/src/output/json-formatter.js.map +1 -1
  182. package/dist/src/policy/config.test.js +21 -20
  183. package/dist/src/policy/config.test.js.map +1 -1
  184. package/dist/src/policy/policies/memory-manager.toml +11 -1
  185. package/dist/src/policy/policies/plan.toml +4 -3
  186. package/dist/src/policy/policies/read-only.toml +6 -0
  187. package/dist/src/policy/policies/sandbox-default.toml +2 -3
  188. package/dist/src/policy/policy-engine.js +23 -0
  189. package/dist/src/policy/policy-engine.js.map +1 -1
  190. package/dist/src/policy/policy-engine.test.js +129 -1
  191. package/dist/src/policy/policy-engine.test.js.map +1 -1
  192. package/dist/src/policy/sandboxPolicyManager.d.ts +26 -1
  193. package/dist/src/policy/sandboxPolicyManager.js +41 -12
  194. package/dist/src/policy/sandboxPolicyManager.js.map +1 -1
  195. package/dist/src/policy/sandboxPolicyManager.test.d.ts +6 -0
  196. package/dist/src/policy/sandboxPolicyManager.test.js +61 -0
  197. package/dist/src/policy/sandboxPolicyManager.test.js.map +1 -0
  198. package/dist/src/policy/workspace-policy.test.js +18 -15
  199. package/dist/src/policy/workspace-policy.test.js.map +1 -1
  200. package/dist/src/prompts/snippets.js +6 -3
  201. package/dist/src/prompts/snippets.js.map +1 -1
  202. package/dist/src/prompts/snippets.legacy.js +6 -2
  203. package/dist/src/prompts/snippets.legacy.js.map +1 -1
  204. package/dist/src/prompts/utils.test.js +7 -5
  205. package/dist/src/prompts/utils.test.js.map +1 -1
  206. package/dist/src/safety/built-in.js +1 -1
  207. package/dist/src/safety/built-in.js.map +1 -1
  208. package/dist/src/sandbox/linux/LinuxSandboxManager.d.ts +4 -4
  209. package/dist/src/sandbox/linux/LinuxSandboxManager.js +47 -191
  210. package/dist/src/sandbox/linux/LinuxSandboxManager.js.map +1 -1
  211. package/dist/src/sandbox/linux/LinuxSandboxManager.test.js +33 -395
  212. package/dist/src/sandbox/linux/LinuxSandboxManager.test.js.map +1 -1
  213. package/dist/src/sandbox/linux/bwrapArgsBuilder.d.ts +24 -0
  214. package/dist/src/sandbox/linux/bwrapArgsBuilder.js +200 -0
  215. package/dist/src/sandbox/linux/bwrapArgsBuilder.js.map +1 -0
  216. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.d.ts +6 -0
  217. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js +247 -0
  218. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js.map +1 -0
  219. package/dist/src/sandbox/macos/MacOsSandboxManager.d.ts +3 -0
  220. package/dist/src/sandbox/macos/MacOsSandboxManager.js +12 -5
  221. package/dist/src/sandbox/macos/MacOsSandboxManager.js.map +1 -1
  222. package/dist/src/sandbox/macos/MacOsSandboxManager.test.js +20 -0
  223. package/dist/src/sandbox/macos/MacOsSandboxManager.test.js.map +1 -1
  224. package/dist/src/sandbox/macos/baseProfile.d.ts +1 -1
  225. package/dist/src/sandbox/macos/baseProfile.js +28 -4
  226. package/dist/src/sandbox/macos/baseProfile.js.map +1 -1
  227. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js +1 -1
  228. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js.map +1 -1
  229. package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js +2 -1
  230. package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js.map +1 -1
  231. package/dist/src/sandbox/utils/fsUtils.js +8 -6
  232. package/dist/src/sandbox/utils/fsUtils.js.map +1 -1
  233. package/dist/src/sandbox/utils/fsUtils.test.d.ts +6 -0
  234. package/dist/src/sandbox/utils/fsUtils.test.js +43 -0
  235. package/dist/src/sandbox/utils/fsUtils.test.js.map +1 -0
  236. package/dist/src/sandbox/utils/proactivePermissions.d.ts +19 -0
  237. package/dist/src/sandbox/utils/proactivePermissions.js +163 -0
  238. package/dist/src/sandbox/utils/proactivePermissions.js.map +1 -0
  239. package/dist/src/sandbox/utils/proactivePermissions.test.d.ts +6 -0
  240. package/dist/src/sandbox/utils/proactivePermissions.test.js +145 -0
  241. package/dist/src/sandbox/utils/proactivePermissions.test.js.map +1 -0
  242. package/dist/src/sandbox/utils/sandboxDenialUtils.d.ts +16 -1
  243. package/dist/src/sandbox/utils/sandboxDenialUtils.js +98 -24
  244. package/dist/src/sandbox/utils/sandboxDenialUtils.js.map +1 -1
  245. package/dist/src/sandbox/utils/sandboxDenialUtils.test.js +152 -1
  246. package/dist/src/sandbox/utils/sandboxDenialUtils.test.js.map +1 -1
  247. package/dist/src/sandbox/utils/sandboxReadWriteUtils.js +4 -0
  248. package/dist/src/sandbox/utils/sandboxReadWriteUtils.js.map +1 -1
  249. package/dist/src/sandbox/windows/GeminiSandbox.cs +90 -42
  250. package/dist/src/sandbox/windows/WindowsSandboxManager.d.ts +4 -0
  251. package/dist/src/sandbox/windows/WindowsSandboxManager.js +65 -60
  252. package/dist/src/sandbox/windows/WindowsSandboxManager.js.map +1 -1
  253. package/dist/src/sandbox/windows/WindowsSandboxManager.test.js +99 -54
  254. package/dist/src/sandbox/windows/WindowsSandboxManager.test.js.map +1 -1
  255. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.d.ts +2 -1
  256. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js +19 -18
  257. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js.map +1 -1
  258. package/dist/src/scheduler/scheduler.js +1 -1
  259. package/dist/src/scheduler/scheduler.js.map +1 -1
  260. package/dist/src/scheduler/scheduler_hooks.test.js +1 -1
  261. package/dist/src/scheduler/scheduler_hooks.test.js.map +1 -1
  262. package/dist/src/scheduler/tool-executor.js +1 -1
  263. package/dist/src/scheduler/tool-executor.js.map +1 -1
  264. package/dist/src/scheduler/tool-executor.test.js +1 -1
  265. package/dist/src/scheduler/tool-executor.test.js.map +1 -1
  266. package/dist/src/services/executionLifecycleService.d.ts +1 -0
  267. package/dist/src/services/executionLifecycleService.js +3 -0
  268. package/dist/src/services/executionLifecycleService.js.map +1 -1
  269. package/dist/src/services/gitService.js +1 -1
  270. package/dist/src/services/gitService.js.map +1 -1
  271. package/dist/src/services/memoryService.d.ts +65 -0
  272. package/dist/src/services/memoryService.js +511 -0
  273. package/dist/src/services/memoryService.js.map +1 -0
  274. package/dist/src/services/memoryService.test.d.ts +6 -0
  275. package/dist/src/services/memoryService.test.js +563 -0
  276. package/dist/src/services/memoryService.test.js.map +1 -0
  277. package/dist/src/services/sandboxManager.d.ts +17 -0
  278. package/dist/src/services/sandboxManager.integration.test.js +18 -11
  279. package/dist/src/services/sandboxManager.integration.test.js.map +1 -1
  280. package/dist/src/services/sandboxManager.js +20 -0
  281. package/dist/src/services/sandboxManager.js.map +1 -1
  282. package/dist/src/services/sandboxManager.test.js +84 -56
  283. package/dist/src/services/sandboxManager.test.js.map +1 -1
  284. package/dist/src/services/sandboxManagerFactory.js +2 -5
  285. package/dist/src/services/sandboxManagerFactory.js.map +1 -1
  286. package/dist/src/services/sandboxedFileSystemService.js +14 -3
  287. package/dist/src/services/sandboxedFileSystemService.js.map +1 -1
  288. package/dist/src/services/sandboxedFileSystemService.test.js +29 -14
  289. package/dist/src/services/sandboxedFileSystemService.test.js.map +1 -1
  290. package/dist/src/services/shellExecutionService.d.ts +16 -1
  291. package/dist/src/services/shellExecutionService.js +70 -10
  292. package/dist/src/services/shellExecutionService.js.map +1 -1
  293. package/dist/src/services/shellExecutionService.test.js +65 -4
  294. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  295. package/dist/src/services/worktreeService.test.js +7 -7
  296. package/dist/src/services/worktreeService.test.js.map +1 -1
  297. package/dist/src/skills/skillLoader.d.ts +8 -0
  298. package/dist/src/skills/skillLoader.js +1 -1
  299. package/dist/src/skills/skillLoader.js.map +1 -1
  300. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +29 -1
  301. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +101 -0
  302. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  303. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +167 -0
  304. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  305. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +9 -1
  306. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +20 -1
  307. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  308. package/dist/src/telemetry/loggers.d.ts +22 -0
  309. package/dist/src/telemetry/loggers.js +40 -1
  310. package/dist/src/telemetry/loggers.js.map +1 -1
  311. package/dist/src/telemetry/metrics.d.ts +108 -0
  312. package/dist/src/telemetry/metrics.js +177 -0
  313. package/dist/src/telemetry/metrics.js.map +1 -1
  314. package/dist/src/telemetry/metrics.test.js +254 -0
  315. package/dist/src/telemetry/metrics.test.js.map +1 -1
  316. package/dist/src/tools/complete-task.d.ts +29 -0
  317. package/dist/src/tools/complete-task.js +123 -0
  318. package/dist/src/tools/complete-task.js.map +1 -0
  319. package/dist/src/tools/complete-task.test.d.ts +6 -0
  320. package/dist/src/tools/complete-task.test.js +114 -0
  321. package/dist/src/tools/complete-task.test.js.map +1 -0
  322. package/dist/src/tools/definitions/base-declarations.d.ts +2 -0
  323. package/dist/src/tools/definitions/base-declarations.js +3 -0
  324. package/dist/src/tools/definitions/base-declarations.js.map +1 -1
  325. package/dist/src/tools/definitions/coreTools.d.ts +1 -1
  326. package/dist/src/tools/definitions/coreTools.js +1 -1
  327. package/dist/src/tools/definitions/coreTools.js.map +1 -1
  328. package/dist/src/tools/definitions/dynamic-declaration-helpers.js +4 -0
  329. package/dist/src/tools/definitions/dynamic-declaration-helpers.js.map +1 -1
  330. package/dist/src/tools/definitions/model-family-sets/default-legacy.js +3 -3
  331. package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
  332. package/dist/src/tools/definitions/model-family-sets/gemini-3.js +3 -3
  333. package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
  334. package/dist/src/tools/grep.test.js +2 -2
  335. package/dist/src/tools/grep.test.js.map +1 -1
  336. package/dist/src/tools/jit-context.js +3 -3
  337. package/dist/src/tools/jit-context.js.map +1 -1
  338. package/dist/src/tools/jit-context.test.js +15 -13
  339. package/dist/src/tools/jit-context.test.js.map +1 -1
  340. package/dist/src/tools/mcp-client.js +1 -1
  341. package/dist/src/tools/mcp-client.js.map +1 -1
  342. package/dist/src/tools/mcp-tool.test.js +1 -1
  343. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  344. package/dist/src/tools/ripGrep.test.js +1 -1
  345. package/dist/src/tools/ripGrep.test.js.map +1 -1
  346. package/dist/src/tools/shell.d.ts +7 -4
  347. package/dist/src/tools/shell.js +255 -37
  348. package/dist/src/tools/shell.js.map +1 -1
  349. package/dist/src/tools/shell.test.js +182 -8
  350. package/dist/src/tools/shell.test.js.map +1 -1
  351. package/dist/src/tools/shellBackgroundTools.d.ts +38 -0
  352. package/dist/src/tools/shellBackgroundTools.integration.test.d.ts +6 -0
  353. package/dist/src/tools/shellBackgroundTools.integration.test.js +86 -0
  354. package/dist/src/tools/shellBackgroundTools.integration.test.js.map +1 -0
  355. package/dist/src/tools/shellBackgroundTools.js +186 -0
  356. package/dist/src/tools/shellBackgroundTools.js.map +1 -0
  357. package/dist/src/tools/shellBackgroundTools.test.d.ts +6 -0
  358. package/dist/src/tools/shellBackgroundTools.test.js +230 -0
  359. package/dist/src/tools/shellBackgroundTools.test.js.map +1 -0
  360. package/dist/src/tools/shell_proactive.test.d.ts +6 -0
  361. package/dist/src/tools/shell_proactive.test.js +122 -0
  362. package/dist/src/tools/shell_proactive.test.js.map +1 -0
  363. package/dist/src/tools/tool-names.d.ts +3 -3
  364. package/dist/src/tools/tool-names.js +3 -2
  365. package/dist/src/tools/tool-names.js.map +1 -1
  366. package/dist/src/tools/tools.js +1 -1
  367. package/dist/src/tools/tools.js.map +1 -1
  368. package/dist/src/tools/web-fetch.js +8 -8
  369. package/dist/src/tools/web-fetch.js.map +1 -1
  370. package/dist/src/tools/web-fetch.test.js +5 -5
  371. package/dist/src/tools/web-fetch.test.js.map +1 -1
  372. package/dist/src/tools/xcode-mcp-fix-transport.js +1 -1
  373. package/dist/src/tools/xcode-mcp-fix-transport.js.map +1 -1
  374. package/dist/src/utils/bfsFileSearch.js +3 -6
  375. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  376. package/dist/src/utils/checkpointUtils.js +11 -8
  377. package/dist/src/utils/checkpointUtils.js.map +1 -1
  378. package/dist/src/utils/compatibility.js +0 -7
  379. package/dist/src/utils/compatibility.js.map +1 -1
  380. package/dist/src/utils/compatibility.test.js +0 -9
  381. package/dist/src/utils/compatibility.test.js.map +1 -1
  382. package/dist/src/utils/editor.js +3 -0
  383. package/dist/src/utils/editor.js.map +1 -1
  384. package/dist/src/utils/errorParsing.js +2 -2
  385. package/dist/src/utils/errorParsing.js.map +1 -1
  386. package/dist/src/utils/events.d.ts +12 -0
  387. package/dist/src/utils/events.js +7 -0
  388. package/dist/src/utils/events.js.map +1 -1
  389. package/dist/src/utils/fetch.d.ts +1 -0
  390. package/dist/src/utils/fetch.js +22 -6
  391. package/dist/src/utils/fetch.js.map +1 -1
  392. package/dist/src/utils/fetch.test.js +26 -1
  393. package/dist/src/utils/fetch.test.js.map +1 -1
  394. package/dist/src/utils/fileUtils.js +1 -1
  395. package/dist/src/utils/fileUtils.js.map +1 -1
  396. package/dist/src/utils/filesearch/crawler.js +1 -1
  397. package/dist/src/utils/filesearch/crawler.js.map +1 -1
  398. package/dist/src/utils/filesearch/fileSearch.test.js +7 -2
  399. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  400. package/dist/src/utils/getPty.js +2 -2
  401. package/dist/src/utils/getPty.js.map +1 -1
  402. package/dist/src/utils/gitIgnoreParser.js +2 -2
  403. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  404. package/dist/src/utils/gitUtils.js +2 -2
  405. package/dist/src/utils/gitUtils.js.map +1 -1
  406. package/dist/src/utils/googleErrors.js +5 -5
  407. package/dist/src/utils/googleErrors.js.map +1 -1
  408. package/dist/src/utils/ignoreFileParser.js +1 -1
  409. package/dist/src/utils/ignoreFileParser.js.map +1 -1
  410. package/dist/src/utils/memoryDiscovery.js +3 -7
  411. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  412. package/dist/src/utils/paths.d.ts +8 -0
  413. package/dist/src/utils/paths.js +37 -6
  414. package/dist/src/utils/paths.js.map +1 -1
  415. package/dist/src/utils/paths.test.js +61 -3
  416. package/dist/src/utils/paths.test.js.map +1 -1
  417. package/dist/src/utils/process-utils.js +2 -2
  418. package/dist/src/utils/process-utils.js.map +1 -1
  419. package/dist/src/utils/retry.js +7 -0
  420. package/dist/src/utils/retry.js.map +1 -1
  421. package/dist/src/utils/retry.test.js +41 -0
  422. package/dist/src/utils/retry.test.js.map +1 -1
  423. package/dist/src/utils/secure-browser-launcher.js +1 -1
  424. package/dist/src/utils/secure-browser-launcher.js.map +1 -1
  425. package/dist/src/utils/shell-utils.d.ts +9 -0
  426. package/dist/src/utils/shell-utils.integration.test.js +1 -1
  427. package/dist/src/utils/shell-utils.integration.test.js.map +1 -1
  428. package/dist/src/utils/shell-utils.js +43 -4
  429. package/dist/src/utils/shell-utils.js.map +1 -1
  430. package/dist/src/utils/shell-utils.test.js +13 -1
  431. package/dist/src/utils/shell-utils.test.js.map +1 -1
  432. package/dist/src/utils/systemEncoding.js +1 -1
  433. package/dist/src/utils/systemEncoding.js.map +1 -1
  434. package/dist/src/utils/terminalSerializer.d.ts +1 -0
  435. package/dist/src/utils/terminalSerializer.js +31 -8
  436. package/dist/src/utils/terminalSerializer.js.map +1 -1
  437. package/dist/src/utils/terminalSerializer.test.js +3 -2
  438. package/dist/src/utils/terminalSerializer.test.js.map +1 -1
  439. package/dist/src/utils/workspaceContext.js +2 -2
  440. package/dist/src/utils/workspaceContext.js.map +1 -1
  441. package/dist/tsconfig.tsbuildinfo +1 -1
  442. package/package.json +1 -1
  443. package/dist/google-gemini-cli-core-0.37.1.tgz +0 -0
  444. package/dist/src/context/contextManager.js.map +0 -1
  445. package/dist/src/context/contextManager.test.js.map +0 -1
  446. package/dist/src/services/types.d.ts +0 -14
  447. package/dist/src/services/types.js.map +0 -1
  448. /package/dist/src/context/{contextManager.test.d.ts → memoryContextManager.test.d.ts} +0 -0
  449. /package/dist/src/{services → context}/types.js +0 -0
@@ -123,6 +123,7 @@ These are the only allowed tools:
123
123
  [`glob`](../tools/file-system.md#4-glob-findfiles)
124
124
  - **Search:** [`grep_search`](../tools/file-system.md#5-grep_search-searchtext),
125
125
  [`google_web_search`](../tools/web-search.md),
126
+ [`web_fetch`](../tools/web-fetch.md) (requires explicit confirmation),
126
127
  [`get_internal_docs`](../tools/internal-docs.md)
127
128
  - **Research Subagents:**
128
129
  [`codebase_investigator`](../core/subagents.md#codebase-investigator),
@@ -136,6 +136,58 @@ gemini -p "build the snap"
136
136
  absolute path — the path must be writable inside the container.
137
137
  - Used with tools like Snapcraft or Rockcraft that require a full system.
138
138
 
139
+ ## Tool sandboxing
140
+
141
+ Tool-level sandboxing provides granular isolation for individual tool executions
142
+ (like `shell_exec` and `write_file`) instead of sandboxing the entire Gemini CLI
143
+ process.
144
+
145
+ This approach offers better integration with your local environment for non-tool
146
+ tasks (like UI rendering and configuration loading) while still providing
147
+ security for tool-driven operations.
148
+
149
+ ### How to turn off tool sandboxing
150
+
151
+ If you experience issues with tool sandboxing or prefer full-process isolation,
152
+ you can disable it by setting `security.toolSandboxing` to `false` in your
153
+ `settings.json` file.
154
+
155
+ ```json
156
+ {
157
+ "security": {
158
+ "toolSandboxing": false
159
+ }
160
+ }
161
+ ```
162
+
163
+ <!-- prettier-ignore -->
164
+ > [!NOTE]
165
+ > Changing the `security.toolSandboxing` setting requires a restart of Gemini
166
+ > CLI to take effect.
167
+
168
+ ## Sandbox expansion
169
+
170
+ Sandbox expansion is a dynamic permission system that lets Gemini CLI request
171
+ additional permissions for a command when needed.
172
+
173
+ When a sandboxed command fails due to permission restrictions (like restricted
174
+ file paths or network access), or when a command is proactively identified as
175
+ requiring extra permissions (like `npm install`), Gemini CLI will present you
176
+ with a "Sandbox Expansion Request."
177
+
178
+ ### How sandbox expansion works
179
+
180
+ 1. **Detection**: Gemini CLI detects a sandbox denial or proactively identifies
181
+ a command that requires extra permissions.
182
+ 2. **Request**: A modal dialog is shown, explaining which additional
183
+ permissions (e.g., specific directories or network access) are required.
184
+ 3. **Approval**: If you approve the expansion, the command is executed with the
185
+ extended permissions for that specific run.
186
+
187
+ This mechanism ensures you don't have to manually re-run commands with more
188
+ permissive sandbox settings, while still maintaining control over what the AI
189
+ can access.
190
+
139
191
  ## Quickstart
140
192
 
141
193
  ```bash
@@ -60,7 +60,7 @@ they appear in the UI.
60
60
  | Hide Tips | `ui.hideTips` | Hide helpful tips in the UI | `false` |
61
61
  | Escape Pasted @ Symbols | `ui.escapePastedAtSymbols` | When enabled, @ symbols in pasted text are escaped to prevent unintended @path expansion. | `false` |
62
62
  | Show Shortcuts Hint | `ui.showShortcutsHint` | Show the "? for shortcuts" hint above the input. | `true` |
63
- | Compact Tool Output | `ui.compactToolOutput` | Display tool outputs (like directory listings and file reads) in a compact, structured format. | `false` |
63
+ | Compact Tool Output | `ui.compactToolOutput` | Display tool outputs (like directory listings and file reads) in a compact, structured format. | `true` |
64
64
  | Hide Banner | `ui.hideBanner` | Hide the application banner | `false` |
65
65
  | Hide Context Summary | `ui.hideContextSummary` | Hide the context summary (GEMINI.md, MCP servers) above the input. | `false` |
66
66
  | Hide CWD | `ui.footer.hideCWD` | Hide the current working directory in the footer. | `false` |
@@ -74,6 +74,8 @@ they appear in the UI.
74
74
  | Show Model Info In Chat | `ui.showModelInfoInChat` | Show the model name in the chat for each model turn. | `false` |
75
75
  | Show User Identity | `ui.showUserIdentity` | Show the signed-in user's identity (e.g. email) in the UI. | `true` |
76
76
  | Use Alternate Screen Buffer | `ui.useAlternateBuffer` | Use an alternate screen buffer for the UI, preserving shell history. | `false` |
77
+ | Render Process | `ui.renderProcess` | Enable Ink render process for the UI. | `true` |
78
+ | Terminal Buffer | `ui.terminalBuffer` | Use the new terminal buffer architecture for rendering. | `false` |
77
79
  | Use Background Color | `ui.useBackgroundColor` | Whether to use background colors in the UI. | `true` |
78
80
  | Incremental Rendering | `ui.incrementalRendering` | Enable incremental rendering for the UI. This option will reduce flickering but may cause rendering artifacts. Only supported when useAlternateBuffer is enabled. | `true` |
79
81
  | Show Spinner | `ui.showSpinner` | Show the spinner during operations. | `true` |
@@ -129,7 +131,7 @@ they appear in the UI.
129
131
  | Sandbox Allowed Paths | `tools.sandboxAllowedPaths` | List of additional paths that the sandbox is allowed to access. | `[]` |
130
132
  | Sandbox Network Access | `tools.sandboxNetworkAccess` | Whether the sandbox is allowed to access the network. | `false` |
131
133
  | Enable Interactive Shell | `tools.shell.enableInteractiveShell` | Use node-pty for an interactive shell experience. Fallback to child_process still applies. | `true` |
132
- | Show Color | `tools.shell.showColor` | Show color in shell output. | `false` |
134
+ | Show Color | `tools.shell.showColor` | Show color in shell output. | `true` |
133
135
  | Use Ripgrep | `tools.useRipgrep` | Use ripgrep for file content search instead of the fallback implementation. Provides faster search performance. | `true` |
134
136
  | Tool Output Truncation Threshold | `tools.truncateToolOutputThreshold` | Maximum characters to show when truncating large tool outputs. Set to 0 or negative to disable truncation. | `40000` |
135
137
  | Disable LLM Correction | `tools.disableLLMCorrection` | Disable LLM-based error correction for edit tools. When enabled, tools will fail immediately if exact string matches are not found, instead of attempting to self-correct. | `true` |
@@ -138,7 +140,7 @@ they appear in the UI.
138
140
 
139
141
  | UI Label | Setting | Description | Default |
140
142
  | ------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- |
141
- | Tool Sandboxing | `security.toolSandboxing` | Experimental tool-level sandboxing (implementation in progress). | `false` |
143
+ | Tool Sandboxing | `security.toolSandboxing` | Tool-level sandboxing. Isolates individual tools instead of the entire CLI process. | `false` |
142
144
  | Disable YOLO Mode | `security.disableYoloMode` | Disable YOLO mode, even if enabled by a flag. | `false` |
143
145
  | Disable Always Allow | `security.disableAlwaysAllow` | Disable "Always allow" options in tool confirmation dialogs. | `false` |
144
146
  | Allow Permanent Tool Approval | `security.enablePermanentToolApproval` | Enable the "Allow for all future sessions" option in tool confirmation dialogs. | `false` |
@@ -153,20 +155,21 @@ they appear in the UI.
153
155
 
154
156
  | UI Label | Setting | Description | Default |
155
157
  | --------------------------------- | ------------------------------ | --------------------------------------------- | ------- |
156
- | Auto Configure Max Old Space Size | `advanced.autoConfigureMemory` | Automatically configure Node.js memory limits | `false` |
158
+ | Auto Configure Max Old Space Size | `advanced.autoConfigureMemory` | Automatically configure Node.js memory limits | `true` |
157
159
 
158
160
  ### Experimental
159
161
 
160
- | UI Label | Setting | Description | Default |
161
- | ------------------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
162
- | Enable Git Worktrees | `experimental.worktrees` | Enable automated Git worktree management for parallel work. | `false` |
163
- | 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` |
164
- | 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` |
165
- | Model Steering | `experimental.modelSteering` | Enable model steering (user hints) to guide the model during tool execution. | `false` |
166
- | Direct Web Fetch | `experimental.directWebFetch` | Enable web fetch behavior that bypasses LLM summarization. | `false` |
167
- | Memory Manager Agent | `experimental.memoryManager` | Replace the built-in save_memory tool with a memory manager subagent that supports adding, removing, de-duplicating, and organizing memories. | `false` |
168
- | Enable Context Management | `experimental.contextManagement` | Enable logic for context management. | `false` |
169
- | Topic & Update Narration | `experimental.topicUpdateNarration` | Enable the experimental Topic & Update communication model for reduced chattiness and structured progress reporting. | `false` |
162
+ | UI Label | Setting | Description | Default |
163
+ | ---------------------------------------------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
164
+ | Enable Git Worktrees | `experimental.worktrees` | Enable automated Git worktree management for parallel work. | `false` |
165
+ | 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` |
166
+ | 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` |
167
+ | Model Steering | `experimental.modelSteering` | Enable model steering (user hints) to guide the model during tool execution. | `false` |
168
+ | Direct Web Fetch | `experimental.directWebFetch` | Enable web fetch behavior that bypasses LLM summarization. | `false` |
169
+ | Memory Manager Agent | `experimental.memoryManager` | Replace the built-in save_memory tool with a memory manager subagent that supports adding, removing, de-duplicating, and organizing memories. | `false` |
170
+ | Use the generalist profile to manage agent contexts. | `experimental.generalistProfile` | Suitable for general coding and software development tasks. | `false` |
171
+ | Enable Context Management | `experimental.contextManagement` | Enable logic for context management. | `false` |
172
+ | Topic & Update Narration | `experimental.topicUpdateNarration` | Enable the experimental Topic & Update communication model for reduced chattiness and structured progress reporting. | `false` |
170
173
 
171
174
  ### Skills
172
175
 
@@ -1,4 +1,4 @@
1
- # Remote Subagents (experimental)
1
+ # Remote Subagents
2
2
 
3
3
  Gemini CLI supports connecting to remote subagents using the Agent-to-Agent
4
4
  (A2A) protocol. This allows Gemini CLI to interact with other agents, expanding
@@ -10,23 +10,6 @@ agents in the following repositories:
10
10
  - [ADK Samples (Python)](https://github.com/google/adk-samples/tree/main/python)
11
11
  - [ADK Python Contributing Samples](https://github.com/google/adk-python/tree/main/contributing/samples)
12
12
 
13
- <!-- prettier-ignore -->
14
- > [!NOTE]
15
- > Remote subagents are currently an experimental feature.
16
-
17
- ## Configuration
18
-
19
- To use remote subagents, you must explicitly enable them in your
20
- `settings.json`:
21
-
22
- ```json
23
- {
24
- "experimental": {
25
- "enableAgents": true
26
- }
27
- }
28
- ```
29
-
30
13
  ## Proxy support
31
14
 
32
15
  Gemini CLI routes traffic to remote agents through an HTTP/HTTPS proxy if one is
@@ -459,3 +442,16 @@ Users can manage subagents using the following commands within the Gemini CLI:
459
442
  > [!TIP]
460
443
  > You can use the `@cli_help` agent within Gemini CLI for assistance
461
444
  > with configuring subagents.
445
+
446
+ ## Disabling remote agents
447
+
448
+ Remote subagents are enabled by default. To disable them, set `enableAgents` to
449
+ `false` in your `settings.json`:
450
+
451
+ ```json
452
+ {
453
+ "experimental": {
454
+ "enableAgents": false
455
+ }
456
+ }
457
+ ```
@@ -5,15 +5,6 @@ session. They are designed to handle specific, complex tasks—like deep codebas
5
5
  analysis, documentation lookup, or domain-specific reasoning—without cluttering
6
6
  the main agent's context or toolset.
7
7
 
8
- Subagents are enabled by default. To disable them, set `enableAgents` to `false`
9
- in your `settings.json`:
10
-
11
- ```json
12
- {
13
- "experimental": { "enableAgents": false }
14
- }
15
- ```
16
-
17
8
  ## What are subagents?
18
9
 
19
10
  Subagents are "specialists" that the main Gemini agent can hire for a specific
@@ -120,10 +111,12 @@ Gemini CLI comes with the following built-in subagents:
120
111
 
121
112
  The browser agent requires:
122
113
 
123
- - **Chrome** version 144 or later (any recent stable release will work).
124
- - **Node.js** with `npx` available (used to launch the
125
- [`chrome-devtools-mcp`](https://www.npmjs.com/package/chrome-devtools-mcp)
126
- server).
114
+ - **Chrome** version 144 or later (any recent stable release works).
115
+
116
+ The underlying
117
+ [`chrome-devtools-mcp`](https://www.npmjs.com/package/chrome-devtools-mcp)
118
+ server is bundled with Gemini CLI and launched automatically — no separate
119
+ installation is needed.
127
120
 
128
121
  #### Enabling the browser agent
129
122
 
@@ -169,26 +162,58 @@ The available modes are:
169
162
  | `isolated` | Launches Chrome with a temporary profile that is deleted after each session. Use this for clean-state automation. |
170
163
  | `existing` | Attaches to an already-running Chrome instance. You must enable remote debugging first by navigating to `chrome://inspect/#remote-debugging` in Chrome. No new browser process is launched. |
171
164
 
165
+ #### First-run consent
166
+
167
+ The first time the browser agent is invoked, Gemini CLI displays a consent
168
+ dialog. You must accept before the browser session starts. This dialog only
169
+ appears once.
170
+
172
171
  #### Configuration reference
173
172
 
174
173
  All browser-specific settings go under `agents.browser` in your `settings.json`.
175
-
176
- | Setting | Type | Default | Description |
177
- | :------------ | :-------- | :------------- | :---------------------------------------------------------------------------------------------- |
178
- | `sessionMode` | `string` | `"persistent"` | How Chrome is managed: `"persistent"`, `"isolated"`, or `"existing"`. |
179
- | `headless` | `boolean` | `false` | Run Chrome in headless mode (no visible window). |
180
- | `profilePath` | `string` | | Custom path to a browser profile directory. |
181
- | `visualModel` | `string` | | Model override for the visual agent (for example, `"gemini-2.5-computer-use-preview-10-2025"`). |
174
+ For full details, see the
175
+ [`agents.browser` configuration reference](../reference/configuration.md#agents).
176
+
177
+ | Setting | Type | Default | Description |
178
+ | :------------------------ | :--------- | :------------- | :------------------------------------------------------------------------------ |
179
+ | `sessionMode` | `string` | `"persistent"` | How Chrome is managed: `"persistent"`, `"isolated"`, or `"existing"`. |
180
+ | `headless` | `boolean` | `false` | Run Chrome in headless mode (no visible window). |
181
+ | `profilePath` | `string` | — | Custom path to a browser profile directory. |
182
+ | `visualModel` | `string` | — | Model override for the visual agent. |
183
+ | `allowedDomains` | `string[]` | — | Restrict navigation to specific domains (for example, `["github.com"]`). |
184
+ | `disableUserInput` | `boolean` | `true` | Disable user input on the browser window during automation (non-headless only). |
185
+ | `maxActionsPerTask` | `number` | `100` | Maximum tool calls per task. The agent is terminated when the limit is reached. |
186
+ | `confirmSensitiveActions` | `boolean` | `false` | Require manual confirmation for `upload_file` and `evaluate_script`. |
187
+ | `blockFileUploads` | `boolean` | `false` | Hard-block all file upload requests from the agent. |
188
+
189
+ #### Automation overlay and input blocking
190
+
191
+ In non-headless mode, the browser agent injects a visual overlay into the
192
+ browser window to indicate that automation is in progress. By default, user
193
+ input (keyboard and mouse) is also blocked to prevent accidental interference.
194
+ You can disable this by setting `disableUserInput` to `false`.
182
195
 
183
196
  #### Security
184
197
 
185
- The browser agent enforces the following security restrictions:
186
-
187
- - **Blocked URL patterns:** `file://`, `javascript:`, `data:text/html`,
188
- `chrome://extensions`, and `chrome://settings/passwords` are always blocked.
189
- - **Sensitive action confirmation:** Actions like form filling, file uploads,
190
- and form submissions require user confirmation through the standard policy
191
- engine.
198
+ The browser agent enforces several layers of security:
199
+
200
+ - **Domain restrictions:** When `allowedDomains` is set, the agent can only
201
+ navigate to the listed domains (and their subdomains when using `*.` prefix).
202
+ Attempting to visit a disallowed domain throws a fatal error that immediately
203
+ terminates the agent. The agent also attempts to detect and block the use of
204
+ allowed domains as proxies (e.g., via query parameters or fragments) to access
205
+ restricted content.
206
+ - **Blocked URL patterns:** The underlying MCP server blocks dangerous URL
207
+ schemes including `file://`, `javascript:`, `data:text/html`,
208
+ `chrome://extensions`, and `chrome://settings/passwords`.
209
+ - **Sensitive action confirmation:** Form filling (`fill`, `fill_form`) always
210
+ requires user confirmation through the policy engine, regardless of approval
211
+ mode. When `confirmSensitiveActions` is `true`, `upload_file` and
212
+ `evaluate_script` also require confirmation.
213
+ - **File upload blocking:** Set `blockFileUploads` to `true` to hard-block all
214
+ file upload requests, preventing the agent from uploading any files.
215
+ - **Action rate limiting:** The `maxActionsPerTask` setting (default: 100)
216
+ limits the total number of tool calls per task to prevent runaway execution.
192
217
 
193
218
  #### Visual agent
194
219
 
@@ -534,3 +559,14 @@ configuration, authentication, and usage instructions.
534
559
  Extensions can bundle and distribute subagents. See the
535
560
  [Extensions documentation](../extensions/index.md#subagents) for details on how
536
561
  to package agents within an extension.
562
+
563
+ ## Disabling subagents
564
+
565
+ Subagents are enabled by default. To disable them, set `enableAgents` to `false`
566
+ in your `settings.json`:
567
+
568
+ ```json
569
+ {
570
+ "experimental": { "enableAgents": false }
571
+ }
572
+ ```
@@ -398,8 +398,8 @@ on this page.
398
398
 
399
399
  ## Running in headless mode <a id="headless"></a>
400
400
 
401
- [Headless mode](../cli/headless) will use your existing authentication method,
402
- if an existing authentication credential is cached.
401
+ [Headless mode](../cli/headless.md) will use your existing authentication
402
+ method, if an existing authentication credential is cached.
403
403
 
404
404
  If you have not already signed in with an authentication credential, you must
405
405
  configure authentication using environment variables:
@@ -122,6 +122,13 @@ code.
122
122
  # From the root of the repository
123
123
  npm run start
124
124
  ```
125
+ - **Production mode (React optimizations):** This method runs the CLI with React
126
+ production mode enabled, which is useful for testing performance without
127
+ development overhead.
128
+ ```bash
129
+ # From the root of the repository
130
+ npm run start:prod
131
+ ```
125
132
  - **Production-like mode (linked package):** This method simulates a global
126
133
  installation by linking your local package. It's useful for testing a local
127
134
  build in a production workflow.
@@ -22,11 +22,11 @@ With hooks, you can:
22
22
 
23
23
  ### Getting started
24
24
 
25
- - **[Writing hooks guide](../hooks/writing-hooks)**: A tutorial on creating your
26
- first hook with comprehensive examples.
27
- - **[Best practices](../hooks/best-practices)**: Guidelines on security,
25
+ - **[Writing hooks guide](../hooks/writing-hooks.md)**: A tutorial on creating
26
+ your first hook with comprehensive examples.
27
+ - **[Best practices](../hooks/best-practices.md)**: Guidelines on security,
28
28
  performance, and debugging.
29
- - **[Hooks reference](../hooks/reference)**: The definitive technical
29
+ - **[Hooks reference](../hooks/reference.md)**: The definitive technical
30
30
  specification of I/O schemas and exit codes.
31
31
 
32
32
  ## Core concepts
@@ -154,8 +154,8 @@ Gemini CLI **fingerprints** project hooks. If a hook's name or command changes
154
154
  (e.g., via `git pull`), it is treated as a **new, untrusted hook** and you will
155
155
  be warned before it executes.
156
156
 
157
- See [Security Considerations](../hooks/best-practices#using-hooks-securely) for
158
- a detailed threat model.
157
+ See [Security Considerations](../hooks/best-practices.md#using-hooks-securely)
158
+ for a detailed threat model.
159
159
 
160
160
  ## Managing hooks
161
161
 
@@ -62,11 +62,13 @@ locations for these files:
62
62
 
63
63
  **Note on environment variables in settings:** String values within your
64
64
  `settings.json` and `gemini-extension.json` files can reference environment
65
- variables using either `$VAR_NAME` or `${VAR_NAME}` syntax. These variables will
66
- be automatically resolved when the settings are loaded. For example, if you have
67
- an environment variable `MY_API_TOKEN`, you could use it in `settings.json` like
68
- this: `"apiKey": "$MY_API_TOKEN"`. Additionally, each extension can have its own
69
- `.env` file in its directory, which will be loaded automatically.
65
+ variables using `$VAR_NAME`, `${VAR_NAME}`, or `${VAR_NAME:-DEFAULT_VALUE}`
66
+ syntax. These variables will be automatically resolved when the settings are
67
+ loaded. For example, if you have an environment variable `MY_API_TOKEN`, you
68
+ could use it in `settings.json` like this: `"apiKey": "$MY_API_TOKEN"`. If you
69
+ want to provide a fallback value, use `${MY_API_TOKEN:-default-token}`.
70
+ Additionally, each extension can have its own `.env` file in its directory,
71
+ which will be loaded automatically.
70
72
 
71
73
  **Note for Enterprise Users:** For guidance on deploying and managing Gemini CLI
72
74
  in a corporate environment, please see the
@@ -265,7 +267,7 @@ their corresponding top-level category object in your `settings.json` file.
265
267
  - **`ui.compactToolOutput`** (boolean):
266
268
  - **Description:** Display tool outputs (like directory listings and file
267
269
  reads) in a compact, structured format.
268
- - **Default:** `false`
270
+ - **Default:** `true`
269
271
 
270
272
  - **`ui.hideBanner`** (boolean):
271
273
  - **Description:** Hide the application banner
@@ -337,6 +339,16 @@ their corresponding top-level category object in your `settings.json` file.
337
339
  - **Default:** `false`
338
340
  - **Requires restart:** Yes
339
341
 
342
+ - **`ui.renderProcess`** (boolean):
343
+ - **Description:** Enable Ink render process for the UI.
344
+ - **Default:** `true`
345
+ - **Requires restart:** Yes
346
+
347
+ - **`ui.terminalBuffer`** (boolean):
348
+ - **Description:** Use the new terminal buffer architecture for rendering.
349
+ - **Default:** `false`
350
+ - **Requires restart:** Yes
351
+
340
352
  - **`ui.useBackgroundColor`** (boolean):
341
353
  - **Description:** Whether to use background colors in the UI.
342
354
  - **Default:** `true`
@@ -1242,7 +1254,8 @@ their corresponding top-level category object in your `settings.json` file.
1242
1254
  - **Requires restart:** Yes
1243
1255
 
1244
1256
  - **`agents.browser.visualModel`** (string):
1245
- - **Description:** Model override for the visual agent.
1257
+ - **Description:** Model for the visual agent's analyze_screenshot tool. When
1258
+ set, enables the tool.
1246
1259
  - **Default:** `undefined`
1247
1260
  - **Requires restart:** Yes
1248
1261
 
@@ -1391,7 +1404,7 @@ their corresponding top-level category object in your `settings.json` file.
1391
1404
 
1392
1405
  - **`tools.shell.showColor`** (boolean):
1393
1406
  - **Description:** Show color in shell output.
1394
- - **Default:** `false`
1407
+ - **Default:** `true`
1395
1408
 
1396
1409
  - **`tools.shell.inactivityTimeout`** (number):
1397
1410
  - **Description:** The maximum time in seconds allowed without output from the
@@ -1479,9 +1492,10 @@ their corresponding top-level category object in your `settings.json` file.
1479
1492
  #### `security`
1480
1493
 
1481
1494
  - **`security.toolSandboxing`** (boolean):
1482
- - **Description:** Experimental tool-level sandboxing (implementation in
1483
- progress).
1495
+ - **Description:** Tool-level sandboxing. Isolates individual tools instead of
1496
+ the entire CLI process.
1484
1497
  - **Default:** `false`
1498
+ - **Requires restart:** Yes
1485
1499
 
1486
1500
  - **`security.disableYoloMode`** (boolean):
1487
1501
  - **Description:** Disable YOLO mode, even if enabled by a flag.
@@ -1565,7 +1579,7 @@ their corresponding top-level category object in your `settings.json` file.
1565
1579
 
1566
1580
  - **`advanced.autoConfigureMemory`** (boolean):
1567
1581
  - **Description:** Automatically configure Node.js memory limits
1568
- - **Default:** `false`
1582
+ - **Default:** `true`
1569
1583
  - **Requires restart:** Yes
1570
1584
 
1571
1585
  - **`advanced.dnsResolutionOrder`** (string):
@@ -1587,6 +1601,17 @@ their corresponding top-level category object in your `settings.json` file.
1587
1601
 
1588
1602
  #### `experimental`
1589
1603
 
1604
+ - **`experimental.adk.agentSessionNoninteractiveEnabled`** (boolean):
1605
+ - **Description:** Enable non-interactive agent sessions.
1606
+ - **Default:** `false`
1607
+ - **Requires restart:** Yes
1608
+
1609
+ - **`experimental.adk.agentSessionInteractiveEnabled`** (boolean):
1610
+ - **Description:** Enable the agent session implementation for the interactive
1611
+ CLI.
1612
+ - **Default:** `false`
1613
+ - **Requires restart:** Yes
1614
+
1590
1615
  - **`experimental.enableAgents`** (boolean):
1591
1616
  - **Description:** Enable local and remote subagents.
1592
1617
  - **Default:** `true`
@@ -1685,6 +1710,11 @@ their corresponding top-level category object in your `settings.json` file.
1685
1710
  - **Default:** `false`
1686
1711
  - **Requires restart:** Yes
1687
1712
 
1713
+ - **`experimental.generalistProfile`** (boolean):
1714
+ - **Description:** Suitable for general coding and software development tasks.
1715
+ - **Default:** `false`
1716
+ - **Requires restart:** Yes
1717
+
1688
1718
  - **`experimental.contextManagement`** (boolean):
1689
1719
  - **Description:** Enable logic for context management.
1690
1720
  - **Default:** `false`
@@ -86,13 +86,14 @@ available combinations.
86
86
 
87
87
  #### Text Input
88
88
 
89
- | Command | Action | Keys |
90
- | -------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
91
- | `input.submit` | Submit the current prompt. | `Enter` |
92
- | `input.queueMessage` | Queue the current prompt to be processed after the current task finishes. | `Tab` |
93
- | `input.newline` | Insert a newline without submitting. | `Ctrl+Enter`<br />`Cmd/Win+Enter`<br />`Alt+Enter`<br />`Shift+Enter`<br />`Ctrl+J` |
94
- | `input.openExternalEditor` | Open the current prompt or the plan in an external editor. | `Ctrl+X` |
95
- | `input.paste` | Paste from the clipboard. | `Ctrl+V`<br />`Cmd/Win+V`<br />`Alt+V` |
89
+ | Command | Action | Keys |
90
+ | ------------------------------------ | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
91
+ | `input.submit` | Submit the current prompt. | `Enter` |
92
+ | `input.queueMessage` | Queue the current prompt to be processed after the current task finishes. | `Tab` |
93
+ | `input.newline` | Insert a newline without submitting. | `Ctrl+Enter`<br />`Cmd/Win+Enter`<br />`Alt+Enter`<br />`Shift+Enter`<br />`Ctrl+J` |
94
+ | `input.openExternalEditor` | Open the current prompt or the plan in an external editor. | `Ctrl+G` |
95
+ | `input.deprecatedOpenExternalEditor` | Deprecated command to open external editor. | `Ctrl+X` |
96
+ | `input.paste` | Paste from the clipboard. | `Ctrl+V`<br />`Cmd/Win+V`<br />`Alt+V` |
96
97
 
97
98
  #### App Controls
98
99
 
@@ -100,9 +101,10 @@ available combinations.
100
101
  | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
101
102
  | `app.showErrorDetails` | Toggle detailed error information. | `F12` |
102
103
  | `app.showFullTodos` | Toggle the full TODO list. | `Ctrl+T` |
103
- | `app.showIdeContextDetail` | Show IDE context details. | `Ctrl+G` |
104
+ | `app.showIdeContextDetail` | Show IDE context details. | `F4` |
104
105
  | `app.toggleMarkdown` | Toggle Markdown rendering. | `Alt+M` |
105
- | `app.toggleCopyMode` | Toggle copy mode when in alternate buffer mode. | `Ctrl+S` |
106
+ | `app.toggleCopyMode` | Toggle copy mode when in alternate buffer mode. | `F9` |
107
+ | `app.toggleMouseMode` | Toggle mouse mode (scrolling and clicking). | `Ctrl+S` |
106
108
  | `app.toggleYolo` | Toggle YOLO (auto-approval) mode for tool calls. | `Ctrl+Y` |
107
109
  | `app.cycleApprovalMode` | Cycle through approval modes: default (prompt), auto_edit (auto-approve edits), and plan (read-only). Plan mode is skipped when the agent is busy. | `Shift+Tab` |
108
110
  | `app.showMoreLines` | Expand and collapse blocks of content when not in alternate buffer mode. | `Ctrl+O` |
@@ -126,6 +128,9 @@ available combinations.
126
128
  | `background.unfocus` | Move focus from background shell to Gemini. | `Shift+Tab` |
127
129
  | `background.unfocusList` | Move focus from background shell list to Gemini. | `Tab` |
128
130
  | `background.unfocusWarning` | Show warning when trying to move focus away from background shell. | `Tab` |
131
+ | `app.dumpFrame` | Dump the current frame as a snapshot. | `F8` |
132
+ | `app.startRecording` | Start recording the session. | `F6` |
133
+ | `app.stopRecording` | Stop recording the session. | `F7` |
129
134
 
130
135
  #### Extension Controls
131
136
 
@@ -115,10 +115,10 @@ each tool.
115
115
 
116
116
  ### Web
117
117
 
118
- | Tool | Kind | Description |
119
- | :-------------------------------------------- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
120
- | [`google_web_search`](../tools/web-search.md) | `Search` | Performs a Google Search to find up-to-date information. |
121
- | [`web_fetch`](../tools/web-fetch.md) | `Fetch` | Retrieves and processes content from specific URLs. **Warning:** This tool can access local and private network addresses (e.g., localhost), which may pose a security risk if used with untrusted prompts. |
118
+ | Tool | Kind | Description |
119
+ | :-------------------------------------------- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
120
+ | [`google_web_search`](../tools/web-search.md) | `Search` | Performs a Google Search to find up-to-date information. |
121
+ | [`web_fetch`](../tools/web-fetch.md) | `Fetch` | Retrieves and processes content from specific URLs. **Warning:** This tool can access local and private network addresses (e.g., localhost), which may pose a security risk if used with untrusted prompts. In Plan Mode, this tool requires explicit user confirmation. |
122
122
 
123
123
  ## Under the hood
124
124
 
@@ -22,12 +22,6 @@ nightly) or the release branch (for preview/stable).
22
22
 
23
23
  - **Platforms:** Tests must pass on **Linux and macOS**.
24
24
 
25
- <!-- prettier-ignore -->
26
- > [!NOTE]
27
- > Windows tests currently run with `continue-on-error: true`. While a
28
- > failure here doesn't block the release technically, it should be
29
- > investigated.
30
-
31
25
  - **Checks:**
32
26
  - **Linting:** No linting errors (ESLint, Prettier, etc.).
33
27
  - **Typechecking:** No TypeScript errors.
@@ -1,5 +1,9 @@
1
1
  # Gemini CLI releases
2
2
 
3
+ <!-- prettier-ignore -->
4
+ > [!IMPORTANT]
5
+ > **Coordinate with the Release Manager:** The release manager is responsible for coordinating patches and releases. Please update them before performing any of the release actions described in this document.
6
+
3
7
  ## `dev` vs `prod` environment
4
8
 
5
9
  Our release flows support both `dev` and `prod` environments.
@@ -290,7 +290,7 @@ When connecting to an OAuth-enabled server:
290
290
  > OAuth authentication requires that your local machine can:
291
291
  >
292
292
  > - Open a web browser for authentication
293
- > - Receive redirects on `http://localhost:7777/oauth/callback`
293
+ > - Receive redirects on `http://localhost:<random-port>/oauth/callback` (or a specific port if configured via `redirectUri`)
294
294
 
295
295
  This feature will not work in:
296
296
 
@@ -323,8 +323,8 @@ Use the `/mcp auth` command to manage OAuth authentication:
323
323
  if omitted)
324
324
  - **`tokenUrl`** (string): OAuth token endpoint (auto-discovered if omitted)
325
325
  - **`scopes`** (string[]): Required OAuth scopes
326
- - **`redirectUri`** (string): Custom redirect URI (defaults to
327
- `http://localhost:7777/oauth/callback`)
326
+ - **`redirectUri`** (string): Custom redirect URI (defaults to an OS-assigned
327
+ random port, e.g., `http://localhost:<random-port>/oauth/callback`)
328
328
  - **`tokenParamName`** (string): Query parameter name for tokens in SSE URLs
329
329
  - **`audiences`** (string[]): Audiences the token is valid for
330
330
 
@@ -17,6 +17,9 @@ specific operations like summarization or extraction.
17
17
  ## Technical behavior
18
18
 
19
19
  - **Confirmation:** Triggers a confirmation dialog showing the converted URLs.
20
+ - **Plan Mode:** In [Plan Mode](../cli/plan-mode.md), `web_fetch` is available
21
+ but always requires explicit user confirmation (`ask_user`) due to security
22
+ implications of accessing external or private network addresses.
20
23
  - **Processing:** Uses the Gemini API's `urlContext` for retrieval.
21
24
  - **Fallback:** If API access fails, the tool attempts to fetch raw content
22
25
  directly from your local machine.