Security review, October 2026

Reviewed end to end, after the October exchange incident.

On 30 October 2026 we reviewed the whole of SwapEazi, assuming attacks get cheaper and more numerous with AI help: anything an attacker can script, such as guessing, replaying, forging or flooding, was treated as likely.

Scope

Every way in, and every way a payment could change.

Sign-in and keys, secrets, stored credentials, outbound requests, request validation, rate limits, webhooks, the agent's tools, the preparation of stablecoin payments, the approval and release flow, the AI readers, security headers and dependencies.

Fixed

What changed.

No open-ended approvals
A prepared stablecoin payment is a plain transfer, or one bounded approval of no more than the payment. Delegations, permits and open-ended approvals are refused in code.
Approvals bound to what was prepared
Each payment carries a digest of what was prepared. An approval of anything else is refused; a payment is released once, even under simultaneous approvals; approvals expire; who prepares may not approve when duties are separated.
Secrets and sessions
No built-in passwords, constant-time comparisons, sessions that expire on the server, and no secrets in request logs.
Limits that hold
Per-address limits on every endpoint, based on the address our host sees, not one a caller can write.
Webhooks and callbacks
Signed deliveries only, and outbound callbacks restricted to public hosts.
AI readers
Untrusted text is data: fenced, stripped of hidden content and overrides, masked of personal data, and read into a closed schema. See /governance.
Headers
A narrower content security policy, and pages that cannot be framed.
True by design

What an attacker cannot reach here.

Money
SwapEazi never holds or moves money and holds no key that can sign a payment. Your own bank, provider or wallet executes.
Approval
A named person approves every payment. No text in an invoice, e-mail or payee name can approve, change a limit or name an approver.
Records
Releases, approvals and every agent run are kept in hash-chained, append-only logs; an edit shows where it broke.
Open items

Named, with a next step each.

A few lower-severity items remain, each with a planned next step, and older retired code is being removed to shrink the dependency surface. Details go to customers and partners under NDA. To report an issue, see /security.