---
title: Changes from agents
description: When an agent changes your brand with update_brand, the change waits in History as a draft until someone applies it.
---

> Source: https://www.heyarchetype.com/docs/agents/drafts

Agents can change your brand as well as read it: rename a token, fix a line in a voice document, add a component example. By default nothing they propose lands on its own. Each change becomes a draft that waits in **History** until someone on your team looks at it and applies it.

## What an agent needs to change the brand

Two things have to be true before `update_brand` does anything:

- **The connection allows edits.** The person who connected the agent ticked **Change the brand when you ask it to** on the approval screen. Without it, the agent is told the connection is read-only and how to reconnect. See [Connect an agent](/docs/agents/connect).
- **That person's role allows the change.** An agent acts with the rights of the person who connected it, never more. A token change needs edit rights on foundations, a component change on components, and so on. Saving a design needs the right to make designs. See [Members and roles](/docs/workspace/team).

The agent is also told to change the brand only when you ask it to, never to make the brand match something it built.

## How a draft works

:::steps
### The agent proposes a change
It calls `update_brand` with one item to change. Archetype runs the change exactly as it would, but holds every write back and keeps the result as a draft. The brand itself doesn't change.

### The agent tells you
The response carries a `draft` id and a review link. The agent is instructed to tell you what it proposed and hand you the link. Until the draft is applied, every agent and every export still sees the brand as it was.

### Someone reviews it
The link opens the draft in **History**. You see what it would change and decide: **Apply** or **Discard**.

### The change lands, or doesn't
Applied, the change is made for real, logged in History as the agent's change, and can be undone like any other. Discarded, nothing in the brand changes.
:::

An agent can revise its own proposal: it makes the call again with `replaces` set to the old draft's id, and the new draft takes its place. The old one shows as **Replaced by a newer draft**.

## Review drafts in History

Open **History** from the **History** card on Home: **View all**, or the **changes to review** button that appears beside it when drafts are waiting. At the top of the page, **Waiting for review** lists every pending change from agents.

Click a row to open it. The **Proposed change** drawer shows:

- a one-line summary of the change, which agent proposed it and for whom, and when;
- every field it changes, before and after;
- for component examples and template frames, the rendered before and after side by side.

Then choose **Apply** or **Discard**.

If something the draft touches was edited after the draft was made, **Apply** is turned off and the drawer says so. Ask the agent to propose the change again from the brand as it is now. This keeps two drafts of the same item from quietly overwriting each other.

The person whose agent proposed a change also gets a notification in the bell, one row per agent, that goes away once none of its drafts is still waiting.

## Who can apply a draft

Anyone who can edit at least one area of the brand can open the review drawer and decide. Applying or discarding a draft is then checked against the areas it touches: to apply a component change, you need edit rights on components. Viewers and Creators can't apply or discard drafts.

The agent can apply a draft too, with `{"apply": "<draft id>"}`, but it is instructed to do so only after you have said yes. It applies with your rights, through your connection. It can drop one with `{"discard": "<draft id>"}`.

## Undoing a change

Every change that lands, from a draft or straight away, returns a `changeId`. The agent can reverse it with `{"undo": "<changeId>"}`, or `{"undo": "last"}` for its most recent change. `{"undo": {"since": "<changeId>"}}` also takes back everything it did after that change, which is how a large import is rolled back. You can undo the same change from its entry in History with **Undo change**. See [History and versions](/docs/workspace/history).

## What is never drafted

Some calls write straight away, because there is nothing to review or the review happened elsewhere:

- saving a design made from a template (`domain: "designs"`), which makes something with the brand rather than changing it;
- an `undo`;
- an import with `"dryRun": true`, which writes nothing anyway;
- components pushed from your repository with `npx archetype-os components push`, which is code that was reviewed and merged already. See [Component sync](/docs/developers/components).

During onboarding, the first import your agent makes into a new brand lands straight away so you can watch it arrive. That window closes an hour after the agent's calls go quiet, and turning **Review agent edits** on or off closes it at once.

## Let agent edits apply straight away

In **Settings → Agents**, the **Edits** section has a **Review agent edits** switch. On (the default), agent changes wait in History. Off, they apply straight away and can still be undone from History.

Changing it takes the right to manage connections, which owners and admins have. It applies to every agent connected to the brand.

## Next steps

:::cards
- [MCP tools](/docs/agents/tools): Every argument `update_brand` takes, including `apply`, `discard`, `replaces` and `undo`.
- [History and versions](/docs/workspace/history): The change log, undo, and named versions of the whole brand.
- [Members and roles](/docs/workspace/team): Which roles can edit which parts of the brand.
:::
