Skip to content

commitlore_prepare_capture fails with ENOENT on a 0.6.0 spec path; the Claude plugin cache only has 0.8.0 and the codex cache has 0.8.2 #635

Description

@MongLong0214

The capture pipeline is unusable through MCP: commitlore_prepare_capture fails immediately, before any draft is written.

What happened

commitlore_prepare_capture(transcript: "<~2.4 KB session note>")
→ commitlore: ENOENT: no such file or directory,
  open '/Users/isaac/.claude/plugins/cache/commitlore/commitlore/0.6.0/spec/SPEC.md'

There is no 0.6.0 anywhere on this machine. What exists:

$ ls -d ~/.claude/plugins/cache/commitlore/commitlore/*/
/Users/isaac/.claude/plugins/cache/commitlore/commitlore/0.8.0/

$ find ~/.claude/plugins/cache/commitlore -name SPEC.md
/Users/isaac/.claude/plugins/cache/commitlore/commitlore/0.8.0/spec/SPEC.md

$ find ~/.codex/plugins/cache/commitlore -name SPEC.md
/Users/isaac/.codex/plugins/cache/commitlore/commitlore/0.8.2/spec/SPEC.md

$ ls ~/.local/share/commitlore/
codex-plugin.json  v0.8.0  v0.8.1  v0.8.2

$ commitlore --version
0.8.2

So three different versions are live at once depending on which surface you ask:

surface version
commitlore on PATH 0.8.2
commitlore.bin in git config v0.8.0
Claude plugin cache 0.8.0
codex plugin cache 0.8.2
what prepare_capture looks for 0.6.0

The 0.6.0 reference is the odd one — nothing else on the machine mentions it, so it looks like a
version string that is computed or persisted somewhere rather than read from the running install.

Reproduction

  1. Install 0.8.2 and wire the MCP server into a repository (this repo has .commitlore-policy.json
    and commitlore.* git config present).
  2. Call commitlore_prepare_capture with any non-empty transcript.
  3. Observe ENOENT on a 0.6.0/spec/SPEC.md path.

The MCP server config in the plugin is:

{ "mcpServers": { "commitlore": { "command": "node", "args": ["./dist/commitlore.mjs", "mcp"], "cwd": "." } } }

cwd: "." plus a relative ./dist/commitlore.mjs means the resolved implementation depends entirely
on where the host launches it, which may be how the surfaces drifted apart.

Impact

This blocks the documented capture flow end to end — prepare is the first step, so verify and stage
are unreachable. Commits with real decision context cannot be recorded through MCP at all; the only
路 left is writing trailers by hand, which the tool explicitly advises against.

Possibly the same root cause as a separate report

I filed #631 for a related symptom: the same record reads trust: "directive" through the CLI and
trust: "claim" through MCP. If the MCP surface is resolving against a stale install, both would
follow from one cause. I am reporting them separately because I could not prove they share it.

Environment

  • CommitLore 0.8.2 on PATH; commitlore.bin git config pointing at v0.8.0
  • macOS 15 (Darwin 25.3.0)
  • Claude Code plugin cache at 0.8.0, codex plugin cache at 0.8.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions