agent-ops-patterns / gallery / browser-use map / how it decides

How browser-use decides

In browser-use, the AI model chooses the actions on each of its steps (code may first open a web address named in the task) and decides the task is finished by calling done. Among the decisions this map shows, nobody is asked before an action runs, so a form submit or a script the model writes goes ahead on its own, and code clicks OK on alerts and confirm dialogs. The built-in limits on how long a run goes are counts, not judgments (500 steps, or 5 failed steps in a row), and the run's success flag is the model's value when it gives one and true when it does not; a second model call grades the run without changing that flag.

From browser-use/browser-use at source version b49a68e4, mapped 2026-10-29. Each answer links the code where that decision is made.

What it does without asking you

How it decides it is done

Limits and memory

Other judgments

Three problems in the code

  1. 1. A run can be reported successful when the model never said so

    A program reads the success flag in the model's done call at the end of a run. If the model leaves the flag out, code records success. When the developer asks for a structured result, that field is hidden from the model, so such a run normally reads as successful unless the model sets it anyway. An open pull request in browser-use's tracker proposes a fix.

    Reported; a fix is proposed, not merged (#6178), checked 2026-11-01.

    Where: views.py:100, views.py:107-117. How we checked: the code was re-read at the source version named above; the sentences were checked by an independent AI reviewer from another company (OpenAI Codex, read-only) on 2026-11-01; every sentence it found too wide was rewritten or removed, and every rewrite was checked again.

  2. 2. After a step times out, the model is not told which of its actions already ran

    A whole step gets 180 seconds by default. If it runs over, it is cut off, the record of which of the step's actions finished is dropped, and the step's result is only a timeout error. If the run takes another step, the model sees the page as it now is, which may show some effects, but it is not told which of its actions already ran. We found no report of this in browser-use's tracker.

    Not reported upstream, checked 2026-11-01.

    Where: service.py:2487-2493, service.py:1217-1218. How we checked: the code was re-read at the source version named above; the sentences were checked by an independent AI reviewer from another company (OpenAI Codex, read-only) on 2026-11-01; every sentence it found too wide was rewritten or removed, and every rewrite was checked again.

  3. 3. Pressing Enter does not resume a paused run, though the message says it will

    On Mac and Linux, pressing Ctrl+C pauses the run and prints "Press [Enter] to resume or [Ctrl+C] again to quit". Pressing Enter does not resume it; only code that calls agent.resume() does, so a person at the terminal can quit with a second Ctrl+C but cannot continue the run from there. We found no report of this in browser-use's tracker.

    Not reported upstream, checked 2026-11-01.

    Where: service.py:3942-3946, utils.py:399-437. How we checked: the code was re-read at the source version named above; the sentences were checked by an independent AI reviewer from another company (OpenAI Codex, read-only) on 2026-11-01; every sentence it found too wide was rewritten or removed, and every rewrite was checked again.

See the full map →

This card was taken from the published map of browser-use at one commit and covers only decisions shown there; it did not look at the beta agent, the sandbox runner, the MCP server, the command line, Browser Use's cloud browsers or features that are off until a setting turns them on, and no browser-use code was run to make it.

Map: edition with 5 of 90 cards left out (published 2026-10-31) · taken from the full map · card data: gallery/cards/browser-use.json. Found something wrong? Use the correction form.