Security is the foundation of Dosel. This document explains our security architecture and privacy practices.
Security philosophy
We follow three core principles:
- Local-first: Your passwords never leave your machine
- Zero-knowledge: We cannot access your credentials even if we wanted to
- Minimal data: We only process what's necessary, nothing more
Password protection
Memory-only storage
Passwords exist only in memory during the password change process:
- Never written to disk in plaintext
- Never included in logs
- Never transmitted to external servers
- Automatically cleared after each operation
The app uses explicit memory clearing with garbage collection to ensure passwords don't persist.
Input field injection
When entering passwords into websites, we use direct DOM injection:
- The AI identifies the password field by its structure
- Passwords are injected directly into the field
- The actual password value is never part of the AI's context or reasoning
This means the AI sees "enter the password in this field" but never sees what that password actually is.
Encryption
Data at rest
Any temporary data that must be stored (like imported CSV files) is encrypted using:
- Algorithm: AES-256-GCM
- Key storage: macOS Keychain
- Key derivation: Machine-specific keys
When you import a CSV file:
- The original file is encrypted immediately
- The unencrypted original is securely deleted
- Decryption keys are stored in your macOS Keychain
Recovery logs
Session recovery logs (for crash recovery) are also encrypted:
- AES-256-GCM encryption
- Machine-derived keys
- Only accessible on your device
What the AI sees
The AI agent processes:
- Website structure: DOM elements, buttons, form fields
- Navigation paths: URLs, page titles, menu locations
- Visual layout: Element positions for click targeting
The AI does not see or process:
- Your passwords (old or new)
- Your email content
- Your personal data from other tabs
- Any credentials or tokens
DOM sanitization
Before sending page content to the AI, we:
- Remove all password field values
- Redact email addresses
- Strip sensitive data patterns
- Sanitize potential injection attempts
Code signing and notarization
Dosel is:
- Code signed with an Apple Developer ID certificate
- Notarized by Apple for malware scanning
- Hardened runtime enabled for additional security
This ensures:
- The app hasn't been tampered with
- Apple has scanned it for known malware
- System integrity protections are active
You can verify the signature:
codesign -dv --verbose=4 "/Applications/Dosel.app"
Third-party services
OpenRouter
We use OpenRouter to access AI models. What's sent:
- Website structure (sanitized)
- Navigation instructions
- Error messages (redacted)
What's not sent:
- Passwords
- Personal information
- Account credentials
- Session tokens
OpenRouter processes requests in real-time and doesn't store conversation history for our API usage.
No analytics or tracking
Dosel does not include:
- Analytics SDKs
- Crash reporting services that transmit data
- Advertising trackers
- Usage telemetry
All logging is local-only.
Log privacy
Application logs are automatically sanitized:
- Passwords →
[REDACTED] - API keys →
[API_KEY] - Email addresses →
[EMAIL] - File paths →
[PATH] - 2FA codes →
[2FA_CODE]
Logs are stored locally at:
~/Library/Application Support/password-manager-pro/logs/
They are automatically rotated daily and you can delete them at any time.
Security measures against attacks
Prompt injection defense
We protect against malicious content in websites:
- CSV input sanitization on import
- DOM content sanitization before AI processing
- Text normalization to catch homoglyph bypasses
- Encoding attack prevention
Credential validation
Runtime validation prevents the AI from using incorrect credentials:
- Validates usernames match the expected account
- Blocks hallucinated password values
- Verifies form field targeting
State integrity
Session state files include HMAC-SHA256 integrity checks:
- Detects tampering attempts
- Machine-derived keys prevent portability attacks
- Corrupted files are rejected
Reporting security issues
If you discover a security vulnerability:
- Do not disclose it publicly
- Email hello@dosel.app with "Security" in the subject
- Include steps to reproduce if possible
- We'll respond within 48 hours
We take all security reports seriously and will work with you to address any issues.
Compliance
Dosel is designed with privacy regulations in mind:
- No data collection: We don't collect or transmit your personal data
- Local processing: All password operations happen on your device
- User control: You can delete all app data at any time
Summary
| Aspect | How we protect you |
|---|---|
| Passwords | Memory-only, never logged or transmitted |
| Storage | AES-256-GCM encryption with Keychain keys |
| AI access | Sanitized DOM only, no credential visibility |
| Logging | Automatic redaction of sensitive data |
| Distribution | Code signed and notarized by Apple |
| Third parties | Minimal data to OpenRouter, no analytics |