Skip to content

Bug: Account deletion does not purge data from all storage backends (GDPR risk) #5088

Description

@omi-discord-vector

Bug: Account deletion does not fully delete user data (potential GDPR violation)

Priority: High — data retention policy does not match actual behavior; potential breach of European data laws.

Problem

The app states that deleting your account removes all data. However, after deleting and re-registering, all conversations, memories, app subscriptions, and other data are still present and fully accessible.

Root Cause

backend/database/users.py::delete_user_data() only deletes Firestore subcollections (conversations, messages, chat_sessions, people, memories, files) and the user document. It does NOT delete:

  1. Vector embeddings (Pinecone) — delete_vector() and delete_memory_vector() in backend/database/vector_db.py are never called during account deletion
  2. Audio recordings in cloud storage — no storage bucket cleanup
  3. Typesense search index entries — no index cleanup
  4. Analytics dataanalytics collection entries referencing the user are retained
  5. Subscription data — appears to persist across account deletion

Additionally, if the user re-registers with the same authentication method, they may receive the same Firebase UID, which would reconnect them to any data that wasn't properly purged.

Expected Behavior

Account deletion should remove all user data across all storage backends:

  • Firestore documents (currently done)
  • Pinecone vector embeddings
  • Cloud storage (audio recordings, speech samples)
  • Typesense search index
  • Analytics data
  • Any cached/derived data

Regulatory Impact

The app's in-app statement that account deletion removes all data may not comply with:

  • GDPR (EU) — Right to erasure (Article 17)
  • CCPA (California) — Right to delete

If data is retained after a user explicitly requests deletion, this is a compliance risk.

Suggested Fix

Update delete_user_data() or the /v1/users/delete-account endpoint to also:

# Delete vector embeddings
vector_db.delete_vectors_for_user(uid)

# Delete audio recordings from cloud storage
storage.delete_user_recordings(uid)

# Delete Typesense index entries
search.delete_user_conversations(uid)

# Delete analytics data
delete_user_analytics(uid)

Questions for the user

  • Did you re-register with the same email/auth method?
  • Which platform (iOS/Android)?
  • How long between deletion and re-registration?

Reported by community member on Discord.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingmaintainerLane: High-risk, cross-system changesmemoryLayer: Memory creation, syncing, storagep3Priority: Backlog (score <14)

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions