The wipe API

public void wipeUser(String userId) {
  jdbc.update("DELETE FROM adk_sessions WHERE user_id = ?", userId);
  // CASCADE handles messages, events, tasks
  vectorStore.deleteByFilter(Filter.eq("user_id", userId));
  cacheEvictAll(userId);
}
Advertisement

What actually needs to go

Message content, extracted PII, embeddings derived from their data, cached prompts, logs mentioning them. Aggregate metrics that don't identify them can stay.

Advertisement

Log scrubbing

Even production logs may contain user content. Design log-writing to hash user IDs and never emit prompt content.