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
- Check the tool's action list (is_supported_browser_action / parameters schema) and use an exact supported name
- Map common synonyms in your orchestration layer before dispatch (navigate→open, type→fill)
- 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
- Keep an action-name allowlist in the calling layer and validate before dispatch
- After upgrading ZeroClaw, re-check the action list for renames
- Give the model the tool's parameters_schema, not paraphrased docs
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
- Unsupported scroll direction '{direction}'. Use up/down/left
- Unsupported find_action '{action}'. Use click/fill/text/hove
- Unknown action '{action}'. Valid: get, set, disable, list_se
- subgraph depth must be greater than 0
- Cannot write screenshot to runtime config path '{ $target }'
AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23).
Data as JSON: /api/errors/418a0cf8bde40979.
Report an issue: GitHub.