Is your feature request related to a specific problem?
BaseSessionService has delete_session and BaseArtifactService has delete_artifact, but BaseMemoryService only has add_session_to_memory, add_events_to_memory, add_memory and search_memory. Once something is written to memory there is no way to remove it through ADK.
This comes up when a user asks for their data to be deleted. Sessions and artifacts I can handle. Whatever was extracted into long-term memory I cannot, so I end up going around ADK and deleting straight from the backing store.
Most of the pieces are already there. MemoryEntry has an id field, and the Vertex API has projects.locations.reasoningEngines.memories.delete. VertexAiMemoryBankService just doesn't wrap it. It only uses memories.create, memories.generate and memories.ingest_events.
Describe the Solution You'd Like
Two methods on BaseMemoryService:
async def delete_memory(self, *, app_name: str, user_id: str, memory_id: str) -> None
async def delete_memories(self, *, app_name: str, user_id: str) -> None
First one deletes a single entry, second one everything stored for a user.
For VertexAiMemoryBankService both map onto memories.delete. InMemoryMemoryService keeps a dict so it's easy. Implementations that can't support it could raise NotImplementedError.
Impact on your work
I'm building agents for users in the EU, where a deletion request has to be answered within a month. Right now the memory part of that is a manual step outside ADK, and it's the part I can't show was actually done.
Willingness to contribute
Yes, happy to open a PR if you're OK with the method names and signatures.
Describe Alternatives You've Considered
Deleting from the backing store directly. It works but it's different for every implementation and bypasses ADK completely. The other option is not using MemoryService at all.
Version
google-adk 2.8.0
Is your feature request related to a specific problem?
BaseSessionServicehasdelete_sessionandBaseArtifactServicehasdelete_artifact, butBaseMemoryServiceonly hasadd_session_to_memory,add_events_to_memory,add_memoryandsearch_memory. Once something is written to memory there is no way to remove it through ADK.This comes up when a user asks for their data to be deleted. Sessions and artifacts I can handle. Whatever was extracted into long-term memory I cannot, so I end up going around ADK and deleting straight from the backing store.
Most of the pieces are already there.
MemoryEntryhas anidfield, and the Vertex API hasprojects.locations.reasoningEngines.memories.delete.VertexAiMemoryBankServicejust doesn't wrap it. It only usesmemories.create,memories.generateandmemories.ingest_events.Describe the Solution You'd Like
Two methods on
BaseMemoryService:First one deletes a single entry, second one everything stored for a user.
For
VertexAiMemoryBankServiceboth map ontomemories.delete.InMemoryMemoryServicekeeps a dict so it's easy. Implementations that can't support it could raiseNotImplementedError.Impact on your work
I'm building agents for users in the EU, where a deletion request has to be answered within a month. Right now the memory part of that is a manual step outside ADK, and it's the part I can't show was actually done.
Willingness to contribute
Yes, happy to open a PR if you're OK with the method names and signatures.
Describe Alternatives You've Considered
Deleting from the backing store directly. It works but it's different for every implementation and bypasses ADK completely. The other option is not using MemoryService at all.
Version
google-adk 2.8.0