From 8766004c36a37ce88d2f8d4596cb5ed2a3233e8d Mon Sep 17 00:00:00 2001 From: Ryan Crabbe Date: Fri, 20 Mar 2026 21:30:59 -0700 Subject: [PATCH 1/2] fix(ui): use useTags hook so tag dropdown populates on key creation The create key form used getPredefinedTags() which only extracted tags from existing keys' metadata. If no keys had tags, the dropdown was empty. Switch to the existing useTags() React Query hook that fetches from /tag/list, matching the edit key form behavior. --- .../src/components/organisms/create_key_button.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx b/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx index d0a7a909d6e..0c0e4ccd12d 100644 --- a/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx +++ b/ui/litellm-dashboard/src/components/organisms/create_key_button.tsx @@ -2,6 +2,7 @@ import { keyKeys } from "@/app/(dashboard)/hooks/keys/useKeys"; import { useOrganizations } from "@/app/(dashboard)/hooks/organizations/useOrganizations"; import { useProjects } from "@/app/(dashboard)/hooks/projects/useProjects"; +import { useTags } from "@/app/(dashboard)/hooks/tags/useTags"; import { useUISettings } from "@/app/(dashboard)/hooks/uiSettings/useUISettings"; import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; import { formatNumberWithCommas } from "@/utils/dataUtils"; @@ -165,8 +166,12 @@ const CreateKey: React.FC = ({ team, teams, data, addKey, autoOp const { data: organizations, isLoading: isOrganizationsLoading } = useOrganizations(); const { data: projects, isLoading: isProjectsLoading } = useProjects(); const { data: uiSettingsData } = useUISettings(); + const { data: tagsData } = useTags(); const enableProjectsUI = Boolean(uiSettingsData?.values?.enable_projects_ui); const disableCustomApiKeys = Boolean(uiSettingsData?.values?.disable_custom_api_keys); + const tagOptions = tagsData + ? Object.values(tagsData).map((tag) => ({ value: tag.name, label: tag.name })) + : []; const queryClient = useQueryClient(); const [form] = Form.useForm(); const [isModalVisible, setIsModalVisible] = useState(false); @@ -175,7 +180,6 @@ const CreateKey: React.FC = ({ team, teams, data, addKey, autoOp const [userModels, setUserModels] = useState([]); const [modelsToPick, setModelsToPick] = useState([]); const [keyOwner, setKeyOwner] = useState("you"); - const [predefinedTags, setPredefinedTags] = useState(getPredefinedTags(data)); const [hasPrefilled, setHasPrefilled] = useState(false); const [pendingPrefillModels, setPendingPrefillModels] = useState(null); const [guardrailsList, setGuardrailsList] = useState([]); @@ -1340,9 +1344,9 @@ const CreateKey: React.FC = ({ team, teams, data, addKey, autoOp