← All docs

Security & privacy

How we protect your passwords and data

Last updated: 2026-01-26

Security is the foundation of Dosel. This document explains our security architecture and privacy practices.

Security philosophy

We follow three core principles:

  1. Local-first: Your passwords never leave your machine
  2. Zero-knowledge: We cannot access your credentials even if we wanted to
  3. 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:

  1. The AI identifies the password field by its structure
  2. Passwords are injected directly into the field
  3. 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:

  1. The original file is encrypted immediately
  2. The unencrypted original is securely deleted
  3. 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:

  1. Remove all password field values
  2. Redact email addresses
  3. Strip sensitive data patterns
  4. 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:

  1. Do not disclose it publicly
  2. Email hello@dosel.app with "Security" in the subject
  3. Include steps to reproduce if possible
  4. 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