v2.4.2 — Claude Code regression fixes + audit hardening
Why this release matters
v2.4.1 was broken on Claude Code — upgrade immediately. Its Codex-compatibility rewrite replaced ${CLAUDE_PLUGIN_ROOT} with a bash-fallback form that Claude Code's template substitution does not recognize, which broke every scripted step of every command. v2.4.2 restores full Claude Code operation and completes the marketplace rename that v2.4.1 started.
Fixed — v2.4.1 regressions
${CLAUDE_PLUGIN_ROOT}restored in all commands, agents, and skills.hooks/hooks.jsonkeeps the Codex fallback form (hooks receive the variable as an environment variable, so it resolves safely there).- Marketplace rename completed: the root manifest now declares
name: knowledge-vault/2.4.2(it was left atclaude-knowledge-vault/2.4.0, so the README's install commands pointed at a marketplace that didn't exist and update checks never surfaced 2.4.1). The duplicate in-plugin marketplace.json is gone. - Codex MCP detection now reads the real Codex config (
~/.codex/config.toml[mcp_servers]) instead of files Codex never writes.
Fixed — hardening from the full v2.4.0 audit
/processclippings now enterraw/.manifest.json— previously they were silently skipped by/compileand erased by the next index rebuild./enrich-referencescan actually find candidates:ingest-zotero.shnow writeshas_fulltext(and accepts atypeparam instead of hardcodingpaper).- PageIndex setup no longer writes an empty
.envwhenANTHROPIC_API_KEYis unset — the old behavior made detection report PageIndex as configured while every tree build silently failed. - Shell-into-Python injection removed from
update-frontmatter.sh/index-append.sh/vault-status.sh— paths and slugs with apostrophes are now safe. - Manifest is validated before raw files are written (no more orphaned raw files after a corrupt manifest).
init.shcreates the documentedinbox/drop location;/initstops instead of overwritingpreferences.mdon re-run.build-tree.shprobes all required Python deps (PyPDF2,yaml) and matches PageIndex's output naming for non-lowercase.PDFfiles.detect-mcp-sources.shscans.mcp.json(fixes Sci-Hub never being detected), deduplicates, and tolerates malformed config files./cleanupbackfill verifies every recovered file is a real PDF; Zotero fulltext (text, not bytes) is no longer saved as a fake.pdf./ingestno longer double-builds (or impossibly pre-builds) PageIndex trees;/processconfirms before batch tree-building >3 PDFs;/querytier 4 preflightspdftotext.- Friendlier one-line errors replace Python tracebacks in
render-tree-outline.sh,rebuild-index.sh,update-state.sh, and the session hook. - Docs: retracted the stale "No PDFs are stored in the vault" claim (v2.4 deliberately preserves originals), real tree.json shape shown, repo-root LICENSE added,
VENDORED.mdupdate recipe excludes the user's.env.
Migration
Added the marketplace before the rename? One-time re-add:
/plugin marketplace remove claude-knowledge-vault
/plugin marketplace add psypeal/knowledge-vault
/plugin install knowledge-vault@knowledge-vault
Known limitations (vendored PageIndex, upstream)
No page cap / concurrency limit on very large PDFs; retry exhaustion can yield empty summaries; scanned image-only PDFs still spend tokens producing a junk tree. Tracked for a future vendored update.
🤖 Generated with Claude Code