I’ve spent the last 48 hours not building my app.

I’ve been building Claro, a task and calendar app, and leaning on Cursor pretty hard to do it. The plan for this week was features. What actually happened is I got curious about Cursor’s background agents again and spent two days finding out how far they’d stretch. Claro got some cleanup out of it. I got a blog post. Nobody got a new feature.

The pitch for background agents is the pitch every developer wants to hear: an AI that works while you’re not looking, picking off the chores you keep pushing to “later.” In my repos, “later” has historically meant never. So I wanted this to work.


The first time, it didn’t

When background agents first launched a few weeks back (months? time is weird this year), I gave them the jobs I procrastinate on. Remove the debug logging. Make error handling consistent across files. Deal with the stray TODOs. On paper, perfect agent work.

In practice, they fell over as soon as a request touched more than one part of the repo.

My first real attempt was “remove all debug logging unless we’re in development mode.” The agent gamely opened a PR. It missed about half the cases and handled the other half three different ways. Then I merged some of my own work into main, and the agent’s PR went stale. It had no idea how to rebase against what I’d done, so I was left with a PR I couldn’t use. Net time saved: negative.

That happened enough times that I stopped bothering. I was spending more time cleaning up after them than the chore would have taken me in the first place.


Then GPT-5 showed up

Cursor’s background agents run on GPT-5 now, and something crossed a line. The same “remove all debug logging” request came back clean: scoped correctly, consistent, with a short explanation of what it changed and why. That’s the difference between a demo feature and a tool. It reads like a junior developer who actually read the ticket before starting.

It’s still brittle in one specific way, and it’s the way that matters most to me. The agent works from a snapshot of the repo at the moment it started. My repo is not a snapshot. If I merge a handful of PRs while it’s working, there’s a decent chance its work no longer applies and I toss it. Until agents can notice the repo moved and rebase themselves, a lot of the value gets stranded on a branch nobody will merge.


Cheap in money, expensive in trust

Half a dozen background jobs over two days cost me under ten dollars. Compared to the engineering hours it should have replaced, that’s nothing.

The catch is that I still babysit the output. A PR I can’t merge isn’t just ten wasted dollars, it’s twenty minutes of reviewing, testing, and then redoing the thing by hand. On the bad runs I’ve paid a small fee to be distracted.

On the good runs, though. Waking up, opening GitHub, and finding a chore done while I was asleep still feels like a trick I shouldn’t be allowed to do.


What Claro actually got out of it

Small stuff, but the kind that adds up. Background agents cleaned up the type annotations across the codebase, made the error handling consistent, and refactored one function that had grown into a gnarly mess into something I can read again. None of it is glamorous. All of it makes the house feel clean.

For a brand new project that matters more than it sounds. A tidy codebase compounds. You move faster, you make fewer dumb mistakes, and when you come back after a week away you can find things. The AI is doing janitorial work, and I mean that as a compliment.


What’s still missing

Two things.

The first is context continuity, which I’ve already complained about. Agents don’t know what happened in the repo after they started, and they can’t rebase intelligently. Until that changes they’re eager interns: you supervise closely, and you throw work away when it goes stale.

The second is multi-step strategy. An agent can execute one clear instruction well. Ask it to stage a plan with dependencies, “first remove the logging, then update the configs, then fix the docs,” and it struggles. Humans think in sequences. Agents right now are one-shotters.

If Cursor cracks those two, I’d stop thinking of background agents as an experiment.


Where I’ve landed

They’re useful in bursts. They’re not autopilot, and if you go in expecting autopilot you’ll be annoyed by lunch.

What I can’t get over is how different this feels from a few months ago. Same product, same kind of requests, and the results went from “why did I bother” to “oh, that’s actually done.” I suspect six months from now this post will read as quaint.

Claro is my testbed for all of it. I’ll keep throwing chores at the agents, not because they’re reliable yet, but because I’ve rarely watched a tool improve this fast, and I’d like the codebase to show what that looks like in practice.

If you’re curious about Claro, it’s at clarocal.com. It’s teaching me about AI development at roughly the rate I’m teaching it about calendars.