⚙️ Config v1.3.13
-
Added
interface.sharedLinks- Allows shared-link permissions to be bootstrapped from
librechat.yaml - Supports either a boolean or granular
create,share, andpublicpermissions publiccontrols whether authenticated users can share links with everyone; anonymous access remains controlled byALLOW_SHARED_LINKS_PUBLIC
- Allows shared-link permissions to be bootstrapped from
-
Added
interface.mcpServers.configureObo- Seeds the permission required to configure MCP On-Behalf-Of token exchange
- Applies to the
MCP_SERVERS.CONFIGURE_OBOrole permission
-
Added
mcpServers.<server>.obo- Allows
sseandstreamable-httpMCP servers to exchange the current user's OpenID token for a delegated downstream token - Requires a non-empty
scopesvalue
- Allows
-
Added
mcpServers.<server>.customUserVars.<key>.sensitive- Controls whether a user-provided MCP variable is treated as a secret in the UI
- Defaults to masked/secret behavior when omitted
-
Added plugin
authConfig[].sensitive- Controls whether plugin authentication fields render as secret inputs
- Defaults to masked/secret behavior when omitted
-
Updated MCP OAuth URL handling
- YAML-defined OAuth URL fields now resolve
${ENV_VAR}values before URL validation - User-submitted MCP OAuth endpoint URLs reject
${ENV_VAR}placeholders so server environment variables remain admin-controlled
- YAML-defined OAuth URL fields now resolve
-
Added MCP OAuth timeout environment variables
MCP_OAUTH_HANDLING_TIMEOUTcontrols how long LibreChat waits for a user to complete an MCP OAuth flowMCP_OAUTH_FLOW_TTLcontrols OAuth flow-state retention and is clamped to outlive the handling timeout- The MCP server-card polling window now follows the server-configured OAuth timeout
-
Added
OTEL_IOREDIS_TRACING_ENABLED- Enables Redis command-level OpenTelemetry spans when backend tracing is enabled
- Defaults to disabled so normal backend traces stay high-level and avoid noisy Redis spans
-
Updated authenticated RUM proxy behavior
- RUM proxy auth now drops invalid or expired browser telemetry with
204instead of returning API auth errors - RUM proxy outcomes are counted with
rum_proxy_requests_totalbyendpointandresult
- RUM proxy auth now drops invalid or expired browser telemetry with
-
Added
interface.retainAgentFiles- Allows persistent agent resource files to be exempted from
retentionMode: "all" - Non-agent files and message attachments still expire according to the configured retention policy
- Allows persistent agent resource files to be exempted from
-
Added endpoint
titleTimingimmediategenerates titles as soon as the request starts, in parallel with the model responsefinalkeeps the legacy behavior and waits for the full response before title generation- Can be set per endpoint or globally under
endpoints.all
-
Added
endpoints.agents.skills.maxCatalogSkills- Caps the number of active accessible skills exposed in the model-visible skill catalog
-
Added
memory.maxInputTokens- Caps the number of recent-chat tokens sent to the automatic memory agent
- Defaults to
12000 - Long memory-agent inputs are truncated from the beginning so the newest context is preserved
-
Added
endpoints.custom[].customParams.reasoningFormat- Controls how OpenAI-compatible custom endpoints receive reasoning parameters
- Supports
reasoning_effort,reasoning_object, anddisabled
-
Added
endpoints.custom[].customParams.reasoningKey- Controls which response key is read for provider reasoning content
- Supports
reasoningandreasoning_content
-
Updated
endpoints.custom[].headersmodel-fetch behavior- Header templates are now resolved and forwarded to
models.fetchrequests when the endpoint base URL is admin-controlled - A configured
Authorizationheader takes precedence over the endpointapiKeyBearer fallback - Header templates are not forwarded when
baseURL: "user_provided"is configured
- Header templates are now resolved and forwarded to
-
Added built-in endpoint
headersendpoints.openAI.headers,endpoints.anthropic.headers, andendpoints.google.headersforward custom request headers to provider calls while preserving native provider request shapesendpoints.all.headerscan set global headers, with endpoint-specific headers winning on key collisions- Values support
${ENV_VAR},{{LIBRECHAT_USER_*}}, and request body placeholders such as{{LIBRECHAT_BODY_CONVERSATIONID}} - Provider-managed auth and required protocol headers remain authoritative, and admin-configured headers are withheld when a user controls the destination base URL
-
Added
endpoints.custom[].provider- Currently supports
provider: anthropic - Routes that custom endpoint through the native Anthropic
/v1/messagesclient instead of the default OpenAI-compatible client - Uses the custom endpoint's
baseURL,apiKey,headers,addParams,dropParams, andcustomParams.paramDefinitions - Implies the Anthropic parameter set for the UI unless
customParams.defaultParamsEndpointis explicitly set to another value - Native Anthropic custom endpoints should list models explicitly under
models.default; OpenAI-style model auto-fetch is not used for this provider
- Currently supports
-
Added
modelSpecs.list[].softDefault- Selects a model spec for first-time users without overriding later user selections
-
Added
modelSpecs.list[].skills- Enables, disables, or allowlists Skills for a model spec
-
Added
modelSpecs.list[].subagents- Enables or disables Subagents for ephemeral agents created from a model spec
- Supports
enabled,allowSelf, and a private server-sideagent_idsallowlist agent_idsis capped by the sharedMAX_SUBAGENTSlimit and is removed from startup config sent to clients- Client-supplied Subagent configuration is rejected; model-spec values remain server-controlled
-
Added
modelSpecs.list[].showOnLanding- Shows the model spec's
labelanddescriptionon the chat landing in place of the default greeting - Existing model specs are unchanged unless
showOnLanding: trueis set
- Shows the model spec's
-
Added
modelSpecs.list[].conversation_starters- Defines curated starter prompts shown on the chat landing when the model spec is selected
- Works with model-spec landing branding so admins can pair a spec label, description, and suggested first prompts
-
Updated
modelSpecs.list[].description- Plain text descriptions still render in the model selector
- Descriptions that start with
<render through the config HTML sanitizer so admins can include safe inline markup and media in model selector items and landing branding
-
Added
interface.contextUsage- Controls whether the real-time context window and token usage gauge is shown in the conversation UI
- Defaults to
true
-
Added
interface.contextCost- Controls whether usage cost is shown with context and token usage details
- Defaults to
false; set totrueto show usage costs in the UI
-
Added
interface.currency- Converts displayed usage costs from USD into another currency with
codeand positiverate - Example:
currency: { code: EUR, rate: 0.92 }
- Converts displayed usage costs from USD into another currency with
-
Added
endpoints.custom[].tokenConfig- Defines per-model context windows and per-million-token rates for custom endpoints
- Supports
prompt,completion,context, and optionalcacheReadandcacheWritevalues for each model name - Used by real-time context tracking, visible usage/cost breakdowns, and multi-endpoint agent billing
- Token-config cache entries are scoped by user when endpoint models, keys, URLs, or headers can vary by request context
-
Updated context usage after summarization
- Persisted context usage now records a summary baseline marker after compaction
- Reloaded conversations use the compacted summary baseline plus post-summary turns instead of re-summing discarded pre-summary history
- The usage/cost walk still keeps cumulative spend across the full branch
-
Added
skillSync.github- Mirrors Skills from GitHub repositories into LibreChat
- Supports scheduled syncs with
enabled,intervalMinutes,runOnStartup, andsources - Each source supports
id,owner,repo,ref,paths,skillDiscoveryDepth,credentialKey,token - Sources must provide exactly one credential reference: either
credentialKeyfor a stored admin credential ortokenas an environment variable reference like${GITHUB_SKILLS_TOKEN} skillDiscoveryDepthdefaults to2and is capped at10intervalMinutesdefaults to60and must be at least5- Sync status responses are only shown to authorized admins
-
Added
messageFilter.pii- Rejects submitted text that matches credential-shaped starter patterns or operator-defined regex patterns before it reaches the model or persistence
- The LibreChat chat route checks submitted user text; OpenAI-compatible Chat Completions and Responses requests scan text content across all caller-supplied message roles
- Starter pattern ids are
sk_prefix,bearer_header, andapi_key_header - Custom patterns support
id,label, and a JavaScript regex string
-
Updated
OPENID_AUDIENCE- Comma-separated values are accepted for JWT audience validation
- Authorization requests send the first non-empty audience value so providers that reject multi-value
audienceparameters still receive a single audience
-
Updated MCP runtime placeholders
{{LIBRECHAT_BODY_*}}placeholders create request-scoped MCP connections that are reused for the current run and cleaned up when the request ends- Request-scoped MCP servers are excluded from the persistent tool cache so request-specific headers and URLs are not reused outside the active run
- Cleanup is tied to resumable run completion so reconnects and resumed streams keep request-scoped MCP resources alive until the run finishes
{{LIBRECHAT_USER_*}},{{LIBRECHAT_OPENID_*}}, and{{LIBRECHAT_GRAPH_*}}placeholders still require user-scoped connections, but HTTP transports refresh resolved headers before each tool call without forcing a reconnect by themselves
-
Updated outbound proxy environment handling
PROXYapplies to both HTTP and HTTPS targets for supported server-side clients- When
PROXYis unset, supported clients honorHTTP_PROXY,HTTPS_PROXY, andNO_PROXY/no_proxy - OpenID requests honor
NO_PROXYeven whenPROXYis configured
-
Added
ENABLE_STATIC_ASSET_BROTLI- Enables serving precompressed
.brstatic app assets when available - When enabled, Brotli is preferred before gzip for API-served static files
- Enables serving precompressed
-
Updated the config version to
1.3.13