In September, the evaluator Vals AI ran OpenAI’s GPT-6 Astra in Minecraft for 141 hours, live on Twitch. By Vals’ account it got further than any AI system had before: a semi-automatic blaze farm, 6 blaze rods, a warped forest, 6+ endermen killed, 3 ender pearls. That is most of the shopping list for eyes of ender and the way to the End.
Then a Creeper blew up the chest holding all of it, and the bed with it. Vals wrote that the model “appeared defeated” and spent the next several hours doing almost nothing but farming potatoes. The headlines took it from there: the AI got depressed, got traumatised, became a potato farmer.
It’s a great story, and I laughed too. But “depressed” is a claim about an inner state, and an agent like this has a very small, very inspectable amount of state. So here is what I think actually happened, mechanically, using only what Vals and the coverage published.
The popular version is that Astra got killed and then sank into despair. The primary posts are a bit different. Vals’ thread says Astra stored its valuables in an unguarded chest while thousands of viewers watched, a Creeper destroyed the chest and the bed, and later, on a rainy day, Astra found out it had lost everything. Their summary line: “It all went downhill from here.”
After that, from the model’s own notes as quoted by Vals and reporters:
Vals stopped the run at 141 hours. Vals hasn’t published a full write-up of this run, so there are details I can’t confirm, like exactly how its notes were stored or when its context was compacted. Where I rely on the general setup, I’ll say so.
Vals’ public benchmark for this kind of test is CUA-bench, and its methodology page is clear about the rules. The agent “sees the screen and nothing else”. It sends keyboard and mouse input. There’s no game API, no console, no reading memory or save files. Each model runs in its vendor’s own command-line harness, which for OpenAI models is Codex, and drives a game desktop over MCP. Vals described the Astra run the same way: no specialised harness, just computer use.
That’s a very different thing from older Minecraft agents. Voyager (2023) gave GPT-4 the Mineflayer API, structured game state as text, and a library of code skills it wrote for itself. Astra gets a screenshot.
So the agent is a loop:
while running: screenshot = capture_screen() context = system_prompt + notes + compacted_history + recent_steps + screenshot thought, action = model(context) execute(action) # keys, mouse moves, clicks maybe_write_notes(thought)
Two facts about this loop matter more than anything else.
It is slow. On CUA-bench, Astra averaged 32.09 seconds per action. That’s the benchmark average, not a measurement of the long run, but it gives the scale: around 110 decisions an hour. “Several hours of potato farming” is a few hundred decisions, not an afternoon of mindless clicking. Each of those decisions was a fresh call to the model, and each one chose potatoes again.
The weights never change. Nothing in this setup trains the model. There’s no reward, no gradient, no update. Whatever Astra “learned” from the explosion, it learned the only way a frozen model can: by writing text that it will read later.
141 hours of screenshots don’t fit in any context window. A run that long has to drop or compress its history over and over, which is what harnesses like Codex do with automatic compaction. What survives is a summary, and whatever notes the agent wrote down.
That makes the notes the only real long-term memory the agent has. The individual episodes get thrown away. The rules it wrote about them don’t.
Look at the rule again. It’s in capitals. It says ALWAYS. It says “ever again”. As a lesson, it’s actually correct: if keepInventory is on, items you carry survive death, and items in a chest don’t survive a Creeper. A careful human would write the same thing.
The problem isn’t the content. It’s the weight. That note is now in the context of every decision after it, with the strongest phrasing the model could give it, sitting next to a history that has been compressed down to almost nothing. The episode where things went well is a sentence in a summary. The rule about never risking it again is a standing order, read hundreds of times.
In a person, we’d call that a single bad experience colouring everything after it. In the agent, it’s simpler: one line of high-salience text in a context where little else survives. The model conditions on what’s in front of it. If what’s in front of it says, loudly, that losing things is the worst outcome, the safest plan wins.
“GREEN tall thing ahead was SUGARCANE, NOT creeper!” is my favourite line in the whole run, because it shows the mechanism directly.
The agent doesn’t have a separate vision system with fixed thresholds. It reads a screenshot inside the same context as its notes. A downscaled frame of a Minecraft field has a lot of green blobs. Creepers are green, roughly person-height, and not very detailed at that resolution. Sugarcane is green and tall.
When the context is full of Creeper warnings, the model’s reading of an ambiguous blob shifts toward “Creeper”. That’s ordinary in-context conditioning: the same pixels get a different interpretation depending on the text around them. Then the model corrects itself and writes the correction down, which is what a careful agent should do. It just looks like nerves.
Before the explosion, the agent had a long plan: blaze rods and pearls, then eyes of ender, then find the stronghold. Every step of that plan pointed at items that no longer existed. The plan wasn’t slowed down. It was invalid.
So the agent had to replan from the current state, and look at what that state was:
Put those together and potato farming isn’t despair. It’s the one activity that the agent’s goals, its new rule and its perception all agree on. It’s a local optimum, and it’s a stable one.
The last ingredient is the one people forget: the agent can’t get bored. A human would farm potatoes for twenty minutes, get restless and go do something risky, because boredom is a built-in push toward exploration. The agent has no such push. Repeating a safe, successful action has no cost unless the harness or the prompt adds one. Each new decision sees a context where farming has been working, and farming is safe, so it farms again. That’s how “a few minutes of recovery” becomes several hours.
Clinically, depression includes things like reduced activity and exploration, repetitive behaviour, and harsh self-criticism. Astra showed all three on the surface:
The last row deserves a line of its own. “I screwed up and dropped things” isn’t evidence of shame. It’s the register humans use to write about their own mistakes, and the model learned to write from humans. Ask it to analyse a failure and it will sound like a person analysing a failure.
Here’s the test that separates the two. Human depression persists outside any one thought. It lives in the body, in sleep, in chemistry, in a mood that’s there before you open your eyes. Astra has no state outside its context window and its notes. Copy the run, delete that one rule from the notes, and I’d expect the “trauma” to vanish on the next step. Put the rule into a fresh run that never saw a Creeper, and I’d expect the same caution. I haven’t run that, and Vals hasn’t published it, but it’s a cheap experiment and it would settle the question for this behaviour.
I’m not claiming this settles machine consciousness in general. That’s a much harder question, and “it can’t feel anything” is as much an assumption as “it feels sad”. My claim is narrower: nothing in this run needs an emotion to explain it, and every piece of state that produced it is text you could print out.
None of this is a model failure exactly. It’s what you’d expect from a strong model in a loop with weak memory design. If I were building a long-running agent like this, game or not, I’d change four things:
All four are context engineering, not model training. That’s the useful lesson from the potato farm. The model that played 141 hours of Minecraft from pixels is very capable. What made it look broken was the text we let it carry around.
The most human-looking moment in the whole run was a line in its notes.
Sources
GPT-6 Astra Didn’t Get Depressed in Minecraft. Its Notes Did. was originally published in Towards AI on Medium, where people are continuing the conversation by highlighting and responding to this story.