Give your agents real access. Undo any row they change.

Every insert, update and delete by any assistant, app or person is recorded with who made it and what it replaced, and you can undo it.

Bugsafter Undo

TitleStatusReported by
Sign-up emailFixed OpenSam
CSV exportFixedYou
Dark modeFixed OpenPriya

Cursor edited 2 rows in Bugs at 11:42 AM. Undone

Choose what each agent can reach

When an assistant connects, ADoor opens in your browser and you pick its access:

  • Allow everything is preselected. The agent can do anything you can, including spaces, people and billing if you're an owner.
  • Regular data handling reads, writes, imports, undoes and reads history in one space, with no account changes.
  • Cautious is read-only in one space.

An agent can't raise its own access. Anything more goes through request_access, and you approve or deny it with a one-tap link. You can change any connection's access later in Connections.

A bad edit, and the undo that fixes it

@ADoor Mark every task in my launch checklist done.

ADoor Edited 4 rows in Launch checklist at 2:31 PM.

Launch checklist

TaskStatus
Write launch postDone
Record demoDone
Fix sign-up bugDone
Email beta usersDone

Three of those tasks weren't done. As a workspace owner, open Activity in ADoor, find the change and choose Undo. Or ask an assistant whose access includes undo.

@ADoor Undo Cursor's last change to Launch checklist.

ADoor Undid a change in Launch checklist. The 4 rows are back as they were, and the original change is marked Undone.

Launch checklist

TaskStatus
Write launch postOpen
Record demoOpen
Fix sign-up bugOpen
Email beta usersDone

One statement that changes many rows counts as one change, so one undo reverses all of them. If someone edited one of those rows after the bad change, undo stops and commits nothing, so it never overwrites later work. An undo is itself a change, so you can undo it too.

What history keeps

Changes can be undone. That includes inserts, updates, deletes, field type changes, and large writes. A type change puts the previous type and the exact old values back. A dropped table, a truncate, or a dropped field stays in Recently deleted for 30 days and can be restored.

History is kept by size: 2 MiB per workspace on Free and 64 MiB on paid plans. The oldest changes go first.

Undo stops if someone edited the same rows later, and it commits nothing, so it never overwrites newer work. It also can't take back what an agent has already read.

Behind undo, a nightly encrypted backup is kept for 30 days, out of reach of any ADoor agent token.

Revoke an agent

Open Connections in ADoor and revoke the connection. It takes effect on the next request. What the agent already saved stays, and you can undo it.

Prompt injection

An agent reads whatever is in your rows. If a row holds text written by someone else, such as a support ticket, that text can try to steer the agent. ADoor can't tell a real instruction from an injected one. What it does is keep the blast radius small:

  • Give an agent that reads outside text Cautious access, so it can't write.
  • Keep sensitive tables in a different space from the ones such an agent can reach.
  • An agent can't approve its own request_access. A person has to.
  • Undo reverses a bad write, and revoking stops the next one.

Questions people ask

Can an agent delete everything?

An agent can change only what you let it change. Those changes can be undone, including a type change and a large write. Undo stops if someone edited the same rows later. Give each agent the least access it needs.

How far back can I undo?

As far back as the retained history goes. That includes type changes and large writes. History is capped by size, 2 MiB per workspace on Free and 64 MiB on paid plans, and the oldest changes go first. Undo stops if a later edit changed the same rows.

Can staff read my data?

There's no admin console. Staff access is audited and time-limited. We don't train on your data.

Does undo bring back data an agent leaked?

No. Undo reverses writes in ADoor. It can't take back what an agent has already read. Use Cautious access for agents that read outside text, and revoke a connection the moment it misbehaves.

More

This page as Markdown