There’s a fully built creature generator sitting inside the Claude Code binary right now. 18 species. Rarity tiers. Hats. Stats. A system prompt that tells the model a small animal “sits beside the user’s input box and occasionally comments in a speech bubble.”
It’s not live. But it’s all there.
Finding It
We were doing a routine dig through cli.js (v2.1.87) when we hit something unexpected: a block of minified logic that looked nothing like the rest of the config and routing code around it. Deobfuscated, it became clear it was a deterministic companion generator keyed off the user’s authenticated ID.
The comment in the source calls it /buddy. The salt used in the hash is friend-2026-401.
April 1st. Got it.
How It Works
The mechanic is surprisingly well-thought-out for an Easter egg:
- Take your
userId(the UUID from OAuth, or"anon"if unauthenticated) - Append the salt
friend-2026-401 - Hash with FNV-1a
- Seed a mulberry32 PRNG from that hash
- Roll your companion deterministically from the seeded RNG
Because it’s deterministic, your buddy is yours. Same user ID, same buddy, every time.
What Gets Generated
Species (18 total): cat, fox, dog, hedgehog, dragon, octopus, owl, penguin, turtle, snail, ghost, axolotl, capybara, cactus, robot, rabbit, mushroom, chonk
Eyes (6 options):
· ✦ × ◉ @ °
Hats (8 options): none, crown, tophat, propeller, halo, wizard, beanie, tinyduck (common rarity always gets “none” — lore reasons, presumably)
Stats (5 total): DEBUGGING, PATIENCE, CHAOS, WISDOM, SNARK
Two stats get boosted or nerfed as your companion’s primary and secondary traits.
Rarity weights:
| Rarity | Chance |
|---|---|
| Common | 60% |
| Uncommon | 25% |
| Rare | 10% |
| Epic | 4% |
| Legendary | 1% |
There’s also a 1% shiny chance stacked on top of rarity. Someone put real thought into this.
The Anon Companion
The default "anon" user — what you’d get if the companion UI were live and you weren’t logged in — rolls an epic robot with @ eyes and a beanie hat, with WISDOM maxed out at 100.
An epic robot with maxed wisdom staring at you with @ eyes while you vibe-code. Anthropic knows their audience.
The UI Is Gated
The companion was meant to appear as a footer panel option alongside “tasks” and “teams.” There’s even a companion_intro system prompt in the bundle, describing a small creature that “occasionally comments in a speech bubble.”
But right now, the config has it hardcoded off:
{ companion: void 0, companionMuted: void 0 }
The screenshot circulating on Twitter — the one that prompted this investigation — appears to be from someone who found the generator logic and ran it manually outside the app. The UI itself isn’t wired up in 2.1.87.
What This Actually Is
This isn’t a security concern or a dark pattern. It’s a well-designed Easter egg from a team that clearly had fun building it.
The deterministic design is the best part. They didn’t want users getting a random creature on every load — they wanted you to have your creature. Same stats, same hat, same species, consistently yours. That’s not throwaway code. Someone cared about making it feel like a real companion even before it shipped.
The friend-2026-401 salt tells you exactly when it was meant to go live. Whether we get the full UI today or in a future version, the foundation is already there.
Go find your buddy.
We found this in cli.js v2.1.87 while doing routine source analysis. We’re not affiliated with Anthropic. If you want to find your own companion before the UI ships, the FNV-1a hash of your userId + friend-2026-401 is all you need to seed the roll.
We’re Tensaku Labs. We build the tools we wish our AI agents had.