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

TargetLimit
Attached image20 MiB / file
Attached PDF50 MiB / file
Attached video200 MiB / file
Attachments in one message send10 files, 250 MiB combined
Project Media image20 MiB / file
Project Media PDF50 MiB / file
Project Media video2 GiB / file
Project Media total per Project20 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.

TargetContent limit
ImageWidth and height each up to 12,000 pixels; 100,000,000 total pixels; 64 animation frames
PDF500 pages; PDF stream decompression also has a 64 MiB limit
Attached video10 minutes
Project Media video60 minutes
All videoWidth 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

TargetLimit or format
One Project HTML file5 MiB
Project HTML total per Project50 MiB, 500 files
Shared Document1 MiB
Document kind nameUp to 32 characters; starts with a lowercase letter; lowercase letters, digits, _, and -
Ordinary document IDUp to 64 characters; starts with a lowercase letter or digit; lowercase letters, digits, _, and -
mindmap200 nodes
brainstorm100 ideas; each title up to 50 Unicode code points, description up to 200
task block100 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

TargetLimit
Ask question2,000 bytes
Ask body100,000 bytes
Each Ask option200 bytes
Meeting title1–120 characters
Meeting participantsUp to 50 names, each 1–120 characters
Meeting notesNonblank, 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

TargetLimit or condition
One Bundle file256 KiB
Entire Bundle1 MiB, 128 files
Relative path in a Bundle1–256 UTF-8 bytes
Steps in a Workflow1–64
Direct dependencies of one StepUp to 32
Dependency edges in a WorkflowUp to 256; cycles are not allowed
Rendered Session Step prompt100,000 bytes
Completion and Run output128 KiB, JSON depth up to 32
Attempt feedback body8,192 bytes
Published Workflow compositionOne 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

TargetLimit or condition
SQL input or migration file100 KiB
QueryOne SELECT / INSERT / UPDATE / DELETE statement
Query paramsA JSON array of up to 100 strings, referenced with positional ? placeholders
Query resultUp to 1,000 rows and 1 MiB of decoded result
MigrationUp to 100 statements, with a different allowed syntax from queries
WebUI page size25 / 50 / 100 rows
Migration ID1–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

TargetCondition
Project Trigger intervalAt least 300 seconds; an end time is required
Scheduled follow-up to an existing SessionInterval of 60–86,400 seconds
Calendar TriggerIANA timezone, local time, and one or more weekdays; a supplied end date is inclusive
Document matchExact 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

SurfaceHow to continue
Timeline and Session transcriptPass the returned opaque next.before to --before; use each command's --last range and default (CLI)
Workflow list/runsPass next_cursor to --before, or follow next_command when returned (CLI)
Trigger list and occurrence historyUse --cursor / --limit (1–100), following next_command for list or next_occurrences_command for history until null (Triggers)
Project Database WebUINumbered pages with 25 / 50 / 100 rows; changing table or sort changes the query (Database)
Inbox / bounded Session decision / matched excerptsThese 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.