Skip to content

fix(patch): cherry-pick 2194da2 to release/v0.40.0-pr-26153 to patch version v0.40.0 and create version 0.40.1#26268

Merged
galz10 merged 1 commit intorelease/v0.40.0-pr-26153from
hotfix/v0.40.0/0.40.1/stable/cherry-pick-2194da2/pr-26153
Apr 30, 2026
Merged

fix(patch): cherry-pick 2194da2 to release/v0.40.0-pr-26153 to patch version v0.40.0 and create version 0.40.1#26268
galz10 merged 1 commit intorelease/v0.40.0-pr-26153from
hotfix/v0.40.0/0.40.1/stable/cherry-pick-2194da2/pr-26153

Conversation

@gemini-cli-robot
Copy link
Copy Markdown
Collaborator

This PR automatically cherry-picks commit 2194da2 to patch version v0.40.0 in the stable release to create version 0.40.1.

Co-authored-by: David Pierce <davidapierce@google.com>
Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com>
@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 privacy-focused update to the telemetry system by making the logging of sensitive information conditional. By leveraging the 'logPrompts' configuration flag, the system now prevents the accidental exposure of user-provided prompts, content, and tool arguments in telemetry data unless explicitly permitted by the user. This change ensures better compliance with data privacy requirements while maintaining essential diagnostic capabilities.

Highlights

  • Telemetry Privacy Enhancement: Implemented conditional logging for sensitive telemetry data, ensuring that user prompts, content, and tool arguments are only included in telemetry exports when the 'logPrompts' configuration is explicitly enabled.
  • Conditional Metadata Filtering: Added logic to filter tool call metadata, allowing only a predefined set of safe keys to be logged when prompt logging is disabled.
  • Test Coverage: Expanded test suites to verify that sensitive fields are correctly omitted from both OpenTelemetry and Clearcut logs when prompt logging is disabled, and correctly included when enabled.
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.

@galz10 galz10 enabled auto-merge (squash) April 30, 2026 17:06
@github-actions
Copy link
Copy Markdown

Size Change: +1.51 kB (0%)

Total Size: 33.7 MB

Filename Size Change
./bundle/chunk-BJUG4AFS.js 0 B -2.73 MB (removed) 🏆
./bundle/chunk-IHETQ6N6.js 0 B -3.8 kB (removed) 🏆
./bundle/chunk-INTJR3WT.js 0 B -669 kB (removed) 🏆
./bundle/chunk-UOV6FR5F.js 0 B -14.6 MB (removed) 🏆
./bundle/chunk-VDA6GSQX.js 0 B -3.43 kB (removed) 🏆
./bundle/chunk-Y5BQD2TE.js 0 B -49.2 kB (removed) 🏆
./bundle/core-SKKHJK35.js 0 B -47.5 kB (removed) 🏆
./bundle/devtoolsService-KJOSYDRT.js 0 B -27.8 kB (removed) 🏆
./bundle/gemini-U354QCVI.js 0 B -578 kB (removed) 🏆
./bundle/interactiveCli-B5P3JYYZ.js 0 B -1.29 MB (removed) 🏆
./bundle/liteRtServerManager-PJ7JYIKX.js 0 B -2.08 kB (removed) 🏆
./bundle/oauth2-provider-YVB4M6BS.js 0 B -9.16 kB (removed) 🏆
./bundle/chunk-BISVRSVC.js 2.73 MB +2.73 MB (new file) 🆕
./bundle/chunk-EHZHZR4V.js 3.8 kB +3.8 kB (new file) 🆕
./bundle/chunk-JFEC6TQ5.js 669 kB +669 kB (new file) 🆕
./bundle/chunk-KF6224CP.js 49.2 kB +49.2 kB (new file) 🆕
./bundle/chunk-SAVE72DX.js 14.6 MB +14.6 MB (new file) 🆕
./bundle/chunk-SPMOBVQ5.js 3.43 kB +3.43 kB (new file) 🆕
./bundle/core-E77RMNQZ.js 47.5 kB +47.5 kB (new file) 🆕
./bundle/devtoolsService-RQETQKJT.js 27.8 kB +27.8 kB (new file) 🆕
./bundle/gemini-SSUDJPH7.js 578 kB +578 kB (new file) 🆕
./bundle/interactiveCli-V3YBQTZD.js 1.29 MB +1.29 MB (new file) 🆕
./bundle/liteRtServerManager-Y5A3QXLV.js 2.08 kB +2.08 kB (new file) 🆕
./bundle/oauth2-provider-CUE24AGL.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/chunk-UHHRGNIO.js 1.97 MB 0 B
./bundle/cleanup-USW6J6LW.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-CZURD35O.js 980 B 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-FVHBRFVI.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-3UB6PTN6.js 932 B +932 B (new file) 🆕
./bundle/start-JJTVHNQ5.js 622 B +622 B (new file) 🆕

compressed-size-action

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 implements privacy controls for telemetry by conditionally omitting sensitive fields like prompts, tool arguments, and policies from OpenTelemetry and Clearcut logs based on the logPrompts configuration. It includes comprehensive unit tests to verify these redactions across various event types. Feedback highlights a potential privacy leak in the Clearcut logging path for tool calls and suggests using a more semantically accurate metadata key for tool call names in the Conseca context.

Comment on lines +384 to +395
if (this.metadata) {
const metadata = config.getTelemetryLogPromptsEnabled()
? this.metadata
: Object.fromEntries(
Object.entries(this.metadata).filter(([k]) =>
(TOOL_CALL_METADATA_SAFE_KEYS as readonly string[]).includes(k),
),
);
if (Object.keys(metadata).length > 0) {
attributes['metadata'] = safeJsonStringify(metadata, 2);
}
}
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.

security-critical critical

While the OpenTelemetry logging for ToolCallEvent metadata is correctly handled here to respect getTelemetryLogPromptsEnabled(), a similar check is missing in the Clearcut logging path. In packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts, the logToolCallEvent method logs metadata related to the ask_user tool without checking if prompt logging is disabled. This could lead to sensitive user interaction data being logged to Clearcut against the user's configuration. This is a potential privacy leak and should be addressed. The logic for logging ask_user metadata in logToolCallEvent should be wrapped in a if (this.config?.getTelemetryLogPromptsEnabled()) block.

Comment on lines +96 to +99
{
gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_NAME,
value: safeJsonStringify(event.tool_call),
},
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.

high

The EventMetadataKey.GEMINI_CLI_TOOL_CALL_NAME is being used to log event.tool_call. However, according to its definition in event-metadata-key.ts, this key is intended for logging only the function name. The event.tool_call is a string that can contain the full tool call, including arguments, which is more than just the name. This misuse can lead to corrupted or misleading telemetry data for analyses that rely on GEMINI_CLI_TOOL_CALL_NAME containing only function names. To fix this, a new, more appropriate EventMetadataKey should be introduced for logging the full tool call string within the Conseca verdict context, for example CONSECA_TOOL_CALL.

References
  1. When logging events, ensure that the keys used for telemetry data accurately reflect the semantic meaning of the data being logged to avoid misinterpretation. Introduce new, more specific keys when existing ones are semantically confusing in a given context.

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