Skip to content

Daemon rejects a byte-identical second copy of its own binary (image_unverifiable); client only sees an indefinite "pending" #1383

Description

@OmerZeyveli

Version: eval-97ce23f (v0.9.0+338) · Platform: Linux 6.x, single user account

What happens

Two separate HOMEs, each with its own codebase-memory-mcp install, same version, byte-identical binaries (identical sha256, separate files on disk). With a daemon already warm from the first install, a client launched from the second never connects — it reports status: "pending" indefinitely and offers zero tools.

The reason appears only in the daemon log:

level=error msg=daemon.client_image_rejected reason=image_unverifiable

Two adjacent constraints compound the problem:

  • the daemon socket lives in /tmp/cbm-daemon-<uid> — keyed by uid, so HOME isolation does not isolate the daemon;
  • only one CBM_CACHE_DIR may be active per user at a time. A second is refused with "the active account daemon uses a different cache directory (active cache …; requested cache …). Close all CBM sessions and commands, then retry with one consistent CBM_CACHE_DIR."

That second message is clear and actionable. The image_unverifiable path is not: the client sees only pending, which is indistinguishable from a slow cold start.

Why it matters

Anyone running two workspaces side by side, or a build agent running two checkouts under one service account, hits this. It also makes A/B comparison of two configurations of the same version impossible without a workaround.

Workaround

Hard-linking both installs' binaries to a single inode, plus sharing one CBM_CACHE_DIR, makes both clients connect to one daemon. That works but is not something a user would discover from the symptom.

Suggestion

  • If the check is a supply-chain guard, comparing binary content (hash) rather than image identity would admit a genuinely identical binary while keeping the guarantee.
  • If single-instance enforcement is intentional, surfacing the reason to the client — instead of an indefinite pending — would save considerable diagnosis time.

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.stability/performanceServer crashes, OOM, hangs, high CPU/memoryux/behaviorDisplay bugs, docs, adoption UX

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions