Files
open-webui/backend/open_webui
Classic298 dbf715cb63 perf: stop scanning every skill on each listing and chat turn (#28798)
Listing skills ran one database query per skill in the instance. A non-admin opening the list on a workspace with 500 skills issued over 500 queries, the paginated list re-resolved the caller's group membership once per row, and every chat message carrying a skill loaded every skill the user can read, full body and owner included, to use the two or three it actually referenced.

Skills now arrive already filtered: the owner-or-grant check runs in the query as an EXISTS subquery, the same way prompts and the search endpoints already do it, the per-item write flag uses the existing batch grant lookup, and the chat path asks only for the skill ids the request names.

Measured with 500 skills of which 3 are visible to the caller: 504 queries and ~300 ms before, 4 queries and ~2.6 ms after. The resulting set is unchanged for owner, public, direct-user, group and multi-grant entries, for both read and write.
2026-08-19 11:07:33 -07:00
..
…
2026-08-10 23:22:08 -06:00
2026-08-14 00:22:17 -06:00
2026-07-27 19:39:36 -04:00
2026-07-31 17:41:14 -04:00
2026-08-17 00:24:47 -07:00
2026-07-27 19:39:36 -04:00
2026-08-17 00:47:32 -07:00
2026-08-16 23:21:00 -07:00
2026-08-17 00:47:32 -07:00
2026-08-14 00:22:17 -06:00