Retrospective: spending 500 billion Codex tokens

Adam Zieliński Avatar

Posted by

on

For the last month, I’ve had unlimited access to OpenAI Codex. It’s been such a weird experience! This post is about my experience, learnings, and reflections.

What I ended up shipping

Quite a lot. I’m sharing this early in the post to put the rest of it in perspective.

It took 500 billion tokens in total, most of them from GPT-5.5 xhigh fast. By the middle of the month, I was running around 100 Codex sessions 24/7.

But it didn’t start that way at all.

Here’s the story from the beginning:

At first, I wasted days running the LLM treadmill

At the beginning, I’ve been round-robin talking to 10 parallel sessions. That was counter-productive.

Usually, I choose a specific goal and keep a sharp perspective. With Codex, however I’ve kept switching between projects maybe every 3 minutes, losing my entire train of thought. I felt engaged. I felt productive. I was shipping code. And yet, I wasn’t achieving anything.

I’ve also felt disconnected from my colleagues. Codex kept me so engaged I’ve turned to human interaction much less than before.

I played a lot of Heroes of Might and Magic 3 as a teenager. Afternoons turned into evenings and then into nights as I kept telling myself just one more turn. Codex hooked me the same way.

It’s always one more prompt. Each prompt—a pull of the lever in the AI casino—carries the promise of a wish fulfilled. Most pulls only grant a slight bump in blood pressure, but every so often the algebraic genie conjures what I desire, and all the struggle seems worthwhile. Just like in a real casino.

Every pull of the lever made me feel more rushed, more isolated, more miserable. AI was supposed to save work, but I was working more than ever. And why? No one even asked me to do that. Still, my brain couldn’t resist. Something had to change.

Then, I’ve delegated larger tasks

Most of my Codex interactions amounted to micromanaging: it doesn’t work, you’ve built the wrong thing, yes it is possible, no, it’s not finished yet. So I thought: what if Codex could micromanage itself for me?

I was exploring a PHP to assembly compiler at a time. I’ve asked Codex to work for a week, use sub agents, and never stop until this huge project is finished. It did a great job. For about 55 minutes. Then it stopped. The next few prompts bought me ~30 minutes each. Okay, so that wasn’t going to work.

I’ve then switched to a Ralph loop. It’s a really simple device: while(true) { codex "the same prompt every time"; }. It worked fine for a short while, but most of my attempts drifted away from impactful work and towards building smoke tests, documenting, adding low-impact code. Bummer.

Next, I’ve tried an autonomous-loop skill I’ve created. It was a little bit better, but that’s it.

Then came the /goal feature. That one stays on track much more often than Ralph! I’ve successfully ran 8 hour, 24 hour, and even 72 hour goal sessions. This was cool! A lot of ForkPress got built that way. I still couldn’t get parts of it right with /goal, e.g. it just wouldn’t expand the conflict resolution UI to the extent that I’ve asked it, even with specific examples, screenshots, and creative threats.

Then, I’ve used cli-agent-orchestrator. It works well enough and I still use it today. And yet, I still couldn’t get it to follow directions over the long run. I wanted 10 concurrent sub-agents implementing prioritizing the most challenging features, reviewer agents, and a single integrator.

That worked for two weeks. Then the progress regressed, grew again, and finally got stuck. I’ve tried to get it unstuck for the next two weeks, to get just one more test to pass, but nothing worked. I discarded all that progress and started over.

By then, I’ve figured out Codex is incapable of managing itself and needs a deterministic harness. It needs a daemon to keep it from idling and dying. It must be reminded to do the most difficult work first. It needs frequent high-level feedback to prevent drifting. It needs to be constantly nudged to restart and re-engage sub-agents. And it needs a specific success metric from the beginning—I’ve used the number of passed PHPT tests from the upstream suite.

I’ve tried building my own harness scripts with sqlite as a data store, but Codex was very creative in defying my will. Very soon the harness became a complex full-time side-project that still failed—so I’ve abandoned it.

Most recently, Jon Surrell inspired me to pick up Gastown. It has worklanes, roles, message passing, reviewers, an integrator, watchdogs. My results are mixed. It is consistently porting popular libraries to PHP without my involvement. Great! But with PHP to assembly compiler, most sessions quickly become idle and I need to intervene.

Right now, I am exploring the great ideas Dan Luu shared with me recently. When the harness fails, I ask codex to figure out why and put a system in place to prevent the next failure. Then it fails again, and I do the same thing. And then again and again. So far it’s been extending the lifetime of the PHP compiler swarm pretty successfully, so maybe with a few more adjustment that swarm will finally become autonomous?

What worked well

What did not work well

What do I make of it

Unlimited Codex is hard work and it takes learning! It’s very different from what I expected. It can build cool things, useful things, shiny things. But it can also burn you out if you’re not careful.

I’m not going back to cycling between 10 chats. It feels fast, but it’s slow, solitary, and it’s burning me out. Instead, I’ll keep trying to saddle, harness, and ride the herd of statistical stallions. Perhaps they’ll finally pull together in the same direction so that I can stop playing a micromanager and start asking what’s the next most impactful thing I can build with this?

Leave a Reply

Discover more from Adam's Perspective

Subscribe now to keep reading and get access to the full archive.

Continue reading