Identity and keys
Evidence, policies, activation, pushes, decisions, and delivery observations are different acts with different authority.
On this page
Mermaid source
flowchart TB
E[Evidence producer] -->|evidence signature| ES[Signed evidence]
A[Policy artifact signer] -->|policy signature| PS[Signed policy]
H[Activation actor] -->|repository assignment| RA[Exact assignment]
P[Push signer] -->|Git push certificate| GP[Proposed update]
V[Platform verifier] -->|VSA signature| VS[Policy decision]
D[Delivery observer] -->|delivery record| DR[GitHub result]Role contract
| Role | What its proof establishes | What it never establishes |
|---|---|---|
| Evidence producer | Who signed an exact attestation predicate and its subjects. | Policy authorship or activation. |
| Observed agent context | Process, tool, model, and sandbox details visible to the attestor. | Authenticated agent identity or policy satisfaction. |
| Policy artifact signer | Authorship of the exact signed policy bytes. | Assignment to a repository. |
| Activation actor | Approval of an exact repository policy assignment. | Authorship of the policy artifact. |
| Push signer | The identity that sent the proposed ref update. | Authorship of every commit in the pack. |
| Platform verifier | A bounded policy decision over exact evidence and push context. | That GitHub applied the refs. |
| Delivery observer | The validated terminal response Pushgate received from GitHub. | Direct observation of GitHub’s internal state. |
Keyless evidence signing
An approved OIDC identity is exchanged for a short-lived Fulcio certificate. CI/lock signs the DSSE envelope with the corresponding ephemeral key and obtains an RFC 3161 timestamp. Verifiers can therefore check the identity and exact bytes at signing time after the short-lived certificate expires, without distributing a long-lived evidence-signing key to the agent.
For deployment guidance, including native macOS boundaries and a Linux container, see Sandbox coding agents.
Purpose-separated service credentials
Pushgate’s platform calls use separate audiences and exact scopes. The policy evaluator accepts policy:evaluate for the policy audience; GitHub delivery-token minting accepts push-token:mint for the Pushgate audience. Repository and immutable repository ID bindings travel with the service identity. Neither grant is a general platform session. This is the role-aligned least-privilege model described by the CNCF supply-chain guidance.
Git commit signing, Git push signing, attestation signing, policy signing, policy activation, and platform service federation are separate ceremonies. Never mount or expose a human or service signing capability inside an agent sandbox merely because the agent needs to run tests.