OpenSSF Scorecard — Pinned-Dependencies (currently 6/10). Our GitHub Actions are already SHA-pinned, but the Docker base images aren't pinned by digest, so a rebuilt upstream tag could silently change what we ship. Pinning them by @sha256:… closes that gap.
What to change
Pin all four FROM lines to the image digest, keeping the tag for readability (tag@sha256:…):
Example:
FROM node:20-bookworm-slim@sha256:<digest> AS build
Get the current digest
Pin to a fresh digest (don't trust a stale one):
docker buildx imagetools inspect node:20-bookworm-slim --format '{{.Manifest.Digest}}'
docker buildx imagetools inspect debian:bookworm-slim --format '{{.Manifest.Digest}}'
(Scorecard's last-seen values, as a reference: node sha256:2cf067cfed83d5ea958367df9f966191a942351a2df77d6f0193e162b5febfc0, debian sha256:96e378d7e6531ac9a15ad505478fcc2e69f371b10f5cdf87857c4b8188404716 — but re-fetch, these rotate.)
Done when
- All four
FROM lines use tag@sha256:…
- CI's docker job still builds green (the Smithery image), and the release docker job logic is unchanged
- Keep the human-readable tag in front of the digest (don't drop
node:20-bookworm-slim)
Bonus: mcp/build-bundle.sh calls npx -y @anthropic-ai/mcpb unpinned — pinning it to a version (@anthropic-ai/mcpb@<version>) tidies the last Scorecard warning, but the Docker pins are the main win.
Difficulty: easy. Great first PR — concrete, low-risk, CI-verified.
OpenSSF Scorecard — Pinned-Dependencies (currently 6/10). Our GitHub Actions are already SHA-pinned, but the Docker base images aren't pinned by digest, so a rebuilt upstream tag could silently change what we ship. Pinning them by
@sha256:…closes that gap.What to change
Pin all four
FROMlines to the image digest, keeping the tag for readability (tag@sha256:…):Dockerfilelines 14 & 26 —node:20-bookworm-slimdocker/imgcli.Dockerfilelines 6 & 14 —debian:bookworm-slimExample:
FROM node:20-bookworm-slim@sha256:<digest> AS buildGet the current digest
Pin to a fresh digest (don't trust a stale one):
(Scorecard's last-seen values, as a reference: node
sha256:2cf067cfed83d5ea958367df9f966191a942351a2df77d6f0193e162b5febfc0, debiansha256:96e378d7e6531ac9a15ad505478fcc2e69f371b10f5cdf87857c4b8188404716— but re-fetch, these rotate.)Done when
FROMlines usetag@sha256:…node:20-bookworm-slim)Bonus:
mcp/build-bundle.shcallsnpx -y @anthropic-ai/mcpbunpinned — pinning it to a version (@anthropic-ai/mcpb@<version>) tidies the last Scorecard warning, but the Docker pins are the main win.Difficulty: easy. Great first PR — concrete, low-risk, CI-verified.