zeroclaw-labs/zeroclaw · error

Unsupported browser action: {other}

Error message

Unsupported browser action: {other}

What it means

parse_browser_action maps the action string onto the BrowserAction enum (open, snapshot, click, fill, press, hover, scroll, is_visible, close, find, and siblings); any unrecognized string falls into the `other` arm and bails. This is the top-level dispatch for the browser tool, so the action name must exactly match the supported set exposed by is_supported_browser_action and the tool schema.

Source

Thrown at crates/zeroclaw-tools/src/browser.rs:2547

                    ::zeroclaw_log::record!(
                        WARN,
                        ::zeroclaw_log::Event::new(module_path!(), ::zeroclaw_log::Action::Reject)
                            .with_outcome(::zeroclaw_log::EventOutcome::Failure),
                        "browser: Missing 'find_action' for find"
                    );
                    anyhow::Error::msg("Missing 'find_action' for find")
                })?;
            Ok(BrowserAction::Find {
                by: by.into(),
                value: value.into(),
                action: action.into(),
                fill_value: args
                    .get("fill_value")
                    .and_then(|v| v.as_str())
                    .map(String::from),
            })
        }
        other => anyhow::bail!("Unsupported browser action: {other}"),
    }
}

// ── Helper functions ─────────────────────────────────────────────

fn is_supported_browser_action(action: &str) -> bool {
    matches!(
        action,
        "open"
            | "snapshot"
            | "click"
            | "fill"
            | "type"
            | "get_text"
            | "get_title"
            | "get_url"
            | "screenshot"
            | "wait"

View on GitHub (pinned to 88bb9c8533)

Solutions

  1. Check the tool's action list (is_supported_browser_action / parameters schema) and use an exact supported name
  2. Map common synonyms in your orchestration layer before dispatch (navigate→open, type→fill)
  3. Regenerate or update tool documentation and prompt examples after upgrading ZeroClaw

Example fix

// before
{"action": "navigate", "url": "https://example.com"}
// after
{"action": "open", "url": "https://example.com"}
Defensive patterns

Strategy: validation

Validate before calling

fn is_supported(action: &str) -> bool {
    matches!(
        action,
        "open" | "snapshot" | "click" | "fill" | "press" | "hover"
            | "scroll" | "is_visible" | "close" | "find"
    )
}
if !is_supported(&action) {
    return Err(format!("unsupported browser action: {action}"));
}

Try / catch

match tool.execute(args).await {
    Ok(res) => { /* ... */ }
    Err(e) if e.to_string().contains("Unsupported browser action") => {
        // consult the tool schema and resend with a supported action name
    }
    Err(e) => return Err(e),
}

Prevention

When it happens

Trigger: Sending {"action": "navigate"}, {"action": "type"}, or {"action": "get_url"} — any synonym, typo, or renamed action string.

Common situations: LLMs using Playwright-style verbs (goto, type) instead of ZeroClaw's names; version drift after actions were renamed; stale prompt documentation listing old action names.

Related errors


AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23). Data as JSON: /api/errors/418a0cf8bde40979. Report an issue: GitHub.