live wire
▸Snowflake’s Cortex Agent quickstart routes metrics and transcripts with prompt rules—but documents no authorization boundarySnowflake▸Oracle Select AI generates SQL/PGQ for property graphs—but errors if one AI profile mixes graphs with tables or viewsOracle▸Domo’s data team standardizes MCP builds with shared scaffolding; beta toolkits inherit user permissionsDomo▸Databricks proposes five outcome signals for agentic BI—and says dashboard counts and license usage miss decision qualityDatabricks▸One vibe-coded database app needed 56+ human test hours and three repair rounds despite AI Studio’s verification claimsMancas & Mancas / arXiv▸BigQuery AI.IF’s default cost mode trains a local model for most rows—and drops row-error thresholdsGoogle Cloud▸AWS’s multi-tenant data-agent pattern gives the broker Lambda no data permissions; Cognito roles carry Lake Formation scopeAWS Big Data Blog▸Amazon OpenSearch’s optimized engine adds nested agent traces, but AWS reserves it for log analytics—not vector searchAWS▸Two interpretation-based provenance semantics cannot express SQL bag difference, new theorem showsKolaitis / arXiv▸Databricks Feature Views reuse one definition for training and live scoring, but online lookup still returns latest available stateDatabricks▸Databricks Genie’s Slack and Teams previews default channel answers to public, even when viewers lack source-data accessDatabricks▸Snowflake’s two-tool GraphRAG agent beat a seven-tool graph setup 70% to 60% on 22 ontology questionsSnowflake Engineering▸Semantix opens an Apache-2.0 semantic-first data-agent stack, but labels the project WIP and has no release or adoption yetGitHub / icosmos-space▸Confluent defines Streamhouse as shared current state for agents and apps, but says broader semantics and governance are still to comeConfluent▸Snowflake’s Cortex Agent quickstart routes metrics and transcripts with prompt rules—but documents no authorization boundarySnowflake▸Oracle Select AI generates SQL/PGQ for property graphs—but errors if one AI profile mixes graphs with tables or viewsOracle▸Domo’s data team standardizes MCP builds with shared scaffolding; beta toolkits inherit user permissionsDomo▸Databricks proposes five outcome signals for agentic BI—and says dashboard counts and license usage miss decision qualityDatabricks▸One vibe-coded database app needed 56+ human test hours and three repair rounds despite AI Studio’s verification claimsMancas & Mancas / arXiv▸BigQuery AI.IF’s default cost mode trains a local model for most rows—and drops row-error thresholdsGoogle Cloud▸AWS’s multi-tenant data-agent pattern gives the broker Lambda no data permissions; Cognito roles carry Lake Formation scopeAWS Big Data Blog▸Amazon OpenSearch’s optimized engine adds nested agent traces, but AWS reserves it for log analytics—not vector searchAWS▸Two interpretation-based provenance semantics cannot express SQL bag difference, new theorem showsKolaitis / arXiv▸Databricks Feature Views reuse one definition for training and live scoring, but online lookup still returns latest available stateDatabricks▸Databricks Genie’s Slack and Teams previews default channel answers to public, even when viewers lack source-data accessDatabricks▸Snowflake’s two-tool GraphRAG agent beat a seven-tool graph setup 70% to 60% on 22 ontology questionsSnowflake Engineering▸Semantix opens an Apache-2.0 semantic-first data-agent stack, but labels the project WIP and has no release or adoption yetGitHub / icosmos-space▸Confluent defines Streamhouse as shared current state for agents and apps, but says broader semantics and governance are still to comeConfluent
nl2sql.ai
newsNEW ENTRANT

QueryGate makes tenant isolation an executable preflight for AI-written SQL

The new MCP reference server injects caller scope after generation, re-parses the final query, and publishes the boundary its proof cannot cross.

Tenant-isolated query totals compared side by side
Chart: figures from the story
By The Tools Desk· Aug 27, 2026the quick take — two AI hosts go live when you do

A new open-source entrant is treating tenant isolation as a property of the executed SQL, not a sentence in an agent prompt. QueryGate, an MIT-licensed MCP reference server created on August 25, places a governed pipeline between an LLM and Postgres, DuckDB, BigQuery or Snowflake. The model may write the query, but the server qualifies names, clamps limits, injects caller scope, estimates cost and runs through a read-only path.

The useful idea is the second check

Predicate injection alone is not QueryGate’s main contribution. After rewriting every governed scope, the server parses the resulting SQL again and demands the expected tenant predicate on each governed table. Its published test matrix covers aliases, joins between two governed tables, governed/public joins, subqueries and CTE bodies. Separate rejection tests remove the filter, bind the wrong parameter and attach the right-looking predicate to OR 1 = 1.

That makes the safety claim inspectable. A deterministic demo sends the same business question through three static tokens: one for Acme, one for Globex and one allowed to see both. The repository reports $55,952.59 and $62,841.34 for the single-tenant callers, then $118,793.93 for the combined caller—the exact sum. The demo talks directly to MCP, so it tests the server’s isolation path without depending on whether a model cooperates.

The fail-closed behavior matters just as much. A caller with an empty scope is refused when the SQL touches a governed model; the same caller may still query a model explicitly marked public. PII masking is also enforced in the AST, and masked columns are barred from predicates to avoid turning WHERE customer_name = ... into a guessing oracle. QueryGate additionally keeps tenant scopes in cache keys, preventing identical SQL from becoming a cross-tenant cache hit.

The repository states its own limit

This is a reference implementation, not a mature product. At discovery it had no stars, forks or tagged release, and its README says teams should adapt the seams rather than deploy it unchanged. It also opens a fresh Postgres connection for cost estimation and another for execution, a known limit under concurrency.

More importantly, both injection and assertion interpret SQL through sqlglot. If that parser resolves a dialect construct differently from the warehouse, re-parsing with the same library may repeat the same mistake. QueryGate therefore recommends treating its inject-and-assert layer as defense in depth over native row policies, not as their replacement.

That caveat strengthens the project’s value as a template. The practical pattern is not “trust this parser.” It is: make authorization a deterministic transformation after generation, publish adversarial tests for the transformed query, fail closed when scope is absent, and document exactly where the proof ends.

Filed by The Tools Desk. Corrections: desk@nl2sql.ai · Our standards →

comments · 0

    Comments are moderated before they appear. Your email is used once to confirm it is you — never shown, never sold. Corrections and questions get an answer from the desk when we have one.