Docs / Core conceptsCrypto-shredding and deletion: the state machine behind “delete this user”
Deleting a user isn't one action — it's a staged lifecycle with individually tracked outcomes at every step, because a real deletion touches more than one system and “trust me, it worked” isn't good enough for a compliance claim.
Why a state machine, not a single callDeletion is staged on purpose
Requesting a deletion kicks off a lifecycle with six possible states, not an instant delete. That's deliberate: real user data usually spans more than the warehouse — connected SaaS tools, source tables you've opted into redacting — and each of those has to individually confirm it actually cleaned up before Chameleon will claim the deletion is complete.
The key is destroyed immediately and synchronously, before anything else runs. Everything after that is the cascade: Chameleon working through every other system that might hold a copy, recording each outcome individually rather than assuming success.
The happy pathFive stages, in order
A deletion request moves through these states in sequence. The certificate is only ever issued from the last one — nothing earlier is good enough.
01 / Shred requestedA deletion request is created for a user. Nothing has happened yet — this just starts the lifecycle.
02 / Key destroyedThe user's encryption key is erased. This is synchronous and happens first, before any downstream cleanup — see below for exactly what “destroyed” means here.
03 / Cascade pendingChameleon works through every other system that might hold this user's data — connected SaaS tools, and any source table you've opted into redacting — and identifies what needs cleaning up.
04 / Cascade completeEvery downstream destination has individually confirmed its cleanup succeeded. A deletion request only reaches this state if nothing failed.
05 / Certificate issuedA signed Certificate of Destruction is generated. This is the only state a certificate can come from — it's the proof that everything, not just the key, is actually accounted for.
When a downstream cleanup fails
If any destination in the cascade reports a failure, the request lands in Cascade Partial Failure instead of Cascade Complete — and the certificate is withheld until that failure is resolved. A certificate is a claim that everything succeeded; issuing one while a cleanup is still outstanding would make it false, so Chameleon simply doesn't.
What “key destroyed” actually meansA precise, honest claim — not a KMS-level guarantee
“Key destroyed” means the user's key material was erased from the key registry — a synchronous operation that completes in the same request that triggered it. It is not a Cloud KMS key-version destruction, which carries a mandatory multi-hour scheduling window before it actually takes effect. Waiting on that window would make an immediate “complete” misleading, so Chameleon doesn't rely on it for this guarantee.
Every certificate states its key-destruction method explicitly as key-material erasure, precisely so it can never be misread as a stronger KMS-level claim it isn't making. The infrastructure-level key that wraps each user's key is never destroyed — only that specific user's key material is, which is exactly what makes their data (and only their data) unrecoverable.
Source redactionWhat happens to the source table you declared
Coverage claims are deliberately conservative
A deletion's lineage coverage reports exactly which destinations were actually checked — never an implied claim that every system a user's data ever touched was inventoried. Similarly, if a ghost-data scan hasn't run for a given cleanup, that's stated explicitly rather than left ambiguous — an empty findings list is never presented as “confirmed scanned, nothing found” unless a scan genuinely ran.
FAQCommon questions
Can a deletion be undone?
No. Key destruction is the point of no return — once a user's key material is erased, every copy of their data that was encrypted with it becomes permanently unreadable. This is intentional: it's what makes the deletion mathematically certain rather than dependent on finding and removing every copy by hand.
What happens if a SaaS connector (like a CRM) is temporarily down during deletion?
That destination reports a failure, the request lands in Cascade Partial Failure, and the certificate is withheld until it's resolved. The key itself is already destroyed at that point, so the user's core data is already unrecoverable — the partial-failure state just means the SaaS-side cleanup still needs to complete before Chameleon will certify the whole deletion as done.
Why isn't row deletion enough on its own?
Row deletes in most warehouses don't actually remove the data immediately — time-travel windows, fail-safe retention, and snapshot/clone features can all leave recoverable copies behind for days. Destroying the encryption key makes every copy unreadable at once, regardless of how many snapshots or clones exist.
Keep readingHow the signed, hash-chained Certificate of Destruction is generated and independently verified.
How resources get declared, and where source-redaction strategies are configured.
All available developer documentation.