v0.2.0
Security & audit release
🔒 Security
--httpis secure-by-default. Binds to127.0.0.1(not every interface) and refuses to start withoutMAILWARDEN_TOKEN(opt out viaMAILWARDEN_ALLOW_NO_TOKEN=1). Adds aHost-header allowlist (DNS-rebinding defense) on loopback and a 1 MB request-body cap.- Breaking: existing
--httpusers must setMAILWARDEN_TOKEN, or opt out explicitly. - New env vars:
MAILWARDEN_HOST,MAILWARDEN_ALLOW_NO_TOKEN,MAILWARDEN_ALLOWED_HOSTS.
- Breaking: existing
🐛 Fixed
- Dead/revoked refresh token (
invalid_grant, e.g. a Testing consent screen's 7-day expiry) now surfaces as "Runmailwarden --auth" instead of a cryptic OAuth error.
⚡ Changed
- One OAuth token refresh per process, not per tool call — the authenticated client is cached for the process lifetime.
bulk_modifyreportscappedwhen more messages match thanmaxMessages, so callers can raise the cap or re-run instead of silently missing mail.
Full notes in the CHANGELOG.
🤖 Generated with Claude Code