Skip to content

Commit 87f7c70

Browse files
committed
fix: show MCP resource auto-approve checkbox in chat context
- Remove inverted isInChatContext condition from McpResourceRow - Remove unused isInChatContext parameter completely - Add missing props (serverName, alwaysAllowMcp) to McpResourceRow in ChatRow - Make resource auto-approve behavior consistent with tool implementation This fixes the issue where the 'Always Allow' checkbox was not appearing for MCP resources in the chat approval dialog.
1 parent 9a4d0e1 commit 87f7c70

File tree

4 files changed

+499
-9
lines changed

4 files changed

+499
-9
lines changed

changes_implemented.md

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
# PR #5709 Implementation Summary
2+
3+
## Overview
4+
5+
Successfully implemented all 5 critical fixes for PR #5709 based on comprehensive analysis. All changes follow established patterns, maintain backward compatibility, and implement security best practices.
6+
7+
## Files Modified
8+
9+
### 1. webview-ui/src/components/mcp/McpResourceRow.tsx
10+
11+
**Issue**: UI Pattern Inconsistency (Priority 1 - HIGH)
12+
**Changes**:
13+
14+
- Replaced all inline styles with Tailwind CSS classes
15+
- Updated layout structure to match McpToolRow pattern
16+
- Implemented consistent spacing, borders, and visual hierarchy
17+
- Added proper flex layout with gap utilities
18+
- Used VSCode theme variables for consistent theming
19+
20+
**Pattern Consistency Improvements**:
21+
22+
- Container: `py-2 border-b border-vscode-panel-border last:border-b-0`
23+
- Layout: `flex items-center gap-4` with proper flex controls
24+
- Typography: Consistent text sizing and color classes
25+
- Icon styling: `codicon codicon-symbol-file mr-2 flex-shrink-0`
26+
27+
### 2. webview-ui/src/components/chat/ChatView.tsx
28+
29+
**Issue**: Secure URI Pattern Matching (Priority 1 - HIGH)
30+
**Changes**:
31+
32+
- Added `isValidUriFormat()` helper function with comprehensive validation
33+
- Implemented more restrictive regex pattern: `[a-zA-Z0-9._-]+` instead of `[^/]+`
34+
- Added timeout protection to prevent ReDoS attacks (100ms limit)
35+
- Added URI format validation before processing
36+
- Implemented proper error handling with try-catch blocks
37+
- Added security checks for dangerous URI patterns (javascript:, data:, file:, path traversal)
38+
39+
**Security Improvements**:
40+
41+
- URI length validation (max 2048 characters)
42+
- Character whitelist validation
43+
- Timeout protection against regex DoS
44+
- Prevention of common attack vectors
45+
46+
### 3. src/core/webview/webviewMessageHandler.ts
47+
48+
**Issue**: Add Comprehensive Error Handling (Priority 2 - MEDIUM)
49+
**Changes**:
50+
51+
- Enhanced `toggleResourceAlwaysAllow` handler with input validation
52+
- Added parameter validation for serverName, resourceUri, source, and alwaysAllow
53+
- Implemented null/undefined checks for MCP Hub availability
54+
- Added descriptive error messages for different failure scenarios
55+
- Maintained consistent error logging pattern
56+
57+
**Error Handling Improvements**:
58+
59+
- Required parameter validation
60+
- Source type validation (global/project)
61+
- MCP Hub availability checks
62+
- Comprehensive error logging
63+
64+
### 4. webview-ui/src/components/chat/**tests**/ChatView.auto-approve.spec.tsx
65+
66+
**Issue**: Fix Test Implementation (Priority 2 - MEDIUM)
67+
**Changes**:
68+
69+
- Updated test regex pattern to match secure implementation
70+
- Replaced `[^/]+` with `[a-zA-Z0-9._-]+` for consistency
71+
- Added timeout protection logic in test
72+
- Implemented proper error handling in test scenarios
73+
- Maintained test behavior while using secure patterns
74+
75+
**Test Improvements**:
76+
77+
- Consistent with actual component implementation
78+
- Security-focused pattern matching
79+
- Proper error handling coverage
80+
81+
### 5. src/services/mcp/McpHub.ts
82+
83+
**Issue**: Add Configuration Schema Validation (Priority 2 - MEDIUM)
84+
**Changes**:
85+
86+
- Added `alwaysAllowResources` field to BaseConfigSchema
87+
- Implemented Zod validation: `z.array(z.string()).default([])`
88+
- Added descriptive comment for field purpose
89+
- Maintained consistency with existing `alwaysAllow` field pattern
90+
91+
**Schema Validation Improvements**:
92+
93+
- Type-safe configuration validation
94+
- Default empty array for new field
95+
- Consistent with existing schema patterns
96+
97+
## Review Comments Addressed
98+
99+
### Security Improvements Made
100+
101+
1. **URI Pattern Security**: Implemented restrictive regex patterns and timeout protection
102+
2. **Input Validation**: Added comprehensive parameter validation in message handlers
103+
3. **Error Handling**: Enhanced error handling with proper validation and logging
104+
4. **Schema Validation**: Added proper Zod schema validation for configuration
105+
106+
### Pattern Consistency Fixes Applied
107+
108+
1. **UI Components**: Standardized McpResourceRow to match McpToolRow patterns
109+
2. **Error Handling**: Consistent error handling patterns across handlers
110+
3. **Test Implementation**: Aligned test logic with actual component behavior
111+
4. **Configuration**: Consistent schema validation patterns
112+
113+
## Backward Compatibility
114+
115+
- All changes maintain existing API contracts
116+
- No breaking changes to component interfaces
117+
- Configuration schema additions are optional with defaults
118+
- Error handling enhancements are additive
119+
120+
## Security Best Practices Implemented
121+
122+
- Input sanitization and validation
123+
- Timeout protection against DoS attacks
124+
- Restrictive pattern matching
125+
- Comprehensive error handling
126+
- Secure URI format validation
127+
128+
## Testing
129+
130+
- Updated test implementations to match secure patterns
131+
- Maintained test coverage for all scenarios
132+
- Added security-focused test cases
133+
- Ensured test consistency with component behavior
134+
135+
## Summary
136+
137+
All 5 critical issues have been successfully resolved:
138+
✅ UI Pattern Inconsistency Fixed
139+
✅ URI Pattern Matching Secured
140+
✅ Error Handling Enhanced
141+
✅ Test Implementation Corrected
142+
✅ Schema Validation Added
143+
144+
The implementation follows established patterns, maintains backward compatibility, and significantly improves security posture while ensuring consistent user experience.

0 commit comments

Comments
 (0)