Skip to content
All guides

TECHNICAL GUIDE

Privacy and metadata

Where your vault data is stored, which services receive metadata, and what happens when you delete it.

Data kept on your device

The web application and Chromium Extension each keep a separate encrypted vault in IndexedDB. Unlocking makes vault contents and the data-encryption key available locally. See Architecture for where each client runs these operations.

DataLocation and lifetime
Encrypted vaultIndexedDB in the web application's origin or extension storage. Persists across restarts until the vault or its storage is removed.
Unlocked web sessionVault contents and active key in page memory, cleared from application state on lock, reload, or tab close.
Unlocked extension sessionVault contents, active key, temporary credential drafts, and service session in chrome.storage.session. Cleared on vault lock or when Chrome clears the extension session.
Protection phraseDerived protection-phrase material can persist in local IndexedDB across locks and restarts. It still requires the master password to unlock the vault.
Security-key protectionWebAuthn PRF credential metadata stays on the device. The authenticator supplies the additional key material when you unlock.
Backup receipt and preferencesA local receipt records backup time and an encrypted-state fingerprint, not the backup itself. Receipts, vault selection, and interface settings can persist across restarts.
Backup destination statusFor each backup destination, the device keeps the time and error of its last upload and a keyed fingerprint of what it uploaded. The fingerprint key is in the vault, so the fingerprint reveals nothing about the contents.

See unlock factors for how the protection phrase and security key are used.

Closing the extension popup does not clear its unlocked session. Chrome clears extension session storage when the extension is disabled, reloaded, or updated, and when the browser restarts.

What leaves the device

Local vault use does not require an Online Services account. Loading the hosted web application still contacts its web host. Self-hosting changes which host receives those requests; custom synchronization uses the servers you configure.

WhenRecipient and data
Loading the hosted appThe web host and any HTTPS-terminating proxy receive the requested URL, request headers, IP address, and timing needed to serve the application.
Linking or connecting devicesThe signaling server receives channel identifiers, presence, and connection-negotiation messages. WebRTC setup information can include IP addresses and ports.
Establishing a device connectionSTUN receives network-address information. If TURN relays the connection, it sees addresses, timing, and encrypted traffic volume.
SynchronizingThe linked device receives encrypted records and decrypts them locally. A TURN relay carries the encrypted exchange when a direct route is unavailable.
Using Online ServicesThe API receives device-authentication messages, identifiers, and the configuration or operation being requested. Vault passwords and plaintext vault contents are not used to authenticate these requests.
Uploading or downloading a managed backupThe API handles backup metadata and issues a temporary signed URL. Object storage transfers the encrypted snapshot directly with the client.
Backing up to a backup destinationThe bucket's provider receives the encrypted backup file, the access key ID, request signatures, your IP address, and upload times. Our servers are not involved. See backup destinations below.
Creating a one-time share linkThe share server receives the encrypted contents, hashes of the link's tokens, the expiry, and a pseudonym that counts your open links. On the Cryptex Vault server, the API first issues a ticket for the request; the share server never learns your account ID. See what the server sees.
Opening a share linkThe recipient's browser loads the page and fetches the encrypted contents once. The key in the link stays in the browser. The share server records when the link was opened so the sender can see it.
Opening a flow with CAPTCHACloudflare Turnstile receives browser and challenge information for its bot check. The client sends the resulting token with the protected request, such as registration or recovery.
Opening checkoutStripe and Link handle checkout requests and the payment details entered there. The service receives the resulting subscription and payment status. See Managed Payments.
Buying through Google PlayIn the Android app from Google Play, Google Play handles the purchase and the payment details. RevenueCat receives the purchase record and the Online Services account identifier, and passes the subscription status to the service.

HTTPS encrypts request contents between the browser and the server terminating TLS. A passive network observer can see connection addresses, timing, and traffic volume, but not the HTTP path, headers, or body inside that encrypted connection.

The credential list uses built-in icons rather than requesting favicons for saved websites. Clicking a saved website link opens that destination and makes an ordinary browser request to it.

This table describes what each service receives, not what it keeps in logs. See server-log retention below.

Managed backup metadata

Managed backups are encrypted locally before upload. The storage provider receives encrypted bytes. The API tracks snapshot and object identifiers, byte size, SHA-256 checksum, source device, timestamps, and upload or deletion state.

Device and root-device associations determine which snapshots are eligible for recovery. See root-device permissions. The upload does not send the vault password, vault recovery code, additional protection secret, or plaintext vault contents.

Backup pruning and the subscription grace period follow the published retention rules.

Backup destination metadata

Backup destinations are S3-compatible buckets you add yourself. Each device uploads the same encrypted .cryx file you get from Download backup straight to the bucket. The bucket's address and keys are stored in the encrypted vault, sync to your linked devices, and are part of every backup.

Each device writes to its own folder, whose name starts with the platform, such as android-. File names hold the upload time. The provider can therefore tell how many devices back up, which platforms they run, when your vault changes, and how large it is. It cannot read the contents. See Backup destinations.

Providers, analytics, and logs

Our production infrastructure, STUN/TURN servers, and managed encrypted backup storage are hosted in Europe. If you self-host, your chosen providers and logging settings apply to those services.

We use Cloudflare to proxy hosted traffic and run Turnstile bot checks. Its HTTP Traffic analytics reports on requests and bandwidth handled by Cloudflare's servers. Cloudflare Web Analytics and RUM are not enabled, so their browser analytics script is not loaded. Turnstile uses separate browser code for bot checks.

Web diagnostic logs
Held in memory, with up to 500 entries per category. Cleared when the vault locks or the page session ends.
Extension diagnostic logs
Stored locally in chrome.storage.local, capped at 2,000 entries. They survive closing the popup and are separate from the unlocked session.
Our operational/security logs
Retained for 30 days. These hosted-service logs can include request identifiers, IP addresses, timestamps, outcomes, and diagnostic information.

Diagnostic logs are not uploaded automatically. You can export them to a file and choose whether to share it. Check it for device identifiers, connection details, and errors before sharing. The 30-day retention period applies to our operational/security logs, not third-party provider logs or logs on self-hosted servers.

Deletion and your controls

Lock the vault
Clears the active unlocked vault and key from application state. Keeps the encrypted vault, locally retained protection material, and existing backups.
Delete a local vault
Removes that installation's local vault. It does not erase copies on linked devices, downloaded files, managed backups, or files in backup destinations. Clearing the web app's site data removes its local storage as well.
Pause managed backups
Stops new uploads. Existing snapshots remain subject to the retention rules.
Delete managed backups
Requests deletion of selected stored snapshots within your device's permissions. It does not delete the live local vault or copies already downloaded.
Remove a backup destination
Stops uploads to it from every device and erases its keys from the vault. Files already in the bucket stay until you delete them there.
Delete your Online Services account
Revokes service sessions and queues managed backup objects for deletion without the subscription grace period. It does not remotely erase local vaults. See service deletion.

Downloaded backups, exported logs, and JSON exports remain wherever you saved or shared them. JSON exports are not encrypted. For backup instructions, see Backups; for privacy requests, see the privacy policy.