For your reviewers
Trust, access, and disclosure. One document.
Everything AppSec, legal, procurement, and AI governance need to clear Proof in one pass: access, data handling, model providers, deployment, continuity, disclosure, and agent permissions. It is maintained as one document on purpose, so your reviewers all work from the same source.
At a glance
last reviewed
30 August 2026
access
read-only and component-scoped
training
customer code is never used for training
providers
model providers allowlisted at scoping; analytics named separately
portal
optional; deployable fully on your own infrastructure
customer assets
corpus and gate stay in your repository
exit
working data deleted within 30 days
soc 2
not currently held
agents
read through MCP; propose and verify in your repository under explicit permissions
Each line under the date summarizes a section below, where it is stated in full. On SOC 2 there is nothing further to qualify: we hold no report. Section 10 says what we do in its place.
02 / Access
Which access model applies.
How much access we need depends on the code. There are two models; you pick one at scoping.
Public / open-source
No access at all. We work from the public repository, and the evidence corpus is public alongside it.
Private code
We countersign your NDA first. Then read-only access, scoped to the component under audit and nothing wider.
Whichever model applies, the scope is the same: indexing covers the repository and its history, and, only with your approval, read access to the systems where intent lives, typically the issue tracker and the support queue. The audit reads; it does not write.
Access is minimal by construction: source code is all the audit needs. We do not ask for secrets, credentials, or production access; the rare exception is whatever the component itself requires to run, a license key for a build, named at scoping. Engagement data is encrypted in transit and at rest, and access to it is limited to the people named on the engagement.
03 / Data path
Where your code goes.
Two places: our systems, while the engagement runs; and your repository, which is where everything we hand back lives.
The engagement itself runs on our systems; what we hand back, the evidence corpus (requirements, findings, and tests, in plain YAML and code) and the audit gate that re-runs them, runs in your CI without us.
The portal is optional. Hosted, it runs on our infrastructure; a self-hosted installation runs entirely on yours, with no analytics of ours in it; and engagements that skip it get the same views as generated static reports. Nothing in the engagement is gated on it. A full on-premise deployment is available, and the question it turns on is which model provider you point it at — that is your choice to make, and we scope it with you.
04 / Providers
Which providers may see it.
Three named subprocessors touch engagement code, and you allowlist them at scoping. Analytics is a separate category, and it never receives source-code contents.
Two categories
model / code processors
three allowlisted providers: Anthropic, OpenAI, and xAI
site and portal telemetry
PostHog, EU cloud; Google Analytics G-ELLL5G7YW0 on this public site; no source-code contents; none in a self-hosted install
Three subprocessors handle engagement code and model work: Anthropic, OpenAI, and xAI. Client code reaches them only through their commercial APIs, under terms that exclude training on customer data, and each maintains a SOC 2 program with attestations available through its trust portal — the three names above link to those portals. If your policy excludes a given provider, say so at scoping: the engagement runs only on the providers you allow. And we will walk your AppSec team through each provider’s current retention posture at scoping, in writing. There are no other subprocessors in engagement work on your code: no offshore review, no data brokers.
Separately, on analytics: this public website runs PostHog (EU cloud) and Google Analytics (measurement ID G-ELLL5G7YW0) for page use. The hosted cloud portal runs PostHog. For you as a visitor that means we can see which pages get opened, and nothing about your code. In the portal, client data is redacted from what it collects. If this list ever changes, this page changes first, and standing clients hear it from us before they read it here.
AI use
Two kinds of machine involvement: deterministic checks, which pass or fail; and AI drafting assistance, whose output must survive those checks. Machines check everything, every time; a person validates every finding before it reaches you. Which systems see your code is governed by the access model in section 02 and the subprocessor list above. The fuller disclosure lives on the methodology page.
05 / Retention
What we retain—and delete.
Four commitments. They apply to both access models and to the hosted portal.
Commitments
on training
your code is never used to train anything, ours or anyone else’s.
on retention
engagement working data exists only for the engagement.
on exit
when an engagement ends, anything we hold is deleted within 30 days of exit, with written confirmation.
on incidents
if we become aware of an incident affecting the confidentiality or integrity of your code or engagement data, we notify your designated contact by email within 72 hours of becoming aware, with what we know, what it touches, and what we are doing about it, followed by updates until it is resolved. This applies to both access models and to the hosted portal, and it is written into the data-processing agreement as a contractual term.
The training commitment cuts one way only: the public, open-source corpora we author and publish are our own work and may inform our own tooling. Client corpora never are.
06 / Ownership
What belongs to you.
The boundary: the evidence corpus is yours, in your repo; the engine that produced it is ours.
ip boundary · the corpuswarning
One warning: a mature corpus describes your component completely enough that its requirements alone could guide a rebuild. It is more sensitive than the code it describes. It therefore lives only in your repo, under your access controls, is never used as our marketing, and we retain none of it after exit. The public corpora in our ledger are open-source projects, where the code was already public; client corpora never appear there.
Proof does not publish private customer corpora, even for marketing, because the requirement graph can describe the product almost as completely as the source itself. We hold our own corpus to the same rule — the engine’s full requirements tree describes the engine, so it stays private too.
NDA
Yours is fine. We countersign your NDA, same day, and read no private code before it is in force. A signed data-processing agreement is available at scoping.
Entity
Proof is operated by Replay Technologies LTD, registered in Armenia at 36 Manushyan, Yerevan 0012. Engagement contracts name this entity. And your paper is fine here too: we typically contract on your template, under your governing law, so your counsel reviews terms they already know.
07 / Agents
What agents may read, propose, and approve.
Coding agents reach the same graph your reviewers do, over MCP. Three things bound what an agent can do with it: the token, the approval policy you set, and the fact that the record lives in your repository.
Token scope, and the one public door
Your repository’s graph is reached with a personal access token. The token is displayed once and stored only as a hash, you give it an expiry when you create it, and you revoke it yourself. It acts as the person who created it and resolves to exactly the projects that person can already open: one tenant, nothing wider. A project you may not see and a project that does not exist return the same answer, so the endpoint cannot be used to find out what exists.
There is one anonymous door, and it opens on our public jsonparser demo project: a seeded open-source showcase, published so a team can point an agent at a real graph before anything is installed. It reads a public open-source project, and it is not a route into customer work. The anonymous door opens only for projects marked public, private ones still demand a token, and every request to it is rate-limited by source address.
Read, propose, approve
Over the endpoint the tools are read tools: requirements and their obligations, findings and known issues, the graph around a node, blast radius, tests, reproducers, change records, and the audited source those reference. File reads and code search are confined to the files the audit already references, and the absolute paths of our own checkout are stripped from every answer before it leaves the tenant boundary.
One write exists, and it is narrow: an agent can post a comment or open a discussion on a finding. It stays off unless you mint a token that carries the write scope explicitly, it posts as the account that owns the token, and it cannot change a finding’s state. The anonymous door does not carry it at all.
Proposing a requirement, attaching evidence, and approving all happen in your repository, through your own workflow and your own permissions. MCP gives the agent the model. The agent acts through your repository, CI, and permissions.
Where the human line sits
Every requirement carries an assurance level, and you set it per component and per requirement. Proof ships open: out of the box an agent may approve at any level, and the record names the agent and the level it ran under. The human line is opt-out, and it is one key in your proof.yaml, under project.approval: agent_autonomous_for. Set all: false and list only the levels you delegate under assurance_levels; an empty list reserves every level for a named person. At a level you have reserved, proof approve refuses the write outright and names the setting that refused it. The full policy is on the methodology page.
Approved intent is not quietly rewritable. Every lifecycle change is written to the requirement’s own change history with the actor that made it, a person or an agent, in the YAML you keep; review entries record the same way. An agent’s edit reads as an agent’s edit, in your repository, without us.
Verification, logging, and your model provider
The endpoint cannot start a verification run. It answers from the stored audit and your git objects, and it runs neither the audit nor the gate. Verification runs where the gate runs: your CI, or a person on the engagement. An agent working inside your repository can rerun the obligations a change put in doubt, because that runs on your side of the boundary and under your permissions.
Each call is recorded as a usage event: which tool ran, on which project, whether it succeeded, how long it took, and which token and account made it. No part of the answer is recorded, and no argument beyond the project name. Those events go to the same analytics named in section 04.
The endpoint returns context to whichever client you point at it, and it calls no model of its own. If your agent is Claude Code, the retrieved context reaches Anthropic under your own agreement with Anthropic; the same holds for any other client and provider. The subprocessor list in section 04 covers our engagement work, and it does not cover your agent’s traffic.
08 / Continuity
What keeps working if Proof disappears.
Machines check everything, every time. One person validates each finding before it reaches you. People sign the bar and the promises that require a person’s judgment, and decide which misses from public work get published. The published postmortem carries no personal signature, and we say so where we publish it.
Findings derive their authority from runnable reproducers. A named principal can only stand behind so much work, so the assurance practice takes a limited number of engagements each quarter. Proof is young; the deliverable is designed so that limited concurrent capacity does not put what you rely on at risk.
The entire corpus lives in your repo as plain YAML and executable tests. The audit gate runs without us, in your CI, on every release. Nothing you depend on day to day is hosted by us or gated on our availability. The gate runs offline if your environment demands it: release artifacts are checksummed and can be mirrored into internal distribution, and tagged releases are immutable.
And if you stop: you keep everything that runs. The gate keeps checking yesterday’s promises; nobody keeps writing tomorrow’s.
Cancellation ends the ongoing expertise; the asset stays.
09 / Disclosure
How findings are disclosed.
Everything we find in your engagement belongs to you and stays private. We name a client publicly only with written approval.
Security-relevant findings follow coordinated disclosure, case by case, worked out with the affected maintainers or vendor.
The public register shows the policy in practice: where we have not asked for approval, entries appear anonymized, and say so on their face — one live entry reads that the client is not named because we had not asked permission when it shipped, and that it will be updated if permission is granted.
10 / Certification
What we do not certify.
Three things this engagement is not, said before you ask.
SOC 2
We do not currently hold a SOC 2 report, and we do not present ourselves as a SOC 2–certified vendor.
For private engagements, your code is handled under NDA as described in sections 02 and 04 (access models and providers). The evidence corpus and audit gate we deliver live in your repository and run in your CI; the hosted portal is optional and not required for the engagement to work.
We complete security questionnaires as part of scoping. If your procurement process requires a current SOC 2 report before work can start, we will tell you plainly on the first call that we cannot clear that bar yet, rather than stretch what we have.
Penetration testing
When you need a certified penetration test, for SOC 2, PCI, or a customer security review, engage an accredited security firm; our audit does not substitute for that report, and we say so at scoping. The same holds for black-box red-teaming, infrastructure testing, and social engineering. Security promises inside the audited component’s scope are ours to prove; those artifacts are theirs.
The bar itself
The six clauses we hold the work to are published, and nobody accredits them. They are a bar we set and can be held to, and they are not a certification scheme. The methodology page states each clause with the machine check that fails when it is broken.
11 / Form data
What the demo form collects, and why.
The form is deliberately short. One field is required. A note is optional. Anything more we need, we ask in the first reply.
Work email, required: so we can reply. Anything we should know is optional and on the first screen. Everything else on the demo form is optional and only shapes the first reply — your name, your company, the component you would start with, the timing, and whether your code is public or private. You can leave all of it blank.
Every request gets a reply. Scoping is confidential, and private early access is deliberately small: we take on a limited number of engagements at a time.
The fields are submitted to us over the site form and go nowhere else. Site analytics (PostHog, EU cloud) counts page usage; its session replay masks every form field, so what you type here is never in the recording. The mask is set in this page’s own analytics configuration, and you can read it in the page source.
12 / Next
That is the whole page.
If your review clears, the engagement itself is described in one place: the Continuous Correctness Audit.