18 July 2026 · 3 min read
Agents that move real money, safely
An AI agent in a business I run can place orders, chase payments, and move money. On its own.
The scary part was never that it might be dumb. It is that it is confident.
So I spent most of the build making sure it can never be confident with money. Here is how.

Every action an agent wants to take gets scored by risk before it runs. Reading data or drafting a quote is low risk. It just happens. Anything that moves money or cannot be undone is high risk. It stops.
class RiskLevel(Enum):
LOW = "low" # reversible, no money: read data, draft a quote
HIGH = "high" # moves money or cannot be undone
def classify(action: AgentAction) -> RiskLevel:
if action.moves_money or action.is_irreversible:
return RiskLevel.HIGH
return RiskLevel.LOW
async def execute(action: AgentAction):
if classify(action) is RiskLevel.HIGH:
await request_human_approval(action) # stop, wait for a person
else:
await run(action)
When it stops, it does not guess. It queues the action with what it wants to do and why, and it waits for a person to say yes. That person is me. The agent does the work. It never does the irreversible part alone.
There is one more failure I was afraid of. Not a crash. Silent drift. A prompt change or a model upgrade quietly making the agents worse until money leaks and nobody notices. So every release is scored against a baseline, and if quality drops, it does not ship.
Two decisions under all of it.
Human in the loop over full autonomy, because full autonomy demos beautifully and fails expensively.
One interface to the whole business, so every agent inherits every capability instead of me wiring each one by hand.
The whole thing comes down to one line. Let the agent do the work. Never let it do the irreversible part alone.
I am writing up how I build these, one piece at a time.