Corvexsa

Security

Corvexsa cannot trade. Not "does not". Cannot.

Every AI product promises to behave. A promise is worth what the company behind it is worth. This page is about something narrower and more useful: what this software is physically able to do with your brokerage account, and how you can check it without taking our word for anything.

Last updated 5 September 2026

Corvexsa reads your holdings. It has no code that can place an order, cancel one, change an auto-invest plan, or move a single unit of currency.

Not a rule we follow. A capability the program does not have.

Prove it, right now

The button below asks our live server to attempt the exact things we say it cannot do: buy a share, sell a share, cancel an order, change a pie, withdraw funds, read your trade history, and fetch holdings from an address that is not your broker.

These are real attempts through the same function every legitimate read goes through. They are safe to run against a live account, because none of them reaches Trading 212. That is the thing being demonstrated.

No account needed. Nothing is read from, or written to, anyone's portfolio. The raw response lives at /api/security/self-test, and the full machine-readable statement at /api/security/attestation.

What it can and cannot do

How the refusal actually works

Every request Corvexsa makes to a broker passes through one function. Nothing else in the codebase is permitted to contact a broker, and that function has five rules, all of which fail closed:

  1. The method must be a read. GET or HEAD. There is no branch in that function that can emit a POST, PUT, PATCH or DELETE to a broker, so no bug elsewhere in the system can produce one.
  2. The address must be your broker. A fixed list of hostnames, so a mistake or an injection cannot walk your credentials somewhere else.
  3. The path must be one of three endpoints. Holdings, cash, and the instrument list. An endpoint that is not on the list is refused even when it is a read, because unnecessary reads leak too.
  4. The request carries no body. A body on a read is a contradiction, and it is refused before anything else happens.
  5. Redirects are refused, not followed. A redirect cannot be used to carry an authenticated request off the allow-listed host.

This is why the proof above is meaningful. It is not testing a policy someone remembered to apply. It is testing the only door.

The advisor is a writer, not an actor

The part of Corvexsa people think of as "the AI" is a language model that writes prose and fills in a fixed answer schema. It is given exactly four tools, and every one of them does the same kind of thing: return a structured answer for the app to display.

It has no tool that calls an API, executes code, or takes an action of any kind. This matters more than it sounds. A model that decided to trade for you would have nothing to do it with, in the same way that a book cannot spend your money however strongly it recommends a purchase. You can read the list of tools it is given in the attestation.

Separately, and for a different reason: the model is never asked to compute a number. Every figure you see comes from deterministic arithmetic over your real holdings and a real market feed. The model explains numbers. It does not produce them.

We refuse API keys that are too powerful

When you connect Trading 212, you generate an API key and choose what it can reach. Corvexsa needs three permissions: Portfolio, Account and Metadata. If your key has more than that, we do not store it. We tell you which permission to remove and ask for a new one.

Why bother, when the guard already makes the extra power unusable to us? Because a key that can trade is a different object to hold on your behalf than a key that cannot. If our storage were ever breached, the damage a leaked key could do is decided entirely by what you ticked when you made it. So we insist on the small one.

Trading 212 permissions Corvexsa requires and refuses
PermissionCorvexsa's ruleWhy
PortfolioRequiredReads your holdings. Without it there is nothing to advise on.
AccountRequiredReads uninvested cash, so a suggestion is fundable.
MetadataRequiredReads what your account can actually buy as real shares.
OrdersRefusedA key with Orders can see, and usually place and cancel, real trades.
Pies / AutoInvestRefusedCan read and change your automatic investing plans.
HistoryRefusedYour trade, dividend and transaction history is more than the advisor needs.

The one thing we do not check, and why

Trading 212 has no endpoint that reports a key's own permissions, so we detect them by asking: we send a read to each permission we do not want, and see whether it answers or refuses. That works for every permission except one. Detecting the permission that places orders would mean sending an order-shaped request to your real account, and we will not do that under any circumstances to prove a point about not doing it.

In practice this costs you little. Trading 212 grants the two order permissions together, so refusing a key that can read orders refuses nearly every key that can place them. And where it does not, the guard is the backstop: Corvexsa has no code that can send an order, whatever your key permits.

We would rather tell you the edge of what we can verify than let you assume it does not exist.

Your credentials, at rest

The rest of the account

What this page is not claiming

Trust pages become worthless when they overreach, so here is the boundary.

Reporting something

If you have found a way to make Corvexsa do something this page says it cannot, we want to hear about it before anyone else does. Write to security@corvexsa.com. We will confirm receipt within two business days, we will not threaten you, and we will credit you if you want to be credited.