LibreChat/packages
Marco Beretta ff2842d0dd
fix: reject non-string tag and conversationId in forced-retention helpers
The bookmark-tag and conversation ids passed to the forced-retention
helpers come from untyped request bodies, so a crafted PUT /api/tags
body like {"tag": {"$gt": ""}} reached Conversation.find({ tags }) as a
query operator and matched every tagged conversation instead of one,
bulk-converting them under ephemeral retention (NoSQL operator
injection). The same applied to req.body.conversationId on POST.

Guard applyForcedRetention and applyForcedRetentionToTag to ignore any
non-string conversationId/messageId/tag, and pass a guaranteed string
from the tag rename route.
2026-06-24 15:43:46 +02:00
..
api fix: cap shared-link expiry at source conversation and enforce retention on assistant saves 2026-06-23 16:40:57 +02:00
client 🏷️ chore: Bump Individual Package Versions (#13891) 2026-06-22 09:54:19 -04:00
data-provider feat: add ephemeral retention mode for forced temporary chats 2026-06-23 16:40:21 +02:00
data-schemas fix: reject non-string tag and conversationId in forced-retention helpers 2026-06-24 15:43:46 +02:00