diff --git a/packages/cli/src/ui/components/Footer.tsx b/packages/cli/src/ui/components/Footer.tsx
index f22f32c94..09875d035 100644
--- a/packages/cli/src/ui/components/Footer.tsx
+++ b/packages/cli/src/ui/components/Footer.tsx
@@ -25,7 +25,7 @@ export const Footer: React.FC = () => {
const uiState = useUIState();
const config = useConfig();
const { vimEnabled, vimMode } = useVimMode();
- const { text: statusLineText, padding: statusLinePadding } = useStatusLine();
+ const { text: statusLineText } = useStatusLine();
const { verboseMode } = useVerboseMode();
const { promptTokenCount, showAutoAcceptIndicator } = {
@@ -52,9 +52,12 @@ export const Footer: React.FC = () => {
const contextWindowSize =
config.getContentGeneratorConfig()?.contextWindowSize;
- // Left section shows one item in priority order. When a custom status line
- // is active, only the default "? for shortcuts" hint is suppressed because
- // the status line occupies its own row below.
+ // Left section priority: high-priority messages > status line > hint.
+ // Approval mode indicator is rendered as a separate row below when non-default.
+ const isNonDefaultMode =
+ showAutoAcceptIndicator !== undefined &&
+ showAutoAcceptIndicator !== ApprovalMode.DEFAULT;
+
const leftContent = uiState.ctrlCPressedOnce ? (
{t('Press Ctrl+C again to exit.')}
) : uiState.ctrlDPressedOnce ? (
@@ -65,10 +68,11 @@ export const Footer: React.FC = () => {
-- INSERT --
) : uiState.shellModeActive ? (
- ) : showAutoAcceptIndicator !== undefined &&
- showAutoAcceptIndicator !== ApprovalMode.DEFAULT ? (
-
- ) : statusLineText ? null : (
+ ) : statusLineText ? (
+
+ {statusLineText}
+
+ ) : (
{t('? for shortcuts')}
);
@@ -106,8 +110,8 @@ export const Footer: React.FC = () => {
});
}
- // When a custom status line is configured, render it as a dedicated row
- // beneath the standard footer (matching upstream placement).
+ // Status line is inlined in the footer's left section.
+ // Approval mode indicator renders as a separate row below when non-default.
return (
{
- {/* Custom status line row — match footer's horizontal inset */}
- {statusLineText && (
-
-
- {statusLineText}
-
+ {/* Approval mode indicator — shown as separate row when non-default */}
+ {isNonDefaultMode && (
+
+
)}