Skip to content

feat(core): add LocalSessionInvocation - #26665

Merged
adamfweidman merged 18 commits into
mainfrom
agent-session/local-invocation
May 18, 2026
Merged

adamfweidman merged 18 commits into
mainfrom
agent-session/local-invocation

Conversation

@adamfweidman

@adamfweidman adamfweidman commented May 7, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Implements LocalSessionInvocation to enable session-based local subagent invocation, wrapping LocalAgentExecutor behind AgentProtocol. This branch is stacked on top of the refactor/subagent-progress-enums branch.

Details

  • Added LocalSessionInvocation class in packages/core/src/agents/local-session-invocation.ts.
  • Integrated with the AgentProtocol interface to abstract local execution.
  • Added comprehensive unit tests in local-session-invocation.test.ts.

Related Issues

Progress towards #22700

How to Validate

Run the unit tests:

npx vitest run packages/core/src/agents/local-session-invocation.test.ts

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

@adamfweidman
adamfweidman requested a review from a team as a code owner May 7, 2026 19:21
@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 introduces a new infrastructure for managing subagent sessions, specifically adding LocalSessionInvocation for local agents and defining standardized protocols to encapsulate agent execution logic. These changes are part of the broader ADK integration effort to unify how different agent types interact with the core system, ensuring consistent handling of streaming activity and execution results.

Highlights

  • LocalSessionInvocation: Added a new class to handle session-based local subagent execution, providing a bridge for streaming activity and result formatting.
  • Subagent Protocols: Introduced RemoteSubagentProtocol and LocalSubagentProtocol to standardize communication patterns across different agent types.
  • ADK Integration: Refactored agent communication patterns to support the ongoing ADK migration effort.
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 the 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 counterproductive. 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.

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-cli

gemini-cli Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

Hi @adamfweidman, thank you so much for your contribution to Gemini CLI! We really appreciate the time and effort you've put into this.

We're making some updates to our contribution process to improve how we track and review changes. Please take a moment to review our recent discussion post: Improving Our Contribution Process & Introducing New Guidelines.

Key Update: Starting January 26, 2026, the Gemini CLI project will require all pull requests to be associated with an existing issue. Any pull requests not linked to an issue by that date will be automatically closed.

Thank you for your understanding and for being a part of our community!

@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 introduces LocalSessionInvocation and RemoteSubagentProtocol to manage local and remote subagent executions via session-based protocols, including progress streaming and abort handling. Comprehensive unit tests for these new components are also added. Feedback identifies that LocalSessionInvocation lacks nullish checks when accessing activity data, which could display 'undefined' in the UI, and notes that THOUGHT_CHUNK updates should append content instead of overwriting it to maintain the full thought history.

Comment thread packages/core/src/agents/local-session-invocation.ts Outdated
Comment thread packages/core/src/agents/local-session-invocation.ts
@gemini-cli gemini-cli Bot added the status/need-issue Pull requests that need to have an associated issue. label May 7, 2026
@adamfweidman
adamfweidman force-pushed the agent-session/local-protocol branch from 33ed68f to 5cb3bd5 Compare May 8, 2026 18:27
Base automatically changed from agent-session/local-protocol to main May 8, 2026 19:43
@adamfweidman
adamfweidman requested review from a team as code owners May 12, 2026 04:09
@adamfweidman
adamfweidman force-pushed the agent-session/local-invocation branch from c6e26af to 07e94be Compare May 12, 2026 04:12
@github-actions

github-actions Bot commented May 12, 2026 •

Copy link
Copy Markdown

Size Change: -386 B (0%)

Total Size: 33.8 MB

Filename Size Change
./bundle/chunk-47QARUE7.js 0 B -2.78 MB (removed) 🏆
./bundle/chunk-GKUXJ5DK.js 0 B -19.5 kB (removed) 🏆
./bundle/chunk-JHVACMSL.js 0 B -3.43 kB (removed) 🏆
./bundle/chunk-ON54WSZP.js 0 B -49.2 kB (removed) 🏆
./bundle/chunk-QBB2LVA3.js 0 B -3.77 kB (removed) 🏆
./bundle/chunk-UJDVUFYH.js 0 B -16.5 MB (removed) 🏆
./bundle/chunk-X6FZ2CDR.js 0 B -12.5 kB (removed) 🏆
./bundle/chunk-YZK33LDU.js 0 B -659 kB (removed) 🏆
./bundle/core-4DPAZXHV.js 0 B -49.1 kB (removed) 🏆
./bundle/devtoolsService-DEKBO2LJ.js 0 B -28 kB (removed) 🏆
./bundle/gemini-CJTNRCHS.js 0 B -586 kB (removed) 🏆
./bundle/interactiveCli-SH7UBMZI.js 0 B -1.3 MB (removed) 🏆
./bundle/liteRtServerManager-JDXEVYRX.js 0 B -2.08 kB (removed) 🏆
./bundle/oauth2-provider-ICBXMBJX.js 0 B -9.12 kB (removed) 🏆
./bundle/chunk-36GHQF47.js 2.78 MB +2.78 MB (new file) 🆕
./bundle/chunk-3CSIIYAW.js 3.77 kB +3.77 kB (new file) 🆕
./bundle/chunk-4TCIWBJM.js 49.2 kB +49.2 kB (new file) 🆕
./bundle/chunk-A42T6XAP.js 16.5 MB +16.5 MB (new file) 🆕
./bundle/chunk-HDUBSJCD.js 659 kB +659 kB (new file) 🆕
./bundle/chunk-KQYFQOYY.js 12.5 kB +12.5 kB (new file) 🆕
./bundle/chunk-UMLLQLC7.js 19.5 kB +19.5 kB (new file) 🆕
./bundle/chunk-USS6MLIQ.js 3.43 kB +3.43 kB (new file) 🆕
./bundle/core-OXRORHFC.js 49.1 kB +49.1 kB (new file) 🆕
./bundle/devtoolsService-253RNH7V.js 28 kB +28 kB (new file) 🆕
./bundle/gemini-TD4BBTU2.js 586 kB +586 kB (new file) 🆕
./bundle/interactiveCli-IPZPKUKM.js 1.3 MB +1.3 MB (new file) 🆕
./bundle/liteRtServerManager-NW6SE4GQ.js 2.08 kB +2.08 kB (new file) 🆕
./bundle/oauth2-provider-MYIWADKJ.js 9.12 kB +9.12 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size Change
./bundle/bundled/third_party/index.js 8 MB 0 B
./bundle/chunk-34MYV7JD.js 2.45 kB 0 B
./bundle/chunk-5AUYMPVF.js 858 B 0 B
./bundle/chunk-5PS3AYFU.js 1.18 kB 0 B
./bundle/chunk-664ZODQF.js 124 kB 0 B
./bundle/chunk-CTHYVDCX.js 39.8 kB 0 B
./bundle/chunk-DAHVX5MI.js 206 kB 0 B
./bundle/chunk-IUUIT4SU.js 56.5 kB 0 B
./bundle/cleanup-HLPJZRP3.js 0 B -902 B (removed) 🏆
./bundle/devtools-36NN55EP.js 696 kB 0 B
./bundle/dist-JYLQM7LS.js 373 B 0 B
./bundle/events-XB7DADIJ.js 418 B 0 B
./bundle/examples/hooks/scripts/on-start.js 188 B 0 B
./bundle/examples/mcp-server/example.js 1.43 kB 0 B
./bundle/gemini.js 5.07 kB 0 B
./bundle/getMachineId-bsd-TXG52NKR.js 1.55 kB 0 B
./bundle/getMachineId-darwin-7OE4DDZ6.js 1.55 kB 0 B
./bundle/getMachineId-linux-SHIFKOOX.js 1.34 kB 0 B
./bundle/getMachineId-unsupported-5U5DOEYY.js 1.06 kB 0 B
./bundle/getMachineId-win-6KLLGOI4.js 1.72 kB 0 B
./bundle/multipart-parser-KPBZEGQU.js 11.7 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/client/main.js 222 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.js 229 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/index.js 13.4 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/types.js 132 B 0 B
./bundle/sandbox-macos-permissive-open.sb 890 B 0 B
./bundle/sandbox-macos-permissive-proxied.sb 1.31 kB 0 B
./bundle/sandbox-macos-restrictive-open.sb 3.36 kB 0 B
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB 0 B
./bundle/sandbox-macos-strict-open.sb 4.82 kB 0 B
./bundle/sandbox-macos-strict-proxied.sb 5.02 kB 0 B
./bundle/src-QVCVGIUX.js 47 kB 0 B
./bundle/start-GIZ6HWR3.js 0 B -622 B (removed) 🏆
./bundle/tree-sitter-7U6MW5PS.js 274 kB 0 B
./bundle/tree-sitter-bash-34ZGLXVX.js 1.84 MB 0 B
./bundle/cleanup-AXGEUNTA.js 902 B +902 B (new file) 🆕
./bundle/start-JLKXQJ5D.js 622 B +622 B (new file) 🆕

compressed-size-action

adamfweidman and others added 10 commits May 12, 2026 13:44
… invocation

New invocation class that delegates to LocalSubagentSession instead of
directly using LocalAgentExecutor. Existing LocalSubagentInvocation is
untouched — this will be wired in behind a feature flag in a later PR.
Use typeof check and trim to avoid displaying 'undefined' for missing properties in THOUGHT_CHUNK, TOOL_CALL_START, TOOL_CALL_END, and ERROR events.

TAG=agy
CONV=d4b1d79a-226d-4301-8d60-bdb5d4701569
@adamfweidman
adamfweidman changed the base branch from main to refactor/subagent-progress-enums May 12, 2026 19:10

@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 introduces the LocalSessionInvocation class and a comprehensive test suite to handle local subagent execution via LocalSubagentSession. The implementation manages activity streaming for thoughts and tool calls, progress updates, and lifecycle management including abort and error handling. Feedback focuses on security enhancements to prevent prompt injection by sanitizing tool arguments and avoiding user-controlled error messages in llmContent. Additionally, a correction was suggested for the THOUGHT_CHUNK handling to ensure streaming deltas are appended rather than overwritten.

Comment thread packages/core/src/agents/local-session-invocation.ts
Comment thread packages/core/src/agents/local-session-invocation.ts
Comment thread packages/core/src/agents/local-session-invocation.ts Outdated
@jacob314

Copy link
Copy Markdown
Contributor

This review was performed by /review-frontend with manual review by Jacob. Note that review-frontend also noted that LocalSessionInvocation and LocalSubagentInvocation are nearly identical but I am assuming that is intentional.

Findings & Feedback

1. THOUGHT_CHUNK Streaming Bugs

There are two issues in the THOUGHT_CHUNK handler within local-session-invocation.ts:

  • Overwriting vs. Appending: lastItem.content = sanitizeThoughtContent(text); overwrites the content with the latest chunk. Since streaming chunks are typically deltas, this will cause the UI to only show the most recent fragment rather than the full thought. It should append the sanitized chunk instead.
  • Whitespace Trimming: Calling .trim() on each incoming chunk will strip intended leading/trailing spaces (e.g., words being smashed together). Trimming should likely only happen on the final result, not on individual stream chunks.

2. Missing Exhaustive Checks

The switch (activity.type) block in onActivity is missing a checkExhaustive call in the default case. Per the project's strict development rules, all switches on enums or discriminated unions should use this pattern to ensure compile-time safety.

3. Inconsistent State Handling

  • String Literals vs. Enums: The code inconsistently checks against the string literal 'running' (e.g., line 128) and the enum SubagentState.RUNNING (e.g., line 167). Please use the enum consistently.
  • execute Return Type: The llmContent property in the returned ToolResult is sometimes a Part[] (on success) and sometimes a string (on error). For consistency with other core services, it is recommended to always return Part[].

4. Registry & Integration

LocalSessionInvocation is added and tested but doesn't appear to be registered in AgentRegistry or utilized by AgentTool yet. If this is a staged rollout, that's fine, but please confirm if integration was introduced for this PR.

5. content-utils.ts Fallback

The PR includes changes to content-utils.ts to warn and serialize unknown ContentPart types instead of throwing. While this prevents crashes, it bypasses the type safety we usually aim for with checkExhaustive. Given the importance of these conversions, consider if we should instead be adding the missing types to the union or using a stricter exhaustive check during development.

@adamfweidman

Copy link
Copy Markdown
Collaborator Author
  1. This mirrors existing behavior:

    lastItem.content = sanitizeThoughtContent(text);

  2. good catch! added.

  3. Valid. Addressed.

  4. Integrated in feat(core): wire AgentSession invocations into agent-tool #26948

  5. Will add typesafety check in followup PR. I think allowing runtime safety here is good. Added in fix(core): enforce compile-time exhaustiveness in content-utils #27207.

@github-actions

github-actions Bot commented May 18, 2026 •

Copy link
Copy Markdown

✅ 69 tests passed successfully on gemini-3-flash-preview.

🧠 Model Steering Guidance

This PR modifies files that affect the model's behavior (prompts, tools, or instructions).

  • ⚠️ Consider adding Evals: No behavioral evaluations (evals/*.eval.ts) were added or updated in this PR. Consider adding a test case to verify the new behavior and prevent regressions.
  • 🚀 Maintainer Reminder: Please ensure that these changes do not regress results on benchmark evals before merging.

This is an automated guidance message triggered by steering logic signatures.

Comment thread packages/core/src/agent/content-utils.test.ts
Comment thread packages/core/src/agents/local-session-invocation.test.ts Outdated
Comment thread packages/core/src/agents/local-session-invocation.ts Outdated
Comment thread packages/core/src/agents/local-session-invocation.ts Outdated
Comment thread packages/core/src/agents/local-session-invocation.ts Outdated

@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.

Approved with some nits.lgtm

…se year, description truncation, callId parallel tracking)
@adamfweidman
adamfweidman force-pushed the agent-session/local-invocation branch from 7d5d1c5 to af3aadd Compare May 18, 2026 19:12
@adamfweidman
adamfweidman enabled auto-merge May 18, 2026 19:18
@adamfweidman
adamfweidman added this pull request to the merge queue May 18, 2026
Merged via the queue into main with commit 6973b96 May 18, 2026
28 of 29 checks passed
@adamfweidman
adamfweidman deleted the agent-session/local-invocation branch May 18, 2026 19:45
@sripasg sripasg added the size/xl An extra large PR label Jun 2, 2026
software-0ficial pushed a commit to software-0ficial/gemini-cli that referenced this pull request Jul 9, 2026
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 <[email protected]>

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

Co-authored-by: gemini-cli-robot <[email protected]>

* 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 <[email protected]>

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

Co-authored-by: Sam Roberts <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>
Co-authored-by: Sam Roberts <[email protected]>

* 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 <[email protected]>
Co-authored-by: Tommaso Sciortino <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>
Co-authored-by: Spencer <[email protected]>
Co-authored-by: Tommaso Sciortino <[email protected]>

* 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 <[email protected]>
Co-authored-by: Dev Randalpura <[email protected]>

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

Co-authored-by: Jacob Richman <[email protected]>

* 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 <[email protected]>

* revert 6b9b778 (google-gemini#26893)

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

Co-authored-by: Spencer <[email protected]>

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

Co-authored-by: Tommaso Sciortino <[email protected]>

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

Co-authored-by: Tommaso Sciortino <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

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

Signed-off-by: M-DEV-1 <[email protected]>
Co-authored-by: Tommaso Sciortino <[email protected]>

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

Co-authored-by: gemini-cli-robot <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>
Co-authored-by: Jenna Inouye <[email protected]>

* 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 <[email protected]>

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

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

Co-authored-by: David Pierce <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

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

Co-authored-by: gemini-cli-robot <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

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

Co-authored-by: gemini-cli-robot <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

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

Co-authored-by: gemini-cli-robot <[email protected]>

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

Co-authored-by: Tommaso Sciortino <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>
Co-authored-by: Sikandar <[email protected]>
Co-authored-by: Tommaso Sciortino <[email protected]>

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

Co-authored-by: gemini-cli-robot <[email protected]>

* 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 <[email protected]>

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

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

Co-authored-by: Gal Zahavi <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

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

Co-authored-by: David Pierce <[email protected]>

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

Co-authored-by: Christian Gunderman <[email protected]>

* 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 <[email protected]>

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

Co-authored-by: David Pierce <[email protected]>

* 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 <[email protected]>
Co-authored-by: David Pierce <[email protected]>

* 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 <[email protected]>

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

Co-authored-by: gemini-cli-robot <[email protected]>
Co-authored-by: David Pierce <[email protected]>

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

Co-authored-by: David Pierce <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

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

Co-authored-by: gemini-cli-robot <[email protected]>

* 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 <[email protected]>
Signed-off-by: Daniel Finimundi <[email protected]>
Signed-off-by: krishdef7 <[email protected]>
Co-authored-by: joshualitt <[email protected]>
Co-authored-by: Sandy Tao <[email protected]>
Co-authored-by: Christian Van <[email protected]>
Co-authored-by: ruomeng <[email protected]>
Co-authored-by: Adib234 <[email protected]>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Rhys Sullivan <[email protected]>
Co-authored-by: Jack Wotherspoon <[email protected]>
Co-authored-by: gemini-cli-robot <[email protected]>
Co-authored-by: gemini-cli-robot <[email protected]>
Co-authored-by: Coco Sheng <[email protected]>
Co-authored-by: Michael Bleigh <[email protected]>
Co-authored-by: Tommaso Sciortino <[email protected]>
Co-authored-by: Daniel Weis <[email protected]>
Co-authored-by: Christopher Thomas <[email protected]>
Co-authored-by: Sam Roberts <[email protected]>
Co-authored-by: Dev Randalpura <[email protected]>
Co-authored-by: Br1an <[email protected]>
Co-authored-by: AK <[email protected]>
Co-authored-by: mahadevan <[email protected]>
Co-authored-by: Christian Gunderman <[email protected]>
Co-authored-by: Adam Weidman <[email protected]>
Co-authored-by: Aishanee Shah <[email protected]>
Co-authored-by: JAYADITYA <[email protected]>
Co-authored-by: Sri Pasumarthi <[email protected]>
Co-authored-by: krishdef7 <[email protected]>
Co-authored-by: Spencer <[email protected]>
Co-authored-by: Daniel Finimundi <[email protected]>
Co-authored-by: Aryan Singh <[email protected]>
Co-authored-by: Jacob Richman <[email protected]>
Co-authored-by: Suhaan Raqeeb Khavas <[email protected]>
Co-authored-by: Neil Nair <[email protected]>
Co-authored-by: Franco Pieri <[email protected]>
Co-authored-by: Eswar809 <[email protected]>
Co-authored-by: Kuroda Kayn <[email protected]>
Co-authored-by: Gal Zahavi <[email protected]>
Co-authored-by: Yulong Wu <[email protected]>
Co-authored-by: kevinjwang1 <[email protected]>
Co-authored-by: David Pierce <[email protected]>
Co-authored-by: Sahil Kirad <[email protected]>
Co-authored-by: Jenna Inouye <[email protected]>
Co-authored-by: EMERSON BUSSON <[email protected]>
Co-authored-by: ifitisit <[email protected]>
Co-authored-by: PROTHAM <[email protected]>
Co-authored-by: 7. Sun <[email protected]>
Co-authored-by: sotokisehiro <[email protected]>
Co-authored-by: Anish Sabharwal <[email protected]>
Co-authored-by: kaluchi <[email protected]>
Co-authored-by: Tirth Naik <[email protected]>
Co-authored-by: Rajesh patel <[email protected]>
Co-authored-by: Keith Schaab <[email protected]>
Co-authored-by: Ramón Medrano Llamas <[email protected]>
Co-authored-by: Om Patel <[email protected]>
Co-authored-by: ashishch432 <[email protected]>
Co-authored-by: Andrea Alberti <[email protected]>
Co-authored-by: Ananth Kini <[email protected]>
Co-authored-by: Yuvraj Angad Singh <[email protected]>
Co-authored-by: Debasish <[email protected]>
Co-authored-by: Hashaam Zahid <[email protected]>
Co-authored-by: tison <[email protected]>
Co-authored-by: adithya32 <[email protected]>
Co-authored-by: Syed Ayman Quadri <[email protected]>
Co-authored-by: jvargassanchez-dot <[email protected]>
Co-authored-by: Billy Biggs <[email protected]>
Co-authored-by: Om Patel <[email protected]>
Co-authored-by: Mukunda Rao Katta <[email protected]>
Co-authored-by: nirali <[email protected]>
Co-authored-by: Sikandar <[email protected]>
Co-authored-by: Gaurav <[email protected]>
Co-authored-by: luisfelipe-alt <[email protected]>
Co-authored-by: Cesar Sanchez Coraspe <[email protected]>
Co-authored-by: sidhantgoyal-droid <[email protected]>
Co-authored-by: amelidev <[email protected]>
Co-authored-by: Vedant Mahajan <[email protected]>
Co-authored-by: Jerry Lin <[email protected]>
Co-authored-by: Jerry Lin <[email protected]>
Co-authored-by: Chad <[email protected]>
Co-authored-by: Chad <[email protected]>

This branch was previously deployed

1 inactive deployment
eval-gate — af3aadda Deployed May 18, 2026 by adamfweidman via Evaluate Steering & Regressions #1347
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xl An extra large PR status/need-issue Pull requests that need to have an associated issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants