Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
← Back to changelog

⚙️ Config v1.3.16

v1.3.16
  • Added beta Agent Management API configuration

    • endpoints.agents.managementApi.auth.oidc configures the trusted issuer, audience, and optional JWKS URL for machine-to-machine access
    • endpoints.agents.managementApi.auth.clients binds allowed OAuth clients to a LibreChat user and optional tenant
    • Management requests retain the bound user's role, ACL, capability, ownership, and tenant checks
  • Expanded highly experimental stateful Code session configuration

    • endpoints.agents.statefulCodeSessions.principalWorkers.enabled controls personal worker enrollment and defaults to true
    • principalWorkers.maxPerUser defaults to 5; deployment configuration is a hard ceiling and tenant or role overrides may only reduce it
    • Setting the limit to 0, or disabling principal workers, prevents new enrollment without removing existing workers
    • Attached workspaces now support bounded tree listing, file reads, text search, file authoring, Bash execution, and per-Agent Git identity
    • These environments remain highly experimental and may change substantially
  • Added conversation-level Code approval modes

    • Users can choose Ask before changes, Accept edits, or Full access when permitted by deployment policy
    • Full access is available only when both file writing and command execution allow it, and does not bypass sandbox, endpoint, role, hook, or Skill confirmation controls
  • Added Agent attachment context limits

    • fileConfig.fileContextSizeLimit caps aggregate model-bound attachment bytes and defaults to 134217728 (128 MiB)
    • fileConfig.fileContextCharLimit caps aggregate extracted text and defaults to 1000000 characters
    • fileConfig.endpoints.agents.fileLimit caps the number of files attached to an Agent request
  • Added OpenTelemetry log export

    • OTEL_LOGS_ENABLED enables log export independently of trace export; OTEL_SDK_DISABLED disables both
    • OTEL_LOGS_LEVEL defaults to info
    • OTEL_LOGS_EXPORTER, OTEL_EXPORTER_OTLP_PROTOCOL, and OTEL_EXPORTER_OTLP_LOGS_ENDPOINT configure the exporter and destination
  • Added configurable Langfuse trace identity and metadata

    • langfuse.trace.userIdField selects the internal ID, email, username, or OpenID ID used for Langfuse trace identity
    • userMetadataFields and conversationMetadataFields explicitly allowlist additional trace metadata
    • Existing internal user IDs remain the default and no additional metadata is exported unless configured
  • Added shared-link read throttling and audit scoring

    • SHARE_IP_MAX and SHARE_IP_WINDOW configure the IP bucket, defaulting to 100 reads per minute
    • SHARE_USER_MAX and SHARE_USER_WINDOW configure the authenticated-user bucket, defaulting to 60 reads per minute
    • SHARE_VIOLATION_SCORE controls the violation score added for rejected reads and defaults to 0
  • Added Redis connection health controls

    • REDIS_PING_TIMEOUT bounds heartbeat PING calls and defaults to 5000 ms
    • REDIS_SUBSCRIBER_PING_INTERVAL detects silent subscriber socket failures and defaults to 15000 ms
    • REDIS_KEEP_ALIVE configures the TCP keepalive delay and defaults to 10000 ms
  • Updated OpenID-backed MCP authentication

    • Trusted YAML-defined servers can pass the live upstream token with Authorization: "Bearer {{LIBRECHAT_OPENID_ACCESS_TOKEN}}"
    • Explicit MCP OAuth, on-behalf-of exchange, and administrator API-key authentication take precedence
    • A rejected bearer can refresh the connection once, but LibreChat never automatically replays the rejected tool call
  • Updated built-in provider configuration

    • Added gpt-6-astra to the default OpenAI model catalog
    • GPT-6 Astra uses the Responses API, omits unsupported sampling parameters, and supports a 1,050,000-token context window with up to 128,000 output tokens
  • Updated configuration examples

    • Removed the retired Helicone and Portkey examples
  • Added unified attachment routing and lazy tool provisioning

    • fileConfig.defaultLLMDeliveryPath controls whether unmatched and MIME-specific uploads use native provider delivery, extracted text, or tool-only storage
    • Configure fallback plus exact or wildcard overrides; endpoint settings take precedence over global settings
    • Without explicit overrides, images, audio, video, and PDFs prefer provider delivery while other recoverable content uses extracted text
    • Unsupported native paths fall back to text when extraction is available, or remain available only to tools otherwise
    • File Search and Code resources are provisioned only when the selected tools need eligible attachments
    • fileConfig.legacyFileUploadUX: true restores the previous destination chooser and eager, user-selected routing globally or for an endpoint
  • Added MCP foreground refresh controls

    • interface.mcpServers.toolsRefreshInterval controls visible tool-catalog polling and defaults to 300000 ms
    • interface.mcpServers.statusRefreshInterval controls visible connection-status polling and defaults to 30000 ms
    • Set either value to 0 to disable that polling loop
  • Added MCP catalog recovery controls under mcpSettings.catalogRecovery

    • Passive OAuth discovery now uses bounded, coalesced backoff instead of retrying on every catalog request
    • Configure discovery and reauthentication delays, credential-generation read deadlines, in-memory state bounds, and durable authorization-fence retries
    • Defaults are documented in the MCP Settings reference
    • discoverySettleGraceMs defaults to 10000 ms and lets a timed-out discovery settle without being cancelled
    • maxDetachedDiscoveries defaults to 3 and bounds still-settling discoveries before new recovery work waits
  • Added run-scoped Subagent file sharing

    • endpoints.agents.fileSharing.enabled defaults to false; each delegating Agent must also opt in with subagents.shareFiles
    • Inputs are read-only to recipients; outputs remain private unless explicitly published
    • allowSiblingSharing, maxFiles, maxPrivateBytes, and ttlMs bound recipient scope, manifest capacity, retained private outputs, and active lifetime
  • Added Conversation Trace Viewer configuration

    • interface.traceViewer.enabled defaults to false and requires a Langfuse release with the v2 Observations API
    • showInputOutput defaults to false; enabling it can reveal prompts, Agent instructions, and tool definitions in trace records
    • maxRecords, maxContentLength, requestsPerMinute, and requestTimeoutMs bound trace reads
  • Added CODE_ENVIRONMENT_DECISION_VERSION=1

    • Advertises immutable conversation-owned Code-environment decisions
    • Enable it only after every LibreChat API replica supports protocol version 1
  • Added Agent Code API recovery and attached-command limits

    • endpoints.agents.codeApiUploadConcurrency defaults to 3 concurrent uploads per route and authenticated principal
    • endpoints.agents.codeApiMaxRetryWaitMs defaults to 20000 ms of total rate-limit waiting per operation
    • statefulCodeSessions.environments[].configSchema.limits.maxCommandTimeoutMs exposes a model-requestable attached Bash timeout; omission preserves 30 seconds and the hard ceiling is 300 seconds
  • Added optional ordinary background-tool cancellation

    • endpoints.agents.backgroundTasks.ordinaryToolCancellation defaults to false
    • When enabled, owners can cooperatively cancel ordinary background tools, including attached Bash; detached Subagents keep their independent lifecycle
  • Added Scheduled Chat MCP admission limits

    • interface.schedules.admissionConcurrency defaults to 20 readiness admissions per replica
    • interface.schedules.mcpPreflightConcurrency defaults to 3 MCP readiness connections per admission
    • interface.schedules.mcpPreflightTimeoutMs defaults to 300000 ms
  • Blank MONGO_AUTO_INDEX and MONGO_AUTO_CREATE values now use Mongoose defaults instead of disabling automatic index or collection creation

  • Added separate regular-chat retention

    • interface.generalChatRetention controls regular conversation retention under retentionMode: "all"
    • It accepts 1 to 8760 hours and falls back to temporaryChatRetention when omitted
    • Temporary and regular chat policies are evaluated independently
    • Changing retention settings does not rewrite deadlines already stored on existing records
  • Added tenant index upgrade commands

    • npm run migrate:tenant-indexes:dry-run reports the planned index changes
    • npm run migrate:tenant-indexes applies the upgrade migration
    • Follow the Tenant Index Migration guide before restarting database writers
  • Updated the config version to 1.3.16