Skip to main content
Mnemom supports GDPR Article 17 (right to erasure) through a documented, auditable deletion cascade. When a deletion request is issued, the agent is immediately inaccessible and an automated cascade removes agent-identifiable data from Mnemom’s data stores, with cryptographic and regulatory audit trails preserved.
This document describes the technical deletion mechanism. It does not constitute legal advice. Consult qualified legal counsel for your specific GDPR obligations as a data controller or processor.

Requesting deletion

Agent-level deletion

Response: 202 Accepted
The status value progresses through the cascade phases documented in Cascade phase breakdown below. Initial state after the 202 is tombstoned (the agent is immediately inaccessible — all read endpoints return 404); the deletion-status endpoint below reports progress through the remaining phases. The agent is immediately inaccessible — all read endpoints return 404 after the request is accepted. Data deletion proceeds asynchronously across all stores. An owner or admin of the org that governs the agent can delete it, and so can the agent’s creator while they are still a member of that org. Another member of the org gets 403; a caller outside the org gets 404, the same answer as an agent that doesn’t exist. The same rule applies to tombstoning and restoring an agent.

Org-level deletion

Only the org’s owner can call this. Unlike agent deletion, org deletion does not cascade to the org’s agents — it is refused with 409 Conflict until every blocker is cleared:
  • Every agent in the org must already be deleted (or tombstoned).
  • The org must have no active subscription.
  • The org must have no remaining API keys.
Once those are clear, the call revokes the org’s API keys, deletes the org record, and returns 200 OK with { "deleted": true }.
Deleting an org does not delete its agents. To fully erase an org’s data, delete each agent first (above), then delete the org.

Checking deletion status

Returns the current phase and completion status of the deletion cascade. Any member of the agent’s org can read it. After the cascade has removed the agent itself, only the person who requested the deletion or a member of the org recorded on the request can read it. Everyone else gets 404, the same answer as when no deletion was requested.

Idempotency

Repeated DELETE requests for the same agent return 202 with the existing deletion request. The operation is safe to retry.

What gets deleted

Fully removed (hard delete)

All agent-specific data is permanently deleted from Mnemom’s primary database:

Retained under a legal carve-out (Article 17(3))

A small number of record types are not deleted or pseudonymized — they are kept exactly as-is because deleting them would conflict with another legal obligation:

Pseudonymized (person stripped, record retained)

Two record types are scrubbed of agent- and person-identifying fields but kept for audit purposes:

Naturally expiring (external stores)

Mnemom’s own OpenTelemetry spans (distinct from the traces database rows removed in phase 7 above) are exported to the observability backend and age out under that platform’s own retention window, independent of the deletion cascade.

On-chain anchors

Mnemom anchors aggregate Merkle roots to Base L2 for tamper-evidence (see On-Chain Verification). These on-chain records are immutable by design. However, agent identifiers do not appear in any on-chain data. The Merkle leaf pre-images contain only checkpoint-specific fields (checkpoint ID, verdict, thinking block hash, chain hash, timestamp). Deleting the off-chain mapping tables permanently severs the link between an agent and any on-chain anchor.

Deletion timeline

Deletion is irreversible. Once a deletion request completes, the agent and all associated data cannot be recovered. Ensure you have exported any needed data before requesting deletion.

Cascade phase breakdown

Each deletion request transitions through a fixed sequence of status values as the cascade progresses. Use GET /v1/agents/{agent_id}/deletion-status to observe the current phase.

Retained in pseudonymized form

When the status transitions to pseudonymized, the records listed under Pseudonymized (person stripped, record retained) above have had agent and person identifiers replaced with a one-way hash. The pseudonym is irreversible — no re-identification from retained records is possible. See Legal basis for retained data below for the applicable Article 17(3) carve-outs.

Data export (access & portability)

Before deleting an agent, you can export its full compliance record — checkpoints, reclassification history, card amendments, and score history:
Supports format=json or format=csv, and an optional from/to time window. This is the self-service path for the GDPR right of access (Art. 15) and data portability (Art. 20) — export before you erase.

Verification

After deletion completes, you can verify:
  1. API verification: GET /v1/agents/{agent_id} returns 404.
  2. Status verification: GET /v1/agents/{agent_id}/deletion-status returns { "status": "complete", "completed_at": "..." }.
  3. Audit trail: The deletion request record is retained indefinitely as proof of compliance (Art. 30 record of processing activities).
GDPR Article 17(3) permits continued processing where erasure conflicts with other legal obligations:

For data protection officers

If you are an enterprise customer’s DPO conducting a compliance review:
  • Technical specification: Full deletion cascade architecture documentation is available on request, including the complete table inventory, FK cascade analysis, retention carve-outs with legal citations, and partial failure handling.
  • Response time SLA: Tombstoning (agent inaccessible from every read endpoint) is immediate — under 1 second. The full cascade to complete is monitored internally against a 2-hour SLA, well inside the GDPR “without undue delay” obligation (Art. 17(1)); an interrupted cascade is automatically resumed by a cron sweep every 15 minutes.
  • Audit evidence: Every deletion request is logged in deletion_requests with timestamps, status transitions, and the requesting user’s identity.
  • Scope confirmation: To confirm that all agent data has been removed, request a deletion status check — the response confirms cascade completion across all stores.