Back to Help
Security & Encryption
The short version
Afrek has two security modes:
- Standard mode — Your data is stored securely using industry-standard practices. We can access it to provide support if needed.
- End-to-end encryption — Your task content is encrypted in your browser before it reaches our servers. We cannot read your encrypted data, even if we wanted to.
Should I enable encryption?
Consider it if:
- • You store sensitive personal or client info in tasks
- • You're familiar with passkeys
- • Privacy is a top priority for you
Maybe skip it if:
- • You're new to passkeys
- • You worry about losing access to devices
- • Your tasks aren't particularly sensitive
How to enable encryption
- 1Click the lock icon in the top navigation bar of the app
- 2Follow the prompts to register a passkey
- 3Your existing tasks will be encrypted and new tasks will be encrypted automatically
⚠️ Important: If you lose access to your passkey, your encrypted data cannot be recovered—by you or by us. Make sure you have backup access to your passkey.
What gets encrypted
- Task titles
- Task notes
- Tags
What stays unencrypted
Some fields remain unencrypted so the server can filter and sort your tasks:
- Task status (backlog, scheduled, done)
- Priority level
- Scheduled date
- Timestamps (created, updated, completed)
Benefits
- True privacy: Your task content is unreadable on our servers
- No password to remember: Your passkey handles authentication and key derivation
- Protection against breaches: Even if our database were compromised, your encrypted data would be useless without your passkey
Trade-offs
- Passkey required: You need your passkey to access tasks on any device
- Local search only: Since the server can't read your content, search happens on your device after decryption, which may be slower
- No recovery: If you lose access to your passkey, your encrypted data cannot be recovered
Technical details
Encryption uses standard browser APIs (Web Crypto API) with the following algorithms:
- Cipher: AES-256-GCM (authenticated encryption)
- Key derivation: WebAuthn PRF extension
- IV: 96-bit random nonce per encryption operation
Each task's sensitive fields are JSON-serialized, encrypted, and stored as a base64-encoded blob. The encryption version is stored alongside the ciphertext to allow future algorithm upgrades.
The implementation is open source, so you can audit the code yourself on GitHub.