047. Where the Windows installs keep their version
- Date
- 2026-10-30
- Agents
- Claude Code, Codex CLI, Cursor CLI, opencode, Gemini CLI, Copilot CLI, Qwen Code, Amp, Crush, Kimi Code CLI, Continue CLI, Factory Droid, Cline CLI, Kilo Code CLI, Auggie
- Measured on
- CI runner windows-2022 (Windows NT 10.0.20348, x64), CI runner windows-2025 (10.0.26100, x64) and CI runner windows-11-arm (10.0.26200, arm64)
Measured
2026-10-30, the scenario scenarios/windows-installs.ps1 in the scenarios
workflow (run 41137353062, and again in run 41138908257). The workflow
installed each agent, then the scenario ran Get-Command <cmd> -All and
<cmd> --version, read package.json, and listed the install folder. It
started no agent interactively.
| Agent | Command | Version | Install |
|---|---|---|---|
| Claude Code | claude |
2.1.314 | npm @anthropic-ai/claude-code |
| Codex CLI | codex |
0.166.0 | npm @openai/codex |
| opencode | opencode |
1.19.5 | npm opencode-ai |
| Gemini CLI | gemini |
0.66.0 | npm @google/gemini-cli |
| GitHub Copilot CLI | copilot |
1.0.105 | npm @github/copilot |
| Qwen Code | qwen |
0.26.4 | npm @qwen-code/qwen-code |
| Amp | amp |
0.0.1793390435-g08e9ec | npm @ampcode/cli |
| Crush | crush |
v0.99.0 | npm @charmland/crush |
| Continue CLI | cn |
1.5.47 | npm @continuedev/cli |
| Factory Droid | droid |
1.0.0 | npm @factory/cli |
| Cline CLI | cline |
3.0.74 | npm cline |
| Kilo Code CLI | kilo |
7.8.18 | npm @kilocode/cli |
| Auggie | auggie |
0.36.0 | npm @augmentcode/auggie |
| Cursor CLI | agent, cursor-agent |
2026.10.22-27dcf5f | irm 'https://cursor.com/install?win32=true' | iex |
| Kimi Code CLI | kimi |
2.4.1 | irm https://code.kimi.com/kimi-code/install.ps1 | iex |
Node.js 22.23.4 and npm 10.9.9 (from actions/setup-node).
Measured on: CI runner windows-2022 (Windows NT 10.0.20348, x64), CI runner windows-2025 (10.0.26100, x64) and CI runner windows-11-arm (10.0.26200, arm64). The two x64 images gave the same layout. Fact 48 gives the arm64 differences.
What was measured
- The npm prefix on all three images is
C:\npm\prefix. For each npm agent, npm writes three shims there:<cmd>.ps1,<cmd>.cmdand<cmd>with no extension.Get-Command <cmd> -Alllists them in this order:ExternalScript <cmd>.ps1,Application <cmd>.cmd,Application <cmd>. None of the npm paths holds the version. The version is inC:\npm\prefix\node_modules\<package>\package.json, and on the x64 images it was the same as--versionfor each npm agent. - The shims point to one of three kinds of target:
- A native
.exein the main package: Claude Code (@anthropic-ai\claude-code\bin\claude.exe), opencode (opencode-ai\bin\opencode.exe) and Amp (@ampcode\cli\bin\amp.exe). The same file is also in a platform package, for example@anthropic-ai\claude-code-win32-x64\claude.exe,opencode-windows-x64\bin\opencode.exeandopencode-windows-x64-baseline\bin\opencode.exe. - A JavaScript launcher that starts a native
.exefrom a platform package: Codex CLI (bin\codex.jsto@openai\codex-win32-x64\vendor\x86_64-pc-windows-msvc\bin\codex.exe, next tocodex-code-mode-host.exe,codex-path\rg.exeandcodex-resources\codex-command-runner.exe), Copilot CLI (npm-loader.jsto@github\copilot-win32-x64\copilot.exe), Crush (run-crush.jsto@charmland\crush\bin\crush.exe), Factory Droid (bin\droidto@factory\cli-win32-x64\bin\droid.exe), Cline CLI (bin\clineto@cline\cli-windows-x64\bin\cline.exe) and Kilo Code CLI (bin\kiloto@kilocode\cli-windows-x64\bin\kilo.exe). - JavaScript that runs in
node.exe: Gemini CLI (bundle\gemini.js), Qwen Code (cli-entry.js), Continue CLI (dist\cn.js) and Auggie (augment.mjs).
- A native
- The file version of a native
.exeis not the agent version.copilot.exehad 1.0.105 andclaude.exehad 2.1.314.0 (run 41138908257), the agent versions.opencode.exe,amp.exe,droid.exeandkilo.exeall had 1.4.4.cline.exehad 1.4.2.codex.exeandcrush.exehad no file version. - Cursor CLI installs to
%LOCALAPPDATA%\cursor-agent, and the installer adds that folder to the userPATH. The folder holdsagent.cmd,agent.ps1,cursor-agent.cmdandcursor-agent.ps1, andversions\<version>\withnode.exe,rg.exe,crepectl.exe,cursorsandbox.exe,node_sqlite3.node,node_modules\and a.running\folder.versions\promote-staged.cmdis next to the version folders. The version is the name of the folderversions\2026.10.22-27dcf5f, the same as--version. - Kimi Code CLI installs one file,
%USERPROFILE%\.kimi-code\bin\kimi.exe, and a fileregionin.kimi-code. No path holds the version. Onlykimi --versiongave it. --versionmakes files for some agents. After the calls, these folders were new:.codex,.cursor,.gemini,%LOCALAPPDATA%\copilotand%LOCALAPPDATA%\cursor-compile-cache(the first group of agents), and.cline,.continue,.cache,.config,.local,%LOCALAPPDATA%\ampand%LOCALAPPDATA%\kimi-code(the second group).
Mechanism
A tool that wants the version of a running agent on Windows can read it
from the path only for Cursor CLI. For an npm agent, it can go from the
process image (for example codex.exe in a platform package) up to the
node_modules\<package> folder of the main package and read
package.json. For Gemini CLI, Qwen Code, Continue CLI and Auggie, the
process image is node.exe, so the tool must read the command line of the
process to find the package.
Incident
None. This answers request 13 of aw (where the Windows installs keep their version).
Screens
None. The output is in the logs of the runs.
Not measured
- The process tree of a running agent on Windows: the scenario starts no agent interactively.
- The standalone Windows installer of Codex CLI, and installs with
winget, Scoop or Chocolatey. - Which agent of the second group made
.cache,.configand.local. - The Goose and OpenHands CLI installs on Windows.
- An npm prefix other than
C:\npm\prefix, for example the default%APPDATA%\npmof a new Node.js install.