Skip to content

October 2026

  • Search and read PlaidCloud’s documentation from an AI assistant. The PlaidCloud MCP server has two new tools, docs_search and docs_fetch, which search the documentation and read a page in full from any MCP client. See Getting Started With AI Agents.

  • See your storage in Analyze. A workspace Storage window shows a meter with included, reserved and on-demand bands, your projected monthly average, which is what billing uses, and what is stored now. Each project’s usage is split into current data and history, with the billed overhead on its own rows: backups, files and documents, container images, workflow scratch space and copies, and metadata and cleanup. A 90-day chart shows the trend, and workspace admins also see estimated dollar amounts and a What if you delete data? estimate. The Projects list gains a Size column, with totals on folders, and each project’s Storage tab lists its tables with current data, history and time-travel setting, plus suggestions to free space. Snowflake and Databricks projects show an estimated size that never counts toward your storage. See Managing Storage.

  • Time travel is 1 day by default, and you control it. Set a project’s default anywhere from 1 to 90 days, and lengthen it for a table with 2, 3, 5, 7, 14, 30, 60 or 90 days. A table set to inherit follows the project default, and a table can lengthen the default but not shorten it. When this release arrives, the first nightly cleanup removes each table’s history older than its setting, which for most tables is history beyond 1 day. Expired history can’t be recovered, so to keep more, raise the project or table setting before the update. Space is released gradually over the next few days. Restoring a table to a point in time works back to the oldest restorable point shown for it. See Managing Storage.

  • Use your own Snowflake or Databricks warehouse, connected by you. A workspace administrator opens Use your own warehouse in the user menu, copies a generated setup script into their own account (it creates a capped warehouse and a service identity for PlaidCloud and never touches existing warehouses), then pastes the key pair or Databricks OAuth secret and chooses Use as my warehouse. Check connection explains any problem and its fix in plain words, with ready-to-run GRANT statements. PlaidCloud connects from 130.211.116.97/32, which you allow in any network policy. New projects then store their tables and run their workflows in your warehouse, and removing the warehouse revokes PlaidCloud’s access there. See Use Your Own Warehouse.

  • Sign in with Snowflake or Databricks. Instead of pasting a credential, an administrator attaches the warehouse with Sign in with Snowflake or Sign in with Databricks, after registering PlaidCloud once in their own account. Each person signs in from Sign in to your warehouse in the user menu, and dashboards run with that person’s own permissions in the warehouse; a viewer who hasn’t signed in is asked to. Workflows run as a PlaidCloud service identity created at attach, which holds only a data role you name; administrator roles are refused. See Sign In With Snowflake or Databricks.

  • Connect more than one warehouse. Manage warehouses in the user menu lists every warehouse with its type, default, project count and status. Add warehouse connects another, Make default sends new projects to it while existing projects stay where they are, and Remove disconnects one that no project uses. See Manage Warehouses.

  • See what a run costs on your warehouse. Run history on a Snowflake or Databricks warehouse gains a Warehouse cost column in credits or DBUs. Snowflake costs are attributed once Snowflake reports them (the setup script grants the GOVERNANCE_VIEWER role for this), and are estimated until then; Databricks costs are estimated. See Warehouse Cost per Run.

  • Your warehouse’s policies and descriptions stay in place. Schema, table and column descriptions are written to the warehouse’s own catalog, and row access and masking policies on Snowflake, and row filters and column masks on Databricks, stay attached when PlaidCloud replaces, recreates or clones a table. See Your Policies and Descriptions Carry Over.

  • Single sign-on with your own identity provider, set up in PlaidCloud, on paid plans. On the Workspaces page, Single sign-on adds Microsoft Entra ID, Okta or any OpenID Connect provider, depending on your plan (password with MFA and social sign-in with Google, Microsoft and GitHub are on every plan) with a copyable redirect URI and a Test sign-in button. People who already have an account link it by signing in to that account once, and new people verify their email unless you choose to trust the provider. See Single Sign-On.

  • See who uses what in your workspace with Usage Reports. Administrators with the Security Log permission open Usage Reports from the Identity tab to see active, new and returning users, adoption of each screen, dashboard, chart, Panel app and notebook, the most taken paths between screens, and a funnel that follows members through up to six steps across the PlaidCloud app, Superset, Panel apps and JupyterHub. Choose a source and a range of up to 180 days, download monthly and daily summaries as CSV, and erase a member’s usage on request. Days are UTC, events that can’t be tied to a member are shown as an unattributed share, and every export and erasure is recorded in the Security Log. See Usage Reports.

  • See which figures PlaidCloud calculated: a ✓ on metric results in the AI assistant. When the AI assistant in a project answers from an approved metric, the figures now appear in their own card below the answer, with a ✓, what was asked for, when they were calculated, and a note when row access limited them. The ✓ never attaches to the assistant’s own text. Draft previews, and metrics that have changed since a conversation was saved, show no ✓ and say why. See Figures From a Metric.

  • Ask PlaidCloud’s own AI assistant for a business number and get the agreed figure. The AI assistant in a project is now set up to answer a named business number, such as net revenue, from an approved metric definition before writing a query of its own, under your row access, and to turn your words for a breakdown, such as EMEA, into the metric’s values. It can find and calculate metrics but not create or approve them. See Business Numbers.

  • Run and monitor your workflows from your phone with the PlaidCloud app. The free PlaidCloud app is on the App Store for iPhone and iPad and on Google Play for Android. Enter your workspace name and sign in on your workspace’s own sign-in page, single sign-on included. Browse your projects and search their workflows, see each workflow’s state and last run, and Run, Pause, Resume or Stop it. You can follow each step’s state, look back through run history, and rename, describe, enable or lock a project, workflow or step. On iPhone and iPad, a Home tab lists failed workflows and your recent projects, and each past run shows its errors and log. The app uses your existing workspace and permissions. Weave is in the app. Ask Weave about your workspace and watch the answer stream in, or tap Ask Weave on a workflow, run or failed step to start with that context. Weave’s answers link to the steps, logs and workflows behind them, and your conversations are shared with PlaidCloud on the web. When Weave proposes a change, an approval card shows what will happen, and nothing changes until you tap Approve and confirm with Face ID or your fingerprint. Dictate questions on your device and hear answers read aloud, rate answers with a thumbs up or down, and see Weave findings on Home, with an optional daily digest in Settings. On iPhone and iPad you get a notification when an answer is ready, and Siri answers What failed in PlaidCloud and Weave in PlaidCloud; on Android, press and hold the app icon and tap Ask Weave. The first time you use Weave the app asks for your consent to send questions to PlaidCloud’s AI provider, and you can withdraw it in Settings. See The PlaidCloud Mobile App and Weave on Mobile.

  • Work with PlaidCloud data in Excel with PlaidXL. The PlaidCloud add-in for Excel signs you in with your PlaidCloud email and your usual sign-in, single sign-on included, and lists your projects in a task pane. Choose a table’s columns, filter its rows, and retrieve it into a worksheet with a frozen header row, filters and a named range; Refresh All Tables brings every retrieved table up to date. PLAIDXL formulas list projects, tables and dimensions, lay out and drill a hierarchy, and calculate a measure rolled up to any combination of dimension nodes, so a report grid recalculates against current data. Sanitize Workbook turns a copy into plain values for sending. See Work in Excel With PlaidXL and the PlaidXL reference.

  • Use PlaidCloud in your own language. A Language button in the top header, next to Appearance, lists English (US), English (UK), Deutsch, Español, Français, Português (Portugal), Português (Brasil), Polski, 日本語, 한국어 and 简体中文 by their own names. Pick one, confirm that PlaidCloud will reload in it (unsaved changes are lost), and the interface changes. Your choice is saved to your profile, so it follows you to other devices and browsers from their next page load; it applies per workspace. Everyone starts in English (US). Numbers and dates follow the chosen language, such as 1.234,5 in German, 1 234 567,89 in Polish and 2026/10/12 in Japanese and Chinese, while values you save, export or send to integrations are unaffected; English (UK) uses British spelling and formats. Japanese, Korean and Chinese input methods work in number and other restricted fields, including full-width digits. Text sent from the server follows your language too, in every language PlaidCloud offers (browsers set to Traditional Chinese fall back to English): system, sign-up, billing and support emails, the sign-in, set-password and signed-out screens, error messages from the interface, the REST API and JSON-RPC, and the project documentation PDF. The REST API’s “not authenticated” and “valid token required” responses (401 and 403) come back in your language too, and an invalid bearer token gets a 401 rather than a server error. Screens before sign-in use your browser’s language, and sign-up records it for your organization’s billing emails. Workflow and step run messages and logs, the activity stream, AI assistant and MCP text, emails you write yourself, the sign-up screens and the content you create, such as project, table and step names, stay in English. See Change Your Language.

  • Workflow texts are delivered through PlaidCloud and confirmed, to members who opted in. The Notify: SMS step now texts workspace members or a distribution list. Each member opts in themselves from Text alerts in the user menu, with a US mobile number confirmed by a code, and workspace admins see each member’s status on the Member Info tab. A text that can’t be delivered is reported on the step, which fails by default or warns, and the member receives the message by email instead. Messages can use {workflow_name}, {project_name} and {run_url}, repeats within a set time are collapsed into one, quiet hours hold texts until they end, and Send test to me checks your own number. Carrier-gateway texting, which no longer delivers, is gone: a step still saved with a mobile carrier and typed phone number doesn’t fail the workflow. With no members or distribution list chosen it completes with a warning, No text was sent: this step still uses the retired mobile provider and number. Open the step, choose members who’ve opted in to text alerts, and save it., and sends nothing; once you choose recipients it texts them and ignores the leftover carrier and number. See Notify Via SMS and Text Alerts.

  • Microsoft 365 Copilot gives reliable answers and corrects its own mistakes. Copilot reads the errors and hints PlaidCloud returns, fixes its request and tries again instead of saying the tools are unavailable. For a business question it finds the analysis path and passes the project and table itself, and a filtered total such as one year’s EBITDA for a business unit comes back in a single call. An analysis path can be given by id or by name, query_data_read can preview only the columns you name, and a misspelled column name lists the closest matches. A person who isn’t in a Copilot access group is told to ask an administrator to add them to Microsoft 365 Copilot Read Only. Copilot asks once to connect to PlaidCloud; after you choose Allow, it answers multi-step questions without repeated confirmations. Administrators update by downloading the Copilot package again and updating the app in Teams; users start a new chat. See Microsoft 365 Copilot and Analysis Paths.

  • Tell AI assistants what an analysis path means, and what each column holds. Each analysis path has Prompt Guidance, opened from Tools > Analysis Paths, up to 1,000 characters, where you write, one directive per line, the guidance a new analyst would need: the questions the path answers, the filters that always apply, the fiscal calendar and your business terms. Assistants use it to choose the path and then apply it to every query on that path. A column memo set in a table’s Column Properties now reaches assistants with the table’s column list, so a code, a flag or a look-alike measure is read the way you meant it. Assistants here are any LLM connected through PlaidCloud MCP and PlaidCloud’s built-in AI; column memos also reach a workflow’s LLM step. Prompt Guidance is visible to everyone in the workspace, so leave out anything confidential. Microsoft 365 Copilot picks up the new instructions after an administrator reinstalls the updated Copilot package. See Making a Path Useful to AI Assistants.

  • Agree once how a business number is calculated, and every answer from an AI assistant connected over MCP uses that calculation. A project Architect defines a metric — Net Revenue, Headcount, Units Shipped — as a source table, how its rows are added up, the rows that always count, the lookup tables it joins, and the columns it can be broken down by. A second Architect reads the definition and approves exactly what they read; an approval is refused if the definition changed in between, if a table or column no longer exists, or if a joined lookup table has more than one row for a join key. Anyone who reads the project can then ask an AI assistant connected over MCP for the metric by name or synonym, broken down by the columns it allows, and the figures are calculated by the approved definition under their own row access, not worked out by the assistant. Editing an approved metric starts a new draft while the approved version keeps answering; retiring one takes it out of service for good. Definitions are managed through an AI assistant over MCP or the REST API. An analysis path’s Prompt Guidance keeps its standing filters and terminology; for an assistant connected over MCP, the number itself now belongs to a metric definition. See Metric Definitions.

  • Build a metric from two others, such as net revenue per FTE, and it is calculated the agreed way too. A project Architect can define a derived metric as the ratio, sum or difference of two metrics, or one metric multiplied by a fixed factor, and a second Architect approves it as usual once its inputs are approved. Each input is totaled on its own, under the asker’s row access, before the two are combined, so a ratio of figures from two tables never double-counts, and a breakdown value one input has no rows for, or a division by zero, comes back empty rather than as a zero. A derived metric can be broken down only by the columns every input allows. A metric that an approved derived metric is built from can’t be retired, and approving a new version of it changes the derived figures with it. See Derive a Metric From Others.

  • Ask a metric for its variance against budget, the top or bottom N, or each row’s share of the total, and get the agreed calculation every time. A project Architect can give a metric a scenario column that separates actual rows from budget rows; a question can then ask for the variance and gets the actual figure, the budget figure, the difference and the percentage of budget for each breakdown value, each side totaled on its own. Any metric can be asked for the N highest or lowest figures, per group if wanted, with ties kept, and for each row’s share of the total over the whole breakdown or over a group. A share is always of the rows the asker can see, and the answer says when row access limited them. A metric can also be defined as a weighted average, such as unit price weighted by units. A question takes at most one comparison and one ranking. See Compare, Rank and Share.

  • Ask a metric in your own words and get the agreed values, never a guess. An AI assistant connected over MCP now finds a metric by part of its name or a synonym, in any case. A project Architect can bind a metric’s breakdown column to a dimension, and the words in a question are then matched against that dimension’s member names and aliases: a member becomes its value, a parent such as EMEA becomes every region beneath it, and a word that matches nothing, or more than one member, comes back as candidates for the assistant to ask about rather than a choice made for you. Where the column is governed by row access, only the values your access allows are offered. See Ask About a Metric.

  • Ask a metric about one fiscal period, compare it with last year or with the quarter or month before, and get a running total through the year. A project Architect can tell a metric definition where its rows sit in the fiscal calendar: a date column with the month the fiscal year starts in, or fiscal year and period columns on a 12-period, 13-period, weekly or quarterly calendar. A question can then name a fiscal year, a quarter or a period, or the year to date, and ask for the figure year over year, quarter over quarter or period over period. The two periods are each totaled on their own, so a month with no rows last year compares as empty rather than as the nearest month that had some, and the answer says which earlier period it compared with. A running total gives each period’s figure and the total so far, for sum and count metrics. See Compare Over Time.

  • Moving a project to Lakehouse v2 is guided from readiness to undo. Check Migration Readiness reports each area — tables, views, steps, dashboards, data shares and capacity — as clear, needs review, blocked or checked during migration, with a plain-language explanation of every finding; an area PlaidCloud can only check while it migrates is never shown as clear, and a project already on Lakehouse v2 is told it has nothing to migrate. A step that sets a column to plain text, such as 'Y' or '', is not flagged. A project that other projects read through a data share is migrated after those projects, or after the share is removed. Try on v2… makes a private trial copy of the project on Lakehouse v2 with schedules and sensors turned off and ERP posting in simulate mode. A migration can start now or at a time you choose. The project’s own workflow schedules pause while it runs and are restored afterwards; writes made during a migration are lost, so a workflow started then shows a warning. When it finishes, a What Changed… report lists each table’s outcome, the views that were skipped and the schedules restored, and Undo Migration… returns the project to Lakehouse v1 within the undo window after you type the project name. A failed migration shows why it failed and what will be lost, and offers Resume. You are notified, by message and by email, when a migration finishes or fails. Views that can’t run on Lakehouse v2 are skipped and listed, JSON values keep their types, and a number inside JSON too large for exact storage is stored with double precision and reported. Migrate Project to Lakehouse v2… appears for members who can edit projects, and only a project’s Architects can migrate it — start, schedule, cancel or undo — and the project must be unlocked. Before a run starts, PlaidCloud checks that your plan has room for the copy: on a plan with a storage limit it refuses a move that wouldn’t fit, counting other migrations in progress, and on a plan billed for extra storage it warns you of the expected overage. A migration can’t be stopped once it is switching over, and if the switch-over itself fails partway, the run shows Contact support. Don’t retry. instead of offering Resume. A finding you accept is accepted for that item only. See Migrate a Project to Lakehouse v2.

  • Copying a project copies its data, with a choice of how much. Copy Project offers Structure only, Full data and Sample, and every table’s rows are copied, on the same lakehouse and across lakehouses. A review step before the copy shows its size, the number of tables, a rough estimate, the target lakehouse and any warnings. A copy with data is private to the person who made it, and a copy of a project with row-level security stays private. A Copy Results window lists each table’s outcome by name with the reason for any failure, and Retry failed tables copies only those. Copying data into an existing project needs write access there. A workflow’s sensors are copied along with it and arrive disabled, so nothing fires until you turn them on in the destination; an import that overwrites duplicate items doesn’t add a second copy of a sensor the destination workflow already has. You are notified, by message and by email, when a copy finishes or fails, and clicking Copy Project again while a copy is starting does not start a second one. See Copying a Project.

  • You choose which security groups can see each dashboard, in one dialog. Who can see this? opens from a dashboard’s Home tile, its row in My Dashboards, or the Audience column, and sets the dashboard to Everyone in the project, Specific groups or Only owners (Draft), with a preview of who gains or loses access. Owners and workspace admins always see their dashboards, and group changes reach dashboards within about a minute. A copy keeps the original’s audience, and anyone can copy a dashboard that has no restriction. Someone blocked from a group dashboard gets a Request access page that emails its owners, who grant or dismiss the request in PlaidCloud. Workspace admins get a Dashboard Access Review with filters and CSV export, and My Dashboards can Set audience… on up to 50 dashboards at once. A project’s Default Dashboard Audience sets who sees its new dashboards from their first publish, and the AI assistant manages audiences too. A dashboard’s audience hides the dashboard, not its data: chart data still follows project access, and Row Access limits rows. See Control Who Can See a Dashboard.

  • The Posting Register API lists outstanding reversals and ERP types. The exception list gains a reversal outstanding category, with its own count: a posted entry whose reversal was sent but never settled, which stays listed until someone resolves it. A separate list returns every ERP type on the postings you can see, for building an ERP type filter. See Reversals Still Outstanding.

  • The fix assistant answers common errors straight away. When a step fails because an expression or its column mapping names a column that isn’t in the table it reads, a setting it needs was left empty, a workflow it runs failed, or a table it names can’t be found, the first reply in AI Assistant explains what usually causes that error, which words in the error message to look at, and how to fix it. A SQL Extract step gets the same for SQL that can’t be read as written, a function the database doesn’t recognize, a table that doesn’t exist, a function given a type of value it can’t work with, or a value that can’t be converted to the type asked for. A Table Extract step gets the same for a source table that doesn’t exist, an expression using a function the database doesn’t recognize, a function given a value of the wrong type, and a step with no output columns, with fixes that point to the step’s own tabs and fields. Reply to have the assistant look at the step itself and propose a change. See Common Errors.

  • Fix a Weave finding with the AI fix assistant, straight from the Weave tab. Click Fix on a problem’s card in a project’s Weave tab to open the fix assistant on it, in a window of its own. Fix is offered for Allocation column mapping and Step expressions problems, and for Last run failed when one step failed in that run. The assistant starts from the problem as Weave reports it now, proposes a change, and applies it only once you approve. Closing the chat reads Weave’s findings again, so a problem the fix resolved leaves the list. See Fix a Finding with the AI Assistant.

  • The fix assistant re-runs the step it fixed, when you ask it to. After it applies a fix, the assistant asks whether to re-run the step. Say yes and it runs the step and tells you whether it succeeded, finished with a warning, or failed again, and it diagnoses a new failure. It doesn’t offer a re-run for a step that posts to an ERP system or runs another workflow, which you re-run from its workflow, or when your role can’t run workflows. See How It Works.

  • See everything Weave did in a project, who approved it, and export it for your auditors. Click Activity on a project’s Weave tab to see, newest first, the problems Weave noticed and later stopped finding, each change the AI assistant proposed, who requested and who approved or rejected it, exactly what each change replaced and wrote, and how it ended, along with changes to a table’s freshness threshold. Filter by workflow, step, person and period, and click Export CSV or Export PDF to save the period as audit evidence, headed by who exported it and a tamper check. Entries can’t be edited or deleted, and an entry about something your role can’t open shows only that something happened, when, and who did it. Weave now records your approval before it makes a change, and makes no change it can’t record. See Weave Activity History.

  • See what Weave did in a project each month. Click Summary on a project’s Weave tab and choose a month to see how many problems Weave found when workflows finished running, how many a later check no longer found, how many of those came after a change Weave made to what they were about, with the median time from finding to no longer found, the changes Weave made that someone approved and how many were undone, the problems marked as expected, and where that month’s problems stand now. Every number comes from the project’s activity history, and a button under it lists the entries behind it. The summary says plainly what it doesn’t count, such as time saved, and says so when a month had nothing to report. Workspace administrators choose Workspace Summary… on the header’s Weave button for the same numbers for every project, with totals. No AI is involved. See Weave Monthly Summary.

  • Undo a step fix Weave applied. Before Weave saves a step fix you approved in the AI assistant, it keeps a copy of the step’s settings, and the card says so. Undo, on the fix’s card in the chat or on its entry in the project’s Weave activity history, shows what undoing puts back, then Undo restores the settings, Undo & Run restores them and runs the step, or Cancel leaves the step alone. Weave won’t undo a fix once the step has changed again, and undoing never changes data already written: re-run the step to rebuild it. Each undo is recorded in the activity history. See Undo a Fix.

  • Weave findings have owners and comments, and you can see who owns what. Each finding on the Weave tab shows who owns it — by default whoever last ran its workflow — and Assign hands it to anyone who can see it. When a run ends, Weave tells each problem’s owner. An Owned by me chip lists the findings you own, and the Team view in Findings has a row per owner of the open problems, with how many they own and how long the oldest has been open, the longest-waiting first, and a No owner row for the problems nobody owns; click a row to see those problems. Add comments to a finding to say what’s happening with it; comments can’t be edited or removed, and appear in the project’s Weave activity history with each change of owner. See Give a Finding an Owner and See Who Owns What.

  • Weave tells you when a table hasn’t been written on schedule. For a table that a scheduled workflow writes, Weave checks that a step has written it since the schedule last came due, and reports the time of the last write when none has. A write by any step counts, including a run you started yourself. A table is reported as unchecked rather than late while a workflow that writes it is running, when a step that writes it was skipped or can be skipped without a record, or when its schedule runs less often than every 180 days. See What Weave Checks Today.

  • Set how often a table must be written, and Weave checks it. Give a table a freshness threshold, from 1 hour to 180 days, and Weave reports it when no step has written it for longer than that. The threshold replaces the schedules of the workflows that write the table, so it can be looser or tighter than they are, and it lets Weave check a table that no scheduled workflow writes. Weave can’t see when a table that no step writes, such as one you load by hand, was last loaded, so it reports that table as unchecked. Set or clear a threshold under Freshness in a table’s View/Edit Table Details window, through an AI assistant connected through PlaidCloud MCP, or through the platform API. See What Weave Checks Today.

  • Weave tells you when a table a workflow reads has been written to since it last read it. For a workflow that reads a table another workflow writes, Weave reports when the other workflow has written to the table since the first one last read it, so its results may be out of date. Where a schedule runs the first workflow, Weave waits until that schedule has come due since the write. A workflow’s own writes don’t count, including those of a workflow it runs, and neither does a staging table it writes before reading. Where Weave can’t follow what a step reads, such as an AI step or a table picked with a variable, it reports the workflow as unchecked rather than passed. See What Weave Checks Today.

  • Weave tells you when a step’s run changes how a column’s values spread. After each run, Weave compares every table the step wrote with the table as it stood before the run, and reports a decimal-number column whose values spread very differently, with a shift score where 0.25 or more is a large change. It compares with the last version that held rows, so the first good run after a failure is judged against the last good data. Whole-number columns, usually codes, periods or flags, are not compared. A table with Row Access, with more than 5,000,000 rows, that takes longer than 10 seconds to compare, or whose earlier version is no longer kept, is reported as unchecked rather than passed. See What Weave Checks Today.

  • Weave tells you when an import found no files and left its table empty. An import that finds nothing at its path finishes with a warning rather than failing, and the steps after it read an empty table. Weave now reports the import, names the path, and stops reporting it once a run finds files. If an empty folder is normal for that import, mark the finding read. See What Weave Checks Today.

  • See what a change to a step affects before you save it. Open a saved step and, above Save, Weave says how many steps downstream read what it writes and in how many workflows: “Changes to this step affect 8 downstream steps in 2 workflows.” It counts the steps that read the tables this step writes and the steps that read theirs, up to ten steps on. Show the steps lists them by workflow, and How Weave knows says which tables it followed and what it didn’t check: dashboards, exports and anything outside the project, and whether those steps would fail rather than just run on different data. A chain longer than ten steps is reported as a floor, a step your role hides is counted but not named, and a step that writes no table says so. The sentence comes from your project’s saved settings, with no AI involved, and it never blocks the save. See What a Change Affects.

  • See what Save would refuse while you edit a step. A strip above Save now runs the step’s checks as you edit and says, for example, “1 problem that Save will refuse.”, listing each problem with Go To for a row on the Table Data Selection tab. The Expression Editor, opened from a step’s mapping or filters, checks the expression as you type: it shows the error, marks a syntax error on its line, or says “No errors found.” Anything that couldn’t be checked is said, never shown as a pass. No AI is involved, nothing queries your warehouse, and Save is never blocked. See What Save Would Refuse.

  • See how Weave knows what it tells you. Every Weave finding, and every answer from the AI assistant, has a How Weave knows panel. For a finding it shows the check Weave ran, the values it used, where they came from — a run, the run history, a step’s settings, a table — with a link to open each, and what the check leaves out. For an answer it lists what the assistant did, shows each query it ran, and marks each sentence Matched, Unmatched or Not checked, according to whether its figures and names appear in what the assistant read. Matched is not a guarantee: Weave doesn’t check that a figure is attached to the right name. The panel is built without AI and names only what you can see. See How Weave Knows and How Weave Knows in the AI Assistant.

  • StarRocks lakehouses handle JSON columns, Delete Rows, aggregates in conditions and to_char masks. A JSON column is stored and read back as JSON. Table: Delete Rows deletes the rows you select from a StarRocks table. A condition or Raise Error check whose expression aggregates, such as a sum over a table, evaluates. to_char with a digit mask such as '9' or '000' gives the same text as on Databend. An upsert reports the row count of the load it just ran, not a stale one.

  • Review one workflow before you rely on it. A Weave review runs Weave’s checks on a workflow and its steps, plus three it runs only when asked: an allocation whose output flows back into the table it allocates or its driver table, an allocation driver table or column that doesn’t exist, and a table the workflow writes with a column that row-level security doesn’t filter on. Its problems come first, and it lists what it doesn’t check, such as whether every amount being allocated finds a matching driver row. Choose Check on a workflow’s canvas or Steps grid, ask an AI assistant connected through PlaidCloud MCP to review the workflow, or call the platform API. In the app and through the API, a review that finds problems also carries a short summary written by PlaidCloud’s built-in AI, which is shown only the review’s problems and is dropped if it quotes a name or a number they don’t contain. See Reviewing One Workflow.

  • See your own data at a glance as soon as you import it. After Bring your own data imports a CSV, a Your data at a glance panel shows the table’s row count, each column’s type, share of empty values and number of distinct values, and a starter bar chart. When there is a choice of what to chart, PlaidCloud’s AI picks it from the column names, types and counts alone, never your values. Where reporting is on and you can publish tables, PlaidCloud also builds a starter dashboard from the chart, one click away under Open dashboard. Start with your own CSV

  • Turn a CSV into a table in any project. Drop a CSV file from your computer onto a project’s Tables list, or choose New > Table from CSV File, and PlaidCloud imports it as a new table in that project and opens Your data at a glance on it. A table name already in use gets a number, such as sales_2, and a failed import leaves your project as it was. New > Project from CSV File on the Projects screen creates a project from a CSV, so you no longer need an empty workspace or the welcome panel to get there. See Import a CSV File.

  • Add and remove container steps by dragging. On the Advanced workflow canvas, hold Cmd or Ctrl and drag a step onto a container to add it, or out onto empty canvas to remove it. The container highlights as the drop target, collapsed containers accept steps, and several selected steps move together. Changes can be undone. An execution container refuses a move that would break its ports, create a cycle through its boundary, or empty it, and explains why. See Containers.

  • Arrange the workflow canvas without losing your layout. The toolbar’s Tidy button is now an Arrange menu: Tidy all, Tidy selection, Remove overlaps, Align left, center, right, top, middle or bottom, Distribute horizontally or vertically, and Snap all to grid. Tidy all keeps your top-to-bottom order within each column, keeps the layout where it was on the canvas, keeps containers together, and moves notes and highlights with the steps they sit on. There is no confirmation dialog: every action is one Undo step, and a locked workflow blocks them. Menu items that don’t apply to your selection are greyed out, and unavailable menu items everywhere in PlaidCloud are now visibly dimmed. See Arrange the Canvas.

  • Wire an execution container’s output from its Exit port. Drag a connector from an execution container’s Exit port to the downstream step that consumes the group’s output. See Execution Containers.

  • Optimize an Advanced workflow to make it run faster. Right-click an Advanced workflow and choose Optimize… to review the changes before any happen. Rebuild dependencies from data lineage connects each step only to the steps whose tables it uses, so steps that share no tables run in parallel; steps that name their tables by name or path are understood as well as those that use ids. Merge replaces a chain of Extract Data steps, including a rename followed by a filter, with one step, and offers the longest part of a chain when the whole chain can’t merge. A merge is applied only after the original steps and the merged step run on your current data into scratch tables and give identical results; tables the workflow no longer writes are kept and named. The window shows steps before and after, steps that can run in parallel and the wall-clock time saved (tables with a stale row count are read live), with a checkbox for each change. Every step it can’t optimize is listed with its specific cause, such as aggregates, two filters, a step that runs your own code, a table read by more than one step, a disabled step or a member of an execution container. Steps in visual containers can still merge. Undo optimization… restores the workflow’s steps, settings and layout, on tenants with restore points. The same steps are available through the REST API and AI assistants. See Optimize a Workflow.

  • Convert a Savant Labs analysis into a PlaidCloud workflow. Choose Tools → Import Savant Analysis in Analyze, or call the REST API or the savant_convert MCP tool, to turn a Savant export into a runnable Advanced workflow, with the graph, notes and groups preserved and analysis parameters turned into project variables. In the window, Load Sources lists the export’s sources and you bind each to a project table or a Document file; a source you leave unbound becomes an import step with a warning that names the Document path to upload its file to. Savant analyses convert in full: every agent, expression and setting maps to PlaidCloud and runs, including edits that carry only their compiled steps, filling typed columns, promoting a header over any file type, reading XML text and document columns, splitting exports into Parquet, PDF, Google Sheets tabs or template workbooks, appending and merging into existing split, headerless, anchored Excel and non-UTF-8 files, answering only new rows in the Infer agent, paging taken from fields or parameters, and spatial distances between any geometries. The conversions that need run-time knowledge are native steps: splits into columns or rows decided when the workflow runs, time series with a period spine that zero-fills empty periods, hierarchies of any depth with loops handled, header promotion, JWT signing, text and number formatting, XML read with full XPath 1.0, and the spatial matching, measuring, centroid, line and polygon steps, including a nearest match combined with other rules. Infer and Vision agents become AI/NLP steps on an LLM connection you can see, for Anthropic, OpenAI, Gemini, Azure OpenAI, Grok or GitHub Models, and Vision sends images and PDFs to the provider directly, with OCR text as the fallback. API agents become REST Request steps that send one request per row, keep the raw response and its status, honor fractional request rates, follow next-URL, Link header, offset and page paging, and take a relative URL from an api_bindings base URL or REST connection. Destinations bind through the REST API or an AI assistant to a Document account (CSV, Excel, Parquet, JSON, Avro, XML, PDF or Tableau Hyper, in any character set), a connection table, a Google Sheet, a Tableau data source, a Slack channel or email recipients, and merge on match keys for append, upsert, update and group replace; replacing data, and email and Slack from an AI assistant, need your own sign-in, and a destination you leave unbound writes a table in the project (databases, warehouses and SaaS targets) or a file in a Document folder that mirrors the target folder (file storage), with a warning; only an unbound email destination writes a CSV. Credentials move into a REST connection the import creates, or reuses on a re-import, and a pipeline parameter used as a credential is stored as a connection secret, never a workflow variable; an AI assistant (MCP) import, a user without connection-write permission, or an unencrypted http:// endpoint leaves the credential out with a warning, and a request that carries a credential can’t take its host from a row field. Exports are more predictable: CSV, TSV and TXT files write plain numbers and true/false, sorted destinations write one stable row order (Parquet, Google Sheets, Tableau and table targets keep none), a split value containing / or \ gets a short hash suffix, regular expressions Java rejects are refused, and timestamps past Databend’s range clamp to 9999-12-29 23:59:59 with year 0000 becoming NULL. Snowflake and StarRocks gain native regular expression, JSON and time zone support, including JSON_SET and JSON_FORMAT (written compact on one line) on Snowflake, and StarRocks reads a short year in a month-name or 12-hour date format as written. The edge cases are named: date formats with [ ] ' \ ^ literals that read to 9999-12-30 or 9999-12-31, secret parameters blanked by design, undeclared parameters arriving empty, JSON_FORMAT writing compact JSON on Snowflake, no row order kept for sorted Parquet, Google Sheets, Tableau and table targets, and Google Sheets and Tableau publishing needing their accounts. See Migrate Savant Analyses and the Savant Conversion Matrix.

  • Publish to Tableau, export to PDF, and send files to Slack. The new Publish to Tableau step publishes a Hyper extract as a data source on Tableau Server or Tableau Cloud through a new Tableau connection, to create it, overwrite it, append to it, or upsert, update or replace matching rows by key; the server address must use https. The new Export to PDF step writes a table to a PDF with its header repeated on every page. Notify via Slack can attach a file to its message when the Slack connection holds a bot token. Convert Document Encoding can replace characters the target encoding lacks with ?, XML Parse can read its element as an XPath 1.0 expression, and REST Request adds page-number, cursor and Link-header paging with start, stop-on-empty and send-limit options; a cursor can be read from a response header and sent as a parameter, header or body field. A POST, PUT or PATCH is retried after a rate-limit response but never after a server error.

  • Convert a Prophecy project into PlaidCloud workflows. Choose Tools → Import Prophecy Project in Analyze, or call the REST API or the prophecy_convert MCP tool, to turn a Prophecy project export, a .zip or a single pipeline file, into runnable workflows: one for each Spark pipeline and one for the SQL project, with the graph preserved and Prophecy parameters turned into project variables you can override as you convert. Every gem converts fully to native steps, so PlaidCloud is a drop-in replacement for Prophecy. Bind each dataset to a project table or a Document file, and bind the databases, stores, file stores, REST APIs and email a project reaches to your PlaidCloud connections and Document accounts; a dataset you leave unbound becomes an import step with a warning that names the Document path to upload its file to. Prophecy job and pipeline schedules become scheduled events on the converted workflows, enabled as they are in Prophecy, and a Pipeline gem runs its pipeline once for each input row with a Workflow Loop, records every run, and carries on past a failed one. Gems convert across data movement, services and control: SCD2, merge with its per-column SET expressions, replaceWhere and insertInto write modes (a first run onto an empty target writes every row), SAP HANA merges including SCD2, Delta and catalog table reads of an earlier version through the connection you bind, streaming sources and targets as scheduled batch, and Hive, BigQuery and other database connections. MongoDB and Kafka read and write through the new MongoDB and Kafka steps, MongoDB’s update, ignore and error write modes included; Azure Cosmos DB writes that check a document’s ETag, Smartsheet, Slack, Pinecone and Power BI convert to native steps; Salesforce reads, writes and upserts through your Salesforce connection; and Tableau gems publish through Publish to Tableau. Business rules, values a Script sets on Config, window(), date formats on every engine, typed XML parsing, File Operation’s file-name pattern and subfolders, and H3 heat maps, Directory listings with one row per workbook sheet, and custom gems, Gem Builder gems included, which run the code the export carries for them, convert too, as do encrypted and compressed files, Surrogate Key gems that continue from the last key issued, text cast to a decimal or a long with Spark’s exact result, stored procedures called once per row, REST, Email and OpenAI gems, ToDo gems that stop the run and Data Quality Checks that can. Scripts, SQL statements and macros are carried into steps rather than run, and each such step carries a warning so you review the code before running it. Table and file operations that change existing data, REST requests that can change data, and email run only when you bind them. Bedrock and SageMaker Endpoint answer through your workspace’s LLM connection. The conversion report lists warnings and missing inputs, dbt macros, Python user-defined aggregate functions, Soda checks and Pivot gems with a HAVING condition convert too, and the guide lists the few edge cases to check, such as Kerberos sign-in on Kafka, which you set on the connection. See Migrate Prophecy Projects, its Edge Cases, and the Prophecy Conversion Matrix.

  • Connect to MongoDB, Apache Kafka, Google BigQuery, Azure Cosmos DB and Smartsheet. New MongoDB and Apache Kafka connections work with four new steps: Import MongoDB reads a collection, with a filter or an aggregation pipeline, into a table, taking its columns from the first documents when you declare none; Export MongoDB inserts documents, or replaces or updates the fields of the matching document, with or without inserting one when none matches; Import Kafka reads the messages of topics between two offsets, one row per message, in JSON, text or Avro; and Export Kafka sends each row as a message. A Kafka connection signs in with a user and password or, for services such as Confluent Cloud, with OAuth (OAUTHBEARER). A Google BigQuery connection signs in with a service account key, Import SQL reads through it, and Export External Database Tables writes to it. A REST connection can authenticate to Azure Cosmos DB with its master key or with Microsoft Entra ID. A Smartsheet Document account attaches files to a sheet or imports a workbook or CSV file as a new sheet. Salesforce: Query Object can include deleted and archived records.

  • Create fully configured Document accounts through an AI assistant. An assistant connected over the PlaidCloud MCP connector can now create and update a Document account with its storage type, credentials, start path and the rest of its settings, including OneDrive and SharePoint, instead of only a name and description. Credentials are write-only: when an assistant reads an account back, they are hidden. An assistant can also browse the files and folders of those accounts, including a OneDrive or SharePoint folder, which it used to see as empty. This is available to signed-in users’ assistant sessions, not to workflow steps or in-app agents. See Add OneDrive / SharePoint Account.

  • Remove labels, and work with your real views, through an AI assistant. Every MCP upsert tool that sets labels, for tables, workflows, steps, projects, dimensions, views, editors, UDFs, connections and warehouses, accepts remove_labels as well as labels. Other labels stay, removals apply first so one call can rename a label, and removing a label the object doesn’t have does nothing. The view tools (view_find, view_describe, view_upsert, view_organize) now work with the views you see in PlaidCloud, including those made in the table explorer and by workflows. An update keeps a view’s ID and labels, and you can change only its labels without resending the query.

  • Encrypt and decrypt files in a workflow. Document: Encrypt File and Document: Decrypt File encrypt or decrypt one file with AES-128, AES-192, AES-256 or Blowfish in CBC, ECB or GCM mode, or set or remove an Excel workbook’s password. The key and the workbook password come from a workflow or project variable such as {aes_key}, never typed into the step. A wrong key stops the step and leaves no partial file, and a missing source file finishes with a warning.

  • Remote file steps handle missing and unsafe paths safely. When the file or folder that Document: Import from Remote File looks for doesn’t exist, the step finishes with a warning naming the path and the workflow continues; with an updated PlaidLink agent, Document: Delete Remote File and Document: Rename Remote File do the same. The import, delete, rename and export steps also screen the path before acting: an empty source, such as a folder variable that resolved to nothing, is a warning and does nothing, while an empty destination, or a source that is a filesystem root or .., fails the step instead of reaching the agent’s own folder. These checks work with the PlaidLink agents you already have; an updated agent also refuses any folder that contains its working directory.

  • Read and write files compressed with Zstandard, Snappy, LZ4, LZO and Deflate. File imports read these files, Spark’s Snappy and LZ4 files and lzop files included, alongside zip, gzip and bzip2. File exports write them when you set the compression with an AI assistant or the REST API, and Document: Text Substitution in File and Document: Import from Remote File offer them in their Compression list.

  • Restore a table to a point in time from a workflow. The new Table: Restore to Timestamp step replaces a table in place with its newest snapshot taken at or before the time you give, which can be a workflow variable. When there’s no such snapshot, the step warns and leaves the table as it is.

  • Import ORC files. The Import: ORC step loads Apache ORC files from a Document account into a table, with the same column mapping, filter and delete-after-import options as Import Parquet. Create it with an AI assistant or the REST API. See Import ORC.

  • More options for imports, copies, unions, loops and remote SQL.

    • Import Excel can read a different set of worksheets from each workbook through a Sheet Map table, and opens password-protected workbooks with a Workbook Password Variable.
    • Import Fixed Width reads EBCDIC and Latin-1 files, skips header and trailer records, reads records laid end to end with no line breaks, and chooses which blanks to strip.
    • Import Avro reads only the files modified after or before a time you set.
    • Document: Copy File can keep or skip a folder’s subfolders and copy only the files whose names match a regular expression.
    • Export to Excel can write one workbook with a sheet for each value of a column, or a separate file for each value.
    • Import XML can read one repeating element into one table, a row for each element, with the child elements and attributes you choose as columns.
    • Table: Union All can stack sources by position, as Spark’s union does, widening each column to a type every source fits, and finishes with a warning when every source is missing.
    • XML Parse can turn XML into JSON with each field typed from the data.
    • Workflow Loop can run every iteration even when one fails, recording each failure and finishing with a warning.
    • Remote Execute: SQL can run a statement, such as a stored procedure call, once for each row of a table, with each value sent as a bound parameter.

    Every option is a field in the step’s form.

  • A step can run depending on whether a table exists. Step conditions add table exists and table does not exist checks, set with an AI assistant or the REST API, which test whether the table has been created without reading its rows, so a table written with zero rows exists. See Conditional Step Execution.

  • Notify Via Email can Cc, Bcc, set a Reply-To and send one email for each row. Point a step at a driver table and use {{row.column}} in the addresses, subject, message and attachment path to send each row its own email. A row with no address or a missing attachment is reported as a warning. See Notify Via Email.

  • Text: NLP (AI) can embed text, and the Prompt task reports errors. The new Embed task, set with an AI assistant or the REST API, writes each row’s embedding as a JSON array, and the Prompt and Embed tasks write an error column with the message of a call that failed. See Text: NLP (AI).

  • Export CSV can write quotes the way Spark does. An export can escape a quote inside a quoted field with the escape character, as in \", instead of doubling it, and can leave a value that holds a quote unquoted, as Spark does with escapeQuotes off. Both are fields in the export’s form, and existing exports are unchanged. See Export to CSV.

  • The REST Request form helps you build and check a request. Filter a large endpoint catalog by method, path or name and undo an endpoint pick with Ctrl/Cmd+Z. Paste or drop a Postman collection, OpenAPI spec or HAR file and each is checked, with How do I get a …? help. A summary line under the connection shows its authentication, host and default headers, with a refresh button and an Environment picker. The body is a code editor with Format JSON and Validate JSON that leave {{…}} variables intact, plus a Variables reference… and an Insert {{…}} menu. Headers and parameters are checked for duplicates, mistyped names (Did you mean…), secrets typed in plain text, and a missing JSON Content-Type. Test requests show a status line and timer, a Pretty or Compact response, your last five results to view again or re-run, a suggested Items path, and a Request Preview; press Ctrl/Cmd+Enter to send. Saving without a successful test asks first. Retries takes 0 to 100, Timeout (s) 1 to 600, and Idempotency-Key is ignored when paging. Max req/sec accepts fractions, so 0.5 sends one request every two seconds, and Response adds Raw text, errors as rows, which keeps each body exactly as the server sent it, adds a DownloadStatus column, and keeps an HTTP or transport error as a row with credentials masked. In Text (one row per request), a step can keep the body of an HTTP 400 or higher response as a row, add the response’s status, reason and final URL as columns, send each row’s request again while its JSON response says a job is still running, and write an HTML page’s visible text or a binary body as base64; the polling and the base64 and visible-text responses are fields in the form. See REST Request Step and REST Request.

  • Table Extract and the joins can carry columns named at run time. Select Also carry columns named at run time on Table Extract, Inner, Outer, Anti, Cross and Multi-Table Join to pass through every source column the step doesn’t list, as the table has it when the step runs, so a step after a pivot or a parsed file needs no column list. See Table Extract.

  • Step windows warn you before discarding edits. A window with unsaved changes shows • in its title and asks Discard unsaved changes? when you close it with Esc, the X, Cancel or its tab button. See Unsaved Changes in a Step Window.

  • Try a driver what-if on an Allocation Split step. Right-click the step on the canvas and choose What if…, or use the step list’s What if… column, to see how the step would share its cost with different driver values, or split by another numeric column of its driver table. Add up to 10 scenarios, each calculated to the cent from the step’s last run, and see who gains and who loses, which lines would get nothing, and how the scenarios compare. Find a row reaches driver lines past the first 1,000. Save… keeps a scenario for everyone who uses the window on that step, and Try other drivers ranks the driver table’s other numeric columns, each one you can add as a scenario. The step isn’t re-run and no data changes. See Try a Driver What-If.

  • Try drivers from other tables in a driver what-if. In the What if window, Try other drivers now also tries numeric columns from other tables in the project that have the same key columns as the step’s driver table. It leaves out any table built from an allocation’s output. Add one as a scenario, or choose it under Split by another column:, and save it like any other scenario. See Drivers from Other Tables.

  • Break a driver what-if down by account or another column. In the What if window, choose a column under Break down by: to see how much of each member’s change falls on each value of that column, such as which accounts a cost center’s gain comes from. See Break Down Each Member’s Change.

  • Carry a driver what-if into the steps after it. In the What if window, Later steps offers to carry the active scenario into the tables written by the steps that read the allocation’s output, and the tables after those, as far as Weave can follow them. It shows how much each later table’s values would rise and fall, and lists the largest changes in the last ones. Where Weave can’t follow a step, it says why. Nothing is re-run and no data changes. See Carry a Scenario into Later Steps.

  • Ask Weave whether you are ready to close. Name the workflows a close, a forecast or any deadline depends on as a readiness set, from Readiness on a project’s Weave tab, and selecting the set answers for all of them in one checklist that opens with its own count: “11 of 13 ready; 1 not ready; 1 couldn’t check.” Each workflow is ready only when every check Weave could run on it passed — its input tables fresh, its last run succeeded and looked like earlier ones, nothing written to its inputs since it last ran, its schedule healthy — and anything Weave had no way to judge is shown as Couldn’t check with the reason, never as ready. A problem is listed beneath its workflow with the Weave tab’s own Fix, Go To and How Weave knows. Give a set a recurring due time and Weave checks it as the due time approaches and tells the set’s owner once before each due time, with the counts. No AI is involved. See Check Readiness Before a Close.

  • Check that two tables tie out. From Reconciliations on a project’s Weave tab, compare two tables, or two periods of one table, row by row on the key columns you pair, and Weave says whether they tie out, how far apart they are and which rows differ, or why it couldn’t check — never “ties out” for data it couldn’t read in full. A row found on only one side is shown as such, never as zero. A reconciliation is approved by a second Architect before it is used, and one linked to a workflow appears on that workflow’s close readiness checklist. No AI is involved. See Check That Two Tables Tie Out.

  • Read what a table, step or workflow does, written from its settings. Select a table, step or workflow in a project and a Documentation section in its details panel shows a page Weave writes from the saved settings: the steps that write and read a table and its columns, what a step does and which workflows it runs in, and a workflow’s steps in order with the tables it reads and writes. An allocation step’s page says how each share is worked out. The page is written each time you open it, so it is always current, and no AI is involved. Anything your role hides is counted, never named. Weave AI, and AI assistants connected over MCP through the doc_describe tool, can read the same page. See Documentation for Tables, Steps and Workflows.

  • See a table’s published name in its details panel. Select a table on a project’s Tables tab and Table Details shows a read-only Published As field under Table ID, with the name the table is published under for dashboards and PlaidXL, or “Not published” when it isn’t. A copy button next to the field copies the name, and hovering over it shows the full name when it’s too long to fit. You no longer need to scroll the grid to the Published As column. See Publish.

  • Hand a whole project over as one document. In the Projects window, Download Handover Pack in the Actions menu saves one Markdown file with every workflow’s page in run order, every table’s page with its column descriptions, each approved metric definition in plain sentences, and the project’s allocation models with how each step splits its costs. It is written from the saved settings when you download it, and anything your role hides is counted, never named. See A Handover Pack for the Whole Project.

  • See how many Weave problems you haven’t read, from any app. A Weave button in the header, next to Appearance, shows a count when Weave has told you about problems you haven’t read yet, in the message when a run ends or when a problem is assigned to you, across all your projects. Its menu lists each project with its count, the most first, and opens that project’s Weave tab on Findings. Reading a problem takes it off the count, and listing a project’s findings brings that project’s count up to date, so a problem fixed or assigned to someone else since drops out. With nothing unread the button shows only its icon, never an “all clear”: Weave’s messages cover only some of what it finds, and the Weave tab lists everything. See The Weave Button in the Header.

  • Weave tells you about problems that appear between runs. Once an hour, Weave checks each project for problems that appear with nothing running — a table not written on its schedule or within its freshness threshold, a scheduled run that didn’t start, and a workflow whose tables another workflow has written to since it last read them — and tells each problem’s owner in an in-app message, once per problem; its first check tells you about the problems already there. A table that several workflows write and that isn’t written on its schedule goes to the owner of each workflow that was due to write it. Each problem it tells you about is added to the count on the header’s Weave button, and being told marks nothing read. See Being Told Between Runs.

  • Tell Weave a warning is normal for your project, and it stops reporting it. On a project’s Weave tab, an Architect clicks This Is Expected on a warning such as a run slower than usual, rows or empty values unlike earlier runs, an import that found no files, or a table not written on time, adds why it is normal, and can pick a last day. Weave then leaves that one problem out for everyone: it isn’t listed, counted on the Weave button or sent at the end of a run, while the summary says how many were left out and the step, workflow or table still counts as checked. Failed runs, broken configuration and findings Weave couldn’t check are always reported. Expected on the toolbar lists everything marked as expected, how many problems it held back this month, and offers Stop Expecting. Who marked what, why and until when is kept in the activity history, and a readiness check still counts the problem and says it was marked as expected. See Mark a Finding as Expected.

  • Weave knows month ends and weekdays. For a workflow or step that runs at most once a day, Weave’s slower-than-usual, row-count and empty-value checks no longer report a run that is in line with steady earlier runs on the same kind of day: the last day of a month, the first day of a month, or otherwise the same day of the week. So a month-end load that is always heavy, or a load that always runs light on Mondays, isn’t reported when those runs are steadier for their size than the other days. The calendar only ever lets a run off; it never reports one the checks would otherwise pass. Days are counted in UTC. See What Weave Checks.

  • See whether a join’s keys repeat before you run it. Check Keys, next to Guess on the Join Map of Inner Join, Outer Join and Table Lookup, counts the key values that appear on more than one row of the table being joined to, which can give the result more rows than you started with. For Table Lookup it tells you when a repeated key means the row it keeps mixes values from different rows. The check reads the table in your warehouse, after the step’s filter and only the rows you can see, and runs only when you choose it. See Inner Join.

  • Reopen or dismiss a copy’s results. View Import or Copy Result, on the Projects tab’s Actions menu and its right-click menu, reopens a copy’s Copy Results window after its message has gone. Dismiss Result removes the results for everyone who can open the project once you no longer need them. Nothing in the project changes. When a result can’t be loaded, the window gives the reason instead of a generic failure, and details from the previous copy are cleared. See Copy Results.

  • A new step can start from the step you selected. In a workflow’s Steps view, select one step and click Create Step. A new Table Extract, join or Table Lookup step starts with the table that step writes as its source, and its columns already filled in. Nothing is saved until you save the step. See Create a Step.

  • Weave tells you when an Extract step on StarRocks left values empty without an error. On a StarRocks lakehouse, a value that can’t be converted to its column’s type, such as N/A going into an integer column, is stored empty and the step still finishes. After each Extract step runs on StarRocks, Weave now counts the values each column lost this way and reports every column that lost any, with how many. See What Weave Checks Today.

  • Weave tells you when a join starts writing rows more than once. After each run of an inner, left or right join, Weave compares the rows the step wrote with the rows of the table it joins from, and reports a run that wrote noticeably more for each of those rows than its earlier runs did. That usually means join keys have started to repeat in the other table. A join that always writes several rows for each row, by design, isn’t reported unless that number rises. See What Weave Checks Today.

  • Weave tells you when an approved metric’s month comes out far from usual, and what drove it. Each day Weave reads your project’s approved metrics and looks at each one’s latest finished period. When the total is outside its usual range and one item, such as a customer, product or plant, accounts for far more of the change than its usual share, the Weave tab reports it in a plain sentence with the figures, and the person who approved the metric is told. Go To Rows opens Table Explorer on that item’s rows for the period, under your own row access. A metric Weave can’t check is listed with the reason, never as fine. No AI is involved. See Unusual Metric Totals.

  • See when a table last changed, right in a step’s table selector. A muted Last Updated line with the date and time, in your local time, appears under the selected table. It is hidden for dynamic selections and tables that have never been updated. See Seeing When a Source Table Last Changed.

  • Row Access warns when a restriction filters nothing. When no table in the project has a column with the restricted column’s name, the Row Access window now says the restriction won’t filter any dashboard until a table does. See One Column Name, Every Table.

  • A tenant clone that hasn’t started says why. The clone progress dialog in the Control Plane now shows the reason it is waiting: the target is paused (resume it to continue), the connection failed, the TLS handshake failed, the server returned an HTTP 4xx or 5xx error, a token couldn’t be minted (contact support if this persists), or the reason is unknown.

  • Workflow step errors read in plain words. When PlaidCloud refuses a step for a reason you can fix, the step log shows the message instead of a server error with a stack trace. A Model Loop, Model Run or Macro Run step whose child workflow fails now shows the child’s own error message. See Managing Step Errors.

  • Preview the exact table you click in the Visual Workflow Designer. The eye icon on an Inputs card in the Inspector, and a table icon in a step tile’s Inputs or Outputs band, open the Data Preview drawer on that table instead of the full Table Explorer. A previewed input appears in the drawer’s table selector ahead of the step’s outputs, and the drawer stays on your table after a run. With no table chosen, it still shows the first output.

  • Numeric columns in Table Explorer show statistics, not a list of values. A numeric column’s summary gives its minimum, maximum, mean, sum, standard deviation and variance, ignoring nulls, on every lakehouse engine including StarRocks. A column that holds only nulls shows its value counts instead. See Column Data and Unique Counts.

  • Export External Database Tables maps columns on its own tab. For each target, Table Data Selection is a full-height tab beside Source and Target and Data Filters, and Inspect Source reads the project source table’s columns. The tools that scan the target database for tables, Inspect Target Database and Retrieve Metadata, are no longer on the export step; add targets directly. Import External Database Tables keeps them. See Export External Database Tables.

  • Weave’s changes are approved on a card, and PlaidCloud checks the approval. In the AI assistant, a change Weave proposes appears as a card showing what it will do, with Approve and Not now. PlaidCloud confirms your approval before anything is written, in the web app and in the mobile app.

  • Guess finds a join’s keys from your project, and says where they came from. Guess on the Join Map of Inner Join, Outer Join, Anti Join and Table Lookup first uses the keys of another join step in the project that joins the same two tables, then an approved metric that joins them, then the key columns set on one of the tables, and only then matching column names, including names that differ only in capitals or underscores and id matched to customer_id. A line under the map says which it used. See Inner Join.

  • Summarize groups identifiers instead of adding them up. When Inspect Source fills a step’s columns, a number column named like an identifier, such as customer_id or Order No, set as its table’s key, or used as a join key now starts as Group By rather than Sum. See Table Extract.

  • Ctrl/Cmd-K opens the command palette from any screen, with your recent items and a list of actions. The palette that searched from the Launcher now opens on every screen except the Posting Register, which keeps its own. Before you type, it lists what you opened last — projects, workflows, tables, dashboards and more — and the actions you can take from here: go to Home, Projects, Dashboards or Documents, switch between the light and dark appearance, connect your AI, and get help. Typing narrows both lists at once, matching the characters you type in order, so proj finds Go to Projects; from two characters on, it searches across projects, workflows, tables, dashboards and panel apps as before and adds those results below. See Search and Commands.

  • Double-click a row in a list screen to open it. In Shared Accounts, Private Accounts and Manage Accounts it opens the account’s file browser; in dashboard and published app lists it launches the dashboard or app; in the Member, Security Group, Distribution List, API Client, Agent, OAuth Client and Event Schedule lists it opens the item’s details. In the Time & Expense setup lists (Accounts, Roles, Work Locations, Master Projects, Team), Invoices and Invoice Items it opens the item, or its edit form where the list has no details view. The icon at the start of the row still works as before.

  • The Project app handles invoices, trips and late time more completely. A new invoice starts from a master project, which supplies the customer and PO number and lists the invoice under its Invoices tab; deleting a draft invoice returns its time and trips to unbilled, and only drafts can be deleted. AR Recipients sets who is emailed when an invoice is submitted. Invoice access follows your team on the master project. The trip drawer shows each line’s vendor, category, project, paid and audited status, plus earlier receipts from before Ramp. Add Late Time starts a new sheet for an approved week, and approval administrators can give any member their first approver. See Track Time and Expenses with the Project App.

  • Empty Dimensions, Data Editors, UDFs and Steps tabs tell you what to do next. A project’s Dimensions, Data Editors, UDFs (user-defined items) and Steps tabs no longer show a blank list when there is nothing in them. Each explains what the tab is for and offers its own first step, such as New Dimension or Add Step; Dimensions and Steps also link to Learn more. Someone without permission to create items there sees the explanation but no buttons. An app that isn’t available offers Go to Home.

  • Large fan-outs of steps run reliably, and Stop cancels imports and exports. Steps no longer fail when PlaidCloud is busy: they wait for capacity, and PlaidCloud adds capacity automatically as steps queue up. Imports and exports that run in the background — Import SQL, dimension loads, Import External Database Tables, file imports and exports — no longer take up a place on the server while they wait, and Import External Database Tables runs up to 10 tables at a time, each table once. If the server running a step is lost, a step that replaces its output runs again automatically. A step that can’t be repeated safely, including any step that writes an output with {date} in its name or path, fails once with an interrupted message instead of running twice; check its target, then re-run the step. Stop now cancels running import and export jobs, which used to keep running after a workflow was stopped. A stopped run now reports its outcome as Stopped rather than Succeeded. See Interrupted Steps and Pause, Stop, and Resume.

  • The fix assistant repairs a broken expression instead of saying it can’t. Opened on a Weave Step expressions finding, or on a step that failed on an expression in a column, a filter or a having clause, the assistant used to answer that the problem was outside what it could change. It now hands the expression, the error and the table’s columns to the same expression specialist that sits beside the Expression Editor, checks the corrected expression it returns, and proposes it as a change to that one field, which you approve as before. See What It Can Fix.

  • The fix assistant shows a proposed change as a card you approve with one click. Instead of the step’s whole configuration, you see why the step failed in one sentence and each setting that changes, named where it can be as it is on the step’s form, with the current value in red and the new value in green. Only what changes is listed. Select Approve N changes to apply the change or Not now to leave the step as it is; replying in your own words still works. See How It Works.

  • Weave mentions a problem once when runs end, not after every run. The message when a workflow run ends used to repeat every problem you hadn’t read, so a Workflow Loop running many workflows stacked one message per workflow. Weave now mentions each problem once. It mentions the problem again only after you read it in the Weave tab and it comes back. The count on the Weave button keeps every problem you haven’t read. See Being Told When a Run Ends.

  • The Weave column is no longer in a project’s workflow list. Weave’s findings are in the project’s Weave tab, and Open Weave on the message Weave shows when a run ends still opens the tab on that workflow. See The Weave Tab.

  • The Weave tab shows each finding as a card, with its actions on it. Under What Weave noticed, each card shows Weave’s sentence, what the finding is about and its workflow, and its own Fix, Go To Step, Go To Workflow or Go To Table, and Mark Read buttons, with How Weave knows folded underneath. Something Weave couldn’t check has a dashed card and says why, and an unread finding is marked Unread. The All, Needs attention and Couldn’t check chips filter the list and count each group, and a large project lists its findings 20 at a time. You no longer select a row before acting on a finding. See The Weave Tab.

  • One Weave tab holds Weave’s findings and your Weave AI chats. The project’s separate Weave AI tab is gone: its chats are now tabs inside the Weave tab, after Findings. Findings comes first and is in front when the tab opens, and neither it nor Chat, your first chat, can be closed. New Chat opens another chat as a further tab, and a conversation from the history opens as a tab of its own. The conversation history sits beside the chat in front and is hidden while Findings is shown. Open Weave on the message Weave shows when a run ends, and a link to the Weave tab, bring Findings to the front whichever tab was in front. Someone whose role can’t see the project’s steps and workflows has the chats only, and the tab opens on Chat. See The Weave Tab.

  • A Weave finding about an expression names where it is and the error, not the whole expression. A card reads, for example, Weave noticed the step “Allocate Costs”: the expression in its Subset clause has an error: Syntax error at line 1, position 280, and the expression is under How Weave knows. A finding of this kind that you had marked read shows as unread once. See What Weave Checks.

  • The Weave tab opens faster in large projects. Weave remembers what each of its checks found for a step, workflow or table, and checks it again only when something the check reads has changed, such as the step’s settings or a new run. Checks that depend on the time, such as table freshness and missed schedules, run every time. Each PlaidCloud server used to remember on its own, so a large project’s tab could take several seconds to open on a server that hadn’t checked that project before. The servers now share what they remember. After a PlaidCloud update, the first opening of each project’s tab checks everything again. See The Weave Tab.

  • Only a change Weave can undo says it can be. An AI assistant card for building an import, export or transform step, creating a project, workflow or dimension, or changing a table’s properties or labels no longer says This can be undone. No undo is offered for them yet.

  • Steps that build their own results now load them directly, and faster. Solver, Location Optimizer, Forecast, Directory Listing, Import XML reading an Alteryx XML input, and — when they run in pandas — Pivot, Melt, Allocation Split, Allocation with Dimension and Rule-Based Tagging now load what they produce straight into the target table as typed data, rather than through a temporary text table. A million-row result from Solver, Forecast or a pandas step loads in about a fifth of the time on StarRocks and in under half on Databend.

  • An empty value is written as a null, on every lakehouse. Import CSV, Import XML and Import Table Archive now load an empty field as null, where StarRocks used to load an empty text field as an empty string and an empty number as 0. The steps that build their own results — Solver, Location Optimizer, Forecast, Directory Listing, Import XML reading an Alteryx XML input, and the pandas Pivot, Melt, Allocation Split, Allocation with Dimension and Rule-Based Tagging — do the same, and the pandas Melt wrote empty strings on every lakehouse. A cell holding only spaces is unchanged. A later step that finds these values with = '' or = 0 needs to test for null instead.

  • A scheduled event keeps its own ERP posting mode. Set an event to Live, Simulate or Off through the API or an AI assistant, and every run it starts uses that mode, still capped by the project’s own setting. Editing, pausing or re-enabling the event in the Event Scheduler keeps the mode, so a Simulate schedule stays simulated; an event with none set runs Live. See ERP Posting Mode.

  • Security group changes made outside PlaidCloud reach dashboards on their own. A membership change made directly in Keycloak, or by single sign-on placing someone in a group at sign-in, reaches row access in dashboards within about 15 minutes, with nothing to save or retry. A new member who joins your default security groups gets their dashboard rows within about a minute, like every other membership change made in PlaidCloud. See Keeping Dashboards in Sync.

  • Document steps finish with a warning when their source folder is missing or empty. Convert Encoding, Convert to UTF-8 and UTF-16, Compress PDF, Merge Multiple PDFs, Convert to PDF, Convert to JPEG, Crop to Headshot, Fix File Extension and Text Substitution report “Nothing to process” with the path, do nothing, and the workflow continues, so a scheduled run over a folder with no files that day no longer fails. Copy and Rename for files and folders report “Nothing to copy at …” or “Nothing to rename at …” with the path in the same way, and Concatenate Files leaves out a source file that isn’t there and names it in a warning. See Document Workflow Steps.

  • File imports finish with a warning when the source file is missing or empty. CSV, Excel, JSON, fixed-width, YXDB, dBASE, ORC, Avro, Parquet, XML and Db2 extract imports name the path in the warning and leave the target table empty with its declared columns, so later steps read zero rows instead of failing. Archive and Access imports warn but create no table. When an import reads several files, warnings are listed on the step (up to five, plus a count of the rest). In an Excel import, a file that doesn’t have the selected worksheet is skipped with a warning naming the file and the worksheets it does have, and the other files still import; if every file is skipped, the step succeeds with an empty target table and a warning. With Delete Files After Import, only files that imported are deleted, so a skipped or warned file stays in the folder. Import MongoDB treats a missing collection the same way. Before a run, too, a missing or empty file is never an error: Populate on a file import’s mapping shows Nothing to populate with the path, reading a file’s columns through the REST API or an AI assistant returns no columns and a warning, and importing a missing file into a new table from Documents creates nothing and marks the file skipped. See Import Steps and Import Excel.

  • Export to Avro names the file after the export. A single-table export writes <File Name>.avro, adding the extension when the name has none, and several tables write <File Name>_<table>.avro. Avro exports also keep nullable columns, dates, timestamps and booleans typed in the file. See Export to Avro.

  • Duplicate Step opens the step form. Duplicating a step from the workflow table, the canvas or the project’s step list opens the step form on its General tab, filled in from the step you are copying, so you can rename the copy and choose where it goes. The copy keeps the original’s configuration. See Advanced Workflows.

  • Paste steps on the Advanced canvas from a menu or button. Right-click empty space on the canvas for Copy N Steps and Paste N Steps Here, which pastes where you clicked, or click Paste beside the clipboard in the toolbar to paste into the middle of your view. Ctrl/Cmd+V still works. See Copy & Paste on the Advanced Canvas.

  • Steps and screens always open in the current forms. Holding Ctrl or Cmd while opening a step or a screen no longer switches to the old-style form, and the old application layout can no longer be loaded instead of the current one.

  • Steps check their settings when you save them, again. As in the old-style form, saving a step whose settings would fail its run, or give the wrong result, is refused with a message that says what to change. Saves through the API and AI assistants get the same checks, except that a setting they leave empty isn’t checked until it’s filled in. Each step’s page lists what it checks:

    • Report: Generate Single and Report: Generate Batch — source, constant and batch column names must each be distinct and readable by the template: letters, digits and underscores, starting with a letter or underscore, and not one of the eight words the template reserves, such as true or self. New sources are named new_source, new_source_2 and so on.
    • Table: Union Distinct and Table: Union All — every source must produce the first source’s columns.
    • Table: Pivot (Rows to Columns) — the category and value columns must be among the step’s output columns.
    • Table: Faker — each fake data column needs a name of its own.
    • SAP: Attach File to Document — the output columns must include relative_file_path, as text.
    • SAP PCM: Hyper Loader — each source must match its loader table, and two sources can’t share a name.
    • SCD-2 As-Of Join — a column takes one role, once, and a Literal As-Of Date must be a real date in YYYY-MM-DD form.
    • Document: Save Dashboard as PDF — at least one Column Filter, each with a Mapped Filter Column that is one of the dashboard’s filters, and only one File Name.
    • Forecast — the mapping needs source columns.
    • Text: NLP (AI) — a source table is required, and an ID column can’t share its name with a column the task writes.
    • AI: LLM Step — a result schema must be a JSON object declaring "type": "object", and bindings need an Anthropic connection, whose Agent Access allows writes for a binding with Write checked.
    • Table: Append and Table: Upsert — when the target table already exists, the mapping must fit its columns and types, and an upsert must map every one of its columns. Numeric and currency count as the same type.

    An Alteryx workflow is imported through the same checks. Re-importing one into a project whose Append or Upsert target tables already exist with different column types now fails the import, rather than that step’s first run.

  • Saving a step with an empty column mapping fills it from its source, as the old-style form did. In Table: Append, Table: Upsert, Table: Pivot (Rows to Columns), Table: Melt (Columns to Rows), SAP: Attach File to Document, and each source of Table: Union Distinct and Table: Union All, saving with a source table chosen but no source or no target columns fills the empty side, as Populate Both Mapping Tables would. Report: Generate Batch fills its batch mapping the same way.

  • Table: Project to Project Copy names its target project again, and checks the data shares it copies through. The step’s Write To section has a Target Project picker, which starts on the current project, and Target Table browses whichever project you pick; a step created in the current step form had no target project and failed every run. Such a step now copies into its own project, without needing to be opened and saved again. It also reads its source through a data share: copying from a project that shares with this one used to fail with You do not have access to this project, while Import Project Table, reading through the same share, worked. A copy needs the source project to allow the target to Read and, when it writes into another project, that project to allow this one to Write. A run without a share it needs fails, saying which share to add, and saving such a step is refused. A copy within one project needs no share, and a refused copy no longer leaves an empty target table behind. See Data Sharing Management.

  • Full agent access is deprecated and will be removed on January 15, 2027. Until then, an LLM connection’s Agent Access and a Microsoft 365 Copilot user’s access level can still be set to Full, and an LLM step that uses Full access logs a warning when it completes. Move to Read & write: agents then make changes through PlaidCloud’s write tools rather than with SQL that writes, and an LLM step writes only to bindings with Write checked, and cannot run SQL that writes or create tables. See Agent Access.

  • A member with no apps lands on the Launcher, which says it has nothing to show yet, instead of a blank Home tab.

  • Report: Generate Batch no longer shows Report Constants. Its Report Constants (Fixed Values) section was never used: each batch row supplies the template’s values. See Reports Batch.

  • Manage Accounts no longer shows a Backup icon. Backup sets were never available, and the window it opened could not load. To keep a copy of an account’s files in another account, use a scheduled workflow — see Backing Up Document Accounts.

  • A link to a screen PlaidCloud no longer has says so. Opening a bookmark or saved link to a screen that has been removed shows This screen is not available. rather than trying to open it.

  • User-defined functions run on newer Python libraries, without numba. The environment that runs user-defined functions now has pandas 2.3.3, NumPy 2.5, statsforecast 2.1 and newer releases of many of the other libraries it offers. numba is no longer included, so a function that imports it now fails and needs rewriting without it. If a function relies on how an older release behaved, check its results after the update. See User Defined Transform.

  • User-defined functions run on Python 3.14. They ran on Python 3.12 until now, and most run unchanged. Python has removed some old standard-library modules since then, among them cgi, crypt, imghdr, pipes, telnetlib, audioop and lib2to3, so a function that imports one now fails with ModuleNotFoundError and needs rewriting without it. Python’s release notes for 3.13 and 3.14 list everything removed. See User Defined Transform.

  • Forecast’s AutoTheta bounds can differ slightly from earlier runs. When the Model is AutoTheta, the 95% lower and upper bounds a forecast writes can differ slightly from earlier runs of the same step, because the forecasting library now calculates them differently. The forecast values are unchanged, and so are the other models’ bounds. See Forecast.

  • Convert Encoding, Convert to UTF-8 and Convert to UTF-16 recognize more legacy encodings. When a source file isn’t UTF-8, these steps now identify Central European, Turkish and Arabic encodings they used to misread. They work the encoding out from the file’s content, so a very short or highly repetitive file can be read wrongly — check the converted output of a file like that. See Convert Document Encoding.

  • Every step that maps columns flags a source column that is no longer listed. On Table Extract, Table Append, Table Union All and the other steps that map source columns to target columns, a target row whose Source Column the source columns no longer list now shows the column name in red behind a ⚠ warning sign. Saving with such a row opens the Stale Columns Found dialog the join and lookup steps already use, with Remove All and Save, Save Anyway or Cancel. Before, the step saved without a word and failed when it ran. Rows with a constant, an expression or a Count (including nulls) summary are never flagged. Table Update checks its Update Column on every row. See Source Columns That Are No Longer Listed.

  • Saving a step warns about a column its source table no longer has. Saving a step that reads a project table, such as Table Extract, Table Append, Table Update, a union, join or lookup step, or an export to Avro, Parquet, XML or a template, now checks each source table as it stands. A column the step’s source columns list but the table doesn’t have, for example one an earlier step renamed or dropped, opens a Missing Source Columns dialog naming the table and the column, with Save Anyway or Cancel. Before, the step saved without a word, and one that read such a column failed when it ran. A source named with a variable is checked as the variable stands, and the dialog names the table it checked; a table that doesn’t exist yet isn’t checked. Join and lookup steps check each source, and Table Update checks each Update Column against its table. Imports from files, and exports to CSV, Excel and JSON, aren’t checked. See Columns Missing From the Source Table.

  • A OneDrive or SharePoint account’s file browser opens its folders. When a Document account’s Start Path includes a folder, such as a SharePoint library folder, you can expand the folders inside it and pick files, instead of typing the path. A folder that no longer exists shows as empty with a warning rather than failing.

  • Google Cloud Storage accounts need their own service-account key. Saving a Google Cloud Storage Document account without a valid service-account key, the JSON key file of a Google service account, is refused with “GCS document accounts require a valid service-account key.” An existing account saved without a valid key stops working until you add one. See Add Google Cloud Storage Account.

  • Saving a Document account explains a rejected setting. A missing Smartsheet token or Google Cloud Storage key now shows a clear message in place of a generic server error.

  • ODBC connections connect, through a DSN or a driver on the agent’s machine. The ODBC form used to require a database and a driver from a fixed list that it never passed on, so its connections couldn’t connect. Leave ODBC Driver blank to use a DSN set up on the PlaidLink agent’s machine, or give a SQL Server driver with its server and database. A new Connection Attributes field passes other ODBC settings to the driver. ODBC connections need PlaidLink 1.2.31 or later. See ODBC, which also covers repairing a connection made with the earlier form.

  • The API call that deleted every unreferenced table in a project is removed. DELETE /rest/v1/analyze/table/unreferenced and the JSON-RPC method analyze/table/delete_unreferenced deleted every unpublished table and view that no step named by its ID. Both now return an error; delete tables by ID instead. Deleting unused steps is unchanged.

  • A project import keeps the project when part of the archive cannot be restored. An import used to fail as a whole when any one item in the archive failed, and an import into a new project removed the project. Now an item that cannot be restored, such as a step, a table’s data or a dimension’s members, is passed over, and the rest of the archive is imported. An import still fails when the archive cannot be read or the project itself cannot be set up, and a new project is then removed. An import into an existing project that stops before it finishes keeps anything it had already restored, and its import result says why it stopped. The message and email at the end of the import say what was left out, or that the import stopped, and an Import Result window lists each item with the reason. The window opens from the message, or from View Import or Copy Result on the Projects tab, and the result stays until someone clicks Dismiss Result. An import whose tables all fail to load their data is now kept too, and its message says so. See When Part of an Archive Does Not Import.

  • Parquet exports keep whole-number columns as integers. In a Parquet file PlaidCloud writes itself, rather than having your warehouse write it, a column of whole numbers is now written as integers even when some of its values are blank, where it used to be written as floating-point numbers. Timestamps and time intervals are stored in microseconds rather than nanoseconds, with the same values, and a timestamp with a time zone is labelled UTC, where it used to take the time zone of the column’s first value; each still marks the same moment. See Export to Parquet.

  • Agent Remote Import Table into SQL Database sends newer Agents a Parquet file. A PlaidLink Agent on version 1.2.33 or later receives the table as one Parquet file instead of a zipped tab-delimited file, so numbers, dates, timestamps and true/false values arrive as their own types rather than as text. Older Agents receive the tab-delimited file as before. See How the Data Reaches the Agent.

  • Checks for a missing file work on OneDrive, SharePoint and SFTP accounts. On these Document accounts, checking whether a file exists always found it, even when it wasn’t there. A missing file is now found missing, as it is on other storage: a step condition on a document path sees it as missing, a file import whose file is missing finishes with a warning, and a missing email or Slack attachment is left off the message with a warning. A folder at the path counts as missing, because the check is for a file. If the account refuses the check, for example because access is denied, the step fails with that reason instead of guessing. See Document Path Conditions.

  • An expression using an undefined variable gets a clear message on Save. Saving a step whose expression uses a variable that neither its workflow nor its project defines failed with a general server error. Save now says which variable it is: “An expression uses the variable rate, which isn’t defined in this workflow or project.” A brace that isn’t part of a variable name, as a half-typed variable has, gets its own message instead of the same error. See What Save Would Refuse.

  • Tables and code in AI answers can be read in the Dark theme. In the Dark theme, a table’s header row and a code block in an answer from Weave AI — in the Weave tab, the fix assistant and the Expression Editor’s AI panel — kept a light background behind light text, so they couldn’t be read, and the table’s border barely showed. They now have a dark background, and the border shows against the page. See Weave AI Chat.

  • Join, lookup and spatial steps no longer delete mapping rows on their own. Opening a Table Inner, Outer, Anti or Cross Join, Table Lookup, Spatial Find Nearest or Spatial Match step, or changing its source columns, used to delete every Join Map and output column row that named a column missing from the source columns, with only a brief Stale rows removed notice. Rows with a constant or expression were deleted too, although the step never reads their source column. Now each such row stays where it is, with the column name in red behind a ⚠ warning sign that explains the problem when you hover over it. Saving with flagged rows opens a Stale Columns Found dialog that offers Remove All and Save, Save Anyway or Cancel. See Table Inner Join.

  • REST Request fan-out sends query values once-encoded. A {{row.column}} value in a query parameter was URL-encoded twice, so the server received A%201 for A 1 and a%2Fb for a/b. It is encoded once now. Values made only of letters, digits and -._~ are unchanged. A POST, PUT or PATCH step with Add Idempotency-Key header on and such a value in its query gets a new key once after the upgrade, because the request changed, so a re-run that straddles the upgrade can send one repeat request for each such row.

  • A file import set to skip when unchanged re-imports into an emptied table. The skip now applies only while the target table still holds the rows the last import loaded, so an emptied table no longer stays empty with every downstream step running on nothing. See Import CSV.

  • Changing a workflow from Standard to Advanced through the API or an AI assistant keeps the step order. It now behaves like Convert to Advanced…, and changing an Advanced workflow back to Standard is refused. See Advanced Workflows.

  • Run Selected Events uses each event’s ERP posting mode. Starting scheduled events on demand from the Event Scheduler ran them Live, whatever posting mode each event was set to. Each now runs in its own mode, still capped by the project’s setting. See Running Events on Demand.

  • Adding a workspace member who already has an account now works. Add Workspace Member failed with “Internal server error” for anyone who already had an account, including people whose account was created the first time they signed in with your single sign-on. The add now succeeds: it applies the Builder role or project access you chose, never lowers a project role they already hold, and sends them a welcome email so they know they have access. A deactivated member, a system account, or an account with an unverified email is refused with a clear reason. Resend Welcome Email is refused for someone who has already set a password or signed in, and reports a delivery failure instead of success. See Member Management.

  • Report: Generate Batch with an empty batch table finishes with a warning. A run whose batch table has no rows used to fail with pod exited without writing a result. It now completes, warning that the batch table is empty and naming it, and produces no reports. See Reports Batch.

  • The AI assistant’s workflow_run tool starts at the step you name. from_step_id begins the run at that step, that step included; it used to be ignored and the run started at the beginning. Naming several steps runs them together as one run on an Advanced workflow, and a Standard workflow refuses with a message to name one step or use from and to.

  • Starting a parallel Standard workflow from a step no longer reruns the steps before it. A Standard workflow whose execution method is parallel, started from a step through the AI assistant’s workflow_run tool with from_step_id or through the API, ran every step again, including those before the one you named. It now runs that step and the steps after it, as a serial workflow does, and resuming the run stays within those steps.

  • A run that starts inside a parallel group now finishes. On a Standard workflow, a run that began at a step inside a group set to Execute in Parallel ran that one step and then never finished. This happened with Run Selected Step(s), with a serial workflow started from a step through the AI assistant’s workflow_run tool or the API, and when resuming a serial run that had stopped inside such a group. Each now runs the steps it covers and finishes. A selection that ends inside a parallel group also no longer runs the group’s steps listed after it, and the run waits for every selected step in the group to finish before it ends.

  • Row Access handles column names with special characters, and its sync status says what is wrong. A table with a column named like Fiscal Year & Period, with an &, /, ( or % in the name, no longer raises an error such as “Period is not defined” when you pick the column to restrict, preview a table for a group, or save. A restricted column that also sits on a table that was never published now ends in Error naming that table, instead of staying on Waiting; publish the table or restrict the column on a published table. A sync being retried after a failure reads Retrying with the reason and a Retry button. See Keeping Dashboards in Sync.

  • The AI assistant changes nothing until you approve, and shows table and column names as written. Asking it to build a step into a new table used to create the table before you had approved anything. The proposal now says the table is new and where it will go, and the table and step are created together only after you approve. Creating a project, workflow or dimension, copying a table, changing table properties, and adding or removing labels also ask first. An approval counts only in your very next reply, and if you change the request, the assistant shows you the new version to approve instead of building the old one. Proposals name tables rather than showing internal ids. In every AI chat, including the expression assistant, names with underscores such as agg_freight_by_country display exactly, instead of turning into italics with the underscores dropped. See Building a Workflow Step.

  • Weave findings name things properly. A workflow with no name reads “unnamed workflow” instead of an id, and a check that couldn’t run is named by its title, such as “Last run failed”. Two different duplicate steps in one workflow are now separate findings, so marking one read no longer hides the other. Some findings you had already read can show as unread once after this update. See What Weave Checks.

  • The Weave tab stops re-checking unchanged steps in very large projects. Opening a very large project’s Weave tab, or marking its findings read, ran every check again on every step and workflow, even those that hadn’t changed since Weave last checked them. Weave now reuses its earlier results for anything unchanged, as it already did in smaller projects. See The Weave Tab.

  • Weave checks steps with a repeated source column, and reports a filter of 0 as a problem. A step whose source columns listed the same column twice, or whose Subset or Secondary Filter clause was a value such as 0 rather than a condition, made the Step expressions check report that it could not finish, and saving the step failed with an Internal Server Error. A repeated source column no longer stops either. A value in place of a condition is reported as a problem with that clause, because the step fails when it runs, and saving the step says so; use False, True or a condition instead. See What Weave Checks Today.

  • The Expression Editor’s Weave panel knows the expression you are editing. Asking it to fix, explain, or comment on “this expression” works without pasting the expression into the message: Weave reads the editor’s text with every message, so a follow-up question after an edit is about the edited version. The menu on a suggested expression — Insert at Cursor, Append, Replace, and Copy to Clipboard — now works on every reply. And the panel’s prompt box shows its “Ask Weave AI” hint in a lighter color, as every placeholder hint across PlaidCloud now does, instead of looking like text already typed.

  • After you approve a step fix, its result stays and the re-run card works. Approving a fix in Weave AI replaced the fix’s card with the card offering to re-run the step, so the fix’s result vanished, and the re-run card’s buttons never became available. The fix’s card now stays, with its result, above the re-run card, which you can approve straight away. See How It Works.

  • Excel imports read whole-column ranges and binary workbooks, and no longer fail on padded headers. In the Import Excel step, a selection such as Original$A:BJ imports those columns of that worksheet, and XLSB workbooks import worksheets and cell ranges, with the sheet picker listing them. A header with leading or trailing spaces or a line break no longer makes the import fail intermittently with “Table … is not found” or “Unknown column”; the spaces and line breaks are trimmed from the column name. See Import Excel.

  • Import CSV and Import TSV honor Skip Rows, so files with a header block import by column name. A file with lines above its header, such as an SAP list export (KE24, KSB1, FAGLL03) with a selection block and blank lines, imports by header name when you set Skip Rows to the number of lines before the header. The header used to be read from line 1 whatever the setting. A file with only the skipped lines and a header imports nothing and the step completes. See Import CSV.

  • One source column can feed several target columns in file imports. In Import Excel, fixed-width, JSON, Avro, Parquet, DBF, XML and YXDB imports, mapping one source column to two target columns used to fail: a numeric target converted the source to a number before your expression ran, which broke values such as 1,500, and two text targets stopped the load with a column-count error. Both now import. See Import Excel.

  • cast(x, Float) is 64-bit on every warehouse, and casts on StarRocks are applied. A Float cast used to be skipped on StarRocks and single precision on Databend, so an amount like 1225541207.71 lost digits. On StarRocks, casts to big integers no longer overflow past about 2.1 billion, a Numeric cast with no precision keeps up to 10 decimal places instead of rounding to a whole number, and JSON casts are applied. A value that cannot be converted, such as non-numeric text cast to a number, becomes null. Float columns PlaidCloud creates are double precision, and an existing table rebuilt with Overwrite becomes double precision. See Casting to Float.

  • An import whose target columns are all fixed values loads every row. An import step in which every target column’s expression is a constant, such as cast('1225541207.71', Float), with none of them reading a source column, failed. It now writes one row for each source row, or for each row its source filter keeps. See Import CSV.

  • Import CSV runs with no delimiter, quote or escape character set. The step uses a comma, a double quote and a backslash, and no longer fails when it runs. The import steps list their valid header handling values, use and skip, and dynamic for Import Excel. See Import CSV.

  • A filtered cross join over large tables runs. Table Cross Join sizes the join from the rows left after the source filter, so a filter that leaves a few rows no longer gets the step refused because of the size of the table. See Table Cross Join.

  • Steps that pick a workflow keep one that is missing. Workflow Delete, Copy, Rename, Stop, Clear Log and Include show a saved workflow that no longer exists as id (missing), where they used to switch to the first workflow in the list.

  • Opening a project doesn’t change its settings. Opening a project no longer saves Default Table Storage as transient or ERP Posting Mode as live on its own.

  • Table creation works on a PostgreSQL warehouse. Creating a table on a PostgreSQL warehouse used to fail.

  • Duplicating a dataset on an external Lakehouse database in Superset is refused with a clear message.

  • The Activity Stream shows only changes. It no longer fills with “row access reconciled” entries that changed nothing.

  • Free workspaces keep daily, weekly and monthly backups, where they used to keep the last two days.

  • Import XML shows a whole-document target in lineage.

  • Requests through the REST API and an AI assistant report what happened. PUT set-variable with value left out keeps the variable, and an explicit null still deletes it. POST propagate-columns answers 422 invalid_aggregation for a null, empty or non-aggregating value such as dont_group. GET upcoming-runs for a workflow takes an optional limit and sets truncated when it cuts the list. Over MCP, query_data_read with json_paths on a column that isn’t JSON answers invalid_argument and lists the JSON columns, table_data_import answers ok: false when the import fails, and the value of dimension_aliases, dimension_properties and project_variables takes a long plain string.

  • Deleting several tables through an AI assistant works. Asking an assistant connected over MCP to delete a list of tables with table_organize used to fail with an internal error. Each table is now deleted and the result reports every table.

  • Parquet files with newer text, binary and dictionary columns open in Documents. Browsing or inspecting a Parquet file failed with an unsupported-type error when it used the newer Arrow string, binary or dictionary column types, including files PlaidCloud’s own exports wrote. These files now open.

  • Getting a download link through an AI assistant works without an expiry. Asking an assistant connected over MCP for a download link, or a URI, to a document without saying how long it should last failed. The link now expires after 60 seconds unless you ask for a different time.

  • An ERP answer PlaidCloud can’t confirm is held as in doubt, and a reversal is sent only once. A Workday or Dynamics 365 Finance & Operations posting that timed out or got a server error could be recorded as rejected, so the Posting Register suggested reversing a journal that might already be in the general ledger, and reversals on those systems and on NetSuite, Sage Intacct, QuickBooks and Xero could be recorded the same way. Any answer PlaidCloud can’t confirm — a timeout, a server error, a status it doesn’t recognize — is now held as in doubt for you to check. A reversal from a workflow and one from the Posting Register share one lock, so a posting can’t be reversed twice by a re-run or by two requests at once, and Workday and Dynamics 365 Finance & Operations settle an in-doubt reversal by looking it up in the ERP the next time it is attempted. See Reversal.

  • LLM steps run on older Claude models again. An LLM step using an Anthropic model older than Claude 4.6 — Claude Sonnet 4.5, for example — failed every run with adaptive thinking is not supported on this model. The step now works with any Claude model. See LLM Step.

  • Updating a member or group through MCP changes only what you name. A partial update to a member through identity_member_upsert cleared the fields it left out and could change whether the member was active, and adding or removing a group’s members could change the group’s default status. Both now leave everything you didn’t name as it was.

  • An MCP upsert with an update and no insert no longer reports a failure after writing. Through the query_transform tool’s upsert mode, an update_query without an insert_query applied the update and then returned an error, so retrying the call could apply the update twice. It now runs whichever of the two statements you give, and refuses a call with no table_id, or with neither statement, before anything is written.

  • Table Explorer says when a column’s details fail to load. A column whose details failed to load stayed blank or kept loading with no reason given, even when the cause was a problem with the filter. The column now shows Profile failed, with the reason when you hover over it, and a failure on PlaidCloud’s side is reported with an ID the PlaidCloud team can trace. See Column Data and Unique Counts.

  • Bring your own data imports your CSV. Choosing Bring your own data on an empty Projects screen or on Home uploaded the file and created a project, then failed at the import and removed the project again. It now loads your file into a table in the new project and opens the project’s Tables list. See Start With Your Own CSV.

  • Pivot and Allocation Split in pandas mode keep date-and-time values. On StarRocks those columns were written empty, and on Databend the step failed. An infinite value in their results — a division by zero, for example — is now written as a null where Databend failed the step.

  • Table: Upsert steps save again. Once a step’s mapping had target columns, the step form refused every save, because the mapping had lost its Update Key column. The column is back, right after the target column’s name, and ticked by default. A column with no Update Key setting counts as a key, and at least one column must stay ticked. See Update Key.

  • Document: Save Dashboard as PDF keeps each source column’s type. A step saved in the current step form lost the types of its source columns, and failed every run. The types are now kept. A step saved before this fix needs its source inspected again, with Inspect Source › Populate Mapping Table, which now keeps the Column Filter and File Name tags you’ve set; until then, saving it names the columns with no type. See What’s Checked When You Save.

  • Table: Union Distinct and Table: Union All match each source’s columns by name. A source that named the same columns as the first source, in a different order, was combined by position, so its values could land in the wrong columns. See Table Union All.

  • SCD-2 As-Of Join takes a workflow variable as its Literal As-Of Date, as the field’s tooltip says. A variable such as {report_date} wasn’t filled in when the step ran. See As-Of Date and Options.

  • A step that writes a table in a locked project no longer fails at the automatic backup taken after its rows load.

  • App Runner apps keep themselves current, and older ones work for viewers on a project that restricts rows. An App Runner app made before run answers were held for one run only saved them on the workflow, which a project that restricts rows refuses for anyone but its Architects, so the app failed for its viewers. Every App Runner app is now refreshed to the current version and rebuilt when PlaidCloud is updated, and again on each Rebuild or edit. A locked app is left alone until you unlock it and click Rebuild, and hand edits to its generated files are replaced, with the earlier versions kept in its Git history. See Keeping the App Current.

  • Where Used includes the notification steps that use a connection or an agent. A connection used only by Notify: Slack or Notify: Microsoft Teams steps, or an agent used by Notify: PlaidCloud Agent steps, was reported as not in use, so it could look safe to change or delete. Where Used now lists those steps.

  • Members with Org Admin permissions no longer see an empty Org Admin tab. There was no screen behind it.

  • Opening a step from anywhere opens the step form. A step opened from a table’s or a UDF’s dependencies, Where Used, the project’s step list, the workflow log or the Inspector’s Edit Step Details opens in the same form as from the workflow table. A step with no configuration form of its own, such as some steps the Alteryx converter creates, opens on its General tab instead of failing.

  • Importing a project archive tells you when it is done. A progress window follows the import, and when it finishes you are told so, along with any warnings it raised. An import that cannot start, because the project you chose is locked for example, leaves the window open and says why, where it used to close at once. See Restoring an Archive.

  • Copying a project with only the objects you choose works. Copy To with objects picked, into a new project, failed whenever the project had project variables, and no copy was made. It now copies the chosen objects and the project’s variables. Copying the whole project was not affected. See Copying a Project.

  • A failed project import or copy says why. The message used to say only that the import or copy had failed. It now gives the reason, such as a dimension whose hierarchy could not be loaded. When the import or copy was into an existing project, it also says that anything restored or copied before the failure stays in that project. See Restoring an Archive.

  • A long-running import or export is no longer started twice. A background job still running after 30 minutes, such as a large project import, dimension load, file import or export, could be started a second time. A project import or dimension load then reported that it had failed even though it was still running. A job that is still running is no longer started again, however long it takes.

  • An import, export or dimension load no longer stalls for 30 minutes during a PlaidCloud update. A job that a background worker picked up just as that worker was being stopped, during an update or when PlaidCloud scaled its workers down, waited 30 minutes before another worker ran it, so a step that normally takes seconds could hold up its workflow for half an hour. Such a job is now passed straight on to another worker.

  • Retrying a failed project import works. When an import that creates a new project from an archive failed part way, importing again with the same project ID failed straight away, because the database user and schemas the first attempt set up were still there. The new attempt now takes them over. See Restoring an Archive.

  • A workflow import sent again while it is still loading no longer loads twice. When a run resumed or retried an import step while that step’s import was still loading, a second load of the same files could start alongside the first. The repeat now joins the load already running. A step whose settings use a variable that changes every run, such as {date}, still starts a new load.

  • Run history counts the rows every step writes. Some steps record their output table by its name, and run history found no row count for them: the step’s Rows Out was blank, and the workflow’s Rows Out total left it out. Runs from now on include those steps. See Run History.

  • Parquet and Avro imports inside a Macro load directly. An Import Parquet or Import Avro step inside a Macro always took the slower route of converting its files first, even where the same step outside a Macro loads them straight into the table. It now loads them the same way inside a Macro as outside one.

  • An action that ends in a server error is no longer sent again. When the server returned an error or timed out, PlaidCloud resent many requests up to three more times, even though the server may already have carried them out, so the same action could happen twice. They are now sent once. A request that fails because the server is briefly unavailable is still retried.

  • Retrieving column values through the REST API now works. POST /analyze/query/retrieve-column-values rejected every request that sent its filters as a list, the only shape it can apply, and a request without filters, so the endpoint could not be used. It now takes filters as a list of dimension and item pairs, and filters can be left out.

  • The allocation trace API says what was wrong with a request. A request to an allocation trace endpoint under /analyze/step that named a column that isn’t on the table, gave an unsupported direction or max_depth, or supplied both a table and a step, or neither, came back as a server error with no explanation. It now returns a 422 that names the problem and, for a missing column, lists the columns the table does have.

  • A table bundle’s import log says when a table’s column settings weren’t restored. Importing a bundle restores each table’s column dimensions, notes, display formats and vector widths. If that restore failed, the table still imported and the import log listed it as imported, with nothing to show its column settings were missing. The table’s entry in the log now includes column_config_restored: false, so you know to set them again.

  • The faithfulness check catches a figure given to a what-if result that couldn’t be measured. A what-if answer lists the results it couldn’t measure as having an unknown impact, not a zero one, but a reworded version that quoted another result’s figure against one of them still passed the check. A clause that names such a result beside a figure must now also say it wasn’t measured, and the check explains how to fix one that doesn’t. It also no longer rejects a what-if answer’s own wording when a result’s name contains a dollar amount. See The Written Summary Is Checked, Not Just Written.

  • A crash in a database driver fails only the step that hit it. A driver failure, such as SQL Server refusing a connection’s login because the password was changed at the source, used to stop the PlaidCloud service running the step, and any other steps running there at the same time stopped too, with each retry stopping it again. The step now fails with the database’s own reason, such as Login failed for user, and nothing else is affected. If the password has changed, update it on the connection.

  • Exports to a remote database commit their rows. An export to a remote database other than SQL Server could be rolled back, so rows the step reported as written were missing from the target. They are now committed when the export finishes.

  • A Workflow Loop runs the looped workflow on every iteration again. Only the first iteration ran the looped workflow’s steps; every later one finished at once without running them, while the loop still reported each iteration as done. The same applied to an iterating container in an Advanced workflow, to a step that a Goto sent the workflow back to, and to a workflow that Run Workflow steps ran more than once in the same run. Each of them now runs its steps every time. See Workflow Loop.

  • An allocation no longer fails when a dimension-type property’s Hierarchy is “Not Specified”. A node property that picks members from a dimension can leave Hierarchy as Not Specified, so the picker shows every hierarchy. A rule using such a property failed with an error if that dimension still contained members belonging to no hierarchy, which older dimensions can carry. Those rules now run. A member no hierarchy contains also no longer stands in for itself when a hierarchy is named, so it contributes nothing to the rule rather than only itself. See Dimension-Type Properties and the Member Picker.

  • Multi-Table Join saves and validates correctly. Several problems that stopped a join from saving or running are fixed. See Multi-Table Join and Validation.

    • Saving from the step editor works with more than one input table. Saving a join with two or more input tables used to fail with “Input should be a valid string”. It now saves.
    • Output-column expressions and the Post-Join Filter are checked when you save. Expressions are checked against the join’s own inputs by alias (alias.column), the way the step runs, so a valid expression is no longer refused and a join with an expression no longer fails to save with a server error. A broken expression is reported on its output column, and a broken Post-Join Filter on the filter. A join set to Also carry columns named at run time that isn’t summarizing skips the expression check at save, because columns are added at run time; those expressions are checked when the step runs, as are per-source filters.
    • Conditions accept column names with spaces and punctuation. A join on a column such as Build Plant or Cust (Id) used to be refused when the step ran or was saved, with an “Invalid Multi-Table Join configuration” error, even though those columns could already be chosen as outputs. The join now works, and a BETWEEN bound written as alias.column, such as cust.Max Id, is read as a column of that input instead of being compared as text. Names containing a double quote, backtick, backslash or control character are still refused.
  • Reading a large dimension no longer holds up everything else in your workspace. Tabulating or exporting a large dimension — a hierarchy table, a value’s consolidation, an ancestry or level export, a saved hierarchy, a sort of a parent’s members, or a bulk alias load — used to stop the server answering anything else for as long as the read took, so other people’s requests queued behind it and could time out waiting. Those reads now leave the server free to answer while they run, and consolidating a value is substantially faster in its own right. See Dimensions.

  • A copied project’s schedules arrive paused, and enabling one runs it on the copy. Copying a whole project into a new project brought its scheduled events across marked active, but they never ran on the copy. They now arrive paused, a message when the copy finishes lists the ones that were active in the original, and enabling one in the Event Scheduler runs it on the copy. See Copying Into a New Project.

  • Table Lookup ignores an aggregation set on its lookup columns. A Table Lookup step whose lookup-table columns had an aggregation setting of their own could fail, or return wrong results with no error, such as a row more than once. It now ignores those settings, so each input row comes back once, as in a step without them, and Export to Portable Format reproduces the step the same way. See Table Lookup.

  • A driver what-if from your AI tools no longer answers from a driver your model didn’t use. Asking what a driver change would do (allocation_driver_scenario) gave a figure even when the driver table had been edited since the allocation last ran, or when the step filters, limits, de-duplicates, summarizes, computes or converts its driver in a way the estimate can’t follow — and that figure could be far from what re-running the model would show. It now checks each group against the split your model actually made, leaves out any group where the two disagree and says how many, and declines when none agree; if the driver changed since the last run, re-run the workflow that builds the allocation, then ask again. Those driver options, and a change that takes a driver value across zero, are declined with the reason. See Tracing Allocations.

  • Editing a schedule through an AI assistant no longer resets what it didn’t change. Updating a scheduled event through the workflow_schedule MCP tool with only some of its fields, such as a new name, cleared or reset the rest. A paused event could start running while the Event Scheduler still showed it paused, and its memo, timezone and other settings were lost. Fields left out now keep their values, and a new event needs a name and a schedule before anything is saved. See Editing an Event.

  • An Alteryx workflow that records a tool’s position with a fraction now converts. A workflow file that stored a tool’s position on the canvas with a fraction, such as 59.99998, failed to convert, with a message that it wasn’t a readable Alteryx workflow. See Migrate Alteryx Workflows.

  • AI chat draws diagrams that used to appear as text. When the assistant wrote a diagram with a stray space or extra words after its opening line, the chat showed the diagram’s raw text instead of a picture. PlaidCloud now removes them before the reply is shown, so a diagram of a type the chat can draw appears as a picture. See Diagrams.

  • Restoring a table snapshot through the API or an AI assistant keeps a safety snapshot and an audit record. An in-place restore through the REST API or an AI assistant connected over MCP replaced the table’s data with no pre-revert safety snapshot and nothing in the audit log, unlike Revert / Restore in the Snapshots panel. It now takes the same safety snapshot, where the storage engine supports one, and writes the same audit record, and passing the newest snapshot you listed as expected_current_snapshot_id refuses the restore if the table has been written since. Restoring every table in a project through the API reported success even when some tables weren’t restored; it now restores the rest and fails naming each table it couldn’t restore and why. On StarRocks, that project restore also took a table back to its state before an earlier revert instead of to its latest hold. A restore to a new table that fails, from the dialog or the API, no longer leaves the new table listed in the project. See Reverting or Restoring a Snapshot.

  • The Advanced canvas opens every workflow, and says so when it can’t. A container saved without a position or size, for example one created through the API or MCP, opens drawn around its member steps. A layout item that can’t be read no longer stops the workflow opening: a Layout Partly Unreadable notification lists what was reset or hidden, and a hidden annotation is removed the next time you save. A step that could end up without a place on the canvas, for example when adding it from the palette was interrupted part-way, is shown below the others; if adding a step loses its place, you’re told the step was added and is shown below the others. A workflow that can’t be loaded now shows a Could Not Load Workflow message instead of a blank canvas, and opening a Standard workflow shows Visual Canvas Unavailable with a pointer to Convert to Advanced…. See When the Canvas Can’t Open a Workflow and Add, Connect, and Edit Steps.

  • Connections of older database types can be deleted. Deleting a Crate, Apache Drill, Firebird, Impala, MonetDB, SQL Anywhere, SQLite or Sybase/SAP Adaptive Server Enterprise connection from the Connections list failed; it now deletes the connection. These types have no editor, so opening one to edit it says so instead of showing an error.

  • Lists show your change as soon as you save it. After you added, edited or deleted a scheduled event, edited a user-defined function, or changed a connection’s Members, Groups, Agents or Owners from the Connections list’s Actions menu, the list kept showing the old values until you refreshed it. It now updates when you save. Locking or unlocking a workflow, or changing its Diagnostic Mode, in the workflow’s window also updates the project’s workflow list.

  • PlaidLink agents no longer fail to start with Could not lookup agent by client id: None. Some agents couldn’t fetch their configuration from PlaidCloud, so they stopped at startup. They now start and run normally, with nothing to change on the agent.

  • Popup notifications show their whole message. Notifications at the top right of the screen, and the Application Upgrade Available notice, cut their text off with “…” instead of wrapping it, so the upgrade notice never got as far as asking you to save your work and refresh. They wrap again and show all their text.

  • An empty Workflows or Tables tab no longer offers New on a read-only project. On a project set to read-only, an empty Workflows tab’s New Workflow button and an empty Tables tab’s Import Table Bundle button were still enabled. They are now disabled, as they already were on the Dimensions, Data Editors, UDFs and Steps tabs.

  • A step that fails before its work begins says why in the workflow log. When a step’s conditions can’t be checked, or its project has no default document account set for a step that uses it, the reason was shown only on the step. It is now also written to the workflow log, where you can copy it.

  • The AI’s expression check accepts an expression that is only text. The expression check used by the Expression Editor’s AI panel and the expression_validate MCP tool treated an expression such as 'Y' or '', which sets a column to that text, as an error, although the step runs it.

  • The AI’s expression check catches a function given the wrong number of arguments. The expression check used by the Expression Editor’s AI panel and the expression_validate MCP tool accepted a call such as func.date_diff(table.ts), which needs a unit and two dates and so fails when the step runs. On a Databend lakehouse it now says the function doesn’t take that many arguments, so the AI can correct the expression, and if the panel’s answer still contains such a call, the panel shows Expression withheld with the reason in place of the expression. A StarRocks lakehouse checks fewer functions this way, and func.date_diff is not one of them. A function that accepts several argument counts, such as func.round with or without decimal places, is still accepted.

  • Deleting a table that a step reaches through a variable shows that step first. When you deleted tables or a folder from the Tables list, a table that a step reaches only through a path with a variable, such as /Periods/{period}/Sales, was treated as unused and deleted after a general confirmation. It now opens the delete window with that step listed, and the delete goes ahead only if you force it. See Delete.

  • Find Sheets in Selected File works on a zipped workbook. In the Import Excel step, Find Sheets in Selected File and the Populate buttons on Table Data Selection failed with “Internal server error” when the source file was a .zip. They now read the workbook inside the zip, as the import does when the step runs. When a file can’t be read as an Excel workbook, the message now names the file and gives the reason instead. See Find Sheets in Selected File.

  • A file with an uppercase compression extension is decompressed. A file named, for example, PRODUCTS.XLSX.ZIP was left compressed where the same name in lowercase was extracted, so Import Excel could not read it. Uppercase and lowercase extensions are now treated the same.

  • The function editor opens editable for anyone allowed to change the project’s automation. Since the September release, the user-defined function editor could open read-only for a person allowed to edit it, with Save enabled but typing refused and no banner, most often when opening a second function soon after the first. It is now editable for anyone allowed to change the project’s automation; people it doesn’t apply to still see it read-only, with the banner naming who to ask. See Who Can Change a Project That Restricts Rows.

  • Dimension loads refuse a member outside the main hierarchy for a second alternate hierarchy. Such a member was refused only when a parent-child load named it as the child. A flat load, and a parent-child load that named it as a parent, placed it in the second alternate. Both now fail and name the member and the alternate that already holds it, as adding a member under it does. A parent-child row refused this way no longer leaves its parent behind as an empty group. See Load to Alternate Hierarchy.

  • Moving a dimension member under a parent its hierarchy doesn’t contain is refused. The member used to drop out of the hierarchy instead. Adding a member under a parent the hierarchy doesn’t contain now places that parent at the top of the hierarchy first, so the new member shows.

  • A dimension step that names a dimension that doesn’t exist says which name it looked for. A dimension step whose dimension, often a name built from variables, matched no dimension in the project failed with an error that didn’t name it, such as Invalid input of type: ‘NoneType’, which read like a problem with the data. It now fails with Dimension “FY26 Cost Centers” does not exist, giving the name after its variables are filled in, so you can see which variable or dimension to fix. See Specify Dimension Dynamically.

  • Warnings in the Log tab show the warning icon. Every warning line in a project’s Log tab showed the “?” icon in the Level column. Warnings now show the warning icon, and a line logged at critical level shows the error icon.

  • A project can be authorized to post to an ERP from its home page. A workflow run’s posting step needs the project to be authorized for the connection, and the screen for authorizing it couldn’t be opened, so the step failed with “Not authorized to write to connection”. A project’s home page now has an ERP Write Authorizations button under ERP Posting, where an Architect of the project authorizes it, including a project set to All Workspace Members. The step’s error now names the connection and environment and points to that button. Oracle EBS connections are listed alongside the others. Authorizing or clearing a row leaves the grid where it is, with your scroll position and column sort kept, and the window can be resized with the public-project note wrapping in full. See Authorize the Project to Post.

  • A new project’s slug can no longer give it another project’s reporting schema. A slug whose reporting schema shared a name with another project’s schema, such as sales beside a project slugged sales_report, was accepted, and the two projects then shared that schema. Such a slug is now refused when you create, copy or import a project.

  • Workflow toolbar buttons stay reachable in a narrow window. When a workflow’s Steps toolbar was wider than its window, the buttons past the edge, such as Lock Workflow, Paste, Log and Flashback, were cut off and couldn’t be used. They now move into a More menu at the end of the toolbar, in the same order, and return to the toolbar when the window is widened.

  • A step’s condition checks can be read and edited on a short screen. In a step’s window, once you turn on condition checks and pick a condition on the General tab, the Configuration panel, such as the column mapping of Check Query Value, was squeezed to about one row, so you had to zoom the browser out to use it. The General tab now scrolls and the Configuration panel keeps room to show and edit its settings. Steps without condition checks are unchanged.

  • Very large Parquet, ORC and JSON exports no longer run out of memory. When PlaidCloud wrote one of these files itself, rather than having your warehouse write it, it read the whole table into memory first, so a very large table, or a project or table archive holding several, could fail. It now writes the file as it reads the rows.

  • Parquet and ORC exports use the compression you choose. A Parquet file PlaidCloud wrote itself was always compressed with Snappy, even when the export asked for Zstandard, the default for Export to Parquet and Archive Tables, and an ORC file was not compressed at all. Zstandard, Snappy and LZ4 are now used inside the file, any other compression wraps the finished file as gzip does, and a compression PlaidCloud can’t write stops the export instead of being ignored.

  • A provider that rejects your credentials tells you what to do. When REST, Salesforce, NetSuite, Sage Intacct, Azure Cosmos DB, Dynamics 365 Finance and Operations, S/4HANA, Xero, QuickBooks or Workday refuses the OAuth credentials on a connection, the message now asks you to re-enter the credentials or re-authorize the connection. It used to show a generic server error.

  • Databricks sampling and export no longer fail with an expired token. On a connection that signs in with machine-to-machine OAuth, a long-running sample or export could stop partway because its token had expired. The token is now refreshed as needed.

  • Sorting a document list by Modified date works. Choosing the Modified column to sort a file list now orders the files by date.

  • A Data Editor keeps empty date cells empty. A date cell you left empty could be saved as 1970-01-01. It now stays empty.

  • Pasting into a dimension keeps each value on its own row. Pasting a column that contains blank cells shifted the values below the blanks up. Each value now stays on its row, and pasting an empty clipboard does nothing.

  • Exporting Parquet as many files is refused with a clear message. Choosing to write a Parquet export as many files never produced them. The export now stops and says that Parquet writes a single file, so you can choose a single file instead. Single-file Parquet exports are unchanged. See Export to Parquet.

  • Deleting a published table removes its Superset dataset. The dataset used to stay behind in the dataset list that dashboards draw from. It is removed along with the table.

  • The AI assistant’s data queries are checked by their structure before they run. The assistant’s query tool is for reading data. It used to be kept that way by looking for words that change data, and a query could hide those words, for example inside a value passed into the query. Now each query is read in the warehouse’s own SQL grammar, with its values filled in, and runs only if it is a single SELECT, WITH … SELECT, or SELECTs joined by UNION, INTERSECT or EXCEPT, with nothing inside it that writes data or locks rows. A query the check can’t read is refused, and so are EXPLAIN, SHOW and DESCRIBE.

  • A metric’s author can no longer approve their own definition after someone saves it unchanged. Saving a metric definition without changing anything made the person who saved it the author of the new version, so the Architect who actually wrote the definition could then approve it alone. A save that changes nothing is now refused. See Who Can Do What.

  • The AI assistant and table references leave out what your role hides. When a table, step, workflow or dimension is hidden from your role, the AI assistant no longer lists it. The steps listed against a table or dimension show one your role hides without its name or workflow, a step you can see no longer shows a workflow your role hides, and a dimension no longer lists a table your role hides. A hidden step still counts when you delete a table, so you’re still asked before its references are removed. See What Your Role Hides.

  • Starting a workflow run no longer returns the run’s credential. The API and AI assistants no longer include it in the reply to a run request.

  • Weave no longer names a failed step your role hides. A workflow’s Last run failed finding counts the failed steps you can’t open rather than naming them, and then doesn’t offer Fix for that run, since the step to fix could be one you can’t open.

  • Only a workspace admin can change a workspace admin. Editing an admin, changing their email or password, deactivating, re-enabling or deleting them, ending their sessions, changing their groups, and making someone an admin all need a workspace admin. Any other member is refused, and so is a project or agent service account, whatever member permissions it holds. A Deactivate Workspace Members step whose list includes admins deactivates everyone else and names the admins it left active. See Changing a Workspace Admin.

  • Export templates read only the data they’re given. An Export Templated step’s template, and a templated export through the API or MCP, renders in a sandbox. Each source is a read-only list of rows, where first(), all(), mappings(), scalar() and the other read methods still work; with Use Pandas Dataframes for Table Data on, it is a read-only table with columns, itertuples(), iterrows(), head(), tail() and column totals such as invoices['amount'].sum(). Other pandas methods, such as loc and groupby, are no longer available, and any method whose name starts with to_ is refused. The older REST step’s request body and a report’s RML template render under the same kind of restriction, so a template that reaches past its data fails the step, and report formulas no longer run as code. See What a Template Can Use.

  • Dashboard thumbnails show only what you can see. A dashboard’s thumbnail is rendered as you, so it follows your row access, and is kept for up to 7 days.

  • Dashboards take accounts from PlaidCloud sign-in only. Self-registration pages in Superset are closed.

  • Dashboards and datasets import only from the ZIP file that Export produces. An older JSON or YAML export is refused, so export the dashboard again and import the new file. See Importing Existing Dashboard.

  • Multi-line credentials are masked as you type. A NetSuite private certificate, an Anaplan certificate and private key, a Postman API key and a Slack or Teams webhook URL show as dots while you paste them, with browser spell checking turned off. Leave one blank when you edit a connection to keep the saved value; a replacement made only of spaces is refused. See Create and Manage a Connection.

  • With segregation of duties on, ERP reversals go through the Posting Register. A reversal requested through the project-level ERP reversal API — the path a project, a user-defined function or a service account uses — is refused, with a message to reverse from the Posting Register, where approval applies. Posting is unaffected, and Business Central, Oracle Fusion and Acumatica keep saying that they don’t support reversal. See Segregation of Duties.

  • Imports and project archives refuse unsafe content. An import no longer accepts a loading query from whoever calls it: PlaidCloud builds the query from the import’s own settings. A project archive holding files or settings that a PlaidCloud archive never contains is refused before anything is restored. See Restoring an Archive.

  • An import through MCP runs as you, in the project you name. The table_data_import tool’s options could replace the person and project an import ran as, so the import was checked against their permissions instead of yours. options now only fills in import settings the call leaves out.

  • A read-only AI connection can no longer export files or send changes through a REST connection. Through Microsoft 365 Copilot or another AI agent connected over MCP, an agent with read-only access could export a table to a file in a document account, save a dashboard as a PDF document, copy a table’s rows into another project, or send a request that changes data to an external system through a REST connection. Through MCP, exporting a table to a file or saving a dashboard PDF now needs permission to write documents, copying into another project needs permission to write tables, and a REST connection request other than GET or HEAD needs permission to write connections, so a read-only agent is refused. This applies to people using MCP directly too, for example through the Claude connector: without those permissions, these actions are refused. An AI agent below Full access can also explain-analyze only a single read query through MCP. Exports, dashboard PDFs and REST connection requests in the PlaidCloud app are unchanged. An agent at Read/Write or Full access can still do all of them if the person it acts for has those permissions. See Access Levels.

  • Only a connection’s owners or a workspace admin can change who has access to it. Anyone who could edit connections could share any connection with themselves, or make themselves its owner. Changing a connection’s Members, Groups, Agents or Owners now needs an existing owner, or a workspace admin, who can change them on a connection they don’t own to hand it on when its owners have left. Anyone else who can edit connections can still open them to see who has access. See Create and Manage a Connection.

  • A copied or imported project no longer inherits permission to post to an ERP. Copying a project, or creating one from a project archive, used to carry over the original project’s authorization to write to an ERP connection, so the new project could post without an Architect ever authorizing it. An Architect now authorizes each project separately. The project’s ERP posting mode is still copied.

  • A data share speaks only for members of the project it was granted to. Anyone who named the receiving project could act on the sharing project as an Architect — reading its project, table and dimension details, and creating tables and dimensions in it — without a role in either project, and a Read share allowed those writes too. No row data was exposed. Reading through a share now needs a role in the receiving project, and writing needs a Write share and the Manager or Architect role there. Import Project Table and Export Project Table steps work as before. See Sharing Data Between Projects.

  • Restoring an earlier version always restores the item itself. Restoring a project or dimension version checked permission against the target named in the request but restored the item it was called on, so a Manager on a project that restricts rows could restore that project’s settings by naming another project as the target. Restoring a project, dimension, user-defined function, step, workflow or data editor now applies in place, a different target is refused, and the permission check is on the item restored. Through the AI assistant or MCP, project_versions restores in place with the target left out, where it used to fail. See Version History.

  • An undocumented API endpoint that could post to Sage Intacct without the ERP write checks has been removed. It posted a journal entry without checking that the project was authorized for the connection, and kept no record of the post. Post journal entries with the Intacct: Post Journal Entry step, which applies those checks.

  • SAP and EBS postings can no longer be sent to an agent directly. The agent queue, reached through the API or the MCP agent_payload tool, would pass any saved payload to an on-premises agent, so an SAP or EBS posting could skip the ERP write checks, or be sent a second time. The queue now refuses those postings. An SAP function call sent through the queue is now checked against the same list of blocked administrative functions as one from a workflow step.

  • An SAP Post step in Test Only Mode needs the same permission as a live posting. Test Only Mode still sends the documents to SAP, and whether SAP treats them as a test is up to your SAP posting function. A test run now needs write permission on the SAP connection, or the project’s authorization to post to it, just as a live posting does. A test run still doesn’t stop a later live run of the same documents.

  • A dimension backup file can only write to the dimension it names. Restoring a dimension from a backup file applied every entry the file carried, so a file edited by hand could write into a dimension in another project — including one the person restoring it could not otherwise open. A file whose contents do not belong to the dimension named in its own header is now refused, nothing in it is applied, and the dimension being restored is left as it was. Restoring a backup into a different dimension, which is supported, is unaffected: it is the file’s own contents that have to agree with the file’s own header.

  • An AI assistant conversation can be continued only by the person who started it. Someone who sent the assistant another person’s conversation ID, including the ID of a deleted conversation, was given that conversation’s history and could add to it. The assistant now refuses, and deleting a conversation removes all of it. See Manage Past Conversations.

  • The environment that runs user-defined functions no longer includes PySpark’s Java libraries. They weren’t usable there, and they carried known security vulnerabilities. PySpark’s DataFrame and SQL API still reaches your workspace’s Spark Compute Cluster, but a UDF that imports SparkContext or RDD, or passes a Spark DataFrame to statsforecast or Fugue, now fails. See Getting Started with PySpark.

  • Passwords and keys in steps live only in variables. The workbook password of Import Excel, and the key and workbook password of Document: Encrypt File and Document: Decrypt File, take only a workflow or project variable reference such as {aes_key}; a step holding the secret itself is refused when you save it, so a secret never appears in a step, its versions, its copies or what an AI assistant reads back. Secrets already typed into steps were moved into new project variables, visible to Architects only, and the steps now reference them, so they run as before. See Document: Encrypt File and Document: Decrypt File.

  • Document account secrets are write-only, and moving an account needs its secret again. An account’s key, password or token, and an SFTP account’s RSA private key, are never shown again after you save them, in the form, the API or to an AI assistant. Leave the field blank when you edit an account to keep the saved secret, and use Clear the saved key (use the password) to take an SFTP account back to its password. Changing where an account connects, its bucket, SFTP host or port, or OneDrive tenant, is refused unless you enter the secret again, so no one who can edit an account can send its secret to a server of their choosing. See Adding New Document Accounts.