Repository navigation
Description
Version
codebase-memory-mcp 0.9.0
Platform
Windows (x64)
Install channel
GitHub release archive / install.sh / install.ps1
Binary variant
standard
What happened, and what did you expect?
Tried to install version 10.3 on a Windows machine.
Note that this computer does not have Codex installed. I get an error saying that "error: failed to stage install candidate: activation transaction I/O failed: owner-not-current-user". I checked the "C:/Users/user/AppData/Local/Programs/codebase-memory-mcp" folder as well as the user temp folder and they are both owned by my account. I ran this as both admin and without admin and both produced the same error.
PS C:\Users\user> .\install.ps1
codebase-memory-mcp installer (Windows)
arch: amd64
target: C:\Users\user\AppData\Local\Programs\codebase-memory-mcp\codebase-memory-mcp.exe
Downloading codebase-memory-mcp-windows-amd64.zip...
Checksum verified.
Extracting...
Verified candidate: codebase-memory-mcp 0.10.3
codebase-memory-mcp install 0.10.3
Found 5 existing index(es). Keeping them. After install, re-index to pick up this version's improvements:
C:/Users/user/.cache/codebase-memory-mcp/C-s-test.db
C:/Users/user/.cache/codebase-memory-mcp/_config.db
error: failed to stage install candidate: activation transaction I/O failed: owner-not-current-user (os 0) at C:/Users/user/AppData/Local/Programs/codebase-memory-mcp
error: installation failed (exit code 1)
Reproduction
- install version 9.0
- try to install version 10.3
Logs
Diagnostics trajectory (memory / performance / leak issues)
Project scale (if relevant)
No response
Confirmations
- I searched existing issues and this is not a duplicate.
- My reproduction uses shareable code (a dummy snippet or a public OSS repository), not proprietary code.
Activity
DeusData commentedon Aug 13, 2026
Thank you @spam0115 — root-caused, and your detail about checking the folder ownership is what made it findable.
You were right that the folders are yours. The bug is on our side: we compared the file's owner against your user SID, but Windows stamps newly-created objects with the token's owner SID — and for a member of the Administrators group that defaults to
BUILTIN\\Administrators. So the installer created its own staging file and then refused it, seconds later, as not belonging to you. Running as admin or not made no difference because both of your runs were in the Administrators group.Fix in PR #1583: we now also accept the SID Windows actually stamps on what we create. It is strictly narrower than "trust any administrator" — a file owned by a different account is still refused — and on a non-elevated account nothing changes at all.
One honest caveat, and a request. Our Windows CI and test VM both run as ordinary users, where those two SIDs are identical — so they prove the fix compiles and breaks nothing, but they cannot exercise the elevated path that is actually failing for you. You are in a better position to verify this than we are. When the next release ships I will ping this issue; if you would re-run
install.ps1then and tell us what happens, that would confirm it properly.Also filed alongside yours: #1582, a fresh install from
C:\\Users\\Administratorwhose MCP server exits during startup — almost certainly the same cause from the other end.Merge pull request #1583 from DeusData/fix/batch3-windows-owner
DeusData commentedon Aug 13, 2026
Fixed on main — commit
0215e9b4(PR #1583), shipping in the next release.The ownership check now also accepts the SID Windows actually stamps on objects we create (
TokenOwner), not just your user SID (TokenUser). On an Administrators-group account those differ, which is why we were refusing files we had written seconds earlier.Verified on a real Windows VM (302 tests, 0 failures) plus full CI. As I mentioned, neither venue runs elevated, so the elevated path itself is the piece only you can confirm — I will ping here when the release is out.
fix(windows): accept the owner Windows actually stamps on what we create
DeusData commentedon Aug 14, 2026
We said we would ping you when the next release shipped, and then didn't — apologies for the delay.
v0.10.4 is out and contains the fix (
0215e9b4, PR #1583).Your observation is what root-caused it. You wrote that the directories were "both owned by my account" and that running as admin and non-admin produced the identical error — that ruled out the obvious explanations and pointed at the comparison itself rather than the ownership.
The bug: we compared the file's owner against the token's user SID, but Windows stamps a newly-created object with the token's owner SID, which for any member of the Administrators group defaults to
BUILTIN\Administrators. So the installer created its own staging file and then refused it, seconds later, as belonging to someone else. Nothing was actually wrong with your machine.We now also accept the SID Windows actually stamps on what we create. It is narrower than "trust any administrator" — a file owned by a genuinely different account is still refused.
One honest caveat: neither our CI nor our test VM runs as an elevated account, so the elevated path is not exercised in any venue we own. If v0.10.4 installs cleanly for you, that confirmation is genuinely valuable to us. If it still fails, the error text will have changed and that is useful too — please paste whatever it says.
Thank you for the report and for the detail you put into it.
spam0115 commentedon Aug 14, 2026
btw, I'm not sure if it is of any use to you now but I created this install script to get around the issue. It's based off the 10.2 install script:
DeusData commentedon Aug 14, 2026
This is very much of use — you independently found the same fix we did, and your script is the better evidence of the two.
The decisive lines are these:
/inheritance:ris exactly the operationinstall.ps1was missing. Ours creates its staging directory withNew-Item, which inherits whatever%TEMP%carries — and then runs the downloaded binary from that directory, where the binary validates its own directory and refuses inherited cross-account mutation grants. So the installer was handing our own validator a directory the installer had made wrong. That is theacl-grants-cross-account-mutationhalf; theowner-not-current-userhalf you originally reported is theTokenOwnerbug, fixed separately in v0.10.4.I measured it on a Windows VM before writing the fix, and your workaround is doing the same thing:
Five inherited ACEs on a directory we had just created ourselves.
The fix is up as #1625 — it applies a protected owner-only DACL to the staging directory via
Set-Acl, which is the same end state as youricacls /inheritance:r /grant:r. Two differences worth naming: I usedSet-Aclrather thanicaclsbecause theCreateDirectoryoverload that takes aDirectorySecurityexists on PowerShell 5.1 but not on 7, and I grant only the current user rather than also SYSTEM and Administrators — both of those are already in our trusted set, so granting them is fine, it is just not necessary.It also means the
TMP/TEMPredirection workaround circulating in #1529 becomes unnecessary.Two things I would still value from you, if you have the patience:
Thank you for going to the trouble of writing a working installer and then handing it back to us rather than just keeping it. That is a genuinely generous way to file a bug.
spam0115 commentedon Aug 14, 2026
"Does v0.10.4 install cleanly now?" It does install cleanly except for it's inability to update the codex/config.toml file. Even though it already had entries from the recent v0.10.2, it was unable to recognized the entries and reported an error. I had to delete all references to cbm in the toml file by hand.
DeusData commentedon Aug 14, 2026
Thank you — and that is a genuinely useful answer, because it confirms one thing and exposes another.
Confirmed: the install itself is fixed. You were the only venue that could tell us; neither our CI nor our test VM runs as an elevated account, so the
TokenOwnerfix shipped in v0.10.4 unverified everywhere we control. Your "it does install cleanly" is the only real evidence it works.The Codex failure is a different bug, and your description names it precisely: "even though it already had entries from the recent v0.10.2, it was unable to recognize the entries." Having to hand-delete every cbm reference before we would proceed is not an acceptable upgrade path, and I am sorry you had to.
That is the same shape as a bug fixed for OpenCode earlier today (#1630 / PR #1640): our ownership check required the entry to match what this version writes, exactly — so an entry written by an earlier version of cbm was classified as foreign and refused. Same defect, different config format: JSON there, TOML here. Your report is what shows it is a pattern rather than a one-off.
Tracked in #1633, and @astandrik already has PR #1638 open adding real reasons to Codex preflight refusals — so the next occurrence will say which check refused instead of just failing. That PR plus your evidence should be enough to fix the recognition itself.
One question if you still have it: did the old entries in
config.tomldiffer from what v0.10.4 writes — extra keys, a different command path, a changed hook shape? Even a rough "it had X, the new one has Y" would let us fix the comparison rather than guess at it. Completely fine if you have already overwritten it.Genuinely appreciated — you reported the original bug, wrote a working installer to get around it, handed that back to us, and have now verified the fix and found the next one.
DeusData commentedon Aug 17, 2026
Closing — both halves are now fixed. The owner-not-current-user staging failure was the TokenOwner fix shipped in v0.10.4, which you confirmed installs cleanly (and yours was the only elevated-account venue that could prove it — thank you). The residual you then hit — Codex hook_preflight refusing the entries v0.10.2 itself wrote — was tracked as #1633 and is fixed by #1638 (merge 3162f09, in v0.10.6): the reconciler now recognises the managed v0.10.2 SessionStart/SubagentStart hook pair (verified end-to-end against a byte-faithful v0.10.2-written config.toml, including the Windows CRLF+BOM variant) and rewrites it in place, so no more hand-deleting cbm references. If v0.10.6 still refuses your real config.toml, please reopen with the refusal line — it now names the reason.