Security
The design law everywhere in Vant is fail-closed: a missing key, a hostile input, or a dead dependency refuses loudly, it never half-writes state.
Report a vulnerability
Privately, via a GitHub private security advisory, which reaches the maintainer without broadcasting a working exploit.
Only use the public issue tracker for things that are not actually sensitive (config mistakes, docs gaps, hardening ideas).
Honest posture: this is a self-host open source project, there is no bug bounty or SLA. Reports get read and fixed in the open, with credit where wanted.
The security chain, in order
Every memory operation passes four gates before touching state, and refusals come back as typed codes, never silent.
- Sandbox capabilities: canRead/canWrite gates
- Input validation: the VAF wall (path traversal, prototype injection)
- QoS budgets: rate limiting and concurrency
- Escrow approval: sensitive operations need the hold released
Hardening reading
Storage layer
Write-ahead journaling, atomic writes, cross-process locks, and symlink-escape refusal on the file layer.
Sandbox →Secrets & tokens
Encrypted secret store, sudo override with audit, and the multi-guest auth posture for shared installs.
Best practices →Network surfaces
The relay and REST doors are gated by origin policy; air-gap propagation rules cover the offline story.
Airgap rules →