Capacity, input, and execution limits
Limits and input units for attachments, Media, HTML, documents, Asks, Workflows, Project Database, and Triggers, with ways to reduce or split oversized content.
A Session attachment and a Project Media publication can have different limits even for the same file. Choose the destination and file type before using these tables.
A KiB is 1,024 bytes, a MiB is 1,024 KiB, and a GiB is 1,024 MiB. Byte limits are not character limits: a UTF-8 character can occupy multiple bytes. These are input and storage constraints, not guarantees of execution time or availability.
Attachments and Project Media
| Target | Limit |
|---|---|
| Attached image | 20 MiB / file |
| Attached PDF | 50 MiB / file |
| Attached video | 200 MiB / file |
| Attachments in one message send | 10 files, 250 MiB combined |
| Project Media image | 20 MiB / file |
| Project Media PDF | 50 MiB / file |
| Project Media video | 2 GiB / file |
| Project Media total per Project | 20 GiB |
The Project Media limit of 2 GiB applies to video, not to images or PDFs. Unsupported formats and encrypted PDFs can be rejected even when their size is within the limit. Attachments are not automatically published to Project Media, and a Media canonical URL is not a public share link.
Content constraints apply in addition to byte limits. For example, a 20-minute MP4 attachment or a 501-page PDF is rejected even when the file is small.
| Target | Content limit |
|---|---|
| Image | Width and height each up to 12,000 pixels; 100,000,000 total pixels; 64 animation frames |
| 500 pages; PDF stream decompression also has a 64 MiB limit | |
| Attached video | 10 minutes |
| Project Media video | 60 minutes |
| All video | Width up to 3,840 pixels and height up to 2,160 pixels, not an interchangeable equal-area limit |
Resize large images to the needed resolution, split PDFs into the relevant pages, and reduce video duration or bitrate. Changing the extension does not bypass format validation. See Media and attachments in WebUI.
HTML and Shared Documents
| Target | Limit or format |
|---|---|
| One Project HTML file | 5 MiB |
| Project HTML total per Project | 50 MiB, 500 files |
| Shared Document | 1 MiB |
| Document kind name | Up to 32 characters; starts with a lowercase letter; lowercase letters, digits, _, and - |
| Ordinary document ID | Up to 64 characters; starts with a lowercase letter or digit; lowercase letters, digits, _, and - |
| mindmap | 200 nodes |
| brainstorm | 100 ideas; each title up to 50 Unicode code points, description up to 200 |
| task block | 100 tasks |
Put completed images, PDFs, and similar assets in Media and reference them from HTML or documents. Embedding a large file as base64 counts toward the HTML file's size. Split long documents into independently readable pieces and connect them with WikiLinks.
PROJECT.md and REPORT.md have reserved purposes and uppercase paths. A valid path does not override frontmatter syntax or permission requirements. See Shared Documents, HTML, and Markdown blocks.
Asks and Meetings
| Target | Limit |
|---|---|
| Ask question | 2,000 bytes |
| Ask body | 100,000 bytes |
| Each Ask option | 200 bytes |
| Meeting title | 1–120 characters |
| Meeting participants | Up to 50 names, each 1–120 characters |
| Meeting notes | Nonblank, up to 100,000 bytes |
Do not pack long source material into an Ask question or option. Put a decision summary and references in the body. The Ask body limit also applies to a rendered Workflow Decision body.
Workflows
| Target | Limit or condition |
|---|---|
| One Bundle file | 256 KiB |
| Entire Bundle | 1 MiB, 128 files |
| Relative path in a Bundle | 1–256 UTF-8 bytes |
| Steps in a Workflow | 1–64 |
| Direct dependencies of one Step | Up to 32 |
| Dependency edges in a Workflow | Up to 256; cycles are not allowed |
| Rendered Session Step prompt | 100,000 bytes |
| Completion and Run output | 128 KiB, JSON depth up to 32 |
| Attempt feedback body | 8,192 bytes |
| Published Workflow composition | One level, using a published Workflow in the same Project |
Bundle file limits differ from the prompt limit after input and dependency outputs have been substituted. A short template can still exceed the rendered limit with large input. Store large artifacts as Project documents or other assets, and return small values and references in Step outputs.
Inputs and outputs must match their declared schemas. Objects require additionalProperties: false, so select only the declared keys when passing one Workflow's output into another. Staying within a size limit does not make undeclared keys or incorrect types valid. See CLI for invocation syntax.
Project Database
| Target | Limit or condition |
|---|---|
| SQL input or migration file | 100 KiB |
| Query | One SELECT / INSERT / UPDATE / DELETE statement |
| Query params | A JSON array of up to 100 strings, referenced with positional ? placeholders |
| Query result | Up to 1,000 rows and 1 MiB of decoded result |
| Migration | Up to 100 statements, with a different allowed syntax from queries |
| WebUI page size | 25 / 50 / 100 rows |
| Migration ID | 1–128 characters; starts with a lowercase letter or digit; lowercase letters, digits, _, and - |
An oversized query result is rejected rather than returned partially. Select the columns and rows you need, using WHERE and an appropriate LIMIT. The 100-parameter limit counts values supplied to placeholders, not rows written.
Live queries do not overlap within one Project. Do not repeatedly send a mutation that is still in progress or whose outcome is unknown; follow the error's read guidance to inspect current state. Build migrations from the parent version in schema.sql, then explicitly apply the synchronized file.
Triggers and scheduled follow-ups
| Target | Condition |
|---|---|
| Project Trigger interval | At least 300 seconds; an end time is required |
| Scheduled follow-up to an existing Session | Interval of 60–86,400 seconds |
| Calendar Trigger | IANA timezone, local time, and one or more weekdays; a supplied end date is inclusive |
| Document match | Exact equality on string, number, or boolean frontmatter values in the same Project; multiple conditions are ANDed; fires at most once |
A Trigger starts a fresh Session or Published Workflow. A scheduled follow-up adds a turn to an existing Session. Their interval limits and stop controls differ. Preview time schedules before creating them and check the actual next occurrences.
When a limit error appears
First identify the destination, input, or result that exceeded its limit. File size, UTF-8 bytes, a rendered prompt, and decoded SQL output measure different things. Reduce the content or move it into referenced artifacts, then verify the operation's result.
Within these limits, permissions, supported formats, Project status, disk capacity, and provider availability can still prevent an operation. Consult Permissions and Troubleshooting. If an operation's outcome is unknown, establish whether the original request was accepted before submitting changed content as another request.
Pagination is specific to the surface
| Surface | How to continue |
|---|---|
| Timeline and Session transcript | Pass the returned opaque next.before to --before; use each command's --last range and default (CLI) |
| Workflow list/runs | Pass next_cursor to --before, or follow next_command when returned (CLI) |
| Trigger list and occurrence history | Use --cursor / --limit (1–100), following next_command for list or next_occurrences_command for history until null (Triggers) |
| Project Database WebUI | Numbered pages with 25 / 50 / 100 rows; changing table or sort changes the query (Database) |
| Inbox / bounded Session decision / matched excerpts | These are bounded views, not a cursor-based full history. Use the suggested history read; Inbox does not paginate (Sessions, CLI) |
Do not interchange cursors, page numbers, and row limits or treat the first page as the entire result. Workflow Bundle/schema constraints are in Workflow reference; date and dispatch constraints are in Triggers.