Summary
cmd update prints "✔ Updated to v1.17.0" but cmd --version stays on the old version. No error is shown. The self-updater assumes npm
global install and never touches bun-installed binaries, so the update silently no-ops for bun users.
Expected Behavior
cmd update upgrades the binary that is actually on PATH.
- After update,
cmd --version shows the new version.
- If the binary did not change, the command reports failure (non-zero exit) with manual instructions — never a false success.
--check-only behavior is preserved.
Actual Behavior
cmd update always runs npm i -g command-code (hardcoded updateCommand in updateAction2 → runCliUpdateCommand).
- On a bun install (
~/.bun/bin/cmd → bun global node_modules), the new version lands in npm's global dir as an orphan copy (no cmd bin link), while the PATH binary is untouched.
- Success is reported from the install command's exit code, not from the on-disk version changing.
Steps to reproduce the issue
- Install via bun:
bun i -g command-code
- Run
cmd update → prints "✔ Updated to v1.17.0. Run cmd to start using the new version."
- Run
cmd --version → still old version (e.g. 1.14.0)
- Confirm orphan copy:
ls /opt/homebrew/lib/node_modules/command-code (npm prefix) vs ls ~/.bun/install/global/node_modules/command-code (bun) — versions differ.
Command Code Version
1.14.0
Operating System
macOS
Terminal/IDE
ghostty
Shell
zsh
Session file (optional)
No response
Fix prompt (optional)
Fix the self-update logic so it updates the binary that is really on PATH:
- Detect install method before updating. Inspect the resolved binary path (
process.argv[1]; e.g. .bun/install/global/...,
/opt/homebrew/bin, npx shim) and/or probe package-manager globals for command-code (bun: ~/.bun/install/global, npm: npm root -g,
brew: brew list).
- Update via the matching manager:
- bun →
bun i -g command-code@latest
- npm →
npm i -g command-code@latest
- brew →
brew upgrade command-code (if available)
- unknown → current behavior + warning.
- Verify after update. Compare the version of the resolved install before/after (package.json or
--version). Report success only
if the PATH binary version actually changed.
- On stale binary → print failure with manual instructions, exit non-zero.
- Keep
--check-only semantics; keep telemetry, add install_method field if cheap.
Acceptance criteria:
- bun install:
cmd update upgrades the bun copy; cmd --version shows new version; no orphan npm copy created.
- npm install: behavior unchanged.
- Update command succeeds but version unchanged → failure, non-zero exit, manual instructions.
- Unit tests cover: method detection (bun/npm/brew/path shims), command selection per method, post-update verification (success + stale
cases).
Additional context
OS: macOS Tahoe 26.5.2
Summary
cmd updateprints "✔ Updated to v1.17.0" butcmd --versionstays on the old version. No error is shown. The self-updater assumes npmglobal install and never touches bun-installed binaries, so the update silently no-ops for bun users.
Expected Behavior
cmd updateupgrades the binary that is actually on PATH.cmd --versionshows the new version.--check-onlybehavior is preserved.Actual Behavior
cmd updatealways runsnpm i -g command-code(hardcodedupdateCommandinupdateAction2→runCliUpdateCommand).~/.bun/bin/cmd→ bun global node_modules), the new version lands in npm's global dir as an orphan copy (nocmdbin link), while the PATH binary is untouched.Steps to reproduce the issue
bun i -g command-codecmd update→ prints "✔ Updated to v1.17.0. Run cmd to start using the new version."cmd --version→ still old version (e.g. 1.14.0)ls /opt/homebrew/lib/node_modules/command-code(npm prefix) vsls ~/.bun/install/global/node_modules/command-code(bun) — versions differ.Command Code Version
1.14.0
Operating System
macOS
Terminal/IDE
ghostty
Shell
zsh
Session file (optional)
No response
Fix prompt (optional)
Fix the self-update logic so it updates the binary that is really on PATH:
process.argv[1]; e.g..bun/install/global/...,/opt/homebrew/bin, npx shim) and/or probe package-manager globals forcommand-code(bun:~/.bun/install/global, npm:npm root -g,brew:
brew list).bun i -g command-code@latestnpm i -g command-code@latestbrew upgrade command-code(if available)--version). Report success onlyif the PATH binary version actually changed.
--check-onlysemantics; keep telemetry, addinstall_methodfield if cheap.Acceptance criteria:
cmd updateupgrades the bun copy;cmd --versionshows new version; no orphan npm copy created.cases).
Additional context
OS: macOS Tahoe 26.5.2