Back
AI summary
Written by AI from the official notes. Check them for exact details.Gemini CLI 0.31.0 introduces 51 new features and fixes 54 bugs, enhancing functionality and performance.
- Added support for macOS run-event notifications
- Improved folder trust with configuration discovery
- Introduced experimental direct web fetch
- Enhanced CLI with new shortcuts and commands
- Implemented project-level policy support
Why it matters: Users of Gemini CLI should review these updates for improved functionality and security enhancements.
Full release notes188 changes
What's Changed
- Use ranged reads and limited searches and fuzzy editing improvements
- Fix bottom border color
- Release note generator fix
- test(evals): add behavioral tests for tool output masking
- docs: clarify preflight instructions in GEMINI.md
- feat(cli): add gemini --resume hint on exit
- fix: optimize height calculations for ask_user dialog
- feat(cli): add Alt+D for forward word deletion
- Disable failing eval test
- fix(cli): support legacy onConfirm callback in ToolActionsContext
- chore(deps): bump tar from 7.5.7 to 7.5.8 by @dependabot[bot] in https://github.com/google-gemini/gemini-cli/pull/19367
- fix(plan): allow safe fallback when experiment setting for plan is not enabled but approval mode at startup is plan
- Add explicit color-convert dependency
- feat(devtools): migrate devtools package into monorepo
- fix(core): clarify plan mode constraints and exit mechanism
- feat(cli): add macOS run-event notifications (interactive only)
- Changelog for v0.29.0
- fix(ui): preventing empty history items from being added
- Changelog for v0.30.0-preview.0
- feat(core): add support for MCP progress updates
- fix(core): ensure directory exists before writing conversation file
- fix(ui): move margin from top to bottom in ToolGroupMessage
- fix(cli): treat unknown slash commands as regular input instead of showing error
- feat(core): experimental in-progress steering hints (2 of 2)
- docs(plan): add documentation for plan mode command
- fix(core): ripgrep fails when pattern looks like ripgrep flag
- fix(cli): disable auto-completion on Shift+Tab to preserve mode cycling
- use issuer instead of authorization_endpoint for oauth discovery
- feat(cli): include
/dir adddirectories in @ autocomplete suggestions - feat(admin): Admin settings should only apply if adminControlsApplicable = true and fetch errors should be fatal
- Format strict-development-rules command
- feat(core): centralize compatibility checks and add TrueColor detection
- Remove unused files and update index and sidebar.
- Migrate core render util to use xterm.js as part of the rendering loop.
- Changelog for v0.30.0-preview.1
- build: replace deprecated built-in punycode with userland package
- Speculative fixes to try to fix react error.
- fix spacing
- fix(core): ensure user rejections update tool outcome for telemetry
- fix(acp): Initialize config (#18897)
- fix(core): add error logging for IDE fetch failures
- feat(acp): support set_mode interface (#18890)
- fix(core): robust workspace-based IDE connection discovery
- Deflake windows tests.
- Fix: Avoid tool confirmation timeout when no UI listeners are present
- format md file
- feat(cli): add experimental.useOSC52Copy setting
- feat(cli): replace loading phrases boolean with enum setting
- Update skill to adjust for generated results.
- Fix message too large issue.
- fix(core): prevent duplicate tool approval entries in auto-saved.toml
- fix(core): resolve crash in ClearcutLogger when os.cpus() is empty
- chore(core): improve encapsulation and remove unused exports
- Revert "Add generic searchable list to back settings and extensions (…
- fix(core): improve error type extraction for telemetry
- fix: remove extra padding in Composer
- feat(plan): support configuring custom plans storage directory
- Migrate files to resource or references folder.
- feat(policy): implement project-level policy support
- feat(core): Implement parallel FC for read only tools.
- chore(skills): adds pr-address-comments skill to work on PR feedback
- refactor(sdk): introduce session-based architecture
- fix(ci): add fallback JSON extraction to issue triage workflow
- feat(core): refine Edit and WriteFile tool schemas for Gemini 3
- Changelog for v0.30.0-preview.3
- fix(plan): exclude EnterPlanMode tool from YOLO mode
- chore: resolve build warnings and update dependencies
- feat(ui): add source indicators to slash commands
- docs: refine Plan Mode documentation structure and workflow
- Docs: Update release information regarding Gemini 3.1
- fix(security): rate limit web_fetch tool to mitigate DDoS via prompt injection
- Add initial implementation of /extensions explore command
- fix: use discoverOAuthFromWWWAuthenticate for reactive OAuth flow (#18760)
- Search updates
- feat(cli): add support for numpad SS3 sequences
- feat(cli): enhance folder trust with configuration discovery and security warnings
- feat(ui): improve startup warnings UX with dismissal and show-count limits
- feat(a2a): Add API key authentication provider
- Send accepted/removed lines with ACCEPT_FILE telemetry.
- feat(models): support Gemini 3.1 Pro Preview and fixes
- feat(plan): enforce read-only constraints in Plan Mode
- fix(cli): allow perfect match @-path completions to submit on Enter
- fix(core): treat 503 Service Unavailable as retryable quota error
- Update sidebar.json for to allow top nav tabs.
- security: strip deceptive Unicode characters from terminal output
- Fixes 'input.on' is not a function error in Gemini CLI
- Revert "feat(ui): add source indicators to slash commands"
- security: implement deceptive URL detection and disclosure in tool confirmations
- fix(core): restore auth consent in headless mode and add unit tests
- Fix unsafe assertions in code_assist folder.
- feat(cli): make JetBrains warning more specific
- fix(cli): extensions dialog UX polish
- fix(cli): use getDisplayString for manual model selection in dialog
- feat(policy): repurpose "Always Allow" persistence to workspace level
- fix(cli): re-enable CLI banner
- Disallow and suppress unsafe assignment
- feat(core): migrate read_file to 1-based start_line/end_line parameters
- feat(cli): improve CTRL+O experience for both standard and alternate screen buffer (ASB) modes
- Utilize pipelining of grep_search -> read_file to eliminate turns
- refactor(core): remove unsafe type assertions in error utils (Phase 1.1)
- Disallow unsafe returns.
- fix(cli): filter subagent sessions from resume history
- chore(lint): fix lint errors seen when running npm run lint
- feat(core): remove unnecessary login verbiage from Code Assist auth
- fix(plan): time share by approval mode dashboard reporting negative time shares
- fix(core): allow any preview model in quota access check
- fix(core): prevent omission placeholder deletions in replace/write_file
- fix(core): add uniqueness guard to edit tool
- refactor(config): remove enablePromptCompletion from settings
- refactor(core): move session conversion logic to core
- Fix: Persist manual model selection on restart #19864
- fix(core): increase default retry attempts and add quota error backoff
- feat(core): add policy chain support for Gemini 3.1
- Updates command reference and /stats command.
- Fix for silent failures in non-interactive mode
- fix(plan): allow plan mode writes on Windows and fix prompt paths
- fix(core): prevent OAuth server crash on unexpected requests
- feat: Map tool kinds to explicit ACP.ToolKind values and update test …
- chore: restrict gemini-automted-issue-triage to only allow echo
- Allow ask headers longer than 16 chars
- fix(core): prevent state corruption in McpClientManager during collis
- fix(bundling): copy devtools package to bundle for runtime resolution
- feat(policy): Support MCP Server Wildcards in Policy Engine
- docs(CONTRIBUTING): update React DevTools version to 6
- feat(core): optimize tool descriptions and schemas for Gemini 3
- feat(core): implement experimental direct web fetch
- feat(core): replace expected_replacements with allow_multiple in replace tool
- fix(sandbox): harden image packaging integrity checks
- fix(core): allow environment variable expansion and explicit overrides for MCP servers
- feat(policy): Implement Tool Annotation Matching in Policy Engine
- fix(core): prevent utility calls from changing session active model
- fix(cli): skip workspace policy loading when in home directory
- fix(scripts): Add Windows (win32/x64) support to lint.js
- fix(a2a-server): Remove unsafe type assertions in agent
- Fix: Handle corrupted token file gracefully when switching auth types (#19845)
- fix critical dep vulnerability
- Add new setting to configure maxRetries
- Stabilize tests.
- make windows tests mandatory
- Add 3.1 pro preview to behavioral evals.
- feat:PR-rate-limit
- feat(cli): allow expanding full details of MCP tool on approval
- feat(security): Introduce Conseca framework
- fix(cli): Remove unsafe type assertions in activityLogger #19713
- feat: implement AfterTool tail tool calls
- ci(actions): fix PR rate limiter excluding maintainers
- Shortcuts: Move SectionHeader title below top line and refine styling
- refactor(ui): Update and simplify use of gray colors in themes
- fix punycode2
- feat(ide): add GEMINI_CLI_IDE_PID env var to override IDE process detection
- feat(policy): Propagate Tool Annotations for MCP Servers
- fix(a2a-server): pass allowedTools settings to core Config
- feat(mcp): add progress bar, throttling, and input validation for MCP tool progress
- feat(policy): centralize plan mode tool visibility in policy engine
- feat(browser): implement experimental browser agent
- feat(plan): summarize work after executing a plan
- fix(core): create new McpClient on restart to apply updated config
- Changelog for v0.30.0-preview.5
- Update packages.
- Fix extension env dir loading issue
- restrict /assign to help-wanted issues
- feat(plan): inject message when user manually exits Plan mode
- feat(extensions): enforce folder trust for local extension install
- feat(hooks): adds support for RuntimeHook functions.
- Docs: Update UI links.
- feat: prompt users to run /terminal-setup with yes/no
- fix: additional high vulnerabilities (minimatch, cross-spawn)
- feat(telemetry): Add context breakdown to API response event
- Docs: Add nested sub-folders for related topics
- feat(plan): support automatic model switching for Plan Mode
- fix(patch): cherry-pick 58df1c6 to release/v0.31.0-preview.0-pr-20374 to patch version v0.31.0-preview.0 and create version 0.31.0-preview.1
- fix(patch): cherry-pick ea48bd9 to release/v0.31.0-preview.1-pr-20577 [CONFLICTS]
- fix(patch): cherry-pick 32e777f to release/v0.31.0-preview.2-pr-20531 to patch version v0.31.0-preview.2 and create version 0.31.0-preview.3
Show the rest (15 more changes)Show less
New Contributors
- @skyvanguard made their first contribution in https://github.com/google-gemini/gemini-cli/pull/17393
- @syvb made their first contribution in https://github.com/google-gemini/gemini-cli/pull/18858
- @garrettsparks made their first contribution in https://github.com/google-gemini/gemini-cli/pull/17332
- @abhiasap made their first contribution in https://github.com/google-gemini/gemini-cli/pull/18982
- @pdHaku0 made their first contribution in https://github.com/google-gemini/gemini-cli/pull/17955
- @maximus12793 made their first contribution in https://github.com/google-gemini/gemini-cli/pull/19038
- @Shivangisharma4 made their first contribution in https://github.com/google-gemini/gemini-cli/pull/19890
- @reyyanxahmed made their first contribution in https://github.com/google-gemini/gemini-cli/pull/19668
- @mmgok made their first contribution in https://github.com/google-gemini/gemini-cli/pull/20014
- @aviralgarg05 made their first contribution in https://github.com/google-gemini/gemini-cli/pull/19552
- @ZafeerMahmood made their first contribution in https://github.com/google-gemini/gemini-cli/pull/16193
- @JagjeevanAK made their first contribution in https://github.com/google-gemini/gemini-cli/pull/19804
- @shrishabh made their first contribution in https://github.com/google-gemini/gemini-cli/pull/13193
- @googlestrobe made their first contribution in https://github.com/google-gemini/gemini-cli/pull/18486
- @kiryltech made their first contribution in https://github.com/google-gemini/gemini-cli/pull/15842
Full Changelog: https://github.com/google-gemini/gemini-cli/compare/v0.30.1...v0.31.0