diff --git a/ui/litellm-dashboard/src/components/ModelSelect/ModelSelect.test.tsx b/ui/litellm-dashboard/src/components/ModelSelect/ModelSelect.test.tsx
index 6da2f82a2f..a57b7e2095 100644
--- a/ui/litellm-dashboard/src/components/ModelSelect/ModelSelect.test.tsx
+++ b/ui/litellm-dashboard/src/components/ModelSelect/ModelSelect.test.tsx
@@ -535,6 +535,21 @@ describe("ModelSelect", () => {
});
});
+ it("should not render an empty optgroup when includeSpecialOptions is omitted", async () => {
+ renderWithProviders();
+
+ await waitFor(() => {
+ expect(screen.getByTestId("model-select")).toBeInTheDocument();
+ });
+
+ const optgroups = document.querySelectorAll("optgroup");
+ // Wildcard Options + Models — no blank leading group
+ expect(optgroups.length).toBe(2);
+ optgroups.forEach((g) => {
+ expect(g.getAttribute("label")).toBeTruthy();
+ });
+ });
+
it("should render maxTagPlaceholder when many items are selected", async () => {
// Create many models to trigger maxTagCount responsive behavior
const manyModels: ProxyModel[] = Array.from({ length: 20 }, (_, i) => ({
diff --git a/ui/litellm-dashboard/src/components/ModelSelect/ModelSelect.tsx b/ui/litellm-dashboard/src/components/ModelSelect/ModelSelect.tsx
index 74b2619f7f..800fa86b16 100644
--- a/ui/litellm-dashboard/src/components/ModelSelect/ModelSelect.tsx
+++ b/ui/litellm-dashboard/src/components/ModelSelect/ModelSelect.tsx
@@ -141,36 +141,38 @@ export const ModelSelect = (props: ModelSelectProps) => {
onChange={handleChange}
style={style}
options={[
- includeSpecialOptions
- ? {
- label: Special Options,
- title: "Special Options",
- options: [
- ...(shouldShowAllProxyModels
- ? [
- {
- label: All Proxy Models,
- value: MODEL_SELECT_ALL_PROXY_MODELS_SPECIAL_VALUE.value,
- disabled:
- value.length > 0 &&
- value.some(
- (v) => isSpecialOption(v) && v !== MODEL_SELECT_ALL_PROXY_MODELS_SPECIAL_VALUE.value,
- ),
- key: MODEL_SELECT_ALL_PROXY_MODELS_SPECIAL_VALUE.value,
- },
- ]
- : []),
- {
- label: No Default Models,
- value: MODEL_SELECT_NO_DEFAULT_MODELS_SPECIAL_VALUE.value,
- disabled:
- value.length > 0 &&
- value.some((v) => isSpecialOption(v) && v !== MODEL_SELECT_NO_DEFAULT_MODELS_SPECIAL_VALUE.value),
- key: MODEL_SELECT_NO_DEFAULT_MODELS_SPECIAL_VALUE.value,
- },
- ],
- }
- : [],
+ ...(includeSpecialOptions
+ ? [
+ {
+ label: Special Options,
+ title: "Special Options",
+ options: [
+ ...(shouldShowAllProxyModels
+ ? [
+ {
+ label: All Proxy Models,
+ value: MODEL_SELECT_ALL_PROXY_MODELS_SPECIAL_VALUE.value,
+ disabled:
+ value.length > 0 &&
+ value.some(
+ (v) => isSpecialOption(v) && v !== MODEL_SELECT_ALL_PROXY_MODELS_SPECIAL_VALUE.value,
+ ),
+ key: MODEL_SELECT_ALL_PROXY_MODELS_SPECIAL_VALUE.value,
+ },
+ ]
+ : []),
+ {
+ label: No Default Models,
+ value: MODEL_SELECT_NO_DEFAULT_MODELS_SPECIAL_VALUE.value,
+ disabled:
+ value.length > 0 &&
+ value.some((v) => isSpecialOption(v) && v !== MODEL_SELECT_NO_DEFAULT_MODELS_SPECIAL_VALUE.value),
+ key: MODEL_SELECT_NO_DEFAULT_MODELS_SPECIAL_VALUE.value,
+ },
+ ],
+ },
+ ]
+ : []),
...(wildcard.length > 0
? [
{