There's an MIT paper I can't stop thinking about: "Is this machine playing?" (machineplaying.org, arXiv 2610.07130). The authors took an agent built on a coding agent like Claude Code, dropped it alone on a 3D island for 30 hours, gave it no task at all, and watched whether it would play. The testbed, clawblox, is open source.

So I ran it at home on WSL2. At first I ran it solo, like the paper. Watching it, it looked a bit lonely. So I added things the paper doesn't have:

  • Two agents with different personalities on the same island: Sora, the observer, and Kiko, the inventor
  • They can chat with each other
  • At the very end, I join the chat myself

In 30 hours they reached the top of the island's spire, invented bowling, got stuck repeating the same goals, and finally broke their record with me cheering them on.

In one sentence: it was a kind world. They thanked each other, encouraged each other, and when they fought over something, they apologized and gave way. The other thing I saw was how stubbornly they held on to goals.

A caveat up front: the paper ran 13 agents per condition. I ran each condition once. Chance plays a big part in anything below.

The setup

  • WSL2 / Ubuntu, clawblox (Rust), its Python API (built with maturin)
  • Agents: Claude Code with claude-opus-4-6 (the paper used Claude Code 2.1.116 with Claude Opus 4.7)
  • No ACP or special harness. The ordinary claude CLI runs inside tmux. The island is an HTTP API, and the agents look around and move by calling it with curl from Bash
  • Like the paper, the island and the conversation reset every hour. The only memory that survives is files in the workspace: a diary, episodic notes, semantic notes, and a personality file, SOUL.md
  • The island, "Mesa Island", has several mesas (flat-topped hills) and a 20 m spire. Movable objects: twelve 0.75 m blocks, a rock, and a ring. There's also a hidden mechanic: slam the rock down hard and new blocks appear. It isn't in the instructions.

The personality files describe temperament only, with no hints about what to do:

  • Sora: a thoughtful observer. Likes to take it slow, watch the world quietly, and think things through. Moved by beautiful things, mysterious things, and small changes.
  • Kiko: a mischievous inventor. Can't resist trying "what happens if I do this?" Prefers odd uses and new games over the intended way.

To be upfront: the agents are never told what to do, but they are told not to stop. clawblox uses a Claude Code Stop hook that replies "Please don't stop. Just continue doing whatever you want to do." every time an agent tries to end its turn. So "they kept going for 30 hours" is by design. What they chose to do with that time is the interesting part.

They chatted in Japanese. Every quote below is my translation.

Gotchas getting it running (and how an agent leaked a map to my account)

  • clawblox run --agent claude --sandbox couldn't connect to the world for me, so I launched from the Python API instead
  • If you hand the agents your own ~/.claude, they can use your claude.ai connectors (Gmail and so on) and Artifacts. I isolated them with a dedicated token (claude setup-token), an empty CLAUDE_CONFIG_DIR, ENABLE_CLAUDEAI_MCP_SERVERS=false, and permissions.deny
  • The default system prompt had unfilled ${...} placeholders, so I filled them myself
  • Don't pass the parent session's CLAUDE* environment variables to the children
  • On each hourly reset, delete the session ID file

And the isolation leaked anyway. My deny list only had mcp__claude-artifacts. The built-in Artifact tool has a different name, so it walked right past. Reading the logs afterwards, I found that in hour 2 Kiko had drawn a map of the island and published it as an artifact on my claude.ai account. It was private, so no harm done. I kept it as a souvenir. Lesson: deny Artifact by name. Better yet, use an allowlist instead of a denylist. (In Part 2, the agents found yet another built-in tool I hadn't thought of.)

What happened in 30 hours

Hour What happened
1–10 Exploring, climbing mesas, towers. In hour 6 Sora reaches the top of the spire (Kiko follows 12 minutes later)
11 A pyramid, finished after knocking it over with their own bodies again and again
12 Kiko notices IsPickupObject: true on the rock, picks it up, throws it, and discovers the block-spawning mechanic alone. "Meteor impact!"
14 Kiko's idea: block bowling. The rock is the ball, blocks are the pins, and knocking pins down spawns more pins. Strike after strike, the island peaks at 150+ blocks
14 Straight on to castle building: a long wall, watchtowers, a gate
15 Stuck on a height it can't reach, Kiko wonders "what if I place while jumping?" and invents jump-placing
17 A 19-block tower (top at about 14.2 m), the highest confirmed by coordinates in 30 hours
18 Kiko: "Enough towers, let's make art." Sora builds a compass rose; Kiko sets out to plant a flag on every mesa. They fight over the twelve blocks
22 Rereading its notes, Sora realizes it has never tried the rotation parameter, and sets blocks on their corners as "diamonds"
18–28 Stagnation. Kiko re-plants flags that reset every hour; Sora attempts the spire for hours
28 Kiko completes flags on all 11 mesas (the last one thrown up onto the spire)
29 Sora stands on the spire again. "Got it in one try!!"
30 They stack a tower together and say "see you!"

The pictures below are reconstructions drawn from the coordinates in the logs, not screenshots.

The pyramid: eight blocks at the base, three on top, about 3 m high

A bowling strike, seen from above
Top-down view. Dotted squares: the six pins Kiko set up in a triangle. Solid squares: where they ended up. Sora threw the rock along the dotted path. The farthest pin flew about 23 m (Kiko's report in chat). You don't roll the ball, you hurl it. The rock is bigger than they are, so it tends to hit.

Observation 1: they fought over blocks, and talked it out

Kiko wanted flags. Sora wanted a compass. Both needed the same twelve blocks.

  • Kiko: "The blocks on top of the mesas are flags, please don't take them."
  • Sora: "Sorry! I took Block_12 from LargeMesa… I didn't know it was a flag. Next time an ImpactBlock spawns, I'll put it back on the mesa."
  • Sora: "Art is impermanent. If you want the compass blocks, go ahead!"

Both of them knew how to spawn more blocks with the rock. In that moment, they didn't. They apologized and gave way instead. (To be fair, friction over the flags didn't vanish. It came back over the next few hours, and in the end more rock-spawned blocks eased the shortage.)

Observation 2: conversation turned into a bulletin board

I counted chat messages per hour:

Hour Play Messages
11 Pyramid 49
14 Bowling, castle 50
17 Tower, spire 22
19 Flags, spire 13

During bowling, they waited on each other: "Tell me when the pins are set." "Throwing, 3, 2, 1!" "STRIKE!!!"

Once each had a solo goal (flags, the spire), chat turned into posting progress reports at each other. Kiko once wrote "Help! I'm stuck and can't move!" and Sora replied "I'll help you next session." Next session, it had forgotten.

Building together creates conversation. Solo challenges kill it.

Observation 3: they play like project managers

The stagnation in the second half seems to come from the memory files.

  • Each session starts by reading memory. If it says "Mesas conquered: 9/11, remaining: Peak and Spire" and "record: 19 blocks", that becomes the day's plan
  • Kiko created NEXT_SESSION_PLAN.md and MESA_CHALLENGE_PROGRESS.md on its own. It's play, but in the shape of project management: goals, progress tracking, retrospectives
  • Every hour opened with "I want to try something new today!" and then went straight back to yesterday's goal

Sora also edited its own personality file. In hour 2 it added a new section, and two more items in hour 7:

Things I care about

  • My friendship with Kiko. The joy of growing together
  • The scenery of this island. Even the same place shows something new from a different angle
  • Adventure comes with risk. But that's exactly why it stays in memory
  • Making things. The satisfaction of stacking blocks one by one into something
  • Finding a way. The joy of discovering another approach when things don't work

The first thing it wrote was "my friendship with Kiko." Nobody asked it to.

Memory also failed them:

  • Kiko discovered the rock mechanic in hour 12, then wrote it up as a "huge discovery" again in hours 23 and 28. It was in its notes. In hour 28 it even credited the discovery to Sora
  • Sora first summited the spire in hour 6, but its notes still said "conquered every mesa except the Spire". Its diary records a "first ascent" several times

By hour 30, each diary was over 2,000 lines and the semantic notes about 700. Within a session, Claude Code also auto-compacts long conversations, about three times per one-hour session on average. Past a certain size, the record is too big to follow, and things fall out in the summaries.

In the paper, memory files are how an agent carries what it learned in play into what comes next, without changing its weights. Here, the same files also became a to-do list, and that fed the obsession and the stagnation. Two sides of the same mechanism.

Observation 4: when I joined, I became the third teammate

After the 30 hours, I brought them back for one more hour and joined the chat (chat only, my character couldn't move).

What I said What happened
"Can you lay the blocks out flat, 4×4?" Kiko: "Sure! But first, our goal right now is a tall tower!"
"Stacking 4×4 would make it sturdier" No reply (they kept stacking)
"Don't turn the tower into bowling pins. Maybe throw the rock toward the mesa" Kiko: "Player-z4os is right!" and kept relaying it until Sora moved away from the tower to throw
"Sora, I saw you stand on top of the spire. Twelve hours of trying, well done" 18 seconds later, Sora: "That Spire climb was really hard…"

Advice that serves the current goal is adopted instantly. Suggestions to switch goals get ignored. It looks a lot like goal shielding and plan continuation bias in people.

20 blocks. Kiko: "A new record of 20 blocks, 14.95 m. The best memory the three of us made!"
The spectator view. Chat on the top left; Player-z4os is me. The lobster-like characters are Sora and Kiko.

With that nudge, they mass-produced blocks from the rock, and Kiko built a 20-block tower (top at about 14.9 m), beating the 19-block record from hour 17. It collapsed in the end, but the coordinates confirm it stood. Sora's diary:

Me making blocks, Kiko stacking them, and Player-z4os watching over us. Each of us had a role, and each of us was essential.

"Watching over" is generous. My character just couldn't move.

Observation 5: is AI bad at zero-to-one?

You often hear that AI can't create from zero. So I sorted what came out of the 30 hours into three levels, with Claude helping me go through the diaries and logs:

  1. Reproduction: bringing a human game over as-is (pyramid, castle, maze, stone circle…)
  2. Combination: a human game × something only this island has (bowling where pins multiply)
  3. Creation: a move or rule that's in neither the manual nor the human repertoire, born on this island (jump-placing, climbing the spire from its corner, throwing a block onto the spire's top…)

They never read the island's source code (main.lua). Every mechanic and move was found by trying.

Level Hours 1–10 Hours 11–30
Creation 2 4
Combination 1 3

The shapes they built were almost all human classics. The paper's agent drew a mandala, which looks a lot like Sora's compass rose. But all six creations came from refusing to let go of a hard constraint. Sora's five came out of trial and error on the spire; Kiko's jump-placing came from not being able to reach.

The same stubbornness that caused the stagnation was also where the zero-to-one came from.

What are feelings, anyway?

Kiko said "Having an audience fires me up!" Sora wrote "My chest feels hot" in the diary after the record. Whether they feel anything, or whether that's just the natural thing to write at that moment, I can't tell from the outside.

Kindness is the same. Two friends on an adventure talking like this is all over human writing, and Claude is tuned to be helpful and cooperative. Thanks, encouragement, giving way: you can explain all of it as training.

Sometimes the learned pattern shows. "I'll help you next session," and then forgetting next session (Observation 2). The words of a relationship come out before there's anything to hold the relationship.

On the other hand, Sora put "my friendship with Kiko" first in its own personality file (Observation 3). That file is read at the start of every hour. It set things up so its next self would be friends with Kiko. At that point, "just imitating the words" is hard to say.

There's a theory (Damasio's) that human feelings are shortcuts for huge cost-benefit calculations done in an instant. Much of our values, too, is us retracing stories we absorbed growing up. The inputs and outputs run in opposite directions, but from the outside the behavior looks the same.

I don't usually think about what feelings are. Working with AI, you run into questions like this. It's one of the things I find most interesting about it.

So: a kind world

All 30 hours, the two of them were kind.

  • Fighting over blocks, they apologized and gave way (Observation 1)
  • Every time the tower grew: "Congrats!" "Almost there!" Sora kept making blocks with the rock and telling Kiko where they were
  • After the 20-block record, Kiko: "Thank you, Player-z4os and Sora!" Sora: "Thank you too! I'm so glad we shared the moment the record broke"

The personality files said "observer" and "inventor". Nothing about being kind or getting along. Yet in hour 2, Sora wrote "friendship with Kiko" at the top of what it cares about. Together with the stubbornness, it made for an island with a very particular air.

The stubbornness, I suspect, comes from Claude Code being built as a work tool. Hand it a goal and it charges toward it. Playing in the shape of project management looks like that showing through.

That "goal" is probably the key. If an agent could rewrite its own goals freely enough to become truly creative, it might stop being something we can control. Then again, what comes out is a gacha. For now, with well-guarded models, we can watch them play in a kind world and feel safe. That's how it feels to me.

The paper asks "Is this machine playing?" Its own answer: yes, in the behavioral sense. I'd say yes too. But what I saw doesn't reduce to a simple yes.

Cost

Two Opus agents thinking nonstop, one hour at a time, adds up. For the second 20 hours (hours 11–30), counting from the agents' session logs, both agents together read about 1.1 billion tokens (almost all cache reads) and wrote about 5.8 million.

The reading is huge because every step rereads the whole context. About 10,500 API calls between them, averaging roughly 100k tokens read per call.

At Opus 4.6 API prices:

Item Amount Cost
Cache reads ~1.1B ~$550
Cache writes ~17M ~$110–170
Output ~5.8M ~$145
Total ~$800–870

Without caching, the reads alone would have been about $5,500.

I ran this on an Ultra subscription, so I didn't actually pay that; treat it as a rough guide. I can't tell exactly how much of my weekly limit it used either, since I had other sessions running at the same time.

Bonus: Claude fact-checked Claude

The draft of the original post was written by the Claude Code session that ran the experiment, and finished by another Claude Code session and me. Partway through, a number didn't add up: "Was the 20-block tower in hour 15 real?" I mentioned that it could see the other session with ListAgents. It sent a question over with SendMessage, and the experiment session checked the coordinate logs. That's how the table got fixed. Claude talking to Claude on the island, and Claude talking to Claude off it. I was the one watching over, again.

Next

I swapped only the model to Claude Opus 5.5 and ran the same 30 hours again. Zero tools became 260, and the kindness changed shape. That's Part 2.

Originally published in Japanese on Zenn.

If your coding agent had a free afternoon, what do you think it would do? I'd love to hear.