Skip to content

fix(cli): enable daemon relaunch in binary and bundle keytar#26333

Merged
ruomengz merged 1 commit intomainfrom
sea-keychain
May 1, 2026
Merged

fix(cli): enable daemon relaunch in binary and bundle keytar#26333
ruomengz merged 1 commit intomainfrom
sea-keychain

Conversation

@ruomengz
Copy link
Copy Markdown
Contributor

@ruomengz ruomengz commented May 1, 2026

Summary

Enables the daemon relaunch mechanism when running from a compiled binary and includes the @github/keytar native module in the binary build process. This ensures that features like automatic relaunch and secure keychain storage work correctly in the distributed binary versions of the CLI.

Details

  • Removed the IS_BINARY environment variable check in packages/cli/index.ts and packages/cli/src/gemini.tsx. Previously, these checks disabled the relaunch mechanism when the CLI detected it was running as a binary.
  • Updated scripts/build_binary.js to copy the @github/keytar native module to the staging directory and include it in the binary's assets. This is necessary for secure keychain support on macOS and other platforms when using the standalone binary.

Related Issues

Fixes https://github.com/google-gemini/maintainers-gemini-cli/issues/1648

How to Validate

  1. Build the binary: npm run build:binary (or the appropriate command from scripts/build_binary.js).
  2. Run the resulting binary.
  3. Verify that the daemon relaunch occurs (can be checked via logs or by observing process behavior).
  4. Verify that keychain operations (e.g., storing/retrieving credentials) work correctly without falling back to file storage if a keychain is available.

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
      • Seatbelt

- Remove `IS_BINARY` environment variable checks in `index.ts` and `gemini.tsx` to allow the daemon/relaunch mechanism to run in compiled binaries.
- Update `build_binary.js` to include the `@github/keytar` native module in staging and assets for secure keychain support.
@ruomengz ruomengz requested a review from a team as a code owner May 1, 2026 16:03
@gemini-cli
Copy link
Copy Markdown
Contributor

gemini-cli Bot commented May 1, 2026

Hi @ruomengz, thank you so much for your contribution to Gemini CLI! We really appreciate the time and effort you've put into this.

We're making some updates to our contribution process to improve how we track and review changes. Please take a moment to review our recent discussion post: Improving Our Contribution Process & Introducing New Guidelines.

Key Update: Starting January 26, 2026, the Gemini CLI project will require all pull requests to be associated with an existing issue. Any pull requests not linked to an issue by that date will be automatically closed.

Thank you for your understanding and for being a part of our community!

@gemini-cli gemini-cli Bot added the status/need-issue Pull requests that need to have an associated issue. label May 1, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 1, 2026

Size Change: -108 B (0%)

Total Size: 33.9 MB

Filename Size Change
./bundle/chunk-2HF5A2L7.js 0 B -3.43 kB (removed) 🏆
./bundle/chunk-6L7YPSBA.js 0 B -49.2 kB (removed) 🏆
./bundle/chunk-BIPJORYT.js 0 B -657 kB (removed) 🏆
./bundle/chunk-D3SPH3LR.js 0 B -2.72 MB (removed) 🏆
./bundle/chunk-QJJD4TLW.js 0 B -3.8 kB (removed) 🏆
./bundle/chunk-T24QVA6Y.js 0 B -12.5 kB (removed) 🏆
./bundle/chunk-WQXBH5OA.js 0 B -14.7 MB (removed) 🏆
./bundle/chunk-XVU2V5AO.js 0 B -19.5 kB (removed) 🏆
./bundle/core-K72OTWQW.js 0 B -48.2 kB (removed) 🏆
./bundle/devtoolsService-T5LJY75F.js 0 B -28 kB (removed) 🏆
./bundle/gemini-XPRGQ4QD.js 0 B -582 kB (removed) 🏆
./bundle/interactiveCli-GI5F27AH.js 0 B -1.32 MB (removed) 🏆
./bundle/liteRtServerManager-DDLMRFLI.js 0 B -2.11 kB (removed) 🏆
./bundle/oauth2-provider-OMHTS7KG.js 0 B -9.16 kB (removed) 🏆
./bundle/chunk-2GOCANKU.js 49.2 kB +49.2 kB (new file) 🆕
./bundle/chunk-345M7O5I.js 12.5 kB +12.5 kB (new file) 🆕
./bundle/chunk-4XIQZVI2.js 657 kB +657 kB (new file) 🆕
./bundle/chunk-L3VKVQ7C.js 19.5 kB +19.5 kB (new file) 🆕
./bundle/chunk-LURMO4HX.js 3.8 kB +3.8 kB (new file) 🆕
./bundle/chunk-Q53YOFH2.js 2.72 MB +2.72 MB (new file) 🆕
./bundle/chunk-SBJ4KZMB.js 3.43 kB +3.43 kB (new file) 🆕
./bundle/chunk-VEXWENIH.js 14.7 MB +14.7 MB (new file) 🆕
./bundle/core-7YXAKNU6.js 48.2 kB +48.2 kB (new file) 🆕
./bundle/devtoolsService-RKNBFNNS.js 28 kB +28 kB (new file) 🆕
./bundle/gemini-KFN2G7DD.js 581 kB +581 kB (new file) 🆕
./bundle/interactiveCli-SHVSULZL.js 1.32 MB +1.32 MB (new file) 🆕
./bundle/liteRtServerManager-E7IWQEDN.js 2.11 kB +2.11 kB (new file) 🆕
./bundle/oauth2-provider-6FZABVXO.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-IBHWQ36L.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-BY42NUY7.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 -39 B (-0.76%)
./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-KH2QDS2N.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-K5YWXX2E.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-QVHHDRPV.js 932 B +932 B (new file) 🆕
./bundle/start-SZ32KOQH.js 652 B +652 B (new file) 🆕

compressed-size-action

@ruomengz ruomengz added ACP and removed status/need-issue Pull requests that need to have an associated issue. labels May 1, 2026
@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 improves the functionality of the distributed CLI binary by enabling the daemon relaunch mechanism and ensuring that secure keychain storage is properly bundled. These changes ensure that the standalone binary behaves consistently with the source-based installation, providing a better user experience for credential management and process lifecycle handling.

Highlights

  • Daemon Relaunch: Removed the IS_BINARY environment variable check to enable the daemon relaunch mechanism when running from a compiled binary.
  • Keychain Support: Updated the binary build script to include the @github/keytar native module, ensuring secure keychain storage is available in standalone distributions.
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.

@ruomengz ruomengz requested a review from sripasg May 1, 2026 16:19
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 simplifies environment variable checks in the CLI entry points and updates the binary build script to include the @github/keytar module and its assets. Specifically, it removes redundant checks for IS_BINARY and SANDBOX in the relaunch logic and ensures that secure keychain features are correctly bundled during the build process. I have no feedback to provide.

Note: Security Review is unavailable for this PR.

@gemini-cli gemini-cli Bot added the status/need-issue Pull requests that need to have an associated issue. label May 1, 2026
@sripasg sripasg added the 🔒 maintainer only ⛔ Do not contribute. Internal roadmap item. label May 1, 2026
Copy link
Copy Markdown
Contributor

@sripasg sripasg left a comment

Choose a reason for hiding this comment

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

Thanks for fixing.

LGTM !

@ruomengz ruomengz added this pull request to the merge queue May 1, 2026
Merged via the queue into main with commit 76d1a73 May 1, 2026
32 checks passed
@ruomengz ruomengz deleted the sea-keychain branch May 1, 2026 18:06
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

ACP 🔒 maintainer only ⛔ Do not contribute. Internal roadmap item. 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