Summary
gh attestation verify fails to validate the release attestation bundle
for the Windows x86_64 build of v5.45.8, using both --repo railwayapp/cli
and the looser --owner railwayapp policy. Verifying online (without
--bundle, letting gh query GitHub's attestation API directly) also fails
with a 404 — no attestation found for the artifact's digest.
Environment
gh version: gh version 2.92.0 (2026-04-28)
- OS: Windows 11, PowerShell
- Architecture: x86_64/AMD64
Artifact
- File: railway-v5.45.8-x86_64-pc-windows-msvc.zip
- Attestation bundle: railwayapp-cli-attestation-43872608.sigstore.json
(downloaded from the same release page)
- Digest: sha256:3983807554909567d4c24a39ab470119b55ed972161ecd245dfdaeab210ca053
- Attestation predicate type (read from the bundle directly):
https://in-toto.io/attestation/release/v0.2
Steps to reproduce
-
Online verification (no local bundle):
gh attestation verify railway-v5.45.8-x86_64-pc-windows-msvc.zip --repo railwayapp/cli
Result: HTTP 404 Not Found — no attestations found via the GitHub API
for this digest.
-
Offline verification against the bundle shipped on the release page,
scoped to the exact repo:
gh attestation verify railway-v5.45.8-x86_64-pc-windows-msvc.zip --bundle railwayapp-cli-attestation-43872608.sigstore.json --repo railwayapp/cli --predicate-type "https://in-toto.io/attestation/release/v0.2"
Result:
Attempting verification against issuer "GitHub, Inc."
Failed to verify against issuer "GitHub, Inc."
✗ Sigstore verification failed
Error: verifying with issuer "GitHub, Inc."
-
Same command, loosened to organization-level matching only:
gh attestation verify railway-v5.45.8-x86_64-pc-windows-msvc.zip --bundle railwayapp-cli-attestation-43872608.sigstore.json --owner railwayapp --predicate-type "https://in-toto.io/attestation/release/v0.2"
Same failure — fails even against the broad
^https://github.com/railwayapp/ SAN regex, not just the
repo-specific one.
Expected behavior
Either the online API should have a record of this artifact's attestation,
or the offline bundle shipped alongside the release should verify
successfully against the railwayapp org/repo identity.
Question
Is the release signing pipeline (GoReleaser-based, given the predicate
type) issuing certificates through a Fulcio instance that isn't one of
the two gh attestation verify checks against (sigstore.dev public-good
and GitHub's own)? If so, is there a documented way to verify these
release artifacts that actually works — e.g. a specific --cert-oidc-issuer
value, or is cosign verify-blob with different flags the intended path
for these bundles?
I want to confirm this release is legitimate before running it, and
would appreciate guidance on the correct verification method for your
release artifacts specifically.
Summary
gh attestation verifyfails to validate the release attestation bundlefor the Windows x86_64 build of v5.45.8, using both
--repo railwayapp/cliand the looser
--owner railwayapppolicy. Verifying online (without--bundle, letting gh query GitHub's attestation API directly) also failswith a 404 — no attestation found for the artifact's digest.
Environment
ghversion: gh version 2.92.0 (2026-04-28)Artifact
(downloaded from the same release page)
https://in-toto.io/attestation/release/v0.2
Steps to reproduce
Online verification (no local bundle):
gh attestation verify railway-v5.45.8-x86_64-pc-windows-msvc.zip --repo railwayapp/cli
Result: HTTP 404 Not Found — no attestations found via the GitHub API
for this digest.
Offline verification against the bundle shipped on the release page,
scoped to the exact repo:
gh attestation verify railway-v5.45.8-x86_64-pc-windows-msvc.zip --bundle railwayapp-cli-attestation-43872608.sigstore.json --repo railwayapp/cli --predicate-type "https://in-toto.io/attestation/release/v0.2"
Result:
Attempting verification against issuer "GitHub, Inc."
Failed to verify against issuer "GitHub, Inc."
✗ Sigstore verification failed
Error: verifying with issuer "GitHub, Inc."
Same command, loosened to organization-level matching only:
gh attestation verify railway-v5.45.8-x86_64-pc-windows-msvc.zip --bundle railwayapp-cli-attestation-43872608.sigstore.json --owner railwayapp --predicate-type "https://in-toto.io/attestation/release/v0.2"
Same failure — fails even against the broad
^https://github.com/railwayapp/SAN regex, not just therepo-specific one.
Expected behavior
Either the online API should have a record of this artifact's attestation,
or the offline bundle shipped alongside the release should verify
successfully against the railwayapp org/repo identity.
Question
Is the release signing pipeline (GoReleaser-based, given the predicate
type) issuing certificates through a Fulcio instance that isn't one of
the two
gh attestation verifychecks against (sigstore.dev public-goodand GitHub's own)? If so, is there a documented way to verify these
release artifacts that actually works — e.g. a specific
--cert-oidc-issuervalue, or is
cosign verify-blobwith different flags the intended pathfor these bundles?
I want to confirm this release is legitimate before running it, and
would appreciate guidance on the correct verification method for your
release artifacts specifically.