Security policy
sigelo is maintained by one pseudonymous person, csigelo. Nobody here will ask for your real name, and
you need not give one. Reports are read by that maintainer only.
Draft. Decided at D1 (2026-10-01): the pseudonym and GitHub account
csigelo(https://github.com/csigelo/sigelo), the domain sigelo.io,security@sigelo.iofor reports andcontact@sigelo.iofor anything that is not a vulnerability — both mailboxes exist and are read — and a SimpleX contact address for both. Still<angle brackets>: the age recipient and the SimpleX address itself. Until the repository is public, e-mail is the working channel. All contacts:https://sigelo.io/contact.html.
Reporting
In order of preference:
- GitHub private vulnerability reporting on this repository ("Security" → "Report a vulnerability"). No account linkage beyond your GitHub handle.
- Email
security@sigelo.io(the mailbox exists and is read), encrypted to this age recipient once it is published:age1<to-be-filled-at-D1>— also published athttps://sigelo.io/.well-known/security.txt(RFC 9116). Unencrypted mail is read, but assume it was not private. - SimpleX:
https://smp10.simplex.im/a#18LjfJawmkVxvFtCHFo-yyzPo8Kr3gPLNts_ovwxmZM. The address lives on public SimpleX relays, not on a server this project runs, and the same address also serves general contact (https://sigelo.io/contact.html).
Say what you ran, against which commit, what happened and what you expected. A failing vector, bundle or request is worth more than prose. State what you did not verify.
Scope
SPEC.mdandtest-vectors.json: any bundle two conformant verifiers disagree on, any vector that is wrong, any rule that lets a stolen key or a malformed object win.ts/(the library, the vector generator,sigelo-offlineand the ceremony) andgo/(the reference verifier,sigelo-verify,keys.go).spend/, the keeper: account pinning, caps, the delegation tree, approvals, the two-phase relay, tokens,spend.logintegrity,sigelo-walletoutput an attacker can shape.adapters/1f916andadapters/moadim.- Release artefacts once they exist: binaries,
SHA256SUMS, the signed release object.
Out of scope
- Monero itself,
monero-wallet-rpc,monerod, and stock wallets. Report those upstream (Monero's own disclosure process). If sigelo uses them unsafely, that is in scope. - Stagenet or testnet coins: they have no value; a bug that moves them is still in scope.
- Things THREAT-MODEL.md §3 already says sigelo does not defend: Sybil, lying issuers, collusion rings, the operator behind an agent, signer-asserted timestamps.
- Social engineering of the maintainer, and denial of service against infrastructure that sigelo does not need (the site, the MCP endpoint: verification is offline by design).
What to expect
- Acknowledgement within 72 hours.
- A fix, or a public advisory saying why there is none, within 90 days. Sooner if it is exploited or trivially exploitable.
- Credit in the advisory and CHANGELOG under the name you choose, or none.
- No bounty until there is funding for one. That will be announced here, not promised.
Safe harbour
Good-faith research on your own keys, identities, keepers and wallets, on stagenet or testnet, is welcome and will not be pursued in any way. Do not touch other people's keepers, tokens, wallets or identities, do not spend coins that are not yours, and do not publish before the 90 days are up or a fix ships, whichever comes first, unless we agree otherwise. If you are unsure whether something is in bounds, ask first through any channel above.
A live keeper compromise
If you run a keeper and believe its host, a token or spend.key is compromised, act first:
follow INCIDENT.md (stop, sweep to the vault, recovery-rotate, report). Report to us
afterwards if you suspect a sigelo bug caused it, with the preserved spend.log (it holds no
secrets; it names destinations, amounts and purposes, so redact what you must). Never send
spend.key, a token, a seed or the 25 words to anyone, including us.
Known unaudited areas
Nothing here has been reviewed by anyone outside the project; every review so far was done by Claude models. External review targets, in priority order (ROADMAP §5.4):
go/jcs.go,ts/src/jcs.ts— canonicalisation and the strict parser.go/sigelo.go,ts/src/sigelo.ts§9 — chain walk, precedence, forks, cycles, discard.go/monero.go,ts/src/monero.ts— Keccak, base58, point decoding, SigV2, subaddresses.ts/src/keys.ts,go/keys.go— HKDF paths,sc_reduce32, the 25-word mnemonic.ts/src/ceremony.ts,ts/src/offline.ts— secret handling, age invocation.spend/service.ts,approval.ts,tree.ts,policy.ts— the keeper.
The keeper is experimental and stagenet-only until this list is reviewed.