Privacy policy
Last updated:
Your drafts are encrypted on your devices before they go anywhere. The relays that store them can't read them, the agents you connect can add to your queue but can't read it, and we don't run analytics, track you or sell data.
Who runs qus.me
qus.me is run by an individual developer, not a company. It consists of the qus.me browser extension for Chrome and Firefox, the service at app.qus.me that AI agents connect to, and this website. "We" and "us" in this policy mean that developer. You can reach us at info@qus.me.
What the extension keeps on your device
The extension keeps the following in your browser's storage on your device. None of it is sent to us.
- Your queue's secret key, encrypted with your passphrase, in the browser's local storage. It is the key that encrypts and decrypts your drafts.
- The unlocked keys, only in the browser's session storage while your queue is unlocked. Locking deletes them, and the browser clears session storage when it closes. If you turn on "stay unlocked on this device", the unlocked keys are also kept in local storage until you turn it off or lock.
- Your decrypted drafts, only in session storage. Locking deletes them with the keys.
- Your settings: a copy of your settings event as it is stored on the relays (your destinations, the agents you approved and what each may do), encrypted the same way, plus small bookkeeping records such as an agent revocation that app.qus.me hasn't confirmed yet and the IDs of agent submissions already handled.
When you create a queue, the extension shows you a recovery code and offers a recovery sheet. The extension doesn't keep the code. It publishes a backup of your queue's key to your relays, encrypted with the recovery code, so you can recover the queue on a new device. Anyone can fetch that backup from an ordinary relay, which is why it is locked with a long random code and not your passphrase. Keep the code and the sheet as carefully as a password.
What the Nostr relays see
Your queue lives on Nostr relays, servers run by third parties that store and pass along messages. You choose them when you create your queue; the extension suggests wss://relay.primal.net and wss://relay.ditto.pub for storage and wss://auth.nostr1.com as the inbox where agent submissions arrive. Every draft is encrypted on your device before it is sent, so a relay receives only data it can't read.
The relays can see:
- the encrypted events themselves;
- your queue's public key (an identifier that doesn't unlock anything), and that it belongs to a qus.me queue;
- when events are written, changed or deleted, and how large they are;
- the list of public keys of the agents you have approved, and when each was added or removed;
- your IP address when your device connects to them.
The inbox relay sees how many agent submissions arrive for your queue's inbox, when, and how large they are; nothing on the storage relays links the inbox to your queue. Each relay operator handles this information under its own policy.
What the service at app.qus.me sees and keeps
app.qus.me is where AI agents such as Claude connect to submit drafts. It never holds your queue's key and can't read your queue.
- Agent submissions. When an approved agent submits a draft, the service sees it in plaintext only while it validates it and encrypts it to your queue's inbox. It doesn't keep the plaintext.
- Submission receipts. For each submission it keeps a receipt with no content: which agent, your queue's public key, the encrypted submission's ID, and the time. These let the agent list its submissions and let the service count them against the limit you set.
- OAuth records. For each agent application that connects, the service keeps the public information the application publishes about itself (its name and its sign-in return addresses). Authorization codes and access and refresh tokens are stored only as hashes, never as the tokens themselves.
- Agent keys. The service makes one key per agent you approve, so it can deliver that agent's drafts. Each key is stored encrypted, with a secret held apart from the database. It records which of your queue's public key and storage relays each agent is linked to, and reads the permissions you gave that agent (its destinations and limit) from your relays.
- Pairing codes. If you pair a new device using a typed code, the service holds the pairing link for at most two minutes and deletes it the first time it's fetched.
- IP addresses. The service doesn't store IP addresses. For rate limits it passes your address to Cloudflare's rate limiting counters, which count requests per address over a one-minute window. While an agent's sign-in request is waiting for your approval, it keeps a keyed hash (an HMAC) of the requesting address, never the address itself, to cap how many open requests one address can make.
How long the service keeps things
Expired records are deleted by a sweep that runs every five minutes.
- A sign-in request waiting for approval, with its hashed IP address: 10 minutes. If you deny it or it runs out, the agent key made for it is deleted too.
- Authorization codes: 60 seconds. Access tokens: 1 hour. Refresh tokens: 30 days, replaced each time they're used.
- Submission receipts: until the submission itself expires (30 days by default, at most 90, set for each agent when you approve it) or the end of the limit period it counts toward, whichever is later.
- Pairing codes: at most 2 minutes. Records that stop the same signed request being replayed: 60 seconds.
- When you revoke an agent, its encrypted key is discarded and its tokens stop working. A record that the agent existed, with its public key, its link to your queue's public key, and its receipts until they expire, remains.
- The public information an agent application publishes about itself is kept, since tokens and agent records refer to it.
Hosting
app.qus.me and this website run on Cloudflare Workers. Cloudflare handles every request to them, including your IP address, and keeps its own request logs under its own policy. This website sets no cookies and loads nothing from other sites; its only script is the copy button.
What we don't do
We don't use analytics, tracking cookies, pixels or advertising. We don't sell your data, and we don't share it except as this policy describes. qus.me never posts on your behalf; you click Post yourself.
Other parties
The agents you connect are run by their own providers, and what you share with them is covered by their policies. The relays are covered by theirs, and Cloudflare by its own.
Your choices
You can revoke any agent from the extension at any time, delete drafts from your queue, and remove the extension. Removing it deletes everything it stored in your browser.
Encrypted copies already published to relays stay there until they expire or the relay honors a deletion request; the extension sends deletion requests, but many relays ignore them. Agent submissions carry an expiry (30 days by default). Those copies are encrypted, and without your queue's key nobody can read them.
To ask about or remove service records linked to your queue's public key, write to info@qus.me. The code is open source, so you can check what it does: github.com/lokkju/qusme.
Changes
If this policy changes, the new version will be posted here with a new date.
Contact
Questions about this policy or your data: info@qus.me.