# AI agent limits and quotas

> Every limit on a DiceyTable AI agent in one place: call rates, keys and sessions, pairing codes, file sizes, URL imports, screenshots and play-test tools.

- Question: What are the limits on what an agent can do?
- Source: https://diceytable.com/docs/ai-agents/reference/limits
- Last verified: 2026-10-09

DiceyTable puts a cap on how fast an agent can work and how big its files can be. The caps keep your tab smooth, keep
the shared servers fair, and stop a confused agent from running away with your project. Every number is below, grouped
by what it limits.

When an agent hits a limit, it gets an error code that names it, such as `rate-limited` or `too-large`. The code and
its fix are in [AI agent error codes](https://diceytable.com/docs/ai-agents/reference/errors). None of these limits depend on your plan.
AI agent access is free on every plan.

## How fast can an agent call tools?

Your tab counts calls for each agent session. Each kind of call has its own allowance. A session may spend a burst
at once, and then the allowance refills at a steady rate. A call over the limit answers `rate-limited` with the wait
in milliseconds.

| Kind of call | Steady rate | Burst |
|---|---|---|
| Reads | 50 a second | 100 |
| Writes (edits in the editor, lobby and settings) | 20 a second | 60 |
| Table actions (`table_*` changes, and any write on a table or preview tab) | 15 a second | 30 |
| Screenshots, `describe_panel` and `capture_surfaces` | 2 a second | 4 |
| Diagnostics tools | 10 a second | 20 |
| Calls refused before they run (unknown tool, wrong tab, bad arguments) | 5 a second | 20 |

A batch call counts once for each thing it changes. For example, a `fields_set` with 10 values counts as 10 writes.
One batch never costs more than the burst, so a legal batch always gets through in the end.

## Keys, sessions and pairing

| Limit | Value |
|---|---|
| Active access keys per account | 10 |
| Key lifetimes you can pick | 7, 30, 90 (the default) or 365 days |
| Agent sessions connected at once, per account | 5 |
| Tabs paired with one session | 16 |
| Pairing code lifetime | 5 minutes |
| Wrong tries per pairing code | 5 |
| Pairing ticket lifetime (the bridge renews it while it runs) | 5 minutes |
| Bridge heartbeat | every 30 seconds |
| A session with no heartbeat ends after | about 90 seconds |
| Time to answer a confirmation dialog | 120 seconds, then it counts as **Deny** |
| Agent name (`--client-name`) | The bridge keeps 64 characters; the AI badge other players see shows at most 32 |

[Pair a DiceyTable tab with your agent](https://diceytable.com/docs/ai-agents/setup/pairing) explains codes and tickets, and
[create an API key](https://diceytable.com/docs/ai-agents/setup/api-keys) covers key lifetimes.

## How big a file can an agent import?

A file has two limits. One is how big it can be on the way **in**. The other is how big it can be once it is
**stored** in your project, after any conversion.

| Limit | Value |
|---|---|
| A file read from your computer, or fetched from a URL | 128 MB |
| A stored file in your project | 50 MB |
| A stored `.onnx` AI model | 64 MB |
| A stored `.hdr` sky | 10 MB |
| A stored file you can still publish from the app | 45 MB (bigger files save with a warning) |

[Import models, images and sounds with an agent](https://diceytable.com/docs/ai-agents/workflows/importing-assets) walks through an
import.

## URL imports

| Limit | Value |
|---|---|
| Longest URL | 2,048 characters |
| Redirects followed | 5 |
| Time to connect / to the first byte / in total | 10 s / 30 s / 120 s |
| Fetches per key | 60 a minute |
| Bytes per key | 5 GB in any 24 hours |
| Fetches running at once | 2 per account, 4 on the whole server |

[How URL imports are fetched safely](https://diceytable.com/docs/ai-agents/concepts/url-imports) explains each outcome these limits can
cause.

## Screenshots

| Limit | Value |
|---|---|
| Default long edge | 1,280 px |
| Smallest and largest edge | 16 px to 2,576 px |
| Default `maxBytes` | 600,000 bytes |
| Largest `maxBytes` | 5,000,000 bytes |
| Largest image over the relay | about 400,000 bytes |
| Entities one capture can frame or crop to | 200 |
| Time to click **Allow tab capture** for exact capture | 60 seconds |
| Quiet time after you decline exact capture | 10 minutes |
| Exact capture stops by itself after | 5 minutes unused |

## Connections

| Limit | Value |
|---|---|
| Message size between a tab and the hub on your computer | 8 MB |
| Message size over the relay | 2 MB |
| Bridges using the relay at once, per account | 5 |
| Tabs using the relay at once, per account | 20 |

[How the bridge works](https://diceytable.com/docs/ai-agents/concepts/how-it-works) explains the hub and the relay.

## Play-test and diagnostics tools

| Limit | Value |
|---|---|
| Assertions in one `table_assert` call | 100 |
| Steps in one `table_step_physics` call | 1 to 600 |
| `table_wait_settled` timeout | 100 ms to 60 s (default 10 s) |
| Rows the diagnostics hub keeps | 2,000 (the oldest drop first) |
| Rows in one `diagnostics_get` page | 500 |
| `diagnostics_watch` wait | 30 s by default, 60 s at most |

The [diagnostics sources reference](https://diceytable.com/docs/ai-agents/reference/diagnostics) has the hub's other limits.

## Related

- [AI agent error codes](https://diceytable.com/docs/ai-agents/reference/errors): what each refusal means.
- [Bridge command line reference](https://diceytable.com/docs/ai-agents/reference/bridge-cli): the ports and flags behind these numbers.
- [Take screenshots with an agent](https://diceytable.com/docs/ai-agents/workflows/screenshots): how to stay inside the image budget.
