Deterministic rerun lets you run a task once with the full agent, save the learned workflow as a Python script, then rerun that script with new parameters. Cache hits skip the full agent and can drop LLM cost to zero when the script succeeds without auto-healing or explicit LLM calls. The cached script still fetches the website or API again. It does not replay the first run’s output, so updated page/API content is reflected on reruns.Documentation Index
Fetch the complete documentation index at: https://browseruse-0aece648-codex-deterministic-rerun-docs.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Quick start
Use@{{double brackets}} around values that can change between runs. The first call runs the full agent and creates a script in your workspace. Every subsequent call with the same template runs that script with the new parameter values.
result2.output comes from a new request to httpbin.org with item=beta. In live testing this path returned 0 input tokens, 0 output tokens, and llmCostUsd: 0.
How it works
You send a task with @{{brackets}}
The brackets mark which parts are parameters:
@{{example.com}}→ parameter 1@{{electronics}}→ parameter 2
"Get prices from @{{}} for @{{}}".System hashes the template
Template
"Get prices from @{{}} for @{{}}" is normalized, hashed, and stored as a 16-character script filename like scripts/a7f3b2c19d4e8f01.py.The cache key ignores parameter values. It is based on the template after values are replaced with @{{}}, whitespace is collapsed, and the template is lowercased.Cache miss → agent creates script
If no script exists, the full agent runs your task. After completing it, the agent saves a standalone Python script that can reproduce the workflow with new parameters.
Keep each
@{{...}} value on one line, and do not put }} inside a parameter value. Changing only parameter values reuses the script; changing the wording or the number/order of parameters creates a different script.Auto-detection
Caching activates automatically when both conditions are met:- The task contains
@{{and}} - A
workspace_idis provided
cache_script:
| Value | Behavior |
|---|---|
None (default) | Auto-detect from @{{brackets}} + workspace |
True | Force-enable, even without brackets |
False | Force-disable, even if brackets are present |
cacheScript applies to create-and-run calls. Follow-up dispatches to an existing sessionId currently run as normal agent tasks, even if the task contains @{{...}}.Examples
Parameterized scraping
Run once, then loop over different keywords. Cache hits skip the full agent:Fresh content on rerun
The cached script fetches the source again. It is useful for extraction jobs where the target page or API changes over time.No parameters — cache the exact task
Append empty brackets@{{}} to signal “cache this exact task”:
Multiple parameters
Force enable / disable
Inspecting cached scripts
You can download and inspect the scripts the agent created:Auto-healing
Cached scripts can break when a website changes its layout, adds new elements, or alters its structure. Auto-healing detects these failures and automatically regenerates the script.How it works
When a cached script runs, the system validates its output:- Fast checks (no LLM) — detects empty results, error fields in JSON, or exception keywords in output.
- LLM judge — if fast checks pass, a lightweight model validates whether the output looks correct for the original task.
- Heal — if validation fails, the full agent re-runs the task and saves an updated script.
Disable auto-healing
If you want the cached path to return the raw script output and avoid validation/healing LLM calls, disable auto-healing:Cost impact
| Scenario | Full agent LLM | Other LLM |
|---|---|---|
Cache hit, autoHeal: false, script does not call LLM helpers | $0 | $0 |
Cache hit, default autoHeal: true | $0 | Lightweight validation may run |
| Cache hit, script calls an LLM helper | $0 | Per-call LLM cost |
| Cache hit fails and auto-heals | Full agent cost | Validation cost |
Browser, fetch, and recordings
Cached scripts do not always use a browser. During the first run, the agent may discover that the fastest reliable implementation is a direct HTTP request with Browser Use’sfetch helper instead of browser navigation. That is expected for JSON APIs and many data-extraction tasks.
If you pass enableRecording: true, recordingUrls are returned only when a browser session actually records and the MP4 is ready. Direct-HTTP cached runs may have no recording because there was no useful browser interaction to record.
On cache hits, isTaskSuccessful can be null even when status is stopped and output is correct, because the full agent success judge was skipped. For deterministic reruns, treat the returned output and your own validation/schema checks as the source of truth.
Cost comparison
| Full agent LLM | Browser/proxy | Typical time | |
|---|---|---|---|
| First call (agent) | ~$0.05–1.00 | If needed | ~30–120s |
| Cached call | $0 unless auto-heal regenerates | If needed | ~3–15s |
Cached calls can still have small infrastructure cost. If the script uses direct HTTP only, there may be no browser recording even with recording enabled.