What we store, and what we can never touch
Your wallet set is a complete picture of your financial life on-chain. That is exactly why the product is built so that holding it gives us no power over it.
What we hold
What we never hold
Exchange keys are refused unless they are read-only
We check the key’s actual permissions when you connect it. A key that can withdraw or trade is refused, with the permissions we found named and instructions for creating one that is read-only. That refusal is the feature, not an error.
Keys are sealed with a data key unique to your account, which is itself stored only in wrapped form. They are never written to logs or exception traces, and removing one from Finality is a single action.
Sign-in does not use your wallet
Email link or passkey. Never a wallet signature — it proves control of a key, not who you are, and it is the wrong instrument for a tax product.
The site and the product are separate origins
Marketing runs on one host and the product on another. The product host carries a strict content-security policy, runs no third-party scripts at all, and is closed to crawlers. A compromised vendor script on the marketing site cannot reach product session state, because it is a different origin with a different cookie jar.
How the encryption actually works, and what it is not
Exchange credentials are sealed with a data key unique to your account, which is itself wrapped by a key the database never holds. That is the right shape — but in this build the wrapping key is a file on the same server, not a managed key service, and the cipher is a hand-rolled construction rather than a reviewed one.
Anyone who can read that server’s filesystem can unwrap the credentials. There is no hardware boundary, no audit trail of decrypt calls, and no key rotation. A production deployment must put a managed KMS behind this; the code is written so that is a deployment change rather than a rewrite.
We would rather say this than let “encrypted” do work it has not earned. It is the reason this build is not one you should connect a real exchange key to.
What we do not yet have
No third-party assurance report yet
We do not hold a SOC 2 Type II report or ISO/IEC 27001 certification. When we do, they will be named here with their scope and date. Until then this page is the whole of our security position, and we would rather state that plainly than imply otherwise.