Skip to content

Limits and retention

The consolidated limits table. Values come from the product as audited — if something isn’t listed here, it isn’t documented as a limit.

What Window
Trash (access groups, features, tables, workflows, notes, secrets, MCP servers, apps, connections, automations, Saved Agents) 30 days, then permanently purged. Restoring inside those 30 days brings the item back as it was — with one exception: a deleted PostgreSQL change capture connection restored more than 24 hours later comes back without its place in the source database’s change history, so it re-copies every selected table (row below)
A paused or deleted PostgreSQL change capture connection keeps its place at the source 24 hours. Resume or restore inside that window and capture continues from exactly where it stopped; after it, the next successful collection copies every selected table from the beginning. The connection page says which side of the line you are on, and gives you the deadline
A reservation Ronja cannot release on your own PostgreSQL Retried for 30 days, then Ronja stops and tells your admins. From then on it is yours to remove with pg_drop_replication_slot on the database — see When Ronja cannot release the reservation. A role that lost REPLICATION after the connection was set up is never releasable by Ronja, however long it retries
Trash page listing Most recent 100 items per section
Organization deletion cooling-off 7 days — contact Ronja support to restore before then
Execution-trace detail Kept 1 year after the run started. A workflow that pauses and continues keeps ONE trace for the whole pipeline, so the clock runs from the first run of the chain
A workflow that keeps pausing Given up on after ~11 months from the first run of the chain, with a message saying so. That is one month before its trace would be removed, so a paused chain never outlives its own trace. Work that needs to keep going longer belongs in an automation on a schedule
A decided (or expired) run-approval request Kept 1 year, then deleted — the run itself and its trace keep their own windows
Run history (workflows, automations, Saved Agents) Kept 1 year, then each run and its logs are removed from the list. A workflow that pauses and continues is kept as a whole: nothing in a chain that is still running is removed, however long the chain has been going. Files a run saved are not removed with it and stay in Files
Connected-mailbox chat read history Cleared 7 days after a chat reads a mailbox thread
A conversation in a Chat with Agent panel Kept 1 year after the last message. This covers the panel on a Saved Agent’s page and the chat panel in an app; a conversation you come back to starts the year again from that message. Once removed, the transcript is gone and the panel opens on a new, empty conversation. Explorations are not affected
Attachments that arrive by email 1 year — this covers both attachments Ronja pulls out of a connected mailbox and attachments on mail sent to your organization’s Ronja address. Move one into a folder in Files and it is kept for good: filing it is what tells Ronja you want it. Anything left loose in Files is cleaned up after a year — with two other exceptions: a mailed file you have added to a Codex is kept as long as the Codex points at it, and a mailed file that was in a folder somebody later deleted is kept for good. Deleting a folder puts everything inside it back loose in Files, but Ronja remembers those files were filed once and leaves them alone
Connected-mailbox search by an automation, when no age is given Looks back 7 days — Ronja can search further back when she needs to. Searching a mailbox yourself in a conversation is not limited
Notifications (the bell) 1 year, read or unread. Cleared automatically, about once an hour. An unread notification is never cleared sooner than a read one — it is still the only copy of an alert nobody has seen
Activity page counts (people, topics, app opens, table reads, what was built from chats) Cover at most the last 90 days — the longest time window is 90 d. A person’s status looks back over the past year of visits
Audit log Keeps a year of events. The list browses about the newest ten thousand events in the selected time window
A feature export The download stays available 1 year from when the export was made, then the export and its file are deleted. Export again for a fresh copy
Login-domain verification link Valid 72 hours
What Limit
Images (PNG, JPEG, GIF, WebP) 20 MB per file
Documents (PDF, DOCX, PPTX, …) 100 MB per file
Text and code files 5 MB per file — only the first ~50 KB is sent to Ronja (a “truncated” badge appears)
Data files (CSV, TSV, XLSX, Parquet) No fixed size cap in the picker. Older Excel 97–2003 (.xls) workbooks, and workbooks that need a password to open or carry a sensitivity label, can’t be read — save them as an unprotected .xlsx first (Supported formats)
Files attached to a single message 50 in the app — chat attachments, and a drop onto the home page. Over Slack or Teams, 10 per message; anything beyond that is skipped and Ronja names the files she couldn’t take
Zip unpacked automatically Up to 25 files, 150 MB of contents, and 10 images — a bigger archive is listed instead of unpacked, and unpacked on request (Zip archives)
Zip unpacked on request 200 files and 1 GB per request — ask again for the rest
What Limit
File push API Parquet only · 1 GiB per file
Connection sync cadence Minimum once per hour; interval mode up to 8,760 hours
Feature export 512 MiB per table · 4 GiB per export — over-cap tables export metadata only
A Derived table written in SQL Built as one file of at most 2.5 GB, from input tables holding at most 4 GB in all. A build over either is refused with an error naming the limit. Over the 2.5 GB output: split the table into smaller tables, or narrow its SQL. Over the 4 GB input, which counts each input table’s whole size whatever the SQL reads of it: build it from fewer or smaller input tables. Its SQL may be several statements whose last is a query (SELECT, WITH … SELECT, FROM or VALUES), and may be a PIVOT without an IN list; a last statement that is not a query is refused
Column name sent in fields (Row push API) 1024 bytes — a longer name is refused with a 400 rather than stored
Sending several tables at once 100 tables per release call. A held rebuild nobody releases is released automatically about 15–20 minutes after the table’s first held write
Migrations for a managed database 1,000 per folder sent · at most 40 not yet applied in one push — a bigger push is refused, naming the last migration that fits
Column documentation for names a table’s data does not have 1,000 per table, and 1,000 names per request. On a Dynamic table the names declared at create count toward the per-table budget until the first write, which drops the ones the data did not produce

These hold wherever SQL over Ronja tables runs — in a chat, a chart, an app, a health check, a workflow, a script Ronja writes, or through the API and CLI. Each place may stop sooner: its own row cap or timeout, listed with it.

What Limit
Table data one query reads 4 GB across the tables it names, each counted at its whole size: filtering or selecting fewer columns does not change it. A query over it is refused with the actual size — read fewer or smaller tables (a derived table that aggregates a large one, for example). No SQL query or SQL build can read a single table over 4 GB: split it into smaller tables
Memory and time A query too large for the warm query tier gets 9 GB of memory, 2.5 GB of disk to spill to and 13 minutes. One that needs more fails with an error naming what it ran out of; there is no larger compute to retry on (The data platform)
A query’s answer 64 MB. A larger answer is refused — select fewer columns, filter or aggregate
A table read in a workflow (tools.query) One answer of at most 2.5 GB, as a Parquet file — 64 MB for a query that reads no table. A larger one is refused: narrow the query, or build the result as a Derived table
One tools.query One statement that returns rows — a SELECT, WITH … SELECT, FROM …, VALUES, DESCRIBE, SUMMARIZE, or a PIVOT with an IN list. Several statements (a leading SET included), a PIVOT without an IN list, EXPLAIN, PRAGMA, CREATE and COPY are refused
What Limit
Favorites 10 per type in each Space — “Max 10 favorites in your Space — unfavorite one there to add another”, or “Max 10 favorites outside the Spaces you can open — unfavorite one to add another” for chats and apps in no Space you can open
Favorites kept in all 250 per type, counting favorites of apps in the trash and of chats or apps you can no longer open — past it, adding one shows “You have 250 saved favorites of this kind, including ones in the trash or that you can no longer open — remove some to add another”
Sidebar exploration lists Your last 50 + the last 50 shared with you
Notification panel Your most recent 50 — the panel says how many more there are, and the unread count on the bell always covers all of them
Prompt queue One queued prompt at a time; attachments can’t be queued
Conversations with an Agent answering at the same time 10 per person — the Chat with Agent panel on a Saved Agent’s page shows one conversation, so working normally never reaches it; waiting for a reply to finish frees a slot
Conversation length No fixed cap. Once a thread outgrows what the model can read in one go, Ronja summarises the earlier turns and carries on, telling you she has (Explorations). The full transcript stays on the page
Tangent fork point Can’t branch from very old points — roughly 5,000 messages back (“this point is too far back to branch from”)
Tangent return summary 100 KB
“Add to chat” text selection 2,000 characters
Styled (HTML) note body 512 KiB — plain notes are not capped
Your policy 10,000 characters
Organization policy 20,000 characters
Policy version history The last 50 versions of each policy are kept; History lists the 20 most recent, each restorable
Document version history The 25 most recent earlier versions of each document or PDF; older ones drop off. A deleted version can’t be recovered
Personal memory (still read in conversations; Ronja no longer adds to it) 2,000 characters
Search (⌘K) Minimum 2 characters; up to 40 results shown
Past conversations Ronja searches when you ask her to find one The 500 you most recently worked in. Older conversations are not searched, and she says so when a search reached that far back — ask her to list your chats instead and she covers all of them
Managed database joined into a question Up to 5 databases in one question, joined with Ronja tables that hold under about 1 GB between them. Each read of the database stops after 60 seconds, and a question that runs out of time is not retried — filter the database side, or mirror the database instead
Ronja reading Ronja’s own API for you in a chat 20 calls per reply. Past that she is told to narrow what she is fetching — one listing usually replaces a loop over ids — or to carry on in her next reply. Another agent she hands work to gets its own allowance
What Limit
Workflow run timeout 10 minutes by default; 4 hours on dedicated compute — including a workflow whose code is too large for standard compute, which Ronja runs there. A run on dedicated compute can take a few minutes to start, and the wait for a machine does not count toward its 4 hours
Wait for a dedicated compute machine 40 minutes. When every machine is busy, a run waits up to 40 minutes for one to become free; if none does, it fails saying it never started, and nothing ran
Function return value shown inline 8 KB
Files saved by one run 200. A run that saves more keeps the first 200, in the order they were saved; the rest are not delivered
An interactive chart a run draws in Python 5 MB. Over that the code is told, with the fix (fewer points, fewer traces); a chart file that is over the limit anyway is not drawn — the card says how big it is, and the file can still be downloaded
A picture a run draws in Python 10 MB per picture, as a PNG or JPEG. An SVG is refused rather than shown: save one as an ordinary file instead, which is downloadable but not displayed
Spawned agents listed per run 200 (shown as “200+” past the cap)
Tables a workflow writes to A workflow’s code may name at most 1,000 tables to write to, and one run may write at most 1,000, including tables it creates by name. A run over it is refused before any table is written
Tables a workflow reads · secrets · Saved Agents · Codexes it references 100 each
Managed database joined in a workflow Read-only. Up to 5 databases in one query, joined with Ronja tables that hold under about 1 GB between them. At most 100,000 rows come back; when the workflow does not set a row limit, a bigger answer is refused, not cut short — filter or summarize the database side
Workflows one workflow may run 32
Connected mailboxes a workflow may send as 8
Folders a workflow may write files into 16
Run starts from one workflow run 60 at once, then 5 per second as the allowance builds back up — starting a Saved Agent and starting another workflow both count against it. A batch of parallel starts fits inside the burst, so an ordinary fan-out is not torn in half
Links to pages in Ronja from one workflow run 300 at once, then 30 per second as the allowance builds back up. Past that the request fails straight away with a rate-limit error — a workflow does not wait and try again — so ask for each link once and reuse it
Saved Agent runs at once, per organization 60 unless an admin has changed it for your organization
How far ahead a run may pause 1 year. A Durable workflow that asks to wait until a moment further out than that is refused when it tries to pause
How long a Waiting run stays paused 14 days past the moment it was due to continue. A Durable workflow that pauses and cannot be woken by then is failed, with a message saying why
How long a run stays Awaiting approval 7 days by default; the workflow’s author can set anything up to 14 days. Nobody decides by then and the request expires and the run fails — see Monitor runs and traces
How long an agent waits at one go 24 hours. An agent that asks to wait longer is refused and told to use an automation instead
How many times one agent run may wait 5. Past that it is told to finish with what it has, or to set up an automation
How long an agent run may live in total 72 hours from when it started, waiting included
What Limit
Source files 1 MiB per file · 256 files per module
Modules one workflow may import 32
What Limit
Agent chain depth 3 generations when one agent runs another directly; 6 when the chain goes through workflows. Past it the run is refused with an explanation
Declared references on one Saved Agent 100, counted across every kind together — an Agent asked to carry more is refused when it is saved, naming the cap
Agent runs at once 60 per organization unless an admin has changed it — further starts are refused until in-flight runs finish
Paused runs 50 per organization, counted across both kinds of pause together — runs waiting for someone’s reply and runs waiting on a timer or another run. Past that, an agent that would have paused finishes with what it has and says what was missing instead
How long a run waits for a reply 3 days by default, between 1 and 14 days if the Agent sets its own — then the run continues without an answer
Questions one run may ask 5. Past that the run carries on without asking again
Questions to one person per day 10 per person per organization (rolling 24 h). Past that the agent is told to try tomorrow or ask someone else
How much of a reply Ronja reads 8 KB — several pages of text. A longer reply is read up to that point and the run is told plainly that the rest was cut, so a fragment is never mistaken for the whole answer
Files sent with a question 10 files, 25 MB total. Email only — a question asked over Slack cannot carry files and is refused if it tries. From an Outlook mailbox the ceiling is about 3 MB per message (Microsoft’s limit); an oversized send is refused before anything goes out
Messages Ronja can send in one conversation 20 — the first question, every follow-up, and every closing message together (the person’s own replies don’t count). Past that the run carries on without contacting them again
How long a conversation stays open 30 days after its most recent message, pushed out again by each new one. Continuing a conversation works for questions sent from a connected mailbox and for questions asked over Slack; one sent from Ronja’s own address gets one answer and stops there
Questions open in one conversation One at a time
How long a closed conversation is kept 7 days after it stops being open, then Ronja’s record of the conversation is deleted. A conversation still waiting on an answer is never deleted
What Limit
Schedule trigger Minimum interval 1 hour
Webhook trigger 1,000 runs per rolling 24 h · 1 MB request body · signed requests within a 5-minute window
Table trigger 50 runs per rolling 24 h · at most 25 watched tables
Event trigger 5,000 runs per rolling 24 h across all event automations (per-organization loop-safety ceiling)
Mailbox trigger Filters are optional; at most 50 entries per filter list. Only mail arriving after the automation is enabled is picked up, and mail is looked back over a few hours only
Attachments a mailbox trigger reads 20 files per message, each up to 25 MB, and 100 MB per message in total. Reading them as a search instead — in a conversation, or from a Saved Agent working the inbox — is capped at 50 files per search. Anything skipped is named, with the reason
Automation rate limit (webhook, email, event & mailbox) Per-automation two-window throttle — system defaults 60 runs/minute and 1,000 runs/day; an admin sets the per-organization default and a max ceiling on the Automation limits page in the sidebar’s Billing & Control group (Admin only)
Email trigger Chained automation depth capped at 4
Address / URL rotation About once per minute
Automations shown on the Automations page 200. An organization with more sees the first 200, and a line under the list says how many it is showing out of how many there are. The filters and Search automations reach only the automations the page has, so they cannot find one past the cap
Declared resource references per automation 200
What Limit
Email recipients Ronja can send to from her own address 500 per organization per day (rolling 24 h)
Email recipients Ronja can send to as a connected mailbox 500 per mailbox per day (rolling 24 h) by default — an Admin sets a Daily send limit on the mailbox card, up to 10,000
Recipients on one email 20, counting the main recipients and anyone copied in (Cc) together

The split is by which address the mail came from. Everything Ronja sends as one of your connected mailboxes — a reply in a chat, a reply or new email from an Automation or Saved Agent, a question she emails, and mail a workflow sends — draws on that mailbox’s own Daily send limit, and never on the organization-wide cap. Everything she sends from Ronja’s own address draws on the organization-wide cap, and never on a mailbox’s limit.

So the Daily send limit on a mailbox card is the whole answer to “how much mail can leave this address in a day”, whoever or whatever asked for it. Each connected mailbox has its own budget, independent of the others and of the organization-wide cap.

All of these count recipients, not messages: one email to ten people counts as ten. People copied in (Cc) are recipients like any other: they go through your organization’s email policy and count toward whichever budget applies. There is no Bcc — see Copying people in.

Questions to a person count too, when they go out as email. A question an Agent emails is a recipient like any other and goes through your organization’s email policy. Which budget it draws from follows the same rule as everything else: a question sent from a connected mailbox draws one from that mailbox’s Daily send limit, and a question sent from Ronja’s own address draws one from the organization-wide cap. It also has its own, much tighter limits on top (5 questions per run, 10 questions to one person per day, 50 paused runs per organization) — see Saved Agent runs above. Every later email in the same conversation — a follow-up question, or a closing message that needs no answer — is a recipient again and draws from whichever budget applies. A question asked as a Slack message is not email and touches neither the policy nor either budget.

What Limit
Properties per organization 20
Values per property 500
Values one person has on a Several values property 20
Property name · value name · description 60 · 128 · 280 characters
Import from file 1 MB and 1,000 people per file, and at most 5,000 operations per import (each value given, and each property or value created) — the preview names the limit before you apply
What Limit
Source files 5 MiB per file · 100 files per app · 50 MiB total · app icon (icon.svg): 16 KiB
Server functions Each call gets 10 s, or up to 30 s when the app asks; 4.5 s of computing time; 64 MB of memory; and about 4.5 MB in each direction. A call to an outside service gets at most 30 s and a 5 MB answer, and a search of a Codex at most 10 s and 50 matches. A call to the AI, and a wait for a workflow it starts, fit inside the call’s own time. A function can join up to 2 managed databases with the app’s tables in one read by default, also within the call’s time. Each person using an app has at most 2 Codex searches and AI calls, and 2 workflow calls, going at a time on each of Ronja’s servers. A function Ronja has to stop by force twice within ten minutes, for running past its time, is turned off for an hour, or until a fixed version is published. Calls count toward the app’s query rate below
Attached tables / secrets / Codexes / Saved Agents / workflows / metrics 100 each
Query results 1,000 rows by default; hard cap 100,000. When a query hits the cap the app says so, so the person looking at it knows they are seeing only part of the result — a notice across the top by default, or the app’s own “showing the first N” line where it already states it in place — see Open it standalone
Query rate 60 queries/second, with a burst allowance of 600. Unused allowance builds back up continuously, so an app that loads many panels at once is fine — only a runaway loop sustains enough traffic to be throttled. A throttled call is retried automatically before your app ever sees it
Links to pages in Ronja 300 at once per app session, then 30 per second as the allowance builds back up. A throttled link is retried automatically, so only an app linking many hundreds of different pages at once gets near it
Chat panel conversations answering at the same time 10 per person — a panel shows one conversation, so a normally built app never reaches it; waiting for a reply to finish frees a slot
Replies in one chat panel conversation One at a time. Sending again while a reply is still arriving is refused rather than queued — wait for the answer, then send
Messages in one chat panel conversation 100 from the person, across the life of the conversation
External database query timeout 60 s
In-browser result decoding Every query an app runs is answered by Ronja, and the results are turned into rows inside the person’s browser. Loading the reader that does it has a 60 s limit; past it the app shows an error instead of loading indefinitely — see Troubleshooting. An App built before that reader moved inside it still starts a separate decoder, with 60 s to start it the first time it reads data and 60 s for each result after that; after a start-up times out it waits before trying again, beginning at a minute and lengthening while it keeps failing, so a retry inside that wait is refused straight away. Asking Ronja to update the App, and publishing that change, removes that decoder
Server-side fetch proxy 10 MiB request/response · 30 s timeout
Version history Up to 100 snapshots
App session 1 day, one per app address per browser: the app in Ronja, in a new tab and in Fullscreen share it, and opening or reloading the app reuses it until the day is up, then signs you in to the app again on its own (an open chat panel conversation still does not survive a reload). Signing out, being removed from the organization, or having your account deleted ends the session within 30 seconds — an app left open in another tab stops loading data by then and needs a fresh sign-in
What Limit
Stations per organization 100 that are not disconnected — disconnect one to add another
Apps per station 20
Rotate every 10 seconds to 24 hours
Query rate on a station Each App on the station has its own allowance, the same as one person’s above. A station showing 20 Apps can therefore use up to 20 times one App’s

An inline app is the interactive answer that lives inside one conversation, and its limits are the conversation’s rather than an App’s.

What Limit
Inline apps in one conversation 4. Asking for a change to one you already have rewrites it in place and does not count; a fifth new one is refused
Rewrites of one inline app 40 from scratch. Ronja usually changes one by patching a file, which is not counted, so a normal back-and-forth never reaches it
Source files 24 files · 512 KiB total per app
Query rate The same 60 queries/second with a burst allowance of 600 as an App — but the allowance is per person, per conversation, shared by every inline app in that chat. A colleague reading the same conversation has their own allowance, so nothing you do can throttle theirs
In-browser result decoding Results are decoded inside the person’s browser by a small reader loaded from Ronja itself — no tens-of-megabytes download and no third-party network — so the first read is fast. Loading that reader is still bounded at 60 s, and past it the app shows an error instead of waiting (see Troubleshooting). There is no per-result decode limit
Repairs Ronja makes herself 2 per app, per conversation. She checks each app she writes and rewrites it if something came out broken; after the second repair she stops and tells you what is still off
Lifetime The conversation’s. It is deleted with the chat, and there is no version history — keep one with Make it an App
What Limit
Tags per resource 20
Tags per organization 500 distinct tags
Tag name length 64 characters
What Limit
Open move requests 100 per user
Request notes, decision reasons, move rationales 4,000 characters each
Table / app drafts One open draft per person per resource
Edit draft on a shared resource Removed 30 days after it is created, whether or not you are still editing it
Proposal awaiting review Removed 30 days after it is filed
Active content health checks per table 20
Active freshness checks per table 1
Freshness check interval 5 minutes – 90 days; from the CLI or the API, whole hours: 1 hour – 90 days
What Limit
Spaces per organization 20
Notification email recipients 47
Daily AI safety limit The lower of your organization’s own limit and Ronja’s limit for your organization, in credits per day counted as on your bill. When today’s AI use reaches it, all AI pauses for everyone until 00:00 UTC, when the day resets; workflows that don’t use AI keep running, and so does Ronja’s own background work, such as naming chats, which still counts
Role changes taking effect on active sessions Up to ~2 minutes