Sign in Start with your repo

What's New in Recce

Product updates, new features, and improvements.

Copy values straight out of SQL query results

Copy values straight out of SQL query results

SQL query results grid with row checkboxes and the Share Copy Selected Rows menu item

Reading a value out of SQL query results used to mean a detour: Share, then Copy as TXT, then paste into the editor, then copy the value you actually wanted. Pulling multiple rows into a spreadsheet meant copying them one value at a time.

Now you can highlight the text inside any cell and copy it with Cmd/Ctrl+C, and this works across every results grid in Recce. On the SQL query results grids, new row checkboxes let you select the rows you want. Share → Copy Selected Rows then copies them as tab-separated text that pastes cleanly into a spreadsheet.

Impact coloring now shows in the lineage minimap

Lineage minimap with impacted nodes colored amber, matching the main graph

In the new column-level lineage experience, the minimap colored nodes by change status alone. Impacted-but-unchanged nodes showed amber on the main canvas but neutral grey in the minimap, so the overview map and the canvas disagreed about what your change touched.

The minimap now reads the same impact data the canvas does and runs both through one shared color helper, so the two can’t drift. Impacted nodes render amber in the minimap, matching the main graph and the legend.

Whole-Model Impact in CLL with data-native change labels, analyze_model MCP

Read the Lineage in Data Terms: Whole-Model Impact + Data-Native Change Labels

Recce lineage view showing data-native change badges (ADD, COLUMN) and a Whole-model impact tooltip naming the upstream model

Edit a WHERE, GROUP BY, or JOIN upstream and the change touches every row of that model. Lineage marked the upstream as changed but left you guessing which downstream models picked up the new shape — and hover redrew icons on you while you tried to read it. A reviewer reading the diff also had to translate Breaking, Partial Breaking, Non Breaking from software API contracts into what each meant for the data.

Recce now marks the change at the source and flags every impacted model downstream. The sidebar names the upstream model that caused it, so you can trace the blast radius without leaving the view. The lineage redesign that ships alongside keeps the descriptor and change-status icons visible on hover. The kebab floats to the side of the card. Node-name tooltips now include materialization (stg_customers - view). The NodeView sidebar tightens so row count and schema-diff actions sit above the fold. Opt in with --whole-model-impact (off by default).

The change labels themselves now read in data terms. Breaking becomes Model-Wide Change — a table change that affects every column, like a WHERE clause edit. Partial Breaking becomes Column Change — a column-definition change scoped to that column. The new Additive Change label covers column additions that don’t touch existing rows. Unknown stays Unknown. Backend wire enums keep the legacy strings for one release window. UI prose moves now, so seeing a label means knowing what it means for the data.

Give Your Code Agent Structural Evidence Before It Opens a PR

analyze_model output — downstream blast radius with value_diff verdicts per model (clean vs potential impact)

A code agent editing a dbt model has the raw SQL but cannot cheaply tell what the model does. Which columns does it project, what does it aggregate, which models depend on it column-for-column? The agent ends up guessing whether its edit is safe to PR.

The new analyze_model MCP tool parses the compiled SQL via sqlglot and returns the model’s structure — refs, projections, filters, joins, group_by, aggregations, case expressions, distinct/subquery/CTE flags. It also returns the downstream column impact from the existing CLL parent/child map. It runs against a single environment with no target-base/ and no git history.

See When Your PR Baseline Has Drifted on Recce Cloud

Cloud session view at cloud.reccehq.com/launch/<sessionId> with a yellow overlay card announcing metadata drift, plus a Refresh base button, floating above the lineage canvas

A Recce Cloud session captures a snapshot of the shared production base at upload. The PR diff stays clean even when main keeps merging. The banner that announces metadata drift had landed in OSS but never mounted in the cloud-mode shell. Cloud users at cloud.reccehq.com/launch/<sessionId> diffed against a stale snapshot without knowing.

Recce now mounts the Staleness banner in the cloud-mode layout. It renders as a yellow overlay card with an enabled “Refresh base” button, verified against the prod session that surfaced the gap. Dismissing the card stores the staleness signature so a quiet session stays quiet. Fresh drift after dismissal re-fires the alert. Read the Staleness banner reference for when to refresh versus dismiss.

Security update

Recce v1.50.0 includes a security fix based on a responsibly disclosed report. Thank you to Sitampan (@hxcbtc) for reporting the issue and helping improve Recce’s security. Please update to the latest version: pip install --upgrade recce. No configuration change is required after upgrading.

Show only what your PR changed, plus adapter mismatch surfacing

Show only what your PR changed

Yellow staleness banner with a Refresh button at the top of the lineage view, signaling the shared production base has advanced past the session snapshot

Production keeps moving after your CI run. You touched one model in your PR, but when you open the session in Recce Cloud, the lineage diffs show more than one model changed, because production has advanced past the snapshot your CI captured.

Recce now snapshots the project’s shared production base into each session at upload time, so the PR diff reflects only what the PR actually changed. When you want a newer baseline, a yellow staleness banner with a Refresh button appears once production has moved past your snapshot, click it and Recce re-pulls the latest shared base in place. Default-on for every Recce Cloud project; no configuration.

Surface data warehouse adapter mismatches

Your data warehouse adapter could be mismatched with the adapter your session was uploaded with. If you see the mismatched notification as below, you can re-upload artifacts to get it right.

Recce Cloud session list with an Adapter Mismatch chip next to a session row; hovering shows a tooltip naming the session adapter and the warehouse adapter

Recce v1.47.0

Support MCP on Recce Cloud

You can now use Recce Cloud from any MCP-enabled chat, and hand off a Cloud session to your local AI agent in two clicks. Your AI agent can pick up a Cloud session, move to a local dbt project, then come back to Cloud, all inside the same conversation. From the Recce Cloud UI, the session row ⋯ menu and PR session row ⋯ menu both open a setup dialog with the connection command pre-filled.

Before this release, switching between Cloud and local data meant restarting the MCP server. Anything you’d built up in the chat (context, intermediate findings, the train of thought you were following) went down with it, and you had to retrace your steps to pick up where you left off. Bridging a Cloud session into your local agent was a manual stitch-together too: you copied the session ID by hand and pieced the setup together from the docs.

The Recce MCP server now boots once and stays alive, and a connected agent flips between Cloud and local with one tool call. The Cloud UI gathers the handoff into one dialog, so you go from a Cloud session to your local agent in two clicks.

Read impact at a glance in the Lineage tab

Lineage tab in the Model Detail panel with an amber impact rail on direct neighbors and a clickable count chip that filters the side to impacted rows

You can now read the impact chain at a glance in the Model Detail panel’s Lineage tab. Direct upstream and downstream rows show an amber rail with a directional tooltip, and a count chip in each section header filters that side to impacted rows. You see impact in one place.

Before this release, the canvas showed the impact chain as an amber border, but the Lineage tab listed every direct neighbor with no signal at all. You had to glance between the canvas and the panel to work out which upstreams or downstreams sat in the impact chain.

Recce v1.46.0

Trace a Model’s Direct Lineage Without Leaving the Detail Panel

Model Detail panel open on a node with the new Lineage tab showing upstream and downstream lists and a back-path breadcrumb

The Model Detail panel now opens straight onto a Lineage tab that shows the focused model’s direct upstream parents and direct downstream children. Each side has its own filter and pagination. Click a row to show its details in the panel without moving your map.

Before this release, getting from a node back to its immediate neighbors meant pinning the node and hunting around the lineage graph, which is awkward on dense projects where the canvas is already busy.

Faster Cloud Lineage on Large Projects

Lineage in Recce Cloud now loads from precomputed data, so the lineage view, the initial lineage load, and node selection are noticeably faster, especially on large projects.

Before this release, every lineage view recomputed on the fly against the live session, and lineage requests against sessions that had already been torn down could fail outright.

AI Summary in PR Comments Matches the Actual Checklist

GitHub PR comment from the Recce review agent with the Summary section, Checklist with correct approval status, and no fabricated launch block

PR review comments produced by the Recce AI Summary now stay in sync with the actual run outcome. The Checklist reflects the real approval status of each check, the Impact column shows actual findings instead of static template text, and the narrative no longer contradicts the evidence.

Before this release, three things could drift in a PR comment: the Checklist showed ⏳ Unapproved for checks that had actually succeeded; the Impact column carried static template text instead of real findings; and the agent could write narrative that contradicted the evidence in the comment.

Bug fixes & polish

  • Column-level lineage on case-sensitive warehouses, e.g. Snowflake, no longer returns empty results.

Recce v1.45.0

Column-Level Lineage Loads Fast on Large Projects

Lineage pages on large dbt projects now load and stay responsive, and column-level lineage is available almost as soon as the instance comes up. That matters because teams with thousands of models used to hit a wall on the lineage page: a 30 MB initial lineage load, a slow first paint, and every drag or click in the CLL view compounded the cost.

🧪 In open beta. Turn it on by clicking Open Beta in Recce Cloud.

Under the hood, the initial lineage load now ships only the lineage skeleton, and detailed model data and metadata are fetched on-demand when you open a model. Our cloud environment adds end-to-end compression to further reduce the data payload and serves pre-computed column-level lineage directly, so it’s ready before the instance even finishes booting.


One Share Button From OSS to Cloud

There is now one clear path from an OSS session to a Cloud shared session, and a link sent to someone outside the org lands on a Request Access page instead of a blank 403.

The Cloud Share button now lives in the OSS nav bar by default. When a recipient outside the org clicks a shared link, they see the Request Access page; the admin gets an email, approves or denies from a review page, and the recipient lands on the session. Invited new users are auto-accepted into the org during signup so they land directly on the shared session without a second click.


PR comment with check findings linked to Recce Cloud check detail pages

Reviewers and PR review agents now get one click from a finding in a GitHub PR comment to the exact check detail page in Recce Cloud. Before this release, the check references the review agent produced were plain text, so confirming a finding meant switching tabs, opening Recce Cloud, and hunting for the right check. One more click between reading a finding and trusting it.

v1.45.0 ships deterministic deep links. The first bold title in each bullet becomes a clickable link to the corresponding Recce Cloud check page. On the MCP side, create_check now auto-approves successful runs the same way execute_preset_checks does, keeping the checklist in sync with the actual run outcome.

MCP Impact Analysis Verifies Downstream Data, Agent Skips Non-Data PRs

impact_analysis Tool Verifies Downstream Data Changes

Recce’s MCP server includes impact_analysis, a tool that identifies which models are affected by a PR. Previously it reported which models were downstream of a change, but couldn’t tell you whether their data actually differed. Agents had to guess which downstream models were worth investigating.

Now impact_analysis runs row-level comparison on downstream table models and reports whether each one has confirmed data changes, no changes, or needs manual verification. In eval testing, this lifted agent detection accuracy from 87% to 100% when paired with updated reviewer prompts.


Recce Agent Skips Non-Data PRs

PRs that don’t touch data models were still triggering full Recce analysis — producing reports about “schema changes” that existed before the PR. The Recce Agent now detects non-data PRs and skips the analysis call entirely. No wasted agent runs, no false-positive noise in PR reviews.


Axios Removed After Supply-Chain Compromise

The Axios v1.14.1 npm package was compromised with a RAT. Recce was never running the compromised version, but we removed the dependency entirely — both OSS and Cloud — replacing it with a thin native fetch wrapper. 67+ source files migrated across both repositories, zero Axios imports remain. One fewer supply-chain surface to worry about.

Track Every Recce Data Review Run with Checklist Status in Your PR

Track Every Recce Data Review Run Directly in Your PR

PR comment showing checklist with check status icons and linked run history

Recce Cloud checklist view with run history and activity panel

Recce Data Review results in PR comments previously had no per-check status or run attribution. Reviewers could not tell which checks passed or failed at a glance, or trace a result back to a specific run.

PR comments now show a structured checklist where each check displays its status — Passed, Failed, Analyzed, or Pending. Each item links to the full run history in Recce Cloud. The Activity panel tracks every run with attribution (user or AI), giving teams a complete audit trail across CI cycles.


Fewer False Positives in Recce Data Review

Recce Data Review sometimes flagged schema or lineage changes that had no actual data impact, creating noise for reviewers who then learned to ignore findings.

The analysis prompt now includes guardrails that filter out changes unlikely to affect data. Reviewers see fewer irrelevant findings, which keeps the signal-to-noise ratio high and maintains trust in Recce Data Review.


Faster CLI Startup

Running any recce command incurred a multi-second delay because the CLI loaded all dependencies at startup, even for simple operations like recce version.

Commands that do not require the full stack now start significantly faster, which reduces friction in scripted workflows and CI pipelines.


Lineage Viewport Fits Large Graphs on Load

lineage diff view showing a large graph zoomed to readable level

Opening a lineage diff for a large project showed the entire graph at maximum zoom-out, making individual nodes too small to read. Users had to manually zoom and pan to find the relevant area.

The initial viewport now calculates a zoom level that keeps nodes legible while showing the most relevant portion of the graph. Large projects are readable on first load without manual adjustment.


Exports Go Beyond the Preview Limit

Exporting query results was capped at the 2,000-row preview limit, which truncated large datasets and forced workarounds.

Exports are no longer capped at the 2,000-row preview limit — CSV and TSV support up to 500K rows, and Excel up to 100K. Download buttons show the total row count, and large exports trigger a confirmation dialog before starting.


Python 3.9 Support Dropped

Recce no longer supports Python 3.9, which reached end-of-life in October 2025. If you are still on Python 3.9, upgrade to Python 3.10 or later before updating Recce.

Session Base, Persistent Agent Checks, and Outdated Check Indicators

Session Base with Dashboard Visibility

Comparing against production often introduces noise from environment-dependent patterns — SQL that resolves differently between prod and CI. Session base lets each PR build a dedicated comparison baseline using CI targets, so both base and current produce the same SQL and the diff reflects only the PR’s actual changes. Upload session base artifacts with GitHub or GitLab token authentication, and verify exactly which base each PR is comparing against in the Cloud Dashboard.


Approve or Unapprove Checks from GitHub and GitLab

Updating check status required opening Recce separately from your code review. The new /update-check slash command lets reviewers approve or unapprove checks directly from GitHub or GitLab PR comments, keeping the review workflow in one place.


Agent Creates Persistent Checks with Checklist Rendering

AI-generated checks previously disappeared after the session ended, making it hard to track what was validated. Agent-created checks are now persistent and render as checklists in the PR summary with clear attribution, so reviewers see exactly what the agent verified and can act on it.


Outdated Check Indicators

When the underlying data changes, existing checks can silently go stale. Visual outdated indicators now mark checks that may no longer reflect the current state, so reviewers know which checks need re-running before merging.


Impact Analysis Discovery and Preset Check Filtering

Finding which models are affected by a PR required manual lineage inspection. The Recce plugin now includes an impact analysis discovery tool that surfaces affected models automatically, available today for Claude Code and compatible MCP clients. Criteria-based preset check filtering and SessionImpact computation let you define rules that trigger the right checks for the right changes. Branch staleness warnings in PR summaries further help reviewers spot when a PR’s base has drifted.


Materialization Badge for Lineage Nodes

Model nodes in the lineage graph previously showed no materialization context. A new badge on each node now displays its materialization type (table, view, incremental, etc.), making it easier to understand performance implications at a glance.


Improvements

  • Fixed check links in PR comments that incorrectly used the /launch/ path
  • Updated recce mcp-server --help to list all 16 available tools
  • DataTypeIcon SVGs now scale with CSS font-size for consistent rendering
  • CLL performance improvement: skip Jinja compilation when compiled_code already exists
  • Pre-cached full CLL map via new full_map API parameter for faster lineage loads

Review PR Data Impact Directly from Your Editor with 8 New MCP Tools

Review PR Data Impact Directly from Your Editor

AI agent running value_diff and histogram_diff via MCP in an editor

Running data diffs meant switching between Recce and your editor, copying model names, and pasting results back. With eight new MCP tools, AI agents can now access every evidence-gathering feature directly.

The new tools include value_diff for row-level comparisons, top_k_diff for categorical distributions, histogram_diff for numeric distributions, and get_cll for column-level lineage. Combined with the existing tools, agents now have 16 MCP tools to review data impact without leaving your workflow.

See details here


AI Summary Without a Warehouse Connection

Agent generates summary results for a user without warehouse connection

Users without a connected warehouse could not get AI-generated summaries of their PR impact. The summary feature required live data access, which blocked adoption for teams still setting up their environment.

Recce now generates AI summaries based on available metadata even when no warehouse is connected. Teams evaluating Recce Cloud see value immediately, and the summary explains what additional insights a warehouse connection would unlock.


Agent Asks for Help When Stuck

Agent detects it cannot make progress and offers to escalate

During onboarding, the web agent sometimes hit edge cases it could not resolve on its own. Users had no clear path to get help, and the team had no signal about which scenarios needed improvement.

The agent now detects when it cannot make progress and offers to escalate. Users get a direct path to support, and the team collects structured feedback on which onboarding scenarios need attention.


Python 3.9 Deprecation

Python 3.9 reached end-of-life in October 2025, and Recce will drop support in a future release. Upgrade to Python 3.10 or later to avoid interruptions.