diff --git a/studio/frontend/src/features/chat/chat-providers-dialog.tsx b/studio/frontend/src/features/chat/chat-providers-dialog.tsx
index bfec4d1af3..409630f436 100644
--- a/studio/frontend/src/features/chat/chat-providers-dialog.tsx
+++ b/studio/frontend/src/features/chat/chat-providers-dialog.tsx
@@ -30,6 +30,7 @@ import {
Wifi02Icon,
} from "@hugeicons/core-free-icons";
import { HugeiconsIcon } from "@hugeicons/react";
+import { Eye, EyeOff } from "lucide-react";
import { AnimatePresence, motion, useReducedMotion } from "motion/react";
import { useEffect, useMemo, useRef, useState } from "react";
import { toast } from "sonner";
@@ -136,6 +137,7 @@ export function ChatProvidersSettings({
const [page, setPage] = useState<"list" | "form">("list");
const [providerType, setProviderType] = useState("");
const [apiKey, setApiKey] = useState("");
+ const [showApiKey, setShowApiKey] = useState(false);
const [baseUrlDraft, setBaseUrlDraft] = useState("");
const [editingProviderId, setEditingProviderId] = useState(
null,
@@ -292,6 +294,7 @@ export function ChatProvidersSettings({
function resetForm() {
setEditingProviderId(null);
setApiKey("");
+ setShowApiKey(false);
setBaseUrlDraft("");
setAvailableModels([]);
setSelectedModelIds([]);
@@ -575,6 +578,7 @@ export function ChatProvidersSettings({
setProviderType(provider.providerType);
setCustomProviderName(provider.name || "Custom");
setApiKey(getExternalProviderApiKey(provider.id));
+ setShowApiKey(false);
setBaseUrlDraft(provider.baseUrl);
setModelSearchQuery("");
if (provider.providerType === CUSTOM_PROVIDER_TYPE) {
@@ -764,14 +768,29 @@ export function ChatProvidersSettings({
Stored locally.
- setApiKey(event.target.value)}
- placeholder="Enter API key"
- className="h-9 text-sm"
- />
+
+ setApiKey(event.target.value)}
+ placeholder="Enter API key"
+ className="h-9 pr-9 text-sm"
+ />
+
+
{isCustomProvider ? (