Skip to content

v0.8.8-rc1

Pre-release
Pre-release

Choose a tag to compare

@danny-avila danny-avila released this 14 Aug 07:33
eaef87f

https://www.librechat.ai/changelog/v0.8.8-rc1

🏞️ Highlights

  • Interrupt or steer Agent runs in progress, or queue the next message
  • Agents can ask up to four related questions in one form, pause for input or approval, then resume
  • Redesigned Agent Builder with a unified Tools marketplace and background tools
  • Experimental Agent Plugins with deployment Skills, MCP servers, and opt-in command hooks
  • Activity groups, parent phase summaries, and live tool intent labels
  • Experimental stateful Code Interpreter sessions with reusable conversation workspaces
  • Agent-managed memory with optional per-agent isolation
  • Stable shared-link updates, active-link badges, and personal copies
  • Fullscreen artifact previews and Mermaid SVG/PNG export
  • In-app Langfuse connections, tenant fanout, and admin session links
  • Unified message layouts, multi-part response editing, and full-message copy
  • Smooth text fade-in, adaptive streaming, and live MCP tool-catalog refresh
  • Stronger SSRF guards for speech, OCR, and web tools
  • Provider updates: GPT-5.6, Claude Opus 5 and Sonnet 5, Gemini 3.7 and 3.6 Flash, and Gemini 3.5 Flash-Lite

Click to expand Release Notes

✨ Features

🐛 Fixes

  • 🔑 fix: Honor User-Provided MCP API Key Instead of Forcing OAuth by @danny-avila in #13954
  • 🪙 fix: Count Quote Tokens on Message Edit by @danny-avila in #13958
  • 📋 fix: Route Clipboard Paste Through Upload Options by @dustinhealy in #13957
  • 📇 fix: Index sharedlinks updatedAt for Cosmos DB Sorts by @danny-avila in #13979
  • 📂 fix: Mount Skill Files Under skills/ in Code Interpreter by @danny-avila in #13961 and #13975
  • 🪟 fix: Re-measure Sidebar Chat List on Width Change to Fix Date-Group Spacing by @danny-avila in #13981
  • 📏 fix: Make create_file Missing-Content Error Truncation-Aware by @danny-avila in #14043
  • fix: use logAxiosError at the RAG file_search/context call sites by @mawburn in #14014
  • fix: stripHeavyErrorFields Winston format (defense-in-depth) by @mawburn in #14018
  • 📥 fix: Download Original File From Artifact Preview Panel for Office Documents by @berry-13 in #14026
  • 🔥 fix: Firebase CDN Initialization Under tsdown CJS Interop by @jakacenta in #14046
  • fix: preserve role SHARE permissions across boot in initializeRoles by @mawburn in #14022
  • fix: bound peak memory of concurrent base64 attachment encoding by @mawburn in #14023
  • 📧 fix: Add .eml (message/rfc822) Support to File Upload by @Zirkonium88 in #13989
  • 🚪 fix: Support Admin Redirect Detection for Same-Origin Subpaths by @arjunvijay24 in #14040
  • 🩹 fix: Coerce Stringified edit_file Edits (JSON-in-JSON) by @danny-avila in #14056
  • 🧠 fix: Apply Bedrock thinking config to bare inference-profile model IDs by @danny-avila in #14054
  • 🧠 fix: Default Bedrock thinking maxTokens to model max output by @danny-avila in #14058
  • fix: stop the artifact-edit retry loop on unrecoverable 400s by @mawburn in #14060
  • 🎣 fix: Surface Resumable Stream Start Errors by @danny-avila in #14072
  • 🧯 fix: Harden Principals Cache Invalidation and Lock-Wait Paths by @danny-avila in #14120
  • 🏁 fix: Ignore Finalized SSE Transport Errors by @danny-avila in #14114
  • fix: fall back to _id for user id in createSafeUser by @mawburn in #14083
  • 🌏 fix: guard IME composition on Enter in prompt name/labels and dynamic tag inputs by @mahirhir in #13996
  • 🗄️ fix: Return Cached Transaction-Support Value on Cache Hit by @Osamaali313 in #13999
  • 🧠 fix: Format Reasoning Exports by @danny-avila in #14116
  • 🧮 fix: Prevent String Corruption of Numeric Agent Model Parameters by @danny-avila in #14119
  • 🧢 fix: Raise Claude Sonnet 4.6 Output Cap by @danny-avila in #14115
  • 🧵 fix: Preserve Fenced Markdown Artifacts by @danny-avila in #14121
  • 🔒 fix: Prevent Role Grants on Shared Links by @danny-avila in #14137
  • 🤐 fix: Exclude Provider Secrets from HITL Pending Actions by @danny-avila in #14136
  • ⏳ fix: Defer MCP Connection for Request-Scoped Placeholders on Reinitialize by @danny-avila in #14148
  • 🧷 fix: Align Agent File Attachment Ownership by @danny-avila in #14149
  • 🧊 fix: Include Conversation Starters in Agent View and List Responses by @serhiizghama in #14142
  • ♊ fix: Resolve Local JSON Pointer Refs & Sanitize Tool Search Schema for Gemini by @usnavy13 in #14161
  • 🛡️ fix: Guard HITL checkpoint size against MongoDB 16MB limit by @danny-avila in #14157
  • 🔡 fix: Normalize Email Case When Issuing Verification Tokens by @VictorEPlus in #14172
  • 🪜 fix: Apply Recursion Limit Config to Subagents by @danny-avila in #14185
  • 💂 fix: Enforce ALLOW_EMAIL_LOGIN on the Backend Login Route by @lurkerCha in #14180
  • 🧩 fix: Allow compatibility Field in Skill Frontmatter by @danny-avila in #14189
  • 📎 fix: Translate Finite supportedMimeTypes Allowlists to Picker Accept by @danny-avila in #14186
  • 🪆 fix: Serve Nested Skill Files Through a Wildcard Route by @danny-avila in #14191
  • 🃏 fix: Attach Request-Scoped MCP Servers From the Builder via the mcp_all Wildcard by @adamscross04 in #14177
  • 🔍 fix: Sync Conversation Title Updates to MeiliSearch by @danny-avila in #14223
  • 👻 fix: Guard Redis Stream Resume Against Disposed HITL Graph by @danny-avila in #14258
  • 🤝 fix: Discover MCP OAuth Exchange Methods by @danny-avila in #14256
  • 👋 fix: Terminate Streamable HTTP MCP Sessions on Teardown by @danny-avila in #14252
  • 🗂️ fix: Route read_file Through the Stateful Code Session by @danny-avila in #14259
  • 💭 fix: Default GPT-5.6 Reasoning Requests to Responses API by @jomspk in #14232
  • 🔖 fix: Preserve Ephemeral Agent Params and Identity for ask_user_question Resume by @jjhidalgar-celonis in #14254
  • 🎫 fix: Strip Reserved Fields From Bedrock additionalModelRequestFields by @danny-avila in #14246
  • 📱 fix: Single-Tap Select for Pinned Agents, Model Specs & Models on Touch by @danny-avila in #14272
  • 🧽 fix: Clear Deleted Chats From Message Cache by @danny-avila in #14270
  • 🧟 fix: Prevent Drained Steer From Re-Queuing After Run-End Race by @danny-avila in #14276
  • 🙋 fix: Await ask_user_question Tool Factory in loadTools by @danny-avila in #14291
  • 🧷 fix: Flush Pending File Deletion on Unmount by @danny-avila in #14293
  • 🙋 fix: Stop Answered ask_user_question Card From Reopening Its Popover by @danny-avila in #14297
  • 🔒 fix: Scope, Cap, and De-Execute the In-Flight Steer Stack by @danny-avila in #14310
  • 📱 fix: Don't Connect the Favorites Drag Source on Touch Pointers by @danny-avila in #14312
  • 🧵 fix: Harden Request-Scoped MCP Lifecycle by @danny-avila in #14342
  • 🪆 fix: Build RAG-API Chart Before Parent to Bundle PostgreSQL Dependency by @Aho-Bakaa in #14262
  • 🚪 fix: Keep Owners From Being Locked Out of Their Own Resource When Sharing by @danny-avila in #14347
  • 🚏 fix: Route Admin-Configured Document Types to RAG /text on Agent Upload by @danny-avila in #14345
  • 🎟️ fix: Claim Idempotency Keys to Dedup Retried Generation Requests and Prevent Double Billing by @danny-avila in #14344
  • 🧠 fix: Restore Agent Memory Scope Control in Unified Builder by @danny-avila in #14292
  • 🛟 fix: Keep File Uploads Alive With SSE Heartbeats by @MarcAmick in #14295
  • 🧩 fix: Preserve Deployment Skill IDs on Agents by @danny-avila in #14368
  • 🧭 fix: Keep Message Nav Chevrons Working on In-Thread Steers by @danny-avila in #14377
  • 🤐 fix: Withhold MCP OAuth Headers From Untrusted Preconfigured Discovery by @danny-avila in #14379
  • 🔗 fix: Preserve resource owner access when sharing (key share diff by stable id) by @jomspk in #14317
  • 🪆 fix: Preserve Nested Subagent Delegation by @danny-avila in #14392
  • ✋ fix: Enable Submit on First Tool-Approval Decision by @danny-avila in #14393
  • 🎞️ fix: Surface Clear Error for Unprocessable Gemini YouTube Videos by @danny-avila in #14396
  • 📌 fix: Pin Scroll-to-Bottom Rib in Message Nav by @danny-avila in #14397
  • 🫙 fix: Preserve Loaded Message Content When Resume Snapshot Is Empty by @danny-avila in #14399
  • 🎯 fix: Correct Off-by-One Rail Scrub After Pinning the Terminus by @danny-avila in #14409
  • ♾️ fix: Preserve Resumable Stream Ordering Across Turns by @danny-avila in #14411
  • 🧩 fix: Harden Agent Skill Lifecycles End to End by @danny-avila in #14429
  • 📧 fix: Restore invite-user CLI by @unsnow-iac in #14436
  • 🔗 fix: Resolve MCP Tool-Key Boundary Against Configured Server Names by @danny-avila in #14448
  • 🍃 fix: Strip $-Prefixed Schema Keywords Before Persisting MCP Tool Params by @danny-avila in #14464
  • 🔗 fix: Render Shared Links Containing Steers by @danny-avila in #14480
  • 🔒 fix: Bound /files/usage TTL Hold Instead of Clearing It by @danny-avila in #14470
  • 🤏 fix: Filter Admin Config Reads by Section-Scoped Read Capability by @dustinhealy in #14472
  • 🍃 fix: Amazon DocumentDB Compatibility for Pipeline-Form Updates by @danny-avila in #14495
  • 🛡️ fix: validate message feedback payloads by @upman in #14500
  • 🧩 fix: Apply Every Entry of Multi-Part Stream Deltas by @danny-avila in #14502
  • 🏷️ fix: Re-attribute Agent Content After In-Thread Steers by @danny-avila in #14497
  • 🎯 fix: Keep Run Steps and Labels in One Index Space After a Resume Sync by @danny-avila in #14516
  • 🪶 fix: Yield Soft Default Model Spec to Agent Picks in Picker-Only Deployments by @danny-avila in #14515
  • 🪟 fix: Surface MCP Initialization Errors by @danny-avila in #14529
  • 🪃 fix: Resolve User Vars Before the First Post-OAuth Reconnect by @schumajs in #14538
  • 🔒 fix: Remove Owner Email from Agent owner_contact Fallback by @danny-avila in #14541
  • 📄 fix: Filter Non-PDF Documents on the Anthropic Encode Path by @danny-avila in #14535
  • 🎯 fix: Exact Ask-Question Attribution via Interrupt tool_call_id by @danny-avila in #14539
  • 🧹 fix: Clean Up MCP OAuth State Mappings on Uninstall + Reject Superseded Callbacks by @danny-avila in #14549
  • 🧠 fix: Preserve Deferred Tool Schemas Across HITL Resume by @danny-avila in #14552
  • 🦗 fix: Ignore Sequenced Redis Events Without SSE Subscribers by @danny-avila in #14557
  • 🔗 fix: Normalize MCP Tool Keys at Every Producer, Resolve Raw Names via Aliases by @danny-avila in #14553
  • 🏢 fix: Preserve Tenant Context for Partial Response Saves on Disconnect by @danny-avila in #14567
  • 🦗 fix: Deliver Abort Acknowledgements on Zero-Subscriber Replicas by @danny-avila in #14569
  • 🏷️ fix: Skip Title Generation for Preempt-Incomplete Turns by @danny-avila in #14571
  • 🪧 fix: Guard Admin OAuth Routes When Providers Are Not Configured by @cyphercodes in #14507
  • 🔗 fix: Resolve Relative Skill Markdown Links by @berry-13 in #14586
  • 🧭 fix: Drop v6-Only MemoryRouter future Prop from Skill Markdown Spec by @danny-avila in #14588
  • 🪪 fix: Strip Unresolved Header Placeholders at Final Resolution by @danny-avila in #14595
  • 🔒 fix: Single-Flight MCP OAuth Token Refresh per User/Server by @danny-avila in #14596
  • 🪺 fix: Keep Preempt-Abandoned Siblings Nested, Make Message Tree Order-Robust by @danny-avila in #14587
  • ⌨️ fix: Honor defaultPrevented in Global Shortcut Dispatch by @danny-avila in #14570
  • 🪢 fix: Bind MCP OAuth Secrets to Trusted Endpoints by @danny-avila in #14578
  • ⚓ fix: Bind Action Servers to Metadata Ports by @danny-avila in #14575
  • 🧱 fix: Enforce Agent Runtime File Trust Boundaries by @danny-avila in #14577
  • 📏 fix: Scope Skill Command Query to Text Before the Caret by @danny-avila in #14604
  • 🧬 fix: Resolve URL-Named Model Spec to Its Full Preset on Cold Load by @danny-avila in #14610
  • ✂️ fix: Truncate Overflowing Activity and Intent Labels in Chat UI by @danny-avila in #14607
  • 🚦 fix: Bound, Single-Flight, and Retry Skill File Priming Uploads by @danny-avila in #14611
  • 🧹 fix: Exclude Mongo ID From Conversation Updates by @danny-avila in #14631
  • ♿️ a11y: improve keyboard operability, focus retention, and accessible naming by @berry-13 in #14600
  • 🚏 fix: Localized Guidance for Model-Not-Found Errors by @danny-avila in 557c22d102
  • 🛡️ fix: Run message-filter PII patterns on a linear-time regex engine (ReDoS) by @dustinhealy in #14554
  • 🪢 fix: disable central fanout media uploads for langfuse by @upman in #14642
  • 🧭 fix: Fail Closed When Expected MCP Tools Are Unavailable by @danny-avila in #14646
  • 🛂 fix: Honor Claude Document Limits Through Inference Gateways by @danny-avila in #14650
  • 🎟️ fix: Reconcile MCP OAuth Readiness Across Pods by @danny-avila in #14629
  • 🌊 fix: Preserve Custom Endpoint streamRate When endpoints.all Is Defined by @danny-avila in #14645
  • 🔐 fix: Preserve Structured JWT Auth Context by @danny-avila in #14652
  • ⏱️ fix: Compile admin file-config MIME patterns on a linear-time engine (ReDoS) by @dustinhealy in #14555
  • 🛡️ fix: SSRF-Guard Speech (STT/TTS) and OCR Outbound Requests at Connect Time by @dustinhealy in #14560
  • 🔁 fix: Re-Arm Soft Default When a Stored Agent No Longer Resolves by @danny-avila in #14664
  • 🔗 fix: Prevent duplicate share rows from clobbering pending role edits (dedupe adds by stable id) by @jomspk in #14655
  • 🛟 fix: Stop Agents When Code Resources Cannot Recover by @danny-avila in #14651
  • ♿ fix: Restore WCAG AA Contrast for Text Tokens & Hide Edit Action While Streaming by @danny-avila in #14677
  • 🩹 fix: Keep Edit Action Fully Hidden While Streaming by @danny-avila in #14687
  • 📡 fix: Refresh MCP Tools After List-Changed Notifications by @danny-avila in #14686
  • 🧬 fix: Rebind Request Context After Remote Agent Auth by @danny-avila in #14685
  • 🧭 fix: Make MCP Catalog Redis Cluster-Safe by @danny-avila in #14717
  • 🧬 fix: Normalize Legacy MCP Null Headers by @danny-avila in #14720
  • 📁 fix: Consistent Export Filenames Across Formats by @lidonius1122 in #14708
  • 🧷 fix: Safely Recover Runtime MCP OAuth Rejections by @danny-avila in #14684
  • 🪆 fix: Rebase Activity Phase Bounds over Sparse Content by @danny-avila in #14729
  • 📎 fix: Re-enable Send After File Upload by @danny-avila in #14727
  • 📸 fix: Guard Screenshot Export Against Main-Thread Freezes by @danny-avila in #14733
  • 🔐 fix: Preserve Plugin MCP Provenance Through Registry Storage by @danny-avila in #14744
  • 🧭 fix: Re-Anchor Parent Activity Phase Bounds by @danny-avila in #14741
  • 🧷 fix: Preserve Elicitation Answers Across Aborts by @danny-avila in #14745
  • 📡 fix: Preserve Redis Abort Terminal Delivery by @danny-avila in #14749
  • ⌨️ fix: allow file upload shortcut when editing by @likeabas in #14764
  • 🛟 fix: Isolate Invalid Skills During GitHub Sync by @berry-13 in #14735
  • 🎙️ fix: Align Speech Engine Configuration With Runtime by @berry-13 in #14736
  • 🧩 fix: Normalize Malformed MCP Required Schemas by @danny-avila in #14771
  • 🧾 fix: Honor Disabled Transactions on the Token-Count Fallback Path by @jtodaroii in #14774
  • 🛰️ fix: Attach Request-Scoped MCP Servers by @danny-avila in #14780
  • 📱 fix: Show Quote Popup for Block Selections and on Touch Devices by @danny-avila in #14777
  • 🪑 fix: Rebase Activity Phase Bounds Onto Compacted Content and Unskip the MCPManager Suite by @danny-avila in #14782
  • 🔖 fix: Split Activity Phases at Substantial Text by @danny-avila in #14785
  • 🖌️ style: Use correct text colour for answer textarea in dark mode by @lizzykerrigan in #14791
  • 🩹 fix: Restore the @librechat/api Build and Remove Legacy Code by @danny-avila in #14808
  • 🩹 fix: apply agent updates that match the newest version entry by @mihidumh in #14810
  • 💬 style: Right-Align In-Flight Steer Bubbles to the Message UI by @danny-avila in #14814
  • 🔌 fix: Preserve MCP serverInstructions Declaration Through Inspection by @danny-avila in #14815
  • 🔌 fix: Recover Quietly From Stale MCP SSE Stream Conflicts by @danny-avila in #14816
  • 📎 fix: Alias Shell Script MIME Variants to application/x-sh by @danny-avila in #14817

🔧 Refactoring and Performance

  • ♻️ refactor: Compute Context Gauge Client-Side, Drop Projection Endpoint by @danny-avila in #13953
  • 🪣 refactor: Rate-Limit Token Routes and Cap Remote File Downloads by @danny-avila in #13978
  • 🦥 perf: Lazy-Load Agent Version History in Editor by @danny-avila in #13977
  • 🛗 perf: Fetch Pinned Agents Directly Past the Global Agents Map by @danny-avila in #13972
  • ⚡ perf: memoize FavoritesList and BookmarkNav to prevent re-renders during streaming by @berry-13 in #14011
  • 🗺️ refactor: Light Up In-Viewport Ribs at Rest in Message Nav by @danny-avila in #14041
  • ⚡ perf: Minimize group membership query in principal resolution by @danny-avila in #14055
  • ⚡ perf: Skip Role Route Capability Probe for Own and Default Roles by @danny-avila in #14073
  • 🪭 refactor: safe structured failure logging for langfuse fanout gateway by @upman in #14050
  • 📉 perf: Skip Redundant Permission Queries on MCP Servers List by @danny-avila in #14077
  • ⚡ perf: Persist HITL checkpoints only on pause (lazy checkpointer) by @danny-avila in #14024
  • 🗃️ perf: Cache Group Memberships for ACL Principal Resolution by @danny-avila in #14075
  • ⚙️ perf: reduce first-load MongoDB round trips by @upman in #14101
  • 🎯 style: Center Scroll-to-Bottom Rib in Message Nav Rail by @danny-avila in #14151
  • 📉 perf: cache OpenID JWT user documents by @upman in #14187
  • 📉 perf: start message queries before file map loads by @upman in #14188
  • 🪜 style: Adjust rib dimensions and button sizes in MessageNav by @danny-avila in #14234
  • 🪜 style: Center scroll-to-bottom marker in MessageNav by @danny-avila in #14238
  • 🛞 style: Reveal the Steered "?" on Message Hover/Focus by @danny-avila in #14271
  • 🙊 refactor: Clarify Ask Question Schema Errors and Retry Guidance by @danny-avila in #14279
  • 💬 refactor: Anchor In-Flight Steers Above the Composer by @danny-avila in #14308
  • ⚡ perf: Halve Per-Delta Redis Round Trips in Resumable Streams by @danny-avila in #14313
  • 🧭 refactor: web_search Description on When To Search vs Answer Directly by @joshbla in #13930
  • 🧷 perf: Stabilize Mutation-Dependent Memos in Chat Hooks by @danny-avila in #14328
  • 🚰 perf: Suppress No-Op Conversation Writes and Widen-Proof Atom Subscriptions by @danny-avila in #14329
  • 🔍 refactor: Surface primary OpenID JWT failure reason in auth failure log by @danny-avila in #14346
  • 🧭 perf: Warm Conversation Switches with Single-Navigation Focus Intent by @danny-avila in #14334
  • 🧹 perf: Share Voices Store, Gate Timestamp Ticker, Stabilize Greeting Springs by @danny-avila in #14335
  • 🎞️ perf: Coalesce Streaming Delta Cache Writes Per Animation Frame by @danny-avila in #14332
  • 🎛️ perf: Narrow Composer Subscriptions to Streaming State by @danny-avila in #14333
  • 🧬 perf: Memoize Message Spine and Isolate Scroll-Button State by @danny-avila in #14330
  • 🪟 perf: Virtualize Search Results and Stop the Per-Query Remount by @danny-avila in #14352
  • ⚡ perf: Reduce Agent Chat Startup Latency by @danny-avila in #14423
  • 💬 refactor: Raise ask_user_question Option Label Cap to 280 Chars by @danny-avila in #14491
  • 🪢 refactor: Move Agent Execution Seam Before Initialization by @danny-avila in #14581
  • 📉 perf: Bound Early Event Buffering for Detached Generations by @danny-avila in #14612
  • 🎨 refactor: adopt the @librechat/client design system (semantic color tokens + component migration) by @berry-13 in #13879
  • 🧩 refactor: Shared UI Design System Tokens by @danny-avila in #14670
  • ⚡ perf: Agent List and Model Selector at Scale by @berry-13 in #14601
  • 🧭 refactor: make the side panels behave the same way by @berry-13 in #14695
  • 🫧 refactor: Fading Pre-Response Dot, Legacy Cursor CSS Removed by @danny-avila in #14772
  • 🧱 refactor: Require Broad Config Management for Base Field Mutations by @danny-avila in #14775
  • 🖍️ refactor: Typed Console Colors and Hardened Script Helpers by @danny-avila in #14778
  • 🧱 refactor: Make Activity Phase Anchor Construction Exhaustive by @danny-avila in #14805
  • 🧭 refactor: Resolve Activity Phase Position Once Per Boundary by @danny-avila in #14807

🧪 Tests

📦 Dependencies, Chores & CI

🌍 Internationalization

New Contributors

Full Changelog: v0.8.7...v0.8.8-rc1