From 48fb2b84bace0b28c75d9c99d86501ceba22229e Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Wed, 16 Sep 2026 21:42:03 +0200 Subject: [PATCH] refac: derive a forked chat's folder from the caller's write access (#30069) A fork copied the source chat's folder id unchanged. It now keeps that folder only when the caller has write access to it, matching what chat creation and chat moves already do, and is created outside any folder otherwise. --- backend/open_webui/routers/chats.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/routers/chats.py b/backend/open_webui/routers/chats.py index 61019662de..13cf13605b 100644 --- a/backend/open_webui/routers/chats.py +++ b/backend/open_webui/routers/chats.py @@ -1732,10 +1732,15 @@ async def fork_chat_by_id( 'forked_from_message_id': source_message_id, } + # The source chat's folder may no longer be writable by the caller. + folder_id = chat.folder_id + if folder_id is not None and not await has_folder_write_access(user.id, folder_id, db=db): + folder_id = None + fork = await Chats.insert_new_chat( str(uuid4()), user.id, - ChatForm(chat=updated_chat, folder_id=chat.folder_id), + ChatForm(chat=updated_chat, folder_id=folder_id), db=db, internal_meta=meta, )