From d5a130b785e9cf50d9f20a6a69830dac11c23186 Mon Sep 17 00:00:00 2001 From: Frederik Berg <83548283+frederikb96@users.noreply.github.com> Date: Sat, 18 Oct 2025 23:17:03 +0200 Subject: [PATCH] Fix memory deletion not removing from vector store (#3610) --- openmemory/api/app/mcp_server.py | 2 +- openmemory/api/app/routers/memories.py | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/openmemory/api/app/mcp_server.py b/openmemory/api/app/mcp_server.py index ab31c7707..41564b703 100644 --- a/openmemory/api/app/mcp_server.py +++ b/openmemory/api/app/mcp_server.py @@ -314,7 +314,7 @@ async def delete_all_memories() -> str: # delete the accessible memories only for memory_id in accessible_memory_ids: try: - memory_client.delete(memory_id) + memory_client.delete(str(memory_id)) except Exception as delete_error: logging.warning(f"Failed to delete memory {memory_id} from vector store: {delete_error}") diff --git a/openmemory/api/app/routers/memories.py b/openmemory/api/app/routers/memories.py index 0a4029f78..d4714395d 100644 --- a/openmemory/api/app/routers/memories.py +++ b/openmemory/api/app/routers/memories.py @@ -360,8 +360,32 @@ async def delete_memories( if not user: raise HTTPException(status_code=404, detail="User not found") + # Get memory client to delete from vector store + try: + memory_client = get_memory_client() + if not memory_client: + raise HTTPException( + status_code=503, + detail="Memory client is not available" + ) + except HTTPException: + raise + except Exception as client_error: + logging.error(f"Memory client initialization failed: {client_error}") + raise HTTPException( + status_code=503, + detail=f"Memory service unavailable: {str(client_error)}" + ) + + # Delete from vector store then mark as deleted in database for memory_id in request.memory_ids: + try: + memory_client.delete(str(memory_id)) + except Exception as delete_error: + logging.warning(f"Failed to delete memory {memory_id} from vector store: {delete_error}") + update_memory_state(db, memory_id, MemoryState.deleted, user.id) + return {"message": f"Successfully deleted {len(request.memory_ids)} memories"}