From 4f9293e8e96ed158d3898bb620cae98dbf89f7bb Mon Sep 17 00:00:00 2001 From: Yuna Seol Date: Fri, 10 Apr 2026 13:32:18 -0400 Subject: [PATCH] fix(ui): always show context window warning on terminal overflow This removes the early return in the `handleContextWindowWillOverflowEvent` hook. If the context window truly overflows and the message is blocked, we must tell the user why, regardless of their proactive warning settings. This prevents a silent block where the CLI appears to just swallow the user's input. --- .../cli/src/ui/hooks/useGeminiStream.test.tsx | 20 ++++++++----------- packages/cli/src/ui/hooks/useGeminiStream.ts | 4 ---- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/packages/cli/src/ui/hooks/useGeminiStream.test.tsx b/packages/cli/src/ui/hooks/useGeminiStream.test.tsx index fb76321ee7..704847d271 100644 --- a/packages/cli/src/ui/hooks/useGeminiStream.test.tsx +++ b/packages/cli/src/ui/hooks/useGeminiStream.test.tsx @@ -2349,10 +2349,12 @@ describe('useGeminiStream', () => { it.each([ { - name: 'NOT add a message when showContextWindowWarning is false', + name: 'add a message when remaining tokens overflow, regardless of showContextWindowWarning setting', requestTokens: 20, remainingTokens: 80, - shouldShow: false, + shouldShow: false, // The setting itself is false + expectedMessage: + 'Context 20% full. Message may exceed window. Reduce size or /compress.', }, { name: 'add a message when showContextWindowWarning is true', @@ -2392,18 +2394,12 @@ describe('useGeminiStream', () => { }); await waitFor(() => { - if (shouldShow) { - expect(mockAddItem).toHaveBeenCalledWith({ + expect(mockAddItem).toHaveBeenCalledWith( + expect.objectContaining({ type: 'info', text: expectedMessage, - }); - } else { - expect(mockAddItem).not.toHaveBeenCalledWith( - expect.objectContaining({ - type: 'info', - }), - ); - } + }), + ); }); }, ); diff --git a/packages/cli/src/ui/hooks/useGeminiStream.ts b/packages/cli/src/ui/hooks/useGeminiStream.ts index c8a98b14ee..95960c7def 100644 --- a/packages/cli/src/ui/hooks/useGeminiStream.ts +++ b/packages/cli/src/ui/hooks/useGeminiStream.ts @@ -1205,10 +1205,6 @@ export const useGeminiStream = ( (estimatedRequestTokenCount: number, remainingTokenCount: number) => { onCancelSubmit(true); - if (!config.getShowContextWindowWarning()) { - return; - } - const limit = tokenLimit(config.getModel()); const usedPercentage = Math.round( ((limit - remainingTokenCount) / limit) * 100,