# 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.

[Get your account](https://app.adoor.halmoslabs.com/signup)

## 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

**You:** Mark every task in my launch checklist done.

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

**Launch checklist**

| Task | Status |
| --- | --- |
| Write launch post | Done |
| Record demo | Done |
| Fix sign-up bug | Done |
| Email beta users | Done |

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.

**You:** 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**

| Task | Status |
| --- | --- |
| Write launch post | Open |
| Record demo | Open |
| Fix sign-up bug | Open |
| Email beta users | Done |

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

- [Grants](/docs/concepts/grants/)
- [MCP reference: history and undo](/docs/reference/mcp/)
- [ADoor vs Supabase MCP](/compare/supabase-mcp/)
- [Pricing](/pricing/)
