Pushgate.devDocs Open Pushgate.dev

Trust architecture

No single signature proves the whole delivery. Pushgate composes narrow proofs across explicit trust boundaries.

On this page
Trust boundaries across the Pushgate architecture A coding agent invokes CI/lock. At the recommended constrained level, a tool broker resolves a pinned CI/lock executable into a fresh child-tool sandbox with a narrow platform grant. The agent cannot read the signing authority. The platform signs and stores evidence, evaluates policy, and returns a decision that Pushgate verifies before GitHub delivery. RESTRICTED SANDBOX SESSION PARENTCoding agent COMMAND BOUNDARY SUPERVISORTool broker PINNED CHILD TOOLCI/lock + attestors invoke TENANT PLATFORM EPHEMERAL PKIFulcio + RFC 3161 STORE + EVALUATEEvidence + policy scoped identity EDGEPushgate.dev VSA SCMGit UNAVAILABLE TO AGENT signing authority · privileged sockets exact repository · commit · predicate · policy · nonce bindings
The agent sandbox, signer custody boundary, tenant platform, edge verifier, and source-control provider are separate trust zones. The key or identity session never enters the agent sandbox.
Mermaid source
flowchart LR
    subgraph Sandbox[Restricted agent sandbox]
      A[Coding agent]
    end
    subgraph Policy[Command policy boundary]
      B[Tool broker]
      C[Pinned CI/lock child]
    end
    subgraph Platform
      F[Fulcio + TSA]
      S[Tenant evidence store]
      V[Policy evaluator]
    end
    subgraph Edge
      P[Pushgate verifier]
    end
    A -->|invokes cilock run| B -->|exact executable| C
    C -->|short-lived scoped identity| F --> S --> V --> P --> G[GitHub]

One proof establishes one act

A signature proves who signed exact bytes. It does not automatically prove why those bytes were created, that a policy was activated, or that GitHub applied a ref update. Pushgate keeps those acts separate and joins them only through explicit identifiers.

  • The coding agent is the session parent and invokes the reviewed CI/lock binary.
  • ALPS 2 requires a command broker outside the agent to resolve that exact binary into a fresh child-tool sandbox, so the agent cannot grant itself signing authority. That is the level's requirement, not an automatic property of running CI/lock.
  • CI/lock records the result as an in-toto Statement inside a signed DSSE envelope.
  • The TestifySec platform authenticates the tenant, stores evidence by exact content identifier, and evaluates the selected policy.
  • Pushgate runs on Cloudflare’s edge and verifies the platform decision against the repository, commit, policy, and push nonce before using it.
  • GitHub’s terminal response is a delivery result. It is distinct from the policy decision that authorized delivery.

Measure the boundary

Give the coding agent only its repository, a synthetic home, the required toolchain, and an allowlisted environment. Do not mount or inherit the TestifySec session, a human key, SSH_AUTH_SOCK, signer caches, infrastructure credentials, Keychain access, Docker sockets, or a generic signer socket.

A producer never proves its own isolation level. CI/lock emits bounded observational evidence for ALPS 0.1; consumers can verify its signature, trusted time, repository and commit bindings, and stated observer coverage. Those observations remain non-authoritative context and do not authenticate the observed agent, assign an ALPS level, or satisfy policy. Any assessed identity must instead bind to an independently authenticated stable principal. Missing observer coverage remains unknown.

Configure and test this boundary.

The agent sandbox guide provides full-width, copy-paste configurations for native macOS and a Linux container, plus the denial checks to run before onboarding a repository.

Assurance vocabulary

UI labels and API consumers use these words narrowly:

LabelMeaning
VerifiedCryptography and authoritative bindings were independently checked.
ObservedA named component recorded something it could see; that observation is not an authenticated identity claim.
DeclaredA human or agent supplied context or intent that was not independently proved.
EnforcedA signed decision was evaluated against the exact repository, commit, and policy authority.
ApprovedAn authenticated account accepted an exact activation or override event.

Trust roots and time

The TestifySec platform publishes its Fulcio certificate chain and RFC 3161 timestamp-authority chain through its discovery document. CI/lock and Pushgate validate chains to those anchors. A matching certificate name is not enough: the key, issuer, identity constraints, signed bytes, and timestamp all have to verify.

http
GET https://platform.testifysec.com/.well-known/judge-configuration

Edge-to-platform identity

For a connected repository, Pushgate uses short-lived service assertions scoped to the repository and one platform audience. Policy evaluation and GitHub delivery are different grants. A credential issued for one audience or scope is rejected at the other.

Standards alignment

Pushgate applies established software-supply-chain principles to the Git push boundary. This mapping explains design intent; it is not a certification claim.

SourcePrinciplePushgate mapping
CNCF Secure Software FactoryGenerate signed metadata and automated attestations, store them as a source of truth, and use policy at downstream admission points.CI/lock witnesses the work; Archivista stores the signed envelope; the platform evaluates policy; Pushgate verifies at consumption.
CNCF Software Supply Chain Security Paper v2Compartmentalize trust, grant least privilege by role, and verify both attestation signatures and contents against policy.Roles and service audiences are purpose-separated; Pushgate checks identity, content, subject, and policy bindings.
NIST SP 800-204DGenerate standard evidence during CI/CD, authenticate provenance, protect attestation storage, and use the evidence in policy decisions.CI/lock emits in-toto/DSSE evidence; the tenant store and VSA join that evidence to one exact policy decision.
in-toto Attestation Framework v1.2Separate typed claim metadata, subject binding, and authenticated transport into composable layers for automated consumers.CI/lock preserves the Predicate → Statement → Envelope layering; Pushgate adds its admission semantics as typed policy and decision data.