Skip to content

chore(protect-mcp): pin protect-mcp@0.5.5 and @veritasacta/verify@0.3.0#497

Merged
wshobson merged 1 commit intowshobson:mainfrom
tomjwxf:chore/pin-protect-mcp-versions
Apr 18, 2026
Merged

chore(protect-mcp): pin protect-mcp@0.5.5 and @veritasacta/verify@0.3.0#497
wshobson merged 1 commit intowshobson:mainfrom
tomjwxf:chore/pin-protect-mcp-versions

Conversation

@tomjwxf
Copy link
Copy Markdown
Contributor

@tomjwxf tomjwxf commented Apr 18, 2026

Follow-up to the pinning suggestion @wshobson raised on #494. Replaces every npx protect-mcp@latest in executed paths with npx protect-mcp@0.5.5, and every npx @veritasacta/verify in the test runner with npx @veritasacta/verify@0.3.0. The tamper-detection test can no longer be silently flipped by an upstream npm publish.

What this changes

File Pins applied
plugins/protect-mcp/hooks/hooks.json 2 × protect-mcp@latestprotect-mcp@0.5.5 (PreToolUse + PostToolUse)
plugins/protect-mcp/test/run-tests.sh 6 × protect-mcp@latestprotect-mcp@0.5.5, 3 × @veritasacta/verify@veritasacta/verify@0.3.0

Header comment at the top of run-tests.sh updated to mention the pinned @veritasacta/verify version so the dependency is visible without reading the full script.

What this deliberately does NOT change

How bumps work

When protect-mcp ships a new version with a breaking change, the bump is a two-file sed:

perl -i -pe 's/protect-mcp\@0\.5\.5/protect-mcp\@0.6.0/g' \
  plugins/protect-mcp/hooks/hooks.json \
  plugins/protect-mcp/test/run-tests.sh
./plugins/protect-mcp/test/run-tests.sh   # confirm tamper test still passes

Deliberate bumps from here on, not automatic.

Verification

  • python3 -m json.tool hooks.json passes
  • bash -n run-tests.sh passes syntax check
  • No other files touched; clean 2-file diff
  • npm view protect-mcp version confirmed 0.5.5 is current stable
  • npm view @veritasacta/verify version confirmed 0.3.0 is current stable

Why this closes the loop from #494

On #494 you said: "run-tests.sh uses npx protect-mcp@latest, so an upstream release could silently turn the tamper-detection guard green or red without any repo change. Pinning to a specific protect-mcp@x.y.z (and bumping deliberately) would make the guard fully reproducible. Not blocking — happy to land as-is."

This is exactly that pin. The tamper-detection guard is now reproducible at protect-mcp@0.5.5 + @veritasacta/verify@0.3.0, and future changes to those packages require a deliberate bump here.

Out of scope (follow-ups after this and #495/#496)

  • Pin the same versions in review-agent-governance and signed-audit-trails once they land.
  • Add a note to the README pointing at this commit as the "how to update pinned versions" reference.

Thanks for the suggestion; small but real tightening of the test contract.

Closes the version-pinning suggestion from @wshobson on wshobson#494. The
tamper-detection test in plugins/protect-mcp/test/run-tests.sh
previously called `npx protect-mcp@latest` and `npx @veritasacta/verify`
with no version constraint, meaning an upstream npm publish could
flip the test green or red without any repo-side signal. Pinning
eliminates that.

Changes
───────
- plugins/protect-mcp/hooks/hooks.json: 2 x
    protect-mcp@latest -> protect-mcp@0.5.5
  (PreToolUse evaluate + PostToolUse sign)

- plugins/protect-mcp/test/run-tests.sh:
    6 x protect-mcp@latest -> protect-mcp@0.5.5
    3 x @veritasacta/verify    -> @veritasacta/verify@0.3.0
  (the four PreToolUse test invocations, keygen, sign, plus the two
  verify calls in tests 7 and 8)

- Header comment at the top of run-tests.sh now mentions the pinned
  @veritasacta/verify version for clarity.

What is NOT pinned
──────────────────
README.md and SKILL.md references remain as `npx protect-mcp@latest`
and `npx @veritasacta/verify`. Those are documentation of the pattern
a user should use in their own project, and "latest" is the right
advice for that audience. The test infrastructure is the only
executed path where pinning matters for reproducibility.

How to bump
───────────
When you want to update (e.g., protect-mcp publishes 0.6.0 with a
breaking change to --input handling), update both files together:

  perl -i -pe 's/protect-mcp\@0\.5\.5/protect-mcp\@0.6.0/g' \
    plugins/protect-mcp/hooks/hooks.json \
    plugins/protect-mcp/test/run-tests.sh

Then re-run ./plugins/protect-mcp/test/run-tests.sh to confirm the
tamper-detection guard still passes before merging.

This PR does NOT touch review-agent-governance or signed-audit-trails
because those plugins are still in review (wshobson#495, wshobson#496). Once they
land, a follow-up PR will pin them too.

Tests
─────
- python3 -m json.tool hooks.json passes
- bash -n run-tests.sh passes
- No other files touched; no marketplace.json changes (avoids conflict
  with wshobson#495 and wshobson#496)
@wshobson wshobson merged commit 32e1a74 into wshobson:main Apr 18, 2026
2 checks passed
tomjwxf pushed a commit to tomjwxf/wshobson-agents that referenced this pull request Apr 19, 2026
Resolves wshobson's blocker: npx protect-mcp@latest reintroduces the
reproducibility gap closed by wshobson#497 for the protect-mcp plugin. Pins
both PreToolUse and PostToolUse hook invocations to 0.5.5.
tomjwxf pushed a commit to tomjwxf/wshobson-agents that referenced this pull request Apr 20, 2026
Resolves wshobson's blocker: npx protect-mcp@latest reintroduces the
reproducibility gap closed by wshobson#497 for the protect-mcp plugin. Pins
both PreToolUse and PostToolUse hook invocations to 0.5.5.
tomjwxf pushed a commit to tomjwxf/wshobson-agents that referenced this pull request Apr 26, 2026
Resolves wshobson's blocker: npx protect-mcp@latest reintroduces the
reproducibility gap closed by wshobson#497 for the protect-mcp plugin. Pins
both PreToolUse and PostToolUse hook invocations to 0.5.5.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants