Current state
SUPPLY-CHAIN-SECURITY.md ("Verifying a Release") is explicit about the gap: what is attested today is the npm package tarballs — npm publishes run with --provenance, and release tarballs get GitHub build-provenance attestations plus SBOMs. The Docker image and the PyPI launcher are built by the same tag-triggered workflow but carry no attestations of their own:
docker-publish pushes via docker/build-push-action with no provenance/SBOM output and no image-digest attestation.
pypi-publish uploads with twine + token (permissions: contents: read — no id-token), so no PyPI trusted publishing and no PEP 740 attestations.
Proposal
- Docker: attest the pushed image digest with
actions/attest-build-provenance (subject index.docker.io/debugmcp/mcp-debugger@sha256:...), and/or enable BuildKit provenance + SBOM generation on docker/build-push-action. Verification story: gh attestation verify oci://docker.io/debugmcp/mcp-debugger:<tag> --repo debugmcp/mcp-debugger.
- PyPI: migrate the launcher to PyPI trusted publishing via
pypa/gh-action-pypi-publish (which generates and uploads PEP 740 attestations automatically) and drop the token — mirroring the npm OIDC setup already in place.
- Update the "Verifying a Release" section of
SUPPLY-CHAIN-SECURITY.md with the new verification commands and remove the "do not yet carry their own attestations" caveat.
This closes the remaining gap in the release-signing story (OpenSSF Best Practices signed_releases) — every distributed artifact, not just the npm tarballs, becomes independently verifiable back to the tagged commit and workflow.
Current state
SUPPLY-CHAIN-SECURITY.md("Verifying a Release") is explicit about the gap: what is attested today is the npm package tarballs — npm publishes run with--provenance, and release tarballs get GitHub build-provenance attestations plus SBOMs. The Docker image and the PyPI launcher are built by the same tag-triggered workflow but carry no attestations of their own:docker-publishpushes viadocker/build-push-actionwith no provenance/SBOM output and no image-digest attestation.pypi-publishuploads with twine + token (permissions: contents: read— noid-token), so no PyPI trusted publishing and no PEP 740 attestations.Proposal
actions/attest-build-provenance(subjectindex.docker.io/debugmcp/mcp-debugger@sha256:...), and/or enable BuildKit provenance + SBOM generation ondocker/build-push-action. Verification story:gh attestation verify oci://docker.io/debugmcp/mcp-debugger:<tag> --repo debugmcp/mcp-debugger.pypa/gh-action-pypi-publish(which generates and uploads PEP 740 attestations automatically) and drop the token — mirroring the npm OIDC setup already in place.SUPPLY-CHAIN-SECURITY.mdwith the new verification commands and remove the "do not yet carry their own attestations" caveat.This closes the remaining gap in the release-signing story (OpenSSF Best Practices
signed_releases) — every distributed artifact, not just the npm tarballs, becomes independently verifiable back to the tagged commit and workflow.