[FEATURE] Web Browsing Tool Fragmentation Creates Friction After Permission Grant
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Summary
After granting web browsing permission in Claude Code, users expect seamless web access. Instead, they encounter tool fragmentation, multiple permission checks, deferred tool loading, and frequent fallbacks to manual workarounds. This creates a poor UX across all chats.
Problem Description
User grants permission for web browsing → Claude should fetch content seamlessly.
What actually happens:
- Tools are deferred (must load via ToolSearch)
- Multiple tools available (WebFetch, Claude-in-Chrome, Computer-use) with different capabilities
- First tool attempt fails or times out
- Second tool attempt has different permissions model, syntax, limitations
- Third tool attempt fails or returns insufficient data
- Result: Manual copy-paste fallback suggested to user
Concrete Example from This Session
Request: Fetch da Vinci firmware discussion from https://www.soliforum.com/topic/9138/
Execution path:
- WebFetch attempt → HTTP 403 Forbidden (site blocking)
- Load Claude-in-Chrome tools via ToolSearch
- Navigate to SoliForum via Chrome MCP
- Call get_page_text → times out waiting for document_idle after 45+ seconds
- Try read_page tool → same timeout
- Try find tool → same timeout (page still loading)
- Take screenshot (visual only, can't extract text)
- Final state: Content never extracted, user advised to manually copy-paste
Time spent: ~15 minutes for one failed fetch attempt
Outcome: Manual workaround required despite initial permission grant
Root Causes
- Tool fragmentation: No unified "get web content" tool
- WebFetch (simple HTTP, fails on JavaScript)
- Claude-in-Chrome (full browser, slow, JS timeouts)
- Computer-use (screenshots only, can't extract text)
- No automatic fallback between them
- JavaScript timeout handling: If document_idle timeout at 45 seconds, tool fails entirely instead of extracting whatever loaded
- Deferred tools requirement: After permissions granted, still must call ToolSearch to load tools before use
- Permission model complexity:
- Per-app permissions (Chrome read vs click vs full)
- Per-domain restrictions (even after grant)
- Different permission layers for different tools
- No persistence: Each tool call starts fresh browser state, can't disable ads/scripts/infinite scroll, can't maintain context
Expected Behavior
After user grants "allow web browsing" permission:
- Single request: "Fetch this URL and extract the text"
- Should attempt automatically: WebFetch → if timeout, Claude-in-Chrome → if timeout, extract partial content → fallback to screenshot
- No tool loading, no multiple permission checks, no manual intervention needed
- If all automated attempts fail, then suggest manual copy-paste
Impact
- Affects all chats where web content retrieval is needed
- Creates perceived slowness and complexity
- Pushes users toward manual workarounds instead of leveraging tool ecosystem
- Reduces productivity for research, documentation, API calls, etc.
Suggested Improvements
- Unified tool: Single "browse" tool that handles fallback strategy internally
- Smarter timeouts: Extract whatever loaded at timeout instead of failing entirely
- JavaScript control: Let Claude disable ads/scripts before content extraction
- Persistent session: Keep browser warm across calls, maintain state
- Single permission grant: "Allow web browsing" should enable all web access without re-checking per domain/tool
- Internal retry logic: Automatically try different extraction methods without exposing failures to user
---
Additional context: This is a pattern across multiple chats and projects, not isolated to this session. Users consistently report: "I gave you permission, why is this still so complicated?"
Proposed Solution
After user grants "allow web browsing" permission:
- Single request: "Fetch this URL and extract the text"
- Should attempt automatically: WebFetch → if timeout, Claude-in-Chrome → if timeout, extract partial content → fallback to screenshot
- No tool loading, no multiple permission checks, no manual intervention needed
- If all automated attempts fail, then suggest manual copy-paste
Alternative Solutions
Current workarounds:
- Manual copy-paste: User manually copies content from browser and pastes into Claude
- API-first approach: Use APIs (gh CLI, curl) instead of web scraping for sites like GitHub
- Skip forums: Avoid forum threads and rely only on authoritative sources like GitHub
- Multiple tool attempts: Try WebFetch, then Claude-in-Chrome, then Computer-use in sequence
Priority
Critical - Blocking my work
Feature Category
CLI commands and flags
Use Case Example
_No response_
Additional Context
_No response_