diff --git a/apps/web/src/components/chat/ComposerPendingUserInputPanel.browser.test.tsx b/apps/web/src/components/chat/ComposerPendingUserInputPanel.browser.test.tsx
new file mode 100644
index 0000000000000..40022b45bc845
--- /dev/null
+++ b/apps/web/src/components/chat/ComposerPendingUserInputPanel.browser.test.tsx
@@ -0,0 +1,103 @@
+import { EnvironmentId, RuntimeRequestId, ThreadId } from "@t3tools/contracts";
+import type { ReactNode } from "react";
+import { expect, it, vi } from "vite-plus/test";
+import { userEvent } from "vite-plus/test/browser";
+
+import { render } from "../../../test/render";
+import type { PendingUserInput } from "../../session-logic";
+import { Select, SelectTrigger } from "../ui/select";
+import { ComposerPendingUserInputPanel } from "./ComposerPendingUserInputPanel";
+
+const threadRef = { environmentId: EnvironmentId.make("env"), threadId: ThreadId.make("thread") };
+
+const prompt: PendingUserInput = {
+ requestId: RuntimeRequestId.make("question-shortcuts"),
+ createdAt: "2026-10-31T00:00:00.000Z",
+ dismissible: false,
+ responseCapability: "live",
+ questions: [
+ {
+ id: "question",
+ header: "Rollout",
+ question: "How should this ship?",
+ options: [{ label: "Incremental", description: "One module at a time" }],
+ multiSelect: true,
+ },
+ ],
+};
+
+it.each<{ focus: string; control: ReactNode; toggles: boolean }>([
+ { focus: "a page button", control: , toggles: true },
+ {
+ focus: "a dialog",
+ control: (
+
+
+
+ ),
+ toggles: false,
+ },
+ {
+ focus: "a popup",
+ control: (
+
+
+
+ ),
+ toggles: false,
+ },
+ {
+ focus: "a menu",
+ control: (
+
+
+
+ ),
+ toggles: false,
+ },
+ {
+ focus: "a select",
+ control: (
+
+ ),
+ toggles: false,
+ },
+ {
+ focus: "a closed select menu",
+ control: (
+
+ ),
+ toggles: false,
+ },
+])(
+ "digit shortcut with focus in $focus toggles an option: $toggles",
+ async ({ control, toggles }) => {
+ const onToggleOption = vi.fn();
+ await using screen = await render(
+ <>
+ {control}
+
+ >,
+ );
+ await expect.element(screen.getByText("Incremental")).toBeVisible();
+ screen.getByLabelText("Focused").element().focus();
+
+ await userEvent.keyboard("1");
+
+ expect(onToggleOption.mock.calls).toEqual(toggles ? [["question", "Incremental"]] : []);
+ },
+);
diff --git a/apps/web/src/components/chat/ComposerPendingUserInputPanel.tsx b/apps/web/src/components/chat/ComposerPendingUserInputPanel.tsx
index 4101bed5713ad..ba811c37b73f8 100644
--- a/apps/web/src/components/chat/ComposerPendingUserInputPanel.tsx
+++ b/apps/web/src/components/chat/ComposerPendingUserInputPanel.tsx
@@ -159,7 +159,9 @@ const ComposerPendingUserInputCard = memo(function ComposerPendingUserInputCard(
}
if (
target instanceof HTMLElement &&
- target.closest('[contenteditable]:not([contenteditable="false"])')
+ target.closest(
+ 'select, [contenteditable]:not([contenteditable="false"]), [role="dialog"], [aria-modal="true"], [role="menu"], [role="combobox"], [data-slot$="popup"]',
+ )
) {
return;
}