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

  1. navigate to https://platform.claude.com/settings/billing (authenticated Anthropic Console — an SPA that appears to hold persistent connections, so document_idle may never fire)
  2. First computer{screenshot} succeeds
  3. Any subsequent scroll, screenshot, or get_page_text on the same tab errors with the 45s document_idle timeout
  4. Re-navigate to the same URL + wait 5–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) on document_idle at 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 of document_idle for SPAs with long-lived connections

🤖 Generated with Claude Code

View original on GitHub ↗