Interface Object Structure
Overview
The interface object allows for customization of various user interface elements within the application, including visibility and behavior settings for components such as menus, panels, and links. This section provides a detailed breakdown of the interface object structure.
These are fields under interface:
mcpServersprivacyPolicytermsOfServicemodelSelectparameterscontextUsagecontextCostcurrencypresetspromptsbookmarksmemoriesmultiConvoagentsremoteAgentsskillssharedLinkstemporaryChattemporaryChatRetentionretentionModeretainAgentFilesautoSubmitFromUrlcustomWelcomerunCodewebSearchfileSearchfileCitationspeoplePickermarketplace
Notes:
- The
interfaceconfigurations are applied globally within the application. - Default values are provided for most settings but can be overridden based on specific requirements or conditions.
- Conditional logic in the application can further modify these settings based on other configurations like model specifications.
Deprecated: permission side-effect fields
Several fields below (mcpServers, prompts, bookmarks, memories, multiConvo, agents, remoteAgents, skills, sharedLinks, temporaryChat, runCode, webSearch, fileSearch, fileCitations, peoplePicker, marketplace) don't just toggle UI, they seed role permissions in the database at startup, and only for the built-in USER role.
For ongoing management, use the LibreChat Admin Panel, which edits the permission matrix directly on each role (including custom roles). These YAML fields remain supported for bootstrapping a fresh instance or fully file-driven deployments, but should no longer be used as the primary way to manage feature permissions.
See Access Control for the full permission model.
Example
mcpServers
Deprecated for permission management. The
use,create,share, andpublicsub-keys seed role permissions at startup. Prefer the Admin Panel for managing MCP server permissions per role/group/user. TheplaceholderandtrustCheckboxsub-keys are unaffected.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| mcpServers | Object | Contains settings related to the MCP (Model Context Protocol) server selection interface and access control. | Allows for customization of the placeholder text, user permissions, and trust checkbox labels. |
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| placeholder | String | The placeholder text displayed in the MCP server selection dropdown when no server is selected. | MCP Servers |
| use | Boolean | Controls whether users have permission to use existing MCP servers. | true |
| create | Boolean | Controls whether users have permission to create new MCP servers. | true |
| share | Boolean | Controls whether users have permission to share MCP servers with other users. | false |
| public | Boolean | Controls whether users can share MCP servers publicly (visible to all users). | false |
| configureObo | Boolean | Controls whether users have permission to configure MCP server On-Behalf-Of token exchange. | false |
| trustCheckbox | Object | Customizable labels for the trust checkbox in the MCP server dialog. Supports simple strings or language-keyed objects for internationalization. | See below |
trustCheckbox Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| label | String or Object | The main label for the trust checkbox. Can be a simple string or a language-keyed object (e.g., { en: "I trust this server", es: "ConfÃo en este servidor" }). | |
| subLabel | String or Object | The sub-label (help text) for the trust checkbox. Can be a simple string or a language-keyed object for internationalization. |
Example:
privacyPolicy
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| privacyPolicy | Object | Contains settings related to the privacy policy link provided in the user interface. | Allows for the specification of a custom URL and the option to open it in a new tab. |
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| externalUrl | String (URL) | The URL pointing to the privacy policy document. | |
| openNewTab | Boolean | Specifies whether the link should open in a new tab. |
termsOfService
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| termsOfService | Object | Contains settings related to the terms of service link provided in the user interface. | Allows for the specification of a custom URL and the option to open it in a new tab, as well as a modal acceptance dialog for the terms of service. |
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| externalUrl | String (URL) | The URL pointing to the terms of service document. | https://librechat.ai/tos |
| openNewTab | Boolean | Specifies whether the link should open in a new tab. | true |
| modalAcceptance | Boolean | Specifies whether to show a modal terms and conditions dialog for users to accept in order to be able to use LibreChat. | true |
| modalTitle | String | Specifies a custom title for the modal terms and conditions dialog (optional). | Terms of Service |
| modalContent | String | Specifies the content of the modal terms and conditions dialog in MarkDown format. | See librechat.yaml.example for how to correctly format the multi-line parameter. |
modelSelect
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| modelSelect | Boolean | Determines whether the model selection feature is available in the UI. | Enabling this feature allows users to select different models directly from the interface. |
Default: true
Notes:
- This is required to be
trueif usingmodelSpecs.addedEndpoints. - If
modelSpecs.addedEndpointsis used andinterface.modelSelectis not explicitly set, it defaults totrue.
Example:
parameters
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| parameters | Boolean | Toggles the visibility of parameter configuration options within the interface. | This setting is crucial for users who need to adjust parameters for specific functionalities within the application. |
Default: true
Example:
contextUsage
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| contextUsage | Boolean | Shows or hides the real-time context window and token usage gauge in the conversation UI. | When disabled, users will not see the context usage indicator for chats. |
Default: true
Example:
contextCost
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| contextCost | Boolean | Shows or hides cost values in context and token usage details. | When disabled, users can still see token usage if contextUsage is enabled, but cost values are hidden. |
Default: false
Notes:
- Set
contextCost: trueto opt in to visible cost values. Token usage can remain visible throughcontextUsagewhile cost values stay hidden. currencyonly affects displayed costs when cost display is enabled.
Example:
currency
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| currency | Object | Converts displayed usage costs from USD to another currency using a static conversion rate. | Set code to the display currency and rate to a positive conversion multiplier from USD. |
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| code | String | Currency code shown in usage/cost displays. | USD |
| rate | Number | Positive multiplier applied to USD usage costs. | 1 |
Example:
presets
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| presets | Boolean | Enables or disables the use of presets in the application's UI. | Presets can simplify user interactions by providing pre-configured settings or operations, enhancing user experience and efficiency. |
Default: true
Example:
prompts
Deprecated for permission management. Seeds the
PROMPTSrole permissions at startup for the defaultUSERrole only. Prefer the Admin Panel for managing prompt permissions per role/group/user.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| prompts | Boolean or Object | Controls prompt-related features for all users. Can be a boolean for simple enable/disable, or an object for granular control over use, creation, sharing, and public visibility. | When set to `false`, users will not have access to create, edit, or use custom prompts. |
Default: true
Important: Boolean vs Object Configuration
-
Boolean (
prompts: true): Only updates theusepermission. Existingcreate,share, andpublicpermission values are preserved from the database. Use this as a simple feature toggle without affecting other settings configured through the admin panel. -
Object: Updates only the sub-permissions that are explicitly specified. Any permissions not included in the config are preserved from the database.
When using the object structure:
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| use | Boolean | Controls whether users can use prompts. | true |
| create | Boolean | Controls whether users can create new prompts. | true |
| share | Boolean | Controls whether users can share prompts with specific users/groups. | false |
| public | Boolean | Controls whether users can share prompts publicly (visible to all users). | false |
Example (boolean - simple feature toggle):
Example (object - granular control):
Example (object - full control):
bookmarks
Deprecated for permission management. Seeds the
BOOKMARKSrole permission at startup for the defaultUSERrole only. Prefer the Admin Panel.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| bookmarks | Boolean | Enables or disables all bookmarks-related features for all users. | When disabled, users will not be able to create, manage, or access bookmarks within the application. |
Default: true
Example:
memories
Deprecated for permission management. Seeds the
MEMORIESrole permissions at startup for the defaultUSERrole only. Prefer the Admin Panel. Note this toggle is separate from thememorybehavior configuration.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| memories | Boolean | Enables or disables the memories feature for all users in the interface. | When disabled, users will not have access to the memories panel or memory-related features. |
Default: true
Note: This controls the UI visibility of the memories feature. For detailed memory behavior configuration (token limits, personalization, agent settings), see the Memory Configuration.
Example:
multiConvo
Deprecated for permission management. Seeds the
MULTI_CONVOrole permission at startup for the defaultUSERrole only. Prefer the Admin Panel.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| multiConvo | Boolean | Enables or disables all "multiConvo", AKA multiple response streaming, related features for all users. | When disabled, users will not be able to stream responses from 2 AI models at the same time. |
Default: true
Example:
agents
More info on Agents
Deprecated for permission management. Seeds the
AGENTSrole permissions at startup for the defaultUSERrole only. Prefer the Admin Panel for managing agent permissions per role/group/user.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| agents | Boolean or Object | Controls agent-related features for all users. Can be a boolean for simple enable/disable, or an object for granular control over use, creation, sharing, and public visibility. | When set to `false`, users will not have access to agents. |
Default: true
Important: Boolean vs Object Configuration
-
Boolean (
agents: true): Only updates theusepermission. Existingcreate,share, andpublicpermission values are preserved from the database. Use this as a simple feature toggle without affecting other settings configured through the admin panel. -
Object: Updates only the sub-permissions that are explicitly specified. Any permissions not included in the config are preserved from the database.
When using the object structure:
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| use | Boolean | Controls whether users can use agents. | true |
| create | Boolean | Controls whether users can create new agents. | true |
| share | Boolean | Controls whether users can share agents with specific users/groups. | false |
| public | Boolean | Controls whether users can share agents publicly (visible to all users). | false |
Example (boolean - simple feature toggle):
Example (object - granular control):
Example (object - full control):
remoteAgents
Controls access to the Agents API (OpenAI-compatible and Open Responses API endpoints), which allows external applications to interact with LibreChat agents programmatically via API keys.
Deprecated for permission management. Seeds the
REMOTE_AGENTSrole permissions at startup for the defaultUSERrole only. Prefer the Admin Panel.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| remoteAgents | Object | Configuration for remote agent API access control. All fields default to `false`. |
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| use | Boolean | Controls whether users can access the remote agents API. | false |
| create | Boolean | Controls whether users can create API keys for remote agents. | false |
| share | Boolean | Controls whether users can share remote agents. | false |
| public | Boolean | Controls whether users can share remote agents publicly. | false |
Default: All fields default to false (disabled).
Example:
Note: Admin users have all remote agent permissions enabled by default regardless of this configuration.
skills
Deprecated for permission management. Seeds the
SKILLSrole permissions at startup for the defaultUSERrole only. Prefer the Admin Panel for managing Skills permissions per role/group/user.defaultActiveOnShareis not a permission bit and remains a YAML behavior setting.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| skills | Boolean or Object | Controls Skills-related permissions and shared-skill activation defaults. Can be a boolean for simple enable/disable, or an object for granular control. | When set to `false`, users cannot use, create, or share Skills. |
Default: true for use and create, false for share, public, and defaultActiveOnShare.
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| use | Boolean | Controls whether users can use Skills. | true |
| create | Boolean | Controls whether users can create Skills. | true |
| share | Boolean | Controls whether users can share Skills with specific users/groups. | false |
| public | Boolean | Controls whether users can share Skills publicly (visible to all users). | false |
| defaultActiveOnShare | Boolean | Controls whether shared Skills default to active for recipients until they override the setting. | false |
Example:
For Skills behavior and invocation modes, see Skills.
sharedLinks
Deprecated for permission management. Seeds the
SHARED_LINKSrole permissions at startup for the defaultUSERrole only. Prefer the Admin Panel for managing shared-link permissions per role/group/user.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| sharedLinks | Boolean or Object | Controls shared-link permissions. Can be a boolean to enable/disable all shared-link permissions, or an object for granular create/share/public control. | When set to `false`, users cannot create or share conversation links. |
Default: create: true, share: true, public: true
Important: Boolean vs Object Configuration
- Boolean (
sharedLinks: true): Enables allSHARED_LINKSpermissions for the defaultUSERrole. - Boolean (
sharedLinks: false): Disables allSHARED_LINKSpermissions for the defaultUSERrole. - Object: Updates only the sub-permissions that are explicitly specified. Any permissions not included in the config are preserved from the database.
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| create | Boolean | Controls whether users can create shared conversation links. | true |
| share | Boolean | Controls whether users can share links with authenticated users. | true |
| public | Boolean | Controls whether users can toggle "share with everyone" for a shared link. Anonymous viewing still requires ALLOW_SHARED_LINKS_PUBLIC=true. | true |
Example:
For user-facing shared-link behavior, see Shareable Links.
temporaryChat
Controls whether the temporary chat feature is available to users. Temporary chats are not saved to conversation history and are automatically deleted after a configurable retention period.
Deprecated for permission management. Seeds the
TEMPORARY_CHATrole permission at startup for the defaultUSERrole only. Prefer the Admin Panel.temporaryChatRetentionbelow is not a permission and remains the recommended way to configure retention.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| temporaryChat | Boolean | Enables or disables the temporary chat feature. | When set to `false`, users will not see the option to start temporary chats. |
Default: true
Note: The retention period for temporary chats can be configured using temporaryChatRetention.
Example:
temporaryChatRetention
The temporaryChatRetention configuration allows you to customize how long temporary chats are retained before being automatically deleted.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| temporaryChatRetention | Number | Sets the retention period for temporary chats in hours. | temporaryChatRetention: 168 |
Validation Rules:
- Minimum: 1 hour (prevents immediate deletion)
- Maximum: 8760 hours (1 year maximum retention)
- Default: 720 hours (30 days)
Configuration Methods:
- LibreChat.yaml (recommended):
interface.temporaryChatRetention: 168 - Environment Variable (deprecated):
TEMP_CHAT_RETENTION_HOURS=168
Note: The environment variable
TEMP_CHAT_RETENTION_HOURSis deprecated. Please use theinterface.temporaryChatRetentionconfig option inlibrechat.yamlinstead. The config file value takes precedence over the environment variable.
Example:
Common Retention Periods:
- 1 hour:
temporaryChatRetention: 1(minimal retention) - 24 hours:
temporaryChatRetention: 24(1 day) - 168 hours:
temporaryChatRetention: 168(1 week) - 720 hours:
temporaryChatRetention: 720(30 days - default) - 8760 hours:
temporaryChatRetention: 8760(1 year - maximum)
retentionMode
Controls which data receives retention deadlines.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| retentionMode | String | Set to "temporary" to apply retention only to temporary chats, or "all" to apply retention to all supported retained data, including persistent agent resource files unless retainAgentFiles is true. | retentionMode: "temporary" |
Default: temporary
retentionMode: "all" applies retention deadlines beyond temporary chats, including persistent
agent resource files unless retainAgentFiles: true is configured. Confirm your retention policy
before enabling it.
Example:
retainAgentFiles
Controls whether persistent agent resource files are exempt from all-data retention.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| retainAgentFiles | Boolean | When true, persistent agent resource files do not expire under retentionMode: "all". Non-agent files and message attachments still expire. | retainAgentFiles: false |
Default: false
Notes:
- This setting only changes behavior when
retentionModeis set to"all". - Set this to
truewhen agents should keep their persistent resource files even while conversations, messages, and non-agent files receive retention deadlines.
Example:
autoSubmitFromUrl
Controls whether a prompt supplied via URL query parameters on /c/new is auto-submitted to the model.
When /c/new?prompt=…&submit=true is opened by an authenticated user, LibreChat normally pre-fills the composer with the URL-supplied prompt and submits it immediately. This is a convenience feature for crafted deeplinks and shared chat URLs.
For deployments where users may receive crafted links from external sources — and where memory- or tool-enabled models could leak sensitive context if a prompt-injection payload reaches the model — operators can disable auto-submission. With the flag set to false, the prompt is still pre-filled in the composer but the user must press Send explicitly.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| autoSubmitFromUrl | Boolean | Controls whether `/c/new?prompt=…&submit=true` auto-submits to the model. | When `false`, the prompt is pre-filled in the composer but not submitted. |
Default: true (existing behavior is preserved unless explicitly disabled).
Notes:
- This setting does not affect URL-driven model spec selection or other URL-driven settings — only the auto-submission step.
- The query parameter accepts both
promptandqas the prompt source, withprompttaking precedence.submit=trueis the trigger. - Recommended for instances handling sensitive memory or tool data, where a 1-click prompt-injection vector should require explicit user confirmation.
Example:
customWelcome
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| customWelcome | String | Allows administrators to define a custom welcome message for the chat interface, with the option to personalize it using the {{user.name}} parameter. |
Default: None (if not specified, a default greeting is used)
Example:
Note: You can use {{user.name}} within the customWelcome message to dynamically insert the user's name for a personalized greeting experience.
runCode
Enables/disables the "Run Code" button for Markdown Code Blocks. More info on the LibreChat Code Interpreter API
Note: This setting does not disable the Agents Code Interpreter Capability. To disable the Agents Capability, see the Agents Endpoint configuration instead.
Deprecated for permission management. Seeds the
RUN_CODErole permission at startup for the defaultUSERrole only. Prefer the Admin Panel.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| runCode | Boolean | Enables or disables the "Run Code" button for Markdown Code Blocks. |
Default: true
Example:
webSearch
Enables/disables the web search button in the chat interface. More info on Web Search Configuration
Note: This setting does not disable the Agents Web Search Capability. To disable the Agents Capability, see the Agents Endpoint configuration instead.
Deprecated for permission management. Seeds the
WEB_SEARCHrole permission at startup for the defaultUSERrole only. Prefer the Admin Panel.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| webSearch | Boolean | Enables or disables the web search button in the chat interface. |
Default: true
Example:
fileSearch
Enables/disables the file search (for RAG API usage via tool) button in the chat interface
Note: This setting does not disable the Agents File Search Capability. To disable the Agents Capability, see the Agents Endpoint configuration instead.
Deprecated for permission management. Seeds the
FILE_SEARCHrole permission at startup for the defaultUSERrole only. Prefer the Admin Panel.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| fileSearch | Boolean | Enables or disables the file search button in the chat interface. |
Default: true
Example:
fileCitations
Controls the global availability of file citations functionality. When disabled, it effectively removes the FILE_CITATIONS permission for all users, preventing any file citations from being displayed when using file search, regardless of individual user permissions.
Deprecated for permission management. Seeds/globally gates the
FILE_CITATIONSrole permission at startup. Prefer the Admin Panel for managing citations permissions per role/group/user.
Note:
- This setting acts as a global toggle for the
FILE_CITATIONSpermission system-wide. - When set to
false, no users will see file citations, even if they have been granted the permission through roles. - File citations require the
fileSearchfeature to be enabled. - When using agents with file search capability, citation behavior (quantity and quality) can be configured through the Agents endpoint configuration.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| fileCitations | Boolean | Globally enables or disables the FILE_CITATIONS permission for all users, controlling whether file search results can include source citations. |
Default: true
Example:
peoplePicker
Controls which principal types (users, groups, roles) are available for selection in the people picker interface, typically used when sharing agents or managing access controls.
Deprecated for permission management. Seeds the
PEOPLE_PICKERrole permissions at startup for the defaultUSERrole only. Prefer the Admin Panel.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| peoplePicker | Object | Configuration for which principal types are available in the people picker interface. |
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| users | Boolean | Enables user search in the people picker. Default: true | |
| groups | Boolean | Enables group search in the people picker. Default: true | |
| roles | Boolean | Enables role search in the people picker. Default: true |
Default:
Example:
marketplace
Enables/disables access to the Agent Marketplace.
Deprecated for permission management. Seeds the
MARKETPLACErole permission at startup for the defaultUSERrole only. Prefer the Admin Panel.
Key:
| Key | Type | Description | Example |
|---|---|---|---|
| marketplace | Object | Configuration for Agent Marketplace access control. |
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| use | Boolean | Enables or disables marketplace access. Default: false |
Default:
Example:
How is this guide?