> ## Documentation Index
> Fetch the complete documentation index at: https://docs-preview.webcompute.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Limits

> Reference practical Webcompute limits for browsers, browser-code execution, observations, variables, events, quick actions, MCP, and agent workflows.

Limits keep browser runs stable, tool responses readable, and agent loops bounded. Prefer smaller observed steps over one large unbounded operation.

## Browser lifecycle

| Limit                        | Value                      | Source                             |
| ---------------------------- | -------------------------- | ---------------------------------- |
| Default browser max duration | `86400000` ms, or 24 hours | `BrowserCreateOptions.maxDuration` |
| Browser engine               | Chrome                     | Current managed runtime            |

## Browser-code execution

| Limit                            | Value                                                                     |
| -------------------------------- | ------------------------------------------------------------------------- |
| Default execution timeout        | `30000` ms                                                                |
| Maximum execution timeout        | `120000` ms                                                               |
| Maximum browser-code body        | `256 KiB` UTF-8                                                           |
| Runtime action max body size     | `128 KiB`                                                                 |
| Default runtime evaluate timeout | `30000` ms                                                                |
| Default navigation timeout       | `30000` ms                                                                |
| Default PDF timeout              | `30000` ms                                                                |
| Maximum runtime action timeout   | `60000` ms for direct runtime actions that use the runtime action limiter |

For SDK and MCP browser-code execution, `page` is already in scope. Returning very large values can still make responses hard to use even when execution succeeds.

## Observations and capture

| Limit                                       | Value             |
| ------------------------------------------- | ----------------- |
| Default browser-code observation characters | `20000`           |
| Maximum browser-code observation characters | `50000`           |
| Maximum observation depth                   | `8`               |
| Maximum observation timeout                 | `10000` ms        |
| Maximum observation locator length          | `2000` characters |
| MCP default observation kind                | `aria`            |
| MCP default observation depth               | `5`               |
| MCP default observation timeout             | `8000` ms         |
| MCP default observation characters          | `20000`           |

Activity capture limits:

| Limit                | Default | Maximum |
| -------------------- | ------- | ------- |
| Pages                | `20`    | `50`    |
| Navigations per page | `5`     | `20`    |

## Agent variables

| Limit                                       | Value            |
| ------------------------------------------- | ---------------- |
| Maximum variables                           | `50`             |
| Maximum variable name length                | `120` characters |
| Maximum variable value size                 | `16 KiB` UTF-8   |
| Maximum scoped allowed domains per variable | `20`             |
| Maximum scoped domain length                | `255` characters |

## Agent runs

| Surface                           | Limit                                                                                                                 |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| MCP `run_web_agent.maxTurns`      | Maximum `50`                                                                                                          |
| MCP `run_web_agent.maxToolCalls`  | Maximum `50`                                                                                                          |
| MCP `run_web_agent.toolTimeoutMs` | Maximum `120000` ms                                                                                                   |
| MCP `run_web_agent.outputSchema`  | Maximum serialized size `64 KiB`; external refs are rejected.                                                         |
| CLI `web agent`                   | Exposes `--max-turns`, `--max-tool-calls`, `--timeout-ms`, and `--tool-timeout-ms`; values must be positive integers. |
| SDK `web.agent()`                 | Exposes `maxTurns`, `maxToolCalls`, `timeoutMs`, `toolTimeoutMs`, and `maxOutputTokens`.                              |

## Quick actions

| Action                                            | Limit or default                                                                           |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Scrape timeout                                    | Default `30000` ms                                                                         |
| Scrape `waitFor` timeout in session-scoped scrape | Default `5000` ms                                                                          |
| Scrape content cap                                | Default `20000` characters, maximum `50000`                                                |
| Scrape tree extraction                            | Bounded at 200 nodes and depth 10 when `extract: "tree"` is used on session-scoped scrape. |
| Screenshot timeout                                | Default `30000` ms                                                                         |
| PDF timeout                                       | Default `30000` ms                                                                         |
| PDF bytes                                         | Runtime maximum `100 MiB`                                                                  |

## Browser resources and events

| Limit                            | Value               |
| -------------------------------- | ------------------- |
| Browser event product payload    | `16 KiB`            |
| Browser event diagnostic payload | `64 KiB`            |
| Browser event string field       | `4 KiB`             |
| Browser event array items        | `50`                |
| Browser event list items         | `100`               |
| Browser event list payload       | `1 MiB`             |
| MCP `manage_browsers.limit`      | Maximum `100`       |
| CAPTCHA resolve timeout in MCP   | Maximum `120000` ms |

## SDK retries

Default SDK retry config:

| Field                   | Default                           |
| ----------------------- | --------------------------------- |
| `maxRetries`            | `3`                               |
| `initialIntervalMs`     | `500`                             |
| `maxIntervalMs`         | `30000`                           |
| `exponent`              | `1.5`                             |
| `jitter`                | `true`                            |
| `retryableStatusCodes`  | `429`, `500`, `502`, `503`, `504` |
| `retryConnectionErrors` | `true`                            |

## Practical guidance

When you approach a limit:

* Split long browser work into smaller observed steps.
* Write bulky output to files or downloads instead of returning it from browser code.
* Keep observations scoped with locators.
* Use `maxChars`, `limit`, `cursor`, and pagination fields instead of requesting everything.
* Move multi-step, stateful flows to managed browsers or SDK agent sessions.
