Skip to content

fix(core): truncate excessively long lines in grep search output#21147

Merged
gundermanc merged 2 commits intomainfrom
long-line-minimal
Mar 5, 2026
Merged

fix(core): truncate excessively long lines in grep search output#21147
gundermanc merged 2 commits intomainfrom
long-line-minimal

Conversation

@gundermanc
Copy link
Member

@gundermanc gundermanc commented Mar 4, 2026

Summary

This PR fixes a "too long message" error in the CLI by truncating excessively long lines in grep_search results.

Details

When grep_search finds matches in files with extremely long lines (e.g., minified JS, base64 strings, or large JSON blobs), the full line content was previously returned to the LLM and the UI. This could cause the CLI to hang or crash during rendering (specifically in wrap-ansi) and was inefficient for context usage.

This change enforces a MAX_LINE_LENGTH_TEXT_FILE (2000 characters) limit on lines formatted in grep-utils.ts. Lines exceeding this limit are truncated and appended with ... [truncated].

Related Issues

N/A (Verified via new unit test)

How to Validate

  1. Run the new unit test: npm test -w @google/gemini-cli-core -- src/tools/grep.test.ts
  2. Specifically, the test should truncate excessively long lines verifies the behavior.

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

@github-actions
Copy link

github-actions bot commented Mar 4, 2026

Size Change: +271 B (0%)

Total Size: 26 MB

ℹ️ View Unchanged
Filename Size Change
./bundle/gemini.js 25.5 MB +271 B (0%)
./bundle/node_modules/@google/gemini-cli-devtools/dist/client/main.js 221 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.js 227 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/index.js 11.5 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

compressed-size-action

@gundermanc gundermanc changed the title fix(cli): split excessively long lines in markdown rendering fix(core): truncate excessively long lines in grep search output Mar 4, 2026
@gundermanc gundermanc force-pushed the long-line-minimal branch 2 times, most recently from 77770d8 to 5bc1a7c Compare March 4, 2026 22:35
@gundermanc gundermanc marked this pull request as ready for review March 4, 2026 23:08
@gemini-code-assist
Copy link
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 resolves an issue where grep_search results containing extremely long lines could cause the CLI to crash or hang, and inefficiently consume context. It introduces a mechanism to truncate these long lines, improving the stability and performance of the CLI when processing large or minified files.

Highlights

  • Line Truncation Implemented: Excessively long lines in grep_search output are now truncated to prevent CLI crashes and improve context usage.
  • New Constant Introduced: A MAX_LINE_LENGTH_TEXT_FILE constant (set to 2000 characters) defines the maximum length for lines before truncation.
  • Enhanced Test Coverage: New unit tests were added for both GrepTool and RipGrepTool to specifically verify the line truncation behavior.
Changelog
  • packages/core/src/tools/grep-utils.ts
    • Imported MAX_LINE_LENGTH_TEXT_FILE constant.
    • Added conditional logic to truncate llmContent lines exceeding MAX_LINE_LENGTH_TEXT_FILE and append ... [truncated].
  • packages/core/src/tools/grep.test.ts
    • Added a new test case to verify that GrepTool correctly truncates excessively long lines.
  • packages/core/src/tools/ripGrep.test.ts
    • Added a new test case to verify that RipGrepTool correctly truncates excessively long lines, including mocking spawn output.
Activity
  • New unit tests were added to validate the truncation logic.
  • The changes were validated on MacOS.
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.

Copy link
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 addresses a crash caused by excessively long lines in grep search results by truncating them. The implementation is mostly correct, but it uses substring for truncation, which can incorrectly handle multi-byte Unicode characters, leading to potential data corruption. I've provided a suggestion to align with the repository's guidelines for safe string truncation.

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@gemini-cli gemini-cli bot added the status/need-issue Pull requests that need to have an associated issue. label Mar 4, 2026
@gundermanc gundermanc added this pull request to the merge queue Mar 5, 2026
Merged via the queue into main with commit c5112cd Mar 5, 2026
27 checks passed
@gundermanc gundermanc deleted the long-line-minimal branch March 5, 2026 01:42
struckoff pushed a commit to struckoff/gemini-cli that referenced this pull request Mar 6, 2026
…gle-gemini#21147)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
kunal-10-cloud pushed a commit to kunal-10-cloud/gemini-cli that referenced this pull request Mar 12, 2026
…gle-gemini#21147)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
liamhelmer pushed a commit to badal-io/gemini-cli that referenced this pull request Mar 12, 2026
…gle-gemini#21147)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
yashodipmore pushed a commit to yashodipmore/geemi-cli that referenced this pull request Mar 21, 2026
…gle-gemini#21147)

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

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.

2 participants