Skip to content

feat(voice): add privacy and compliance UX warning for Gemini Live backend#26454

Merged
cocosheng-g merged 1 commit intomainfrom
fix/voice-privacy-warning-25491
May 4, 2026
Merged

feat(voice): add privacy and compliance UX warning for Gemini Live backend#26454
cocosheng-g merged 1 commit intomainfrom
fix/voice-privacy-warning-25491

Conversation

@cocosheng-g
Copy link
Copy Markdown
Contributor

@cocosheng-g cocosheng-g commented May 4, 2026

Summary

This PR adds a privacy and compliance UX warning for the Voice/Gemini Live backend. It ensures that enterprise users are informed when their voice recordings are being sent to Google Cloud for transcription.

Details

  • Added a WarningMessage in the VoiceModelDialog that appears when the "Gemini Live API (Cloud)" backend is highlighted or selected.
  • Updated the description for the experimental.voice.backend setting in settingsSchema.ts to include a privacy note.
  • Regenerated settings documentation (docs/cli/settings.md, docs/reference/configuration.md) and JSON schema (schemas/settings.schema.json) to keep them in sync with the updated description.
  • Added a new unit test suite VoiceModelDialog.test.tsx to verify the conditional display of the warning and the backend selection logic.
  • Updated SettingsDialog.test.tsx snapshots due to the improved setting description.

Related Issues

Fixes #25491

How to Validate

  1. Run the new unit tests:
    npm test -w @google/gemini-cli -- packages/cli/src/ui/components/VoiceModelDialog.test.tsx
  2. Manually verify in the CLI:
    • Open settings (Ctrl+,) or the voice model dialog (/voice model).
    • Observe the warning when "Gemini Live API (Cloud)" is highlighted.
    • Observe the warning disappear when highlighting "Whisper (Local)".

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

@cocosheng-g cocosheng-g requested a review from a team as a code owner May 4, 2026 17:11
@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 enhances the user experience by providing clear privacy and compliance notifications for the Gemini Live voice backend. By integrating a warning message directly into the UI and updating the configuration documentation, the changes ensure that enterprise users are adequately informed about data handling practices when using cloud-based transcription services.

Highlights

  • Privacy Warning Implementation: Added a conditional warning message in the VoiceModelDialog to inform users when the Gemini Live (Cloud) backend is selected, ensuring transparency regarding voice data processing.
  • Configuration Documentation: Updated the experimental voice backend setting description in settingsSchema.ts to explicitly mention that voice recordings are sent to Google Cloud.
  • Testing and Validation: Introduced a new unit test suite for VoiceModelDialog to verify the visibility of the privacy warning and updated existing snapshot tests to reflect configuration changes.
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.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 4, 2026

Size Change: +321 B (0%)

Total Size: 33.9 MB

Filename Size Change
./bundle/chunk-FGK3FKLD.js 0 B -49.2 kB (removed) 🏆
./bundle/chunk-GHAFIFT6.js 0 B -657 kB (removed) 🏆
./bundle/chunk-IZ6C2EEV.js 0 B -3.8 kB (removed) 🏆
./bundle/chunk-KM4VLVO4.js 0 B -3.43 kB (removed) 🏆
./bundle/chunk-NIFFNPDH.js 0 B -19.5 kB (removed) 🏆
./bundle/chunk-P2T7M52S.js 0 B -14.7 MB (removed) 🏆
./bundle/chunk-SZFVR3P7.js 0 B -2.72 MB (removed) 🏆
./bundle/chunk-WNSOYCUG.js 0 B -12.5 kB (removed) 🏆
./bundle/core-EWX5ZKOR.js 0 B -48.4 kB (removed) 🏆
./bundle/devtoolsService-EGOM6CEH.js 0 B -28 kB (removed) 🏆
./bundle/gemini-ZMLREBK3.js 0 B -582 kB (removed) 🏆
./bundle/interactiveCli-S7IWLVTL.js 0 B -1.32 MB (removed) 🏆
./bundle/liteRtServerManager-OSWR2KI3.js 0 B -2.11 kB (removed) 🏆
./bundle/oauth2-provider-WIQSRPV5.js 0 B -9.16 kB (removed) 🏆
./bundle/chunk-5IFGR5WG.js 3.43 kB +3.43 kB (new file) 🆕
./bundle/chunk-6CJSMDJZ.js 19.5 kB +19.5 kB (new file) 🆕
./bundle/chunk-72JYBS6K.js 3.8 kB +3.8 kB (new file) 🆕
./bundle/chunk-LCGMIVP4.js 657 kB +657 kB (new file) 🆕
./bundle/chunk-MVSOSIN7.js 2.72 MB +2.72 MB (new file) 🆕
./bundle/chunk-T4MFYMA6.js 49.2 kB +49.2 kB (new file) 🆕
./bundle/chunk-TCKRJMMJ.js 12.5 kB +12.5 kB (new file) 🆕
./bundle/chunk-ZRJAFBMA.js 14.7 MB +14.7 MB (new file) 🆕
./bundle/core-H7SJ62QQ.js 48.4 kB +48.4 kB (new file) 🆕
./bundle/devtoolsService-3JEM2IH5.js 28 kB +28 kB (new file) 🆕
./bundle/gemini-K4SOXJVW.js 582 kB +582 kB (new file) 🆕
./bundle/interactiveCli-OIUL3SYC.js 1.32 MB +1.32 MB (new file) 🆕
./bundle/liteRtServerManager-MH4LJJSN.js 2.11 kB +2.11 kB (new file) 🆕
./bundle/oauth2-provider-XMVN55CP.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-DD4MWEAB.js 1.97 MB 0 B
./bundle/chunk-IUUIT4SU.js 56.5 kB 0 B
./bundle/chunk-RJTRUG2J.js 39.8 kB 0 B
./bundle/cleanup-N5DFHRGN.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 5.1 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-HRURE3F3.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-A3HZNK3L.js 0 B -652 B (removed) 🏆
./bundle/tree-sitter-7U6MW5PS.js 274 kB 0 B
./bundle/tree-sitter-bash-34ZGLXVX.js 1.84 MB 0 B
./bundle/cleanup-B5PBPHSB.js 932 B +932 B (new file) 🆕
./bundle/start-S3R4BSVN.js 652 B +652 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 introduces a privacy warning in the VoiceModelDialog and the settings schema, informing users that voice recordings are sent to Google Cloud when using the Gemini Live backend. It also adds a new test suite for the VoiceModelDialog to verify this behavior. A critical issue was identified where a snapshot file for SettingsDialog was deleted, which will cause CI test failures and needs to be addressed.

@cocosheng-g cocosheng-g force-pushed the fix/voice-privacy-warning-25491 branch 2 times, most recently from 84bce1e to 3c90202 Compare May 4, 2026 17:26
@cocosheng-g cocosheng-g requested a review from a team as a code owner May 4, 2026 17:26
@cocosheng-g cocosheng-g force-pushed the fix/voice-privacy-warning-25491 branch from 3c90202 to 0735ebf Compare May 4, 2026 17:44
@cocosheng-g cocosheng-g force-pushed the fix/voice-privacy-warning-25491 branch from 0735ebf to 6134229 Compare May 4, 2026 17:45
Copy link
Copy Markdown
Contributor

@devr0306 devr0306 left a comment

Choose a reason for hiding this comment

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

From /review-frontend:

Code Review for PR #26454 (Frontend Focus)

Summary

This PR successfully introduces a conditional privacy warning in the VoiceModelDialog when the Gemini Live API backend is highlighted. The UI implementation and the React state handling for the highlighted item are logically sound and match the existing component patterns.

However, the new unit tests introduced in VoiceModelDialog.test.tsx are failing the CI pipeline because they interact with Ink components (stdin.write) without wrapping the interactions in act(). Additionally, I investigated the automated comment from gemini-code-assist about a 'deleted snapshot' and confirmed it is a false positive—no snapshot files were deleted, and existing snapshot tests pass successfully.

Findings

Critical

  • Test Failures (VoiceModelDialog.test.tsx): The UI component tests simulate user keystrokes using stdin.write but fail to wrap these side-effecting operations in act(). In this repository, vitest treats act() warnings as strict errors. To fix the CI tests, you need to import act from react and wrap the stdin.write calls.

    Example Fix:

    import { act } from 'react';
    
    // ...
    
    await act(async () => {
      stdin.write('\u001b[B'); // Arrow Down
    });
    
    // ...
    
    await act(async () => {
      stdin.write('\r'); // Enter
    });

Improvements

  • PR Description Clarification: The PR description mentions 'Updated SettingsDialog.test.tsx snapshots due to the improved setting description.' However, experimental.voice.backend is not actually captured in those snapshots, so no snapshot update was necessary (and none was included in the commit). You might want to remove that line from the PR description to avoid confusion for future maintainers.
  • Automated Bot Hallucination: You can safely ignore the comment from gemini-code-assist about the deleted snapshot file. Verification confirms SettingsDialog.test.tsx passes locally without any missing snapshot files.

Conclusion

Request Changes

The frontend feature itself is implemented perfectly, but the missing act() wrappers in the new tests block the build. Once those test interactions are updated to use await act(async () => { ... }), the CI will pass and the PR will be ready to merge.

@gemini-cli gemini-cli Bot added area/core Issues related to User Interface, OS Support, Core Functionality area/security Issues related to security 🔒 maintainer only ⛔ Do not contribute. Internal roadmap item. labels May 4, 2026
Copy link
Copy Markdown
Contributor

@devr0306 devr0306 left a comment

Choose a reason for hiding this comment

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

LGTM

@cocosheng-g cocosheng-g added this pull request to the merge queue May 4, 2026
Merged via the queue into main with commit 60a6a47 May 4, 2026
45 of 47 checks passed
@cocosheng-g cocosheng-g deleted the fix/voice-privacy-warning-25491 branch May 4, 2026 18:44
TirthNaik-99 pushed a commit to TirthNaik-99/gemini-cli that referenced this pull request May 4, 2026
kimjune01 pushed a commit to kimjune01/gemini-cli-claude that referenced this pull request May 6, 2026
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 area/security Issues related to security 🔒 maintainer only ⛔ Do not contribute. Internal roadmap item.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Voice] Privacy & Compliance UX Warning

2 participants