diff --git a/packages/cli/src/ui/components/Footer.tsx b/packages/cli/src/ui/components/Footer.tsx
index bde50505a..9934f3582 100644
--- a/packages/cli/src/ui/components/Footer.tsx
+++ b/packages/cli/src/ui/components/Footer.tsx
@@ -52,8 +52,11 @@ export const Footer: React.FC = () => {
const contextWindowSize =
config.getContentGeneratorConfig()?.contextWindowSize;
+ // Hide "? for shortcuts" when a custom status line is active (it already
+ // occupies the top row, so the hint is redundant). Matches upstream behavior.
+ const suppressHint = !!statusLineText;
+
// Left bottom row: high-priority messages > approval mode > hint.
- // Matches upstream layout where status line and hints coexist vertically.
const leftBottomContent = uiState.ctrlCPressedOnce ? (
{t('Press Ctrl+C again to exit.')}
) : uiState.ctrlDPressedOnce ? (
@@ -67,7 +70,7 @@ export const Footer: React.FC = () => {
) : showAutoAcceptIndicator !== undefined &&
showAutoAcceptIndicator !== ApprovalMode.DEFAULT ? (
- ) : (
+ ) : suppressHint ? null : (
{t('? for shortcuts')}
);
@@ -117,11 +120,13 @@ export const Footer: React.FC = () => {
>
{/* Left column — status line on top, hints/mode on bottom */}
- {statusLineText && (
-
- {statusLineText}
-
- )}
+ {statusLineText &&
+ !uiState.ctrlCPressedOnce &&
+ !uiState.ctrlDPressedOnce && (
+
+ {statusLineText}
+
+ )}
{leftBottomContent}