diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py
index 2f60d0aa9b..9710b14177 100644
--- a/backend/open_webui/utils/middleware.py
+++ b/backend/open_webui/utils/middleware.py
@@ -258,12 +258,7 @@ def build_terminal_file_tool_result(
if isinstance(tool_result, (list, tuple)) and tool_result and isinstance(tool_result[0], dict):
tool_result = tool_result[0]
- if (
- tool_function_name != 'display_file'
- or tool_function_params.get('inline') is not True
- or not isinstance(tool_result, dict)
- or tool_result.get('exists') is False
- ):
+ if tool_function_name != 'display_file' or not isinstance(tool_result, dict) or tool_result.get('exists') is False:
return None
tool_id = (tool or {}).get('tool_id', '')
@@ -284,7 +279,7 @@ def build_terminal_file_tool_result(
**tool_result,
'type': 'file',
'source': 'open_terminal',
- 'displayed': True,
+ **({'displayed': True} if tool_function_params.get('inline') is True else {}),
'terminal_selector': terminal_selector,
**({'terminal_id': terminal_id} if terminal_id else {}),
**({'terminal_url': server_url} if server_url and not terminal_id else {}),
diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte
index 741c78632b..875aee0e07 100644
--- a/src/lib/components/chat/Chat.svelte
+++ b/src/lib/components/chat/Chat.svelte
@@ -1144,6 +1144,7 @@
const terminalEventHandler = (type: string, data: any) => {
if (type === 'terminal:display_file') {
if (!data?.path) return;
+ if ($settings?.terminalFileDisplay === 'inline') return;
displayFileHandler(data.path, { showControls, showFileNavPath }, { page: data?.page });
} else if (type === 'terminal:write_file' || type === 'terminal:replace_file_content') {
if (!data?.path) return;
diff --git a/src/lib/components/chat/Messages/StructuredOutputRenderer.svelte b/src/lib/components/chat/Messages/StructuredOutputRenderer.svelte
index faeff5f179..3fd496707d 100644
--- a/src/lib/components/chat/Messages/StructuredOutputRenderer.svelte
+++ b/src/lib/components/chat/Messages/StructuredOutputRenderer.svelte
@@ -163,7 +163,9 @@
{:else if displayItem.type === 'file'}
-
+ {#if displayItem.item?.displayed || $settings?.terminalFileDisplay === 'inline'}
+
+ {/if}
{:else}
{@const detailToken = displayItem.token}
{#if detailToken.attributes?.type === 'tool_calls'}
diff --git a/src/lib/components/chat/Messages/structuredOutput.ts b/src/lib/components/chat/Messages/structuredOutput.ts
index 612aca3dbe..969ecb7be6 100644
--- a/src/lib/components/chat/Messages/structuredOutput.ts
+++ b/src/lib/components/chat/Messages/structuredOutput.ts
@@ -179,7 +179,6 @@ function getInlineFileFromToolOutput(callItem?: OutputItem, resultItem?: OutputI
typeof result !== 'object' ||
result.type !== 'file' ||
result.source !== 'open_terminal' ||
- result.displayed !== true ||
result.exists === false ||
!result.path ||
!result.terminal_selector