turiya ·
scope a pilot

We rotated our signing root on 8 October 2026

This is the notice, and it is dated on purpose. If you hold one of our receipts, read the section at the bottom first: nothing you hold has stopped verifying.

What happened

Our signing keys come in two: a master that certifies other keys and stays offline, and an everyday key that signs receipts. Our own ceremony says the master never goes near a networked machine.

On 8 October 2026 an audit found that the master's private key had been set as an environment variable on a small public serverless function of ours, with no authentication. It had been there since about 7 September and was signing certificates for anyone who sent it a request. The function was deployed once and never referenced from this site or from any document. We deleted it the same day.

What it was not

The private key was never returned in a response. Those responses carry the certificate, which contains the public half only. No private key of ours has ever been committed to a repository, and the master's file is on no disk here. This is a custody failure: the key was somewhere it should not have been. We could not show that it stayed private, so we stopped relying on it.

What we did

We generated a new master and a new everyday key with the network off, and moved the master straight to offline media. The new identity is 1a47e1d8610b6d12, certifying everyday key d3afa1cc80ef7dbc until 8 October 2027.

We also fixed the thing that made this worse than a one-off. Our key repository published a single root and promised every receipt carried it, which would break on the first rotation, before any of this. It now publishes every root we have ever claimed, one file each, so a receipt signed under either identity keeps verifying without anyone having to trust a newer one over an older one.

What this means for a receipt you hold

  • Nothing was re-signed. A signed record is never edited to fix a key problem. Every receipt issued before 8 October still carries the key that signed it and still verifies.
  • Both roots stay published. The old root is not disowned. We saw no evidence it left our control, and declaring honest records untrustworthy would cost more than it buys.
  • Receipts issued after this date carry the new root, and verify the same way.

You can check both claims yourself. Every receipt embeds its public key and its certifying root, and the key repository publishes every root we have claimed, in a history that cannot be quietly rewritten.

Written 8 October 2026. If you find something wrong with this page, write to hello@turiyahq.com . A correction is published, not applied silently.

← all receipts what a receipt can pin