# Interface Object Structure (https://intelliask.mt/docs/configuration/intelliask_yaml/object_structure/interface)

## 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`:

- `mcpServers`
- `privacyPolicy`
- `termsOfService`
- `modelSelect`
- `parameters`
- `contextUsage`
- `contextCost`
- `currency`
- `presets`
- `prompts`
- `bookmarks`
- `memories`
- `multiConvo`
- `agents`
- `remoteAgents`
- `skills`
- `sharedLinks`
- `temporaryChat`
- `temporaryChatRetention`
- `retentionMode`
- `retainAgentFiles`
- `autoSubmitFromUrl`
- `customWelcome`
- `runCode`
- `webSearch`
- `fileSearch`
- `fileCitations`
- `peoplePicker`
- `marketplace`

**Notes:**

- The `interface` configurations 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.

<Callout type="warning" title="Upcoming change: 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.

These YAML fields are the supported way to manage feature permissions today. A future **IntelliAsk Admin Panel** release will provide ongoing management of the permission matrix per role/group/user (including custom roles), at which point managing permissions through these YAML fields will be deprecated in favor of the panel. They will remain supported for bootstrapping a fresh instance or fully file-driven deployments.

</Callout>

## Example

```yaml filename="interface"
interface:
  mcpServers:
    placeholder: 'MCP Servers'
    use: true
    create: true
    share: false
    public: false
    configureObo: false
    trustCheckbox:
      label: 'I trust this server'
      subLabel: 'Only enable servers you trust'
  privacyPolicy:
    externalUrl: 'https://example.com/privacy'
    openNewTab: true
  termsOfService:
    externalUrl: 'https://example.com/terms'
    openNewTab: true
    modalAcceptance: true
    modalTitle: 'Terms of Service'
    modalContent: |
      # Terms of Service
      ## Introduction
      Welcome to IntelliAsk!
  modelSelect: false
  parameters: true
  contextUsage: true
  contextCost: true
  currency:
    code: EUR
    rate: 0.92
  presets: false
  prompts:
    use: true
    create: true
    share: true
    public: false
  bookmarks: true
  multiConvo: true
  agents:
    use: true
    create: true
    share: true
    public: false
  skills:
    use: true
    create: true
    share: false
    public: false
    defaultActiveOnShare: false
  sharedLinks:
    create: true
    share: true
    public: false
  customWelcome: 'Hey {{user.name}}! Welcome to IntelliAsk'
  runCode: true
  webSearch: true
  fileSearch: true
  fileCitations: true
```

## mcpServers

> **Upcoming deprecation.** The `use`, `create`, `share`, and `public` sub-keys seed role permissions at startup. A future Admin Panel release will manage MCP server permissions per role/group/user, at which point these sub-keys will be deprecated for permission management. The `placeholder` and `trustCheckbox` sub-keys are unaffected.

**Key:**

<OptionTable
  options={[
    [
      '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:**

<OptionTable
  options={[
    [
      '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:**

<OptionTable
  options={[
    [
      '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:**

```yaml filename="interface / mcpServers"
interface:
  mcpServers:
    placeholder: 'Select MCP Server'
    use: true
    create: true
    share: false
    configureObo: false
    trustCheckbox:
      label:
        en: 'I trust this server'
        es: 'Confío en este servidor'
      subLabel:
        en: 'Only enable servers you trust'
        es: 'Solo habilite servidores en los que confíe'
```

## privacyPolicy

**Key:**

<OptionTable
  options={[
    [
      '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:**

<OptionTable
  options={[
    ['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:**

<OptionTable
  options={[
    [
      '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:**

<OptionTable
  options={[
    [
      'externalUrl',
      'String (URL)',
      'The URL pointing to the terms of service document.',
      'https://intelliask.com.mt/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 IntelliAsk.',
      '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 intelliask.yaml.example for how to correctly format the multi-line parameter.',
    ],
  ]}
/>

## modelSelect

**Key:**

<OptionTable
  options={[
    [
      '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 `true` if using [`modelSpecs.addedEndpoints`](/docs/configuration/intelliask_yaml/object_structure/model_specs#addedendpoints).
- If `modelSpecs.addedEndpoints` is used and `interface.modelSelect` is not explicitly set, it defaults to `true`.

**Example:**

```yaml filename="interface / modelSelect"
interface:
  modelSelect: true
```

## parameters

**Key:**

<OptionTable
  options={[
    [
      '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:**

```yaml filename="interface / parameters"
interface:
  parameters: false
```

## contextUsage

**Key:**

<OptionTable
  options={[
    [
      '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:**

```yaml filename="interface / contextUsage"
interface:
  contextUsage: true
```

## contextCost

**Key:**

<OptionTable
  options={[
    [
      '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: true` to opt in to visible cost values. Token usage can remain visible through `contextUsage` while cost values stay hidden.
- `currency` only affects displayed costs when cost display is enabled.

**Example:**

```yaml filename="interface / contextCost"
interface:
  contextCost: true
```

## currency

**Key:**

<OptionTable
  options={[
    [
      '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:**

<OptionTable
  options={[
    ['code', 'String', 'Currency code shown in usage/cost displays.', 'USD'],
    ['rate', 'Number', 'Positive multiplier applied to USD usage costs.', '1'],
  ]}
/>

**Example:**

```yaml filename="interface / currency"
interface:
  currency:
    code: EUR
    rate: 0.92
```

## presets

**Key:**

<OptionTable
  options={[
    [
      '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:**

```yaml filename="interface / presets"
interface:
  presets: true
```

## prompts

> **Upcoming deprecation.** Seeds the `PROMPTS` role permissions at startup for the default `USER` role only. A future Admin Panel release will manage prompt permissions per role/group/user, at which point this field will be deprecated for permission management.

**Key:**

<OptionTable
  options={[
    [
      '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 the `use` permission. Existing `create`, `share`, and `public` permission values are **preserved** from the database. Use this as a simple feature toggle without affecting the other permission values.

- **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:**

<OptionTable
  options={[
    ['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):**

```yaml filename="interface / prompts (boolean)"
interface:
  prompts: true # Only updates USE; create/share/public remain unchanged
```

**Example (object - granular control):**

```yaml filename="interface / prompts (object)"
interface:
  prompts:
    use: true
    create: false # Disable creation while allowing use
    # share and public not specified - preserves existing values
```

**Example (object - full control):**

```yaml filename="interface / prompts (object)"
interface:
  prompts:
    use: true
    create: true
    share: true
    public: false
```

## bookmarks

> **Upcoming deprecation.** Seeds the `BOOKMARKS` role permission at startup for the default `USER` role only. A future Admin Panel release will manage this permission per role/group/user, at which point this field will be deprecated for permission management.

**Key:**

<OptionTable
  options={[
    [
      '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:**

```yaml filename="interface / bookmarks"
interface:
  bookmarks: true
```

## memories

> **Upcoming deprecation.** Seeds the `MEMORIES` role permissions at startup for the default `USER` role only. A future Admin Panel release will manage this permission per role/group/user, at which point this field will be deprecated for permission management. This toggle is separate from the [`memory`](/docs/configuration/intelliask_yaml/object_structure/memory) behavior configuration.

**Key:**

<OptionTable
  options={[
    [
      '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](/docs/configuration/intelliask_yaml/object_structure/memory).

**Example:**

```yaml filename="interface / memories"
interface:
  memories: true
```

## multiConvo

> **Upcoming deprecation.** Seeds the `MULTI_CONVO` role permission at startup for the default `USER` role only. A future Admin Panel release will manage this permission per role/group/user, at which point this field will be deprecated for permission management.

**Key:**

<OptionTable
  options={[
    [
      '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:**

```yaml filename="interface / multiConvo"
interface:
  multiConvo: true
```

## agents

More info on [Agents](/docs/features/agents)

> **Upcoming deprecation.** Seeds the `AGENTS` role permissions at startup for the default `USER` role only. A future Admin Panel release will manage agent permissions per role/group/user, at which point this field will be deprecated for permission management.

**Key:**

<OptionTable
  options={[
    [
      '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 the `use` permission. Existing `create`, `share`, and `public` permission values are **preserved** from the database. Use this as a simple feature toggle without affecting the other permission values.

- **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:**

<OptionTable
  options={[
    ['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):**

```yaml filename="interface / agents (boolean)"
interface:
  agents: true # Only updates USE; create/share/public remain unchanged
```

**Example (object - granular control):**

```yaml filename="interface / agents (object)"
interface:
  agents:
    use: true
    create: false # Disable creation while allowing use
    # share and public not specified - preserves existing values
```

**Example (object - full control):**

```yaml filename="interface / agents (object)"
interface:
  agents:
    use: true
    create: true
    share: true
    public: false
```

## remoteAgents

Controls access to the Agents API (OpenAI-compatible and Open Responses API endpoints), which allows external applications to interact with IntelliAsk agents programmatically via API keys.

> **Upcoming deprecation.** Seeds the `REMOTE_AGENTS` role permissions at startup for the default `USER` role only. A future Admin Panel release will manage this permission per role/group/user, at which point this field will be deprecated for permission management.

**Key:**

<OptionTable
  options={[
    [
      'remoteAgents',
      'Object',
      'Configuration for remote agent API access control. All fields default to `false`.',
      '',
    ],
  ]}
/>

**Sub-keys:**

<OptionTable
  options={[
    ['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:**

```yaml filename="interface / remoteAgents"
interface:
  remoteAgents:
    use: true
    create: true
    share: false
    public: false
```

**Note:** Admin users have all remote agent permissions enabled by default regardless of this configuration.

## skills

> **Upcoming deprecation.** Seeds the `SKILLS` role permissions at startup for the default `USER` role only. A future Admin Panel release will manage Skills permissions per role/group/user, at which point this field will be deprecated for permission management. `defaultActiveOnShare` is not a permission bit and remains a YAML behavior setting.

**Key:**

<OptionTable
  options={[
    [
      '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:**

<OptionTable
  options={[
    ['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:**

```yaml filename="interface / skills"
interface:
  skills:
    use: true
    create: true
    share: false
    public: false
    defaultActiveOnShare: false
```

For Skills behavior and invocation modes, see [Skills](/docs/features/skills).

## sharedLinks

> **Upcoming deprecation.** Seeds the `SHARED_LINKS` role permissions at startup for the default `USER` role only. A future Admin Panel release will manage shared-link permissions per role/group/user, at which point this field will be deprecated for permission management.

**Key:**

<OptionTable
  options={[
    [
      '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 all `SHARED_LINKS` permissions for the default `USER` role.
- **Boolean (`sharedLinks: false`)**: Disables all `SHARED_LINKS` permissions for the default `USER` role.
- **Object**: Updates only the sub-permissions that are explicitly specified. Any permissions not included in the config are preserved from the database.

**Sub-keys:**

<OptionTable
  options={[
    ['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:**

```yaml filename="interface / sharedLinks"
interface:
  sharedLinks:
    create: true
    share: true
    public: false
```

For user-facing shared-link behavior, see [Shareable Links](/docs/features/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.

> **Upcoming deprecation.** Seeds the `TEMPORARY_CHAT` role permission at startup for the default `USER` role only. A future Admin Panel release will manage this permission per role/group/user, at which point this field will be deprecated for permission management. `temporaryChatRetention` below is not a permission and remains the recommended way to configure retention.

**Key:**

<OptionTable
  options={[
    [
      '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:**

```yaml filename="interface / temporaryChat"
interface:
  temporaryChat: true
```

## temporaryChatRetention

The `temporaryChatRetention` configuration allows you to customize how long temporary chats are retained before being automatically deleted.

**Key:**

<OptionTable
  options={[
    [
      '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:**

1. **IntelliAsk.yaml** (recommended): `interface.temporaryChatRetention: 168`
2. **Environment Variable** (deprecated): `TEMP_CHAT_RETENTION_HOURS=168`

> **Note:** The environment variable `TEMP_CHAT_RETENTION_HOURS` is deprecated. Please use the `interface.temporaryChatRetention` config option in `intelliask.yaml` instead. The config file value takes precedence over the environment variable.

**Example:**

```yaml filename="interface / temporaryChatRetention"
interface:
  temporaryChatRetention: 168 # Retain temporary chats for 7 days
  retentionMode: 'temporary'
```

**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:**

<OptionTable
  options={[
    [
      '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`

<Callout type="warning">
  `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.
</Callout>

**Example:**

```yaml filename="interface / retentionMode"
interface:
  temporaryChatRetention: 168
  retentionMode: 'all'
```

## retainAgentFiles

Controls whether persistent agent resource files are exempt from all-data retention.

**Key:**

<OptionTable
  options={[
    [
      '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 `retentionMode` is set to `"all"`.
- Set this to `true` when agents should keep their persistent resource files even while conversations, messages, and non-agent files receive retention deadlines.

**Example:**

```yaml filename="interface / retainAgentFiles"
interface:
  temporaryChatRetention: 168
  retentionMode: 'all'
  retainAgentFiles: true
```

## 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, IntelliAsk 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:**

<OptionTable
  options={[
    [
      '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 `prompt` and `q` as the prompt source, with `prompt` taking precedence. `submit=true` is the trigger.
- Recommended for instances handling sensitive memory or tool data, where a 1-click prompt-injection vector should require explicit user confirmation.

**Example:**

```yaml filename="interface / autoSubmitFromUrl"
interface:
  autoSubmitFromUrl: false
```

## customWelcome

**Key:**

<OptionTable
  options={[
    [
      '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:**

```yaml filename="interface / customWelcome"
interface:
  customWelcome: 'Hey {{user.name}}! Welcome to IntelliAsk'
```

**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 [IntelliAsk Code Interpreter API](/docs/features/code_interpreter)

**Note:** This setting does not disable the [Agents Code Interpreter Capability](/docs/features/agents#code-interpreter). To disable the Agents Capability, see the [Agents Endpoint configuration](/docs/configuration/intelliask_yaml/object_structure/agents) instead.

> **Upcoming deprecation.** Seeds the `RUN_CODE` role permission at startup for the default `USER` role only. A future Admin Panel release will manage this permission per role/group/user, at which point this field will be deprecated for permission management.

**Key:**

<OptionTable
  options={[
    ['runCode', 'Boolean', 'Enables or disables the "Run Code" button for Markdown Code Blocks.'],
  ]}
/>

**Default:** `true`

**Example:**

```yaml filename="interface / runCode"
interface:
  runCode: true
```

## webSearch

Enables/disables the web search button in the chat interface. More info on [Web Search Configuration](/docs/configuration/intelliask_yaml/object_structure/web_search)

**Note:** This setting does not disable the [Agents Web Search Capability](/docs/features/agents#web-search). To disable the Agents Capability, see the [Agents Endpoint configuration](/docs/configuration/intelliask_yaml/object_structure/agents) instead.

> **Upcoming deprecation.** Seeds the `WEB_SEARCH` role permission at startup for the default `USER` role only. A future Admin Panel release will manage this permission per role/group/user, at which point this field will be deprecated for permission management.

**Key:**

<OptionTable
  options={[
    ['webSearch', 'Boolean', 'Enables or disables the web search button in the chat interface.'],
  ]}
/>

**Default:** `true`

**Example:**

```yaml filename="interface / webSearch"
interface:
  webSearch: true
```

## 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](/docs/features/agents#file-search). To disable the Agents Capability, see the [Agents Endpoint configuration](/docs/configuration/intelliask_yaml/object_structure/agents) instead.

> **Upcoming deprecation.** Seeds the `FILE_SEARCH` role permission at startup for the default `USER` role only. A future Admin Panel release will manage this permission per role/group/user, at which point this field will be deprecated for permission management.

**Key:**

<OptionTable
  options={[
    ['fileSearch', 'Boolean', 'Enables or disables the file search button in the chat interface.'],
  ]}
/>

**Default:** `true`

**Example:**

```yaml filename="interface / fileSearch"
interface:
  fileSearch: true
```

## 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.

> **Upcoming deprecation.** Seeds/globally gates the `FILE_CITATIONS` role permission at startup. A future Admin Panel release will manage citations permissions per role/group/user, at which point this field will be deprecated for permission management.

**Note:**

- This setting acts as a global toggle for the `FILE_CITATIONS` permission 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 `fileSearch` feature to be enabled.
- When using agents with file search capability, citation behavior (quantity and quality) can be configured through the [Agents endpoint configuration](/docs/configuration/intelliask_yaml/object_structure/agents#file-citation-configuration-examples).

**Key:**

<OptionTable
  options={[
    [
      '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:**

```yaml filename="interface / fileCitations"
interface:
  fileCitations: true
```

## 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.

> **Upcoming deprecation.** Seeds the `PEOPLE_PICKER` role permissions at startup for the default `USER` role only. A future Admin Panel release will manage this permission per role/group/user, at which point this field will be deprecated for permission management.

**Key:**

<OptionTable
  options={[
    [
      'peoplePicker',
      'Object',
      'Configuration for which principal types are available in the people picker interface.',
    ],
  ]}
/>

**Sub-keys:**

<OptionTable
  options={[
    ['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:**

```yaml
peoplePicker:
  users: true
  groups: true
  roles: true
```

**Example:**

```yaml filename="interface / peoplePicker"
interface:
  peoplePicker:
    users: true
    groups: true
    roles: false # Disable role selection in people picker
```

## marketplace

Enables/disables access to the Agent Marketplace.

> **Upcoming deprecation.** Seeds the `MARKETPLACE` role permission at startup for the default `USER` role only. A future Admin Panel release will manage this permission per role/group/user, at which point this field will be deprecated for permission management.

**Key:**

<OptionTable
  options={[['marketplace', 'Object', 'Configuration for Agent Marketplace access control.']]}
/>

**Sub-keys:**

<OptionTable
  options={[['use', 'Boolean', 'Enables or disables marketplace access. Default: false']]}
/>

**Default:**

```yaml
marketplace:
  use: false
```

**Example:**

```yaml filename="interface / marketplace"
interface:
  marketplace:
    use: true # Enable marketplace access
```
