diff --git a/docs/cli/settings.md b/docs/cli/settings.md
index 83c3874f06..8a5c888db6 100644
--- a/docs/cli/settings.md
+++ b/docs/cli/settings.md
@@ -62,6 +62,7 @@ they appear in the UI.
| Hide Model Info | `ui.footer.hideModelInfo` | Hide the model name and context usage in the footer. | `false` |
| Hide Context Window Percentage | `ui.footer.hideContextPercentage` | Hides the context window remaining percentage. | `true` |
| Hide Footer | `ui.hideFooter` | Hide the footer from the UI | `false` |
+| Hide Footer During Approval | `ui.hideFooterDuringApproval` | Hide the footer when a tool approval request is displayed. | `true` |
| New Footer Layout | `ui.newFooterLayout` | Use the new 2-row layout with inline tips. | `"legacy"` |
| Show Tips | `ui.showTips` | Show informative tips on the right side of the status line. | `true` |
| Show Witty Phrases | `ui.showWit` | Show witty phrases while waiting. | `true` |
diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md
index c74a6938ea..c523e1dbda 100644
--- a/docs/reference/configuration.md
+++ b/docs/reference/configuration.md
@@ -275,6 +275,10 @@ their corresponding top-level category object in your `settings.json` file.
- **Description:** Hide the footer from the UI
- **Default:** `false`
+- **`ui.hideFooterDuringApproval`** (boolean):
+ - **Description:** Hide the footer when a tool approval request is displayed.
+ - **Default:** `true`
+
- **`ui.newFooterLayout`** (enum):
- **Description:** Use the new 2-row layout with inline tips.
- **Default:** `"legacy"`
diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts
index 4933de74a9..98387a561e 100644
--- a/packages/cli/src/config/settingsSchema.ts
+++ b/packages/cli/src/config/settingsSchema.ts
@@ -619,6 +619,16 @@ const SETTINGS_SCHEMA = {
description: 'Hide the footer from the UI',
showInDialog: true,
},
+ hideFooterDuringApproval: {
+ type: 'boolean',
+ label: 'Hide Footer During Approval',
+ category: 'UI',
+ requiresRestart: false,
+ default: true,
+ description:
+ 'Hide the footer when a tool approval request is displayed.',
+ showInDialog: true,
+ },
newFooterLayout: {
type: 'enum',
label: 'New Footer Layout',
diff --git a/packages/cli/src/ui/__snapshots__/App.test.tsx.snap b/packages/cli/src/ui/__snapshots__/App.test.tsx.snap
index e498fb7bd0..d46985352b 100644
--- a/packages/cli/src/ui/__snapshots__/App.test.tsx.snap
+++ b/packages/cli/src/ui/__snapshots__/App.test.tsx.snap
@@ -136,7 +136,7 @@ HistoryItemDisplay
│ Allow execution of: 'ls'? │
│ │
│ ● 1. Allow once │
-│ 2. Allow for this session │
+│ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to cancel │
│ 3. No, suggest changes (esc) │
│ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
diff --git a/packages/cli/src/ui/components/Composer.tsx b/packages/cli/src/ui/components/Composer.tsx
index 849187ce64..b46e994cf9 100644
--- a/packages/cli/src/ui/components/Composer.tsx
+++ b/packages/cli/src/ui/components/Composer.tsx
@@ -751,6 +751,8 @@ export const Composer = ({ isFocused = true }: { isFocused?: boolean }) => {
{showUiDetails &&
!settings.merged.ui.hideFooter &&
+ (!hasPendingActionRequired ||
+ !settings.merged.ui.hideFooterDuringApproval) &&
!isScreenReaderEnabled && }
);
diff --git a/packages/cli/src/ui/components/ConsentPrompt.tsx b/packages/cli/src/ui/components/ConsentPrompt.tsx
index 3f255d2606..859d29281d 100644
--- a/packages/cli/src/ui/components/ConsentPrompt.tsx
+++ b/packages/cli/src/ui/components/ConsentPrompt.tsx
@@ -9,6 +9,7 @@ import { type ReactNode } from 'react';
import { theme } from '../semantic-colors.js';
import { MarkdownDisplay } from '../utils/MarkdownDisplay.js';
import { RadioButtonSelect } from './shared/RadioButtonSelect.js';
+import { DialogFooter } from './shared/DialogFooter.js';
type ConsentPromptProps = {
// If a simple string is given, it will render using markdown by default.
@@ -37,7 +38,7 @@ export const ConsentPrompt = (props: ConsentPromptProps) => {
) : (
prompt
)}
-
+
{
]}
onSelect={onConfirm}
/>
+
);
diff --git a/packages/cli/src/ui/components/__snapshots__/ToolConfirmationQueue.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/ToolConfirmationQueue.test.tsx.snap
index a39d668825..265e4a7313 100644
--- a/packages/cli/src/ui/components/__snapshots__/ToolConfirmationQueue.test.tsx.snap
+++ b/packages/cli/src/ui/components/__snapshots__/ToolConfirmationQueue.test.tsx.snap
@@ -11,8 +11,8 @@ exports[`ToolConfirmationQueue > calculates availableContentHeight based on avai
│ Apply this change? │
│ │
│ ● 1. Allow once │
-│ 2. Allow for this session │
-│ 3. Modify with external editor │
+│ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to │
+│ 3. Modify with external edi…cancel │
│ 4. No, suggest changes (esc) │
│ │
╰──────────────────────────────────────────────────────────────────────────────╯
@@ -33,8 +33,8 @@ exports[`ToolConfirmationQueue > does not render expansion hint when constrainHe
│ Apply this change? │
│ │
│ ● 1. Allow once │
-│ 2. Allow for this session │
-│ 3. Modify with external editor │
+│ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to │
+│ 3. Modify with external edi…cancel │
│ 4. No, suggest changes (esc) │
│ │
╰──────────────────────────────────────────────────────────────────────────────╯
@@ -101,8 +101,8 @@ exports[`ToolConfirmationQueue > renders expansion hint when content is long and
│ Apply this change? │
│ │
│ ● 1. Allow once │
-│ 2. Allow for this session │
-│ 3. Modify with external editor │
+│ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to │
+│ 3. Modify with external edi…cancel │
│ 4. No, suggest changes (esc) │
│ │
╰──────────────────────────────────────────────────────────────────────────────╯
@@ -120,8 +120,8 @@ exports[`ToolConfirmationQueue > renders the confirming tool with progress indic
│ Allow execution of: 'ls'? │
│ │
│ ● 1. Allow once │
-│ 2. Allow for this session │
-│ 3. No, suggest changes (esc) │
+│ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to │
+│ 3. No, suggest changes (e… cancel │
│ │
╰──────────────────────────────────────────────────────────────────────────────╯
"
diff --git a/packages/cli/src/ui/components/messages/ToolConfirmationMessage.test.tsx b/packages/cli/src/ui/components/messages/ToolConfirmationMessage.test.tsx
index b3b34ae0a8..45f0f7309d 100644
--- a/packages/cli/src/ui/components/messages/ToolConfirmationMessage.test.tsx
+++ b/packages/cli/src/ui/components/messages/ToolConfirmationMessage.test.tsx
@@ -574,7 +574,7 @@ describe('ToolConfirmationMessage', () => {
const output = lastFrame();
expect(output).toContain('MCP Tool Details:');
- expect(output).toContain('(press Ctrl+O to expand MCP tool details)');
+ expect(output).toContain('Ctrl+O to expand details');
expect(output).not.toContain('https://www.google.co.jp');
expect(output).not.toContain('Navigates browser to a URL.');
unmount();
@@ -606,7 +606,7 @@ describe('ToolConfirmationMessage', () => {
const output = lastFrame();
expect(output).toContain('MCP Tool Details:');
- expect(output).toContain('(press Ctrl+O to expand MCP tool details)');
+ expect(output).toContain('Ctrl+O to expand details');
expect(output).not.toContain('Invocation Arguments:');
unmount();
});
diff --git a/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx b/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
index 022a68e953..a5951dc95b 100644
--- a/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
+++ b/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
@@ -40,6 +40,7 @@ import {
import { AskUserDialog } from '../AskUserDialog.js';
import { ExitPlanModeDialog } from '../ExitPlanModeDialog.js';
import { WarningMessage } from './WarningMessage.js';
+import { DialogFooter } from '../shared/DialogFooter.js';
import {
getDeceptiveUrlDetails,
toUnicodeUrl,
@@ -603,17 +604,8 @@ export const ToolConfirmationMessage: React.FC<
{hasMcpToolDetails && (
MCP Tool Details:
- {isMcpToolDetailsExpanded ? (
- <>
-
- (press {expandDetailsHintKey} to collapse MCP tool details)
-
- {mcpToolDetailsText}
- >
- ) : (
-
- (press {expandDetailsHintKey} to expand MCP tool details)
-
+ {isMcpToolDetailsExpanded && (
+ {mcpToolDetailsText}
)}
)}
@@ -632,7 +624,6 @@ export const ToolConfirmationMessage: React.FC<
isMcpToolDetailsExpanded,
hasMcpToolDetails,
mcpToolDetailsText,
- expandDetailsHintKey,
getPreferredEditor,
]);
@@ -698,6 +689,17 @@ export const ToolConfirmationMessage: React.FC<
onSelect={handleSelect}
isFocused={isFocused}
/>
+
>
)}
diff --git a/packages/cli/src/ui/components/messages/__snapshots__/RedirectionConfirmation.test.tsx.snap b/packages/cli/src/ui/components/messages/__snapshots__/RedirectionConfirmation.test.tsx.snap
index 4f89811121..ce689c3015 100644
--- a/packages/cli/src/ui/components/messages/__snapshots__/RedirectionConfirmation.test.tsx.snap
+++ b/packages/cli/src/ui/components/messages/__snapshots__/RedirectionConfirmation.test.tsx.snap
@@ -8,7 +8,7 @@ Tip: Toggle auto-edit (Shift+Tab) to allow redirection in the future.
Allow execution of: 'echo, redirection (>)'?
● 1. Allow once
- 2. Allow for this session
+ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to cancel
3. No, suggest changes (esc)
"
`;
diff --git a/packages/cli/src/ui/components/messages/__snapshots__/ToolConfirmationMessage.test.tsx.snap b/packages/cli/src/ui/components/messages/__snapshots__/ToolConfirmationMessage.test.tsx.snap
index 72eda055d5..f46fac5987 100644
--- a/packages/cli/src/ui/components/messages/__snapshots__/ToolConfirmationMessage.test.tsx.snap
+++ b/packages/cli/src/ui/components/messages/__snapshots__/ToolConfirmationMessage.test.tsx.snap
@@ -7,7 +7,7 @@ whoami
Allow execution of 3 commands?
● 1. Allow once
- 2. Allow for this session
+ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to cancel
3. No, suggest changes (esc)
"
`;
@@ -20,7 +20,7 @@ URLs to fetch:
Do you want to proceed?
● 1. Allow once
- 2. Allow for this session
+ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to cancel
3. No, suggest changes (esc)
"
`;
@@ -30,7 +30,7 @@ exports[`ToolConfirmationMessage > should not display urls if prompt and url are
Do you want to proceed?
● 1. Allow once
- 2. Allow for this session
+ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to cancel
3. No, suggest changes (esc)
"
`;
@@ -41,7 +41,7 @@ Tool: testtool
Allow execution of MCP tool "testtool" from server "testserver"?
● 1. Allow once
- 2. Allow tool for this session
+ 2. Allow tool for this session Enter to select · ↑/↓ to navigate · Esc to cancel
3. Allow all server tools for this session
4. No, suggest changes (esc)
"
@@ -56,7 +56,7 @@ exports[`ToolConfirmationMessage > with folder trust > 'for edit confirmations'
Apply this change?
● 1. Allow once
- 2. Modify with external editor
+ 2. Modify with external editorEnter to select · ↑/↓ to navigate · Esc to cancel
3. No, suggest changes (esc)
"
`;
@@ -70,7 +70,7 @@ exports[`ToolConfirmationMessage > with folder trust > 'for edit confirmations'
Apply this change?
● 1. Allow once
- 2. Allow for this session
+ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to cancel
3. Modify with external editor
4. No, suggest changes (esc)
"
@@ -81,7 +81,7 @@ exports[`ToolConfirmationMessage > with folder trust > 'for exec confirmations'
Allow execution of: 'echo'?
● 1. Allow once
- 2. No, suggest changes (esc)
+ 2. No, suggest changes (esc)Enter to select · ↑/↓ to navigate · Esc to cancel
"
`;
@@ -90,7 +90,7 @@ exports[`ToolConfirmationMessage > with folder trust > 'for exec confirmations'
Allow execution of: 'echo'?
● 1. Allow once
- 2. Allow for this session
+ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to cancel
3. No, suggest changes (esc)
"
`;
@@ -100,7 +100,7 @@ exports[`ToolConfirmationMessage > with folder trust > 'for info confirmations'
Do you want to proceed?
● 1. Allow once
- 2. No, suggest changes (esc)
+ 2. No, suggest changes (esc)Enter to select · ↑/↓ to navigate · Esc to cancel
"
`;
@@ -109,7 +109,7 @@ exports[`ToolConfirmationMessage > with folder trust > 'for info confirmations'
Do you want to proceed?
● 1. Allow once
- 2. Allow for this session
+ 2. Allow for this session Enter to select · ↑/↓ to navigate · Esc to cancel
3. No, suggest changes (esc)
"
`;
@@ -120,7 +120,7 @@ Tool: test-tool
Allow execution of MCP tool "test-tool" from server "test-server"?
● 1. Allow once
- 2. No, suggest changes (esc)
+ 2. No, suggest changes (esc)Enter to select · ↑/↓ to navigate · Esc to cancel
"
`;
@@ -130,7 +130,7 @@ Tool: test-tool
Allow execution of MCP tool "test-tool" from server "test-server"?
● 1. Allow once
- 2. Allow tool for this session
+ 2. Allow tool for this session Enter to select · ↑/↓ to navigate · Esc to cancel
3. Allow all server tools for this session
4. No, suggest changes (esc)
"
diff --git a/schemas/settings.schema.json b/schemas/settings.schema.json
index 9bd1aa0de2..5481844531 100644
--- a/schemas/settings.schema.json
+++ b/schemas/settings.schema.json
@@ -365,6 +365,13 @@
"default": false,
"type": "boolean"
},
+ "hideFooterDuringApproval": {
+ "title": "Hide Footer During Approval",
+ "description": "Hide the footer when a tool approval request is displayed.",
+ "markdownDescription": "Hide the footer when a tool approval request is displayed.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `true`",
+ "default": true,
+ "type": "boolean"
+ },
"newFooterLayout": {
"title": "New Footer Layout",
"description": "Use the new 2-row layout with inline tips.",