After primust init, a startup hook records the governed session as it executes and emits a VPEC at the boundary without changing your agent code.
An AI agent is a sequence of tool calls made under probabilistic control. The runtime moves fast; the review question does not. With Primust in the path, the run has a neutral record: which tools ran, what input they saw, what was blocked, and whether the claimed policy pack was active.
After primust init, a standard Python startup hook auto-detects the agent runtime on import and puts Primust in the path before the governed session starts. It records the session while it runs, and a VPEC is emitted at the session boundary. Supported frameworks do not require agent-code changes or model-provider changes. Governed content does not need to leave your environment — only commitment hashes and execution metadata.
After init, Primust auto-activates on every Python process via a standard .pth file. No imports, no wrappers, no decorators required — your existing agent code emits VPECs at session boundaries.
Need explicit scope — a specific policy pack, a manual decision boundary, or a custom Pipeline? The lower-level primitives are still exposed: primust.Pipeline(), primust.adapters.autoinstrument(), and the @record_check decorator. Opt out of auto-activation with PRIMUST_AUTO_ACTIVATE=0.
Most ship inside the single primust package. autoinstrument() auto-detects whichever frameworks are imported in your process; custom checks and explicit pipelines cover proprietary agent code.
Agent adapters record what the agent did. Rule-engine adapters record the deterministic policy decisions around that action. Both land in the same VPEC, so a reviewer can see the tool call and the policy result together.
Adapters classify every observable action into a stage type, and every stage gets wrapped in the same governance envelope — policy gates, blocks, gaps, and per-check records. All bound to one VPEC per session, all verifiable offline.
Content bodies never transit Primust — only Poseidon2 / SHA-256 commitment hashes. 19 built-in check executors cover the common cases; @record_check extends to anything your team writes.
Servers, containers, GitHub Actions, batch jobs — anywhere primust init's device flow can't open a browser. Two clean paths, both land at the same ./.primust/config.toml the interactive flow produces.
Claude Enterprise managed-settings can pre-provision PRIMUST_API_KEY + PRIMUST_MANIFEST_ID so developer machines skip primust init entirely — IT owns the key, devs can't opt out.