StackAttestTechnical Trust

Security

A trust product has to be trustworthy first.

StackAttest exists to help you prove your software is sound, so the way we handle your source and your evidence has to hold up to the same scrutiny. Here is how it works.

Validation starts read only

The Validator connection reads your repository and never writes to it. StackAttest does not publish or sell source. A Passport reader sees the result and approved evidence sections, never the repository behind them.

AI egress is explicit and policy gated

The 6-model council judges structured evidence. Runtime diagnosis and runnability inference may use small, bounded source excerpts that are scrubbed for recognized secret patterns. Every outbound model call is checked against provider and workspace policy and recorded in the egress ledger.

Runtime tests are isolated

L3 builds and runs the app on a separate execution plane with throwaway services, bounded resources, and no production credentials. The workspace is torn down after the probe.

You control every share

A Passport is shared section by section, with the sections you choose. Access can carry an expiry, and you can revoke it at any moment. Nothing is public until you say so.

Tenant isolation is enforced in the database

Every customer's data is separated with row-level security in Postgres, not just in application code. A request can only ever see the workspace it belongs to.

Fixes are never silent

When StackAttest proposes a fix, it opens a reviewable pull request. Nothing is merged, and nothing touches your production systems, without your explicit approval.

Signed, checkable attestations

A public Passport can carry a signed attestation. Anyone can verify the signature against our published key, without an account and without seeing any evidence.

Have a security question or want to report an issue? Write to us at [email protected] and a person will respond.

See what a validation actually finds.

Connect a product and read the evidence for yourself. Your first look is free.