tinyhumansai/openhuman · error

Timed out waiting for Playwright response

Error message

Timed out waiting for Playwright response

What it means

The Playwright daemon did not deliver a response line within PLAYWRIGHT_RESPONSE_TIMEOUT. The wrapper treats the daemon as wedged or dead, clears self.daemon so the next call respawns it, and aborts the current action.

Source

Thrown at src/openhuman/tools/impl/browser/playwright_backend.rs:166

        let response = match timeout(PLAYWRIGHT_RESPONSE_TIMEOUT, read_response(daemon)).await {
            Ok(Ok(response)) => response,
            Ok(Err(error)) => {
                tracing::debug!(
                    error = %error,
                    request_id = id,
                    "[browser::playwright] daemon read failed; dropping daemon"
                );
                self.daemon = None;
                return Err(error).context("Failed to read Playwright response");
            }
            Err(_) => {
                tracing::debug!(
                    request_id = id,
                    timeout_ms = PLAYWRIGHT_RESPONSE_TIMEOUT.as_millis() as u64,
                    "[browser::playwright] daemon response timed out; dropping daemon"
                );
                self.daemon = None;
                anyhow::bail!("Timed out waiting for Playwright response");
            }
        };

        if response.id != Some(id) {
            tracing::debug!(
                expected_id = id,
                response_id = ?response.id,
                "[browser::playwright] daemon response id mismatch; dropping daemon"
            );
            self.daemon = None;
            anyhow::bail!("Playwright daemon response id mismatch");
        }

        if response.success {
            tracing::debug!(
                request_id = id,
                action = %action,
                "[browser::playwright] action completed"

View on GitHub (pinned to 7491200858)

Solutions

  1. Retry the browser action; the dropped daemon is restarted on the next request
  2. Check whether the Playwright daemon process is hung or CPU-starved and restart it
  3. Reduce page load or simplify the action so the daemon can answer within the fixed timeout
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src/openhuman/tools/impl/browser/playwright_backend.rs:166 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/53765bb2e31c5364. Report an issue: GitHub.