From 367b5af1734249cbab71c31acc56c657bcd0ea59 Mon Sep 17 00:00:00 2001
From: Danielle Maywood
Date: Tue, 24 Mar 2026 22:22:59 +0000
Subject: [PATCH] fix(site): prevent phantom scrollbar on empty agent settings
textareas (#23530)
---
.../AgentsPage/AgentSettingsPageView.tsx | 27 ++++++++++++++++---
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/site/src/pages/AgentsPage/AgentSettingsPageView.tsx b/site/src/pages/AgentsPage/AgentSettingsPageView.tsx
index 067cdb829c..bab07bcdbe 100644
--- a/site/src/pages/AgentsPage/AgentSettingsPageView.tsx
+++ b/site/src/pages/AgentsPage/AgentSettingsPageView.tsx
@@ -28,6 +28,7 @@ import {
import { useSearchParams } from "react-router";
import TextareaAutosize from "react-textarea-autosize";
import { formatTokenCount } from "utils/analytics";
+import { cn } from "utils/cn";
import { formatCostMicros } from "utils/currency";
import { AvatarData } from "#/components/Avatar/AvatarData";
import { Button } from "#/components/Button/Button";
@@ -488,8 +489,10 @@ const UsageContent: FC = ({ now }) => {
);
};
-const textareaClassName =
- "max-h-[240px] w-full resize-none overflow-y-auto rounded-lg border border-border bg-surface-primary px-4 py-3 font-sans text-[13px] leading-relaxed text-content-primary placeholder:text-content-secondary focus:outline-none focus:ring-2 focus:ring-content-link/30 [scrollbar-width:thin]";
+const textareaMaxHeight = 240;
+const textareaBaseClassName =
+ "max-h-[240px] w-full resize-none rounded-lg border border-border bg-surface-primary px-4 py-3 font-sans text-[13px] leading-relaxed text-content-primary placeholder:text-content-secondary focus:outline-none focus:ring-2 focus:ring-content-link/30";
+const textareaOverflowClassName = "overflow-y-auto [scrollbar-width:thin]";
interface AgentSettingsPageViewProps {
activeSection: string;
@@ -548,6 +551,10 @@ export const AgentSettingsPageView: FC = ({
const [localUserEdit, setLocalUserEdit] = useState(null);
const userPromptDraft = localUserEdit ?? serverUserPrompt;
+ const [isUserPromptOverflowing, setIsUserPromptOverflowing] = useState(false);
+ const [isSystemPromptOverflowing, setIsSystemPromptOverflowing] =
+ useState(false);
+
const isSystemPromptDirty = localEdit !== null && localEdit !== serverPrompt;
const isUserPromptDirty =
localUserEdit !== null && localUserEdit !== serverUserPrompt;
@@ -642,10 +649,16 @@ export const AgentSettingsPageView: FC = ({
Applied to all your chats. Only visible to you.
setLocalUserEdit(event.target.value)}
+ onHeightChange={(height) =>
+ setIsUserPromptOverflowing(height >= textareaMaxHeight)
+ }
disabled={isPromptSaving}
minRows={1}
/>
@@ -700,10 +713,16 @@ export const AgentSettingsPageView: FC = ({
built-in default is used.
setLocalEdit(event.target.value)}
+ onHeightChange={(height) =>
+ setIsSystemPromptOverflowing(height >= textareaMaxHeight)
+ }
disabled={isPromptSaving}
minRows={1}
/>