Skip to content

feat(cli): add Sublime Text and Emacs Client editors, improve error messages and documentation - #21090

Merged
scidomino merged 27 commits into
google-gemini:mainfrom
alberti42:extra-editors
May 19, 2026
Merged

feat(cli): add Sublime Text and Emacs Client editors, improve error messages and documentation#21090
scidomino merged 27 commits into
google-gemini:mainfrom
alberti42:extra-editors

Conversation

@alberti42

@alberti42 alberti42 commented Mar 4, 2026

Copy link
Copy Markdown
Contributor

Summary

Addresses #21084 by improving external editor support across three areas: adds
Sublime Text and Emacs Client to the built-in editor list, emits clear
error messages when editor configuration is invalid or a command is missing, and
extends the documentation and JSON schema for preferredEditor.

Details

New editors (packages/core/src/utils/editor.ts):

  • Sublime Text (sublime): added as a GUI editor using the subl command.
    Opens files with --wait. Diff view opens the new file only, as subl does
    not support a --diff flag.
  • Emacs Client (emacsclient): added as a terminal editor. Automatically
    injects -nw (terminal mode) when opening a file. Diff view uses
    emacsclient -nw --eval "(ediff ...)", consistent with the existing emacs
    implementation.

Error handling (packages/cli/src/ui/utils/editorUtils.ts):

Two cases that previously produced a cryptic internal error are now handled
gracefully:

  1. Unrecognized preferredEditor: validates the editor type before use and
    emits a user-friendly message instead of a generic error. For example,
    setting "preferredEditor": "nvim" (the binary name) instead of the
    supported identifier "neovim" previously produced:
    ✕ [useTextBuffer] external editor error
    
    It now produces:
    ✕ Editor 'nvim' is not recognized or not installed. Run /editor to pick a
      supported editor, or set $VISUAL/$EDITOR in your shell to your preferred
      editor.
    
  2. Missing $VISUAL/$EDITOR command: detects ENOENT on spawn and emits
    a clear message pointing the user to check their environment variable.

Note: $VISUAL/$EDITOR continue to accept any editor command, not just the
built-in supported types, preserving full flexibility for power users.

Documentation (docs/reference/configuration.md,
schemas/settings.schema.json, packages/cli/src/config/settingsSchema.ts):

  • The description field for preferredEditor in settingsSchema.ts has been
    updated to explain the built-in identifier requirement, the /editor command
    as the canonical way to discover supported values, and the $VISUAL/$EDITOR
    escape hatch for power users. Both docs/reference/configuration.md and
    schemas/settings.schema.json are regenerated from this source and updated
    accordingly.

Related Issues

Closes #21084

Note for maintainers: enum constraint in the JSON schema

The current implementation leaves preferredEditor typed as a plain string in
settingsSchema.ts, so the JSON schema carries no enum constraint and IDEs
offer no autocomplete for valid editor identifiers.

A cleaner solution would be to change the definition to type: 'enum' and list
the supported values via options, mirroring how defaultApprovalMode is
defined. This would cause the generation script to emit an enum array in the
JSON schema and a Values: line in the documentation automatically, and would
keep everything in sync with the code. For example:

preferredEditor: {
  type: 'enum',
  label: 'Preferred Editor',
  category: 'General',
  requiresRestart: false,
  default: undefined as EditorType | undefined,
  description: '...',
  showInDialog: false,
  options: (EDITORS as readonly EditorType[]).map((e) => ({
    value: e,
    label: EDITOR_DISPLAY_NAMES[e],
  })),
},

This is a slightly more invasive change (it touches the settings type system and
may affect dialog rendering), so I have left it out of this PR. I am happy to
implement it based on your feedback.

How to Validate

Sublime Text:

  1. Set "preferredEditor": "sublime" in ~/.gemini/settings.json
  2. Open Gemini CLI and press CTRL-X to open the external editor
  3. Sublime Text should open the buffer file and wait until it is closed

Emacs Client:

  1. Start an Emacs daemon: emacs --daemon
  2. Set "preferredEditor": "emacsclient" in ~/.gemini/settings.json
  3. Open Gemini CLI and press CTRL-X to open the external editor
  4. Emacs Client should open in terminal mode (-nw) and wait until the buffer
    is closed

Graceful error for unrecognized preferredEditor:

  1. Set "preferredEditor": "emacsclient -nw" in ~/.gemini/settings.json
  2. Press CTRL-X in Gemini CLI
  3. Expected:
    Editor 'emacsclient -nw' is not recognized or not installed. Run /editor to pick a supported editor, or set $VISUAL/$EDITOR in your shell to your preferred editor.
  4. Expected: no crash, no unhandled promise rejection

Graceful error for missing $VISUAL/$EDITOR command:

  1. Run export EDITOR="nonexistent-editor" in your shell
  2. Remove preferredEditor from settings.json
  3. Press CTRL-X in Gemini CLI
  4. Expected:
    Could not find editor 'nonexistent-editor'. Check your $VISUAL/$EDITOR setting.
  5. Expected: no crash, no unhandled promise rejection

Pre-Merge Checklist

  • Updated relevant documentation and README (if needed)
  • Added/updated tests (if needed)
  • Noted breaking changes (if any)
  • Validated on required platforms/methods:
    • MacOS
      • npm run
      • npx
      • Docker
      • Podman
      • Seatbelt
    • Windows
      • npm run
      • npx
      • Docker
    • Linux
      • npm run
      • npx
      • Docker

@alberti42
alberti42 requested review from a team as code owners March 4, 2026 10:32
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the external editor integration for the CLI, making it more robust and user-friendly. It expands the range of supported editors, provides more informative feedback for common configuration issues, and updates all relevant documentation to guide users effectively.

Highlights

  • New Editor Support: Added Sublime Text and Emacs Client to the list of built-in supported external editors.
  • Improved Error Handling: Implemented clearer and more user-friendly error messages for unrecognized preferredEditor configurations and missing editor commands.
  • Enhanced Documentation: Updated documentation and JSON schema for preferredEditor to provide better guidance on configuration and supported values.
Changelog
  • docs/reference/configuration.md
    • Updated the description for general.preferredEditor to clarify supported identifiers and the use of $VISUAL/$EDITOR.
  • packages/cli/src/config/settingsSchema.ts
    • Modified the description for preferredEditor to include guidance on built-in identifiers and environment variables.
  • packages/cli/src/ui/utils/editorUtils.ts
    • Imported isEditorAvailable for editor validation.
    • Added logic to check preferredEditorType availability and emit a user-friendly error if unrecognized.
    • Introduced handleEditorError function to provide specific error messages for ENOENT (command not found) and general editor errors.
    • Injected -nw argument for emacsclient when opening files in terminal mode.
  • packages/core/src/utils/editor.test.ts
    • Added test cases for sublime and emacsclient in getEditorCommands.
    • Included new tests for getDiffCommand specifically for emacsclient (with escaped paths) and sublime.
    • Updated guiEditors and terminalEditors lists for sandbox mode tests to include sublime and emacsclient respectively.
    • Added tests for allowEditorTypeInSandbox for emacsclient.
  • packages/core/src/utils/editor.ts
    • Added sublime to GUI_EDITORS and emacsclient to TERMINAL_EDITORS.
    • Updated EDITOR_DISPLAY_NAMES to include 'Emacs Client' and 'Sublime Text'.
    • Added command definitions for emacsclient and sublime in editorCommands.
    • Modified getDiffCommand to handle sublime (opening only the new file) and emacsclient (with -nw and ediff eval).
  • schemas/settings.schema.json
    • Updated the description and markdownDescription for preferredEditor to match the new guidance.
Activity
  • No human activity has been recorded on this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds support for Sublime Text and Emacs Client as external editors and enhances error handling for editor configurations, along with clear documentation updates. However, a critical command injection vulnerability was identified in packages/cli/src/ui/utils/editorUtils.ts due to the unsafe handling of VISUAL and EDITOR environment variables, potentially leading to Remote Code Execution. Additionally, one issue in the new test code requires attention for correctness.

Comment thread packages/core/src/utils/editor.test.ts Outdated
@gemini-cli gemini-cli Bot added the area/core Issues related to User Interface, OS Support, Core Functionality label Mar 4, 2026
default: undefined as string | undefined,
description: 'The preferred editor to open files in.',
description:
'The preferred editor to open files in. Must be one of the built-in supported identifiers — run /editor in the CLI for the full list. Power users who need an editor not in this list can leave this unset and configure $VISUAL or $EDITOR in their shell environment instead.',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This descript is too long. Descriptions need to fit in the UI.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for reviewing it. I shortened the description.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See commit 15bda94

Comment thread schemas/settings.schema.json Outdated
@@ -41,8 +41,8 @@
"properties": {
"preferredEditor": {
"title": "Preferred Editor",
"description": "The preferred editor to open files in.",
"markdownDescription": "The preferred editor to open files in.\n\n- Category: `General`\n- Requires restart: `no`",
"description": "The preferred editor to open files in. Must be one of the built-in supported identifiers — run /editor in the CLI for the full list. Power users who need an editor not in this list can leave this unset and configure $VISUAL or $EDITOR in their shell environment instead.",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tweak so you can specify a separate longer markdown description from the short description suitable for the TUI.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I shortened the description in 15bda94.

The file schemas/settings.schema.json is automatically generated by npm run docs:settings.

The new commit already contains the newly generated one.

@jacob314
jacob314 enabled auto-merge March 4, 2026 17:31
@gemini-cli gemini-cli Bot added priority/p2 Important but can be addressed in a future release. help wanted We will accept PRs from all issues marked as "help wanted". Thanks for your support! labels Mar 4, 2026
auto-merge was automatically disabled March 5, 2026 08:55

Head branch was pushed to by a user without write access

alberti42 added a commit to alberti42/fork-gemini-cli that referenced this pull request Mar 6, 2026
jacob314 requested a shorter description to fit the TUI. This was already
addressed in PR google-gemini#21090 via settingsSchema.ts. Regenerate schema from source
of truth and restore the accepted-values table in configuration.md.
@alberti42
alberti42 requested a review from a team as a code owner March 6, 2026 23:04
@alberti42

Copy link
Copy Markdown
Contributor Author

Update: I've integrated the work from the duplicate PR #21377 by @AnanthKini1 into this branch. His commits have been cherry-picked on top of mine with authorship preserved.

His additions beyond what was already in this PR:

  • Fixed an infinite re-render loop in EditorSettingsDialog (emitFeedback called inside render body)
  • Added --new-window flag for VS Code-family editors (Cursor, Windsurf, VSCodium) so the editor opens directly to the file instead of the Welcome screen
  • Fixed maxItemsToShow so all editors are visible in the /editor picker
  • Expanded editor support: Lapce, Nova, BBEdit, Micro, Sublimetext (renamed from sublime)
  • Smarter $VISUAL/$EDITOR handling: extra args and wait flags now apply even when the editor is set via environment variable

I also fixed a documentation issue: schemas/settings.schema.json and docs/reference/configuration.md are auto-generated from settingsSchema.ts, so I moved the enum values there to make them permanent.

Comment thread package-lock.json
"node_modules/@octokit/core": {
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.5.tgz",
"integrity": "sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q==",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

revert changes to this file

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done: I removed the package-lock.json changes from the commit history.

or leave unset to use $VISUAL/$EDITOR.
`,
showInDialog: false,
options: [

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these duplicate options in editor.ts. Please Refactor so they don't have to be duplicated or remove this. Including these entries here isn't crucial as this is hidden from the settings dialog but would be nice to have so it ends up in settings.schema.json

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done. The fix is in commit "refactor: derive preferredEditor options from EDITOR_OPTIONS"

} else {
// Heuristic fallback for commands not in the registry
const lower = envCommand.toLowerCase();
const isGui = ['code', 'cursor', 'subl', 'zed', 'atom'].some((g) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add these to a const rather than including them here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done → changes are in commit "refactor: extract HEURISTIC_GUI_COMMANDS const"

'error',
'[editorUtils] external editor spawn error',
err,
const spawnErr = err as NodeJS.ErrnoException;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

emitFeedback is preferred to throwing an exception. why this change?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done: see commit "fix: replace throw with emitFeedback in openFileInEditor"

Comment thread packages/core/src/utils/editor.ts Outdated
const editorExtraArgs: Partial<Record<EditorType, string[]>> = {
emacsclient: ['-nw'], // Force terminal (no-window) mode
vscode: ['--new-window'], // Force a new window to open the file directly
vscodium: ['--new-window'],

@jacob314 jacob314 Mar 9, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

addubg new window will be frustrating for some users. If I have a project open in vscode why do I want a new window? Would suggest protecting this behind a setting.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done: see commit → "feat: guard --new-window behind openEditorInNewWindow setting"

@jacob314 jacob314 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added some comments. once these are addressed this can be approved.

alberti42 added a commit to alberti42/fork-gemini-cli that referenced this pull request Mar 11, 2026
jacob314 requested a shorter description to fit the TUI. This was already
addressed in PR google-gemini#21090 via settingsSchema.ts. Regenerate schema from source
of truth and restore the accepted-values table in configuration.md.
@alberti42
alberti42 force-pushed the extra-editors branch 2 times, most recently from 19b1f71 to 1fcb713 Compare March 11, 2026 06:37

@alberti42 alberti42 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I split the resolution of concerns into different commits for easier review/understanding. If needed, we can squash things at the end.

or leave unset to use $VISUAL/$EDITOR.
`,
showInDialog: false,
options: [

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done. The fix is in commit "refactor: derive preferredEditor options from EDITOR_OPTIONS"

} else {
// Heuristic fallback for commands not in the registry
const lower = envCommand.toLowerCase();
const isGui = ['code', 'cursor', 'subl', 'zed', 'atom'].some((g) =>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done → changes are in commit "refactor: extract HEURISTIC_GUI_COMMANDS const"

'error',
'[editorUtils] external editor spawn error',
err,
const spawnErr = err as NodeJS.ErrnoException;

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done: see commit "fix: replace throw with emitFeedback in openFileInEditor"

Comment thread packages/core/src/utils/editor.ts Outdated
const editorExtraArgs: Partial<Record<EditorType, string[]>> = {
emacsclient: ['-nw'], // Force terminal (no-window) mode
vscode: ['--new-window'], // Force a new window to open the file directly
vscodium: ['--new-window'],

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done: see commit → "feat: guard --new-window behind openEditorInNewWindow setting"

alberti42 and others added 15 commits May 19, 2026 07:27
jacob314 requested a shorter description to fit the TUI. This was already
addressed in PR google-gemini#21090 via settingsSchema.ts. Regenerate schema from source
of truth and restore the accepted-values table in configuration.md.
Change preferredEditor type to 'enum' and add options so the schema
generator permanently emits the accepted values list in configuration.md
and the enum array in settings.schema.json without manual edits.
After switching useTextBuffer to read openEditorInNewWindow via useSettings,
its tests render the hook outside a SettingsProvider and useSettings throws.
Add a vi.mock that preserves the real exports (so renderHookWithProviders
keeps working) and stubs useSettings with a minimal merged settings object.
Brings the EDITOR_DISPLAY_NAMES lookup onto a single line to satisfy
the repo Prettier configuration.
@alberti42

Copy link
Copy Markdown
Contributor Author

Looks like we have failing tests and lint. Please update and I will review right away.

@scidomino Thanks for looking into it. I rebased and force-pushed. Luckily, there were no conflicts to resolve.

I also added two commits:

  • 8af6a6c to resolve the failing tests you mentioned.
  • b3f6642 to fix a lint issue in EditorSettingsDialog.tsx

@scidomino
scidomino enabled auto-merge May 19, 2026 16:56
@scidomino

Copy link
Copy Markdown
Collaborator

We have some test failures. please make sure that npm run preflight passes and is not OS specific.

alberti42 added 2 commits May 19, 2026 19:33
…platforms

resolveEditorTypeFromCommand previously consulted only the current platform's
command list, so on Windows it failed to recognize 'code', 'codium', etc. as
their corresponding editor types, and on non-Windows it would miss 'code.cmd'.
The function is used to identify a user-typed command from $VISUAL/$EDITOR,
which is a string-matching concern that should not depend on the host OS.
Match against both the win32 and default command lists for every editor.
The test asserted command: 'emacs' regardless of host platform, which made
it fail on Windows where getEditorCommand('emacs') resolves to 'emacs.exe'.
Pin process.platform to 'linux' for this case, matching the convention used
by every other getDiffCommand test in this file.
auto-merge was automatically disabled May 19, 2026 18:29

Head branch was pushed to by a user without write access

@scidomino
scidomino added this pull request to the merge queue May 19, 2026
@alberti42

Copy link
Copy Markdown
Contributor Author

Thanks for reviewing it. Indeed, I had only run tests on macOS. I just pushed two new commits:

  • e509136: pins process.platform to linux in the emacs test related to getDiffCommand. This fix follows the same pattern used in several other tests in the file.
  • e8a0acc: fixes resolveEditorTypeFromCommand so it recognizes editor commands across all platforms. The function previously only checked the current OS's command list, which meant Windows-only command aliases (e.g. code.cmd) and non-Windows aliases typical of other platforms (e.g. code) were not recognized.

Regarding e8a0acc, this change was triggered by two tests failing on Windows:

    it('should resolve known command names to their editor type', () => {
      expect(resolveEditorTypeFromCommand('cursor')).toBe('cursor');
      expect(resolveEditorTypeFromCommand('code')).toBe('vscode');
      expect(resolveEditorTypeFromCommand('codium')).toBe('vscodium');
      expect(resolveEditorTypeFromCommand('vim')).toBe('vim');
    });

    it('should be case-insensitive', () => {
      expect(resolveEditorTypeFromCommand('Cursor')).toBe('cursor');
      expect(resolveEditorTypeFromCommand('CODE')).toBe('vscode');
    });

Both the function resolveEditorTypeFromCommand and these two tests are new in this PR, originally written by the other co-contributor, @AnanthKini1, and cherry-picked into this branch by myself. The tests were written without pinning process.platform because the substring matcher being replaced was already cross-platform, so the expectation was that the new lookup would behave the same way. The bug was that the lookup ended up implemented as platform-specific.

There were two ways to make these tests pass: pin process.platform to Linux in the two tests (like I did for the Emacs test), or fix resolveEditorTypeFromCommand so it recognizes commands from both the default and win32 lists. I chose the second one for the reason explained below:

Even without e8a0acc, a Windows user with $EDITOR=code would still be able to launch VS Code: there is a heuristic fallback in editorUtils.ts that catches code (and cursor, subl, etc.) and applies --wait. So EDITOR=code keeps working on Windows either way. What is lost on the heuristic fallback path is getEditorExtraArgs - in particular the new --new-window flag this PR introduces alongside the openEditorInNewWindow setting. The result would be an asymmetry: a macOS or Linux user with $EDITOR=code and openEditorInNewWindow: true would correctly get --new-window applied, while a Windows user with the same settings would silently not, even though code would be a recognized command.

Pinning the tests to Linux would have left this asymmetry in place, and routing a recognized command through the heuristic fallback on purpose did not feel like something anyone would actually want. With the commit e8a0acc, I am now fixing the function so the new openEditorInNewWindow setting behaves consistently across platforms; this seemed like the cleaner approach, unless I am missing something else. Let me know if you think there is anything we should revisit or if you have other design preferences.

PS: After I finished composing this reply, I saw the PR was moved into the queue for merge. Thank you! I'm leaving the explanation above as a record for anyone who later looks at e8a0acc. Perhaps there will be minor fixes/corrections to this PR in the future, and it would then be useful to reconstruct the reasoning.

Merged via the queue into google-gemini:main with commit 57c42a5 May 19, 2026
26 of 27 checks passed
@sripasg sripasg added the size/l A large sized PR label Jun 2, 2026
software-0ficial pushed a commit to software-0ficial/gemini-cli that referenced this pull request Jul 9, 2026
…essages and documentation (google-gemini#21090)

Co-authored-by: Ananth Kini <ananthkini1@gmail.com>
Cleanskiier27 added a commit to Cleanskiier27/gemini-cli that referenced this pull request Jul 25, 2026
* fix(core): Fix hysteresis in async context management pipelines. (google-gemini#26452)

* Tighten private Auto Memory patch allowlist (google-gemini#26535)

* fix(cli): hide read-only settings scopes (google-gemini#26249)

* fix(ci): preserve executable bit for mac binaries (google-gemini#26600)

* fix(cli): improve mcp list UX in untrusted folders (google-gemini#26457)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fix(core): prevent silent hang during OAuth auth on headless Linux (google-gemini#26571)

Co-authored-by: Jack Wotherspoon <jackwoth@google.com>

* Changelog for v0.42.0-preview.0 (google-gemini#26537)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* ci: fix Argument list too long in triage workflows (google-gemini#26603)

* refactor(cli): migrate core tools to native ToolDisplay property and fix UI rendering (google-gemini#25186)

* don't wrap args unnecessarily (google-gemini#26599)

* fix(core): preserve system PATH in Git environment to fix ENOENT (google-gemini#25034) (google-gemini#26587)

* fix(routing): fix resolveClassifierModel argument mismatch in ApprovalModeStrategy (google-gemini#26658)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* docs: add vi mode shortcuts and clarify MCP/custom sandbox setup (google-gemini#23853)

Co-authored-by: Sam Roberts <158088236+g-samroberts@users.noreply.github.com>

* fix(ux): fixed issue with transcribed text not showing after releasing space (google-gemini#26609)

* ci: fix json parsing in scheduled triage workflow (google-gemini#26656)

* fix(cli): hide /memory add subcommand when memoryV2 is enabled (google-gemini#26605)

* fix: prevent false command conflicts when launching from home directory (google-gemini#23069)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* fix(core): cache model routing decision in LocalAgentExecutor (google-gemini#26548)

* Changelog for v0.42.0-preview.2 (google-gemini#26597)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>
Co-authored-by: Sam Roberts <158088236+g-samroberts@users.noreply.github.com>

* skip broken test (google-gemini#26705)

* feat: export session to file and import via flag (google-gemini#26514)

* Feat: Add Machine Hostname to CLI interface (google-gemini#25637)

Signed-off-by: M-DEV-1 <mahadevankizhakkedathu@gmail.com>
Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* docs(extensions): refactor releasing guide and add update mechanisms (google-gemini#26595)

* fix(ci): fix maintainer identification in lifecycle manager (google-gemini#26706)

* fix(ui): added quotes around session id in resume tip (google-gemini#26669)

* Changelog for v0.41.0 (google-gemini#26670)

Co-authored-by: g-samroberts <158088236+g-samroberts@users.noreply.github.com>

* refactor(core): agent session protocol changes (google-gemini#26661)

* fix(context): implement loose boundary policy for gc backstop. (google-gemini#26594)

* fix(core): throw explicit error on dropped tool responses (google-gemini#26668)

* fix: resolve "function response turn must come immediately after function call" error (google-gemini#26691)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* fix(core): resolve parallel tool call streaming ID collision (google-gemini#26646)

* feat(core): add LocalSubagentProtocol behind AgentProtocol (google-gemini#25302)

* fix(cli): remove noisy theme registration logs from terminal (google-gemini#25858)

Co-authored-by: Jack Wotherspoon <jackwoth@google.com>

* ci: implement codebase-aware effort level triage (google-gemini#26666)

* feat(acp/core): prefix tool call IDs with tool names to support tool rendering in ACP compliant IDEs. (google-gemini#26676)

* fix(mcp): treat GET 404 as 405 in StreamableHTTPClientTransport (google-gemini#24847)

Co-authored-by: Coco Sheng <cocosheng@google.com>
Co-authored-by: Spencer <spencertang@google.com>
Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* feat(core): add RemoteSubagentProtocol behind AgentProtocol (google-gemini#25303)

* feat(context): Improvements to the snapshotter. (google-gemini#26655)

* fix(context): Change snapshotter model config. (google-gemini#26745)

* fix(cli): allow installing extensions from ssh repo (google-gemini#26274)

Signed-off-by: Daniel Finimundi <danielrf@motorola.com>
Co-authored-by: Dev Randalpura <devrandalpura@google.com>

* fix(cli): prevent duplicate SessionStart systemMessage render (google-gemini#25827)

Co-authored-by: Jacob Richman <jacob314@gmail.com>

* fix(cli/acp): prevent infinite thought loop in ACP mode by disablig nextSpeakerCheck (google-gemini#26874)

* fix(cli): use static tool name in confirmation prompt to avoid parsing errors (google-gemini#26866)

* fix(routing): Refactor tool turn handling for the conversation history in NumericalClassifierStrategy to prevent 400 Bad Request (google-gemini#26761)

* fix(core): handle malformed projects.json in ProjectRegistry (google-gemini#26885)

* fix(ui): added a gutter width to the input prompt width calculation (google-gemini#26882)

* fix: prevent EISDIR crash when customIgnoreFilePaths contains directories (google-gemini#19868) (google-gemini#19898)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* revert 6b9b778 (google-gemini#26893)

* Fix/vscode run current file ts (google-gemini#22894)

Co-authored-by: Spencer <spencertang@google.com>

* Allow Enter to select session while in search mode in /resume (google-gemini#21523)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* fix(core): ignore .pak and .rpa game archive formats by default (google-gemini#26884)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* fix(cli): enable adk non-interactive session (google-gemini#26895)

* fix(cli): restore resume for legacy sessions (google-gemini#26577)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* fix: respect explicit model selection after Flash quota exhaustion (google-gemini#26759) (google-gemini#26872)

* feat(context): Introduce adaptive token calculator to more accurately calculate content sizes. (google-gemini#26888)

* chore: update checkout action configuration in workflows (google-gemini#26897)

* fix (telemetry): inject quota_project_id to prevent fallback to default oauth client (google-gemini#26698)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* Exclude extension context from skill extraction agent (google-gemini#26879)

* Enable NumericalRouter when using dynamic model configs (google-gemini#26929)

* ci: actively triage missing priority labels and intelligently clean up conflicting labels (google-gemini#26865)

* refactor(core): introduce SubagentState enum for progress (google-gemini#26934)

* fix(ci): replace brittle --no-tag with explicit staging-tmp tag (google-gemini#26940)

* Incremental refactor repo agent towards skills-based composition (google-gemini#26717)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fix(ui): fixed line wrap padding for selection lists (google-gemini#26944)

* fix(core): update read_file schema for v1 compatibility (google-gemini#22183) (google-gemini#26922)

* fix(ci): configure git remote with token for authentication (google-gemini#26949)

* chore(release): bump version to 0.44.0-nightly.20260512.g022e8baef (google-gemini#26957)

* Changelog for v0.42.0 (google-gemini#26958)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* Refactor: Eliminate `no-unsafe-return` suppressions via strict type validation (google-gemini#20668)

Signed-off-by: M-DEV-1 <mahadevankizhakkedathu@gmail.com>
Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* Changelog for v0.43.0-preview.0 (google-gemini#26959)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* feat(core): change agent registration to first-wins and prioritize project (google-gemini#26953)

* feat(cli): merge Auto modes into a single Auto mode (google-gemini#26714)

* fix(core): preserve OAuth refresh tokens during rotation and retrieval (google-gemini#26924)

* fix(cli): allow keychain auth for --list-sessions and non-interactive mode (google-gemini#26921)

* fix(core): handle EISDIR on virtual drives in memory discovery (google-gemini#26985)

* fix(cli): auto-approve shell redirections in AUTO_EDIT mode (google-gemini#27003)

* ci: suppress bot comments during standard triage maintenance (google-gemini#27006)

* fix(core): isolate subagent thread context (google-gemini#26449)

* fix(core): refresh MCP OAuth token usage after re-auth (google-gemini#26312)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* fix(ui): clamped table column widths (google-gemini#26991)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* chore: add execution permission to scripts/review.sh (google-gemini#27009)

* fix(core): made context files append instead of replace (google-gemini#26950)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fix: add system PATH fallback for ripgrep resolution (google-gemini#26777) (google-gemini#26868)

* chore: clean up launched memory features (google-gemini#26941)

Co-authored-by: Jenna Inouye <jinouye@google.com>

* fix(core): throttle shell text output and bound live UI buffer (google-gemini#26955)

* fix(cli): don't crash when an @-mention captures a non-path blob (google-gemini#25980)

* fix(core): ensure stable fallback for restricted preview models (google-gemini#26999)

* feat(core): expose RAG snippets to local log file for debugging (google-gemini#27016)

* fix(acp/auth): prevent conflicting credentials on enterprise gateways and support optional API keys natively (google-gemini#27021)

* fix(core): respect NO_PROXY for network-based MCP servers (google-gemini#27012)

* fix(cli): resolve permission denied in sandbox on NixOS and other distros (google-gemini#27004)

* fix(ui): preserve new line at the end of edit window (google-gemini#27057)

* fix(core): ensure Vertex AI sets hasAccessToPreviewModels and remove aggressive 404 fallback revocation (google-gemini#27067)

* fix(core): ensure stable admin settings comparison across IPC to prevent restart loop (google-gemini#27066)

* fix(deps): update vulnerable dependencies (google-gemini#27062)

* fix(core): resolve EISDIR errors during file processing (google-gemini#21527) (google-gemini#27041)

* docs(extensions): clarify env var sanitization policy for MCP and ext… (google-gemini#22854)

Co-authored-by: Jack Wotherspoon <jackwoth@google.com>
Co-authored-by: Jenna Inouye <jinouye@google.com>

* fix(ui): add ENAMETOOLONG and ENOTDIR to exceptions for file parsing errors (google-gemini#27069)

* fix(cli): explicitly clear entrypoint when spawning sandbox container (google-gemini#27059)

* docs: update sandbox image command (google-gemini#26774)

* fix(core): externalize https-proxy-agent to fix proxy support (google-gemini#26361)

* security: update dependencies to fix critical and high vulnerabilities (google-gemini#27077)

* Fix/web fetch ctrl c abort (google-gemini#24320)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fix(core): add aliases and thinking config for gemini-3.1 models (google-gemini#27007)

* fix(core): use hasAccessToPreview for auto model resolution and fix disappearing models (google-gemini#27112)

* feat(core): add adk.agentSessionSubagentEnabled flag (google-gemini#26947)

* fix(core): enforce compile-time exhaustiveness in content-utils (google-gemini#27207)

* feat(skills): add agent-tui and tui-tester skills (google-gemini#27121)

* fix(context): Fix snapshot recovery across sessions. (google-gemini#26939)

* fix(core): add unit tests for stableStringify (google-gemini#27212)

* fix(core): prefer pwsh.exe over Windows PowerShell 5.1 (google-gemini#25859) (google-gemini#25900)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* feat(core): add LocalSessionInvocation (google-gemini#26665)

* refactor: decouple auto model description and configuration from releaseChannel (google-gemini#27227)

Co-authored-by: David Pierce <davidapierce@google.com>

* fix(core): prevent isBinary false-positive on Windows PTY streams (google-gemini#26565)

* fix(cli): Prevent unmapped keys in Vim Normal mode from inserting text into prompt Input. (google-gemini#25139)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* fix(a2a-server): Implement default policy loading for parity with CLI (google-gemini#27073)

* feat(core): add RemoteSessionInvocation (google-gemini#26937)

* fix: allow configured MCP servers in non-interactive mode (google-gemini#27215)

* fix(core): add exception handling to migrateFromFileStorage (google-gemini#27229)

* fix(cli): bundle ink worker-entry.js (google-gemini#27249)

* feat(core): wire AgentSession invocations into agent-tool (google-gemini#26948)

* fix(core): prevent path traversal in custome command file injection (google-gemini#27234)

* fix(core): respect NO_PROXY in global fetch dispatcher (google-gemini#27216)

* fix(core): correctly handle nullable array types in MCP tools (google-gemini#27228)

* Proposal: deterministic encoding for child-process I/O (google-gemini#27247)

* fix(cli): preserve proxy-agent named exports in ESM bundle (google-gemini#27145)

* feat(cli): add Sublime Text and Emacs Client editors, improve error messages and documentation (google-gemini#21090)

Co-authored-by: Ananth Kini <ananthkini1@gmail.com>

* Changelog for v0.43.0-preview.1 (google-gemini#27297)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* fix(devtools): bundle devtools package to avoid resolution errors (google-gemini#27250)

* fix(cli): integrate PolicyEngine into ACP session to prevent deadlocks (google-gemini#23507) (google-gemini#27252)

* fix: robust ripgrep path resolution and 1p hermetic execution support (google-gemini#27253)

* refactor: decouple stored session deletion from ChatRecordingService (google-gemini#22920) (google-gemini#27039)

* fix(core): improve Alpine shell compatibility (google-gemini#26770)

* fix(core): generalize MCP compliance fix for tool results (google-gemini#27045)

* fix(scripts): scrub CI env vars in dev to keep interactive mode (google-gemini#27159)

* fix(core): Added date field for the GCal MCP (google-gemini#27251)

* fix(core): centralize path validation to prevent crashes from malformed prompts (google-gemini#27211)

* fix(core): prevent SIGHUP kills in PTY environments (WSL2/Kitty/Alacritty) (google-gemini#27267)

* fix(core): dynamic fallback routing for exhausted quota models (google-gemini#27315)

* Auto detect pnpm global installation path for macOS and Windows (google-gemini#22748)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Coco Sheng <cocosheng@google.com>

* fix(windows): resolve interactive shell arrow-key navigation on Windows (google-gemini#23505)

* ci: robust stale issue lifecycle and consolidated triage labels (google-gemini#27015)

* fix(context): Ensure last message is processed. (google-gemini#27232)

* chore/release: bump version to 0.44.0-nightly.20260521.g57c42a5c4 (google-gemini#27324)

* fix(ui): added volta to auto update check (google-gemini#27353)

* perf: optimize issue triage and lifecycle management (google-gemini#27346)

* chore(release): bump version to 0.45.0-nightly.20260521.g854f811be (google-gemini#27362)

* fix(cli): prevent Termux relaunch and resize remount loops (google-gemini#27110)

Co-authored-by: Spencer <spencertang@google.com>

* Feat/a2a expose usage metadata (google-gemini#27288)

* feat(context): Complete simplification work. (google-gemini#27345)

* fix(core): force update_topic tool to execute sequentially (google-gemini#27357)

* Changelog for v0.44.0-preview.0 (google-gemini#27360)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* Changelog for v0.43.0 (google-gemini#27361)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* Revert "fix(core): prevent SIGHUP kills in PTY environments" (google-gemini#27401)

* fix(cli): filter internal session context from history during resumption (google-gemini#27391)

* Update default auto routing (google-gemini#27071)

* fix(core): bypass routing classifiers to prevent orphaned function response errors (google-gemini#27389)

* fix(core): suppress PTY resize EBADF errors (google-gemini#27461)

* fix(core): prevent blacklist bypass in mcp list (google-gemini#27377)

Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com>

* fix(cli): ignore unmapped vim normal keys (google-gemini#27102)

* fix(core): harden PTY resize against native crashes (google-gemini#27496)

* Changelog for v0.45.0-preview.0 (google-gemini#27495)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* Changelog for v0.44.0 (google-gemini#27569)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* fix(cli): prevent spam loop when preferredEditor is invalid (google-gemini#25324)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* Adding quote (google-gemini#27571)

* Transition to flash GA model when experiment flag is present. (google-gemini#27570)

* chore(ci): add optimized PR size labeler and batch workflows (google-gemini#27616)

* fix(ci): use pull_request_target trigger to grant write access on fork PRs (google-gemini#27637)

* chore(release): bump version to 0.47.0-nightly.20260602.gcfcecebe8 (google-gemini#27644)

* Changelog for v0.46.0-preview.0 (google-gemini#27641)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* Respect backend definitions for 3.5 flash and Update auto mode to use 3.5 flash when the flag is enabled. (google-gemini#27645)

* fix(policy): add EBUSY fallback and TOML parse recovery (google-gemini#19919) (google-gemini#21541)

Signed-off-by: krishdef7 <gargkrish06@gmail.com>
Co-authored-by: Sikandar <ma5161310@gmail.com>
Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>

* Changelog for v0.45.0 (google-gemini#27642)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* update the max amount of times the Antigravity transition banner can be displayed. (google-gemini#27676)

* chore: remove experimental text from browser agent docs (google-gemini#27746)

* fix(core): implement atomic update in MCP tool discovery (google-gemini#27619)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com>

* Vertex ai model mapping fix (google-gemini#27749)

* Add documentation and migration commands for Antigravity CLI (google-gemini#27765)

Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com>

* Avoid persisting empty resume sessions (google-gemini#27770)

* chore(release): bump version to 0.48.0-nightly.20260609.g3a13b8eeb (google-gemini#27779)

* ci(dependabot): enable cooldown period for npm packages (google-gemini#27743)

* refactor(core): standardize tool output formatting (google-gemini#27772)

* ci: update workflow logging and policy configurations (google-gemini#27853)

* fix(core): Ensure zero-quota limits fail fast to prevent retry loop hang (google-gemini#27698)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fix(core): handle multi-line escaped quotes in stripShellWrapper (google-gemini#27467)

Co-authored-by: luisfelipe-alt <luisfelipe@google.com>

* fix(cli): prevent path traversal vulnerabilities during skill install… (google-gemini#27767)

* Fix/pending tools and trust overrides (google-gemini#27854)

* ci: use internal environment for scheduled nightly releases (google-gemini#27865) (google-gemini#27939)

* feat(core): Support GDC air-gapped Service Identity after auth library update (google-gemini#27956)

* fix(cli): handle tmux false positive background detection (google-gemini#27572)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com>

* Add static eval source analyzer (google-gemini#27631)

* fix(config): migrate coreTools setting to tools.core (google-gemini#27947)

* fix(core-tools): resolve defensive path resolution for at-reference files (google-gemini#27943)

* Revert "fix(core-tools): resolve defensive path resolution for at-reference files" (google-gemini#27992)

* chore(release): bump version to 0.49.0-nightly.20260617.g4d3dcdce1 (google-gemini#28003)

* Changelog for v0.48.0-preview.0 (google-gemini#27999)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* fix(ci): provide fallbacks for package variables in nightly release (google-gemini#28016)

* chore(deps): pin dependencies and enforce 14-day update cooldown (google-gemini#27948)

* fix(ci): append trailing slash to registry url in npmrc (google-gemini#28038)

* feat: add eval:inventory CLI command and reporting logic (google-gemini#28009)

* fix: resolve workspace publish failures and scheduler event loop starvation (google-gemini#28063)

* fix(ci): use wombat dressing room fallback in nightly release to prevent ENEEDAUTH (google-gemini#28104)

* Add JSON output for eval inventory (google-gemini#28058)

* fix/verify release npm ci ignore scripts (google-gemini#28116)

* fix(ci): prevent workspace binary shadowing in release verification (google-gemini#28132)

* Feat/tool registry discovery (google-gemini#28113)

* fix(ci): prevent bad NPM releases and promote job crashes (google-gemini#28147)

* Changelog for v0.50.0-preview.1 (google-gemini#28150)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* chore(release): bump version to 0.51.0-nightly.20260625.g3fbf93e26 (google-gemini#28151)

* Fix no_proxy test (google-gemini#28131)

Co-authored-by: Jerry Lin <jerrysf@google.com>

* Vertex base url update (google-gemini#28145)

* fix(security): enforce case-insensitive sensitive path blocklist and vscode hitl (google-gemini#27966)

Co-authored-by: David Pierce <davidapierce@google.com>

* fix(core-tools): resolve defensive path resolution for at-reference files and fix macOS tests (google-gemini#28053)

Co-authored-by: David Pierce <davidapierce@google.com>

* feat(caretaker): implement Cloud Run webhook ingestion service (google-gemini#28015)

Co-authored-by: Christian Gunderman <gundermanc@google.com>

* fix(core): resolve symbolic link directory escape in memory import processor (google-gemini#28233)

* feat(caretaker): egress cloud run service skeleton (google-gemini#28167)

* fix(sandbox): make ~/.gitconfig read-only in the macOS sandbox (google-gemini#28221)

Co-authored-by: David Pierce <davidapierce@google.com>

* fix(core): preserve escape sequences in string literals for modern models (google-gemini#28299)

Co-authored-by: David Pierce <davidapierce@google.com>

* fix(core): strip thoughts from scrubbed history turns and resolve thought leakage (google-gemini#27971)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com>
Co-authored-by: David Pierce <davidapierce@google.com>

* Refactor: exclude transient CI configuration files from workspace context (google-gemini#28216)

* feat(caretaker): add triage worker core foundational modules (google-gemini#28163)

* feat(caretaker-egress): implement octokit github action handler for egress service (google-gemini#28303)

* chore(release): bump version to 0.52.0-nightly.20260707.g27a3da3e8 (google-gemini#28323)

* Changelog for v0.51.0-preview.0 (google-gemini#28320)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* Changelog for v0.50.0 (google-gemini#28322)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>
Co-authored-by: David Pierce <davidapierce@google.com>

* fix(core-tools): bypass LLM correction for JSON and IPYNB files in write_file and replace (google-gemini#28223)

Co-authored-by: David Pierce <davidapierce@google.com>

* fix(core): use unambiguous previous intent label in fallback summary (google-gemini#28343)

* feat(caretaker-triage): implement main worker execution loop and egress action publisher (google-gemini#28306)

* fix(privacy): show a clear message when the account has no Code Assist tier (google-gemini#28304)

* fix(core): enrich shared project quota limit errors with setup hint (google-gemini#28391)

* fix(a2a-server): ensure task cancellation aborts execution loop (google-gemini#28316)

* fix(core): simplify plan mode write policy to support relative paths (google-gemini#28398)

* feat(core): Bump node google-auth-library version to 10.9.0 (google-gemini#28385)

Co-authored-by: Jerry Lin <jerrysf@google.com>

* chore/release: bump version to 0.52.0-nightly.20260715.gfa975395b (google-gemini#28402)

* fix(core,a2a): group cancelled tool responses and coalesce consecutive roles to prevent 400 Bad Request (google-gemini#28407)

* feat(caretaker-triage): implement LLM triage orchestrator and container build (google-gemini#28345)

* refactor(cli): align macOS permissive Seatbelt profiles with deny-default model (google-gemini#28424)

* fix(core): mitigate infinite ReAct loops and prompt injection loops (google-gemini#28429)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fix(a2a-server): enforce workspace trust and task isolation to prevent RCE (google-gemini#28470)

* fix(core): sequentially verify cached credentials and restore GOOGLE_APPLICATION_CREDENTIALS fallback (google-gemini#28472)

Co-authored-by: David Pierce <davidapierce@google.com>

* feat(evals): add eval coverage report command (google-gemini#28169)

* Changelog for v0.53.0-preview.0 (google-gemini#28507)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* Changelog for v0.52.0 (google-gemini#28508)

Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>

* chore(release): bump version to 0.54.0-nightly.20260722.gf743ab579 (google-gemini#28510)

* fix(caretaker): sanitize and wrap issue title in untrusted_context (google-gemini#28352)

* chore(caretaker): update vitest to v3.2.4 and add package-lock.json files (google-gemini#28409)

* fix(core): rotate session ID on model fallback to prevent stateful API errors (google-gemini#28469)

* feat(caretaker-triage): post comment before auto-closing issues (google-gemini#28411)

* fix(core): enforce HTTPS for GoogleCredentialsAuthProvider to prevent cleartext leakage (google-gemini#28517)

* fix(core): filter out thought parts from getHistoryTurns when context management is disabled (google-gemini#28509)

---------

Signed-off-by: M-DEV-1 <mahadevankizhakkedathu@gmail.com>
Signed-off-by: Daniel Finimundi <danielrf@motorola.com>
Signed-off-by: krishdef7 <gargkrish06@gmail.com>
Co-authored-by: joshualitt <joshualitt@google.com>
Co-authored-by: Sandy Tao <sandytao520@icloud.com>
Co-authored-by: Christian Van <113378434+cvan20191@users.noreply.github.com>
Co-authored-by: ruomeng <ruomeng@google.com>
Co-authored-by: Adib234 <30782825+Adib234@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Rhys Sullivan <39114868+RhysSullivan@users.noreply.github.com>
Co-authored-by: Jack Wotherspoon <jackwoth@google.com>
Co-authored-by: gemini-cli-robot <gemini-cli-robot@google.com>
Co-authored-by: gemini-cli-robot <224641728+gemini-cli-robot@users.noreply.github.com>
Co-authored-by: Coco Sheng <cocosheng@google.com>
Co-authored-by: Michael Bleigh <mbleigh@mbleigh.com>
Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>
Co-authored-by: Daniel Weis <danielweis@users.noreply.github.com>
Co-authored-by: Christopher Thomas <cobekgn@gmail.com>
Co-authored-by: Sam Roberts <158088236+g-samroberts@users.noreply.github.com>
Co-authored-by: Dev Randalpura <devrandalpura@google.com>
Co-authored-by: Br1an <932039080@qq.com>
Co-authored-by: AK <akhilbussiness@gmail.com>
Co-authored-by: mahadevan <135952571+M-DEV-1@users.noreply.github.com>
Co-authored-by: Christian Gunderman <gundermanc@google.com>
Co-authored-by: Adam Weidman <65992621+adamfweidman@users.noreply.github.com>
Co-authored-by: Aishanee Shah <aishaneeshah@google.com>
Co-authored-by: JAYADITYA <96861162+JayadityaGit@users.noreply.github.com>
Co-authored-by: Sri Pasumarthi <111310667+sripasg@users.noreply.github.com>
Co-authored-by: krishdef7 <157892833+krishdef7@users.noreply.github.com>
Co-authored-by: Spencer <spencertang@google.com>
Co-authored-by: Daniel Finimundi <daniel@finimundi.com>
Co-authored-by: Aryan Singh <146713101+dimssu@users.noreply.github.com>
Co-authored-by: Jacob Richman <jacob314@gmail.com>
Co-authored-by: Suhaan Raqeeb Khavas <suhaanrk73@gmail.com>
Co-authored-by: Neil Nair <65729206+Neil-N4@users.noreply.github.com>
Co-authored-by: Franco Pieri <geo22therm@gmail.com>
Co-authored-by: Eswar809 <deevieswar44@gmail.com>
Co-authored-by: Kuroda Kayn <kurodakayn@outlook.com>
Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com>
Co-authored-by: Yulong Wu <50110323+TNTCompany@users.noreply.github.com>
Co-authored-by: kevinjwang1 <kevinjwang@google.com>
Co-authored-by: David Pierce <davidapierce@google.com>
Co-authored-by: Sahil Kirad <167863755+sahilkirad@users.noreply.github.com>
Co-authored-by: Jenna Inouye <jinouye@google.com>
Co-authored-by: EMERSON BUSSON <93008583+emersonbusson@users.noreply.github.com>
Co-authored-by: ifitisit <90478348+ifitisit@users.noreply.github.com>
Co-authored-by: PROTHAM <155388736+ProthamD@users.noreply.github.com>
Co-authored-by: 7. Sun <jhao.sun@gmail.com>
Co-authored-by: sotokisehiro <101786086+sotokisehiro@users.noreply.github.com>
Co-authored-by: Anish Sabharwal <anishs1207@gmail.com>
Co-authored-by: kaluchi <kaluchi@gmail.com>
Co-authored-by: Tirth Naik <naik.ti@northeastern.edu>
Co-authored-by: Rajesh patel <145205731+Rajeshpatel07@users.noreply.github.com>
Co-authored-by: Keith Schaab <keith.schaab@gmail.com>
Co-authored-by: Ramón Medrano Llamas <45878745+rmedranollamas@users.noreply.github.com>
Co-authored-by: Om Patel <ompatel.aiml@gmail.com>
Co-authored-by: ashishch432 <55024632+ashishch432@users.noreply.github.com>
Co-authored-by: Andrea Alberti <a.alberti82@gmail.com>
Co-authored-by: Ananth Kini <ananthkini1@gmail.com>
Co-authored-by: Yuvraj Angad Singh <36276913+yuvrajangadsingh@users.noreply.github.com>
Co-authored-by: Debasish <90102437+dibyx@users.noreply.github.com>
Co-authored-by: Hashaam Zahid <68606886+Hashaam101@users.noreply.github.com>
Co-authored-by: tison <wander4096@gmail.com>
Co-authored-by: adithya32 <163162210+KumarADITHYA123@users.noreply.github.com>
Co-authored-by: Syed Ayman Quadri <87442765+saymanq@users.noreply.github.com>
Co-authored-by: jvargassanchez-dot <jvargassanchez@google.com>
Co-authored-by: Billy Biggs <bbiggs@google.com>
Co-authored-by: Om Patel <ompatel@google.com>
Co-authored-by: Mukunda Rao Katta <mukunda.vjcs6@gmail.com>
Co-authored-by: nirali <124287834+Niralisj@users.noreply.github.com>
Co-authored-by: Sikandar <ma5161310@gmail.com>
Co-authored-by: Gaurav <39389231+gsquared94@users.noreply.github.com>
Co-authored-by: luisfelipe-alt <luisfelipe@google.com>
Co-authored-by: Cesar Sanchez Coraspe <sanchezcoraspe@google.com>
Co-authored-by: sidhantgoyal-droid <sidhantgoyal@google.com>
Co-authored-by: amelidev <ameliesther@google.com>
Co-authored-by: Vedant Mahajan <vedant.04.mahajan@gmail.com>
Co-authored-by: Jerry Lin <44830071+jerrylin3321@users.noreply.github.com>
Co-authored-by: Jerry Lin <jerrysf@google.com>
Co-authored-by: Chad <chaddiao0@gmail.com>
Co-authored-by: Chad <chaddiao@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/core Issues related to User Interface, OS Support, Core Functionality help wanted We will accept PRs from all issues marked as "help wanted". Thanks for your support! priority/p2 Important but can be addressed in a future release. priority/p3 Backlog - a good idea but not currently a priority. size/l A large sized PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

External editor support: unclear error messages, missing editors, incomplete documentation

6 participants