Skip to content

No such xattr: com.apple.quarantine #1537

Description

@listepo

Version

0.10

Platform

macOS (Apple Silicon)

Install channel

GitHub release archive / install.sh / install.ps1

Binary variant

standard

What happened, and what did you expect?

codebase-memory-mcp installer
os: darwin
arch: arm64
target: /Users/listepo/.local/bin/codebase-memory-mcp

Downloading codebase-memory-mcp-darwin-arm64.tar.gz...
######################################################################## 100.0%
Checksum verified.
Extracting...
Fixing macOS code signing...
Verified candidate: codebase-memory-mcp 0.10.0
codebase-memory-mcp install 0.10.0

xattr: /tmp/cbm-install-zRIanz/codebase-memory-mcp: No such xattr: com.apple.quarantine
/tmp/cbm-install-zRIanz/codebase-memory-mcp: replacing existing signature
codebase-memory-mcp 0.10.0
error: active CBM sessions and operations could not be stopped safely; no activation was committed.

Reproduction

codebase-memory-mcp uninstall
curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash

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

  1. added
    priority/highNeeds near-term maintainer attention; high-impact bug, regression, safety issue, or release blocker.
    on Aug 11, 2026
  2. DeusData commented on Aug 11, 2026

    @DeusData
    Owner

    Thanks for the clear report, @listepo — the full installer transcript makes this easy to read, and it surfaced two things worth fixing.

    The xattr line in the title is actually harmless — the installer tries to strip macOS's quarantine attribute and prints that message when there's none to strip (fresh download via curl doesn't always carry it). It should be silent; we'll make it so. Sorry it pointed you at the wrong suspect.

    The real failure is the last line: active CBM sessions and operations could not be stopped safely; no activation was committed. The installer refuses to swap the binary while something still holds a live cbm session — most likely an MCP client (Claude Code, Codex, an editor integration) that kept a server process running through your uninstall, or a daemon it respawned. The refusal itself is safety-correct, but it has two real defects on macOS which we're treating as the bug here:

    1. It doesn't tell you which processes are blocking — on Windows this same refusal lists the pids since v0.10.0 (Windows: install/uninstall/doctor all fail with "active CBM sessions and operations could not be stopped safely" #1416), and the POSIX path should do exactly the same.
    2. A session that the installer could safely stop (as on Windows) should be stopped rather than failing the install.

    Workaround right now: quit whatever agents/editors are using cbm (or check with pgrep -fl codebase-memory-mcp and stop those processes), then re-run the install — and grab v0.10.1 while you're at it; it fixes an important MCP output bug in 0.10.0.

    If it's easy for you, the output of pgrep -fl codebase-memory-mcp from before a retry would help us confirm whether uninstall is leaving a daemon behind (that would be a second bug) — but no worries if not, we can reproduce from what you've given.

    This is slated for v0.10.2, the next fix release — we've moved to small, fast fix releases, so it won't be a long wait. Thanks again for taking the time to file this!

  3. DeusData commented on Aug 11, 2026

    @DeusData
    Owner

    Fixed in v0.10.2, released just now: https://github.com/DeusData/codebase-memory-mcp/releases/tag/v0.10.2 (GitHub archives, npm, and PyPI are all serving it).

    Please give it a try when you get a chance — if it behaves in your setup, feel free to close this out; if anything still looks off, say so and we'll pick it straight back up. Thank you again for the report, it made this fix fast and precise.

  4. listepo commented on Aug 12, 2026

    @listepo
    Author

    @DeusData xattr: /tmp/cbm-install-PqqhWL/codebase-memory-mcp: No such xattr: com.apple.quarantine
    /tmp/cbm-install-PqqhWL/codebase-memory-mcp: replacing existing signature
    codebase-memory-mcp 0.10.2
    error: active CBM sessions and operations could not be stopped safely; no activation was committed.
    error: run 'codebase-memory-mcp daemon status' to list the client processes still holding the daemon (MCP servers started by your editor or agent are the usual holders), close them, then retry.

  5. listepo commented on Aug 12, 2026

    @listepo
    Author

    codebase-memory-mcp daemon status zsh: command not found: codebase-memory-mcp

  6. listepo commented on Aug 12, 2026

    @listepo
    Author

    Even after rebooting, I couldn't find the related process

  7. listepo commented on Aug 12, 2026

    @listepo
    Author

    Everything broke after the codebase-memory-mcp uninstall command

  8. DeusData commented on Aug 12, 2026

    @DeusData
    Owner

    @listepo — I'm sorry. You reported this cleanly, we told you it was fixed in v0.10.2, and it isn't. Worse, the "improvement" we shipped made your situation harder: the new line tells you to run codebase-memory-mcp daemon status — a command that doesn't exist after uninstall, which is exactly when you're reading it. That was our mistake, and the fact that you rebooted, found no process, and still got blamed for "active sessions" means we sent you looking for something that was never there.

    What we got wrong, concretely. The activation guard funneled two unrelated outcomes into one message:

    • the coordination cohort is busy — real sessions hold it, and closing them is the fix;
    • the reservation failed — lock I/O, leftover coordination state, or permissions — where nothing is running at all.

    Your case is the second, and we printed the first. Same mistake we'd already fixed twice elsewhere (#1416, #1535): a non-session failure wearing a session costume. Fixed on our side for the next patch release: the two conditions now say different things, the failure one states plainly that nothing needs to be closed, and neither remedy assumes a cbm binary is on PATH.

    What that fix does not do is explain your root cause — why the reservation fails when nothing is running. I tried to reproduce it (uninstall then reinstall in an isolated HOME and cache) and it completed normally, so whatever is blocking you is persistent state my machine doesn't have. To pin it, could you share:

    1. ls -la "${CBM_CACHE_DIR:-$HOME/.cache/codebase-memory-mcp}" — the full listing, including any .lock, .pid, or .corrupt* entries.
    2. ls -la /private/tmp/cbm-daemon-$(id -u)/ 2>/dev/null — the coordination rendezvous directory. This is the prime suspect: macOS does not reliably clear /private/tmp on reboot, so a stale artifact here would survive exactly the reboot you tried.
    3. pgrep -fl codebase-memory-mcp (expected: nothing) and id -u.
    4. The full installer output from a fresh attempt, with the two lines above the error included.

    Unblocking you in the meantime, in order of least destructive:

    rm -rf "/private/tmp/cbm-daemon-$(id -u)"      # stale coordination state only

    then re-run the installer. If that doesn't do it:

    mv "$HOME/.cache/codebase-memory-mcp" "$HOME/.cache/codebase-memory-mcp.bak"

    and re-run — that preserves your indexes in the .bak copy while ruling the cache in or out. If either of those unblocks you, please say which: that alone identifies the culprit, and it becomes the thing we make impossible rather than merely better-worded.

    (The No such xattr line is still harmless noise — it just means the download carried no quarantine attribute. We silenced it in v0.10.2; if you're seeing it from a locally saved older install.sh, that copy predates the fix.)

    Thank you for staying with this and for the follow-ups — "even after rebooting" was the detail that showed our message was lying.

  9. added
    awaiting-reporterWaiting on the reporter for info/repro; stale bot will warn then close
    on Aug 12, 2026
  10. 13 remaining items

  11. DeusData commented on Aug 13, 2026

    @DeusData
    Owner

    Thank you @listepo — and that output is exactly what I needed, because it rules out the obvious suspect and exposes a gap on our side.

    Your permissions are fine. drwx------ owned by you, parent drwxr-xr-x owned by you. No group- or world-write anywhere, so the ancestor relaxation shipped in v0.10.3 was never going to be your fix. Good to have that eliminated rather than assumed.

    And our new message is half-useless, which is our bug. It correctly tells you this is not a session problem — that part worked. But it then says "Check the errors above" when there are no errors above: the validation detail that names the failing component lives on the daemon side and never reaches the CLI's refusal path. So we replaced a message that blamed the wrong thing with one that blames nothing. I am fixing that propagation in the current batch; an error that says "see above" with nothing above is not much better than the fabricated errno it replaced.

    One command would give us the answer today, because that same detail does surface on the daemon path:

    codebase-memory-mcp daemon status

    On v0.10.2 this printed you:

    exact executable identity could not be verified (cache-private) -
    /Users/listepo/.cache/codebase-memory-mcp: ancestry component validation failed (errno 2)
    

    On v0.10.3 that same line now names the directory and the rule that refused it instead of inventing an errno. Whatever it prints is the root cause, and it is the one fact this issue has been missing since it was opened.

    If it hangs instead of printing — a separate reporter just hit exactly that on Linux (#1416) — then say so, because that is its own bug and a serious one: it is the command our error message tells people to run.

    A second thing worth trying, cheap and informative:

    ls -lde ~ ~/.cache ~/.cache/codebase-memory-mcp

    The -e flag lists ACLs, which the @ in your earlier output does not cover (@ is extended attributes, + would be an ACL). macOS puts a group:everyone deny delete ACL on home directories by default; our walk is supposed to accept deny-only ACLs, and if yours carries something else that is a strong candidate.

    Sorry this has taken three rounds. The fabricated errno cost the first one, and this "see above" gap cost the second — both ours, and both now fixed or being fixed.

  12. added a commit that references this issue on Aug 13, 2026
  13. listepo commented on Aug 14, 2026

    @listepo
    Author

    curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash

    codebase-memory-mcp installer
    os: darwin
    arch: arm64
    target: /Users/listepo/.local/bin/codebase-memory-mcp

    Downloading codebase-memory-mcp-darwin-arm64.tar.gz...
    ######################################################################## 100.0%
    Checksum verified.
    Extracting...
    Fixing macOS code signing...
    Verified candidate: codebase-memory-mcp 0.10.4
    codebase-memory-mcp install 0.10.4

    xattr: /tmp/cbm-install-u9huDS/codebase-memory-mcp: No such xattr: com.apple.quarantine
    /tmp/cbm-install-u9huDS/codebase-memory-mcp: replacing existing signature
    codebase-memory-mcp 0.10.4
    error: activation could not reserve exclusive access; no activation was committed.
    error: this is NOT a running-session problem — the reservation itself failed (coordination lock, leftover state, or permissions). Nothing needs to be closed. Check the errors above, and report this with the output of 'ls -la "${CBM_CACHE_DIR:-$HOME/.cache/codebase-memory-mcp}"' if it persists.

  14. DeusData commented on Aug 14, 2026

    @DeusData
    Owner

    @listepo — you posted the v0.10.4 transcript this morning, and this issue is still carrying an awaiting-reporter label. That is wrong, and it is ours to fix: nothing here has been waiting on you for days, and you have answered every single thing we asked.

    Four rounds in, we have sent you after a phantom session, a fabricated errno, and now a "check the errors above" with nothing above it — each of those was our message lying to you, and each cost you a retry on a machine where cbm simply will not install. The reservation-failure path is being worked on right now, including getting the daemon-side validation detail through to the CLI so the refusal finally names what it refused, instead of pointing at empty space.

    Tonight's v0.10.5 is being cut specifically for the issues that make cbm impossible to operate, and this is at the top of that list. I am sorry it has taken this many attempts on your machine to get us a straight answer.

  15. removed
    awaiting-reporterWaiting on the reporter for info/repro; stale bot will warn then close
    on Aug 14, 2026
  16. DeusData commented on Aug 14, 2026

    @DeusData
    Owner

    @listepo — we have been sending you to the wrong directory this entire time, and I am sorry. You were right every time you said .cache was fine.

    The refusal reads ancestor '.cache' is not a usable private-directory parent. But the check that fails validates the directory we are already in — the parent of the one named. So when it says .cache, the directory actually refusing is /Users/listepo, your home directory. The code tested one directory and printed the name of the next one.

    That is why every round of this went nowhere: you inspected exactly what we named, correctly reported it was drwx------ and owned by you, and we had no idea we were pointing you one level too deep.

    Would you mind checking your home directory instead?

    ls -ldO ~            # macOS: mode, owner, and flags
    ls -lde ~            # macOS: any extended ACL
    

    We are looking for: owned by you, not world-writable, and no ACL entries — an + in the mode column or any 0: group:everyone … line from ls -lde would do it. A chmod -N ~ clears an extended ACL if one is there.

    Fix for the message is up as #1646, so the next person gets the real directory named. Two other things landing that touch your case: #1645 adds CBM_RUNTIME_DIR so the rendezvous parent can be relocated in a shipped build, and #1627 makes the CLI refusal print the validation detail instead of pointing at errors that were never printed.

    Thank you for staying with this and for re-confirming on v0.10.4 today rather than giving up. This one is squarely our fault — the message named the wrong variable from the day it was written.

  17. listepo commented on Aug 14, 2026

    @listepo
    Author

    Fixed

  18. listepo commented on Aug 14, 2026

    @listepo
    Author

    Thnaks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingeditor/integrationEditor compatibility and CLI integrationpriority/highNeeds near-term maintainer attention; high-impact bug, regression, safety issue, or release blocker.windowsWindows-specific issues

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions