The latest release is supported. Fixes are not backported.
Please report privately through GitHub Security Advisories. Do not open a public issue.
Include what an attacker could achieve, the steps to reproduce it, and the version you tested. You can expect an acknowledgement within a week.
vat runs on a developer machine and holds no service of its own, so the
interesting surface is narrow but real:
- Command execution.
vat execandvat changeset verifyrun commands fromvat.yaml. A repository that can modify a workspace manifest can run code on anyone who then runs those commands. Treatvat.yamlwith the same care as a CI configuration. - Path traversal. A manifest entry must stay inside the workspace. A
path:that escapes it is a bug — please report it. - Secret disclosure.
vatmust never print a credential value. Findings about the credential repository are limited to file existence, whether a file looks encrypted, and how long it has gone unchanged. Any output that reveals more is a bug. - Working-tree destruction.
vatmust never discard uncommitted work, unpushed commits, or stashes without an explicit flag and, for deletion, a prompt. A path that loses work silently is a security issue, not merely a bug.
- A workspace you do not trust. Cloning someone else's workspace and running
vat execis equivalent to running their shell script.vatdoes not sandbox it. - Content an agent reads.
vatdeclares a trust boundary and renders it into every generated contract, but it cannot enforce what a model does with text. The boundary is a control you configure, not a guaranteevatprovides.
- Keep
policy.gates.*atmanualunless a human reviews every automated action of that kind. - Declare
policy.trust.untrustedexplicitly.vat lintwarns when it is empty, because a harness that never names untrusted sources cannot tell an agent which text is data. - Run
vat doctor --secret-max-age 90on a schedule. Recovery procedures are usually documented; rotation almost never is, and a long-lived unrotated secret is the quiet half of a credential system.