Skip to content

fix(core): correct escaped interpolation in system prompt#18557

Merged
NTaylorMullen merged 1 commit intomainfrom
ntm/fixsysbug
Feb 8, 2026
Merged

fix(core): correct escaped interpolation in system prompt#18557
NTaylorMullen merged 1 commit intomainfrom
ntm/fixsysbug

Conversation

@NTaylorMullen
Copy link
Collaborator

Summary

Fixes a bug in the system prompt where options.interactive was incorrectly escaped, leaking as a literal string. Corrects the interpolation and refines spacing for the strategy section in non-interactive mode.

Details

  • Corrected ${options.interactive ...} in workflowStepStrategy within packages/core/src/prompts/snippets.ts.
  • Refined spacing in the strategy section to ensure it looks correct when the interactive summary is omitted.
  • Updated snapshot tests in @google/gemini-cli-core to reflect the fixed output.

Related Issues

Fixes https://github.com/google-gemini/gemini-cli/issues/ntm/fixsysbug

How to Validate

  1. Run the prompt snapshot tests: npm test -w @google/gemini-cli-core -- src/core/prompts.test.ts
  2. Verify that the output no longer contains the literal ${options.interactive ...} string.

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

@NTaylorMullen NTaylorMullen requested a review from a team as a code owner February 8, 2026 01:32
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @NTaylorMullen, 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 critical bug in the system prompt where a conditional interpolation for interactive options was mistakenly escaped, leading to a literal string being displayed. The changes ensure that the prompt dynamically includes or omits the interactive summary based on the options.interactive flag, improving the prompt's behavior and presentation. Additionally, spacing adjustments were made to enhance readability in non-interactive scenarios.

Highlights

  • System Prompt Bug Fix: Corrected a bug in the system prompt where the ${options.interactive} interpolation was incorrectly escaped, causing it to appear as a literal string rather than being evaluated.
  • Prompt Logic Refinement: Ensured that the options.interactive variable is now correctly interpolated within the workflowStepStrategy function, allowing the interactive summary to be conditionally included as intended.
  • Spacing Adjustment: Refined the spacing within the strategy section of the prompt to maintain proper formatting and readability, especially when the interactive summary is omitted.
  • Snapshot Test Updates: Updated existing snapshot tests to reflect the corrected output of the system prompt, verifying the fix and preventing future regressions.
Changelog
  • packages/core/src/core/snapshots/prompts.test.ts.snap
    • Updated multiple snapshot entries to reflect the corrected system prompt output, removing the literal \${options.interactive ? ' Share a concise summary of your strategy.' : ''} string.
    • Adjusted the content of the 'Strategy' section in various snapshots to match the intended prompt text after the interpolation fix.
  • packages/core/src/prompts/snippets.ts
    • Removed the erroneous backslash escaping the ${options.interactive ? ...} interpolation within the workflowStepStrategy function.
    • Adjusted spacing before the interpolation in the workflowStepStrategy function to ensure consistent formatting.
Activity
  • Tests were added/updated to cover the changes introduced in this pull request.
  • The changes have been validated on MacOS using npm run.
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 correctly fixes a bug where a template literal interpolation was being escaped in the system prompt, causing it to be displayed as a literal string. The change removes the incorrect escaping and also refines the surrounding whitespace to ensure correct formatting in both interactive and non-interactive modes. The snapshot tests have been updated accordingly to reflect the corrected output. The changes are well-implemented and address the issue effectively.

@github-actions
Copy link

github-actions bot commented Feb 8, 2026

Size Change: -4 B (0%)

Total Size: 23.9 MB

ℹ️ View Unchanged
Filename Size Change
./bundle/gemini.js 23.8 MB -4 B (0%)
./bundle/sandbox-macos-permissive-closed.sb 1.03 kB 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-closed.sb 3.29 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

compressed-size-action

@gemini-cli gemini-cli bot added the status/need-issue Pull requests that need to have an associated issue. label Feb 8, 2026
- Fixes a bug in the `workflowStepStrategy` function where `options.interactive` was incorrectly escaped, leaking as a literal string in the system prompt.
- Refines spacing for the strategy section when in non-interactive mode.
- Updates snapshot tests to reflect the corrected output.

Fixes https://github.com/google-gemini/gemini-cli/issues/ntm/fixsysbug
@NTaylorMullen NTaylorMullen added this pull request to the merge queue Feb 8, 2026
Merged via the queue into main with commit 9201236 Feb 8, 2026
26 checks passed
@NTaylorMullen NTaylorMullen deleted the ntm/fixsysbug branch February 8, 2026 21:14
aswinashok44 pushed a commit to aswinashok44/gemini-cli that referenced this pull request Feb 9, 2026
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