Claude in Chrome: actions block 45s on document_idle and never recover on SPAs that don't idle (screenshot/scroll unusable)
Open 💬 0 comments Opened Jul 5, 2026 by jds1-ai
Summary
Using the claude-in-chrome MCP tools for a simple authenticated-dashboard check (load a page, read the top of it, scroll once), nearly every action after the first screenshot failed with:
Page still loading (executeScript waited 45000ms for document_idle). The previous action may have triggered navigation — try again in a moment.
The page was visually fully rendered the whole time. Each failed call blocked ~45 seconds, so a task that takes a human seconds in the browser took the agent ~12 minutes of wall clock and still couldn't scroll or re-screenshot the page.
Environment
- Claude Code 2.1.177, macOS (Darwin 25.5.0), Claude in Chrome extension via MCP (
mcp__claude-in-chrome__*tools)
Steps to reproduce
navigatetohttps://platform.claude.com/settings/billing(authenticated Anthropic Console — an SPA that appears to hold persistent connections, sodocument_idlemay never fire)- First
computer{screenshot}succeeds - Any subsequent
scroll,screenshot, orget_page_texton the same tab errors with the 45sdocument_idletimeout - Re-
navigateto the same URL +wait5–10s does not clear it; the tab title updates and the page renders, but every executeScript-based tool keeps hitting the 45s timeout
Impact
- Each failed action costs a 45s blocking wait, and the retry loop the error message suggests ("try again in a moment") never converges on pages that don't reach
document_idle - For quick read-only checks on SPAs/dashboards, the tooling is currently much slower than a person driving the browser, by an order of magnitude
Suggestions
- Don't gate
screenshot(a compositor capture) ondocument_idleat all, or fall back to capturing after a short soft deadline - Treat the idle wait as a soft timeout generally: proceed with the action after N seconds and annotate the result ("page may still be loading"), rather than failing the call after 45s
- Consider
DOMContentLoaded/interactive-readiness heuristics instead ofdocument_idlefor SPAs with long-lived connections
🤖 Generated with Claude Code