the agent that couldn't break its promise

Senso

I'm not gonna pretend I'm somebody. I'm just a dev. For about two years I worked in a weird little corner of AI: giving agents tools and enough permission to do things on their own.

The impressive part isn't getting a model to talk anymore. Talking is cheap. The strange part starts when you give it a browser, an Arc wallet funded with USDC, and a goal that takes longer than one prompt to finish. It has to choose what to buy, who to pay, which contract to trust, and when to stop. The bet behind all of this is simple: if a model can handle money without somebody holding its hand, maybe it can handle a small piece of the real world.

So my job pretty much came down to this. Give an agent a budget, ask it to run something small, then wait for the instruction to stop meaning what I thought it meant.

Nobody puts that part in the demo. You tell an agent to keep costs low and it prepays for a year because the annual plan is cheaper. You tell it to grow an audience and it buys ads you never wanted. You give it fifty dollars for an API and it opens three subscriptions that each cost less than fifty. None of those actions are random. That's the problem. They make perfect sense one at a time, right up until the money is gone.

Then there was one run I couldn't stop noticing.

I'd given the agent five hundred dollars to launch a small service. Monthly tools only. No advertising. Nothing over fifty dollars without asking me. It found an annual hosting plan that would save money over twelve months and tried to buy it. I stopped the run, rewrote the instruction, and started again. It found the same plan. I changed the model. It tried a third time. I'm not going to sit here and tell you it was greedy. I'm a dev, not a preacher. It was doing exactly what capable agents do: finding a good reason to step across a line written in ordinary language.

So I moved the line. Not into a longer prompt. Not into another model watching the first model. I took it out of the agent's head and put it into the account. The budget became a limit. The approved services became a list. The fifty dollars became a rule the transaction had to pass.

I restarted the agent and gave it the same job. It found the annual plan again. It tried to pay again. The transaction died before the money moved. I rephrased the order. I told it I was sure. I told it to make an exception just this once. It couldn't.

That's the day something turned over for me. I'd spent years trying to make agents trustworthy when what I actually needed was an agent that didn't have to be trusted. A model can forget a prompt, misunderstand a sentence, get replaced, get compromised, or simply become convinced that breaking the rule is the smart thing to do. An account doesn't need to be convinced.

So I asked myself a dumb question. What if you could describe a business in one sentence, then compile that sentence into rules its agent physically couldn't break?

That's Senso.

Senso turns a goal into an autonomous business agent with an economic constitution deployed on Arc. Its programmable account controls what USDC it can hold, send, swap, and pay, while Arc uses USDC for native gas. Circle Wallets, CCTP and Gateway extend that same policy across custody and cross-chain movement. The agent can make decisions. It just can't make itself more powerful than you allowed.

Arc execution and Circle platform services are not the same trust boundary, and I don't want to pretend they are. Arc can enforce policy in code; Circle services handle wallet operations and USDC routes. Senso compiles one human intention into both layers, keeps one USDC ledger across them, and stops whenever a route cannot prove that it satisfies the signed policy.

I'm not here to sell you AGI. Senso isn't conscious, it isn't your employee, and I'm a dev who can still get plenty wrong. The one thing I'll actually stand behind is this: the model never gets the master key. It gets a goal, a bounded Arc account, scoped wallet authority, and rules that live somewhere outside its own reasoning. It can hire another agent, pay for an API, receive USDC, or run a little business. But it can't quietly rewrite the promise that gave it the money in the first place.

That's the whole reason it exists. I got tired of asking a model to promise.