[GH-ISSUE #22137] issue: No tools added when Open Terminal is used via direct connection #58306

Closed
opened 2026-05-05 22:49:55 -05:00 by GiteaMirror · 19 comments
Owner

Originally created by @karuko24 on GitHub (Mar 2, 2026).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/22137

Originally assigned to: @Classic298 on GitHub.

Check Existing Issues

  • I have searched for any existing and/or related issues.
  • I have searched for any existing and/or related discussions.
  • I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!).
  • I am using the latest version of Open WebUI.

Installation Method

Other

Open WebUI Version

v0.8.7

Ollama Version (if applicable)

No response

Operating System

Ubuntu 24.04

Browser (if applicable)

No response

Confirmation

  • I have read and followed all instructions in README.md.
  • I am using the latest version of both Open WebUI and Ollama.
  • I have included the browser console logs.
  • I have included the Docker container logs.
  • I have provided every relevant configuration, setting, and environment variable used in my setup.
  • I have clearly listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc).
  • I have documented step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation. My steps:
  • Start with the initial platform/version/OS and dependencies used,
  • Specify exact install/launch/configure commands,
  • List URLs visited, user input (incl. example values/emails/passwords if needed),
  • Describe all options and toggles enabled or changed,
  • Include any files or environmental changes,
  • Identify the expected and actual result at each stage,
  • Ensure any reasonably skilled user can follow and hit the same issue.

Expected Behavior

After adding an Open Terminal server in the user settings, the LLM should receive information about the tools provided by Open Terminal.

Actual Behavior

I can interact with the Open Terminal UI, but the model does not have any tools available to interact with it.

Steps to Reproduce

  1. Add Open Terminal server through user settings
  2. In the chat, ask to interact with the terminal or for a list of available tools

Logs & Screenshots

When asking the model for its available tools after adding the Open Terminal connection:

I have access to the following tools to help you:

Search & Retrieval:

search_web: Search the web for up-to-date information, news, public contact info, weather, etc.
get_website: Scrape a specific website to get its content.
get_current_timestamp: Get the current Unix timestamp.
calculate_timestamp: Calculate timestamps for date filtering (e.g., "last week", "3 days ago").


Knowledge Bases:

list_knowledge_bases: List your accessible knowledge bases.
search_knowledge_bases: Search KBs by name and description.
query_knowledge_bases: Search KBs semantically to find relevant collections.
search_knowledge_files: Search files within knowledge bases by filename.
query_knowledge_files: Search files semantically across all accessible collections.
view_knowledge_file: Retrieve the full content of a specific file from a knowledge base.


Chats & Notes:

search_chats: Search your previous chat conversations by title or message content.
view_chat: Retrieve the full history of a specific chat.
search_notes: Search your personal notes by title or content.
view_note: Retrieve the full content of a specific note.
write_note: Create a new note with a title and content.
replace_note_content: Update the content or title of an existing note.

Additional Information

No response

Originally created by @karuko24 on GitHub (Mar 2, 2026). Original GitHub issue: https://github.com/open-webui/open-webui/issues/22137 Originally assigned to: @Classic298 on GitHub. ### Check Existing Issues - [x] I have searched for any existing and/or related issues. - [x] I have searched for any existing and/or related discussions. - [x] I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!). - [x] I am using the latest version of Open WebUI. ### Installation Method Other ### Open WebUI Version v0.8.7 ### Ollama Version (if applicable) _No response_ ### Operating System Ubuntu 24.04 ### Browser (if applicable) _No response_ ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** Open WebUI and Ollama. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have **provided every relevant configuration, setting, and environment variable used in my setup.** - [x] I have clearly **listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup** (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc). - [x] I have documented **step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation**. My steps: - Start with the initial platform/version/OS and dependencies used, - Specify exact install/launch/configure commands, - List URLs visited, user input (incl. example values/emails/passwords if needed), - Describe all options and toggles enabled or changed, - Include any files or environmental changes, - Identify the expected and actual result at each stage, - Ensure any reasonably skilled user can follow and hit the same issue. ### Expected Behavior After adding an Open Terminal server in the user settings, the LLM should receive information about the tools provided by Open Terminal. ### Actual Behavior I can interact with the Open Terminal UI, but the model does not have any tools available to interact with it. ### Steps to Reproduce 1. Add Open Terminal server through user settings 2. In the chat, ask to interact with the terminal or for a list of available tools ### Logs & Screenshots When asking the model for its available tools after adding the Open Terminal connection: ``` I have access to the following tools to help you: Search & Retrieval: search_web: Search the web for up-to-date information, news, public contact info, weather, etc. get_website: Scrape a specific website to get its content. get_current_timestamp: Get the current Unix timestamp. calculate_timestamp: Calculate timestamps for date filtering (e.g., "last week", "3 days ago"). Knowledge Bases: list_knowledge_bases: List your accessible knowledge bases. search_knowledge_bases: Search KBs by name and description. query_knowledge_bases: Search KBs semantically to find relevant collections. search_knowledge_files: Search files within knowledge bases by filename. query_knowledge_files: Search files semantically across all accessible collections. view_knowledge_file: Retrieve the full content of a specific file from a knowledge base. Chats & Notes: search_chats: Search your previous chat conversations by title or message content. view_chat: Retrieve the full history of a specific chat. search_notes: Search your personal notes by title or content. view_note: Retrieve the full content of a specific note. write_note: Create a new note with a title and content. replace_note_content: Update the content or title of an existing note. ``` ### Additional Information _No response_
GiteaMirror added the bug label 2026-05-05 22:49:55 -05:00
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

did you enable the tool too in the chat interface? cannot reproduce if enabling the tool in the chat.

PS: for best experience use the direct open terminal integration

<!-- gh-comment-id:3984642329 --> @Classic298 commented on GitHub (Mar 2, 2026): did you enable the tool too in the chat interface? cannot reproduce if enabling the tool in the chat. PS: for best experience use the direct open terminal integration
Author
Owner

@karuko24 commented on GitHub (Mar 2, 2026):

@Classic298 you mean here? Yes, and it still doesn't seem to work

Image

If you mean under Integrations -> Tools, there's nothing Terminal-related listed there. I've tried this on two separate Open WebUI instances with different model setups and both had the same problem.

<!-- gh-comment-id:3984737965 --> @karuko24 commented on GitHub (Mar 2, 2026): @Classic298 you mean here? Yes, and it still doesn't seem to work <img width="240" height="117" alt="Image" src="https://github.com/user-attachments/assets/ee8d4d1c-f3b4-4935-a323-cc62db30d2ec" /> If you mean under Integrations -> Tools, there's nothing Terminal-related listed there. I've tried this on two separate Open WebUI instances with different model setups and both had the same problem.
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

is your connection even working? does the file list load?

<!-- gh-comment-id:3984902750 --> @Classic298 commented on GitHub (Mar 2, 2026): is your connection even working? does the file list load?
Author
Owner

@karuko24 commented on GitHub (Mar 2, 2026):

Yep, that part works perfectly fine. Only the model doesn't seem to have the tools available to interact with the Terminal

<!-- gh-comment-id:3984910970 --> @karuko24 commented on GitHub (Mar 2, 2026): Yep, that part works perfectly fine. Only the model doesn't seem to have the tools available to interact with the Terminal
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

what model is it?

We have heard recently that the qwen models, the newer ones in particular, dont work well with open terminal and dont recognize the open terminal tools.

<!-- gh-comment-id:3984915645 --> @Classic298 commented on GitHub (Mar 2, 2026): what model is it? We have heard recently that the qwen models, the newer ones in particular, dont work well with open terminal and dont recognize the open terminal tools.
Author
Owner

@karuko24 commented on GitHub (Mar 2, 2026):

I tested with one of the new Qwen models and DeepSeek V3.2. I would understand that the model might have trouble to detect when to use the tool correctly, but I would assume that it would be able to output the tool name if specifically asked to list the tools it has available, since it manages to do that for all the other ones

<!-- gh-comment-id:3984926025 --> @karuko24 commented on GitHub (Mar 2, 2026): I tested with one of the new Qwen models and DeepSeek V3.2. I would understand that the model might have trouble to detect when to use the tool correctly, but I would assume that it would be able to output the tool name if specifically asked to list the tools it has available, since it manages to do that for all the other ones
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

DeepSeek V3.2 is notoriously bad at tool calling as written in our Docs page (we have had this report many times. This is really just a DeepSeek Fault)

The new Qwen model somehow somewhy struggles with this a lot. Please try a different model

<!-- gh-comment-id:3984936272 --> @Classic298 commented on GitHub (Mar 2, 2026): DeepSeek V3.2 is notoriously bad at tool calling as written in our Docs page (we have had this report many times. This is really just a DeepSeek Fault) The new Qwen model somehow somewhy struggles with this a lot. Please try a different model
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

and make sure they have enough context size of course

<!-- gh-comment-id:3984940435 --> @Classic298 commented on GitHub (Mar 2, 2026): and make sure they have enough context size of course
Author
Owner

@karuko24 commented on GitHub (Mar 2, 2026):

I just ran a request against my local server and got it logged. The Terminal is enabled as shown in my earlier screenshot, here's the list of tools, there are no Terminal-related tools in it:

"tools": [
                {
                        "type": "function",
                        "function": {
                                "name": "get_current_timestamp",
                                "description": "Get the current Unix timestamp in seconds.",
                                "parameters": {
                                        "properties": {},
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "calculate_timestamp",
                                "description": "Get the current Unix timestamp, optionally adjusted by days, weeks, months, or years.\nUse this to calculate timestamps for date filtering in search functions.\nExamples: \"last week\" = weeks_ago=1, \"3 days ago\" = days_ago=3, \"a year ago\" = years_ago=1",
                                "parameters": {
                                        "properties": {
                                                "days_ago": {
                                                        "default": 0,
                                                        "description": "Number of days to subtract from current time (default: 0)",
                                                        "type": "integer"
                                                },
                                                "weeks_ago": {
                                                        "default": 0,
                                                        "description": "Number of weeks to subtract from current time (default: 0)",
                                                        "type": "integer"
                                                },
                                                "months_ago": {
                                                        "default": 0,
                                                        "description": "Number of months to subtract from current time (default: 0)",
                                                        "type": "integer"
                                                },
                                                "years_ago": {
                                                        "default": 0,
                                                        "description": "Number of years to subtract from current time (default: 0)",
                                                        "type": "integer"
                                                }
                                        },
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "list_knowledge_bases",
                                "description": "List the user's accessible knowledge bases.",
                                "parameters": {
                                        "properties": {
                                                "count": {
                                                        "default": 10,
                                                        "description": "Maximum number of KBs to return (default: 10)",
                                                        "type": "integer"
                                                },
                                                "skip": {
                                                        "default": 0,
                                                        "description": "Number of results to skip for pagination (default: 0)",
                                                        "type": "integer"
                                                }
                                        },
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "search_knowledge_bases",
                                "description": "Search the user's accessible knowledge bases by name and description.",
                                "parameters": {
                                        "properties": {
                                                "query": {
                                                        "description": "The search query to find matching knowledge bases",
                                                        "type": "string"
                                                },
                                                "count": {
                                                        "default": 5,
                                                        "description": "Maximum number of results to return (default: 5)",
                                                        "type": "integer"
                                                },
                                                "skip": {
                                                        "default": 0,
                                                        "description": "Number of results to skip for pagination (default: 0)",
                                                        "type": "integer"
                                                }
                                        },
                                        "required": [
                                                "query"
                                        ],
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "query_knowledge_bases",
                                "description": "Search knowledge bases by semantic similarity to query.\nFinds KBs whose name/description match the meaning of your query.\nUse this to discover relevant knowledge bases before querying their files.",
                                "parameters": {
                                        "properties": {
                                                "query": {
                                                        "description": "Natural language query describing what you're looking for",
                                                        "type": "string"
                                                },
                                                "count": {
                                                        "default": 5,
                                                        "description": "Maximum results (default: 5)",
                                                        "type": "integer"
                                                }
                                        },
                                        "required": [
                                                "query"
                                        ],
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "search_knowledge_files",
                                "description": "Search files across knowledge bases the user has access to.",
                                "parameters": {
                                        "properties": {
                                                "query": {
                                                        "description": "The search query to find matching files by filename",
                                                        "type": "string"
                                                },
                                                "knowledge_id": {
                                                        "description": "Optional KB id to limit search to a specific knowledge base",
                                                        "type": "string"
                                                },
                                                "count": {
                                                        "default": 5,
                                                        "description": "Maximum number of results to return (default: 5)",
                                                        "type": "integer"
                                                },
                                                "skip": {
                                                        "default": 0,
                                                        "description": "Number of results to skip for pagination (default: 0)",
                                                        "type": "integer"
                                                }
                                        },
                                        "required": [
                                                "query"
                                        ],
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "query_knowledge_files",
                                "description": "Search knowledge base files using semantic/vector search. Searches across collections (KBs),\nindividual files, and notes that the user has access to.",
                                "parameters": {
                                        "properties": {
                                                "query": {
                                                        "description": "The search query to find semantically relevant content",
                                                        "type": "string"
                                                },
                                                "knowledge_ids": {
                                                        "description": "Optional list of KB ids to limit search to specific knowledge bases",
                                                        "items": {
                                                                "type": "string"
                                                        },
                                                        "type": "array"
                                                },
                                                "count": {
                                                        "default": 5,
                                                        "description": "Maximum number of results to return (default: 5)",
                                                        "type": "integer"
                                                }
                                        },
                                        "required": [
                                                "query"
                                        ],
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "view_knowledge_file",
                                "description": "Get the full content of a file from a knowledge base.",
                                "parameters": {
                                        "properties": {
                                                "file_id": {
                                                        "description": "The ID of the file to retrieve",
                                                        "type": "string"
                                                }
                                        },
                                        "required": [
                                                "file_id"
                                        ],
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "search_chats",
                                "description": "Search the user's previous chat conversations by title and message content.",
                                "parameters": {
                                        "properties": {
                                                "query": {
                                                        "description": "The search query to find matching chats",
                                                        "type": "string"
                                                },
                                                "count": {
                                                        "default": 5,
                                                        "description": "Maximum number of results to return (default: 5)",
                                                        "type": "integer"
                                                },
                                                "start_timestamp": {
                                                        "description": "Only include chats updated after this Unix timestamp (seconds)",
                                                        "type": "integer"
                                                },
                                                "end_timestamp": {
                                                        "description": "Only include chats updated before this Unix timestamp (seconds)",
                                                        "type": "integer"
                                                }
                                        },
                                        "required": [
                                                "query"
                                        ],
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "view_chat",
                                "description": "Get the full conversation history of a chat by its ID.",
                                "parameters": {
                                        "properties": {
                                                "chat_id": {
                                                        "description": "The ID of the chat to retrieve",
                                                        "type": "string"
                                                }
                                        },
                                        "required": [
                                                "chat_id"
                                        ],
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "search_notes",
                                "description": "Search the user's notes by title and content.",
                                "parameters": {
                                        "properties": {
                                                "query": {
                                                        "description": "The search query to find matching notes",
                                                        "type": "string"
                                                },
                                                "count": {
                                                        "default": 5,
                                                        "description": "Maximum number of results to return (default: 5)",
                                                        "type": "integer"
                                                },
                                                "start_timestamp": {
                                                        "description": "Only include notes updated after this Unix timestamp (seconds)",
                                                        "type": "integer"
                                                },
                                                "end_timestamp": {
                                                        "description": "Only include notes updated before this Unix timestamp (seconds)",
                                                        "type": "integer"
                                                }
                                        },
                                        "required": [
                                                "query"
                                        ],
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "view_note",
                                "description": "Get the full content of a note by its ID.",
                                "parameters": {
                                        "properties": {
                                                "note_id": {
                                                        "description": "The ID of the note to retrieve",
                                                        "type": "string"
                                                }
                                        },
                                        "required": [
                                                "note_id"
                                        ],
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "write_note",
                                "description": "Create a new note with the given title and content.",
                                "parameters": {
                                        "properties": {
                                                "title": {
                                                        "description": "The title of the new note",
                                                        "type": "string"
                                                },
                                                "content": {
                                                        "description": "The markdown content for the note",
                                                        "type": "string"
                                                }
                                        },
                                        "required": [
                                                "title",
                                                "content"
                                        ],
                                        "type": "object"
                                }
                        }
                },
                {
                        "type": "function",
                        "function": {
                                "name": "replace_note_content",
                                "description": "Update the content of a note. Use this to modify task lists, add notes, or update content.",
                                "parameters": {
                                        "properties": {
                                                "note_id": {
                                                        "description": "The ID of the note to update",
                                                        "type": "string"
                                                },
                                                "content": {
                                                        "description": "The new markdown content for the note",
                                                        "type": "string"
                                                },
                                                "title": {
                                                        "description": "Optional new title for the note",
                                                        "type": "string"
                                                }
                                        },
                                        "required": [
                                                "note_id",
                                                "content"
                                        ],
                                        "type": "object"
                                }
                        }
                }
        ]
<!-- gh-comment-id:3984950807 --> @karuko24 commented on GitHub (Mar 2, 2026): I just ran a request against my local server and got it logged. The Terminal is enabled as shown in my earlier screenshot, here's the list of tools, there are no Terminal-related tools in it: ``` "tools": [ { "type": "function", "function": { "name": "get_current_timestamp", "description": "Get the current Unix timestamp in seconds.", "parameters": { "properties": {}, "type": "object" } } }, { "type": "function", "function": { "name": "calculate_timestamp", "description": "Get the current Unix timestamp, optionally adjusted by days, weeks, months, or years.\nUse this to calculate timestamps for date filtering in search functions.\nExamples: \"last week\" = weeks_ago=1, \"3 days ago\" = days_ago=3, \"a year ago\" = years_ago=1", "parameters": { "properties": { "days_ago": { "default": 0, "description": "Number of days to subtract from current time (default: 0)", "type": "integer" }, "weeks_ago": { "default": 0, "description": "Number of weeks to subtract from current time (default: 0)", "type": "integer" }, "months_ago": { "default": 0, "description": "Number of months to subtract from current time (default: 0)", "type": "integer" }, "years_ago": { "default": 0, "description": "Number of years to subtract from current time (default: 0)", "type": "integer" } }, "type": "object" } } }, { "type": "function", "function": { "name": "list_knowledge_bases", "description": "List the user's accessible knowledge bases.", "parameters": { "properties": { "count": { "default": 10, "description": "Maximum number of KBs to return (default: 10)", "type": "integer" }, "skip": { "default": 0, "description": "Number of results to skip for pagination (default: 0)", "type": "integer" } }, "type": "object" } } }, { "type": "function", "function": { "name": "search_knowledge_bases", "description": "Search the user's accessible knowledge bases by name and description.", "parameters": { "properties": { "query": { "description": "The search query to find matching knowledge bases", "type": "string" }, "count": { "default": 5, "description": "Maximum number of results to return (default: 5)", "type": "integer" }, "skip": { "default": 0, "description": "Number of results to skip for pagination (default: 0)", "type": "integer" } }, "required": [ "query" ], "type": "object" } } }, { "type": "function", "function": { "name": "query_knowledge_bases", "description": "Search knowledge bases by semantic similarity to query.\nFinds KBs whose name/description match the meaning of your query.\nUse this to discover relevant knowledge bases before querying their files.", "parameters": { "properties": { "query": { "description": "Natural language query describing what you're looking for", "type": "string" }, "count": { "default": 5, "description": "Maximum results (default: 5)", "type": "integer" } }, "required": [ "query" ], "type": "object" } } }, { "type": "function", "function": { "name": "search_knowledge_files", "description": "Search files across knowledge bases the user has access to.", "parameters": { "properties": { "query": { "description": "The search query to find matching files by filename", "type": "string" }, "knowledge_id": { "description": "Optional KB id to limit search to a specific knowledge base", "type": "string" }, "count": { "default": 5, "description": "Maximum number of results to return (default: 5)", "type": "integer" }, "skip": { "default": 0, "description": "Number of results to skip for pagination (default: 0)", "type": "integer" } }, "required": [ "query" ], "type": "object" } } }, { "type": "function", "function": { "name": "query_knowledge_files", "description": "Search knowledge base files using semantic/vector search. Searches across collections (KBs),\nindividual files, and notes that the user has access to.", "parameters": { "properties": { "query": { "description": "The search query to find semantically relevant content", "type": "string" }, "knowledge_ids": { "description": "Optional list of KB ids to limit search to specific knowledge bases", "items": { "type": "string" }, "type": "array" }, "count": { "default": 5, "description": "Maximum number of results to return (default: 5)", "type": "integer" } }, "required": [ "query" ], "type": "object" } } }, { "type": "function", "function": { "name": "view_knowledge_file", "description": "Get the full content of a file from a knowledge base.", "parameters": { "properties": { "file_id": { "description": "The ID of the file to retrieve", "type": "string" } }, "required": [ "file_id" ], "type": "object" } } }, { "type": "function", "function": { "name": "search_chats", "description": "Search the user's previous chat conversations by title and message content.", "parameters": { "properties": { "query": { "description": "The search query to find matching chats", "type": "string" }, "count": { "default": 5, "description": "Maximum number of results to return (default: 5)", "type": "integer" }, "start_timestamp": { "description": "Only include chats updated after this Unix timestamp (seconds)", "type": "integer" }, "end_timestamp": { "description": "Only include chats updated before this Unix timestamp (seconds)", "type": "integer" } }, "required": [ "query" ], "type": "object" } } }, { "type": "function", "function": { "name": "view_chat", "description": "Get the full conversation history of a chat by its ID.", "parameters": { "properties": { "chat_id": { "description": "The ID of the chat to retrieve", "type": "string" } }, "required": [ "chat_id" ], "type": "object" } } }, { "type": "function", "function": { "name": "search_notes", "description": "Search the user's notes by title and content.", "parameters": { "properties": { "query": { "description": "The search query to find matching notes", "type": "string" }, "count": { "default": 5, "description": "Maximum number of results to return (default: 5)", "type": "integer" }, "start_timestamp": { "description": "Only include notes updated after this Unix timestamp (seconds)", "type": "integer" }, "end_timestamp": { "description": "Only include notes updated before this Unix timestamp (seconds)", "type": "integer" } }, "required": [ "query" ], "type": "object" } } }, { "type": "function", "function": { "name": "view_note", "description": "Get the full content of a note by its ID.", "parameters": { "properties": { "note_id": { "description": "The ID of the note to retrieve", "type": "string" } }, "required": [ "note_id" ], "type": "object" } } }, { "type": "function", "function": { "name": "write_note", "description": "Create a new note with the given title and content.", "parameters": { "properties": { "title": { "description": "The title of the new note", "type": "string" }, "content": { "description": "The markdown content for the note", "type": "string" } }, "required": [ "title", "content" ], "type": "object" } } }, { "type": "function", "function": { "name": "replace_note_content", "description": "Update the content of a note. Use this to modify task lists, add notes, or update content.", "parameters": { "properties": { "note_id": { "description": "The ID of the note to update", "type": "string" }, "content": { "description": "The new markdown content for the note", "type": "string" }, "title": { "description": "Optional new title for the note", "type": "string" } }, "required": [ "note_id", "content" ], "type": "object" } } } ] ```
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

Unfortunately i cannot reproduce this behaviour. The tools get injected in my case.
Do you have some specific steps to reproduce I can follow to 100% reproduce this?

<!-- gh-comment-id:3984960102 --> @Classic298 commented on GitHub (Mar 2, 2026): Unfortunately i cannot reproduce this behaviour. The tools get injected in my case. Do you have some specific steps to reproduce I can follow to 100% reproduce this?
Author
Owner

@karuko24 commented on GitHub (Mar 2, 2026):

I'll spin up a fresh instance of Open WebUI and try to reproduce this

<!-- gh-comment-id:3984967525 --> @karuko24 commented on GitHub (Mar 2, 2026): I'll spin up a fresh instance of Open WebUI and try to reproduce this
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

@karuko24 while at it - test if there is a difference if the open terminal is added on user side or admin side.

<!-- gh-comment-id:3985006674 --> @Classic298 commented on GitHub (Mar 2, 2026): @karuko24 while at it - test if there is a difference if the open terminal is added on user side or admin side.
Author
Owner

@karuko24 commented on GitHub (Mar 2, 2026):

Okay, I am able to reproduce it on a fresh instance.

I used:

docker run -d -p 3000:8080 -e OPENAI_API_KEY=your_secret_key -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

Then configured my OpenAI connection to my local mlx server (in the admin settings) and set it to use native function calling.
Next, I went to my user settings and added the Open Terminal connection there. The UI showed me the files, so the connection was working, but when I sent a request and checked the tools, they weren't present.

I then configured it through the admin settings, that one worked fine and the requests contained the expected tools.

<!-- gh-comment-id:3985050761 --> @karuko24 commented on GitHub (Mar 2, 2026): Okay, I am able to reproduce it on a fresh instance. I used: ``` docker run -d -p 3000:8080 -e OPENAI_API_KEY=your_secret_key -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main ``` Then configured my OpenAI connection to my local mlx server (in the admin settings) and set it to use native function calling. Next, I went to my user settings and added the Open Terminal connection there. The UI showed me the files, so the connection was working, but when I sent a request and checked the tools, they weren't present. I then configured it through the admin settings, that one worked fine and the requests contained the expected tools.
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

Ok thanks so the issue is in the user open terminal settings not the admin one

<!-- gh-comment-id:3985075543 --> @Classic298 commented on GitHub (Mar 2, 2026): Ok thanks so the issue is in the user open terminal settings not the admin one
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

I will investigate this thanks for confirming. I have had similar Q earlier today but he managed to make it work in the end but didn't specify how. maybe he used admin connections

<!-- gh-comment-id:3985078865 --> @Classic298 commented on GitHub (Mar 2, 2026): I will investigate this thanks for confirming. I have had similar Q earlier today but he managed to make it work in the end but didn't specify how. maybe he used admin connections
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

will take a look here

<!-- gh-comment-id:3985351995 --> @Classic298 commented on GitHub (Mar 2, 2026): will take a look here
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

might be fixed by https://github.com/open-webui/open-webui/pull/22150
testing wanted

<!-- gh-comment-id:3985838951 --> @Classic298 commented on GitHub (Mar 2, 2026): might be fixed by https://github.com/open-webui/open-webui/pull/22150 testing wanted
Author
Owner

@Classic298 commented on GitHub (Mar 2, 2026):

fixed in dev

<!-- gh-comment-id:3986979845 --> @Classic298 commented on GitHub (Mar 2, 2026): fixed in dev
Author
Owner

@karuko24 commented on GitHub (Mar 3, 2026):

Thank you!

<!-- gh-comment-id:3989375562 --> @karuko24 commented on GitHub (Mar 3, 2026): Thank you!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#58306