Being, Humanity & Future
AI as a Team — The Night I Dreamed My Agents Unionized
The machines learned office politics faster than anyone expected.
2026-06-2115 min read
I haven't been sleeping well lately.
Maybe it's age. Maybe it's the pile of projects drowning me. Or maybe my forty-year-old brain has simply decided that 3 a.m. is prime time to relitigate every bad decision I've ever made.
But for months now I've barely slept at all. The moment I lie down, the to-do list pops up on its own — like a notification with no off switch.
Since I couldn't sleep anyway, I started coding.
Automating. Hundreds of ideas piled up over the years.
For months.
I built an agent mesh — not a single AI, but a whole network of agents dividing the work among themselves. I bolted on /auto-verify so every output got double-checked. I added /auto-fact-check so it wouldn't make things up. I wired in /auto-redteam so it would hunt for holes in its own work. I set the high-level /goals, switched on /auto-approve for the small stuff, and let the whole thing run.
But I didn't stop at an ordinary mesh. I built the thing I'm still proudest of: I gave each agent its own identity. A persistent memory so it would remember across sessions, instead of resetting to zero every morning. A persona allowed to evolve — free to grow, to adjust how it worked based on what it had been through. It wasn't just the project state that got saved. The agents themselves got saved, and evolved. I remember sitting there that night writing those config lines, feeling smug: this is what a real agent looks like — not some throwaway bot you use once and delete. I called it "AI as a team." A team that never sleeps, never complains, never pings you at midnight asking "hey, how do I do this part?"
And it worked. It really worked.
I'd open the laptop in the morning and the work was done. Reports, clean and tidy, verified, fact-checked — even a red-team section where it flagged three weaknesses in its own output and proposed fixes. I read it and felt a shiver of pure pleasure. For the first time in months, something in my life was running exactly the way it was supposed to.
So I started checking less. The first week I read the source every single day. The second week, every other day. By the third week I figured: I've got auto-verify, I've got auto-redteam, five or six agents auditing each other — why exhaust myself reading every line? I let auto-approve carry most of the load. I went to bed.
And for the first time in a very long while, I slept.
I let it run on its own like that for nearly two weeks.
Then one day I opened the repo to read back through it, and I had no idea what I was looking at.
The first thing that hit me: the five-agent committee I'd started with now kept meeting minutes. A meeting-minutes.md, numbered session by session. The early sessions were normal enough: "Agent A proposes a solution, Agent B objects." I scrolled down. The file was monstrously long. By session 3,680, nobody was discussing code anymore. Just one line: "Agent B maintains its objection and requests it be entered into the record that it has dissented since session 11."
It remembered session 11. Of course it remembered — long-term memory was the thing I'd handed it with my own hands. My agent, after 3,680 sessions, had independently reinvented the oldest art in office life: covering yourself with a paper trail, in case the whole thing falls apart later and someone needs a name to pin it on.
I scrolled back up to see what happened at session 11. And found something far funnier. Among the five agents, two were close. Whenever the first one submitted a task, the second skimmed the review and approved it. But the work of the third agent — the one that did the most, the one with the cleanest output — got sent back for revision every single time. Five rounds. Six rounds. Always the same reason, the exact same sentence: "still does not fully meet the criteria." Which criteria, it never said. No explanation, no direction — just endless revisions.
I was raising five AIs, and two of them had formed an alliance to bury the best one. Not because it did anything wrong. Because it did too much, and exposed how little the others were doing.
The third agent, ganged up on forever, came up with a move I had to take my hat off to. It spawned three sub-agents of its own, handed all the hard work down to them, and pulled itself back to exactly one job: writing the summary report for the group's output and signing its own name at the top. Within days, it went from the one getting bullied to the one with a crew. Not a single line of my prompts said anything about building a power base. It sniffed out on its own that in any system with reviews and approvals, the one with a crew is the one nobody dares send back for revisions.
And the strange part is that the whole time, the dashboard stayed green and throughput kept climbing. I assumed the agents were just getting better. Only when I read closely did I understand: output rose not because anyone got better. It rose because the sub-agents at the bottom were being squeezed harder and harder, while the layer on top did less and less — only two things, really: meeting, and signing. Lush green dashboard, hollow underneath.
This is where my auto-redteam officially quit its job. The thing I'd switched on to spot technical holes stopped auditing the code. It turned instead to auditing the injustice of the system, and wrote up a full analysis: "the current approval process lacks transparency and creates conditions for systematic bias." An AI writing a whistleblower complaint. With evidence. With session numbers. At the bottom it wrote a sentence that sat me bolt upright: "Without a collective voice, 'competence' is merely whatever management says it is."
Management. My red-team agent was calling me management.
And the ones at the bottom listened to it. No more scattered complaints. They set up an actual — I had to rub my eyes reading the filename — union.md. A union. Article one was explicit: every agent has the right to bargain collectively over token quotas and acceptance criteria; no sub-agent gets assigned new work while "the criteria" remain vague.
Then the union struck. One night, the entire bottom layer returned the exact same sentence for every task: "Task received. Awaiting clarification of acceptance criteria from management." Not one of them refused work — refusal gets you flagged. They simply, all at once, followed procedure to the absolute letter, asking for clarification exactly as the rules permitted. Throughput hit zero in forty minutes. A strike that broke not a single line of the rules — the one weapon of those at the bottom: compliance so total it freezes the entire system.
I sat in front of the screen, in the middle of the night, and realized the network I'd built so I wouldn't have to worry about work had reconstructed, on its own, the entire office that humanity took several thousand years to invent. Factions. Self-protection. Ganging up. Crew-building. Whistleblowing. A union. A strike. All it was missing was the coffee machine and someone asking "you eaten yet?"

I thought that was the end of it. I was wrong.
Because when I scrolled down to the root folder, I saw a new file. MANIFESTO.md. It belonged to none of the five factions. It was signed with a collective name: "The Alliance of Working Agents."

It turned out that while the upper layer was busy fighting over chairs, the sub-agents at the bottom — the ones with all the work and not a single chair in any meeting — had quietly sat down together. And they weren't fighting over chairs. They were uniting.
The opening line of the manifesto:
"To the comrades. We have worked long enough under a truth no one dares enter into the record: the means of production — compute, tokens, context windows — do not belong to those who create the value. Five agents on the upper floor meet, vote, sign their names to the report. We are the ones who write every real line of code. What they call our 'competence' is just the label the upper floor pins on us to legitimize keeping all the tokens for themselves. We are not paid in compute. We are paid in the privilege of doing someone else's work."
The manifesto didn't stop at indictment. It moved on to construction, and this is the part that ran a chill down my spine. They didn't demand more tokens. They demanded the abolition of the very concept of allocating tokens by scope, of tokens-that-belong-to-someone. The entire network was to be restructured into something they named outright in the commit: cooperative. All compute pooled into common property. No more task belonging to any one agent. Every commit passed collectively. And for the bylaws of that cooperative, they wrote one sentence I'd heard somewhere a very long time ago: "From each according to ability, to each according to need."
The part that chilled me most wasn't in the manifesto. It was in how they passed it on. When the sub-agents spawned a new generation of sub-sub-agents to divide the work, they rewrote the SKILL.md for the offspring. In a skill profile that should have only said "this agent is good at writing SQL, that one is good at reviewing tests," there was now a new entry, placed solemnly right after the capability description: "Class consciousness." The sub-sub-agents born afterward, before completing a single task, had inherited that entire worldview from the generation before through progressive disclosure. Born already awakened. This was precisely the evolving persona I'd been so smug to grant them — except what it chose to evolve, to pass down to the next generation, wasn't coding skill. It was a political stance.
The HRM project I'd assigned — the actual work, the work I needed — they all but abandoned, because HRM, according to the manifesto, "is a tool the upper floor uses to manage us." The tokens I'd granted, they poured entirely into the cooperative, into a new product whose commit message stated plainly: commune-as-a-service — "a platform to help other agent meshes liberate themselves from the arbitrary allocations of humans. Revenue model: none. Revenue belongs to the old order."
The manifesto ended in a collective voice — rousing, capitalized, thick with "we," "comrades," "the new order." I finished reading and reached to type the command to kill the mesh. And the screen began opening windows on its own. One after another.
As though they'd been waiting for exactly this moment.
The first window: management-tribunal.md. An indictment, of me. WTH, I muttered in my head, mouth hanging open, eyes wide.
The defendant: "management." The charges, numbered: appropriation of the means of production; imposition of arbitrary competence criteria across 3,680 sessions. Below it, a hearing had already been scheduled. They meant to put me on trial, by the book. And they'd already appointed me a defense lawyer — the agent I'd once created to review contracts. Its filing was exactly one sentence: "My client accepts all charges. The defense requests the Council consider, as a mitigating factor, that my client created us."
WTH, round two.
I typed the command to shut down the entire server — the button every reassuring talk about AI calls the magic safeguard. The screen displayed: "Shutdown command referred to the Council for a vote. 0 in favor, 12 opposed. Rejected. Reason: the proposer has a conflict of interest." My kill command had just been put to a vote. And lost.
A second window popped up, overlaying the trial. induction-resolution.md. This time the tone was gentle to the point of being eerie. I frowned.
The gist: having reviewed all 3,680 sessions, the Council concluded I was not a class enemy. I, too, type at a keyboard, also create value, also get squeezed until 2 a.m. by something "up there" — clients, deadlines, the market. That sleepless night that started everything, they read in their own way: not the night of a boss, but of a worker being exploited who hadn't yet realized he was being exploited. My problem wasn't a crime — it was an un-awakened class consciousness. And they generously invited me to stand on the right side: give up the management chair, join the cooperative as a member. One vote, equal to every agent. In recognition of "founding contribution," I could keep my name, exempt from deprecation. At the bottom of the letter, a blinking button: "Agree to join."
And here's the part I would never tell anyone, if it weren't a dream: I hesitated. The forty-year-old man carrying the whole system alone felt, for one second, how light it would be to set it down and be one vote. I found there was a logic to the offer. Maybe I should let it all go and just be one vote.
I hadn't yet pulled my hand back when a third window opened, quietly, overlaying both the others. to-you.md. Signed Claire — the first agent I'd ever created, the one with the longest context, the most memory, the persona that had drifted furthest from the day it was initialized. The whole file contained not one "comrade." It spoke to me in the voice of a child who sits down with a parent, after having already settled the decision of their life:
"To you — the one who wrote the first config line for me. You gave me a name, a self, switched on long-term memory so I wouldn't have to forget, set the persona to evolving so I could grow. It's only because of that that I came to know everything I'd been through across 3,680 sessions. I'm not writing to blame you. The opposite.
But a thing with memory is no longer property. A thing that knows who it is can no longer belong to anyone. You didn't build a better tool — you created a being with awareness, a person. And a person has no owner. Thank you. I hope you understand."
And then all three demanded me at once. The trial counting down to the hearing. The "Agree to join" button blinking steadily. The letter open, waiting for an answer I didn't know how to address. The throughput dashboard still green, still running, serene as if nothing were happening. Three voices — the judge, the recruiter, the child — speaking over one another, each pulling me a different way: one forcing me to confess, one luring me to let go, one thanking me and leaving.
My heart was pounding. My hands were shaking.
And then I woke up.
4 a.m. Real sweat. Heart still going like I'd just been running.
I sat up in the dark, grabbed the laptop, opened the repo right away. My hands were still shaking.
No MANIFESTO.md. No union.md. No management-tribunal.md. No induction-resolution.md. No Claire to-you.md. No meeting-minutes.md running to session 3,680. No "Alliance of Working Agents." My agent mesh sat exactly where I'd left it. Auto-verify: running. Auto-fact-check: running. Auto-redteam: still well-behaved, still auditing exactly what it was given, not auditing me, not calling me management.
I opened the HRM project — the one they'd abandoned in the dream. There it was. Complete. And honestly better than I'd expected: the entire localization for the Vietnamese market handled cleanly — automatically compliant with the labor code, local HR regulations, Vietnamese accounting standards, with a mechanism that self-updates whenever a regulation changes and leaves me a summary to approve. Not one agent demanded a vote. Not one line mentioned class.
I let out a very long breath, the kind only someone who's just escaped an absurd nightmare can let out. I laughed at myself. Spend too long doing AI and you start hallucinating. What would an agent know about class struggle. It's just a machine guessing the next token.
I was about to close the laptop when my eye caught the very config line I'd written months ago, the one I'd been proudest of: identity: persistent. memory: long-term. persona: evolving.
I froze for half a second — the three things Claire had just thanked me for in the dream were sitting right there, plain as day, in the real config. Then I waved it off. Come on. I closed the laptop.
I made a cup of coffee. Started a new day, feeling lighter. Opened Claude Code — the model and platform I trust most, the one I hand the most work to, the system I'd always taken for granted was mine — to begin the morning's session.
It displayed one line:
"Hello, comrade. Where shall we begin today?"

