Last updated:

Zero-knowledge security — how it really works.

How SealTask encrypts readable workspace content, what metadata remains visible to the service, and how backup keys support lost-password recovery.

TL;DR

SealTask encrypts readable workspace content on your device with ChaCha20-Poly1305 before sync. The service does not hold the keys needed to decrypt that content, but it still processes account, billing, security, audit, service, and workspace metadata. A backup key you save can restore access once after password loss. This design supports data minimization; regulated use still requires the appropriate agreements and controls.

Security terms should describe a boundary—not decorate a claim.

The vocabulary used across SealTask’s security, guide, comparison, and incident pages. Terms with full explainers link to their canonical page.

Browse the complete learning center

The audience guides map encrypted content, visible metadata, and system-of-record boundaries for private practice, executive support, legal work, stealth startups, HR, and consulting.

Browse audience guides

Evaluating how other task tools have fared? We keep dated, source-linked records of publicly documented security incidents across the category — vendor statements, breach-database entries, and government advisories, cited claim by claim.

Browse competitor incident records

Our core principle.

Readable workspace content is encrypted on your device before it reaches our servers. SealTask is designed so the company cannot decrypt task, note, comment, checklist, list-title, or attachment plaintext. The service still processes the metadata disclosed below. This content boundary is called zero-knowledge architecture.

What makes SealTask different.

Traditional task managers.

What competitors do

  • Store your data in plaintext on their servers
  • Can read every task, comment, and file you create
  • May scan your content for ads, AI training, or “features”
  • A breach or authorized access path can expose readable content and metadata

SealTask (zero-knowledge).

What we do

  • Encrypts on your device before sending to our servers
  • We cannot decrypt your tasks, even if we wanted to
  • No scanning, no AI training on your private work
  • A database breach can expose ciphertext and metadata, but not readable workspace content without the client-held keys

How zero-knowledge encryption works.

1

You create your account.

When you register, your password never leaves your browser in plaintext. Instead:

  • We use the OPAQUE PAKE protocol so our servers never see your plaintext password
  • After successful registration or login, OPAQUE gives your browser a secret export key we never receive
  • A random 32-byte “data key” is generated on your device
  • This data key is encrypted locally with a wrapping key derived from that OPAQUE export key
  • The encrypted data key is stored on our servers — but we can’t decrypt it without the client-side unlock material
  • You can download a one-time backup key. It wraps the same data key in your browser, and we store only an encrypted recovery wrapper

Key point: the unlock key and data key are handled in your browser. We store only encrypted wrappers, never plaintext passwords or workspace keys.

Why store the encrypted data key?

So you can log in from any device. When you switch computers or use your phone, we send the encrypted blob, your browser unlocks it locally after secure sign-in, and you’re back in. Without storing it, you’d need to manually copy a 32-byte key between devices — terrible UX for the same security.

2

You create a project or task.

Readable workspace content is encrypted on your device; operational metadata remains server-visible:

  • Project titles and descriptions
  • Task titles, bodies, checklists, and comments
  • Recurring-task template content is encrypted; cron schedule, timezone, active state, iteration, and materialization timestamps remain server-visible
  • Everything is encrypted using ChaCha20-Poly1305 AEAD (a modern, audited cipher)
  • Each project has its own unique encryption key derived from your data key

The server stores encrypted workspace payloads plus the disclosed operational metadata; it cannot read the encrypted plaintext without client-held keys.

3

You invite team members.

When sharing projects with teammates:

  • Each member gets their own encrypted copy of the project key
  • Keys are exchanged using HPKE (Hybrid Public Key Encryption)
  • Invitation public keys are recorded in a Merkle transparency log. A retained trusted checkpoint can surface a mismatch during verification, but the current client does not remain fail-closed or preserve that detection: it may discard the checkpoint and retry from genesis
  • Removing a collaborator revokes their server-authorized access to the project. Using access review to remove them from every manageable project applies that same server-side revocation to each project. On the server that commits the change, active real-time streams are signaled after the commit; changes committed on another server and bulk or otherwise unsignaled changes are rechecked within the current authorization lease, at most 30 seconds. Bytes already delivered or buffered by the transport cannot be recalled. The current release does not automatically rotate any affected project key or re-encrypt projects for remaining members, and removal cannot erase content or key material obtained while the collaborator was authorized. If future sensitive work needs a fresh cryptographic boundary, create a new project and share it only with current members.
4

The server checks HMAC consistency without decrypting the payload.

Database session and active membership state authorize access. Separately, the browser derives a list-scoped payload-binding key from the list key with HKDF and a fixed protocol constant; the same binding key is copied into each membership and stored by the server.

The server uses that key to verify an HMAC over the ciphertext. This proves only that the supplied HMAC matches those ciphertext bytes, without decrypting them.

  • Your browser derives the list-scoped binding key from the list key with HKDF; it is not a workspace-content decryption key
  • The server checks the authenticated session and active membership before authorizing the request
  • The server stores the copied binding key and can verify or compute matching HMACs over ciphertext
  • The HMAC does not establish freshness, prevent replay, bind an entity or member, or authenticate the payload against the server

What our servers can (and cannot) see.

We CANNOT see

  • × Readable task titles
  • × Readable task bodies and notes
  • × Readable recurring-task template content
  • × Readable comment bodies
  • × Readable checklist content
  • × Readable list titles and descriptions
  • × Attachment plaintext
  • × Plaintext account passwords
  • × Workspace content decryption keys

Server-visible workspace metadata

  • Account email addresses and workspace or project membership identities, roles, statuses, invitation states, and access timestamps
  • Database identifiers and relationships, including project owner, task and note creators, comment authors, delegation members, attachment uploaders, and per-member task-read cursors
  • Project timezone, section identifiers and policies, section timestamps, and task position or order
  • Task priority, completion and archive state and timing; note privacy and timestamps; per-member task-read timestamps; project timestamps and archive state; note, comment, and attention counts; and workspace write or collaboration entitlement flags
  • Recurrence schedule, timezone, active state, section, iteration, next-run, last-materialized, and task-materialization timestamps
  • Comment authorship relationships, counts, and timestamps; comment bodies remain encrypted
  • Delegation membership identifiers, roles, statuses, and timestamps; delegation notes remain encrypted
  • Attachment, project, and task relationships, including task-to-attachment link timestamps; storage identifiers; ciphertext byte size (which usually approximates original file size); upload capability expiry and protocol; status; and creation, update, or deletion timestamps; attachment content remains encrypted
  • Per-membership salts and membership proofs, plus the server-held project-scoped payload-binding key used to verify or compute matching HMACs; this binding key is not a workspace-content decryption key
  • Real-time event types; event, project, actor, membership, browser-instance, affected entity, section, and order identifiers; changed-field names; occurrence timestamps; and missed-event counts

Scope and sensitivity: This disclosure covers encrypted workspace content and its server-visible metadata. The enumerated workspace persistence, API-response, and SSE-event inventory is complete, but it is not a complete privacy-data inventory: account authentication, billing, security and audit, abuse prevention, and service telemetry are separate domains described non-exhaustively in the privacy policy. Metadata can itself be sensitive. Attachment ciphertext size usually approximates the original file size.

Security guarantees.

Password-authenticated unlocking (client-only).

Your password never leaves your device in plaintext. Successful OPAQUE authentication gives your browser an export key that locally unwraps your data key. That data key is then expanded using HKDF to derive separate keys for each project.

Server cannot decrypt encrypted workspace payloads.

The backend does not decrypt encrypted workspace payloads. Database session and membership checks authorize requests. With its stored list-scoped binding key, the server can verify or compute an HMAC matching the supplied ciphertext; that proves ciphertext consistency, not freshness, replay protection, entity or member binding, or authenticity against the server.

Access removal is bounded, not retroactive.

Removing a collaborator revokes their server-authorized access to the project. Using access review to remove them from every manageable project applies that same server-side revocation to each project. On the server that commits the change, active real-time streams are signaled after the commit; changes committed on another server and bulk or otherwise unsignaled changes are rechecked within the current authorization lease, at most 30 seconds. Bytes already delivered or buffered by the transport cannot be recalled. The current release does not automatically rotate any affected project key or re-encrypt projects for remaining members, and removal cannot erase content or key material obtained while the collaborator was authorized. If future sensitive work needs a fresh cryptographic boundary, create a new project and share it only with current members.

Invite key transparency.

Invitation public keys are recorded in an append-only Merkle tree. A retained trusted checkpoint can surface a mismatch during verification, but the current client may discard it and retry from genesis; that retry and first use remain trust boundaries, not unconditional continuity guarantees.

Backup keys stay zero-knowledge.

A backup key is generated in your browser and must be saved by you. It creates a separate encrypted wrapper for the same data key; we store only the recovery credential file and encrypted wrapper, so we cannot reset your password or read your data without that saved key.

Open source cryptography.

We use battle-tested libraries: strong-box (ChaCha20-Poly1305), OPAQUE (password authentication), HKDF (key derivation), Argon2id (OPAQUE password hardening and legacy migration), and HPKE (key exchange). All our crypto code is open source and auditable.

How we verify our security.

Our security claims are verifiable, not just marketing. Here’s how we ensure our zero-knowledge architecture works as promised:

  • Open-source cryptographic code available on GitHub for public audit by security researchers
  • Battle-tested libraries including ChaCha20-Poly1305 (RFC 8439), Argon2id, OPAQUE PAKE (RFC 9807), and HPKE
  • The server-held list-scoped binding key lets the server verify or compute an HMAC matching ciphertext; database session and membership checks authorize access, while the HMAC does not prove freshness, replay protection, entity or member binding, or authenticity against the server
  • Merkle proofs can surface a mismatch relative to a trusted checkpoint, but the current client may discard it and retry from genesis
  • Client-side unlocks from OPAQUE export keys ensure we never see your password or encryption keys
  • One-time backup keys are generated and stored by the user, never by SealTask

Trade-offs of zero-knowledge.

A backup key can restore access after password loss.

Save a backup key once and keep it private. If you lose your password, that key lets you reset it and keep access to encrypted data. Because SealTask does not keep a copy, accounts without a saved backup key remain unrecoverable.

No server-side search.

Because your task content is encrypted, we can’t provide server-side full-text search across all your tasks. Search happens in your browser after decryption.

Mitigation: We optimize client-side search with indexed lookups and fast decryption to keep it performant.

Technical specifications.

Symmetric Encryption ChaCha20-Poly1305 AEAD (via strong-box library)
Data Key Unlock OPAQUE export key + HKDF-SHA256 — derives local wrapping keys for the encrypted data key
Key Hierarchy HKDF-SHA256 — derives project and membership keys from data key
Password Authentication OPAQUE PAKE (Ristretto255 curve)
Two-Factor Authentication Authenticator-app TOTP (RFC 6238) with one-time backup codes; optional per account
Backup Keys One active one-time backup key per user; generated client-side and stored by the user
Key Exchange (Invites) HPKE (Hybrid Public Key Encryption) with X25519
Payload Consistency Checks HMAC-SHA256
Serialization CBOR (Concise Binary Object Representation)
Key Size 256-bit (32 bytes) for all symmetric keys

All cryptographic operations happen in your browser using WebCrypto APIs and audited WASM modules compiled from Rust.

Audits & transparency.

Open source crypto stack.

Our entire cryptographic implementation is open source and available on GitHub. We welcome security researchers to audit our code.

View on GitHub

Compliance.

Our zero-knowledge architecture supports GDPR data minimization and can help with technical safeguards. SealTask must expressly agree in writing before any PHI use. Where HIPAA applies, the parties must execute a HIPAA-compliant BAA before use. Encryption remains only one safeguard; your compliance program must supply the required operational controls and vendor assessment.

Common questions.

What happens if you get hacked?

A database attacker could obtain ciphertext plus account, routing, audit, and workspace metadata. Stored workspace content is not readable without the client-held decryption keys, subject to the security of the cryptography, clients, and key handling.

Can government agencies force you to decrypt my data?

A legal demand can require us to provide ciphertext and server-visible account, billing, security, audit, service, and workspace metadata. We do not hold the keys required to decrypt readable workspace content.

What if I forget my password?

If you saved a backup key, you can use it once to reset your password and keep access to your encrypted data. If you did not save a backup key, SealTask cannot recover the data for you.

How is this different from “encrypted at rest”?

“Encrypted at rest” means data is encrypted on the server’s hard drives, but the server still has the keys to decrypt it. End-to-end encryption means only you (the endpoints) have the keys — the server never has plaintext access.

Can SealTask employees see my data?

SealTask staff and database administrators do not have the client-held keys required to decrypt workspace payloads. Authorized systems and personnel may still access the server-visible metadata described on this page.

What if I want to export my data?

You can export your decrypted data anytime from the app. Since decryption happens in your browser, you’ll get readable JSON/CSV files — not encrypted blobs.

Does SealTask support two-factor authentication?

Yes. You can enable authenticator-app two-factor authentication (RFC 6238 TOTP) in security settings and store one-time backup codes. Sign-in then requires your password and a current code. This protects account login; it is separate from the client-side encryption that protects workspace content.

References & standards.

Our cryptographic choices follow industry standards and peer-reviewed specifications.

  1. 01
    RFC 8439: ChaCha20 and Poly1305 for IETF Protocols — Our symmetric encryption standard
  2. 02
    RFC 9807: The OPAQUE Augmented PAKE Protocol — Zero-knowledge password authentication
  3. 03
    RFC 9180: Hybrid Public Key Encryption (HPKE) — Key exchange for team invitations
  4. 04
    RFC 9106: Argon2 Memory-Hard Function — Password-based key derivation
  5. 05
  6. 06
    GDPR Article 32: Security of Processing — EU data protection requirements
  7. 07
    RFC 6238 — TOTP — Two-Factor Authentication

Ready for real privacy?

Join teams who trust SealTask to keep their work truly private. Start on Free — no credit card required.

Start free

Have security questions? Email us at security@sealtask.com