From df379b523b43e1a637339b1c4648299481e97947 Mon Sep 17 00:00:00 2001 From: Manoj Naik <68473696+ManojINaik@users.noreply.github.com> Date: Sat, 24 Jan 2026 01:07:22 +0530 Subject: [PATCH] fix(cli): preserve input text when declining tool approval (#15624) (#15659) Co-authored-by: Tommaso Sciortino --- packages/cli/src/ui/AppContainer.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/ui/AppContainer.tsx b/packages/cli/src/ui/AppContainer.tsx index 9b9897309b..2d77bc4910 100644 --- a/packages/cli/src/ui/AppContainer.tsx +++ b/packages/cli/src/ui/AppContainer.tsx @@ -143,6 +143,16 @@ function isToolExecuting(pendingHistoryItems: HistoryItemWithoutId[]) { }); } +function isToolAwaitingConfirmation( + pendingHistoryItems: HistoryItemWithoutId[], +) { + return pendingHistoryItems + .filter((item): item is HistoryItemToolGroup => item.type === 'tool_group') + .some((item) => + item.tools.some((tool) => ToolCallStatus.Confirming === tool.status), + ); +} + interface AppContainerProps { config: Config; startupWarnings?: string[]; @@ -918,8 +928,11 @@ Logging in with Google... Restarting Gemini CLI to continue. ...pendingSlashCommandHistoryItems, ...pendingGeminiHistoryItems, ]; + if (isToolAwaitingConfirmation(pendingHistoryItems)) { + return; // Don't clear - user may be composing a follow-up message + } if (isToolExecuting(pendingHistoryItems)) { - buffer.setText(''); // Just clear the prompt + buffer.setText(''); // Clear for Ctrl+C cancellation return; }