Anonymous chats

An anonymous chat keeps its saved messages private to you. The model provider still receives your prompt so it can answer.

Where an anonymous chat is encryptedYour browser derives a key from your passphrase and the chat's public salt and encrypts each message. The server stores only the ciphertext plus token and cost counters and holds no key. For each turn, your browser sends the decrypted history and your new message; the server forwards the prompt to the model provider, asking for zero-data-retention routing, and the reply returns to your browser, which encrypts it before saving.ciphertext only1. Your browser derives a keypassphrase + public saltnever stored2. Browser encrypts eachmessage (AES-GCM)3. Each turn: browser sendsdecrypted history+ new message4. Server forwards the promptasks for zero data retentionModel providersees the prompt to answer5. Reply streams back,browser encrypts itServer storage: ciphertextplus token and cost countersno key, cannot decrypt
Encryption and decryption happen in your browser; the server stores ciphertext, but the model provider still sees the prompt.
Diagram as text
  1. Your browser derives a key from your passphrase and the chat's public salt. The key is never stored.
  2. Each message is encrypted with AES-GCM in the browser.
  3. Only ciphertext and token and cost counters reach the server's storage. The server holds no key.
  4. For each turn the browser sends the decrypted history and the new message, because the server cannot rebuild it.
  5. The server forwards the prompt to the model provider and asks for zero-data-retention routing.
  6. The provider sees the prompt in order to answer. The reply goes back to your browser, which encrypts it before saving.

In your browser

Can I hand in my notice before the fixed term ends?

Private to you

Your saved conversation

with your passphrase

Unlock the conversation with its passphrase to read saved messages.

Who else can read it

what they can see

Your prompt is still sent to the selected model provider to generate an answer. Anonymous turns ask for zero-data-retention routing and fail instead of using a provider that cannot offer it. Whether a route enforces that depends on the provider; see Zero data retention.

How it works

Open the chat’s settings and choose Make anonymous. If the chat already has messages stored in plain text, ZeroLog refuses until you choose to delete that plain text. Your browser derives a key from your passphrase and the chat’s public salt (PBKDF2-SHA256, 600,000 rounds) and encrypts each message with AES-GCM. The server stores only the ciphertext, in a storage area of its own, plus token and cost counters. It holds no key and has no way to decrypt.

Each turn, your browser sends the decrypted history along with your new message, because the server cannot rebuild it. The reply streams back and your browser encrypts the pair before saving it.

An anonymous chat is plain conversation. It is left out of search, memory and compaction, and you cannot set a goal on it.

Storage and deletion

If ZeroLog cannot save a message, you will see an error. It is not saved as a regular chat. Deleting an anonymous chat also deletes its saved messages. Turn off anonymous destroys the saved ciphertext too, because the server could not convert it back.

The passphrase

Lose the passphrase and it is gone permanently.

No support request can recover it. Your browser does not store it, so after a reload or a closed window you enter it again.

Every new chat

An account preference, anon_by_default, makes every new chat start anonymous. The current web app has no switch for it in its settings screens yet. While it is on, the browser extension will not start chats and points you to the app.