Security and privacy
QuotaDeck is local-first and sends no telemetry.
Guarantees
- HTTP binds only to
127.0.0.1,::1, orlocalhost. - Provider secrets are excluded from domain objects, SQLite, API responses, logs, fixtures, and diagnostics.
- Claude credentials remain managed by
cswap; plan selection invokes only its publicswitchcommand. Codex credentials remain managed by Codex CLI. - Z.ai bearer credentials are attached only to validated HTTPS quota URLs.
- Plan-control mutations are loopback-only, require an explicit anti-CSRF header, and never return stored keys.
- Z.ai UI setup writes only the private QuotaDeck environment file and the documented Claude Code environment keys in
~/.claude/settings.json; unrelated settings are preserved. - Persisted errors pass through redaction before storage.
- Browser responses include a restrictive Content Security Policy and frame denial.
Local threat model
QuotaDeck does not attempt to isolate data from another process already running as your operating-system user. Protect your account by keeping XDG configuration and data directories private, and never expose the loopback port through a reverse proxy.
Report a vulnerability
Do not open a public issue for a suspected vulnerability. Use GitHub's private security advisory form with reproduction steps, impact, and the affected version.
See the repository security policy for supported versions and response expectations.