PyPI now supports digital attestations

Overview of PyPI Attestations Feature

  • New feature lets PyPI store and verify digital attestations tied to package uploads.
  • Implemented via PEP 740 and built on Trusted Publishing and OIDC.
  • Currently works automatically only for GitHub Actions + Trusted Publishing + official PyPI GitHub action; other providers planned (GitLab, etc.).
  • Manual attestation generation is documented but discouraged for most users due to complexity.

Security Goals and Benefits

  • Aim: better supply-chain security and provenance (“where did this artifact come from, which repo/commit?”).
  • Attestations are bound to a specific commit and recorded in a transparency log; provenance can be inspected.
  • Seen as an improvement over long‑lived API tokens and unused PGP signatures.
  • View from some security-minded commenters: raises the bar materially, even without reproducible builds.

Limitations and Open Questions

  • Does not address a compromised maintainer machine: stolen GitHub credentials or edited source can still produce “valid” attestations.
  • Attestations only cover part of the supply chain (build step), not full end‑to‑end security or identity trust.
  • Reproducible and bootstrappable builds are discussed as the stronger but much harder goal.
  • How future tooling (pip, uv, rye, hatch, etc.) will verify or surface attestations is still experimental/unclear.

Concerns About GitHub-Centric Design and Lock-In

  • Strong criticism that the UX and docs heavily push GitHub Actions, with other providers lagging.
  • Many worry this creates two classes of packages: attested (via a few large CI/IdPs) vs. others.
  • Fear that, even if optional now, ecosystem pressure and future installer behavior will make attestations de facto mandatory.
  • Self-hosted CI and smaller/open providers are effectively excluded unless PyPI explicitly onboards them; criteria prioritize large, “notable” IdPs.

GPG/PGP and Alternatives

  • PGP signatures on PyPI were removed earlier; defenders say they were largely unused and hard to verify correctly.
  • Critics argue PGP capabilities were degraded over time and that key-hosting could have helped.

Wider Governance and Trust Issues

  • Thread reflects broad distrust of Python packaging decisions, perceived corporate capture, and state funding tied to US-based platforms.
  • Some maintainers prefer avoiding PyPI entirely (local mirrors, distro packages, or self-hosted repos) and see this as further centralization.