Security
email-connector is designed around a principle: minimize what we store, encrypt what we must, and make everything auditable.Authentication
email-connector uses OAuth 2.0 with PKCE (S256) — the same pattern used by mobile apps and single-page applications. Your email credentials are never shared with Claude directly.| Layer | Implementation |
|---|---|
| OAuth flow | Authorization Code with PKCE (RFC 7636) |
| Challenge method | S256 (SHA-256) |
| Token type | Bearer, 30-day expiry |
| Client auth | client_secret_post |
| CSRF protection | Required state parameter |
Credential Protection
| Layer | Detail |
|---|---|
| Encryption at rest | AES-256-GCM |
| Transport encryption | TLS 1.3 (HTTPS everywhere) |
| Memory handling | Credentials decrypted only during active IMAP sessions, cleared immediately after |
| Logging | Credentials are never written to application logs or error output |
| Storage isolation | Credentials stored separately from session data |
App Passwords
email-connector only uses app-specific passwords — never your main account password. App passwords:- Are scoped to email access only — they cannot modify account settings, change passwords, or access other services
- Can be revoked at any time from your provider’s security settings without affecting your main password
- Are separate from your login credentials and designed for third-party tool access
- Vary by provider: 16 characters (Apple, Microsoft, Yahoo) or 32 characters (Fastmail)
Email Data Handling
- Email content is never stored or cached by email-connector
- Emails are retrieved in real-time over IMAP, processed in memory, and returned to Claude
- No email content is persisted to disk, database, or any storage medium
- Each IMAP request opens and closes its own isolated connection
IMAP Session Lifecycle
Security Headers
All responses include hardened HTTP headers:| Header | Value |
|---|---|
Strict-Transport-Security | max-age=63072000; includeSubDomains |
X-Frame-Options | DENY |
X-Content-Type-Options | nosniff |
Referrer-Policy | no-referrer |
X-Powered-By | Disabled |
CORS
Requests are only accepted from:https://claude.aihttps://claude.comhttps://email-connector.fly.devhttps://connectmyemail.com
Revoking Access
To disconnect your email from Claude:- Go to your email provider’s security settings
- Delete the app-specific password you created for Claude
- Access is revoked immediately — no action needed on the email-connector side
POST /oauth/revoke, but deleting the app password is the most definitive way to cut access.
Open Source
The entire codebase is open source under the MIT license. Audit the code, self-host it, or contribute.View on GitHub
github.com/zacslost/email-connector
Reporting Vulnerabilities
Report security vulnerabilities via GitHub Security Advisories or emailprivacy@connectmyemail.com.
Do not disclose security issues publicly before they’ve been addressed. We acknowledge reports within 48 hours and aim to remediate within 7 business days.