Back to blog
Governed AI

What "Undo" Actually Means for an AI-Made Change

An agent changed a ticket's priority. Here's the exact before/after it should leave behind, and the one click that reverts it.


Two aurora curtains sitting slightly out of register over dark water, the nearer one bright green and the farther one a quieter teal, on a navy field

An agent reprioritizes a ticket at 2 a.m. based on a signal it read somewhere in your tracker. By the time anyone looks at it Monday morning, the field just says “P1” instead of “P2.” Nothing else. No record of what it was before, no note on why it changed, no way to tell whether that was a good call or a mistake that’s already three days into shipping the wrong thing first.

That’s an overwrite, not an update, and the difference matters more as agent volume goes up, not less. Undo means every AI-made update carries a visible record of what changed and can be rolled back cleanly, the same way a version-control revert works, rather than a silent overwrite nobody can trace back to what it replaced. This is a specific, checkable requirement, not a vague promise that Thor is “safe.”

What does “undo” actually look like for a change an AI made?

It looks like a before-state, a source, and a revert path attached to the update itself, not bolted on afterward if someone complains. Concretely: the old value is preserved somewhere visible, not just overwritten in place; the update carries a record of what triggered it and when; and reverting it is a single, obvious action, not a manual reconstruction from memory or a support ticket asking someone to dig through logs. Miss any one of those three and “reversible” is a word on a marketing page, not something a person can actually do at 9 a.m. on a Monday.

One ticket, walked all the way through

Take the reprioritization example in full. A ticket sits at P2, owned by an engineer named Priya. An agent monitoring the tracker sees a related customer escalation land in a support channel and proposes bumping the ticket to P1.

What a silent overwrite looks like: the priority field now reads “P1.” That’s the entire visible trace of the change. Priya opens the ticket Monday, sees P1, and has no way to know if she set that herself last week, another teammate changed it, or an agent moved it over the weekend based on something she hasn’t seen yet. She either trusts it and reshuffles her week around it, or she doesn’t trust it and has to go ask around, which defeats the point of automating the update in the first place.

What a real undo trail looks like: the ticket shows “Priority changed from P2 to P1 by Thor, Saturday 11:47 PM, based on a customer escalation in #support-urgent (linked). Awaiting confirmation.” Priya can read the actual escalation the agent saw, decide whether it justifies the bump, and either confirm it or click one action that restores P2, with a note explaining why she reverted it. The entire decision that took a person minutes of investigating in the first version takes seconds in the second, because the information needed to judge it shipped with the change instead of needing to be reconstructed after the fact.

Why are silent overwrites the real risk, more than a wrong value on its own?

Because a wrong value with no visible trail doesn’t announce itself. It waits. A person who sees “P1” with a linked source and a timestamp can catch a bad call immediately, right when catching it is cheap. A person who sees a bare “P1” with no history has no reason to question it at all, so the wrong update doesn’t get caught until its downstream effects show up: a sprint plan builds around the wrong priority, a customer gets promised a fix on a timeline that assumed this ticket would ship first, and now unwinding the mistake means untangling everything built on top of it, not just flipping one field back.

That’s the actual argument for reversibility being a visible diff, not just a technical ability to restore an old value somewhere in a database. A backup that exists but nobody can see doesn’t get checked, because nothing prompts anyone to look. A change that shows its own history gets scrutinized as a matter of course, because the information needed to judge it is sitting right there instead of requiring someone to go dig for it.

How is this different from a database rollback?

A database rollback is a technical capability: the old row still exists somewhere, and an engineer with the right access could restore it. That’s necessary, but it’s not the same thing as reversible in the sense that matters here. The promise isn’t “the data is technically recoverable if someone with database access intervenes.” It’s that any person looking at the change, without special tooling or a support ticket, can see what it replaced and choose to put it back, in the same interface where they’d see the ticket itself.

A technical rollback capability A visible, human-readable undo
The old value exists in a backup or a log somewhere The old value is visible right on the ticket, next to the new one
Restoring it requires an engineer with database access Restoring it is one action available to whoever’s looking at the ticket
Nobody’s prompted to check unless something already broke The change’s own visibility invites a quick gut check before it needs one
Answers “can we get the old value back” Answers “can a person confirm or reverse this in the next thirty seconds”

Version control gets this right by default, which is part of why it’s a useful comparison: a git revert doesn’t just restore old code, it does it with a commit message explaining what’s being undone and why, visible to anyone reading the history. The pattern of treating every change as a recorded, inspectable event rather than a value silently swapped in place is well established outside of ticket trackers too, and it’s the same discipline this promise borrows from.

Where does this matter most?

As agent volume rises, because the odds of a proposed change being wrong rise right along with it, and the undo path has to stay as easy as the original action or it becomes the bottleneck instead of the safety net. A team running one agent making a handful of updates a day can probably eyeball each one. A team running several agents proposing dozens of updates an hour can’t review every single one closely, which is exactly the argument for letting routine, reversible changes go through automatically in the first place. That argument only holds if reversing a bad one is genuinely as fast as the agent making it was. If undo means opening a ticket with an ops team, the volume that made automatic approval attractive is the same volume that makes an unreviewed mistake expensive to unwind.

How does this connect to governance more broadly?

An easy, visible undo is what makes a tiered auto-approve rule safe to grant in the first place, not a separate feature bolted on next to it. The whole logic behind letting small, reversible changes clear automatically while bigger commitments wait for a person depends on “reversible” actually meaning something. If undoing a bad automatic approval were slow or unreliable, the honest response would be to require a person on everything, which defeats the point of automating anything at all. Reversible has to be real, not aspirational, for governed AI to work as a system rather than a slogan.

That’s also why undo isn’t graded on a curve based on how big the change was. A small change that’s hard to trace back and hard to revert is a bigger practical risk than a large change that’s fully visible and one click from reversed, because the small one is exactly the kind of thing nobody thinks to double-check until it’s already caused a problem somewhere downstream.

FAQ

Does every AI-made change get this level of detail?

Every change carries a before-state, a source, and a revert path. How much scrutiny it needs before it takes effect depends on what kind of change it is; a small, reversible update can clear automatically, while anything that creates a real commitment waits for a person regardless.

Isn’t a database backup enough to call something reversible?

No. A backup means the old value is technically recoverable by someone with the right access. Reversible here means any person looking at the change can see what it replaced and undo it themselves, without needing an engineer or a support ticket.

What happens to the note explaining why something changed?

It stays attached to the change, along with who or what made it and when, so anyone looking at the history later sees the same context the original decision was based on, not just the current value.

Does undo mean an agent’s change was wrong?

No. Most changes that get reviewed and confirmed were correct. Undo exists for the ones that weren’t, and its value is in how fast and how visibly that gets caught, not in how often it gets used.

How does this scale as a team adds more agents?

The undo path doesn’t get harder as volume grows, because it doesn’t depend on a person remembering context from when the change was made. The record travels with the change itself, whether it’s reviewed a minute later or a month later.

Thor gives your coding agents a source they can trust, with a human gate before anything becomes official. Book a demo.

Related Posts