mirror of
https://github.com/open-webui/open-webui.git
synced 2026-08-24 14:23:59 -05:00
generate_function_chat_completion rewrote form_data['model'] to the base model id in place. Because that dict is the same object process_chat_response later re-submits for the post-tool-call continuation, the continuation was access-checked against the base model instead of the user-facing preset. For a public preset over a private/unregistered pipe base, a non-admin's first message succeeded but the continuation after a native tool call was denied and silently swallowed, aborting the response (admins skip the user-only check, so they were unaffected). Operate on a shallow copy of form_data, mirroring the openai/ollama routers which already substitute the base model on a copy. The continuation now re-checks the preset the user actually has access to. Claude-Session: https://claude.ai/code/session_018toPfJW1hMXAhokGaL43Ep Co-authored-by: Claude <noreply@anthropic.com>