diff --git a/ui/src/components/add-account-dialog.tsx b/ui/src/components/add-account-dialog.tsx
new file mode 100644
index 00000000..0fac8fdc
--- /dev/null
+++ b/ui/src/components/add-account-dialog.tsx
@@ -0,0 +1,96 @@
+/**
+ * Add Account Dialog Component
+ * Simple dialog to add another OAuth account to a provider
+ *
+ * Shows auth command + refresh button (no variant creation)
+ */
+
+import { useState } from 'react';
+import {
+ Dialog,
+ DialogContent,
+ DialogHeader,
+ DialogTitle,
+ DialogDescription,
+} from '@/components/ui/dialog';
+import { Button } from '@/components/ui/button';
+import { Card, CardContent } from '@/components/ui/card';
+import { Copy, Check, RefreshCw, Terminal } from 'lucide-react';
+import { useCliproxyAuth } from '@/hooks/use-cliproxy';
+
+interface AddAccountDialogProps {
+ open: boolean;
+ onClose: () => void;
+ provider: string;
+ displayName: string;
+}
+
+export function AddAccountDialog({ open, onClose, provider, displayName }: AddAccountDialogProps) {
+ const [copied, setCopied] = useState(false);
+ const [isRefreshing, setIsRefreshing] = useState(false);
+ const { refetch } = useCliproxyAuth();
+
+ const authCommand = `ccs ${provider} --auth --add`;
+
+ const copyCommand = async () => {
+ await navigator.clipboard.writeText(authCommand);
+ setCopied(true);
+ setTimeout(() => setCopied(false), 2000);
+ };
+
+ const handleRefresh = async () => {
+ setIsRefreshing(true);
+ await refetch();
+ setIsRefreshing(false);
+ onClose();
+ };
+
+ return (
+
+ );
+}
diff --git a/ui/src/pages/cliproxy.tsx b/ui/src/pages/cliproxy.tsx
index 808d82cf..7fc098de 100644
--- a/ui/src/pages/cliproxy.tsx
+++ b/ui/src/pages/cliproxy.tsx
@@ -16,8 +16,8 @@ import {
} from '@/components/ui/dropdown-menu';
import { Plus, Check, X, User, ChevronDown, Star, Trash2, Sparkles } from 'lucide-react';
import { CliproxyTable } from '@/components/cliproxy-table';
-import { CliproxyDialog } from '@/components/cliproxy-dialog';
import { QuickSetupWizard } from '@/components/quick-setup-wizard';
+import { AddAccountDialog } from '@/components/add-account-dialog';
import {
useCliproxy,
useCliproxyAuth,
@@ -85,10 +85,12 @@ function ProviderRow({
status,
setDefaultMutation,
removeMutation,
+ onAddAccount,
}: {
status: AuthStatus;
setDefaultMutation: ReturnType