Security
Haptic takes security seriously. Your financial data is protected with bank-level encryption and industry best practices.Data Protection
Encryption at Rest
Plaid Access Tokens:- Algorithm: AES-256-CBC
- Key Storage: Environment variables (never committed to code)
- Unique IV per encryption
- Tokens encrypted before database storage
- Decrypted only when needed for API calls
- Algorithm: SHA-256 hashing (one-way)
- Cannot be reversed or retrieved
- Stored as hashes only
- Validated by re-hashing incoming tokens
Encryption in Transit
- TLS 1.2+ for all connections
- HTTPS only - no unencrypted HTTP
- Certificate validation enforced
- Perfect Forward Secrecy (PFS) enabled
What We Store
✅ Data We Store
| Data Type | Storage Method | Purpose |
|---|---|---|
| Clerk User ID | Plain text | User identification |
| Plaid Access Tokens | AES-256-CBC encrypted | Bank API access |
| MCP API Tokens | SHA-256 hashed | MCP authentication |
| Account Names | Plain text | Display in dashboard |
| Institution Names | Plain text | Display in dashboard |
| Last Updated Timestamps | Plain text | Staleness tracking |
❌ Data We NEVER Store
- ❌ Account balances
- ❌ Transaction details
- ❌ Banking credentials
- ❌ Account numbers
- ❌ Routing numbers
- ❌ SSN or Tax IDs
- ❌ Unencrypted tokens
All financial data (balances, transactions) is fetched in real-time from Plaid and never persisted to our database.
Plaid Partnership
Bank-Level Security
Haptic uses Plaid for all bank connections. Plaid provides:- SOC 2 Type II certified infrastructure
- 256-bit encryption for data transmission
- Multi-factor authentication support
- OAuth-based bank authentication
- Read-only access to financial data
Your banking credentials are never sent to Haptic - they go directly to Plaid’s secure servers.
How Plaid Works
- Haptic never sees your bank username/password
- Plaid connects directly to your bank
- Access tokens are read-only (cannot move money)
- Tokens can be revoked anytime via Plaid or your bank
Authentication Security
OAuth 2.0 (Claude Desktop, ChatGPT)
Benefits:- No manual token copying
- Short-lived authorization codes
- Automatic token rotation
- Scoped permissions
- User consent required
Manual Tokens (Custom AI)
Security Features:- Prefixed with
hap_for easy identification - 256-bit randomness (crypto.randomBytes)
- Hashed with SHA-256 before storage
- Per-user token isolation
- Revocable from dashboard
Store Securely
Store Securely
- Use OS keychain or credential managers
- Environment variables for server apps
- Never hardcode in source files
- Never commit to version control
Rotate Regularly
Rotate Regularly
- Generate new tokens periodically
- Delete old tokens after rotation
- Rotate immediately if compromised
Limit Scope
Limit Scope
- Create separate tokens per AI/device
- Name tokens descriptively (e.g., “MacBook - Poke”)
- Easier to identify and revoke specific access
Infrastructure Security
Database (Supabase)
- PostgreSQL with row-level security (RLS)
- Encrypted at rest with AES-256
- Automatic backups with point-in-time recovery
- Network isolation with VPC
- Access control via service role keys only
Hosting (Railway)
- SOC 2 Type II compliance
- Auto-scaling infrastructure
- DDoS protection
- Private networking
- Secrets management via environment variables
Application
- Express.js with security middleware
- CORS restricted to haptic.sh domains
- Helmet.js for HTTP headers
- Rate limiting (future)
- Request validation on all endpoints
Access Control
User Isolation
Every request is scoped to the authenticated user:Subscription Gating
MCP tools require an active subscription:- Checked on every request
- Validated via Polar API
- No access without payment
Admin Access
Admin endpoints require:X-Internal-Secretheader (64-char random secret)- Only accessible from Haptic website backend
- Never exposed to public internet
- Separate authentication from user tokens
Compliance & Certifications
Current Status
- HTTPS/TLS: ✅ Enforced
- Data Encryption: ✅ AES-256-CBC + SHA-256
- Access Controls: ✅ User isolation + RBAC
- Audit Logging: ⚠️ Partial (MCP requests logged)
- GDPR Compliance: ⚠️ In progress
- SOC 2: ❌ Not yet (infrastructure partners are certified)
Third-Party Security
| Partner | Certifications | Purpose |
|---|---|---|
| Plaid | SOC 2 Type II, ISO 27001 | Bank connections |
| Clerk | SOC 2 Type II, GDPR | Authentication |
| Polar | PCI DSS | Payment processing |
| Supabase | SOC 2 Type II, ISO 27001 | Database |
| Railway | SOC 2 Type II | Hosting |
Vulnerability Reporting
Found a security issue? Please report it responsibly: Email: [email protected] Please include:- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Your contact information (for follow-up)
- Acknowledge within 48 hours
- Provide status updates every 7 days
- Credit you in our security advisories (if desired)
- Not pursue legal action for good-faith reports
Security Roadmap
Planned security enhancements:- Rate limiting per user and IP
- Audit logging for all MCP requests
- 2FA support for Haptic accounts
- Token expiration with automatic rotation
- IP allowlisting for enterprise users
- SOC 2 Type II certification
- Penetration testing by third-party firm
FAQs
Can Haptic move my money?
Can Haptic move my money?
No. Haptic has read-only access via Plaid. We can see balances and transactions but cannot initiate transfers, make payments, or modify accounts.
What if Haptic gets hacked?
What if Haptic gets hacked?
Even if our database is compromised:
- Plaid tokens are encrypted (attacker needs encryption key)
- MCP tokens are hashed (cannot be reversed)
- No balances or transactions stored
- User isolation prevents cross-user access
How do I revoke access?
How do I revoke access?
Three ways:
- Delete Plaid connection from your bank’s website
- Remove institution from Haptic dashboard
- Delete MCP tokens from dashboard
Is my data shared with third parties?
Is my data shared with third parties?
