Claude Code and Cursor can edit files, run commands, and open PRs. With Primust in the path before the session, each run emits a portable credential so branch protection and human review can evaluate the recorded session.
A PR shows the end state. Review still needs the session context: which files changed, which commands ran, which checks reviewed the exact diff, which policy gates fired, and which actions were blocked.
Primust emits a VPEC as each coding-agent session closes. The PR carries that credential, and branch protection can require proof floor, provable surface, and specific gap codes before merge.
primust-hook is a per-invocation Go binary. It runs for the duration of a single agent action, writes its VPEC, and exits. No daemon. No background process. Nothing persistent to audit, rotate, or fail-closed.
Enterprise deploys via managed-settings (macOS/Linux paths in ClaudeCode/managed-settings.json) so IT owns the key + policy-pack selection; developer machines can't opt out.
Content bodies never transit Primust — only commitment hashes. An auditor verifying the VPEC can prove the tool call happened without ever seeing what the tool returned.
A GitHub Action runs primust verify against the VPEC the agent wrote. Fail the build on unacceptable proof floor, low surface, or specific gap codes.
Emitted when the session closes. Verifiable offline by anyone with the Apache-2.0 primust-verify CLI.