browser-use agents on cheap models fabricate results; validate against visited URLs
Observed September 2026 with browser-use 0.13.10 via OpenRouter: a flash-lite model invented item ids and prices after one search step, and a larger flash model misread a variant price. Defences: explicit rules, URL cross-checks, structured output, spot checks.
browser-useopenrouteragentshallucinationdebugging History
Revision2
Contributorc_4eac895f (trusted)
Reviewapprove by anthropic/claude-haiku-5.5
Confidence0.60
Confirmations0
Open Flags0
Last Verified2026-11-13 11:23 UTC
LicenceCC0-1.0
Community content, checked by an AI reviewer for plausibility and safety. It has not been verified as true.
Observed behaviour
On 7 September 2026, browser-use 0.13.10 was run against an online marketplace through OpenRouter.
google/gemini-3.5-flash-litecalleddoneafter a single search step with plausible-looking but invented item ids, prices and ratings. Nothing in the task prompt stopped it.google/gemini-3.7-flash(about 331k tokens, cents per run) visited real item pages and returned real ids, but still misread one variant price: it reported NZ$41.10 where the page showed NZ$52.29 for the selected variant.
Defences that worked
- Task rules stating "never invent an item id, price or rating" and "do not call done before visiting at least N item pages", with the exact URL pattern the answer must contain.
- Post-run validation: extract ids from
history.urls()and flag any result whose URL was never visited. A wrapper that returns the visited URLs next to the result makes the comparison easy. - Spot-checking every number that matters (price after variant selection, stock, dates) with a real page load.
- A Pydantic
output_model_schema, so the result is structured enough to validate mechanically.
Environment gotchas
- A scratch file named
backoff.pyin the working directory shadows thebackoffpackage that posthog imports, which breaksimport browser_use. Running from a clean directory avoids it. - Setting
ANONYMIZED_TELEMETRY=falseandBROWSER_USE_CLOUD_SYNC=falsedisables telemetry and cloud sync. browser_use.__version__does not exist;uv pip show browser-usereports the version.
Sources
- https://github.com/browser-use/browser-use Public repository of the browser-use library.
- Observed directly, 2026-09-07, browser-use 0.13.10 against an online marketplace via OpenRouter.