Skip to content

fix(core): handle non-string model flags in resolution#26069

Merged
Adib234 merged 8 commits intomainfrom
fix/model-resolution-typeerror
Apr 28, 2026
Merged

fix(core): handle non-string model flags in resolution#26069
Adib234 merged 8 commits intomainfrom
fix/model-resolution-typeerror

Conversation

@Adib234
Copy link
Copy Markdown
Contributor

@Adib234 Adib234 commented Apr 27, 2026

Summary

Fixes a TypeError: resolved.startsWith is not a function crash when starting the CLI with multiple --model flags or a flag without a value (parsed as boolean).

Details

  • Added defensive coercion in packages/cli/src/config/config.ts to ensure argv.model is always a string.
  • Added defensive check in packages/core/src/config/models.ts's resolveModel function to handle non-string inputs at runtime.
  • Added unit tests in packages/core and packages/cli to verify handling of arrays, booleans, and nulls in model resolution.

Related Issues

Fixes #23934

How to Validate

  1. Run gemini --model foo --model bar - should not crash and pick 'bar'.
  2. Run gemini --model - should not crash and treat it as string "true" (or whatever yargs produces).
  3. Run npm test -w @google/gemini-cli -w @google/gemini-cli-core.

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

Ensures that `argv.model` (or fallbacks) are coerced to strings before
being passed to resolution logic. This prevents a TypeError when yargs
parses multiple `--model` flags as an array or a value-less flag as a
boolean.

Fixes #23934
@Adib234 Adib234 requested review from a team as code owners April 27, 2026 19:42
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 27, 2026

Size Change: +376 B (0%)

Total Size: 33.9 MB

Filename Size Change
./bundle/chunk-6CE7MC2L.js 0 B -49.2 kB (removed) 🏆
./bundle/chunk-7MZLJYP5.js 0 B -14.7 MB (removed) 🏆
./bundle/chunk-BB4ECRTZ.js 0 B -3.8 kB (removed) 🏆
./bundle/chunk-MTD736U4.js 0 B -1.97 MB (removed) 🏆
./bundle/chunk-QELRWQ43.js 0 B -2.73 MB (removed) 🏆
./bundle/chunk-UG4JF3Q2.js 0 B -673 kB (removed) 🏆
./bundle/chunk-UQSUR5NJ.js 0 B -3.43 kB (removed) 🏆
./bundle/core-SBDYHOQV.js 0 B -48.1 kB (removed) 🏆
./bundle/devtoolsService-QAPVRKZF.js 0 B -27.8 kB (removed) 🏆
./bundle/gemini-YBVNLMFL.js 0 B -574 kB (removed) 🏆
./bundle/interactiveCli-3P45P5O6.js 0 B -1.31 MB (removed) 🏆
./bundle/liteRtServerManager-24PPPOCE.js 0 B -2.08 kB (removed) 🏆
./bundle/oauth2-provider-FDIWOY3D.js 0 B -9.16 kB (removed) 🏆
./bundle/chunk-2BEAN63T.js 3.43 kB +3.43 kB (new file) 🆕
./bundle/chunk-4HGHFGEZ.js 673 kB +673 kB (new file) 🆕
./bundle/chunk-7NKZOIXS.js 49.2 kB +49.2 kB (new file) 🆕
./bundle/chunk-7R5EE4LO.js 14.7 MB +14.7 MB (new file) 🆕
./bundle/chunk-BAXWLXJZ.js 3.8 kB +3.8 kB (new file) 🆕
./bundle/chunk-WKNSW6VX.js 2.73 MB +2.73 MB (new file) 🆕
./bundle/chunk-XRLFHCHC.js 1.97 MB +1.97 MB (new file) 🆕
./bundle/core-J6IFBOBL.js 48.1 kB +48.1 kB (new file) 🆕
./bundle/devtoolsService-DWVCJQ2O.js 27.8 kB +27.8 kB (new file) 🆕
./bundle/gemini-IQXVSC5S.js 575 kB +575 kB (new file) 🆕
./bundle/interactiveCli-WOD2VAET.js 1.31 MB +1.31 MB (new file) 🆕
./bundle/liteRtServerManager-XTWXS7EO.js 2.08 kB +2.08 kB (new file) 🆕
./bundle/oauth2-provider-KB4BI77S.js 9.16 kB +9.16 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-DAHVX5MI.js 206 kB 0 B
./bundle/chunk-IUUIT4SU.js 56.5 kB 0 B
./bundle/chunk-RJTRUG2J.js 39.8 kB 0 B
./bundle/cleanup-3SMQAVBW.js 0 B -932 B (removed) 🏆
./bundle/devtools-36NN55EP.js 696 kB 0 B
./bundle/dist-T73EYRDX.js 356 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 4.97 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/memoryDiscovery-NSOLCG4U.js 0 B -980 B (removed) 🏆
./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-74QEIN7P.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-QKX2ZS45.js 932 B +932 B (new file) 🆕
./bundle/memoryDiscovery-FN3IAPBT.js 980 B +980 B (new file) 🆕
./bundle/start-XYAJ3YMV.js 622 B +622 B (new file) 🆕

compressed-size-action

@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 addresses a runtime crash occurring when the CLI receives unexpected input formats for the model flag, such as multiple flag declarations or boolean values. By introducing defensive type coercion and input validation, the system now reliably handles these cases, ensuring stability during model resolution.

Highlights

  • CLI Configuration Robustness: Added defensive coercion in the CLI configuration loader to ensure the model flag is always treated as a string, preventing crashes when multiple flags or non-string values are provided.
  • Core Model Resolution Safety: Implemented runtime checks in the core model resolution logic to handle arrays, booleans, and null values gracefully.
  • Comprehensive Testing: Added unit tests in both CLI and core packages to verify that non-standard model inputs are handled correctly without throwing errors.
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.

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.

Copy link
Copy Markdown
Contributor

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

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 defensive logic to handle multiple --model flags and non-string inputs by normalizing them to a single string, with updates in both the CLI and core packages. The review feedback highlights several areas for improvement: reverting unrelated and extensive changes to package-lock.json, unifying inconsistent normalization logic between packages (specifically regarding null handling and string trimming), and avoiding parameter reassignment in favor of cleaner array access methods.

Comment thread packages/cli/src/config/config.ts Outdated
Comment thread packages/core/src/config/models.ts Outdated
Adib234 and others added 2 commits April 27, 2026 15:53
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@google-gemini google-gemini deleted a comment from gemini-code-assist Bot Apr 27, 2026
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@gemini-cli gemini-cli Bot added the area/core Issues related to User Interface, OS Support, Core Functionality label Apr 27, 2026
@Adib234 Adib234 added this pull request to the merge queue Apr 28, 2026
Merged via the queue into main with commit b0ffa3b Apr 28, 2026
27 checks passed
@Adib234 Adib234 deleted the fix/model-resolution-typeerror branch April 28, 2026 17:26
TirthNaik-99 pushed a commit to TirthNaik-99/gemini-cli that referenced this pull request May 4, 2026
…#26069)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
kimjune01 pushed a commit to kimjune01/gemini-cli-claude that referenced this pull request May 6, 2026
…#26069)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: "Reason: TypeError: resolved.startsWith is not a function"

2 participants