Skip to content

September 2026

  • The Posting Register gives finance and accounting one workspace to review ERP postings across every project — and to act on them in bulk. A tenant-level console, outside any single project, opening to an exception queue of the postings most likely to need attention — in doubt, unconfirmed, pending, or failed — aged against the platform’s own timers, with simulated postings counted separately.

    • One window, not a stack of them. A navigation rail opens each screen — postings, exceptions, approvals, delegations, roll-up, trends, control totals, lineage, exports and alerts, AI assist — as a pane in place. A scope bar picks a project, connection, or entity by name, and bookmarks it as a deep link or a saved view.
    • Act on many at once. Select rows, or everything the current filter finds across every page, preview the impact, then clear simulated postings or retry only what the ERP rejected. A high-value action asks you to type the affected amount first.
    • Read a posting as an accountant would. A drawer docks on the right with a Journal tab: debit and credit lines by account, each line’s dimensions or worktags, and a per-currency balance check that never blends currencies. Arrow keys walk the queue with the drawer following. Amounts render as accounting figures, with uncaptured money left blank rather than zero.
    • Reverse with segregation of duties. Reversal runs from the drawer or the API, routed to every qualified approver through an approvals inbox, with bounded delegation and escalation. A whole intercompany run reverses at once, tied to zero per currency.
    • See the pattern. Trends break failure rate and latency down by connection or ERP type, Lineage drills back to the run and out to the ERP document, and Control Totals verdict each batch with a reason. Exports download as CSV or JSON — masked below the top security tier — on a schedule or as an alert. Closing a period seals its postings into an immutable snapshot, sealed automatically each day.

    Four scopes — view, operate, approve, admin — govern the console, which hides what you lack the scope for rather than disabling it. Visibility follows your existing connection and project grants, and the register strips personal identifiers, withholds the ERP’s business key, and never lets a dimension or worktag value leave in an export. See Review the Posting Register.

  • A workflow run can post live, simulate, or skip its ERP posting steps. Simulate builds and validates exactly what each step would post, commits nothing, never contacts the ERP, and lands the would-post entries in ERP Post History marked simulated; Off skips posting steps entirely. A project carries its own cap, and a run’s effective mode is the more restrictive of the two — sub-workflows, macros, model and loop runs, and resumed runs all inherit it. SAP posting, attachment, and RFC steps don’t dry-run and are skipped outright under Simulate or Off, since SAP’s own test flags still open a real connection. See Choose a Posting Mode.

  • Seven more source systems read into PlaidCloud natively. Each connects from the Connections screen and lands data through its own workflow steps, with the object, cube, view, or entity list read live from the system itself.

    • Xero. Sign in, approve the grant, pick the organisation — no developer account or client secret. Import Entity pulls eleven Accounting API entities, narrowed by status, date range, and a modified-since cutoff. Post Document writes manual journals, invoices, bills, payments, and credit notes back from a header and lines table, with a test mode that validates the batch first and a write path that never posts a re-run document twice; an ambiguous outcome is held for you rather than guessed at. See Connect to Xero.
    • Salesforce. Connect with a client id and secret from an External Client App; Test Connection reports the organization id, API version, and the Run As user your rows are scoped to. Query Object extracts any object over the Bulk API, shows each field’s landed type before you save, marks a field that can’t land honestly with the component fields to tick instead, and filters at source. Name the window a run loads, from a variable such as {period}, and a re-run says it already has it. See Connect to Salesforce.
    • SAP ECC and S/4HANA. Build a self-serve extract by searching for a table, transaction code, or saved SAP Query, and let SAP’s own metadata build the step. Columns land typed — dates, exact decimals, integers, UTC timestamps — and Call SAP RFC types its results the same way and can write Parquet. Extracts run through a PlaidLink agent under SAP’s own authorization checks. Excluding a range, a not-between filter, pattern matching, and more than one condition on the same column need the current PlaidCloud SAP package on the agent’s system; an older package still runs equals, inequality, and range filters. A column too large for its decimal type lands as text, and a column whose SAP type changes replaces the whole table — either way with a warning naming the column. See Ad-Hoc Extracts from SAP ECC / S/4HANA.
    • Oracle HFM/FCCS. Pull ad-hoc slices from Financial Consolidation and Close in a workflow: connect with a service account, pick a point of view from metadata-driven selectors, get a table back — no ticket to the HFM team. Repeat slices come from cache, the landed table is row-level-security-ready, and any slice can become a scheduled load. See Connect to Oracle HFM/FCCS.
    • IBM TM1 / Planning Analytics. Run a saved cube view or your own MDX (Native or CAM authentication), or load a TM1 hierarchy into a PlaidCloud dimension. TM1 has no change tracking, so pin a point-of-view member to a {period} variable and let a schedule build history a period at a time. A dimension load refuses, rather than silently drops, an element under more than one parent, and flags any consolidation weight it can’t carry as a plain rollup sign. PlaidCloud calls TM1’s REST API directly, so the server needs a reachable network path — or run a cube query through a PlaidLink agent. See Connect to TM1.
    • Oracle Essbase. Run a live MDX query, or load an outline with Read Dimension, which refuses by name a hierarchy it can’t represent — shared, label-only or Dynamic Calc members, attribute dimensions, an unrepresentable operator, or over 5,000 members. Three changes to note: a restricted (#NoAccess) cell now errors instead of landing as text; labels come from the connection’s alias table rather than a per-session default, so label text may differ; and Row Limit defaults to 250,000 rather than unlimited. See Connect to Oracle Essbase, Essbase: Query Cube, and Essbase: Read Dimension.
    • Anaplan. Read-only — nothing is ever written back. Read View reads a saved view exactly as saved, typed when Line Items sit on the columns axis and text otherwise; Read Export runs a pre-existing export action and lands text; Read List reads lists into a dimension, refusing by name anything that can’t be a clean hierarchy. Anaplan’s request budget is shared across your tenant, so stagger schedules. See Connect to Anaplan.
  • Vectors are an ordinary column type, and finding the nearest rows is an ordinary workflow step. Project tables now carry a Vector column for the pre-computed embeddings you already produce — an array of numbers per row, in the same row as the keys, text and amounts that describe it, loading through the same import and transform steps as any other column and joining to your fact tables, with no separate vector store to provision or keep in step. Declare how many values each embedding holds with Vector Width in the column details panel, and a Parquet load carrying a different length is refused before anything lands, naming the file, the column, the row, the length found and the width declared, rather than quietly mixing two dimensions in one column; data arriving through a connector, a tap or a workflow step is not width-checked, so make those paths produce the width you declared. An AI: Vector Search step then returns the nearest rows to one or more query vectors, by Cosine or Euclidean (L2) distance, writing each match with the query it answers and how far away it was. The search is exact rather than approximate — every row that passes the step’s filter is compared against every query vector — so the filter is what keeps a large table fast, and a search too large to finish is refused up front, reporting the row and query counts behind it, rather than started. A row whose distance cannot be measured is left out rather than returned as the nearest match, and running the workflow in Diagnostic Mode reports how many were left out. A Vector column is refused as a join key, a group-by column or an aggregation target, naming the column and the role, and it is left out of Table Explorer’s profiling and value lists. PlaidCloud stores and searches vectors; generating them stays with the embedding model of your choice. Vector needs Lakehouse v2 (StarRocks); on other engines the type is not offered. See Vector Data Type and AI: Vector Search.

  • Signing up is now one short flow that ends inside your workspace. Confirm your email with Google, GitHub, Microsoft, or a six-digit code, answer one optional question, then name your workspace. Free skips the credit card and builds immediately; Starter and Team go to checkout with an optional seven-day trial. A live status screen replaces the old “check your email” dead end, and you can invite up to ten teammates while it builds. See Sign Up.

  • Connecting an AI assistant has its own guided window, ready-made task starters, and a consent screen — and Home now points new visitors toward it. A Connect Your AI button in the header opens per-client tabs — Claude, ChatGPT, Grok, Claude Code, Cursor, Microsoft 365 Copilot, and Other (GitHub Copilot, Gemini CLI, Codex CLI) — with setup steps and your MCP server URL. The Microsoft 365 Copilot tab walks a workspace admin through downloading the per-tenant agent package, a Microsoft 365 admin through uploading it to the org app catalog, and each user through adding and signing into the agent — see Microsoft 365 Copilot. A first-time visitor to Home now sees a short banner introducing the assistant that links straight to Connect Your AI. Copy request for admin sends setup to whoever can approve it, and Get my connection details covers a sign-in that can’t complete a browser redirect. A client supporting MCP prompts now offers task starters — import a CSV, explain a cost change, debug a failed workflow, explore project data. Authorizing a client now shows an Application Access Request page naming the app and redirect URI before you approve, where a token used to be issued with no visibility into what asked; clients already connected are unaffected until their refresh token expires. See Getting Started with AI Coding Agents and Authentication.

  • A “what if this input changed” question comes back with a written answer, not just a table of numbers. It states how much of the change it can account for and across how many results, then separates results it reached directly, partially measured, unmeasured, and merely consequential instead of mixing them unmarked. See How the Assistant Stays Honest.

  • Weave now watches how your workflows run, and tells you when a run brings a problem to light. Alongside its configuration checks, Weave judges each workflow’s latest run against its own last 30 days: a last run that failed, and how many failures in a row that makes; a run whose steps took much longer than the workflow’s previous runs; a step whose output tables hold far more or far fewer rows than they usually do; and a column that came out empty in a far larger or smaller share of its rows than usual. A workflow with too few runs to compare against is reported as unchecked rather than healthy. When a run ends, the person it belongs to is told in the app about the problems Weave holds against that workflow — its runs and its steps’ saved configuration alike — that they have not yet read in the project’s Weave tab, so a problem is mentioned at each run’s end until it is read. Each run’s figures make a new finding, so a workflow that keeps failing is mentioned after every run. See What Weave Checks.

  • Weave watches scheduled events. Weave now reports a scheduled event whose schedule can’t be read, one that has come due without starting a run — saying, where it can tell, whether the cluster never fired it or the job it fired failed — one that came due while its workflow was still running, and one whose job in the cluster no longer matches it. See What Weave Checks.

  • Every project has a Weave tab listing what Weave found, where the workflow list only marks it. Each finding appears in Weave’s own words, problems first and the things Weave could not check after them with the reason. Mark findings read one at a time or all at once, and Go To opens the step or workflow a finding is about — asking which workflow when a step belongs to several, never picking one for you. Clicking a workflow’s Weave mark opens the tab on that workflow’s findings, and the tab has a link of its own to bookmark or share. If Weave can’t be reached the tab says so rather than showing an empty list. A workflow’s mark also no longer reports a problem with a step’s run in another workflow that shares the step. See The Weave Tab.

  • The message Weave shows when a run ends opens the Weave tab. It has an Open Weave link that opens the project’s Weave tab on the findings about the workflow that ran, from whichever app you are in, and it stays on screen for 30 seconds instead of seven. A Weave digest links to the whole tab. Following the link doesn’t mark anything read. See Being Told When a Run Ends.

  • Weave reports what it could not check, not just what it found. A problem found is now distinct from a thing not checked — an allocation step saved before its mapping is filled in is never marked passed — and each report states how many steps and workflows it checked out of the total. It is rule-based, with no AI model behind it, so a report is free to run. See What Weave Checks.

  • Import a named range or a cell range from Excel. The Import Excel step reads a workbook-defined named range or a cell range (Sheet1$A1:J100) as an alternative to a whole worksheet, and you can mix all three in one import. A range covering disjoint areas, or one out of bounds or inverted, is rejected rather than imported wrong. See Import Excel.

  • Workspaces upgrade themselves on their release channel, after a week’s notice. When a release reaches your channel — Rapid, Regular, or Stable — your org gets email at least seven days ahead and PlaidCloud upgrades during the maintenance window (Sunday 02:00 UTC by default). To stay put, set the channel to No Release. See Automatic Release Updates.

  • The AI assistant can now build a step that looks each row up in a second table, computes a column, writes a fixed value, or sets a column’s type. Before it could keep, rename, drop, filter and group columns from one table; the other four had to be built in the workflow editor. Ask for a lookup and the summary you approve says what the step matches on and what the match does to your rows: the match drops nothing, so every row of the first table carries through it whether or not it matched, with the second table’s columns left blank where it did not; the lookup never multiplies your rows, because the second table is collapsed to one row per key first; and where that table holds a key more than once, each column is filled in on its own, so the values you get can be a combination that appears in no single row of it — counted against your own data, so you can see whether it arises at all. It also says when a filter runs after the lookup and what that means for rows that found no match, and that where the step groups on a column from the second table, the rows that found none are grouped under a blank value rather than skipped. A computed column and a fixed value are stored as text unless you set a type, and the summary names the columns that have none. Everything the step reads is checked before you are asked to approve it — an expression or a filter naming a column that isn’t there is refused, with the columns each table has, rather than built and left to fail when it runs. See Building a Workflow Step.

  • Ask the AI assistant for a workflow step that reshapes a table, and approve it before it exists. Describe the step you want — totals by region for one year, a filter down to three columns, a copy with a column renamed — and the assistant proposes it: the table it reads, every column it would write and what any renamed one came from, the row filter, whether it groups and what it computes, the table it writes into — which the step rebuilds from scratch on every run — and whether it joins a workflow. Nothing is created until you reply, and what gets built is the step you were shown rather than whatever was re-sent with your approval — and if anything it described has moved in between, you are asked to approve the new version. Tables can be named the way you say them, and a name shared by two tables is queried rather than guessed. See Building a Workflow Step.

  • A project can carry a default document account, offered as “Project Default” in every file selector inside it. Set it on the project home, next to Connection Environment, or clear it with None. A new file step preselects Project Default when the project has one; an existing step keeps the account it was already saved with until you change it. See Setting a Default Document Account.

  • A dashboard’s display controls can now be limited to a chosen set of columns. Each display control’s configuration panel gets an Available columns field — set it and that control’s Group By dropdown offers only the columns you chose instead of every filterable column on the dataset; leave it empty and nothing changes. Trimming a display control’s list no longer means unchecking Is filterable on the dataset itself, which also removed those columns from every chart’s Simple Metric picker and adhoc filters. See Display Controls.

  • Allocation cost-trace answers say what they cover, rate only what they measured, and add up. An answer now opens by saying whether its figures are the whole table’s or one member’s, flags a period that may still be loading before the figure rather than after it, and names any part of your narrowing it could not apply. Confidence is stated as confidence in the breakdown, not the cause, naming the weakest of several value columns rather than averaging it away. The figures reconcile — a stated change equals the totals printed beside it, a member table that doesn’t sum to it says so, and branches that could not be measured are reported as unmeasured rather than as having moved. A comparison between two versions or scenarios is no longer described as time, and suggested next questions no longer point at a breakdown already on the page or a step that can’t be isolated. Where you name no field to break a change down by, the assistant searches for the one that best explains the move — now on every workspace, where it had been switched on almost nowhere. See Analyze Allocations With an AI Agent and How the Assistant Stays Honest.

  • Restricting who sees which rows is now one screen, saving it is live, and it can run itself. Row Access is set up in a single screen — source, values per group, default for everyone else — and saving pushes to PlaidCloud queries and Superset dashboards within about a minute, with no separate push step. A Set Row Access step binds grants to a source table, restrictions save as reusable templates, and group membership can sync from a Keycloak attribute. See Managing Row Access.

  • Table Explorer’s column details panel profiles every column and flags data quality issues. Per-column statistics add null and blank counts with percentages and a distinct-value percentage; numeric columns add skewness, a histogram, and correlations against up to ten other numeric columns. A five-part quality read — outliers, format mismatches, duplicate keys, orphaned dimension members, constant columns — shows as badges with a ranked summary under Actions, and respects row-level security. See The Details View.

  • Templated emails gain variables and one-click formatting. The Notify Via Email template editor reaches your project and workflow variables through the Insert menu or variables['<name>'], and a Style menu applies email-safe formatting without hand-typing tags. See Send Templated HTML Email Notifications.

  • Dimension loads are much faster and refuse what they can’t load honestly. Hierarchy loads no longer re-read the whole membership per row, and an export with alternate hierarchies is written in one pass rather than once per hierarchy — neither grows quadratically now. Export row order is stable and a level-format export no longer runs out of level columns. A levels (flat) load honours its default consolidation instead of always using +, and a named leaf column decides which node carries each row’s aliases, properties and values; and loading aliases, properties or values now fails with the offending names rather than storing unknown members silently. A parent-child load refuses a default consolidation type that isn’t one of the valid ones even where the table also names a consolidation column — the default still applies to any row whose own is blank or unrecognised — and refuses a target hierarchy whose name is also one of the columns being loaded, since a column of that name is read as each row’s hierarchy. See Loading and Unloading Dimensions and Dimension Export.

  • Builder-seat limits are now enforced. Inviting, promoting, or reactivating a Builder is blocked with a clear message once your plan’s limit is reached. Viewers stay free and unlimited on every plan. See Viewer vs. Builder.

  • The LLM Provider connection form asks only what you can answer, and an Anthropic Claude connection can be edited again. Model is fetched live from your provider, so new models appear without a PlaidCloud release, and Base URL and API Version show only where they apply. The form gains Test Connection and the standard sharing and security settings, and a model set over the REST API or MCP now takes effect. Editing an Anthropic Claude connection was broken outright, blocking key rotation; it works again. See LLM Providers and Connections.

  • An empty “Table Contributes To” now really means nothing uses the table. A step reaching a table through a variable path such as /Periods/{period}/Sales is now listed, where both usage lists came back empty; where the variable can’t be resolved, the step appears under May Reference This Table. Read the list as what a run starting now would touch, not everything that ever has. See Managing Tables and Views.

  • PlaidCloud now needs Chrome or Edge 94, Firefox 93, or Safari 16.4 or later — on iPad or iPhone, iPadOS or iOS 16.4, which excludes only the iPad Air 2 and iPad mini 4. An older browser gets an unsupported-version page rather than a half-working PlaidCloud. See Supported Browsers.

  • Searching by name matches the words you type, not the punctuation. invoice header detail finds Invoice_Header_Detail whatever the separators or order, closest match first, across Home page search and the AI assistant’s name search. Dashboard and panel-app search and workflow step pickers still match literally.

  • The Set Row Access step, and choosing a column for Row Access, now accept the columns your tables really have. Both checked the column you named against a list PlaidCloud never stores, so every column was refused as “not a column” — the step could not bind grants to any source table. They now read the table’s columns from the warehouse, and a table that has no data yet says so. See Table Set Row Access.

  • Partition, distribution and update keys can now be set on a table, and partition keys are kept. Setting any of the three failed with an error, and partition keys given when a table was created, or carried in a table bundle, were silently dropped.

  • The AI assistant is told when row access filtered its view. It answered from the rows you may see and then said things like “no other regions are present” — true of your view, not of the table. It is now told when your grants narrowed its query, and can say your view is filtered without saying what is hidden. See Using the AI Assistant.

  • The expression assistant checks every expression it shows you. It used to check its answer only when it chose to. An expression that fails the check — such as a safe-divide guard with a literal zero as its divisor — is now withheld with the reason in its place, and asking the assistant to try again starts from that reason. See Using the AI Assistant.

  • An AI-written safe-divide guard with a zero in the wrong place is now refused. Asked for a percentage that stays safe when the denominator is zero, the assistant could return a guard wrapped around the result with a literal zero in place of the divisor — div0, divnull and safe_divide all take the number that might be zero as their second argument. Written that way the guard fires on every row, so nothing is divided and the column came back as the same fallback value throughout, or the query failed once a row genuinely had nothing to divide by. Expressions like that are now rejected with the correct form: always for a computed column in a step an assistant asks you to approve, and in every answer the expression assistant gives. See Using the AI Assistant.

  • A dimension exported in ancestry format no longer repeats every row. That format writes one row per member and ancestor, and each group of columns the export adds — aliases, attributes, properties and values — multiplied those rows again, so a dimension carrying more than one of them produced a table many times its true size, and a large one ran out of memory before the export finished. Parent-child and level exports were never affected. See Dimension Export.

  • The fix assistant cannot save a step correction you have not approved. It could propose a corrected configuration and save it in the same breath, so a step’s configuration changed while the reply was still asking you to approve it — and a wrong filter or column reference does not fail, it quietly returns different rows. Approval now has to arrive in a reply of its own before anything is written, what gets saved is the configuration you were shown rather than anything re-sent afterwards, and one approval saves it once. See Fixing Workflow Errors with AI.

  • The fix assistant applies your approved correction to the step you opened it on. It could refuse the change as though you had no access to your own project, or write an empty unnamed step in place of the one it had just diagnosed — leaving the real step broken while reporting success. It now always writes to the project and step the conversation was opened from. See Fixing Workflow Errors with AI.

  • Allocation cost tracing declines on a project that restricts rows, rather than answering from two different sets of rows. Where a project restricts rows by attribute, anyone other than a project Architect was traced against only the rows they were granted — while the model structure the trace walks was not restricted at all. The shares, rates and residuals it reported were therefore drawn from two different populations, and nothing on the page said so. That was not a narrower answer, it was a wrong one, so the trace now declines with the reason instead. A project Architect reads every row and is unaffected, as is any project that does not restrict rows. See Analyzing Allocations with AI.

  • The assistant tells you when the language model is unavailable, instead of reporting an internal error. When the provider behind the AI assistant is at capacity, unreachable, or failing, the reply came back as “An internal error occurred. Please try again.” — which reads as a fault in PlaidCloud and gives you no reason to expect a second attempt to go any better. It now names the provider as the cause and asks you to try again in a few minutes. An exhausted quota and rate limiting already said so, and are unchanged. See Using the AI Assistant.

  • The assistant no longer imports a file or creates an import or export step before you have approved it. It now shows you what it would do — the file or source table, the destination, and the workflow it would attach to — and acts only after you agree in your next message, once, and exactly as shown. Answering “yes” no longer leaves a second copy of the step behind. See Importing a File.

  • A project archive’s table data survives the round trip — taken with the data, and restored with it. Export dropped table data on every warehouse except Databend while reporting success, restore had the mirror bug on the Lakehouse, and a project using row access couldn’t archive table data at all. If you hold a full archive taken before this release, or restored one and found it empty, do it again — the closing message now says how many tables went in, and came back, without data. See Archive a Project.

  • Document accounts reach into sub-folders again. Anything reading an account’s tree returned a broken picture below the top level on OneDrive, SharePoint and SFTP, and came back empty on Azure Blob, with no error; S3, Wasabi and GCS were always correct. Sub-folders are now followed to any depth on every account type, and with it:

    • Download as ZIP brings down everything inside the folder — a folder of only sub-folders used to download empty and report success. Folder names no longer prefix-match, so Report no longer pulls in Report2024. Redo any affected download. See Download Folder Contents.
    • Copying a folder copies it, on OneDrive and SFTP. SFTP’s Copy Folder actually moved it; OneDrive copy, move and rename failed outright. All work now, over MCP as well. If an SFTP folder copy looks missing from its source, check the destination. See Using Document.
    • Copying and moving a file on SFTP work again. Both always reported an error whatever happened — check whether a move reported as failed in fact left the file in both places. The destination folder is created as needed.
    • Delete Old Files reaches sub-folders — check any you have scheduled. With Recursive on it never reached sub-folders on OneDrive, SharePoint, SFTP or Azure Blob, under-deleting while reporting success, and could delete a folder itself as an “old” item. Only files are deleted now, and a scheduled step may delete considerably more than last month — use Test first. See Delete Old Files.
    • The document steps that convert to PDF or JPEG, merge or compress PDFs, crop a headshot, or fix a file’s extension work again — each failed immediately with an internal error. See Document Workflow Steps.
  • Large cloud-storage folders list correctly, and browsing one no longer takes PlaidCloud down. Listing a Google Cloud Storage folder fired one request per file, so a large account could overload the server and stop anything else in progress. An S3 or Wasabi folder with over a thousand entries now shows all of them, and a published app’s file picker lists each sub-folder once rather than twice. An AI agent asked for a single folder with document_browse reads just that folder, where it used to read everything below it and discard all but the top level.

  • Several dimension calls over the API work again, and large loads are much faster. A member’s last child, walking up from a member, and backing up every dimension in a project each failed on every call, and a dimension deeper than about a thousand levels couldn’t be traversed at all. A large parent-child load now takes seconds rather than minutes. save_properties_to_dataframe failed on any dimension with a property value set, and returned an empty table — silently — where member names are all two characters, such as currency codes; a property holding a list of values now comes back as that list rather than the text it is stored behind. save_values_to_dataframe returned each number as text, which load_values_from_dataframe then refused, so the pair couldn’t round-trip at all; values now come back as numbers. And load_aliases_from_dataframe takes effect immediately rather than at the dimension’s next use. See Loading and Unloading Dimensions.

  • Dimension filtering finds members by their property values again. The Filter: box searches the alternate, alias, property and value columns on show, not just the member name, and the Advanced filter’s Column list offers properties alongside aggregations — where a dimension with no aggregations used to show an empty list. Filters now survive a tree rebuild. See Finding Nodes in a Hierarchy and Advanced Filters.

  • A dimension’s “Referenced in Tables” list shows every table that uses it, and setting a column’s dimension checks the dimension exists. The list only showed columns on tables built by a workflow step, so a table from New Table, a snapshot restore, or a deleted step looked unmapped. Setting a dimension over the API or the assistant accepts a name, path and name, or id, and refuses what it can’t resolve instead of accepting it silently — which used to break the references list, row-access coverage, dimension deletion, and bundle export.

  • Several workflow steps no longer fail, hang, or quietly do the wrong thing.

    • A calculated column in a file import no longer comes back empty when you leave its Source blank — it loaded empty values across every import type with no error. Clear any Source you set as a workaround and reload any table loaded while it was blank. See Advanced Data Mapper Usage.
    • A step whose source table holds a decimal or floating-point column can be edited again — saving failed with a bare Internal Server Error because expression validation’s sample row missed eight of the twenty allowed column types.
    • A workflow can no longer end up with the same step listed twice, which hung Standard Serial runs in “Running” forever. Restructuring now refuses a change that would duplicate a step, and an existing duplicate fails the run with a clear error — delete it to repair. See Choosing a Workflow Type and Copy & Paste Steps.
    • An Import SQL step interrupted mid-run retries automatically instead of failing the workflow. Allow about thirty extra minutes before assuming a retrying step is stuck. See Import SQL.
    • An ERP posting step previews instead of posting live when its Validate Only setting is left unset — a step written over REST, MCP, or a bundle import that omitted it used to post live. See Choose a Posting Mode.
    • Trying to run a workflow that’s already running now tells you so, rather than failing with a bare Internal Server Error; the REST API returns 409 Conflict. See Run a Workflow.
    • Setting a project or workflow variable shows what each variable holds right now — every variable in scope, with Current Value and Memo read fresh on open. What the step writes is unchanged. See Set Project Variable and Set Workflow Variable.
  • Connection credentials are write-only everywhere, and saving a connection never erases one by accident. Every credential field shows blank on reopen and keeps its stored value if left blank. Twelve single-line credentials that had been displaying in plain text — a Stripe token, a Monday.com token, a Bill.com password and developer key, several OAuth secrets, a Workday refresh token — are masked and never redisplayed. Over the REST API and MCP, an empty string keeps the stored value and null clears it. See Create and Manage a Connection.

  • The AI assistant answers about real connections, real rows, and real text. It worked from a hand-maintained list in which fifteen of twenty-four connection types couldn’t be saved and forty-nine that work were missing; the list now comes from the platform, Sage and DB2 are no longer offered as table-import sources, and a remediation workflow setting that never existed is gone. Questions about data in a row-access project are now answered with the same grants as any other read, and a query whose text pattern contains a colon runs instead of being read as a bind variable. See Connect Your AI Agent.

  • An AI agent tracing an allocation is no longer told an independent check confirmed the answer when none was possible, and the same “what if” question twice returns the same answer. Result ordering, the allocation named as a shared result’s source, and the route followed for a table fed by several all depended on unstable step ordering. An estimate for a result fed by more than one route may differ from an answer you got before. See Tracing Allocations.

  • When row access blocks an action, the message says why. Publishing a table that carries a governing column, or running ad-hoc SQL row access can’t safely filter, now gives the reason and the remedy instead of a generic server error.

  • Sample project content is visible workspace-wide, SSO invites skip the password email, and the Identity tab is only for identity administrators. The guided sample project, its workflow and dashboard are shared immediately, and a viewer in an empty workspace gets a welcome. In a workspace enforcing single sign-on, an invite no longer sends the set-your-password email. The Identity tab showed for every signed-in member and opened on an empty screen; it now needs an Identity administration permission, and a member with no application permissions lands on Home. See New Member Welcome Email and Managing Security Groups and Assignments.

  • A project whose name contains an & can be created again — registration truncated the name at the &, breaking New Project and archive import, and turned a + into a space silently. If creation failed this way, delete any half-created entry before retrying. See Creating New Projects.

  • Dash apps open for signed-in users again — an oversized sign-in cookie caused “Request Header Fields Too Large” before the app was reached, with nothing in its logs to explain it. Already-published apps need a Rebuild. See Rebuilding a Dash App.

  • The Labels box has a visible Add button again, and labels typed on a new workflow step are kept. See Organizing Work with Labels.

  • The first-win celebration card no longer covers the app header, and its confetti finishes playing. The card used to sit over the header with toolbar text showing through it, and the confetti animation froze as a static colored strip; it now renders on an opaque card in the bottom-left corner and the animation completes.

  • Home’s toolbar strip is shaded consistently across its full width. The strip behind the genre chips was tinted differently from the rest of the toolbar and stopped partway across the bar; the whole strip now matches.

  • A column added to a grid since you last saved a column layout appears where it belongs, rather than at the far right. Restoring a saved layout put every column the layout had never heard of after all the ones it had, so a column added to that grid later sat past the right-hand edge of a wide table and looked as though it had been taken away. The workflow Steps grid’s step number (#) was the visible casualty, since saved layouts of that grid predate the column. Nothing needs redoing — reopen the grid and the column is back in place. See Change the order of steps in a workflow.

  • The SCD-2 Master Builder and SCD-2 As-Of Join steps now run on real tables. Both checked your key, tracked and carried columns against a list PlaidCloud never stores, so every column was reported missing and neither step could run. They now read each table’s columns from the warehouse, and a table that has no data yet says so. See SCD-2 Master Builder and SCD-2 As-Of Join.

  • Scheduled events set to UTC -12, UTC +2 or UTC +6 now run at exactly that offset all year. UTC -12 had been running on UK time, UTC +2 an hour early and UTC +6 an hour late. Existing scheduled events at these offsets move to the corrected time automatically. See Event Scheduler.

  • The Event Scheduler’s Next Run column and the upcoming-runs calendar now show when an event will actually run. For an event in a timezone with daylight saving, both had shown a time an hour out for much of the year. See Event Scheduler and Upcoming Runs Calendar.

  • A workflow step keeps the memo, mask and dimension you set on its output columns. Each run carries the source column’s settings onto the output column. A setting the source didn’t have could be carried across as a blank, which erased yours, so a memo or dimension association you added to a step’s output table disappeared the next time the workflow ran. A union also kept or lost it depending on the order of its sources. Settings the source column does have are still carried across.

  • More workflow steps do what their settings say.

    • An LLM step with a document bound through the Project Default account can use that document. The step had been handed an account called “project-default”, which does not exist, instead of the project’s default document account. A project with no default document account set now fails the step saying so.
    • A document condition on an execution group that uses the Project Default account checks the project’s default document account, where it had looked in an account called “project-default”. When the project has none set, the group is skipped with that reason.
    • An SAP Post step whose field relationship maps a field on the header but not on the lines, VAT or WHT, or the other way round, is refused naming the pair. Those lines or taxes had been posted under the wrong header, or left out, without a word.
    • A step whose retry count or delay, CPU or memory, or output row limit is stored empty uses the default instead of failing.
    • A REST import step whose body the template engine cannot read — a query using {% of its own, say — sends the body as written instead of failing on it.
    • When an Agent does not pick up a step in time, the step’s last request is withdrawn before the step fails, so an Agent that collects it late no longer runs work for a step already reported as failed.
    • A step that reads a table’s rows into memory fails naming the column when that column’s data type is not one PlaidCloud recognises, rather than reading it however the warehouse returned it.
    • On a Snowflake project, a % in a column name is kept as written when a column is added, changed, removed or profiled, or a table is copied between projects. A machine-learning step reading a table under a row-access rule that contains % sends the rule as written too.
  • An import no longer fails because the warehouse lost a node part-way through the load. PlaidCloud’s own warehouses run on interruptible machines, and a machine reclaimed while a load was running took the load down with it — the import failed outright, and every step after it in the workflow was left unrun. A load interrupted that way is now retried, and before retrying PlaidCloud checks whether the interrupted load had in fact finished, so nothing is loaded twice. A load that fails on its own merits — a column the file does not carry, a value that will not convert — still fails at once, as before.

  • Table sizes no longer reveal rows that row access hides. On a project with Row Access declared, table lists, search, table details and snapshots showed every table’s full row count and storage size to anyone whose reads were filtered, which told them how many rows existed beyond what they may see. Those figures are now hidden for them, on every table in the project, and so are the project’s own total row count and size on Home, in project lists and search, and in project details; project Architects see them as before. See Row Counts and Table Sizes.