Disabled Providers Feature
Overview
This feature allows users to disable specific ACP providers that may cause errors (e.g., 403 Forbidden, authentication issues) to prevent them from appearing in provider selection lists throughout the application.
Problem
Some ACP providers may not be accessible to all users due to:
- Authentication/permission issues (403 Forbidden)
- Network restrictions
- Subscription/license limitations
- Regional availability
When these providers are attempted to be used, they generate errors like:
ACP Error [-32603]: Internal error: Permission denied: HTTP error: 403 Forbidden
Solution
Users can now disable problematic providers through the Settings panel, which will:
- Hide them from all provider selection dropdowns
- Prevent automatic selection of disabled providers
- Persist the disabled state across sessions
Usage
Disabling a Provider
- Open Settings (gear icon)
- Navigate to the "Providers" tab
- Scroll to the "Disabled Providers" section
- Check the checkbox next to any provider you want to disable
- Refresh the page to apply changes
Re-enabling a Provider
- Open Settings → Providers tab
- In the "Disabled Providers" section, uncheck the provider
- Refresh the page to apply changes
Implementation Details
Storage
Disabled provider IDs are stored in localStorage under the key routa.disabledProviders:
// Example stored value
["kiro", "qoder", "auggie"]
Filtering
Providers are filtered at multiple points:
useAcphook: Filters providers when loading from backend- Provider lists: All provider lists respect the disabled state
API
New utility functions in src/client/utils/custom-acp-providers.ts:
// Load disabled provider IDs
loadDisabledProviders(): string[]
// Save disabled provider IDs
saveDisabledProviders(providerIds: string[]): void
// Check if a provider is disabled
isProviderDisabled(providerId: string): boolean
// Disable a provider
disableProvider(providerId: string): void
// Enable a provider
enableProvider(providerId: string): void
// Toggle a provider's disabled state
toggleProviderDisabled(providerId: string): boolean
Files Modified
src/client/utils/custom-acp-providers.ts- Added disabled providers management functionssrc/client/hooks/use-acp.ts- Filter disabled providers when loadingsrc/client/components/settings-panel.tsx- Added UI for managing disabled providers
Future Enhancements
- Auto-disable providers that consistently fail authentication
- Provider-specific error messages in the disabled providers list
- Bulk enable/disable operations
- Export/import disabled providers configuration