summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
diff options
context:
space:
mode:
authorOlcan <[email protected]>2025-05-30 15:32:21 -0700
committerGitHub <[email protected]>2025-05-30 15:32:21 -0700
commit2e57989aec569055a11f21762f72b961377281ab (patch)
tree0fb4a97f195801472b07ed1ba679c21c1151e867 /packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
parenta60e51f44d84b1a13c335e6b75339b8ad8c544bb (diff)
confirm mcp tool executions from untrusted servers (per "trust" setting) (#631)
Diffstat (limited to 'packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx')
-rw-r--r--packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx30
1 files changed, 29 insertions, 1 deletions
diff --git a/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx b/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
index 0606856f..65030309 100644
--- a/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
+++ b/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
@@ -12,6 +12,7 @@ import {
ToolCallConfirmationDetails,
ToolConfirmationOutcome,
ToolExecuteConfirmationDetails,
+ ToolMcpConfirmationDetails,
} from '@gemini-code/server';
import {
RadioButtonSelect,
@@ -64,7 +65,7 @@ export const ToolConfirmationMessage: React.FC<
},
{ label: 'No (esc)', value: ToolConfirmationOutcome.Cancel },
);
- } else {
+ } else if (confirmationDetails.type === 'exec') {
const executionProps =
confirmationDetails as ToolExecuteConfirmationDetails;
@@ -88,6 +89,33 @@ export const ToolConfirmationMessage: React.FC<
},
{ label: 'No (esc)', value: ToolConfirmationOutcome.Cancel },
);
+ } else {
+ // mcp tool confirmation
+ const mcpProps = confirmationDetails as ToolMcpConfirmationDetails;
+
+ bodyContent = (
+ <Box flexDirection="column" paddingX={1} marginLeft={1}>
+ <Text color={Colors.AccentCyan}>MCP Server: {mcpProps.serverName}</Text>
+ <Text color={Colors.AccentCyan}>Tool: {mcpProps.toolName}</Text>
+ </Box>
+ );
+
+ question = `Allow execution of MCP tool "${mcpProps.toolName}" from server "${mcpProps.serverName}"?`;
+ options.push(
+ {
+ label: 'Yes, allow once',
+ value: ToolConfirmationOutcome.ProceedOnce,
+ },
+ {
+ label: `Yes, always allow tool "${mcpProps.toolName}" from server "${mcpProps.serverName}"`,
+ value: ToolConfirmationOutcome.ProceedAlwaysTool, // Cast until types are updated
+ },
+ {
+ label: `Yes, always allow all tools from server "${mcpProps.serverName}"`,
+ value: ToolConfirmationOutcome.ProceedAlwaysServer,
+ },
+ { label: 'No (esc)', value: ToolConfirmationOutcome.Cancel },
+ );
}
return (