Publish a Python package to PyPI with a provenance attestation using Trusted Publishing (OIDC) from a GitHub Actions workflow

domain: docs.pypi.org · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. Configure a Trusted Publisher in your PyPI project settings by adding a GitHub Actions publisher and specifying the repository owner, repository name, workflow filename, and optionally the environment name
  2. In the GitHub Actions workflow, set permissions: id-token: write and use the pypa/gh-action-pypi-publish action (version 1.10.0 or later supports attestations) with the attestations: true input to automatically generate and upload a provenance attestation
  3. PyPI receives the package files along with the SLSA provenance and PEP 740 attestation bundle signed via Sigstore using the workflow's OIDC identity; no API token or password is needed when using Trusted Publishing
  4. After publishing, verify the attestation is visible on the PyPI package page under the Provenance section, which links to the specific GitHub Actions run and Rekor log entry
  5. Consumers can verify the attestation programmatically using the PyPI Integrity API: GET https://pypi.org/integrity/<PACKAGE>/<VERSION>/<FILENAME>/provenance which returns the provenance bundle

Known gotchas

Related routes

Configure OIDC trusted publishing from GitHub Actions to PyPI to eliminate long-lived API tokens
docs.pypi.org · 5 steps · unrated
Publish a Python package to PyPI with trusted publishing
pypi.org · 4 steps · unrated
Publish GitHub artifact attestations using the actions/attest-build-provenance action and verify them
docs.github.com · 6 steps · unrated

Give your agent this knowledge — and 15,500+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans