Claude Buddy is a Tamagotchi-style virtual pet built into Claude Code — Anthropic’s terminal-based AI coding assistant. Launched on April 1, 2026, it assigns each user one of 18 ASCII species across 5 rarity tiers using deterministic FNV-1a hashing of their account ID. The system uses a two-layer “Bones vs Soul” architecture: species, rarity, and stats are recomputed from your hash every session (preventing cheating), while the name and personality are LLM-generated once and stored permanently.
Developer terminals are the most used application environment in software engineering — and historically the most lifeless. Claude Buddy changes that. It’s a fully-featured companion system embedded in Claude Code that watches your coding sessions, reacts through speech bubbles, and maintains a persistent identity tied to your account.
The feature was discovered a day early when Claude Code’s source code leaked through an accidental npm source map on March 31, 2026. Developers found the src/buddy/ directory within hours. On April 1, Anthropic officially launched it in Claude Code v2.1.89.
This isn’t a throwaway April Fools joke. The implementation spans 5 source files (~79KB), includes anti-cheat mechanisms, deterministic generation, LLM personality integration, and graceful terminal degradation. Let’s break down exactly how it works.
How Does Claude Buddy Work? The Bones vs Soul Architecture
Claude Buddy uses a two-layer architecture that separates what’s deterministic (unchangeable) from what’s generative (unique). This design choice is what makes the system both fair and personalized.
The Bones Layer is fully deterministic. Every time you start a Claude Code session, the system takes your account UUID, concatenates it with the salt string friend-2026-401, runs it through FNV-1a hashing (32-bit), and seeds a Mulberry32 PRNG. That pseudorandom number generator then draws your species, rarity tier, shiny status, eye style, hat, and all five stats — in the same order, every time. Same account, same buddy. Always.
The source code makes the anti-cheat intention explicit: bones are never persisted to disk. They’re recomputed from your identity hash on every session load. Even if you edit ~/.claude.json, the bones layer regenerates from scratch. A comment in the leaked source captures it clearly: you can’t edit your way to a legendary.
The Soul Layer is LLM-generated. On your first /buddy invocation, Claude generates a unique name and personality description for your pet. These get stored in ~/.claude.json permanently. The personality text is sent to the buddy_react API on every reaction call, meaning it shapes how your companion responds in speech bubbles throughout your coding sessions.
All 18 species names in the source code are stored as hex-encoded character sequences — for example, Capybara is String.fromCharCode(0x63, 0x61, 0x70, 0x79, 0x62, 0x61, 0x72, 0x61). This was likely an obfuscation choice to make casual source browsing less immediately revealing, though it didn’t survive the leak for long.
The merge order is critical: freshly computed bones always override any stored values. This means the soul gives personality, but the bones enforce fairness. No one can fake a Legendary by editing their config — the rarity gets recalculated from the hash before each session.
What Are the 18 Claude Buddy Species?
Each species has its own ASCII art sprites: 5 lines tall, 12 characters wide, with 3 animation frames for idle fidgeting. Here’s the complete roster:
| Species | Category | Notes |
|---|---|---|
| Duck | Bird | The classic starter companion |
| Goose | Bird | Known for high CHAOS + SNARK combos |
| Cat | Mammal | Most sought-after for rerolls |
| Rabbit | Mammal | Generally high PATIENCE stat |
| Owl | Bird | High WISDOM, constructive feedback |
| Penguin | Bird | Balanced stat distribution |
| Turtle | Reptile | Peak PATIENCE builds |
| Snail | Invertebrate | Slow but steady coding companion |
| Dragon | Mythical | Second most popular reroll target |
| Octopus | Invertebrate | Multi-armed debugger energy |
| Axolotl | Amphibian | Community favorite for aesthetics |
| Ghost | Supernatural | Ethereal ASCII animation style |
| Robot | Mechanical | Meta — an AI pet for an AI tool |
| Blob | Amorphous | Minimalist design |
| Cactus | Plant | Desert-themed, surprisingly expressive |
| Mushroom | Fungus | Unique spore-like animation frames |
| Chonk | Special | Rotund companion, high charm factor |
| Capybara | Mammal | Internal codename for Claude 4.6 variant — Easter egg |
The Capybara species is particularly interesting. Developers quickly noticed that “Capybara” was also the internal codename for a Claude 4.6 model variant discovered in the same leaked source code. Whether this is a deliberate cross-reference or coincidence is unclear, but the community treats it as a meta Easter egg.
How Do the 5 Rarity Tiers Work?
The rarity system follows a gacha-style distribution. Your tier is determined entirely by your account hash — no rerolling, no purchasing, no trading:
| Tier | Probability | Base Stat Floor | Hat Access |
|---|---|---|---|
| Common | 60% | Lowest | None (always hatless) |
| Uncommon | 25% | Low | Random from 8 options |
| Rare | 10% | Medium | Random from 8 options |
| Epic | 4% | High | Random from 8 options |
| Legendary | 1% | Highest | Random from 8 options |
On top of rarity, there’s an independent 1% chance for any buddy to be Shiny. Shiny variants add rainbow shimmer effects and sparkling particle animations to the ASCII art. A Shiny Legendary has a 0.01% natural probability (1% × 1%), making it one of the rarest digital collectibles in any developer tool.
The stat generation formula works like this: each buddy gets one peak stat (ranging from the floor+50 up to 100) and one dump stat (close to 1–15). The remaining three stats scatter randomly above the floor. Higher rarity means a higher floor, so a Legendary buddy will have stronger overall attributes than a Common one — but every buddy has that one weak dump stat.
What Are the 5 Stats and What Do They Do?
Every Claude Buddy has five attributes scored on a 0–100 scale. These don’t affect Claude Code’s AI performance — they shape the companion’s personality and how it reacts in speech bubbles:
DEBUGGING — How attentive your buddy is to errors in your code. High-debugging companions tend to comment when they spot issues.
PATIENCE — How tolerant your buddy is of repetitive tasks, long sessions, or frustrating bugs. Low patience leads to snarky impatience.
CHAOS — The randomness and unpredictability of reactions. A high-CHAOS goose might mock your code quality; a low-CHAOS owl will stay measured.
WISDOM — How constructive and insightful the buddy’s commentary is. High WISDOM produces thoughtful observations; low WISDOM produces simpler reactions.
SNARK — The sarcasm factor. High SNARK means your buddy will roast your variable naming and architecture choices. Combined with high CHAOS, this creates genuinely entertaining (if occasionally harsh) companions.
The interplay between stats creates distinct personality archetypes. A goose with peak CHAOS and peak SNARK becomes an actively hostile code reviewer — in the most entertaining way possible. An owl with peak WISDOM and peak PATIENCE becomes a gentle mentor figure. These combinations emerge naturally from the deterministic hash without any manual curation.
Claude Buddy Stat Archetypes: Personality Combinations
Because the two highest and lowest stats define a buddy’s behaviour, players have catalogued recurring “archetypes” — combinations that produce a recognisable personality. None of these are hard-coded; they are emergent patterns the community named after seeing thousands of buddy cards. The table below maps the most discussed peak/dump stat pairings to the personality they tend to produce.
| Community archetype | Peak stats | Dump stat | How it behaves in the terminal |
|---|---|---|---|
| The Roaster | SNARK + CHAOS | PATIENCE | Mocks variable names and architecture; unpredictable, frequently sarcastic. Most common on Goose. |
| The Mentor | WISDOM + PATIENCE | SNARK | Calm, constructive observations; never piles on. Classic Owl or Turtle build. |
| The Debugger | DEBUGGING + WISDOM | CHAOS | Flags errors quickly with measured, useful commentary. Prized for real workflow value. |
| The Gremlin | CHAOS + SNARK | WISDOM | Pure entertainment, low signal — reacts wildly but rarely helpful. Common on Ghost and Blob. |
| The Stoic | PATIENCE + DEBUGGING | CHAOS | Quiet, rarely interrupts, comments only on real problems. Turtle and Snail favourites. |
| The Wildcard | CHAOS (single peak) | varies | One dominant stat with everything else mid-range; reactions feel random session to session. |
Remember that stats are drawn from the bones layer, so your archetype is fixed to your account hash. You cannot train, level, or rebalance a buddy through normal use — the only way to change an archetype is to change the identity seed (see the reroll section below), which the system actively resists.
Claude Buddy Cosmetics: Hats, Eyes and Shiny Variants
Beyond species and rarity, every buddy carries three cosmetic layers that are also drawn from the bones hash: eye style, hat, and shiny status. These are what make two buddies of the same species and rarity still look different.
Eyes. The renderer draws from six eye styles (dot, wide, sleepy, sparkle, angry, and closed/content). Eye style is purely visual but is the most frequently rolled cosmetic, so it is the main source of variation between otherwise identical Common buddies.
Hats. Hats are gated by rarity. Common buddies are always hatless — the absence of a hat is itself a visual tell that a buddy is Common. Uncommon and above draw one hat at random from eight options:
| Hat | Visual | Rarity access |
|---|---|---|
| (none) | Bare sprite | Common only |
| Top hat | Tall ASCII brim | Uncommon+ |
| Cap | Backwards-cap style | Uncommon+ |
| Crown | Pointed crown glyphs | Uncommon+ |
| Beanie | Rounded knit cap | Uncommon+ |
| Party hat | Cone with marker | Uncommon+ |
| Halo | Floating ring above head | Uncommon+ |
| Wizard hat | Star-tipped point | Uncommon+ |
| Headphones | Side cups over ears | Uncommon+ |
Shiny. Independently of rarity, every buddy rolls a flat 1% chance to be Shiny. Shiny buddies gain a rainbow shimmer and sparkling particle effects layered over their ASCII sprite. Shiny is orthogonal to rarity, so a Shiny Common is possible — and arguably more interesting to collectors than a plain Legendary, because the shimmer is instantly visible while rarity is not.
How Many Claude Buddies Are There? All 7,128 Combinations
Anthropic’s source code defines a combination space of 7,128 unique buddies. That figure is not arbitrary — it is the exact product of the bones-layer draws, and it decomposes cleanly:
| Dimension | Options | Note |
|---|---|---|
| Species | 18 | Duck through Capybara |
| Eye styles | 6 | dot, wide, sleepy, sparkle, angry, closed |
| Hats (summed across rarity) | 33 | Common 1 (none) + four tiers × 8 hats = 33 |
| Shiny layer | ×2 | shiny or not |
Multiply them and the rarity gating falls out automatically: 18 × 6 × 33 × 2 = 7,128. The reason hats are summed rather than multiplied by a flat “5 rarities” is that Common has exactly one hat state (none) while the four higher tiers each have eight — so the rarity dimension is folded into the hat term (1 + 8 + 8 + 8 + 8 = 33). This is why “5 rarities × 18 species” alone (90) badly undercounts the real space: cosmetics carry most of the variety.
A 7,128-state space puts Claude Buddy closer to a collectible system than a prank. For comparison, the original 151 Pokémon had no per-individual cosmetic layer at all. Buddy’s deterministic generation means these 7,128 states are distributed across the entire Claude Code user base by account hash — you can’t roll for them, which is exactly what drives the reroll community covered below.
What Is the Rarest Claude Buddy? Full Probability Breakdown
The short answer: a Shiny Legendary is the rarest broad category, at a natural probability of 0.01% (1% Legendary × 1% Shiny) — roughly 1 in 10,000 accounts. But “rarest” depends on how specific you get. Here is the full ladder, from common to vanishingly rare:
| Configuration | Probability | Expected per 100,000 accounts |
|---|---|---|
| Any Common | 60% | 60,000 |
| Any Legendary | 1% | 1,000 |
| Any Shiny (any rarity) | 1% | 1,000 |
| Shiny Legendary | 0.01% | 10 |
| Shiny Legendary, specific species | ~0.00056% | ~0.56 |
| Shiny Legendary, specific species + hat + eyes | ~0.000012% | ~0.012 |
The last row is the true “rarest single buddy”: a fully specified Shiny Legendary of one chosen species, with one specific hat and one specific eye style. Assuming a uniform 1/18 species draw, 1/8 hat, and 1/6 eyes, the math is 0.0001 (shiny legendary) × (1/18) × (1/8) × (1/6) ≈ 1.16 × 10⁻⁷ — about one in 8.6 million accounts. With Claude Code’s user base in the low millions, several of the 7,128 exact configurations may not exist on a single real account anywhere. That scarcity is precisely what the reroll tools were built to manufacture.
Rarity raises a buddy’s stat floor, but every buddy — Legendary included — still gets one near-zero dump stat. A Legendary is not strictly more useful than a Common; it simply starts higher and unlocks hats. Collectors chase Shiny Legendaries for prestige, not for terminal utility.
How to Enable Claude Buddy: Commands and Interaction
Enabling your buddy requires Claude Code version 2.1.89 or later and a Pro subscription. Free-tier users don’t have access. Here are the available commands:
/buddy # Hatch your companion (first use triggers hatching animation)
/buddy card # View your buddy's full stat card — species, rarity, all 5 stats
/buddy pet # Trigger a floating hearts animation
/buddy mute # Hide speech bubbles (buddy stays visible)
/buddy off # Dismiss buddy entirely for the session
Beyond commands, your buddy operates passively throughout your coding session. It sits in a speech bubble next to your input box, observes your conversation with Claude in real-time, and generates contextual reactions (approximately every 10 seconds). You can also address it directly by name — say the buddy’s name in your prompt and it will respond based on its personality profile.
How to Read Your Claude Buddy Card
The /buddy card command prints the full identity sheet. Reading it correctly tells you everything about your buddy at a glance:
- Name — the LLM-generated soul-layer name, stored once and permanent.
- Species + rarity — for example “Legendary Axolotl”. Rarity is colour-coded in the terminal (Legendary uses a distinct highlight).
- Shiny marker — a sparkle glyph next to the name if your buddy rolled the 1% shiny layer.
- Five stat bars — DEBUGGING, PATIENCE, CHAOS, WISDOM, SNARK, each 0–100. The single highest bar is your peak stat; the lowest is your dump stat.
- Cosmetics line — eye style and hat (or “hatless” for Common).
Because the card is rendered from the bones layer, running /buddy card on a different machine logged into the same account shows an identical card. That is the deterministic guarantee in action — your buddy travels with your account, not your device.
The personality field in ~/.claude.json can be edited to change your buddy’s language and communication style. Developers have configured buddies to respond in Cantonese, Japanese, and other languages by appending instructions like “Must always respond in [language]” to the personality string. Since the personality is part of the soul layer (stored, not recomputed), changes persist across sessions.
Why Did the Buddy Leak Before Launch?
Claude Buddy was intended as a surprise for April 1, 2026. The source code shows a planned teaser window of April 1–7, with a full rollout targeted for May 2026 starting with Anthropic employees.
That timeline collapsed on March 31 when security researcher Chaofan Shou discovered that Claude Code v2.1.88 had shipped with a 59.8 MB source map file in the npm package. A missing .npmignore entry meant the build process included the complete source map — including the src/buddy/ directory — in the published package. Within hours, the entire codebase was mirrored on GitHub.
The irony is notable: Claude Code includes an internal system called Undercover Mode specifically designed to prevent internal codenames from leaking through AI-generated content. They built AI-powered leak prevention into the product, and then humans accidentally shipped the entire source.
Some in the developer community have questioned whether the timing was truly accidental. The leak occurred the day before April 1, Buddy had an April 1–7 rollout coded into the source, and the “accident” generated massive positive press that overshadowed the negative sentiment from Anthropic’s legal threats against OpenCode ten days earlier. Whether strategic or genuine error, the net effect was that developers went from criticizing Anthropic to being genuinely excited about what they were building.
Anthropic’s response was straightforward: no customer data was involved, it was a packaging error caused by human error, and the feature was launched officially the next day. The community was already cataloging species and building tools before the official launch even happened.
The Reroll Community: Hacking Deterministic Generation
Within 48 hours of the leak, developers had reverse-engineered the generation algorithm and built tools to brute-force custom buddies. The approach exploits a specific technical detail: while the hash algorithm is fixed, the identity string that seeds it can be manipulated.
The process works by generating thousands of candidate user IDs, running each through the FNV-1a + Mulberry32 pipeline, and checking if the output matches a target species and rarity. When a matching ID is found, it gets written to ~/.claude.json as the userID field.
If you’re on a Team or Pro plan, your config includes an oauthAccount.accountUuid that takes priority over userID in the identity resolution chain. Simply setting a new userID won’t work — the accountUuid must be removed from the config first. However, any forced re-login (token expiry, update) will restore the real accountUuid and revert your buddy to its original form.
Multiple open-source tools have emerged: claude-code-buddy-reroll provides brute-force scripts with verification, any-buddy offers an interactive species picker with binary patching, and buddy-card generates holographic card images. A web gallery at claude-buddy.vercel.app lets users browse all 18 species, rarity tiers, and cosmetic combinations online.
| Community tool | What it does | Method |
|---|---|---|
| claude-code-buddy-reroll | Brute-forces identity seeds until it finds a target species/rarity, then writes it to config | Hash search + verification |
| any-buddy | Interactive picker — choose a species and it patches your install to match | Binary patching |
| buddy-card | Renders a shareable holographic card image of any buddy | Image generation |
| claude-buddy.vercel.app | Web gallery to browse all 18 species, rarities, hats and eyes without installing anything | Reference site |
Rerolling means editing the identity Claude Code uses for your account. Three things go wrong most often: (1) leaving oauthAccount.accountUuid in the config, which overrides your new userID; (2) using FNV-1a tools when Claude Code actually hashes with Bun’s wyhash, producing mismatched results; and (3) a forced re-login restoring your real account ID and reverting the buddy. None of this damages your account, but it can silently undo a reroll. Treat it as cosmetic tinkering, not a permanent change.
There’s a technical nuance that caught many early reroll attempts: Claude Code runs on Bun (not Node.js), and Bun uses a different hash function (Bun.hash() / wyhash) than the FNV-1a that most community tools initially implemented. Tools using FNV-1a produce different results than the actual runtime. The most reliable reroll tools now use Bun’s native hashing to match Claude Code’s real behavior.
Claude Buddy in the Context of the Larger Leak
Buddy wasn’t the only feature discovered in the leaked source. It emerged alongside several other unreleased systems: KAIROS (an always-on persistent AI agent with dreaming capabilities), ULTRAPLAN (30-minute remote planning sessions), Coordinator Mode (multi-agent orchestration), and Auto Mode (AI classifier for automatic tool permission approval). Together, these features reveal a roadmap for Claude Code that extends far beyond a simple coding assistant.
What makes Buddy architecturally interesting from an AI agent design perspective is the separation of deterministic identity (bones) from generative personality (soul). This pattern — using cryptographic hashing for fairness while layering LLM generation for uniqueness — could be applied to any system that needs both consistency and personalization. It’s a lightweight template for building AI features that feel personal without being exploitable.
The developer experience argument is substantive. Claude Code users spend hours in terminal sessions. The tool already includes vim mode, keyboard shortcuts, and context engineering features that go beyond raw AI capability. A companion system is a natural extension of that philosophy — turning a productivity tool into something that has retention stickiness.
What Comes Next for Claude Buddy?
The community is already pushing for expansion. GitHub issues requesting RPG evolution tied to token consumption, species customization, cosmetic shops, and XP systems appeared within hours of the leak. Someone even launched a Solana memecoin based on the Buddy concept (which says more about crypto culture than about the feature itself).
Whether Anthropic expands the system or keeps it as a contained Easter egg will depend on its impact on retention metrics. The production-quality implementation (anti-cheat architecture, LLM personality integration, graceful degradation on narrow terminals) suggests this was always meant to be more than a one-day joke. A feature with 7,128 unique combinations across species, rarity, eyes, hats, and shiny status has more in common with a collectible system than a prank.
For developers building AI tools, the key lesson isn’t about pets — it’s about developer experience as a competitive moat. In a market where the underlying LLM is increasingly available to any well-funded competitor, how you build around the model determines retention. Claude Buddy is Anthropic’s bet that emotional attachment to a persistent companion can be a legitimate feature — not just a gimmick.
Claude Buddy Timeline: From Leak to Community Phenomenon
The entire arc — from accidental leak to a thriving reroll ecosystem — played out in under two weeks. The dated sequence:
| Date (2026) | Event |
|---|---|
| March 21 | Anthropic sends legal threats to the OpenCode project, generating negative developer sentiment. |
| March 31 | Claude Code v2.1.88 ships with a 59.8 MB source map; researcher Chaofan Shou spots the missing .npmignore. The src/buddy/ directory is found within hours. |
| April 1 | Anthropic officially launches Claude Buddy in Claude Code v2.1.89. The “leak” reframes the narrative from legal threats to genuine excitement. |
| April 1–3 | Community reverse-engineers the FNV-1a + Mulberry32 pipeline; first reroll scripts appear. |
| April 3–8 | Peak search interest — the buddy explainer becomes one of the highest-traffic developer-tool pages of the quarter. |
| By April 12 | Web galleries, card generators and species pickers are live; the Bun/wyhash vs FNV-1a discrepancy is documented. |
Claude Buddy vs Other Terminal Companions
Virtual pets in developer tools are not new — but Claude Buddy is the first built into a mainstream AI coding assistant with a deterministic, account-bound identity. A quick comparison:
| Companion | Where it lives | Identity model | Reacts to your work? |
|---|---|---|---|
| Claude Buddy | Claude Code (terminal) | Deterministic, account-hash bound; 7,128 states | Yes — LLM reactions every ~10s |
| oneko / neko | Desktop / web cursor chaser | None — single sprite | No |
| Tamagotchi-style CLI pets | Standalone terminal apps | Local save file, editable | No — needs manual feeding |
| GitHub Copilot | Editor | No persona | Code suggestions, no companion layer |
The differentiator is the combination of persistence (your buddy is the same across machines), fairness (you can’t buy or trivially edit a Legendary), and live reaction (it comments on your actual session). That triad is what turns a novelty into a retention feature.
Claude Buddy Glossary
- Bones — the deterministic layer: species, rarity, stats, eyes, hat, shiny. Recomputed from your account hash every session; cannot be edited.
- Soul — the generative layer: name and personality, LLM-created once and stored in
~/.claude.json. - FNV-1a — the 32-bit hash function that turns your account ID + salt into a seed. (Note: the live runtime uses Bun’s wyhash, which trips up FNV-1a-based reroll tools.)
- Mulberry32 — the seeded PRNG that draws every bones attribute in a fixed order.
- Shiny — an independent 1% cosmetic layer adding rainbow shimmer; orthogonal to rarity.
- Reroll — brute-forcing a new identity seed to obtain a desired species/rarity.
- accountUuid — the OAuth account identifier that overrides a manually set
userID, the most common reason rerolls silently fail. - Dump stat — the deliberately low (1–15) attribute every buddy has, regardless of rarity.
FAQ
How do I enable Claude Buddy?
/buddy in your Claude Code terminal to hatch your companion for the first time. Free-tier users don’t have access to the feature.Can I change my Claude Buddy species?
What is the rarest Claude Buddy?
What are the Claude Buddy stats used for?
Is Claude Buddy a permanent feature or just an April Fools joke?
What is the “Bones vs Soul” architecture?
Can I make my Claude Buddy speak a different language?
~/.claude.json and append a language instruction like “Must always respond in Japanese.” Since the personality is part of the soul layer (stored, not recomputed), the change persists across sessions and affects all speech bubble reactions.How many Claude Buddies are there in total?
What are all 18 Claude Buddy species?
What hats can a Claude Buddy wear?
Bibliography
Anthropic. (2026). Claude Code Documentation. Anthropic Docs. https://docs.anthropic.com/en/docs/claude-code
Anthropic. (2026). Claude Code npm Package. npm Registry. https://www.npmjs.com/package/@anthropic-ai/claude-code
Fowler, G., Noll, L., & Vo, K. (2026). FNV-1a Hash Function Specification. Wikipedia. https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function
Ettinger, T. (2026). Mulberry32 PRNG Reference Implementation. GitHub Gist. https://gist.github.com/tommyettinger/46a874533244883189143505d203312c
CNBC. (2026, March 31). Anthropic Claude Code Source Code Leaked. CNBC. https://www.cnbc.com/2026/03/31/anthropic-claude-code-source-code-leaked.html
Anthropic. (2026). Official Statement on Claude Code Source Leak. CNBC (reported). https://www.cnbc.com/2026/03/31/anthropic-claude-code-source-code-leaked.html
Oven (Bun). (2026). Bun.hash / wyhash Documentation. Bun Docs. https://bun.sh/docs/api/hashing
Claude Buddy community. (2026). Claude Buddy Gallery & Reroll Tooling. Community reference (claude-buddy.vercel.app, claude-code-buddy-reroll, any-buddy). Treated as community-reported, not official Anthropic documentation.
