Released: December 16, 2025
For most users, our latest stable release is the recommended release. Install the latest stable version with:
npm install -g @google/gemini-cli
- ⚡️⚡️⚡️ Gemini 3 Flash + Gemini CLI: If you are a paid user, you can now
enable Gemini 3 Pro and Gemini 3 Flash. Go to
/settingsand set Preview Features totrueto enable Gemini 3. For more information: Gemini 3 Flash is now available in Gemini CLI.
- refactor(stdio): always patch stdout and use createWorkingStdio for clean output by @allenhutchison in google-gemini#14159
- chore(release): bump version to 0.21.0-nightly.20251202.2d935b379 by @gemini-cli-robot in google-gemini#14409
- implement fuzzy search inside settings by @sehoon38 in google-gemini#13864
- feat: enable message bus integration by default by @allenhutchison in google-gemini#14329
- docs: Recommend using --debug intead of --verbose for CLI debugging by @bbiggs in google-gemini#14334
- feat: consolidate remote MCP servers to use
urlin config by @jackwotherspoon in google-gemini#13762 - Restrict integration tests tools by @scidomino in google-gemini#14403
- track github repository names in telemetry events by @IamRiddhi in google-gemini#13670
- Allow telemetry exporters to GCP to utilize user's login credentials, if requested by @mboshernitsan in google-gemini#13778
- refactor(editor): use const assertion for editor types with single source of truth by @amsminn in google-gemini#8604
- fix(security): Fix npm audit vulnerabilities in glob and body-parser by @afarber in google-gemini#14090
- Add new enterprise instructions by @chrstnb in google-gemini#8641
- feat(hooks): Hook Session Lifecycle & Compression Integration by @Edilmo in google-gemini#14151
- Avoid triggering refreshStatic unless there really is a banner to display. by @jacob314 in google-gemini#14328
- feat(hooks): Hooks Commands Panel, Enable/Disable, and Migrate by @Edilmo in google-gemini#14225
- fix: Bundle default policies for npx distribution by @allenhutchison in google-gemini#14457
- feat(hooks): Hook System Documentation by @Edilmo in google-gemini#14307
- Fix tests by @scidomino in google-gemini#14458
- feat: add scheduled workflow to close stale issues by @galz10 in google-gemini#14404
- feat: Support Extension Hooks with Security Warning by @abhipatel12 in google-gemini#14460
- feat: Add enableAgents experimental flag by @adamfweidman in google-gemini#14371
- docs: fix typo 'socus' to 'focus' in todos.md by @Viktor286 in google-gemini#14374
- Markdown export: move the emoji to the end of the line by @mhansen in google-gemini#12278
- fix(acp): prevent unnecessary credential cache clearing on re-authent… by @h-michael in google-gemini#9410
- fix(cli): Fix word navigation for CJK characters by @SandyTao520 in google-gemini#14475
- Remove example extension by @chrstnb in google-gemini#14376
- Add commands for listing and updating per-extension settings by @chrstnb in google-gemini#12664
- chore(tests): remove obsolete test for hierarchical memory by @pareshjoshij in google-gemini#13122
- feat(cli): support /copy in remote sessions using OSC52 by @ismellpillows in google-gemini#13471
- Update setting search UX by @Adib234 in google-gemini#14451
- Fix(cli): Improve Homebrew update instruction to specify gemini-cli by @DaanVersavel in google-gemini#14502
- do not toggle the setting item when entering space by @sehoon38 in google-gemini#14489
- fix: improve retry logic for fetch errors and network codes by @megha1188 in google-gemini#14439
- remove unused isSearching field by @sehoon38 in google-gemini#14509
- feat(mcp): add
--typealias for--transportflag in gemini mcp add by @jackwotherspoon in google-gemini#14503 - feat(cli): Move key restore logic to core by @cocosheng-g in google-gemini#13013
- feat: add auto-execute on Enter behavior to argumentless MCP prompts by @jackwotherspoon in google-gemini#14510
- fix(shell): cursor visibility when using interactive mode by @aswinashok44 in google-gemini#14095
- Adding session id as part of json o/p by @MJjainam in google-gemini#14504
- fix(extensions): resolve GitHub API 415 error for source tarballs by @jpoehnelt in google-gemini#13319
- fix(client): Correctly latch hasFailedCompressionAttempt flag by @pareshjoshij in google-gemini#13002
- Disable flaky extension reloading test on linux by @chrstnb in google-gemini#14528
- Add support for MCP dynamic tool update by
notifications/tools/list_changedby @Adib234 in google-gemini#14375 - Fix privacy screen for legacy tier users by @scidomino in google-gemini#14522
- feat: Exclude maintainer labeled issues from stale issue closer by @galz10 in google-gemini#14532
- Grant chained workflows proper permission. by @scidomino in google-gemini#14534
- Make trigger_e2e manually fireable. by @scidomino in google-gemini#14547
- Write e2e status to local repo not forked repo by @scidomino in google-gemini#14549
- Fixes [API Error: Cannot read properties of undefined (reading 'error')] by @silviojr in google-gemini#14553
- Trigger chained e2e tests on all pull requests by @scidomino in google-gemini#14551
- Fix bug in the shellExecutionService resulting in both truncation and 3X bloat by @jacob314 in google-gemini#14545
- Fix issue where we were passing the model content reflecting terminal line wrapping. by @jacob314 in google-gemini#14566
- chore/release: bump version to 0.21.0-nightly.20251204.3da4fd5f7 by @gemini-cli-robot in google-gemini#14476
- feat(sessions): use 1-line generated session summary to describe sessions by @jackwotherspoon in google-gemini#14467
- Use Robot PAT for chained e2e merge queue skipper by @scidomino in google-gemini#14585
- fix(core): improve API response error handling and retry logic by @mattKorwel in google-gemini#14563
- Docs: Model routing clarification by @jkcinouye in google-gemini#14373
- expose previewFeatures flag in a2a by @sehoon38 in google-gemini#14550
- Fix emoji width in debug console. by @jacob314 in google-gemini#14593
- Fully detach autoupgrade process by @scidomino in google-gemini#14595
- Docs: Update Gemini 3 on Gemini CLI documentation by @jkcinouye in google-gemini#14601
- Disallow floating promises. by @gundermanc in google-gemini#14605
- chore/release: bump version to 0.21.0-nightly.20251207.025e450ac by @gemini-cli-robot in google-gemini#14662
- feat(modelAvailabilityService): integrate model availability service into backend logic by @adamfweidman in google-gemini#14470
- Add prompt_id propagation in a2a-server task by @koxkox111 in google-gemini#14581
- Fix: Prevent freezing in non-interactive Gemini CLI when debug mode is enabled by @parthasaradhie in google-gemini#14580
- fix(audio): improve reading of audio files by @jackwotherspoon in google-gemini#14658
- Update automated triage workflow to stop assigning priority labels by @skeshive in google-gemini#14717
- set failed status when chained e2e fails by @scidomino in google-gemini#14725
- feat(github action) Triage and Label Pull Requests by Size and Comple… by @DaanVersavel in google-gemini#5571
- refactor(telemetry): Improve previous PR that allows telemetry to use the CLI auth and add testing by @mboshernitsan in google-gemini#14589
- Always set status in chained_e2e workflow by @scidomino in google-gemini#14730
- feat: Add OTEL log event
gemini_cli.startup_statsfor startup stats. by @kevin-ramdass in google-gemini#14734 - feat: auto-execute on slash command completion functions by @jackwotherspoon in google-gemini#14584
- Docs: Proper release notes by @jkcinouye in google-gemini#14405
- Add support for user-scoped extension settings by @chrstnb in google-gemini#13748
- refactor(core): Improve environment variable handling in shell execution by @galz10 in google-gemini#14742
- Remove old E2E Workflows by @scidomino in google-gemini#14749
- fix: handle missing local extension config and skip hooks when disabled by @abhipatel12 in google-gemini#14744
- chore/release: bump version to 0.21.0-nightly.20251209.ec9a8c7a7 by @gemini-cli-robot in google-gemini#14751
- feat: Add support for MCP Resources by @MrLesk in google-gemini#13178
- Always set pending status in E2E tests by @scidomino in google-gemini#14756
- fix(lint): upgrade pip and use public pypi for yamllint by @allenhutchison in google-gemini#14746
- fix: use Gemini API supported image formats for clipboard by @jackwotherspoon in google-gemini#14762
- feat(a2a): Introduce restore command for a2a server by @cocosheng-g in google-gemini#13015
- allow final:true to be returned on a2a server edit calls. by @DavidAPierce in google-gemini#14747
- (fix) Automated pr labeller by @DaanVersavel in google-gemini#14788
- Update CODEOWNERS by @kklashtorny1 in google-gemini#14830
- Docs: Fix errors preventing site rebuild. by @jkcinouye in google-gemini#14842
- chore(deps): bump express from 5.1.0 to 5.2.0 by @dependabot[bot] in google-gemini#14325
- fix(patch): cherry-pick 3f5f030 to release/v0.21.0-preview.0-pr-14843 to patch version v0.21.0-preview.0 and create version 0.21.0-preview.1 by @gemini-cli-robot in google-gemini#14851
- fix(patch): cherry-pick ee6556c to release/v0.21.0-preview.1-pr-14691 to patch version v0.21.0-preview.1 and create version 0.21.0-preview.2 by @gemini-cli-robot in google-gemini#14908
- fix(patch): cherry-pick 54de675 to release/v0.21.0-preview.2-pr-14961 by @gemini-cli-robot in google-gemini#14968
- fix(patch): cherry-pick 12cbe32 to release/v0.21.0-preview.3-pr-15000 to patch version v0.21.0-preview.3 and create version 0.21.0-preview.4 by @gemini-cli-robot in google-gemini#15003
- fix(patch): cherry-pick edbe548 to release/v0.21.0-preview.4-pr-15007 to patch version v0.21.0-preview.4 and create version 0.21.0-preview.5 by @gemini-cli-robot in google-gemini#15015
- fix(patch): cherry-pick 2995af6 to release/v0.21.0-preview.5-pr-15131 to patch version v0.21.0-preview.5 and create version 0.21.0-preview.6 by @gemini-cli-robot in google-gemini#15153
Full Changelog: https://github.com/google-gemini/gemini-cli/compare/v0.20.2...v0.21.0