Skip to main content

Features and UI

These environment variables decide which parts of DIAL Chat users see: the UI features, the role-gated features, the Catalog, the start screen and announcements, seasonal celebrations, and the usage views. This reference is for platform engineers who tailor Chat for their organization; it assumes you know how DIAL Chat is configured.

UI features​

ENABLED_UI_FEATURES is a comma-separated list of UI feature keys. When set, it replaces the built-in default set; it does not add to it. When unset or empty, the defaults apply.

ENABLED_UI_FEATURES=header,conversations-section,catalog,file-manager,prompts,skills,likes,voice-input
  • Unknown keys are dropped with a warning. If every key is unknown, the built-in defaults apply.
  • custom-applications is still accepted and resolves to schema-apps, with a deprecation warning.
  • An overlay host that passes its own enabledFeatures overrides this list for that embed. See Chat Overlay API.

Keys enabled by default​

header, conversations-section, conversations-panel-toggle, showConversationsSectionByDefault, attachments-manager, likes, dislike-comment, input-files, live-chat-interaction, empty-chat-settings, chat-settings, removable-tools, conversations-sharing, applications-sharing, toolsets-sharing, conversations-publishing, schema-apps, code-apps, catalog, file-manager, toolsets, custom-apps, prompts, skills, voice-input, conversation-drafts.

Because the list replaces the defaults, a deployment that sets ENABLED_UI_FEATURES must name every default key it wants to keep.

Keys you turn on​

These keys are off by default: hide-custom-app-creation, disabled-send, skip-focus-chat-input-onload, disallow-change-agent, hide-change-agent, hide-conversations-filter, hide-new-conversation, hide-empty-chat-change-agent, catalog-hide-my-apps, catalog-table-view, hide-delete-user-message, hide-edit-user-message, hide-regenerate-assistant-message, hide-user-menu, hide-user-menu-identity, hide-user-settings, hide-keyboard-shortcuts, hide-navigation-menu, show-all-starters, starters-below-greeting, hide-greeting, hide-footer-version, show-agent-description, disable-input-history-navigation, hide-conversation-export, hide-conversation-import, hide-settings-page, hide-usage-page, show-header-logo, hide-starter-icon.

Keys with a documented effect​

KeyEffect
chat-settingsOn by default. The master switch for Chat settings (temperature, system prompt, response format) in the input's + menu. Drop it to remove those settings everywhere.
empty-chat-settingsOn by default. Narrows Chat settings to the empty-chat screen; it has no effect without chat-settings.
removable-toolsOn by default. Lets users remove tool chips from the input and add them back from + → Tools. Without it, each chip is a fixed on/off toggle.
conversation-draftsOn by default. Keeps what the user typed in a conversation for the browser tab session, until it is sent, the conversation is deleted, or the user logs out.
hide-custom-app-creationHides the create entries for custom apps and Quick Apps, whatever custom-apps and schema-apps say.
show-all-startersShows every configured conversation starter instead of the default subset.
starters-below-greetingMoves the starters and their intro text between the greeting and the input.
hide-greetingRemoves the time-of-day greeting, and with it WELCOME_SCREEN_DESCRIPTION.
show-agent-descriptionShows the selected agent's own description, as Markdown, above the greeting on the empty-chat screen.
show-header-logoShows the theme logo in the center of the desktop top bar, and in the mobile header when header is off.
hide-footer-versionHides the version label in the footer.
disable-input-history-navigationUp and Down in the input move the caret instead of recalling sent messages.
hide-conversation-export, hide-conversation-importHide conversation export or import. They hide the entry points only; the APIs stay available.
hide-settings-pageHides Settings in the user menu and redirects /settings to /. Stored preferences keep their values.
hide-usage-pageHides only the Usage tab of Settings and the Full usage link of the usage popover.
hide-user-menu-identityHides the avatar-and-name row of the user menu, keeping Settings and Log out.

Role-gated features​

VariableDefaultDescription
PROJECTS_ENABLEDfalseTurns on Projects: the Projects pages, their navigation entry, and the /api/v1/projects endpoints. When off, the pages show Not Found and the endpoints answer 403.
PROJECTS_ENABLED_ROLES—Comma-separated roles allowed to use Projects. Unset means every signed-in user.
SCHEDULED_TASKS_ENABLEDfalseTurns on the Scheduled Tasks page and its navigation entry. When off, the scheduled-task API answers 403.
SCHEDULED_TASKS_ENABLED_ROLES—Comma-separated roles allowed to use Scheduled Tasks. Unset means every signed-in user.
LIVE_CHAT_INTERACTION_ENABLEDfalseTurns on interactive toolset sign-in: when a completion needs toolset credentials mid-stream, Chat shows a sign-in dialog.
LIVE_CHAT_INTERACTION_ENABLED_ROLES—Comma-separated roles allowed to use interactive sign-in. Unset means every signed-in user.

Roles are read from the provider's roles claim; see Roles and administrators.

Scheduled tasks​

Scheduled tasks run through DIAL Scheduler, a DIAL application with routes. Its configuration reference covers deployment, application registration, administrator consent, and offline credentials.

VariableDefaultDescription
SCHEDULER_APP_ID—The DIAL Core application ID of DIAL Scheduler. Without it, the scheduled-task endpoints answer 503.
SCHEDULER_SERVICE_ID—The service_id sent to DIAL Scheduler when a schedule is created or updated. Without it, create and update answer 503.
SCHEDULER_SERVICE_TIMEOUT_MS10000The timeout of requests to DIAL Scheduler, in milliseconds.

Catalog​

VariableDefaultDescription
FEATURED_MODEL_IDS—Comma-separated model or application IDs marked as featured in the Catalog. Matching is exact and case-sensitive, for example gpt-4o,dial-rag.
HIDDEN_ENTITY_TAGS[]Comma-separated topic tags. Models and toolsets with one of them are hidden in the Catalog and the model selector, but stay available in the Quick App form.
CATALOG_CREATION_ROLESUnrestrictedA server-only JSON policy that restricts who may create Catalog entities. See Catalog creation roles.

Catalog creation roles​

CATALOG_CREATION_ROLES limits who may create entities, by type and by exact application schema ID. Browsing, using, editing, sharing, and publishing existing entities are not affected.

{
"types": {
"custom-app": ["developers"],
"schema-app": ["app-authors"],
"toolset": ["integrators"],
"prompt": ["prompt-authors"],
"skill": ["skill-authors"]
},
"schemas": {
"https://example.com/schemas/runner-a": ["team-a"]
}
}
  • types takes custom-app, schema-app, toolset, prompt, and skill. Any other key fails startup.
  • schemas takes exact schema IDs, compared as written and case-sensitively. Copy them from GET /api/v1/application-schemas.
  • Rules. A user passes a rule when they hold any of its roles. A schema app needs both its schema-app rule and its schema rule. A missing rule restricts nothing.
  • No bypass. Administrators get no exception; list their role to let them create.
  • Enforcement. The policy hides create entry points in the UI; DIAL Core stays the authority for direct API calls.

The roles above are examples, not defaults. An invalid policy fails startup without echoing its value.

VariableDefaultDescription
WELCOME_SCREEN_DESCRIPTION—Plain text shown below the greeting on the new-chat screen. Never read as markup.
FOOTER_HTML_MESSAGE—HTML shown in the footer of the input area and the mobile user panel. %%VERSION%% is replaced with the Chat version. Sanitized to a, span, strong, u, em, br, and p.
ANNOUNCEMENT_TITLE—The bold heading of the announcement banner at the top of the app, as plain text.
ANNOUNCEMENT_DESCRIPTION—The text after the banner title. Sanitized to a, b, strong, em, br, and span; links open in a new tab. Long text collapses to one line that users can expand.
ANNOUNCEMENTS[]A JSON array behind the banner's "+N announcements" popover: [{"title": "…", "description": "…", "link": {"label": "…", "href": "https://…"}}]. Up to 10 entries; invalid entries are dropped and logged.
ANNOUNCEMENT_HTML_MESSAGE—Deprecated. The legacy centered banner. Ignored when ANNOUNCEMENT_TITLE or ANNOUNCEMENT_DESCRIPTION is set.

Set ANNOUNCEMENT_TITLE or ANNOUNCEMENT_DESCRIPTION to show the banner. A user who closes it keeps it closed until the content changes; editing the title, the description, or any ANNOUNCEMENTS entry shows it to everyone again.

Seasonal celebrations​

VariableDefaultDescription
UI_EVENT—The start-page celebration: halloween or new-year. Unset or none turns celebrations off.
UI_EVENT_ENABLED_BY_DEFAULTtrueThe initial state of the Seasonal celebrations switch in Settings → Preferences for users who have not chosen. Only false, 0, or no turn it off.
UI_EVENT_DELIVERY_MODEbundledbundled plays only the scenes built into Chat. prefer-external lets the scenes and events listed below come from packs served at <THEMES_CONFIG_URL>/celebrations/.
UI_EVENT_DELIVERY_REVISION0Change it to restart a scene that is playing under the previous delivery policy.
UI_EVENT_EXTERNAL_SCENES—Comma-separated eventId/sceneId pairs whose scene may come from a pack, for example new-year/snowman-delivery.
UI_EVENT_EXTERNAL_EVENTS—Comma-separated event IDs with no built-in module that may come entirely from a pack, for example company-anniversary.

Celebrations appear on the start page only and respect reduced motion.

Usage and limits​

VariableDefaultDescription
USAGE_LIMITS_CONTROL_ENABLEDfalseWhen true, the input shows the token and cost usage dial beside the model selector. When false, a banner above the input warns about limits instead.
USAGE_LIMITS_WARNING_THRESHOLD_PERCENT75An integer from 1 to 99: the share of a day, week, or month limit at which the banner appears.
USER_USAGE_DEPLOYMENT_TYPESmodel,applicationThe deployment kinds the usage and limits views report: model, application, or both. Application rows need a DIAL Core that attributes cost to applications.

File Manager​

VariableDefaultDescription
FILE_MANAGER_AVAILABLE_TABSall,my_files,shared,organizationThe File Manager tabs. all adds a combined tab and appears only when at least two source tabs are on. Unknown values are dropped.

Further reading​