Files
open-webui/backend/open_webui/routers
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-06-29 01:38:41 -05:00
2026-08-13 17:26:38 -06:00
2026-06-29 13:03:14 -05:00
2026-08-13 16:42:10 -06:00
2026-08-14 00:22:17 -06:00
2026-07-24 02:36:10 -04:00
2026-08-17 01:21:58 -07:00
2026-06-29 05:47:21 -05:00
2026-08-11 17:35:05 -06:00
2026-07-27 19:39:36 -04:00
2026-08-16 23:38:34 -07:00
2026-06-29 13:03:14 -05:00
2026-08-17 00:51:04 -07:00
2026-08-10 23:13:10 -06:00
2026-08-11 01:15:05 -06:00
2026-08-09 13:22:46 -06:00
2026-08-16 23:51:38 -07:00
2026-06-17 02:52:35 +02:00