Signed merges

Every merge is signed. The merge record is a signed statement about one merge, and it can be verified without Sigbound.

What the record contains

  • The commit move: the branch, and the commit main moved from and to.
  • The attempt, and the goal it answered, by number and title.
  • Who wrote it, and through which harness.
  • Who verified it: the gate, and its engine version.
  • The evidence: Sigbound AI's verdict and read, every done-means line and how it was proven, the checks.
  • Who decided, and when.
  • The signing key's fingerprint.
  • Optionally a bill of materials for the landed tree, in SPDX and CycloneDX, by digest.
The Merge tab of goal #7: attempt 7.1 merged into main, what landed, on what evidence, who decided, and the signature
The Merge tab decodes the signed merge record for attempt 7.1: what landed, on what evidence, who decided, and the key that signed it

Format

The signed merge record is a DSSE envelope over an in-toto statement, signed with an Ed25519 key held by the gate. The public key is published per repository, addressed by fingerprint. The Merge tab decodes the envelope; it does not verify it. Verification is performed by the reader.

Downloading a merge record

Open the goal and its Merge tab; once the attempt has landed, the tab shows the record and offers the envelope for download, named after the merge commit. The API serves the same envelope from the landing's entry in the ledger. ?format=slsa returns the same landing as SLSA provenance.

curl -H 'Sigbound-Version: 2026-08-14' -H 'Authorization: Bearer $SIGBOUND_TOKEN' \
  'https://api.sigbound.com/orgs/<space>/repos/<repo>/landings/62/receipt?at=2026-09-08T22:32:37.328249Z' \
  > sigbound-merge-53a1332.dsse.json
# the same landing as SLSA provenance: add &format=slsa
# the signing key by fingerprint: /orgs/<space>/repos/<repo>/landing-keys/SHA256:<fingerprint>

Verifying offline

The CLI fetches the signing key by fingerprint from the repository and checks the signature locally. With --key, it uses a pinned key document and makes no network request.

sigbound verify sigbound-merge-53a1332.dsse.json --repo <space>/<repo>
sigbound-merge-53a1332.dsse.json: signed by SHA256:j86E-8EcfYYa… · attempt 7.1 · main 2f7ad3e → 53a1332 at 2026-09-08T22:32:37Z · verified

# fully offline, against a pinned key document
sigbound verify sigbound-merge-53a1332.dsse.json --key landing-key.json

Any DSSE-aware tool can verify the same envelope. The payload type is application/vnd.in-toto+json, and the signature covers DSSE's pre-authentication encoding of the payload bytes.