Reference
Limits
Every cap the platform enforces, read from its source at build time.
Each value below is read from the code that enforces it when these docs are built, so the table matches what the platform does.
Projects and deployments
| Limit | Value | Notes |
|---|---|---|
| Project name | 64 characters | |
| Project slug | 40 characters | |
| Root directory | 256 characters | Also the output directory. |
| Build and install commands | 1,024 characters | |
| Deployments per page | 100 | |
| Recent deployments on a project | 20 | |
| Build log events returned | 2,000 | |
| Build compute memory | 4 GB | |
| Server function memory | 1,024 MB | |
| Server function timeout | 30 seconds | |
| si.json watch patterns | 50 | |
| si.json watch pattern length | 200 characters | |
| Build cache archive | 1,024 MB | Larger archives aren't saved. |
| Build cache kept | 14 days | After the last write. |
| Variables per .env import | 200 | |
| Deployment hostname label | 63 characters | Longer labels are cut. |
| Preview server functions kept | 14 days | Then the preview expires. |
| Production deployments kept serving | 3 | The current one and the most recent earlier ones; older ones expire. |
| Preview build artifacts kept | 30 days | |
| Runtime log window | 1 hour | |
| Runtime log lines returned | 500 | |
| Runtime log message length | 4,000 characters | Longer messages are cut and marked truncated. |
| Runtime log search time | 10 seconds | |
| Runtime log filter | 200 characters |
Crons
| Limit | Value | Notes |
|---|---|---|
| Crons per project | 20 | Entries after these are ignored. |
| Scheduling window | 5 minutes | A run starts up to this long after its scheduled time. |
| Retries after a failed run | 2 | |
| Request timeout | 2 minutes |
Environment variables
| Limit | Value | Notes |
|---|---|---|
| Name | 256 characters | |
| Value | 65,536 characters |
Storage and repositories
| Limit | Value | Notes |
|---|---|---|
| Resource name | 40 characters | |
| Description | 256 characters |
Domains
| Limit | Value | Notes |
|---|---|---|
| Hostname | 253 characters |
Git
| Limit | Value | Notes |
|---|---|---|
| File shown as text | 1 MB | Larger files and binary files aren't shown. |
| Branch list pages read | 5 | |
| Commits per page | 50 | |
| Commits analyzed for insights | 200 | |
| Insights history time per request | 8 seconds | A walk that runs out of time continues on the next request. |
| Folders scanned for languages | 80 | |
| Weeks of commit activity | 12 | |
| Contributors listed | 25 | |
| Files listed in a diff | 300 | |
| Files with line diffs | 60 | Later files are listed collapsed. |
| File size for line diffs | 512 KB | |
| Diff lines per view | 10,000 | |
| Issues and pull requests per page | 25 | |
| Comments shown per thread | 500 | |
| Issue title | 256 characters | |
| Issue body and comments | 65,536 characters | |
| Labels per issue or pull request | 10 | Each up to 50 characters. |
| Assignees per issue or pull request | 10 | |
| Files per web commit | 100 | |
| Content per web commit | 4 MB | Push larger changes with git. |
| File path length | 4,096 characters | |
| Folder depth | 20 | |
| Branch name length | 256 characters | |
| Review comment | 10,240 characters | |
| Raw file download | 4 MB | |
| Files listed at a ref | 10,000 | |
| Required approvals | 10 | |
| ZIP download files | 1,000 | Clone larger repositories. |
| ZIP download size | 25 MB | Uncompressed; no single file over 3.5 MB. |
| Open pull requests listed | 100 | |
| Pull request commits shown | 50 | |
| Pull request title | 150 characters | |
| Pull request description | 10,240 characters | |
| Merge commit message | 4,096 characters | |
| Git request timeout | 5 minutes |
Identity
| Limit | Value | Notes |
|---|---|---|
| Password length | 12 characters | Minimum; at most 256. |
| Sign-in session | 7 days | |
| App access token | 15 minutes | Renewed with the refresh token. |
| App refresh token | 30 days | Single use; each refresh issues a new one. |
| Authorization code | 1 minute | |
| Passkey prompt | 5 minutes | |
| Invite link | 7 days | |
| Key expiry | 365 days | 0 or empty means no expiry. |
Self-hosted agents
| Limit | Value | Notes |
|---|---|---|
| Login code | 15 minutes | |
| Login polling interval | 5 seconds | |
| Poll interval while idle | 15 seconds | |
| Poll interval after a job | 1 second | |
| Shown online after the last poll | 90 seconds | |
| Hosts on a device allowlist | 200 | |
| Hosts per job | 50 | |
| Job input | 300,000 characters | Serialized JSON. |
| Queued job lifetime | 7 days | Unclaimed jobs are skipped after this. |
| Queued jobs a poll looks at | 25 | The oldest ones. |
| Results upload URL | 1 hour | |
| Results download URL | 1 hour | |
| Results kept | 7 days | |
| Callback attempts | 5 | Then the callback is dead-lettered. |
| Callback request timeout | 1 minute | |
| Job label | 120 characters | |
| Fresh upload URL requested after | 45 minutes | |
| Retry delay after a failed poll | 1 minute | Maximum; starts at 1 s and doubles. |
Job type: http.batch
| Limit | Value | Notes |
|---|---|---|
| Requests per job | 2,000 | |
| Default delay between requests | 1 second | |
| Shortest delay | 250 ms | |
| Longest delay | 30 seconds | |
| Request timeout | 30 seconds | |
| Response body kept | 5 MB | Characters of text; longer bodies are cut. |
Job type: exec
| Limit | Value | Notes |
|---|---|---|
| Default timeout | 5 minutes | |
| Longest timeout | 30 minutes | |
| Output kept per stream | 1 MB | Characters of stdout and of stderr. |
Job type: browser.batch
| Limit | Value | Notes |
|---|---|---|
| Pages per job | 100 | |
| Time per page | 45 seconds | Including extraction. |
| Extraction time reserved per page | 5 seconds | |
| Wait for the load event | 15 seconds | |
| Longest waitMs | 20 seconds | |
| Scrolling time | 10 seconds | |
| robots.txt fetch timeout | 20 seconds | |
| robots.txt size read | 500 KB | |
| Default delay between pages | 8 seconds | |
| Shortest delay | 5 seconds | Also between jobs for the same origin. |
| Longest delay or crawl-delay | 1 minute | Sites asking for a longer crawl-delay are skipped. |
| Default captures per page | 10 | |
| Most captures per page | 50 | |
| Captured response body | 5 MB | Characters; longer bodies are cut. |
| HTML kept | 2 MB | Characters. |
| Results per job | 50 MB | Pages after this get output_limit. |
| Page id | 200 characters | |
| Page URL | 4,000 characters |
MCP
| Limit | Value | Notes |
|---|---|---|
| Request timeout | 1 minute | |
| Context value | 100,000 characters | |
| Context entries per list page | 50 | |
| Connector tools on the MCP server | 200 | Across all connectors. |
Connectors
| Limit | Value | Notes |
|---|---|---|
| Connectors per organization | 50 | |
| Slug | 24 characters | |
| Credential | 4,096 characters | |
| Tool discovery timeout | 15 seconds | |
| Tool call timeout | 30 seconds | |
| Tool list pages read | 10 | |
| Tools cached per connector | 100 | |
| Tool description kept | 2,000 characters | |
| Size of one cached tool | 32,000 bytes | Larger tools are skipped. |
| Size of all cached tools | 300,000 bytes | |
| Exposed tool name | 64 characters | |
| Response size | 4 MB | |
| Connection timeout | 10 seconds |
Database explorer
| Limit | Value | Notes |
|---|---|---|
| Items per page | 100 | |
| Filters per scan or query | 10 | |
| Attributes in a projection | 50 | |
| Item size | 400 KB | DynamoDB's own limit. |
| Attributes included in an index | 20 | |
| Tags per change | 40 |
Storage browser
| Limit | Value | Notes |
|---|---|---|
| Files per list page | 1,000 | |
| Upload size | 5 KB | Per file. |
| Files per upload request | 100 | |
| Upload link lifetime | 15 minutes | |
| Download link lifetime | 5 minutes | |
| Files per delete request | 1,000 | |
| CORS rules | 20 | |
| Lifecycle rules | 50 | |
| Lifecycle expiry | 3,650 days |
| Limit | Value | Notes |
|---|---|---|
| Messages sent per day | 500 | Default plan, per organization. |
| Recipients per message | 50 | Default plan. |
| Message size | 25 MB | Default plan. |
| Message size on any plan | 40 MB | The Amazon SES maximum. |
| Attachments per message | 50 | |
| Addresses per To, Cc or Bcc | 500 | |
| Subject | 998 characters | |
| Signature | 20,000 characters | |
| Labels per mailbox | 200 | |
| Conversations per action | 100 | |
| Members per mailbox | 100 | |
| Search words used | 5 | Words of 2 or more characters. |
| Text searched per message | 8,000 characters | After the subject and people. |
| App passwords per person | 50 | For Apple devices. |
| Signed-in Apple devices per person | 50 | Devices set up with a sign-in profile. |
| Apple device sign-in kept unused | 90 days | Each refresh extends it. |
| Approval code from another device | 5 minutes | Works once. |
| App password expiry | 3,650 days | 0 or empty means no expiry. |
| Wrong app passwords per address and network | 10 | Per 15 minutes; then sign-ins pause until the window ends. |
| Wrong app passwords per address | 50 | Per 15 minutes, from anywhere. |
| Changes per device sync | 512 | iPhone and iPad; the device asks for more until it has everything. |
| Messages per folder on a device | 5,000 | The newest within the device's Mail Days to Sync. |
| Search results per device request | 100 | iPhone and iPad Mail search and directory lookups. |
| Unsent upload kept | 1 day | Attachments uploaded but never sent. |
Knowledge
| Limit | Value | Notes |
|---|---|---|
| Page content | 1,000,000 bytes | Stored JSON of blocks and Markdown. |
| Text indexed for search | 4,000 characters | From the start of each page. |
| Pages in the tree | 2,000 | |
| Rows returned with a database | 1,000 | |
| Search results | 20 | |
| Favorites per person | 200 | |
| Search terms used | 8 | |
| Nesting depth | 64 | |
| Properties per database | 50 | |
| Options per select property | 100 | |
| Text property value | 2,000 characters | |
| Page title | 200 characters | |
| Earlier versions kept | 30 days |
Chat
| Limit | Value | Notes |
|---|---|---|
| Message length | 200,000 characters | |
| Tool steps per answer | 25 | |
| Response time | 14 minutes |
Platform API
| Limit | Value | Notes |
|---|---|---|
| Request timeout | 30 seconds |