Summary
On Windows, a Vite Plus-owned executable in ~\.vite-plus\bin can remain ahead of a newer version installed by that CLI's own updater. The shell command then continues to run the stale Vite Plus executable.
OpenCode is the confirmed example below. This may affect any externally updatable CLI for which Vite Plus installs an executable with the same command name, but this report does not claim other packages are currently affected.
Environment
- Windows
- Vite Plus:
0.2.4
- OpenCode before upgrade:
1.17.18
Reproduction
opencode --version
# 1.17.18
opencode upgrade --print-logs
The updater reported:
Using method: npm
From 1.17.18 → 1.18.1
Upgrade complete
But immediately afterwards:
opencode --version
# 1.17.18
Investigation
The command resolved to the Vite Plus-owned path:
C:\Users\<user>\.vite-plus\bin\opencode.exe
The updater had installed OpenCode 1.18.1 at:
C:\Users\<user>\.vite-plus\js_runtime\node\22.19.0\node_modules\opencode-ai\bin\opencode.exe
Running that executable directly returned 1.18.1; the PATH executable remained at 1.17.18.
Scope checked
- Confirmed:
opencode was shadowed by the stale Vite Plus executable.
- Not implicated in this installation:
npm, npx, and corepack resolve to NVM rather than ~\.vite-plus\bin.
- Potentially affected pattern: any CLI that manages its own upgrades while Vite Plus also places a same-named executable earlier on PATH.
Expected behavior
After a CLI reports a successful self-upgrade, its normal shell command should run the upgraded version.
Workaround
Replacing the stale Vite Plus executable with the newly installed OpenCode executable made opencode --version report 1.18.1.
Suggested direction
Vite Plus could avoid installing static, same-named binaries for externally self-updating CLIs, make them forwarding shims, or provide a way to refresh the Vite Plus bin entry after an external upgrade.
Summary
On Windows, a Vite Plus-owned executable in
~\.vite-plus\bincan remain ahead of a newer version installed by that CLI's own updater. The shell command then continues to run the stale Vite Plus executable.OpenCode is the confirmed example below. This may affect any externally updatable CLI for which Vite Plus installs an executable with the same command name, but this report does not claim other packages are currently affected.
Environment
0.2.41.17.18Reproduction
The updater reported:
But immediately afterwards:
Investigation
The command resolved to the Vite Plus-owned path:
The updater had installed OpenCode
1.18.1at:Running that executable directly returned
1.18.1; the PATH executable remained at1.17.18.Scope checked
opencodewas shadowed by the stale Vite Plus executable.npm,npx, andcorepackresolve to NVM rather than~\.vite-plus\bin.Expected behavior
After a CLI reports a successful self-upgrade, its normal shell command should run the upgraded version.
Workaround
Replacing the stale Vite Plus executable with the newly installed OpenCode executable made
opencode --versionreport1.18.1.Suggested direction
Vite Plus could avoid installing static, same-named binaries for externally self-updating CLIs, make them forwarding shims, or provide a way to refresh the Vite Plus bin entry after an external upgrade.