Your message is encrypted before it leaves.
Message + key
Local encryption
Ciphertext only
No decryption key
One explicit read
Local decryption
The key is in the link fragment, after #. That fragment is not sent in HTTP requests. Share the full link only with the intended recipient, and any extra password separately.
Layers you can inspect.
Local, authenticated encryption
AES-256-GCM, a fresh random 32-byte key and 12-byte IV per message. Encryption and decryption happen in your browser or local client.
An optional extra password
PBKDF2-HMAC-SHA256 with 600,000 iterations and a fresh 16-byte salt derives the encryption key from the link key and password. Choose a strong password and send it separately.
One read, enforced atomically
DELETE … RETURNING consumes the stored record before the read response. Of two simultaneous requests, only one receives the ciphertext. Expired messages become unavailable immediately; expired rows are cleaned every five minutes.
HTTPS and browser safeguards
The Worker sets HSTS, a same-origin Content Security Policy, no-referrer and anti-framing headers. API responses and secret pages use no-store caching.
Know what protection does not cover.
Someone has the full link
Anyone with the complete link can attempt to read it. An extra password adds a separate barrier; without one, the full link is sufficient.
The device or client is compromised
Malware, extensions, screenshots or a recipient who saves the message can expose plaintext. You must trust the browser, the code it receives and the local client. An AI agent calling the MCP tool also sees the message.
The connection fails, or the password is wrong
The first API read consumes the secret even if decryption fails or the response is lost. The browser can retry a password against ciphertext already held in that page, but the server cannot restore the consumed message. Do not retry the API read automatically.
Connection metadata
The application stores daily rotating HMAC identifiers for rate limits rather than raw IP addresses. Application request logging is disabled; Cloudflare processes connection data under its own policies. Encryption does not hide every aspect of a connection.
What you can verify today.
The encryption flow is described here, and the browser client is delivered to your device. The project repository is currently private. Publishing source code and compatibility tests would allow a broader review; documentation alone is not an independent security audit.
We do not publish an independent security audit report or claim a security certification.