diff --git a/surfaces/gui/src/components/Composer.tsx b/surfaces/gui/src/components/Composer.tsx
index 67663eff..a0fa586a 100644
--- a/surfaces/gui/src/components/Composer.tsx
+++ b/surfaces/gui/src/components/Composer.tsx
@@ -24,10 +24,19 @@ import {
// kept so saved sessions and configs keep working. Auto-Approve ("auto-approve") is the
// reviewer mode (spec: reviewed-auto-mode.md); it appears only when the server says the
// feature flag is on, wired in the settings pass — until then the picker omits it.
-const PERMISSION_OPTIONS: Option[] = [
+// `note` renders as a second, dimmer line under the description; `caution` prefixes the
+// label with a warning triangle. Both are picker-local extensions of Dropdown's Option.
+type ModeOption = Option & { note?: string; caution?: boolean };
+
+const PERMISSION_OPTIONS: ModeOption[] = [
{ value: "discuss", label: "Discuss", description: "Chat and explore — no edits or commands" },
{ value: "interactive", label: "Ask for approval", description: "Ask before edits and commands" },
- { value: "auto", label: "Bypass approvals", description: "Run everything without asking — approvals off" },
+ {
+ value: "auto",
+ label: "Bypass approvals",
+ description: "Run everything without asking — approvals off",
+ caution: true,
+ },
];
// No hardcoded model fallback: until the server supplies the list (a few seconds after a
@@ -877,13 +886,22 @@ function ModeMenu({
>
+ {o.caution && (
+
+ )}
{o.label}
{o.value === mode && ✓}
{o.description}
+ {o.note && (
+
+ {o.note}
+
+ )}
))}
{onUnattendedChange && (
diff --git a/surfaces/gui/src/components/Icon.tsx b/surfaces/gui/src/components/Icon.tsx
index cf366719..da3b5ce8 100644
--- a/surfaces/gui/src/components/Icon.tsx
+++ b/surfaces/gui/src/components/Icon.tsx
@@ -42,6 +42,7 @@ export type IconName =
| "table"
| "mic"
| "stop"
+ | "warning"
| "x";
export function Icon({
@@ -182,6 +183,16 @@ export function Icon({
);
+ case "warning":
+ // Caution triangle (Lucide-style): rounded triangle + exclamation. Marks the
+ // bypass-approvals mode in the picker — the one option that switches approvals off.
+ return (
+
+ );
case "folderPlus":
// Same clean folder body + a centered plus (Lucide-style).
return (