Backed by Y Combinator

Ask your production database anything. Break nothing.

Midplane sits between your AI assistant and your Postgres database. It blocks dangerous queries, hides sensitive fields, and keeps your data in your network.

Read the setup guide

Works with Claude, ChatGPT, Cursor, VS Code and any MCP client.

Your AI assistantConnected to Postgres through Midplane
Move everyone whose trial ended to the free plan.
Ran a query · show SQLUPDATE accounts SET plan = 'free';
MidplaneBlockedThis would have changed every account.

Midplane blocked that because it had no filter. I'll limit it to trials that have ended.

Ran a query · show SQL… WHERE trial_ends_at < now() AND plan = 'trial';
MidplaneWaiting for your OK312 rows will change.ApproveReject

The change is waiting for your approval. Once you approve, 312 accounts move to the free plan.

Without Midplane, the first query would have moved all 48,210 accounts to the free plan.
What Midplane catches

Your AI is fast and confident. Midplane checks every query before it reaches your database.

1 · You ask
“Move everyone whose trial ended to the free plan.”
2 · Your AI
Writes an UPDATE but forgets the WHERE
UPDATE accounts SET plan = 'free';
3 · Midplane
Stops it before it runs
Blocked
4 · You see
Blocked: this would have changed every account
All 48,210 accounts unchanged.

The full list

Mass changes
Updates or deletes without a WHERE clause, or with one that would still touch every row. Midplane stops them before they run.
Dropped tables
Dropped tables and other schema changes. Your AI can’t restructure your database by accident.
Hidden writes
Changes hidden inside a query that looks like a read. Midplane reads the whole statement, so a delete tucked inside a SELECT is caught.
Sensitive fields
Hidden fields stay hidden, even when your AI filters or sorts by them. It can’t work out an email or an SSN one question at a time.
Prompt injection
Instructions planted in your data, like a support ticket telling your AI to fetch your API keys. Text your AI reads can’t give it orders.
Where your data stays

Midplane runs next to your database: on your laptop, or in your own cloud with one click.

Your network

What's there
Your database, and Midplane running on your own machines
What it sees
Your rows and your database password. Both stay here and never leave your network.

Your AI vendor

What's there
The AI that asks the questions
What it sees
The answers you allow, with hidden fields hidden

Midplane's cloud

What's there
Your dashboard: rules, approvals, query log
What it sees
Which queries ran and what was decided, plus the text of changes waiting for your OK. Never your rows or your database password.

What it lets you do

Today

Only engineers who know SQL can answer “how many trials converted last week?”

With Midplane

Your whole team can ask production questions, not just the engineers who know SQL.

Today

Your AI stays read-only, because one bad write costs too much.

With Midplane

Your AI can make changes, because risky ones wait for a human.

Today

Connecting an assistant means handing it a database password.

With Midplane

Use the AI assistant you already have, without handing it a database password.

Today

Real data is off limits because it’s full of emails and SSNs.

With Midplane

Answer questions from real data without exposing what’s sensitive.

How it works

Three steps.

  1. Deploy Midplane next to your database: one command on your laptop, or one click into your cloud.

    $ npx midplane local
  2. Connect Claude, ChatGPT or Cursor, and sign in.

  3. Set your rules in the dashboard: which tables, which fields stay hidden, which changes need your OK.

For your security team

The details, for whoever signs off.

The controls

Postgres’s own parser

Every statement is parsed by the real Postgres parser before it runs. Anything it can’t fully understand is denied.

SELECT * FROM users; DROP TABLE users;
→ denied: DROP TABLE in a stacked statement

Masking inside the query

Hidden fields are replaced inside the query itself, so filters, joins and counts only ever see masked values. A count by SSN prefix returns 0.

SELECT count(*) FROM users WHERE ssn LIKE '123%';
→ 0

Approvals bound to one statement

An approval covers one exact statement, from one agent, once.

DELETE FROM accounts WHERE email LIKE '%@example.test';
→ waiting: 3 rows · valid for this statement, once

Containment

After your AI reads text an outsider wrote, its changes wait for a human and secret tables are off limits.

-- after reading ticket 4312
SELECT secret FROM api_keys;
→ denied: secret table after untrusted input
What you can check

Open-source gateway

MIT-licensed: read every line, build it yourself.

Every guarantee has a test

We publish the attacks we test against, adversarial SQL and masking bypasses. Run them against us, or anyone.

Logged before it runs

Every query is recorded before it reaches the database, and can be exported to storage you own.

Your credentials stay home

Our cloud never holds your database password. EU or US region.

Get started

Two ways to run it.

Local

Free, open source

For developers and open-source users trying Midplane on their own database, or teams that want enforcement with no vendor account at all.

  • One gateway, rules in a policy file you edit
  • Risky changes are refused
  • Query log kept as a local file
Read the setup guide

Midplane Cloud

Your gateway, our dashboard.

For teams that want approvals, SSO, shared rules and an audit view across people and gateways, while the gateway and their data stay in their own network.

  • Team approvals for risky changes
  • SSO, and rules shared across gateways
  • Audit view and EU or US region
  • Protection from instructions planted in your data

Tell us what you want to ask your database and what has to stay protected. We'll set it up with you.

Both block dangerous queries, hide sensitive fields, log every query before it runs, and keep your data in your network. Fully self-hosted dashboard for enterprise deals, on request.

Full comparison in the docs

Get access

Which AI will query your database?

Pick all that apply (optional).

Where does your Postgres database run?

Pick one (optional).

We use your details only to reply. Privacy policy