@google/gemini-cli-core 0.22.0 → 0.23.0-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/dist/docs/CONTRIBUTING.md +546 -0
  2. package/dist/docs/architecture.md +80 -0
  3. package/dist/docs/assets/connected_devtools.png +0 -0
  4. package/dist/docs/assets/gemini-screenshot.png +0 -0
  5. package/dist/docs/assets/release_patch.png +0 -0
  6. package/dist/docs/assets/theme-ansi-light.png +0 -0
  7. package/dist/docs/assets/theme-ansi.png +0 -0
  8. package/dist/docs/assets/theme-atom-one.png +0 -0
  9. package/dist/docs/assets/theme-ayu-light.png +0 -0
  10. package/dist/docs/assets/theme-ayu.png +0 -0
  11. package/dist/docs/assets/theme-custom.png +0 -0
  12. package/dist/docs/assets/theme-default-light.png +0 -0
  13. package/dist/docs/assets/theme-default.png +0 -0
  14. package/dist/docs/assets/theme-dracula.png +0 -0
  15. package/dist/docs/assets/theme-github-light.png +0 -0
  16. package/dist/docs/assets/theme-github.png +0 -0
  17. package/dist/docs/assets/theme-google-light.png +0 -0
  18. package/dist/docs/assets/theme-xcode-light.png +0 -0
  19. package/dist/docs/changelogs/index.md +592 -0
  20. package/dist/docs/changelogs/latest.md +225 -0
  21. package/dist/docs/changelogs/preview.md +129 -0
  22. package/dist/docs/changelogs/releases.md +896 -0
  23. package/dist/docs/cli/authentication.md +3 -0
  24. package/dist/docs/cli/checkpointing.md +94 -0
  25. package/dist/docs/cli/commands.md +354 -0
  26. package/dist/docs/cli/configuration.md +780 -0
  27. package/dist/docs/cli/custom-commands.md +315 -0
  28. package/dist/docs/cli/enterprise.md +565 -0
  29. package/dist/docs/cli/gemini-ignore.md +71 -0
  30. package/dist/docs/cli/gemini-md.md +108 -0
  31. package/dist/docs/cli/generation-settings.md +210 -0
  32. package/dist/docs/cli/headless.md +388 -0
  33. package/dist/docs/cli/index.md +63 -0
  34. package/dist/docs/cli/keyboard-shortcuts.md +143 -0
  35. package/dist/docs/cli/model-routing.md +37 -0
  36. package/dist/docs/cli/model.md +62 -0
  37. package/dist/docs/cli/sandbox.md +171 -0
  38. package/dist/docs/cli/session-management.md +158 -0
  39. package/dist/docs/cli/settings.md +112 -0
  40. package/dist/docs/cli/system-prompt.md +93 -0
  41. package/dist/docs/cli/telemetry.md +791 -0
  42. package/dist/docs/cli/themes.md +237 -0
  43. package/dist/docs/cli/token-caching.md +20 -0
  44. package/dist/docs/cli/trusted-folders.md +95 -0
  45. package/dist/docs/cli/tutorials.md +83 -0
  46. package/dist/docs/cli/uninstall.md +47 -0
  47. package/dist/docs/core/index.md +101 -0
  48. package/dist/docs/core/memport.md +244 -0
  49. package/dist/docs/core/policy-engine.md +267 -0
  50. package/dist/docs/core/tools-api.md +131 -0
  51. package/dist/docs/examples/proxy-script.md +83 -0
  52. package/dist/docs/extensions/extension-releasing.md +183 -0
  53. package/dist/docs/extensions/getting-started-extensions.md +245 -0
  54. package/dist/docs/extensions/index.md +293 -0
  55. package/dist/docs/faq.md +154 -0
  56. package/dist/docs/get-started/authentication.md +321 -0
  57. package/dist/docs/get-started/configuration-v1.md +888 -0
  58. package/dist/docs/get-started/configuration.md +1444 -0
  59. package/dist/docs/get-started/deployment.md +143 -0
  60. package/dist/docs/get-started/examples.md +219 -0
  61. package/dist/docs/get-started/gemini-3.md +116 -0
  62. package/dist/docs/get-started/index.md +71 -0
  63. package/dist/docs/get-started/installation.md +141 -0
  64. package/dist/docs/hooks/best-practices.md +806 -0
  65. package/dist/docs/hooks/index.md +665 -0
  66. package/dist/docs/hooks/reference.md +168 -0
  67. package/dist/docs/hooks/writing-hooks.md +1026 -0
  68. package/dist/docs/ide-integration/ide-companion-spec.md +267 -0
  69. package/dist/docs/ide-integration/index.md +202 -0
  70. package/dist/docs/index.md +147 -0
  71. package/dist/docs/integration-tests.md +211 -0
  72. package/dist/docs/issue-and-pr-automation.md +134 -0
  73. package/dist/docs/local-development.md +128 -0
  74. package/dist/docs/mermaid/context.mmd +103 -0
  75. package/dist/docs/mermaid/render-path.mmd +64 -0
  76. package/dist/docs/npm.md +62 -0
  77. package/dist/docs/quota-and-pricing.md +158 -0
  78. package/dist/docs/release-confidence.md +164 -0
  79. package/dist/docs/releases.md +540 -0
  80. package/dist/docs/sidebar.json +297 -0
  81. package/dist/docs/tools/file-system.md +217 -0
  82. package/dist/docs/tools/index.md +95 -0
  83. package/dist/docs/tools/mcp-server.md +1044 -0
  84. package/dist/docs/tools/memory.md +54 -0
  85. package/dist/docs/tools/shell.md +260 -0
  86. package/dist/docs/tools/todos.md +57 -0
  87. package/dist/docs/tools/web-fetch.md +59 -0
  88. package/dist/docs/tools/web-search.md +42 -0
  89. package/dist/docs/tos-privacy.md +96 -0
  90. package/dist/docs/troubleshooting.md +158 -0
  91. package/dist/src/agents/codebase-investigator.d.ts +2 -2
  92. package/dist/src/agents/codebase-investigator.js +4 -3
  93. package/dist/src/agents/codebase-investigator.js.map +1 -1
  94. package/dist/src/agents/delegate-to-agent-tool.js +8 -4
  95. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -1
  96. package/dist/src/agents/delegate-to-agent-tool.test.js +6 -4
  97. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -1
  98. package/dist/src/agents/introspection-agent.d.ts +23 -0
  99. package/dist/src/agents/introspection-agent.js +72 -0
  100. package/dist/src/agents/introspection-agent.js.map +1 -0
  101. package/dist/src/agents/introspection-agent.test.js +47 -0
  102. package/dist/src/agents/introspection-agent.test.js.map +1 -0
  103. package/dist/src/agents/{executor.d.ts → local-executor.d.ts} +5 -11
  104. package/dist/src/agents/{executor.js → local-executor.js} +79 -53
  105. package/dist/src/agents/local-executor.js.map +1 -0
  106. package/dist/src/agents/{executor.test.js → local-executor.test.js} +64 -45
  107. package/dist/src/agents/local-executor.test.js.map +1 -0
  108. package/dist/src/agents/{invocation.d.ts → local-invocation.d.ts} +5 -6
  109. package/dist/src/agents/{invocation.js → local-invocation.js} +8 -9
  110. package/dist/src/agents/local-invocation.js.map +1 -0
  111. package/dist/src/agents/local-invocation.test.d.ts +6 -0
  112. package/dist/src/agents/{invocation.test.js → local-invocation.test.js} +18 -17
  113. package/dist/src/agents/local-invocation.test.js.map +1 -0
  114. package/dist/src/agents/registry.d.ts +1 -0
  115. package/dist/src/agents/registry.js +68 -20
  116. package/dist/src/agents/registry.js.map +1 -1
  117. package/dist/src/agents/registry.test.js +113 -1
  118. package/dist/src/agents/registry.test.js.map +1 -1
  119. package/dist/src/agents/remote-invocation.d.ts +21 -0
  120. package/dist/src/agents/remote-invocation.js +31 -0
  121. package/dist/src/agents/remote-invocation.js.map +1 -0
  122. package/dist/src/agents/remote-invocation.test.d.ts +6 -0
  123. package/dist/src/agents/remote-invocation.test.js +35 -0
  124. package/dist/src/agents/remote-invocation.test.js.map +1 -0
  125. package/dist/src/agents/subagent-tool-wrapper.js +7 -3
  126. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  127. package/dist/src/agents/subagent-tool-wrapper.test.js +10 -9
  128. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  129. package/dist/src/agents/toml-loader.d.ts +65 -0
  130. package/dist/src/agents/toml-loader.js +176 -0
  131. package/dist/src/agents/toml-loader.js.map +1 -0
  132. package/dist/src/agents/toml-loader.test.d.ts +6 -0
  133. package/dist/src/agents/toml-loader.test.js +190 -0
  134. package/dist/src/agents/toml-loader.test.js.map +1 -0
  135. package/dist/src/agents/types.d.ts +12 -4
  136. package/dist/src/availability/modelAvailabilityService.d.ts +2 -1
  137. package/dist/src/availability/policyHelpers.d.ts +4 -3
  138. package/dist/src/availability/policyHelpers.js +13 -20
  139. package/dist/src/availability/policyHelpers.js.map +1 -1
  140. package/dist/src/availability/policyHelpers.test.js +28 -18
  141. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  142. package/dist/src/code_assist/oauth2.js +1 -1
  143. package/dist/src/code_assist/oauth2.js.map +1 -1
  144. package/dist/src/code_assist/oauth2.test.js +6 -8
  145. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  146. package/dist/src/code_assist/server.d.ts +4 -1
  147. package/dist/src/code_assist/server.js +50 -7
  148. package/dist/src/code_assist/server.js.map +1 -1
  149. package/dist/src/code_assist/server.test.js +177 -27
  150. package/dist/src/code_assist/server.test.js.map +1 -1
  151. package/dist/src/code_assist/telemetry.d.ts +14 -0
  152. package/dist/src/code_assist/telemetry.js +156 -0
  153. package/dist/src/code_assist/telemetry.js.map +1 -0
  154. package/dist/src/code_assist/telemetry.test.d.ts +6 -0
  155. package/dist/src/code_assist/telemetry.test.js +300 -0
  156. package/dist/src/code_assist/telemetry.test.js.map +1 -0
  157. package/dist/src/code_assist/types.d.ts +52 -1
  158. package/dist/src/code_assist/types.js +21 -0
  159. package/dist/src/code_assist/types.js.map +1 -1
  160. package/dist/src/config/config.d.ts +10 -13
  161. package/dist/src/config/config.js +32 -32
  162. package/dist/src/config/config.js.map +1 -1
  163. package/dist/src/config/config.test.js +72 -19
  164. package/dist/src/config/config.test.js.map +1 -1
  165. package/dist/src/config/flashFallback.test.js +0 -37
  166. package/dist/src/config/flashFallback.test.js.map +1 -1
  167. package/dist/src/config/storage.d.ts +2 -0
  168. package/dist/src/config/storage.js +6 -0
  169. package/dist/src/config/storage.js.map +1 -1
  170. package/dist/src/config/storage.test.js +8 -0
  171. package/dist/src/config/storage.test.js.map +1 -1
  172. package/dist/src/core/baseLlmClient.js +44 -43
  173. package/dist/src/core/baseLlmClient.js.map +1 -1
  174. package/dist/src/core/baseLlmClient.test.js +12 -19
  175. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  176. package/dist/src/core/client.js +23 -35
  177. package/dist/src/core/client.js.map +1 -1
  178. package/dist/src/core/client.test.js +32 -65
  179. package/dist/src/core/client.test.js.map +1 -1
  180. package/dist/src/core/clientHookTriggers.js +2 -2
  181. package/dist/src/core/clientHookTriggers.js.map +1 -1
  182. package/dist/src/core/contentGenerator.test.js +0 -6
  183. package/dist/src/core/contentGenerator.test.js.map +1 -1
  184. package/dist/src/core/coreToolHookTriggers.js +3 -3
  185. package/dist/src/core/coreToolHookTriggers.js.map +1 -1
  186. package/dist/src/core/geminiChat.js +21 -71
  187. package/dist/src/core/geminiChat.js.map +1 -1
  188. package/dist/src/core/geminiChat.test.js +16 -92
  189. package/dist/src/core/geminiChat.test.js.map +1 -1
  190. package/dist/src/core/geminiChatHookTriggers.js +3 -3
  191. package/dist/src/core/geminiChatHookTriggers.js.map +1 -1
  192. package/dist/src/core/geminiChat_network_retry.test.js +4 -6
  193. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  194. package/dist/src/core/prompts.test.js +0 -2
  195. package/dist/src/core/prompts.test.js.map +1 -1
  196. package/dist/src/core/sessionHookTriggers.js +3 -3
  197. package/dist/src/core/sessionHookTriggers.js.map +1 -1
  198. package/dist/src/core/turn.d.ts +1 -0
  199. package/dist/src/core/turn.js +4 -12
  200. package/dist/src/core/turn.js.map +1 -1
  201. package/dist/src/core/turn.test.js +0 -5
  202. package/dist/src/core/turn.test.js.map +1 -1
  203. package/dist/src/fallback/handler.test.js +0 -21
  204. package/dist/src/fallback/handler.test.js.map +1 -1
  205. package/dist/src/generated/git-commit.d.ts +2 -2
  206. package/dist/src/generated/git-commit.js +2 -2
  207. package/dist/src/generated/git-commit.js.map +1 -1
  208. package/dist/src/hooks/hookEventHandler.js +10 -4
  209. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  210. package/dist/src/hooks/hookEventHandler.test.js +47 -0
  211. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  212. package/dist/src/hooks/hookPlanner.js +3 -1
  213. package/dist/src/hooks/hookPlanner.js.map +1 -1
  214. package/dist/src/hooks/hookPlanner.test.js +61 -0
  215. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  216. package/dist/src/hooks/hookRegistry.d.ts +1 -1
  217. package/dist/src/hooks/hookRegistry.js +2 -2
  218. package/dist/src/hooks/hookRegistry.js.map +1 -1
  219. package/dist/src/hooks/hookRegistry.test.js +73 -0
  220. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  221. package/dist/src/hooks/hookRunner.js +14 -10
  222. package/dist/src/hooks/hookRunner.js.map +1 -1
  223. package/dist/src/hooks/hookRunner.test.js +81 -33
  224. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  225. package/dist/src/hooks/types.d.ts +2 -0
  226. package/dist/src/hooks/types.js.map +1 -1
  227. package/dist/src/index.d.ts +2 -0
  228. package/dist/src/index.js +2 -0
  229. package/dist/src/index.js.map +1 -1
  230. package/dist/src/mcp/oauth-provider.js +6 -2
  231. package/dist/src/mcp/oauth-provider.js.map +1 -1
  232. package/dist/src/mcp/oauth-provider.test.js +4 -1
  233. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  234. package/dist/src/mcp/oauth-utils.d.ts +8 -1
  235. package/dist/src/mcp/oauth-utils.js +30 -1
  236. package/dist/src/mcp/oauth-utils.js.map +1 -1
  237. package/dist/src/mcp/oauth-utils.test.js +42 -0
  238. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  239. package/dist/src/routing/strategies/fallbackStrategy.js +0 -3
  240. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  241. package/dist/src/routing/strategies/fallbackStrategy.test.js +0 -6
  242. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  243. package/dist/src/services/contextManager.d.ts +5 -11
  244. package/dist/src/services/contextManager.js +20 -17
  245. package/dist/src/services/contextManager.js.map +1 -1
  246. package/dist/src/services/contextManager.test.js +40 -41
  247. package/dist/src/services/contextManager.test.js.map +1 -1
  248. package/dist/src/services/loopDetectionService.js +2 -1
  249. package/dist/src/services/loopDetectionService.js.map +1 -1
  250. package/dist/src/services/loopDetectionService.test.js +14 -8
  251. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  252. package/dist/src/services/modelConfig.integration.test.js +1 -1
  253. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  254. package/dist/src/services/shellExecutionService.js +18 -2
  255. package/dist/src/services/shellExecutionService.js.map +1 -1
  256. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +4 -2
  257. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +25 -0
  258. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  259. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +32 -1
  260. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  261. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
  262. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +12 -1
  263. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  264. package/dist/src/telemetry/loggers.js +1 -0
  265. package/dist/src/telemetry/loggers.js.map +1 -1
  266. package/dist/src/telemetry/loggers.test.js +37 -2
  267. package/dist/src/telemetry/loggers.test.js.map +1 -1
  268. package/dist/src/telemetry/sdk.js +2 -2
  269. package/dist/src/telemetry/sdk.js.map +1 -1
  270. package/dist/src/tools/confirmation-policy.test.d.ts +6 -0
  271. package/dist/src/tools/confirmation-policy.test.js +152 -0
  272. package/dist/src/tools/confirmation-policy.test.js.map +1 -0
  273. package/dist/src/tools/edit.js +5 -1
  274. package/dist/src/tools/edit.js.map +1 -1
  275. package/dist/src/tools/get-internal-docs.d.ts +27 -0
  276. package/dist/src/tools/get-internal-docs.js +129 -0
  277. package/dist/src/tools/get-internal-docs.js.map +1 -0
  278. package/dist/src/tools/get-internal-docs.test.d.ts +6 -0
  279. package/dist/src/tools/get-internal-docs.test.js +56 -0
  280. package/dist/src/tools/get-internal-docs.test.js.map +1 -0
  281. package/dist/src/tools/ripGrep.d.ts +1 -0
  282. package/dist/src/tools/ripGrep.js +16 -4
  283. package/dist/src/tools/ripGrep.js.map +1 -1
  284. package/dist/src/tools/ripGrep.test.js +55 -0
  285. package/dist/src/tools/ripGrep.test.js.map +1 -1
  286. package/dist/src/tools/smart-edit.js +5 -1
  287. package/dist/src/tools/smart-edit.js.map +1 -1
  288. package/dist/src/tools/tool-names.d.ts +14 -0
  289. package/dist/src/tools/tool-names.js +55 -0
  290. package/dist/src/tools/tool-names.js.map +1 -1
  291. package/dist/src/tools/tool-names.test.d.ts +6 -0
  292. package/dist/src/tools/tool-names.test.js +43 -0
  293. package/dist/src/tools/tool-names.test.js.map +1 -0
  294. package/dist/src/tools/tool-registry.d.ts +0 -1
  295. package/dist/src/tools/tool-registry.js +1 -1
  296. package/dist/src/tools/tool-registry.js.map +1 -1
  297. package/dist/src/tools/tool-registry.test.js +2 -1
  298. package/dist/src/tools/tool-registry.test.js.map +1 -1
  299. package/dist/src/tools/web-fetch.js +5 -1
  300. package/dist/src/tools/web-fetch.js.map +1 -1
  301. package/dist/src/tools/write-file.js +5 -1
  302. package/dist/src/tools/write-file.js.map +1 -1
  303. package/dist/src/utils/checkpointUtils.js +1 -1
  304. package/dist/src/utils/checkpointUtils.js.map +1 -1
  305. package/dist/src/utils/checkpointUtils.test.js +1 -1
  306. package/dist/src/utils/checkpointUtils.test.js.map +1 -1
  307. package/dist/src/utils/editCorrector.js +1 -1
  308. package/dist/src/utils/editCorrector.js.map +1 -1
  309. package/dist/src/utils/editCorrector.test.js +2 -2
  310. package/dist/src/utils/editCorrector.test.js.map +1 -1
  311. package/dist/src/utils/environmentContext.d.ts +1 -0
  312. package/dist/src/utils/environmentContext.js +4 -0
  313. package/dist/src/utils/environmentContext.js.map +1 -1
  314. package/dist/src/utils/environmentContext.test.js +2 -0
  315. package/dist/src/utils/environmentContext.test.js.map +1 -1
  316. package/dist/src/utils/events.d.ts +3 -18
  317. package/dist/src/utils/events.js +0 -9
  318. package/dist/src/utils/events.js.map +1 -1
  319. package/dist/src/utils/geminiIgnoreParser.d.ts +11 -0
  320. package/dist/src/utils/geminiIgnoreParser.js +20 -0
  321. package/dist/src/utils/geminiIgnoreParser.js.map +1 -1
  322. package/dist/src/utils/geminiIgnoreParser.test.js +48 -0
  323. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -1
  324. package/dist/src/utils/generateContentResponseUtilities.d.ts +1 -0
  325. package/dist/src/utils/generateContentResponseUtilities.js +10 -0
  326. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  327. package/dist/src/utils/generateContentResponseUtilities.test.js +59 -2
  328. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  329. package/dist/src/utils/memoryDiscovery.js +1 -1
  330. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  331. package/dist/src/utils/memoryDiscovery.test.js +3 -1
  332. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  333. package/dist/src/utils/shell-utils.js +25 -4
  334. package/dist/src/utils/shell-utils.js.map +1 -1
  335. package/dist/tsconfig.tsbuildinfo +1 -1
  336. package/package.json +1 -6
  337. package/dist/src/agents/executor.js.map +0 -1
  338. package/dist/src/agents/executor.test.js.map +0 -1
  339. package/dist/src/agents/invocation.js.map +0 -1
  340. package/dist/src/agents/invocation.test.js.map +0 -1
  341. /package/dist/src/agents/{executor.test.d.ts → introspection-agent.test.d.ts} +0 -0
  342. /package/dist/src/agents/{invocation.test.d.ts → local-executor.test.d.ts} +0 -0
@@ -0,0 +1,321 @@
1
+ # Gemini CLI authentication setup
2
+
3
+ To use Gemini CLI, you'll need to authenticate with Google. This guide helps you
4
+ quickly find the best way to sign in based on your account type and how you're
5
+ using the CLI.
6
+
7
+ For most users, we recommend starting Gemini CLI and logging in with your
8
+ personal Google account.
9
+
10
+ ## Choose your authentication method <a id="auth-methods"></a>
11
+
12
+ Select the authentication method that matches your situation in the table below:
13
+
14
+ | User Type / Scenario | Recommended Authentication Method | Google Cloud Project Required |
15
+ | :--------------------------------------------------------------------- | :--------------------------------------------------------------- | :---------------------------------------------------------- |
16
+ | Individual Google accounts | [Login with Google](#login-google) | No, with exceptions |
17
+ | Organization users with a company, school, or Google Workspace account | [Login with Google](#login-google) | [Yes](#set-gcp) |
18
+ | AI Studio user with a Gemini API key | [Use Gemini API Key](#gemini-api) | No |
19
+ | Google Cloud Vertex AI user | [Vertex AI](#vertex-ai) | [Yes](#set-gcp) |
20
+ | [Headless mode](#headless) | [Use Gemini API Key](#gemini-api) or<br> [Vertex AI](#vertex-ai) | No (for Gemini API Key)<br> [Yes](#set-gcp) (for Vertex AI) |
21
+
22
+ ### What is my Google account type?
23
+
24
+ - **Individual Google accounts:** Includes all
25
+ [free tier accounts](../quota-and-pricing/#free-usage) such as Gemini Code
26
+ Assist for individuals, as well as paid subscriptions for
27
+ [Google AI Pro and Ultra](https://gemini.google/subscriptions/).
28
+
29
+ - **Organization accounts:** Accounts using paid licenses through an
30
+ organization such as a company, school, or
31
+ [Google Workspace](https://workspace.google.com/). Includes
32
+ [Google AI Ultra for Business](https://support.google.com/a/answer/16345165)
33
+ subscriptions.
34
+
35
+ ## (Recommended) Login with Google <a id="login-google"></a>
36
+
37
+ If you run Gemini CLI on your local machine, the simplest authentication method
38
+ is logging in with your Google account. This method requires a web browser on a
39
+ machine that can communicate with the terminal running Gemini CLI (e.g., your
40
+ local machine).
41
+
42
+ > **Important:** If you are a **Google AI Pro** or **Google AI Ultra**
43
+ > subscriber, use the Google account associated with your subscription.
44
+
45
+ To authenticate and use Gemini CLI:
46
+
47
+ 1. Start the CLI:
48
+
49
+ ```bash
50
+ gemini
51
+ ```
52
+
53
+ 2. Select **Login with Google**. Gemini CLI opens a login prompt using your web
54
+ browser. Follow the on-screen instructions. Your credentials will be cached
55
+ locally for future sessions.
56
+
57
+ ### Do I need to set my Google Cloud project?
58
+
59
+ Most individual Google accounts (free and paid) don't require a Google Cloud
60
+ project for authentication. However, you'll need to set a Google Cloud project
61
+ when you meet at least one of the following conditions:
62
+
63
+ - You are using a company, school, or Google Workspace account.
64
+ - You are using a Gemini Code Assist license from the Google Developer Program.
65
+ - You are using a license from a Gemini Code Assist subscription.
66
+
67
+ For instructions, see [Set your Google Cloud Project](#set-gcp).
68
+
69
+ ## Use Gemini API key <a id="gemini-api"></a>
70
+
71
+ If you don't want to authenticate using your Google account, you can use an API
72
+ key from Google AI Studio.
73
+
74
+ To authenticate and use Gemini CLI with a Gemini API key:
75
+
76
+ 1. Obtain your API key from
77
+ [Google AI Studio](https://aistudio.google.com/app/apikey).
78
+
79
+ 2. Set the `GEMINI_API_KEY` environment variable to your key. For example:
80
+
81
+ ```bash
82
+ # Replace YOUR_GEMINI_API_KEY with the key from AI Studio
83
+ export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
84
+ ```
85
+
86
+ To make this setting persistent, see
87
+ [Persisting Environment Variables](#persisting-vars).
88
+
89
+ 3. Start the CLI:
90
+
91
+ ```bash
92
+ gemini
93
+ ```
94
+
95
+ 4. Select **Use Gemini API key**.
96
+
97
+ > **Warning:** Treat API keys, especially for services like Gemini, as sensitive
98
+ > credentials. Protect them to prevent unauthorized access and potential misuse
99
+ > of the service under your account.
100
+
101
+ ## Use Vertex AI <a id="vertex-ai"></a>
102
+
103
+ To use Gemini CLI with Google Cloud's Vertex AI platform, choose from the
104
+ following authentication options:
105
+
106
+ - A. Application Default Credentials (ADC) using `gcloud`.
107
+ - B. Service account JSON key.
108
+ - C. Google Cloud API key.
109
+
110
+ Regardless of your authentication method for Vertex AI, you'll need to set
111
+ `GOOGLE_CLOUD_PROJECT` to your Google Cloud project ID with the Vertex AI API
112
+ enabled, and `GOOGLE_CLOUD_LOCATION` to the location of your Vertex AI resources
113
+ or the location where you want to run your jobs.
114
+
115
+ For example:
116
+
117
+ ```bash
118
+ # Replace with your project ID and desired location (e.g., us-central1)
119
+ export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
120
+ export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"
121
+ ```
122
+
123
+ To make any Vertex AI environment variable settings persistent, see
124
+ [Persisting Environment Variables](#persisting-vars).
125
+
126
+ #### A. Vertex AI - application default credentials (ADC) using `gcloud`
127
+
128
+ Consider this authentication method if you have Google Cloud CLI installed.
129
+
130
+ > **Note:** If you have previously set `GOOGLE_API_KEY` or `GEMINI_API_KEY`, you
131
+ > must unset them to use ADC:
132
+ >
133
+ > ```bash
134
+ > unset GOOGLE_API_KEY GEMINI_API_KEY
135
+ > ```
136
+
137
+ 1. Verify you have a Google Cloud project and Vertex AI API is enabled.
138
+
139
+ 2. Log in to Google Cloud:
140
+
141
+ ```bash
142
+ gcloud auth application-default login
143
+ ```
144
+
145
+ 3. [Configure your Google Cloud Project](#set-gcp).
146
+
147
+ 4. Start the CLI:
148
+
149
+ ```bash
150
+ gemini
151
+ ```
152
+
153
+ 5. Select **Vertex AI**.
154
+
155
+ #### B. Vertex AI - service account JSON key
156
+
157
+ Consider this method of authentication in non-interactive environments, CI/CD
158
+ pipelines, or if your organization restricts user-based ADC or API key creation.
159
+
160
+ > **Note:** If you have previously set `GOOGLE_API_KEY` or `GEMINI_API_KEY`, you
161
+ > must unset them:
162
+ >
163
+ > ```bash
164
+ > unset GOOGLE_API_KEY GEMINI_API_KEY
165
+ > ```
166
+
167
+ 1. [Create a service account and key](https://cloud.google.com/iam/docs/keys-create-delete)
168
+ and download the provided JSON file. Assign the "Vertex AI User" role to the
169
+ service account.
170
+
171
+ 2. Set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable to the JSON
172
+ file's absolute path. For example:
173
+
174
+ ```bash
175
+ # Replace /path/to/your/keyfile.json with the actual path
176
+ export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/keyfile.json"
177
+ ```
178
+
179
+ 3. [Configure your Google Cloud Project](#set-gcp).
180
+
181
+ 4. Start the CLI:
182
+
183
+ ```bash
184
+ gemini
185
+ ```
186
+
187
+ 5. Select **Vertex AI**.
188
+ > **Warning:** Protect your service account key file as it gives access to
189
+ > your resources.
190
+
191
+ #### C. Vertex AI - Google Cloud API key
192
+
193
+ 1. Obtain a Google Cloud API key:
194
+ [Get an API Key](https://cloud.google.com/vertex-ai/generative-ai/docs/start/api-keys?usertype=newuser).
195
+
196
+ 2. Set the `GOOGLE_API_KEY` environment variable:
197
+
198
+ ```bash
199
+ # Replace YOUR_GOOGLE_API_KEY with your Vertex AI API key
200
+ export GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY"
201
+ ```
202
+
203
+ > **Note:** If you see errors like
204
+ > `"API keys are not supported by this API..."`, your organization might
205
+ > restrict API key usage for this service. Try the other Vertex AI
206
+ > authentication methods instead.
207
+
208
+ 3. [Configure your Google Cloud Project](#set-gcp).
209
+
210
+ 4. Start the CLI:
211
+
212
+ ```bash
213
+ gemini
214
+ ```
215
+
216
+ 5. Select **Vertex AI**.
217
+
218
+ ## Set your Google Cloud project <a id="set-gcp"></a>
219
+
220
+ > **Important:** Most individual Google accounts (free and paid) don't require a
221
+ > Google Cloud project for authentication.
222
+
223
+ When you sign in using your Google account, you may need to configure a Google
224
+ Cloud project for Gemini CLI to use. This applies when you meet at least one of
225
+ the following conditions:
226
+
227
+ - You are using a Company, School, or Google Workspace account.
228
+ - You are using a Gemini Code Assist license from the Google Developer Program.
229
+ - You are using a license from a Gemini Code Assist subscription.
230
+
231
+ To configure Gemini CLI to use a Google Cloud project, do the following:
232
+
233
+ 1. [Find your Google Cloud Project ID](https://support.google.com/googleapi/answer/7014113).
234
+
235
+ 2. [Enable the Gemini for Cloud API](https://cloud.google.com/gemini/docs/discover/set-up-gemini#enable-api).
236
+
237
+ 3. [Configure necessary IAM access permissions](https://cloud.google.com/gemini/docs/discover/set-up-gemini#grant-iam).
238
+
239
+ 4. Configure your environment variables. Set either the `GOOGLE_CLOUD_PROJECT`
240
+ or `GOOGLE_CLOUD_PROJECT_ID` variable to the project ID to use with Gemini
241
+ CLI. Gemini CLI checks for `GOOGLE_CLOUD_PROJECT` first, then falls back to
242
+ `GOOGLE_CLOUD_PROJECT_ID`.
243
+
244
+ For example, to set the `GOOGLE_CLOUD_PROJECT_ID` variable:
245
+
246
+ ```bash
247
+ # Replace YOUR_PROJECT_ID with your actual Google Cloud project ID
248
+ export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
249
+ ```
250
+
251
+ To make this setting persistent, see
252
+ [Persisting Environment Variables](#persisting-vars).
253
+
254
+ ## Persisting environment variables <a id="persisting-vars"></a>
255
+
256
+ To avoid setting environment variables for every terminal session, you can
257
+ persist them with the following methods:
258
+
259
+ 1. **Add your environment variables to your shell configuration file:** Append
260
+ the `export ...` commands to your shell's startup file (e.g., `~/.bashrc`,
261
+ `~/.zshrc`, or `~/.profile`) and reload your shell (e.g.,
262
+ `source ~/.bashrc`).
263
+
264
+ ```bash
265
+ # Example for .bashrc
266
+ echo 'export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"' >> ~/.bashrc
267
+ source ~/.bashrc
268
+ ```
269
+
270
+ > **Warning:** Be aware that when you export API keys or service account
271
+ > paths in your shell configuration file, any process launched from that
272
+ > shell can read them.
273
+
274
+ 2. **Use a `.env` file:** Create a `.gemini/.env` file in your project
275
+ directory or home directory. Gemini CLI automatically loads variables from
276
+ the first `.env` file it finds, searching up from the current directory,
277
+ then in `~/.gemini/.env` or `~/.env`. `.gemini/.env` is recommended.
278
+
279
+ Example for user-wide settings:
280
+
281
+ ```bash
282
+ mkdir -p ~/.gemini
283
+ cat >> ~/.gemini/.env <<'EOF'
284
+ GOOGLE_CLOUD_PROJECT="your-project-id"
285
+ # Add other variables like GEMINI_API_KEY as needed
286
+ EOF
287
+ ```
288
+
289
+ Variables are loaded from the first file found, not merged.
290
+
291
+ ## Running in Google Cloud environments <a id="cloud-env"></a>
292
+
293
+ When running Gemini CLI within certain Google Cloud environments, authentication
294
+ is automatic.
295
+
296
+ In a Google Cloud Shell environment, Gemini CLI typically authenticates
297
+ automatically using your Cloud Shell credentials. In Compute Engine
298
+ environments, Gemini CLI automatically uses Application Default Credentials
299
+ (ADC) from the environment's metadata server.
300
+
301
+ If automatic authentication fails, use one of the interactive methods described
302
+ on this page.
303
+
304
+ ## Running in headless mode <a id="headless"></a>
305
+
306
+ [Headless mode](../cli/headless) will use your existing authentication method,
307
+ if an existing authentication credential is cached.
308
+
309
+ If you have not already logged in with an authentication credential, you must
310
+ configure authentication using environment variables:
311
+
312
+ - [Use Gemini API Key](#gemini-api)
313
+ - [Vertex AI](#vertex-ai)
314
+
315
+ ## What's next?
316
+
317
+ Your authentication method affects your quotas, pricing, Terms of Service, and
318
+ privacy notices. Review the following pages to learn more:
319
+
320
+ - [Gemini CLI: Quotas and Pricing](../quota-and-pricing.md).
321
+ - [Gemini CLI: Terms of Service and Privacy Notice](../tos-privacy.md).