What happened?
Do you need to always run volta install to have the cli updated? Can't the Gemini auto update on
startup do the update properly?
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
✦ The reason this is happening is due to how Volta manages global packages versus how the Gemini CLI's
automatic updater expects them to be managed.
Here is the exact breakdown of the issue:
- How Volta works: When you initially ran volta install @google/gemini-cli, Volta downloaded
version 0.40.1 and created a "shim" (a shortcut) in your Volta\bin directory. Volta internally
locks this shim to that specific version.
- The Auto-Updater's blind spot: The Gemini CLI's automatic updater looks at how it's installed to
determine the update command. Currently, it knows about npm, yarn, pnpm, bun, and brew. Since it
doesn't explicitly recognize Volta, it falls back to the default command: npm install -g
@google/gemini-cli@latest.
- The Update Loop:
- Gemini CLI detects an update and runs npm install -g ... in the background.
- This command actually succeeds! It installs version 0.41.1 directly into your underlying Node
runtime folder (...\Volta\tools\image\node\25.9.0\gemini.cmd).
- However, when you open a new terminal and type gemini, your system executes the Volta shim
(Volta\bin\gemini). Volta sees that you originally asked it for version 0.40.1, ignores the
new npm installation, and launches the old version.
- The old version starts up, sees there's an update available, and the loop repeats.
is there a way to tell Gemini to always run volta install ..... instead, even if it doesn't
internally know about that command, whenever it knows that updates exist and are pending?
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
✦ Based on the source code of the Gemini CLI's update mechanism, no, there is currently no way to
configure a custom update command.
The CLI does not look for any environment variables (like GEMINI_UPDATE_COMMAND) or configuration
file settings to override the update behavior.
In the code, the updater simply checks the file path of the executable. It looks for clues like
.yarn, .pnpm, .bun, or brew. Because it doesn't see any of those when running via Volta, it hits the
absolute end of the function where the command is strictly hardcoded:
const updateCommand = "npm install -g @google/gemini-cli@latest";
return {
packageManager: "npm",
isGlobal: true,
updateCommand,
// ...
Since you cannot override this behavior right now, your best course of action is to disable the
auto-updater in /settings (under General -> Enable Auto Update) so it stops creating that annoying
update loop in the background, and just run volta install @google/gemini-cli@latest manually when
you want to update.
I highly recommend typing /bug in the chat to send feedback to the team. You can ask them to either:
- Add native Volta support: It would be very easy for them to add a check for .volta in the
installation path and set the update command to volta install accordingly.
- Add a custom update command setting: A setting in settings.json that lets users define exactly
how they want the CLI updated.
What did you expect to happen?
I was expecting to have the newest installed version of gemini-cli once I exited and started the cli again after the update finished.
It is due to using gemini through volta. This is a requirement for my company, so we need to use it like this. Unfortunately it creates this update pseudo-loop every time an instance of gemini-cli is started.
Client information
- CLI Version: 0.40.1
- Git Commit: 7a382e0
- Session ID: 35a4b0ca-ff62-4040-a5ce-c78c81ad793d
- Operating System: win32 v25.9.0
- Sandbox Environment: no sandbox
- Model Version: gemini-3.1-pro-preview
- Auth Type: vertex-ai
- Memory Usage: 457.6 MB
- Terminal Name: Unknown
- Terminal Background: #282c34
- Kitty Keyboard Protocol: Unsupported
Login information
via Vertex AI
Anything else we need to know?
No response
What happened?
Here is the exact breakdown of the issue:
version 0.40.1 and created a "shim" (a shortcut) in your Volta\bin directory. Volta internally
locks this shim to that specific version.
determine the update command. Currently, it knows about npm, yarn, pnpm, bun, and brew. Since it
doesn't explicitly recognize Volta, it falls back to the default command: npm install -g
@google/gemini-cli@latest.
runtime folder (...\Volta\tools\image\node\25.9.0\gemini.cmd).
(Volta\bin\gemini). Volta sees that you originally asked it for version 0.40.1, ignores the
new npm installation, and launches the old version.
The CLI does not look for any environment variables (like GEMINI_UPDATE_COMMAND) or configuration
file settings to override the update behavior.
In the code, the updater simply checks the file path of the executable. It looks for clues like
.yarn, .pnpm, .bun, or brew. Because it doesn't see any of those when running via Volta, it hits the
absolute end of the function where the command is strictly hardcoded:
Since you cannot override this behavior right now, your best course of action is to disable the
auto-updater in /settings (under General -> Enable Auto Update) so it stops creating that annoying
update loop in the background, and just run volta install @google/gemini-cli@latest manually when
you want to update.
I highly recommend typing /bug in the chat to send feedback to the team. You can ask them to either:
installation path and set the update command to volta install accordingly.
how they want the CLI updated.
What did you expect to happen?
I was expecting to have the newest installed version of gemini-cli once I exited and started the cli again after the update finished.
It is due to using gemini through volta. This is a requirement for my company, so we need to use it like this. Unfortunately it creates this update pseudo-loop every time an instance of gemini-cli is started.
Client information
Login information
via Vertex AI
Anything else we need to know?
No response