Skip to content

Conversation

@hkfires
Copy link
Collaborator

@hkfires hkfires commented Jan 5, 2026

No description provided.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @hkfires, 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 refinement to how Gemini thinking configurations are applied, specifically addressing the include_thoughts parameter. By adding a conditional check, the system now avoids overwriting existing includeThoughts or include_thoughts keys when applying default values. This enhancement improves the robustness and predictability of the configuration process, ensuring that user-defined or previously established settings are preserved.

Highlights

  • Conditional Configuration Injection: The logic for injecting default include_thoughts settings for Gemini thinking configurations has been updated to only apply if the includeThoughts or include_thoughts keys do not already exist in the JSON body.
  • Preservation of Existing Settings: This change ensures that any pre-existing or explicitly set thinkingConfig values are respected and not inadvertently overwritten by the default injection mechanism.
  • Streamlined Deletion Logic: Redundant code that previously deleted include_thoughts keys before potentially re-setting them has been removed, simplifying the configuration application process in ApplyGeminiThinkingLevel and ApplyGeminiCLIThinkingLevel.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

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 aims to prevent the default injection of 'thinking' keys if they already exist in the request body. The changes correctly add checks for existing includeThoughts or include_thoughts keys before setting a default value. While this fixes the overwriting issue, it introduces a new problem by removing the key normalization logic. For example, Gemini 3 models expect includeThoughts (camelCase), but the new code will allow include_thoughts (snake_case) to pass through, which the API might ignore. This normalization issue is present in all four modified functions. Additionally, there is significant code duplication across these functions that could be refactored into a helper function for better maintainability.

Comment on lines +74 to 81
if !gjson.GetBytes(updated, "generationConfig.thinkingConfig.includeThoughts").Exists() &&
!gjson.GetBytes(updated, "generationConfig.thinkingConfig.include_thoughts").Exists() {
valuePath := "generationConfig.thinkingConfig.include_thoughts"
rewritten, err := sjson.SetBytes(updated, valuePath, *incl)
if err == nil {
updated = rewritten
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

high

This change correctly prevents overwriting an existing includeThoughts key. However, it misses an opportunity for normalization. This function is for models that expect include_thoughts (snake_case). If a request contains includeThoughts (camelCase), this logic allows it to pass through unmodified. The API might ignore this setting if it strictly expects snake_case. It would be more robust to normalize the key to include_thoughts.

Comment on lines +105 to 112
if !gjson.GetBytes(updated, "request.generationConfig.thinkingConfig.includeThoughts").Exists() &&
!gjson.GetBytes(updated, "request.generationConfig.thinkingConfig.include_thoughts").Exists() {
valuePath := "request.generationConfig.thinkingConfig.include_thoughts"
rewritten, err := sjson.SetBytes(updated, valuePath, *incl)
if err == nil {
updated = rewritten
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

high

Similar to ApplyGeminiThinkingConfig, this logic does not normalize includeThoughts (camelCase) to the expected include_thoughts (snake_case) for this model family. This could lead to the setting being ignored by the API. Please consider adding normalization logic.

Comment on lines +139 to 146
if !gjson.GetBytes(updated, "generationConfig.thinkingConfig.includeThoughts").Exists() &&
!gjson.GetBytes(updated, "generationConfig.thinkingConfig.include_thoughts").Exists() {
valuePath := "generationConfig.thinkingConfig.includeThoughts"
rewritten, err := sjson.SetBytes(updated, valuePath, *incl)
if err == nil {
updated = rewritten
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

high

While this change correctly avoids overwriting an existing key, it removes the previous (though buggy) attempt at normalization. This function is for Gemini 3 models, which expect includeThoughts (camelCase). If a request provides include_thoughts (snake_case), this new logic allows it to pass through. The API will likely ignore the setting. Please reintroduce logic to normalize include_thoughts to includeThoughts.

Comment on lines +176 to 183
if !gjson.GetBytes(updated, "request.generationConfig.thinkingConfig.includeThoughts").Exists() &&
!gjson.GetBytes(updated, "request.generationConfig.thinkingConfig.include_thoughts").Exists() {
valuePath := "request.generationConfig.thinkingConfig.includeThoughts"
rewritten, err := sjson.SetBytes(updated, valuePath, *incl)
if err == nil {
updated = rewritten
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

high

As with ApplyGeminiThinkingLevel, this change fixes the overwriting issue but removes key normalization. For Gemini 3 models, include_thoughts should be converted to includeThoughts to ensure the API processes the setting correctly. Please add logic to handle this normalization.

Comment on lines +74 to 81
if !gjson.GetBytes(updated, "generationConfig.thinkingConfig.includeThoughts").Exists() &&
!gjson.GetBytes(updated, "generationConfig.thinkingConfig.include_thoughts").Exists() {
valuePath := "generationConfig.thinkingConfig.include_thoughts"
rewritten, err := sjson.SetBytes(updated, valuePath, *incl)
if err == nil {
updated = rewritten
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

The logic to conditionally set includeThoughts is duplicated across four functions in this file (ApplyGeminiThinkingConfig, ApplyGeminiCLIThinkingConfig, ApplyGeminiThinkingLevel, ApplyGeminiCLIThinkingLevel). To improve maintainability and reduce redundancy, please consider extracting this into a single helper function.

@luispater luispater merged commit e124db7 into dev Jan 5, 2026
2 checks passed
@luispater luispater deleted the gemini branch January 5, 2026 02:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants