Skip to content

IN DEVELOPMENT — WAITLIST OPEN

Your agent ran DELETE. Undo it. 

Undoable sits between your AI agent and your Postgres database. It records every statement, saves the rows before destructive changes, and holds the risky ones until you approve. Let your agents touch production without fear.

Postgres 14+ · Supabase · Neon · RDS · works with any driver

SCROLL ▸ watch the proxy ▾

ONE CONNECTION STRING. EVERY STATEMENT ACCOUNTED FOR.

Your agent connects to Undoable instead of your database. Your app keeps its own connection, untouched.

CLAUDE CODE

CURSOR

REPLIT AGENT

YOUR AGENT

UNDOABLE

POSTGRES PROXY

YOUR POSTGRES

SNAPSHOTS

APPROVALS

AUDIT TRAIL

◆DIAGNOSIS ▸ what happens today

WHY UNDOABLE EXISTS

Giving an agent production access shouldn't be a leap of faith. 

WITHOUT UNDOABLE

  • The agent runs whatever it decides
  • You find out from an angry customer
  • Restore last night's backup, lose today
  • No record of what the agent actually ran
  • Hope it doesn't happen again

WITH UNDOABLE

  • Risky statements wait for your approval
  • Rows are saved before they change
  • Undo one statement or a whole session
  • A timeline of everything the agent did
  • A runaway agent pauses itself
1 click
TO REWIND A SESSION
6
STATEMENT CLASSES
0 rows
SNAPSHOTTED FOR READS
◆CATALOG ▸ 5 protections loaded

WHAT IT DOES

Five layers between your agent and disaster. 

Every statement is read with Postgres' own parser, not pattern matching. Anything it can't fully understand is treated as risky.

BEFORE IT RUNS

Hold for approval

Statements that match a hold rule pause the agent's connection and ask you. Approve and it runs with a snapshot; reject and the agent gets a clear error it can understand.

WHAT YOU GET

  • DELETE / UPDATE without a WHERE
  • TRUNCATE and DROP TABLE
  • Anything on *auth*, *billing*, *payment*
  • Tables without a primary key
  • SQL Undoable can't fully understand
  • One-tap approve from your phone
DEFAULT TIMEOUT10 min, then rejected
◆PIPELINE ▸ hello → protected

HOW YOU SET IT UP

Protected in five minutes. No code changes. 

  1. STEP 1

    Connect your database

    Paste a connection string, or connect Supabase or Neon in one click. Credentials are encrypted with a key per project.

  2. STEP 2

    Create an agent

    Each agent gets its own credential, so the timeline always shows who did what.

  3. STEP 3

    Swap the agent's URL

    Give the agent AGENT_DATABASE_URL. Your app keeps DATABASE_URL, untouched.

  4. STEP 4

    Let it work

    Reads pass straight through. Changes are snapshotted; risky ones wait for you.

  5. ANYTIME

    Undo

    Open the timeline, preview the undo, click once.

# .env.local
DATABASE_URL=postgres://app:…@db.example.com/shop            # your app, unchanged
AGENT_DATABASE_URL=postgres://agent_claude:…@proxy.undoable.cloud/shop
◆LIMITS ▸ read before you trust us

WHAT WE CAN'T UNDO

Honest about the edges. 

Undoable restores data inside your database. It can't reach outside it, and we'd rather tell you now than after an incident.

  • Emails, webhooks, API calls

    Anything your app or a trigger already sent to the outside world.

  • Tables without a primary key

    Rows can't be matched back safely, so changes to them are held for you.

  • Sequence values

    IDs already handed out stay used.

  • Connections that skip Undoable

    Only traffic through the proxy is recorded.

COMMUNITY TOKEN

$UNDO is live on Robinhood Chain.

CONTRACT ADDRESS

0x2df1e020c5b6c28ad240a312fa5fd7465ec23e22

This is the only official address. Anything else in replies or DMs is not us.

$UNDO is a community token. It is not equity in Undoable, carries no promise of returns, and the Undoable product is still in development. Crypto is risky. Nothing here is financial advice — do your own research.

EARLY ACCESS

Give your agents an undo button. 

We're building Undoable now. Leave your email and we'll invite you when the private beta opens.

One email when early access opens. No spam.