Back
AI summary
Written by AI from the official notes. Check them for exact details.Gemini CLI 0.27.0 introduces new features, bug fixes, and improvements for better tool execution and user experience.
- Implement event-driven tool execution scheduler
- Add code-reviewer and docs-writer skills
- Support dynamic variable substitution in system prompt
- Enable hooks system by default
- Add global setting to disable UI spinners
Why it matters: Users of Gemini CLI should review these changes to enhance their workflow and tool management.
Full release notes208 changes
What's Changed
- remove fireAgent and beforeAgent hook
- Remove unused modelHooks and toolHooks
- feat(cli): sanitize ANSI escape sequences in non-interactive output
- Update Attempt text to Retry when showing the retry happening to the …
- chore(skills): update pr-creator skill workflow
- feat(cli): implement event-driven tool execution scheduler
- chore(release): bump version to 0.27.0-nightly.20260121.97aac696f
- Remove other rewind reference in docs
- feat(skills): add code-reviewer skill
- feat(plan): Extend
Shift+TabMode Cycling to includePlanMode - feat(plan): refactor TestRig and eval helper to support configurable approval modes
- feat(workflows): support recursive workstream labeling and new IDs
- Run evals for all models.
- fix(github): improve label-workstream-rollup efficiency with GraphQL
- Docs: Update changelogs for v.0.25.0 and v0.26.0-preview.0 releases.
- Migrate beforeTool and afterTool hooks to hookSystem
- fix(github): improve label-workstream-rollup efficiency and fix bugs
- feat(cli): improve skill enablement/disablement verbiage
- fix(admin): Ensure CLI commands run in non-interactive mode
- feat(core): support dynamic variable substitution in system prompt override
- fix(core,cli): enable recursive directory access for
- Docs: Marking for experimental features
- Support command/ctrl/alt backspace correctly
- feat(plan): add approval mode instructions to system prompt
- feat(core): enable disableLLMCorrection by default
- Remove unused slug from sidebar
- drain stdin on exit
- refactor(cli): decouple UI from live tool execution via ToolActionsContext
- fix(core): update token count and telemetry on /chat resume history load
- fix: /policy to display policies according to mode
- fix(core): simplify replace tool error message
- feat(cli): consolidate shell inactivity and redirection monitoring
- fix(scheduler): prevent stale tool re-publication and fix stuck UI state
- feat(config): default enableEventDrivenScheduler to true
- feat(hooks): enable hooks system by default
- feat(core): Enable AgentRegistry to track all discovered subagents
- feat(core): Have subagents use a JSON schema type for input.
- feat: replace large text pastes with [Pasted Text: X lines] placeholder
- security(hooks): Wrap hook-injected context in distinct XML tags
- Enable the ability to queue specific nightly eval tests
- docs(hooks): comprehensive update of hook documentation and specs
- refactor: improve large text paste placeholder
- feat: implement /rewind command
- Feature/jetbrains ide detection
- docs: update typo in mcp-server.md file
- Sanitize command names and descriptions
- fix(auth): don't crash when initial auth fails
- Added image pasting capabilities for Wayland and X11 on Linux
- feat: add AskUser tool schema
- fix cli settings: resolve layout jitter in settings bar
- fix: show whitespace changes in edit tool diffs
- Remove redundant calls setting linuxClipboardTool. getUserLinuxClipboardTool() now handles the caching internally
- ci: allow failure in evals-nightly run step
- feat(cli): Add state management and plumbing for agent configuration dialog
- bug: fix ide-client connection to ide-companion when inside docker via ssh/devcontainer
- Emit correct newline type return
- New skill: docs-writer
- fix(core): Resolve AbortSignal MaxListenersExceededWarning (#5950)
- Disable tips after 10 runs
- Fix so rewind starts at the bottom and loadHistory refreshes static content.
- feat(core): Remove legacy settings.
- feat(plan): add 'communicate' tool kind
- feat(routing): A/B Test Numerical Complexity Scoring for Gemini 3
- feat(plan): update UI Theme for Plan Mode
- fix(ui): stabilize rendering during terminal resize in alternate buffer
- feat(cli): add /agents config command and improve agent discovery
- feat(mcp): add enable/disable commands for MCP servers (#11057)
- fix(cli)!: Default to interactive mode for positional arguments
- Fix issue #17080
- feat(core): Refresh agents after loading an extension.
- fix(cli): include source in policy rule display
- fix: remove obsolete CloudCode PerDay quota and 120s terminal threshold
- Refactor subagent delegation to be one tool per agent
- fix(core): Include MCP server name in OAuth message
- Fix pr-triage.sh script to update pull requests with tags "help wanted" and "maintainer only"
- feat(plan): implement simple workflow for planning in main agent
- fix: exit with non-zero code when esbuild is missing
- fix: ensure @-command UI message ordering and test
- fix(core): add alternative command names for Antigravity editor detec…
- Refactor: Migrate CLI
appEventsto CorecoreEvents - fix(core): await MCP initialization in non-interactive mode
- Fix modifyOtherKeys enablement on unsupported terminals
- fix(core): gracefully handle disk full errors in chat recording
- fix(oauth): update oauth to use 127.0.0.1 instead of localhost
- fix(core): use RFC 9728 compliant path-based OAuth protected resource discovery
- Update Code Wiki README badge
- Add conda installation instructions for Gemini CLI
- chore(refactor): extract BaseSettingsDialog component
- fix(cli): preserve input text when declining tool approval (#15624)
- chore: upgrade dep: diff 7.0.0-> 8.0.3
- feat: add AskUserDialog for UI component of AskUser tool
- feat(ui): display user tier in about command
- feat: add
clearContexttoAfterAgenthooks - fix(cli): change image paste location to global temp directory (#17396)
- Fix line endings issue with Notice file
- feat(plan): implement persistent
approvalModesetting - feat(ui): Move keyboard handling into BaseSettingsDialog
- Allow prompt queueing during MCP initialization
- feat: implement AgentConfigDialog for /agents config command
- fix(agents): default to all tools when tool list is omitted in subagents
- feat(cli): Moves tool confirmations to a queue UX
- fix(core): hide user tier name
- feat: Enforce unified folder trust for /directory add
- migrate fireToolNotificationHook to hookSystem
- Clean up dead code
- feat(workflow): add stale pull request closer with linked-issue enforcement
- feat(workflow): expand stale-exempt labels to include help wanted and Public Roadmap
- chore(workflow): remove redundant label-enforcer workflow
- Resolves the confusing error message
ripgrep exited with code null that occurs when a search operation is cancelled or aborted - fix: detect pnpm/pnpx in ~/.local
- docs: Add instructions for MacPorts and uninstall instructions for Homebrew
- docs(hooks): clarify mandatory 'type' field and update hook schema documentation
- Improve error messages on failed onboarding
- Follow up to "enableInteractiveShell for external tooling relying on a2a server"
- Fix/issue 17070
- fix(core): handle URI-encoded workspace paths in IdeClient
- feat(cli): add quick clear input shortcuts in vim mode
- feat(core): optimize shell tool llmContent output format
- Fix bug in detecting already added paths.
- feat(scheduler): support multi-scheduler tool aggregation and nested call IDs
- feat(agents): implement first-run experience for project-level sub-agents
- Update extensions docs
- Docs: Refactor left nav on the website
- fix(core): stream grep/ripgrep output to prevent OOM
- feat(plan): add persistent plan file storage
- feat(agents): migrate subagents to event-driven scheduler
- Fix extensions config error
- fix(plan): remove subagent invocation from plan mode
- feat(ui): add solid background color option for input prompt
- feat(plan): refresh system prompt when approval mode changes (Shift+Tab)
- feat(cli): add global setting to disable UI spinners
- fix(security): enforce strict policy directory permissions
- test(core): fix tests in windows
- feat(mcp/extensions): Allow users to selectively enable/disable MCP servers included in an extension(Issue #11057 & #17402)
- Always map mac keys, even on other platforms
- Ctrl-O
- feat(plan): update cycling order of approval modes
- fix(cli): restore 'Modify with editor' option in external terminals
- Slash command for helping in debugging
- feat: add double-click to expand/collapse large paste placeholders
- refactor(cli): migrate non-interactive flow to event-driven scheduler
- fix: loadcodeassist eligible tiers getting ignored for unlicensed users (regression)
- chore(core): delete legacy nonInteractiveToolExecutor
- feat(core): enforce server prefixes for MCP tools in agent definitions
- feat (mcp): Refresh MCP prompts on list changed notification
- feat(ui): pretty JSON rendering tool outputs
- Fix iterm alternate buffer mode issue rendering backgrounds
- feat(cli): add
gemini extensions list --output-format=json - fix(extensions): add.gitignore to extension templates
- paste transform followup
- refactor: rename formatMemoryUsage to formatBytes
- chore: remove extra top margin from /hooks and /extensions
- feat(cli): add oncall command for issue triage
- Fix sidebar issue for extensions link
- Change formatting to prevent UI redressing attacks
- Fix cluster of bugs in the settings dialog.
- Update sidebar to resolve site build issues
- fix(admin): fix a few bugs related to admin controls
- revert bad changes to tests
- feat(cli): show candidate issue state reason and duplicate status in triage
- Fix missing slash commands when Gemini CLI is in a project with a package.json that doesn't follow semantic versioning
- feat(core): Model family-specific system prompts
- Sub-agents documentation.
- feat: wire up
AskUserToolwith dialog - Load extension settings for hooks, agents, skills
- Fix issue where Gemini CLI can make changes when simply asked a question
- Update docs-writer skill for editing and add style guide for reference.
- fix(ux): have user message display a short path for pasted images
- feat(plan): enable
AskUsertool inPlanmode for clarifying questions - GEMINI.md polish
- refactor(core): centralize path validation and allow temp dir access for tools
- feat(skills): promote Agent Skills to stable
- refactor(cli): keyboard handling and AskUserDialog
- docs: Add Experimental Remote Agent Docs
- revert: promote Agent Skills to stable (#17693)
- feat(ux) Expandable (ctrl-O) and scrollable approvals in alternate buffer mode.
- feat(skills): promote skills settings to stable
- fix(cli): Preserve settings dialog focus when searching
- feat(ui): add terminal cursor support
- docs(skills): remove experimental labels and update tutorials
- docs: remove 'experimental' syntax for hooks in docs
- Add support for an additional exclusion file besides.gitignore and.geminiignore
- feat: add review-frontend-and-fix command
- fix(patch): cherry-pick 4d4e16c to release/v0.27.0-preview.0-pr-17785 to patch version v0.27.0-preview.0 and create version 0.27.0-preview.1
- fix(patch): cherry-pick 6d36219 to release/v0.27.0-preview.1-pr-17810 to patch version v0.27.0-preview.1 and create version 0.27.0-preview.2
- fix(patch): cherry-pick 42eedc9 to release/v0.27.0-preview.2-pr-17826 to patch version v0.27.0-preview.2 and create version 0.27.0-preview.3
- fix(patch): cherry-pick a362b7b to release/v0.27.0-preview.3-pr-17975 to patch version v0.27.0-preview.3 and create version 0.27.0-preview.4
- fix(patch): cherry-pick 1b274b0 to release/v0.27.0-preview.4-pr-17852 to patch version v0.27.0-preview.4 and create version 0.27.0-preview.5
- fix(patch): cherry-pick 2905503 to release/v0.27.0-preview.5-pr-18215 to patch version v0.27.0-preview.5 and create version 0.27.0-preview.6
- fix(patch): cherry-pick e1bd1d2 to release/v0.27.0-preview.6-pr-18209 to patch version v0.27.0-preview.6 and create version 0.27.0-preview.7
- fix(patch): cherry-pick 8cae90f to release/v0.27.0-preview.7-pr-18108 [CONFLICTS]
Show the rest (17 more changes)Show less
New Contributors
- @SoLoHiC made their first contribution in https://github.com/google-gemini/gemini-cli/pull/16243
- @schifferl made their first contribution in https://github.com/google-gemini/gemini-cli/pull/17099
- @Mag1ck made their first contribution in https://github.com/google-gemini/gemini-cli/pull/16256
- @Ujjiyara made their first contribution in https://github.com/google-gemini/gemini-cli/pull/17213
- @lkk214 made their first contribution in https://github.com/google-gemini/gemini-cli/pull/15783
- @yuvrajangadsingh made their first contribution in https://github.com/google-gemini/gemini-cli/pull/16967
- @baeseokjae made their first contribution in https://github.com/google-gemini/gemini-cli/pull/16829
- @Ratish1 made their first contribution in https://github.com/google-gemini/gemini-cli/pull/17390
- @seekskyworld made their first contribution in https://github.com/google-gemini/gemini-cli/pull/16714
- @godwiniheuwa made their first contribution in https://github.com/google-gemini/gemini-cli/pull/17305
- @maximmasiutin made their first contribution in https://github.com/google-gemini/gemini-cli/pull/14267
- @rwakulszowa made their first contribution in https://github.com/google-gemini/gemini-cli/pull/15254
- @breun made their first contribution in https://github.com/google-gemini/gemini-cli/pull/17412
- @alih552 made their first contribution in https://github.com/google-gemini/gemini-cli/pull/17242
- @dong-jun-shin made their first contribution in https://github.com/google-gemini/gemini-cli/pull/17476
- @harshanadim made their first contribution in https://github.com/google-gemini/gemini-cli/pull/17470
- @AkihiroSuda made their first contribution in https://github.com/google-gemini/gemini-cli/pull/14479
Full Changelog: https://github.com/google-gemini/gemini-cli/compare/v0.26.0...v0.27.0