From 6aa4d311705e192152d5054023d0f6c7b89f0933 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Sun, 15 Mar 2026 15:32:41 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20make=20DELETE=20idempotent=20=E2=80=94?= =?UTF-8?q?=20return=20200=20for=20already-deleted=20memories?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Old sync clients without 404 handling get stuck in infinite retry loops when trying to delete an already-deleted memory. Making the endpoint idempotent (returning success regardless) fixes this for all existing clients without requiring client upgrades. --- src/claude_memory/api/app.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/claude_memory/api/app.py b/src/claude_memory/api/app.py index 15bd2c1..5b3a173 100644 --- a/src/claude_memory/api/app.py +++ b/src/claude_memory/api/app.py @@ -260,7 +260,9 @@ async def delete_memory(memory_id: int, user: AuthUser = Depends(get_current_use user.user_id, ) if not row: - raise HTTPException(status_code=404, detail="Memory not found") + # Idempotent: return success even if already deleted + # Prevents old clients without 404-handling from infinite retry loops + return {"deleted": memory_id, "preview": "[already deleted]"} if row["vault_path"]: await delete_secret(user.user_id, row["vault_path"])