Skip to content

Troubleshooting

Find your symptom, check the likely cause, apply the fix. Exact product messages are quoted where they help you match what you’re seeing.

Symptom Likely cause Fix
Banner “Build failed” on the table page The last build errored: its SQL or Python failed, or what the table asks for can’t be produced from its input tables (a column it needs isn’t there). Usually the table has never built successfully — but see the next two rows for the cases where it has Expand the banner — it explains what stopped the build, naming the missing column or table. An Admin can rebuild once the input problem is fixed — or ask Ronja to fix it in an exploration
Banner “Build failed” saying an input table no longer exists — but the table still shows data One of the table’s input tables was deleted. Every rebuild from now on fails the same way, so the table is flagged as broken rather than merely stale, even though its last good data is still there to query An Admin restores the deleted input from Trash, or edits the table to point at a different input (or drop it). Restoring the input puts the table back in the rebuild queue on its own
Banner “Build failed” saying the table would read itself through its inputs — but the table still shows data The table reads itself, directly or through other tables, so every rebuild is refused the same way. Its last good data is still there to query Rebuilding won’t help. Break the loop: open the inputs of this table, or of another table on the loop, remove one that is part of the loop, and commit the change. See Builds
Banner “Build failed” saying the build ran out of memory or time and there is no larger compute to run it on The build needs more than the compute every table build runs on: 6 GB of memory, 7 GB of spill disk and 14 minutes. Rebuilding won’t help — it is not retried, and fails the same way until the table changes Ask Ronja to make the build lighter: read fewer columns, filter before joining, aggregate earlier — or, if each row is computed on its own, build it in pieces
Banner “Out of sync — showing data from last successful build” The most recent build failed, so you’re seeing the last good data. Either an input changed, or the rebuild couldn’t produce the table from its inputs any more — an input that lost a column is the usual cause Expand the banner to read why the rebuild failed, then have an Admin rebuild — or use Investigate with Ronja in the banner
Banner “Showing data from … Updates have failed since …:” or a Not updating marker on the table The table’s rebuilds have been failing since the time shown, so it is still answering with the data from its last successful build. The reason after the colon is the latest attempt’s Fix what the reason names — usually an input that changed — then have an Admin rebuild, or use Investigate with Ronja in the banner. The banner and marker clear on the next successful build. See When a table stops updating
“No data available. Build the table to see results.” The table has never been built. On a Dynamic table it means nothing has been written to it yet Run the build (Admin), or push files then POST /build for file-fed tables. For a Dynamic table, write rows to it — there is no build for this kind, and a query against it works meanwhile, returning no rows
Building a Derived table fails because an input is a Dynamic table that has never been written to, or one that was just cleared A Dynamic table can be queried before its first write and after it is cleared, but nothing can be built from it until it is written to: a clear removes its data and its column types, not just its rows. After a clear, the Derived table keeps showing its data from before the clear Write rows to the input table. A published Derived table then rebuilds on its own; one still in draft needs rebuilding after the write. If you wrote right after a clear and the Derived table still shows its data from before the clear, rebuild it
Building a Derived table fails with “input table … has no data to read — its last build or sync produced no data files” The input’s last build or sync finished without producing any data: an Integration table whose last sync brought in no files, or a Derived table whose last build published nothing Rebuild or re-sync that input, then rebuild this table if it doesn’t follow on its own. If the input is a Dynamic table, write rows to it instead — there is no build for that kind
Table stuck on “Building table…” A build is still running — larger tables build in pieces Wait; the page updates live as the build progresses

More on statuses: table types.

Symptom Likely cause Fix
Run shows red “Failed” The Python errored Open the run: the Log tab has the full output (errors in red); the Steps tab shows exactly which step failed. Ask Ronja to fix the workflow in an exploration
Run succeeded but shows a yellow “degraded” badge A best-effort step failed while the run completed Open the Steps tab to find the failed step — decide whether it matters
The run succeeded, but a number in its output is null (empty), and Warnings from this run says some numbers were not finite The workflow produced a value that is not a real number — a missing value, or a division by zero. Ronja cannot carry those, so it delivers them as null rather than failing the run If the difference matters, ask Ronja (or whoever built the workflow) to handle missing values or divisions by zero before the workflow returns its result
“this workflow requires approval and cannot be run from this entry point” The workflow carries a legacy Pre-run approval gate (labelled Deprecated on its page) — it can only run from a chat where an approver signs off Run it through an exploration, or ask Ronja to convert it to a mid-run approval, which works from every entry point and keeps the same approvers — see Approval before a run
Testing, publishing, submitting for review or restoring a version of a workflow is refused, saying “runtime 1 and 2 are retired” It is an older workflow, on a runtime Ronja has retired. It keeps running as it is, but its code — and its parameters, the file Ronja runs first, its packages, and the tables, secrets, Agents and modules it uses — can no longer change until it is brought up to date. Restoring an earlier version is a change to its code too Ask Ronja to bring it up to date: she rewrites how it reads its tables and moves it to the current runtime in the same change. If you meant only to rename it or change its settings, discard the draft and make that change on a new one. If the message says the live workflow has moved since your draft was taken, discard the draft and open a new one. If it says a run is in flight, pause the automation that starts the workflow and let its waiting runs finish (decide their approvals, answer their questions), then try again. See Create a workflow
Picking up a failed run where it stopped is refused, saying the run “started on runtime 1 and the workflow has since moved to runtime 3” The run began on the oldest runtime, before the workflow was brought up to date, and the steps it finished were recorded in a way the current runtime can’t reuse Start a new run instead. Steps the old run finished run again, so check before re-running a workflow that sends mail or writes to another system
Run refused with a credits message The organization’s wallet is empty — an empty wallet blocks workflow runs too The Super Admin can buy credits on the Billing page
Starting a workflow or Saved Agent is refused, naming a run that is already going (a 409 over the API) It is set to Skip if a run is in progress, so a start arriving while one of its runs is still going is refused — skipped, not queued. Nothing failed, and no run is recorded Open the run the message names and wait for it, or ask Ronja to let that workflow or Agent overlap again — see Concurrency
A workflow or app refused a call with “not published yet” The workflow it runs is still a draft, or waiting for review. A workflow can point at one of your own unpublished workflows while you build, but nothing may run it — test runs included — until it is published Publish the workflow being run (commit the draft, or have an Admin approve it). Nothing else has to change: the call itself is correct and stays as it is
A workflow or app refused a call with “archived — unarchive it” The workflow it runs was archived. An archived workflow is not runnable from anywhere, including an app’s run button Unarchive the workflow, or take it out of the workflow or app that runs it — ask Ronja to remove the call, or edit the app’s list of workflows
Run refused before it starts, naming the file the workflow runs first and saying it has no executable statements Every line in that file is blank or a comment — often it is still the starter placeholder, because the workflow runs a different file than the one your code is in Put the workflow’s code in the file the message names, or point the workflow at the file that already holds it — ask Ronja to change it
A run shows Success in a second or two with nothing to show, or works only on some runs The file the workflow runs first wraps its code in if __name__ == "__main__":. On standard compute that block is skipped; on dedicated compute, which Ronja also picks on its own for a workflow whose code is too large for standard compute, it runs — so the same workflow does its work on some runs and nothing on others. Saving it gave a warning, but nothing refuses it Drop the if __name__ == "__main__": line: move the code under it to the top level of the file, or define main() and call it at the end of the file with no if around it — on a Durable workflow, end with result = main() and then a last line holding just result. Ask Ronja to make the change if you did not write the code yourself
Run refused before it starts, saying a required parameter is blank — often an automation nobody changed that now fails on every run The parameter is required and has no default value, and the value it was given is empty or only spaces. For an automation, that is its saved value or the field its trigger fills the parameter from — a value saved before the parameter was made required fails on every run Give it a value: edit the automation’s saved value, or make sure the trigger sends that field with content. If an empty value is legitimate, ask Ronja to make the parameter optional. A select with a fixed list of choices is refused as not one of its choices instead — ask Ronja to add an empty choice to the list. See Parameters
Run failed with “recursion depth exceeded” or a message about being too many chained runs deep The chain of Agents starting workflows starting Agents went deeper than Ronja allows. Chains this long are nearly always an accidental loop Ask Ronja to flatten the chain — start the Agent from the workflow that begins it rather than from one nested inside it. A previously-working pipeline can hit this the first time it runs after the limit began applying
Run failed with a message about the Agent needing to be started without waiting The workflow waits for a Saved Agent that is set up to ask a person and wait for their reply — an Agent that stops to ask someone must be started and left to it Ask Ronja to change the workflow so it starts the Agent and moves on instead of waiting. See Create a Saved Agent
Run times out around 10 minutes The default execution window is 10 minutes Ask Ronja to enable dedicated compute for the workflow (1-hour window; a run can take a few minutes to start)
Run fails after about an hour, or runs out of memory, and the message says dedicated compute would not help The run already ran on dedicated compute — Ronja also runs a workflow whose code is too large for standard compute there — and used its whole 1-hour window, which includes the wait for a machine to start, or used all the memory dedicated compute has Ask Ronja to change the workflow so each run does less: process the data in smaller chunks, narrow the date range, or split the work across several runs. Turning dedicated compute on changes nothing — it was already on
Run fails after about an hour saying it never started and nothing ran The run was waiting for a dedicated compute machine to become free, and none did within its 1-hour window. Nothing ran, so nothing was changed Run it again later. If it keeps happening at the same time of day, several large runs are starting together — ask Ronja to spread out the automations that start them
A workflow’s extra Python package (one listed under pipPackages) fails to install Workflows run on 64-bit ARM Linux with Python 3.13. A package that contains compiled code installs only if it publishes a build for Linux on ARM (aarch64) for Python 3.13 Ask Ronja to pin a version of the package that publishes one, or to use a pure-Python alternative
Run failed at an approval step saying an approver isn’t a member of the organization Every approver has to be somebody with a Ronja account in this organization. An address with no account behind it is refused at the step rather than mailed and never answered Ask whoever built the workflow to name people who are members — “ask the finance team to approve before it posts” — or invite the person first. With nobody named at the step and no approvers set on the workflow itself to fall back on, the run fails at that step for the same reason
Run sits at Awaiting approval and nobody was emailed The named approvers all left the organization between the moment the run asked and the moment the email went out Open the run: the card names who it is waiting on. An Admin can always decide a run that is already waiting
Run failed right after the workflow was republished, while it was Awaiting approval An approved run never continues on a new version of the workflow. Publishing an edit while a run waits ends that run rather than resuming it against code the approver never saw Re-run it — the decision has to be made on a run that starts on the current version. Land workflow edits when nothing is waiting on a decision. See Mid-run approvals

Full guide: Monitor runs and traces.

Symptom Likely cause Fix
Row shows “Paused” The automation is disabled — deleting its access group also pauses it Flip the toggle back on
Webhook calls return 429 “daily webhook run cap reached” The 1,000 runs / 24 h quota is used Wait for the rolling window, or reduce caller frequency
Table trigger stopped firing The 50 runs / 24 h loop-safety cap was hit Check what’s rebuilding the watched tables that often
A Mailbox automation shows off and nobody paused it Its connected mailbox was disconnected. Ronja switches the automations watching it off rather than leaving them green against a mailbox that’s gone Connect a mailbox again on the Mailboxes page, then point the automation at it: open the automation, pick the newly connected mailbox in its trigger, save, and switch it back on. A reconnected mailbox is a new mailbox even at the same address, so re-enabling alone is refused. Re-enabling starts from that moment, so mail from while it was off isn’t worked through
A Mailbox automation still reads Active but nothing fires The mailbox itself has stopped working — its authorization needs reconnecting, or a check is failing. Unlike a disconnect, nothing is switched off and nothing is marked Open the Mailboxes page and look at that mailbox’s card; Reconnect if it asks you to. The automation resumes on its own — there’s nothing to re-enable
A Mailbox automation didn’t fire on mail already sitting in the inbox Only mail that arrives after you enable it counts. Enabling — or re-enabling after a pause — never replays a backlog Ask Ronja to work through the backlog in an exploration. Nothing makes the trigger reach back
Mailbox runs stopped part-way through a busy day The per-automation cap — 1,000 runs / 24 h, and 60 per minute — was reached Wait for the rolling window, or narrow Filters (optional) so fewer messages fire it
Email trigger ignores messages The sender isn’t on the allowlist (unlisted senders are dropped silently), or the routable address was rotated Add the sender’s address or domain to the allowlist; re-copy the current routable address
“Address pending — set your org’s ingest prefix in Governance → Organization rules.” The org-wide email ingest prefix hasn’t been set An Admin sets it once at Governance → Organization rules
Run now does nothing and a grey line says the automation is already going One of that automation’s own runs has not finished. That includes a run that is only waiting — for an approval, or for someone to answer a question — which can sit there for days Open the run the message names and see what it is waiting for. If it is waiting on a person, answer it; if it is waiting on an approval, approve or reject it. Once that run ends, Run now works again. Nothing was lost: a refused press starts nothing and records nothing
Runs in the history read Skipped The workflow or Saved Agent this automation runs is set to Skip if a run is in progress, and one of that resource’s runs was still going when this fire arrived — so the fire was refused. A summary that begins “Not retried:” means the automation was turned off, changed or deleted while Ronja waited to retry a workflow it couldn’t start. On a Table automation there is a third kind: a queued catch-up re-run that found every table it watched gone — which needs the automation to have been pointed at other tables first, since Ronja refuses to delete a table while one watches it Nothing to fix: a refused fire’s row names the run that was in the way, and a Skipped entry is neutral rather than a failure. Nothing for you to re-run on a Table automation either — it runs once more shortly after the blocking run finishes, however many changes arrived meanwhile, unless its last three runs that actually ran were all such re-runs, when the row says it was not re-queued; other trigger kinds do not replay a refused fire. To let the fires overlap, ask Ronja to change the setting on that workflow or Agent — see Concurrency
Runs in the history read timeout The run was still going when the part of Ronja running it restarted, so Ronja closed it rather than leave it open for good. This is not the 10-minute execution window above, and nothing is wrong with the automation Run it again. No alert is sent for one of these, so if you are watching for failures, check the run history rather than waiting to be told
Every fire fails at an approval gate The action is a workflow with a legacy Pre-run approval gate — those fail closed on automations Ask Ronja to convert it to a mid-run approval (which automates fine), or point the automation at another workflow or a Saved Agent — see Approval before a run

When a Saved Agent or automation pauses to ask a person something, the reply is picked up silently — and when a reply is not accepted, that is silent too. Ronja never writes back to say a reply was ignored, so the run simply keeps waiting.

Symptom Likely cause Fix
The run reports nobody answered, but the person is sure they replied The reply came from a different address than the one Ronja asked — a personal account, or a forwarded copy answered by someone else Reply from the exact address the question arrived at. Only that address counts
Same, and they replied from the right address The reply was an out-of-office or other automatic reply, or had no readable text in it at all — an attachment with nothing typed above it, or a message whose formatting carried no text Reply again with typed text in it. A reply that quotes the original is fine, whether or not there is text above the quote
Same, with real text, from the right address, and the question came from one of your own connected mailboxes Their mail system couldn’t confirm the reply was genuinely from them. For questions sent from your own mailbox, Ronja reads the sender checks the receiving mail server ran and refuses a reply those checks don’t positively confirm — including one they couldn’t confirm either way Ask your mail admin whether the sender’s domain publishes a sender-verification policy (they’ll know it as DMARC). Until it does, replies from that domain can’t be accepted for these questions, and the run waits out its full window. Questions sent from Ronja’s own address are unaffected — they’re accepted on the reply address alone
Same, and the reply was very long Ronja reads about the first 8 KB of a reply — several pages — and says in the run when one was cut short Reply again with the important part near the top, or a shorter answer
The run says it asked from your organization’s mailbox but can’t be answered Ronja lost track of which mail thread the question went out in, so no reply can be matched back to the run Nothing to fix — the run says so plainly and continues without the answer rather than claiming nobody was asked. Re-run it if the answer mattered
The run finished without asking anyone at all A limit was hit: 5 questions per run, 10 questions to one person per day, or 50 paused runs across the organization The run says what it was missing. Wait for the daily window, or check whether other runs are sitting paused — see Limits and retention
Ronja sent a closing message (“thanks, that’s all I needed”), the person replied to it, and nothing happened A message that needs no answer ends the exchange — nothing is listening for what comes after it Nothing to fix. When Ronja still needs something back she asks a follow-up question instead, which does wait for a reply — see Carrying on the conversation
The run says it couldn’t write back into a conversation it had already opened The conversation ran out: 20 messages from Ronja, or 30 days since its last message. An Admin detaching the mailbox from the Agent or automation stops conversations that are already open too, as does narrowing the mailbox’s Compose recipients or the organization’s Agent email policy — and on Slack, the person leaving your organization Nothing is sent, and the run carries on rather than starting an unrelated new message. If the exchange still matters, re-run it so it opens a fresh conversation

Full guide: Create a Saved Agent.

The laid-out answer of Standard and Deep analysis says so in place when it can’t show you everything.

Symptom Likely cause Fix
The answer ends on “Answer cut short — ask to continue.” Ronja ran out of room mid-answer. What is above the line is complete and correct — it is the rest that never arrived, not a figure that came out wrong Ask her to continue, or to carry on from the last section — she picks up where she stopped. Asking a narrower question next time keeps a long answer whole
“A chart couldn’t be drawn from its spec and was left out.” at the foot of the answer — or “N charts couldn’t be drawn from their specs and were left out.” for more than one. Copy the answer out, or read it in Slack, Microsoft Teams or email, and the same loss is worded differently, in the answer’s list of caveats: “A chart could not be drawn from the spec it was given, so it was left out of this answer.” / “N charts could not be drawn from the specs they were given, so they were left out of this answer.” Ronja described that chart in a way it can’t be drawn from. The mistake is in her description of the picture, not in the numbers or in the data behind them. Rather than lose a finished answer over one figure, she keeps the answer and leaves the chart out — and says so, so a missing figure is never silent The rest of the page — the words, the key figures, the tables and the Sources — is complete and correct, and nothing in it is missing because of this. Asking the whole question again means waiting out the whole page a second time, and it may well come back the same way, so ask for just that figure instead (“chart revenue by month”), or ask for those numbers as a table
“1 block couldn’t be displayed.” at the foot of the answer — or “N blocks couldn’t be displayed.” for more than one — with no mention of a chart Different problem: Ronja composed a part of the answer in a shape this version of Ronja can’t draw at all — not a chart she couldn’t draw, but a kind of content the page doesn’t know Everything else on the page is unaffected and correct. Ask for that part again (“show me that as a table”) and she’ll use a shape that renders
“The formatted answer couldn’t be laid out.” where the laid-out answer would be Ronja’s attempt at the laid-out answer was rejected and the corrected one never arrived. Anything she wrote above that line still stands and is unaffected Read what’s above the line first; it is often the whole answer. If it isn’t, ask the question again, and ask for a plain answer without charts if it happens twice on the same question
“Couldn’t lay out the formatted answer — composing it again…” with a pulsing dot Ronja’s attempt at the laid-out answer was rejected and she’s composing a corrected one. It says nothing about anything written above it — that text is hers and is unaffected Wait; the laid-out answer fills in on its own. Only worry if the conversation itself has stopped (no work block ticking, no stop button)
A Sources table is badged stale, build failed, not updating or needs rebuild Not a problem with the answer — a problem with the data under it. The numbers are real, but the table behind them is out of date, broken, no longer updating, or waiting on a rebuild Click through to the table and see A table build failed above, or When a table stops updating for not updating. A badged source is exactly the case where you should check before acting on the number
You asked for a bar chart’s value axis to start above zero, and it still starts at 0 A bar’s length is the value, measured from zero. An axis that starts at 24 would draw a value of 25 as a sliver and 34 as ten times taller — a ratio that is not in the data. So on a bar chart a requested range can widen the axis but never cut off the zero end Ask for a line or a dot chart, where a fixed range is honoured exactly as asked. Or keep the bars and let the labels carry the precise values
Two or more bars stand side by side at one category, under an amber note reading N of M bars hold more than one value — each is drawn as its own bar The data behind the chart holds more than one row for that bar. Rather than add them up and show you a total nobody asked for, Ronja draws every value as its own bar and says so. A stacked bar chart is the exception — it stacks them, because stacking is its point. Stacked segments keep their sign, so a negative value (a refund, a write-off) hangs below the zero line rather than adding to the bar it reduces Ask Ronja to total or average the values per category, or to filter the data down to one row per bar. Either way the chart comes back with one bar per category

Two kinds of message land here, and both are quoted below exactly as a viewer sees them. The ones beginning [ronja] come from the decoder an app loads the first time it reads data: that step has a time limit, and when it runs out the app says so rather than showing a spinner that never stops. A published App loads its decoder from a public content delivery network; an inline app loads a smaller reader from Ronja itself, so the two fail with different messages. The rest are plain sentences, and they mean the database behind the app refused or stopped the query — the database’s own wording is deliberately kept back from the screen and sent to whoever maintains the app instead.

Symptom Likely cause Fix
“[ronja] DuckDB-WASM did not boot within 60s — parquet results cannot be decoded (is cdn.jsdelivr.net reachable?)” The decoder is fetched from a public content delivery network the first time an app reads data, and it did not arrive within 60 s. Usually the network the viewer is on: a corporate proxy or firewall blocking cdn.jsdelivr.net, or a very slow connection Reload the app. If it repeats for everyone on one network, ask whoever runs it to allow cdn.jsdelivr.net. Nothing in the app or its data is wrong — the same app works for anyone who can reach that address
The same message again, straight away, on a retry that took no time at all Working as designed. After a start-up times out, the app refuses to try again for a wait that starts at a minute and lengthens while it keeps failing, so that a page left open does not stack up abandoned attempts. The refusal reuses the same wording Wait a minute and reload. A fast failure here is the app declining to retry yet, not a second timeout
“[ronja] DuckDB-WASM did not decode the result within 60s” The decoder started, but one result took more than 60 s to read — a very large result is the usual reason Narrow the query (fewer rows or columns, or a filter), or ask Ronja to. Reloading clears the decoder if it got stuck
“[ronja] the parquet reader did not load from this app’s own origin within 60s — query results cannot be decoded” or “[ronja] the parquet reader could not be loaded from this app’s own origin…” An inline app in a conversation. Its reader comes from Ronja’s own address, not a CDN, so this is not a blocked network — reloading almost always fixes it Reload the page. If it repeats, Ronja itself is unreachable from that network (the rest of the page will be failing too); ask your admin
An app is slow only the first time someone opens it Not an error: starting the decoder is a download of tens of megabytes, so the first query on a freshly opened app is normally a second or more slower than every query after it Nothing to fix. If you are looking at timings, compare the second query rather than the first
“Someone else changed the same data at the same moment, so this didn’t go through — try again.” Two people — or two open tabs — saved the same record at the same instant, and the database rolled one of them back. Nothing was saved Do it again. It normally works the second time. If it happens constantly on a busy screen, tell whoever maintains the app
“This took too long and was stopped, so it didn’t go through — try again, and tell whoever maintains the app if it keeps happening.” The database stopped the query for running too long and rolled it back. Nothing was saved Try again. If it keeps happening, tell whoever maintains the app — a query that slow needs changing rather than retrying
“This app ran into a problem it can’t fix on its own — let whoever maintains it know.” Something the app asked the database for was wrong — a renamed column, a mistake in how the app builds its query. Reloading changes nothing, because nothing about the app is different the second time Tell whoever maintains the app, or ask Ronja to fix it. The database’s own wording, which this message deliberately leaves out, reaches them with the report

Limits: Apps · Inline apps.

A PDF side panel shows an error instead of the document

Section titled “A PDF side panel shows an error instead of the document”
Symptom Likely cause Fix
The panel says The viewer didn’t load. The viewer that draws a PDF inside the panel is fetched from a public content delivery network the first time you open a PDF. Usually the network you are on: a corporate proxy or firewall blocking cdn.jsdelivr.net, or a very slow connection Click Try again — on a slow connection it often works the second time. Otherwise click Open in a new tab under the message to read it in your browser’s own viewer, or use the panel’s Download control. If it repeats for everyone on one network, ask whoever runs it to allow cdn.jsdelivr.net. Nothing is wrong with the file — it opens normally for anyone who can reach that address
Symptom Likely cause Fix
Badge “Re-auth needed” / “Authorization expired. Please re-authorize this connection to resume syncing.” The OAuth token expired or was revoked Click Re-authorize on the connection page (Admin)
“connection is disabled” The connection’s toggle is off Re-enable it, then Sync
“connection is already syncing” A sync is in flight Wait, or Stop the current sync first
Amber badge Degraded Nothing failed — the connection is still syncing, but a change-capture condition on it will cost you if it is left. On a PostgreSQL change capture connection that is the source running low on retained changes, a reservation that has gone or been discarded (the next collection then re-copies every selected table), a connection capturing nothing because no tables are picked, or a first copy that could not finish Open the connection page: it names the condition. Act on that, not on Sync — see When something goes wrong
“replication is stalled — re-snapshot to resume” The connection mirrors a managed database, and replication paused because Ronja could not read new changes from it for several hours. Sync is unavailable on the connection page while that lasts, so this wording reaches you from the API or the CLI Click Re-snapshot on the connection page (Admin): every table is copied fresh and replication resumes from there. Read what a fresh snapshot does not carry first — Mirror a database into a feature with CDC
“syncing is paused — the MySQL server no longer has the changes Ronja needs; first make the server keep binary logs longer than the time between syncs plus the time a full copy takes, then Reset the connection on its page in Ronja to copy it again” A MySQL (CDC / binlog) connection is Stalled: the MySQL server deleted binary logs Ronja had not read yet, so Ronja cannot continue from where it stopped and paused the connection. Syncing it again meets the same wall, so Sync is refused — on the connection page and from the API or the CLI First make the server keep binary logs longer than the time between syncs plus the time a full copy takes (how), then click Reset on the connection page (Admin). The next sync reads every table once from your server and replaces the change history Ronja held for this connection
“removing this connection’s previous files did not finish, so it was not reset and syncing is still paused — click Reset again to continue (files already removed stay removed)” You clicked Reset on a Stalled MySQL (CDC / binlog) connection. Reset removes the connection’s previous files before it restarts syncing, and gives that step under a minute; a connection with a great many files, or a storage hiccup, can need more. The connection simply stays paused; files already removed stay removed Click Reset again — it carries on from the files already removed. If it keeps saying this, contact support
“syncing is paused — every table of this connection continues from the one binary-log position the MySQL server no longer has, so resetting one table cannot recover it; first make the server keep binary logs longer than the time between syncs plus the time a full copy takes, then Reset the whole connection on its page in Ronja” You reset a single table of a Stalled MySQL (CDC / binlog) connection — the reset arrow beside the table on the connection page. Every table of the connection continues from the same point in the server’s binary logs, and that point is gone Reset the whole connection instead: first fix the server’s binary-log retention, then click Reset on the connection page (Admin)
“connection config is incomplete — check your settings” (or “select a database and tables”, “select at least one file or folder to sync”, …) No tables, datasets, or files have been selected yet — no data is fetched until at least one is Open the connection and complete the dataset/table selection
Red error banner on the connection page The last sync failed; the banner shows what failed — for a source Ronja could not reach, Ronja’s own summary first and the source’s words after “Details:”; otherwise the source system’s error verbatim Fix the upstream issue (credentials, network, permissions) and Sync again — or ask Ronja for help in an exploration
“Ronja could not read this connection’s saved sync bookmark, so it stopped the sync instead of re-reading tables into data it already holds. It retries on every scheduled sync. If this persists, an Admin can Reset the connection to re-import every table from scratch, or contact Ronja support.” Ronja keeps a bookmark of how far each table has synced, and could not read it. Rather than start every table over and import rows your tables already hold a second time, it stopped the sync. Your tables keep their last data Wait for the next scheduled sync, which tries again. If the message persists, an Admin clicks Reset on the connection page: every table is re-imported from scratch, which can take a while for large tables. Or contact Ronja support. Clicking Sync again does not help
“Could not connect to the … database” Ronja never reached the source (or its SSH bastion) on that run, so nothing was synced and your tables keep their last data Check the server and the credentials as described in Fix data issues, step 4, then Sync again
A table on a SharePoint connection’s page shows the amber warning Password-protected workbook — cannot process The workbook needs a password to open, or carries a sensitivity label that encrypts it. Ronja skips that file and syncs the rest of the library Put an unprotected copy, or a CSV export, in the library. In a folder synced as one table, the file is left out of that table
A table on a SharePoint connection’s page shows the amber warning Not an Excel workbook — cannot process The file is named .xlsx but isn’t an Excel workbook — often a CSV or web page some other system exported. Ronja skips it Replace it with a real .xlsx, or save it as .csv
A table on the connection page shows an amber warning starting “replace deferred:” Nothing failed. The table is re-read in full every run, and this run’s copy could not be swapped in — most often because the table was being rebuilt at that moment. The previous copy is kept, so the table shows its last good data and its last-synced time does not move Nothing to do: the next run tries again on its own, and the warning clears
An amber warning starting “replace failed:” or “replace incomplete:” This run’s copy of a re-read-in-full table could not be moved into place (“replace failed”), or it is in place but the previous copy could not be cleared away (“replace incomplete”), so Ronja did not rebuild the table from it. The table keeps showing its previous data Nothing to do: the next run tries again and clears the leftovers. If the same table shows it run after run, contact support
A table shows Failed, and its message says the source is a read replica that cancels long queries The table is re-read in full, in one long query, and it points at a PostgreSQL read replica — which on default settings cancels a long query when the primary cleans up rows it is reading Point the connection at the primary, or on the replica raise max_standby_streaming_delay or set hot_standby_feedback = on. Either way out holds back cleanup on the primary for as long as the read runs
A table shows Failed with “the full-refresh scan exceeded its 2h budget” Re-reading the whole table took longer than the 2 hours one table’s full re-read is given Give the table a cursor column, so each run reads only what changed
Schedule won’t save Schedules can’t fire more than once per hour Pick an hourly-or-slower cadence

Full guide: Connect a data source and Fix data issues.

Symptom Likely cause Fix
“You don’t have access to this chat.” The exploration wasn’t shared with you — or, for a conversation an automation or Saved Agent ran, you can’t see that automation or Saved Agent “Ask the owner to share it with you.” — or, for a run, ask for access to the feature the automation or Saved Agent lives in
A feature page shows This feature doesn’t exist or you don’t have access to it. The feature is private to someone else, isn’t attached to an access group you’re in, or has been deleted — Ronja can’t tell you which Ask an admin to share it with you
An App page shows This App doesn’t exist or you don’t have access to it. Same rule for the App’s feature: you can open an App only if you can open the feature it lives in Ask an admin to share the feature with you
A chart in a conversation shows This chart is no longer available or isn’t shared with you Charts belong to the conversation they were made in. Either the chart was deleted, or it came from a conversation that wasn’t shared with you — Ronja can’t tell you which Ask whoever made it. If you were expecting to see it, ask them to share the conversation the chart came from
A chart link opens on Chart not found or you don’t have access. Same rule, on the chart’s own page: the link opens for the people who can open the conversation the chart was made in Ask its owner to share that conversation with you — sharing the conversation shares its charts
You deleted a conversation and now want a chart from it Deleting a conversation stops it sharing its charts, but a chart you made yourself still opens, on its own page and by its link, once the conversation is gone Open the chart’s link as usual. The colleagues the conversation had been shared with can’t open it any more — the conversation that shared it with them no longer exists. Administrators still can, as they can for any conversation in the organization
“Build mode is disabled for your account. Contact an administrator to request access.” Build mode is off for your role or for you An admin with billing access turns it on for your role, or adds a personal exception, on the Rules tab of the Control Center. User Read-Only members never have build mode
“You have reached your credit allocation for this billing period. Contact an administrator to raise your limit.” Your billing-period allocation is used up. It counts what you run (chats, Slack or Teams conversations, API and CLI calls, older automations), never stops an Admin, and resets with the billing period An admin with billing access raises your allocation, or gives you a personal exception, on the Rules tab of the Control Center (or from your panel on its People tab)
“You’ve used your weekly AI budget. It resets on Monday at 00:00 UTC. Contact an administrator if you need more.” Your weekly AI budget is used up. It applies to Admins too Wait for the Monday reset, or an Admin raises your budget or uses Give extra credits this week in your panel on the Control Center’s People tab — see Set weekly AI budgets
“Your account has been blocked from running AI turns. Contact an administrator.” Your allocation is set to Blocked, for you or for your role. Blocked applies to Admins too An admin with billing access changes it on the Rules tab of the Control Center
Errors mentioning “admin role” — for example “…requires the admin role” You tried to change an organization-scoped resource without the required role Propose the change instead (it becomes a draft/proposal for review), or ask an Admin. Some of these messages now name the way through, so read the rest of the sentence
An app in Ronja shows “This app doesn’t have permission to do that right now — ask an admin to check its database access.” The database login the app reads or writes with isn’t allowed to do that: an admin narrowed which tables it can reach, the table was added after the login was created (a login given a list of tables covers those and nothing added later), or a rule on the table refuses that row For a database Ronja manages, an admin checks which tables that login can reach — see Give something access to just a few tables. For a database connected from outside Ronja, ask whoever runs that database
Publishing a workflow, or saving a change to one, is refused, saying an approver isn’t a member of the organization Someone in the workflow’s Approval defaults Approvers has no Ronja account in this organization. A change is refused only for an approver it adds — when you publish it, or when you save it for a workflow in a private feature, where changes apply straight away An Admin invites them, or ask Ronja to remove them from the approvers, then try again. If the workflow is waiting for review, its approvers can’t be changed: an Admin invites them and approves again, or rejects it — or you withdraw it and ask again without them
API call returns 403 forbidden The token’s role is too low, or a scoped token lacks the needed grant Use a token with the right role and scope — see the API reference
You can’t approve a request you made — and switching to your API token doesn’t help Where self-approval is disallowed org-wide, the rule is about the person rather than the credential: your browser session and your tokens all count as you. (The Inbox also withholds Approve on a proposal you filed, though it can only recognise one you filed in the browser) A different admin reviews it — or that feature’s maintainer decides it
An approval is refused because the work “was authored by an API token that no longer exists” Where self-approval is disallowed, the rule compares people — and a deleted token leaves no record of whose it was, so nobody can be shown to be a different person from its author. Deleting a Ronja API credential deletes its token too, so rotating one has the same effect Nobody can approve it, including an Admin. Discard the draft, withdraw the proposal, or withdraw the move request, and ask its author to file it again from the account that should own it
An approval is refused saying “the API token you are approving with no longer exists” The other half of the same rule: the credential you are deciding with was deleted, so it can’t be shown to be a different person from the author Nothing is wrong with the item — sign in and decide it yourself, or use a token that still exists
You can’t approve a request someone else made, using a shared API token An API token counts as the Admin who created it, so where self-approval is disallowed it can’t approve that person’s work — whoever is holding the token A different admin reviews it — or that feature’s maintainer decides it
A link Ronja sent you stops on Couldn’t check your organizations Not an access problem: the link belongs to a particular organization, and the list of the ones you’re a member of didn’t load, so Ronja can’t tell whether it’s yours Click Try again; or Continue in the organization you’re already in to open the page there anyway

Roles overview: the roles capability matrix.

Most “missing” navigation is role-gating, not a bug:

What’s missing Who sees it
The Admin sidebar entry (and everything under it) Admins and Super Admins only
The Advanced sidebar section (Workflows, Automations, Data map) Admins and Super Admins only. It starts collapsed — click Advanced to open it — and it isn’t drawn at all while the sidebar is collapsed to icons. Automations sits inside it for admins; everyone else keeps it as a top-level entry
Organization (login domains, danger zone) Super Admin only
Usage, the Control Center’s Spend response tab, and allocations, build mode and model choice on its People and Rules tabs Admins whose organization has billing access enabled — ask Ronja to enable it. Every Admin sees the Control Center entry, but without billing access its People and Rules tabs show weekly budgets only
Billing (buy credits) Super Admin only
Connections page content The connection list requires Admin — below that role the page shows no connections
The Build segment on the exploration start screen Everyone with build mode: on by default, unless an admin turned it off for their role or for them on the Control Center’s Rules tab. Never User Read-Only
The model/effort picker in chat Everyone by default, unless an admin denied it for their role or for them (hidden while the organization is out of credits)

These fixes cover bridged Slack and Microsoft Teams channels alike.

Symptom Likely cause Fix
No reply to a channel message The bridge’s trigger is @mention (the default) or the keyword “ronja”, and the message matched neither @-mention Ronja — once she owns a thread, follow-ups there don’t need it. An admin can change the trigger on the bridge page
“You don’t have a Ronja account yet — ask your admin to add you to Ronja, then try again.” Your Slack email doesn’t match a Ronja account in this organization An admin invites you (or approves your access request); your next message auto-links
“your Ronja account is in a different organization than this Slack bridge” Your account lives in another Ronja organization Ask your admin to sort out which organization the bridge should serve
“Your Slack identity is already linked to a different Ronja account.” A stale identity link “Ask your admin to reconcile this.”
Bridge status “Needs reauth” The Slack/Teams authorization expired or was revoked An admin clicks Reauthorize on the Bridges page
Bridge status “Disconnected” Ronja can no longer post, or the bridge was disconnected — disconnecting now removes her from the channel Re-invite @Ronja from Slack, or an admin reconnects from the bridge’s page
No bridge in this channel No Slack channel — public or private — is connected automatically; the bot must be added deliberately /invite @Ronja in the channel, or use Add bridge on the Bridges page. If Admin-only connections is on, a Ronja admin has to do it
Teams: no answer in a channel Teams channel messages require an @-mention; private Teams channels and group chats aren’t supported @-mention Ronja, or DM her

Full guide: Use Ronja in Slack and Teams.

Symptom Likely cause Fix
“Image {name} exceeds 20 MB limit” Images are capped at 20 MB Resize or compress the image
“Document {name} exceeds 100 MB limit” Documents are capped at 100 MB Split the document
“Text file {name} exceeds 5 MB limit” Text files are capped at 5 MB Trim it — and note only ~50 KB reaches Ronja anyway; consider uploading data as CSV/Excel instead
A file type won’t attach The chat accepts data files, images, documents, text/code files, and zip archives Convert to a supported format (e.g. export to CSV or PDF)
A zip attached but its files didn’t appear The archive is over the automatic-unpacking budget — 25 files, 150 MB, or 10 images — so Ronja listed its contents instead of unpacking a partial subset Ask her to unpack it: “unpack all of them”, or name the files you need. See Zip archives
Ronja says a zip is password-protected Encrypted archives can be listed but not opened Send the password, or re-send the files unencrypted
Ronja says a spreadsheet is an Excel 97–2003 workbook (.xls) Ronja reads the current Excel format, .xlsx, not the older .xls Open it in Excel, save it as an Excel Workbook (.xlsx), and attach the new file
Ronja says a spreadsheet is protected The workbook needs a password to open, or carries a sensitivity label, so its contents are encrypted Save a copy without the protection and attach that
Ronja says a spreadsheet is a web page saved under a spreadsheet name Many systems’ “Export to Excel” writes a web page (an HTML table) with an .xls name. Ronja can read it, but not import it as a table Open it in Excel, save it as an Excel Workbook (.xlsx) or CSV, and attach that
Ronja says a file is named like a spreadsheet but isn’t one The file’s contents aren’t a spreadsheet at all — something else was saved or renamed with a spreadsheet name Get the original file, or have it saved as .xlsx or CSV
Ronja says a spreadsheet link returned a web page The link opens a sign-in or preview page rather than the file itself Get a direct download link, or download the file and attach it
“too many members to list” on a zip A zip is only listed up to 10,000 members; past that Ronja won’t read its contents list at all Send the specific files you need, or a smaller archive — see Zip archives
Ronja unpacked only some of a zip An unpack request can return short — the working-log step reads “12 of 40 extracted” Ask her to unpack the rest, and don’t rely on a total computed before it completes
File push API: 400 “invalid filename” or “not a valid parquet file” The push API accepts only .parquet files with clean names Convert to Parquet first — see the API reference
File push API: 413 “file too large” 1 GiB per-file cap Split the file into several Parquet files — they build together

All caps in one place: Limits and retention.