The agreement, in the same register as the rest of this site.
Revision: Pre-Audit Candidate, 12 October 2026
Version 1.1, dated 12 October 2026 (Pre-Audit Candidate), replacing version 1 of 21 August 2026; it brings the page into line with the service as built, and every change is recorded in the project's change history. These terms govern hosted Haven — the managed subscription sold on this site. They do not govern an instance you run yourself, which is unsupported and yours.
Nothing below contradicts a page one click away, and that is the constraint this document was written under. Where a term is unfavourable to you it is written plainly rather than in a subordinate clause on page four, because a customer who finds out later is a customer we should not have taken money from.
This is a draft, and we are not lawyers
Everything on this page was written by the people who build Haven, from the code, in the same register as the rest of this site. It is not legal advice and it has not been reviewed by a solicitor. Before this business relies on it — and before you do — it needs a lawyer's pass, and the clauses that need one most are marked where they appear. We would rather ship an honest draft that says so than a confident boilerplate that says nothing.
Your account, and the thing about it you cannot undo
You must be 16 or older to have an account. There is no age check, because the only way to run one is to collect identity documents from everybody — which would destroy the property this whole service is built on. So it is a condition, and it is on you.
An account is a username and a password. There is no email field, no phone number field, and
no column in the database behind either — users.email was dropped from the
schema outright. You are responsible for the credentials and for what is done with them.
If you lose your password, you lose the account, and we cannot help
This is not a support policy we could soften. Your private key is sealed with a key derived from your password and we have never held it open; there is nothing on our side to reset it against, and there is nowhere to send a reset link because we hold no address for you. Encrypted backup and restore exists under a separate passphrase of your choosing — lose that one and the backup is gone too. Nobody, including us, can recover an account whose password is lost.
You must be old enough to enter a contract where you live. One person may hold more than one account; we do not attempt to detect that and hold nothing that would let us.
What the subscription buys, and what it does not
It buys the operational half of this product: a hosted instance somebody keeps patched, running and backed up, the storage and seat limits published on the pricing page, push delivery, a call relay, and — on the paid tiers — a named commitment about who answers you and how fast. What that commitment actually is, and is not, has its own page.
It does not buy a different security model. The cryptography is the same code at every tier including the free one, no plan lets anybody here read or unlock anything, and no plan reduces the metadata the server keeps. It has not been through a professional security audit; we say so on every page of this site and we will keep saying so until one has happened.
Every limit in the catalogue is the limit the server enforces, with one exception that is marked as such in the comparison table: support is a promise about people rather than a check in the code.
Payment
- Prices are in US dollars and exclusive of any tax we are obliged to collect. The catalogue on this site and the price the server charges are the same object; there is no second price list.
- A monthly plan is billed monthly in advance. A yearly plan is one payment covering twelve months, in advance.
- Team and Business bill from a minimum of 3 seats and Enterprise from 50. A two-person team on Team pays for three. That is what a seat minimum is.
- There are two ways to pay: a card, through Stripe's own hosted checkout; or a prepaid voucher code. Enterprise is quoted and can be invoiced.
- Card details never reach this server. You type them into a page Stripe serves from Stripe's origin, and no card number, expiry or security code reaches us at any point. What does reach us is Stripe's notification about the payment, stored verbatim so its signature stays checkable — and for a card payment that carries the email address you gave Stripe, and depending on what it asked for your name, postal address and the card's last four digits. We cannot send anything to that address. A voucher-paid plan leaves none of it.
- An instance with no payment processor configured cannot take a card at all. The site asks the server which it is and does not offer a button that would fail.
We cannot email you about your bill, ever, and that can cost you the account
Haven holds no email address for any account, because there is no column to hold one. The consequence is total and it belongs in the terms rather than in a footnote: there is no dunning email, no receipt from us, no renewal reminder, no card-expiring warning and no notice before a plan lapses. Stripe may send a receipt to the address you gave Stripe — that is Stripe's record and Stripe's message, and it is the only email connected to this service that exists.
So the account page in the app is the only place you find out. If a card expires, nothing reaches you; the subscription goes past due and free limits start applying until it is settled. Check it, or pay yearly, or use a voucher with a length you have chosen deliberately. A customer who assumes an email is coming will not get one.
What happens when a plan lapses, is cancelled, or is downgraded
This is the clause people most need to be right about, so it is written from what the code does rather than from what a terms page usually says.
- A failed payment puts the subscription past due. Free limits apply to new activity — uploads over the free quota are refused — and nothing is deleted.
- Cancelling takes effect at the end of the period you have already paid for. You keep the plan until then, and afterwards free limits apply. Nothing is deleted. You cancel from the account page in the app, and on a card subscription that instruction is sent to the payment provider and confirmed by it before anything is written on your account — so the cancellation is real at the processor and not merely displayed here. If the provider cannot be reached, nothing is changed at all: your plan, your bill and your renewal date stay exactly as they were, and the app says the provider did not answer rather than showing a cancellation that did not happen. Stripe's own billing portal is the other route, with the caveat that the link into it is created by our server over the same connection, so an outage which reaches us can take that link with it; what happens inside the portal is Stripe's and nothing on our side touches it.
- Moving a card subscription to the free plan is a cancellation, and is handled as one. There is no free price for a card subscription to switch onto, so that request is refused in the app with a sentence pointing at the control that ends the plan at the close of the period you have paid for. The same is true of any other change to what you are billed: a plan, interval or seat change on a card subscription either reaches the payment provider or it does not happen, and it is never applied here alone.
- Deleting your account ends the subscription too, and ends it today rather than at the close of the period. The cancellation is made at the payment provider and confirmed before a single row is deleted, because deleting the account destroys the only handles we hold for that subscription — a card that was not stopped first could never be stopped by us afterwards. If the provider cannot be reached, the deletion is refused and nothing is changed: the account, the plan and the card stay exactly as they were. The unused remainder of a paid period is not returned automatically; it is a refund question and the refunds page says how one is made.
- And the state in between, stated rather than left out. The cancellation at the payment provider is immediate and cannot be undone, while the deletion that follows it runs against a database which can, rarely, refuse — a lock held by another process, a full disk. Every reason the deletion could be refused for is settled before anything is cancelled, so an ordinary refusal changes nothing. But if the cancellation succeeds and the deletion then fails, your subscription is cancelled and your account is still here, and that state is recorded rather than left quiet: the subscription row is marked cancelled, your security log gets an entry saying so, and the billing ledger gets one that carries no link to your account and therefore outlives it. The cancellation is not undone, and the remainder of the period you had already paid for is not returned. Deleting again is safe and cancels nothing twice.
- The retention sweep deliberately skips past-due and cancelled subscriptions. A paid plan's history is not swept because a card bounced or a customer left. The sweep resolves its window from the stored plan and refuses to treat a lapsed paid plan as a free one — that mapping was removed from the code on purpose, because it had been deleting paid customers' history.
- Choosing the free plan yourself is different, and how it takes effect depends on how the plan is paid. On a card subscription, choosing Free is the cancellation described above: it is refused in the app with a pointer to the control that ends the plan, the plan runs to the end of the period you have paid for, and a cancelled paid plan is not treated as Free by the retention sweep. On a plan that is not paid by card — a voucher or a grant — choosing Free applies from the moment you choose it and accepts Free's 90-day window: after that the server deletes its copy of a message. Either way that window is a cost limit, and it cannot reach a device that already synced the plaintext.
- Being moved onto Free by somebody else — removed from a shared plan by its owner, or re-homed because that owner deleted their account — stamps a floor into your subscription that permanently exempts everything written before that moment from any plan-level deletion window. You are not made to pay for somebody else's decision with your history.
- Being over quota means no new uploads until you delete something or resubscribe. It never means we reclaim the difference.
- Subscription fees are not refundable for part of a billing period, except within the 14-day cooling-off window after a payment, which the refunds page describes and the app offers as one action. When you move to a smaller plan, the change applies either at the end of the billing cycle or at once with any prorated unused balance applied as a credit toward future invoices. Haven does the second, and on a card subscription that change either reaches the payment provider or it does not happen — it is never applied here alone. You are billed at the lower price from that moment, and the difference for the rest of the period is settled on your next invoice.
- Moving to a larger plan, more seats or a different billing interval on a card subscription is done from the account page in the app, which shows the new price and asks you to confirm before anything is sent. The difference is then charged to the card already on the subscription at once, less the unused part of the period you have paid for, and the new plan starts only when that payment has gone through. If your bank asks you to confirm the payment, you finish it on the payment provider's own page; until it is paid you keep your current plan, and if it is never paid you simply stay on it. It is never applied to a card without that confirmation.
What you may not do with it
Short, because the enforcement options are genuinely narrow and a longer list would be theatre. We cannot read your messages, so we cannot moderate their contents; what we can see is an account and the shape of its activity, and this list is confined to what that can actually reach.
- Do not use the service to commit a crime against another person — the fact that we cannot read a message is not permission and is not a defence.
- Do not attack the instance: no attempt to exceed a limit by evading it, no automated account creation, no flooding, no attempt to reach another account's data.
- Do not resell seats as your own service. Enterprise exists for arrangements of that shape and is quoted.
- Do report a vulnerability rather than exploiting it. security.txt is the route, and a report made in good faith will not be answered with a lawyer.
Suspension, and the record it leaves
We can suspend an account. When we do, a reason has to be written by whoever does it, that reason is shown to you, and the action is written to an append-only audit log with the operator's identity copied onto the row so the record survives their leaving. Your username is copied there too, which means it outlives your account in that log — that is the honest cost of a log that can still answer "who suspended this account", and it is disclosed on the account panel as well as here. A suspension reads no message content, because content is sealed to us; it does not follow that it reads nothing, and the threat model lists what is readable.
What we may do, and what we will not
We may
Change prices, with at least 30 days' notice, the new price stated as a figure rather than a percentage, and never retroactively. A subscriber who already has the plan keeps the price they agreed for twelve months from that notice; the new price then applies at their first renewal after it. Anyone who neither accepts the new price nor cancels has their renewal paused at the end of the period they have paid for — we do not charge a price you did not agree to. Change or withdraw a plan, honouring the period you have paid for. Suspend an account under clause 5. Take the service down for maintenance. Refuse a customer. Change these terms — see clause 9.
We will not
Add a key escrow, an operator decryption path, or any mechanism that would let us read content. Add an analytics vendor, a tracker or a third-party script to this site or the app. Sell, rent or share what we hold with anybody for a commercial purpose. Add an email column and start writing to you. If any of those changes, it changes with a version of this document that says so on its face.
Legal process, and exactly what it can reach
We comply with valid legal process. Saying otherwise would be a promise nobody can keep. What matters is what compliance can actually produce, so here is the list rather than the posture: message ciphertext; every conversation key we hold, wrapped to a participant and useless without a password we do not have; the participants table, which is the complete social graph; message timestamps to the second; attachment sizes in bytes; sign-in times; last-seen times except on accounts that hide presence, where the column is empty; usernames, including those of deleted accounts wherever an administrator acted on one; the TOTP secret of any account with two-factor turned on — encrypted at rest under a key held outside the database, and still producible by us because we hold that key; a coarse device label per session unless the account asked for it to be withheld; and per message, two signatures — one over its contents and one over its position in the conversation.
Not message content or filenames, because we have no way to get at them. Group names: only for groups created since group names were sealed. A group made before that still holds a readable name in the database, and we could be compelled to produce it.
An email address, if you have ever paid by card. There is no email column on your account — that column was dropped and nothing rebuilt it. But the payment processor's notifications are stored here exactly as they arrive, so that each one can still be checked against the signature it came with, and for a card payment those notifications contain what you gave the processor on its own page: in practice your email address, and depending on what it asked for, your name and postal address and the last four digits of the card. We have no way to send anything to that address and we hold it anyway. A free account and a voucher-paid account leave no such record.
A preservation order — a legal hold — can make us stop deleting. If a court or other lawful authority orders us to preserve an account or a conversation, we place a hold on it, and while the hold is in force nothing it covers is destroyed: not by retention windows, disappearing messages, your own deletions or edits (the overwritten version is kept), the retirement of old conversation keys, or deleting your account. If a held account is deleted or leaves a group, the hold carries onto its conversations. What is kept is what we always held — ciphertext and wrapped keys we cannot open — so a hold can make us keep your messages but not produce what they say. A hold is placed only by a named person, from the server's own command line, against a case reference, and is recorded in a register that is never edited; when it is lifted, deletion carries on as if it had not been there. The app does not tell you a hold exists, because telling you would disclose the order. The canary page says more.
Where we are permitted to tell you about a demand, we will. Where we are not, we will not be able to, and the warrant canary is the only instrument we have for that — read what its absence would and would not mean before relying on it, because it is less than people assume.
The demand this design does not defeat is not "hand over the messages". It is "hand over who this account talks to, and when", which we can satisfy completely. The threat model states it in both columns.
Warranty, liability, and the sentence most terms pages hide
The service is provided as it is, with no warranty of security
We do not warrant that the software is free of defects, that it is fit for protecting you from any particular adversary, or that it will be available at any particular time. It has not had a professional security audit. An internal pass found real, exploitable bugs in shipped code — including one of exactly ANOM's shape — and we published it in full, which is the strongest evidence we can offer both that we look and that there is probably more to find.
If being wrong about this would be catastrophic for you, do not rely on it. Signal, Session and SimpleX are free, and two of them hold less about you than we do by construction. We would rather write that here than take money for the wrong tool.
Our aggregate liability to you is limited to the amount you paid us in the twelve months before the claim. We are not liable for indirect or consequential loss, for lost data where the loss follows from a property of the design that this site documents, or for anything arising from a device you control being compromised.
A solicitor has to write this clause properly. Consumer law in most jurisdictions limits how far a liability cap can go, and nothing here is intended to exclude liability that cannot lawfully be excluded — including for death, personal injury or fraud. The wording above states the intent; it is not yet the wording that would be relied on.
Changes, notice, and the law that applies
How you find out these terms changed
Not by email — see clause 3. This page carries a version and a date at the top, and a material change bumps both. There is nothing in the app that announces it: the product has no operator-to-customer notice channel at all, and this page is the notice. A change that reduces what you get takes effect at your next renewal rather than immediately, so the terms you agreed to are the terms of the period you paid for. That is the whole of the notice mechanism a service with no address for its customers actually has, and describing it as more than that would be the dishonest option.
Governing law and jurisdiction are deliberately blank. They depend on where the operator of this instance is established and where its customers are, and inventing a jurisdiction here would be worse than leaving the gap visible. This is the first clause a solicitor must complete, together with the consumer-law carve-outs in clause 8 and the international-transfer terms in the data processing addendum. Until then, treat this document as a statement of how we intend to behave, which is the part we can actually vouch for.