Reverse Engineering Claude Code's April Fools

variety.is · sync · 12 days ago · view on HN · research
quality 7/10 · good
0 net
Reverse Engineering Claude Code's 2026 April Fools • variety.is skip to content Reverse Engineering Claude Code's 2026 April Fools 31 March 2026 / 2 min read View more blogs with the tag ai , View more blogs with the tag claude code , View more blogs with the tag easter eggs Table of Contents When Claude Code first came out there was a little easter egg discoverable by looking through the source on release day: if you asked about swag, a Google Form would pop up. The Claude Code team actually hand-packed the mailers for the first 1k folks . Claude Code’s source code was leaked which leads to another easter egg, their April Fools joke this year: a “tamagotchi”-style buddy strangely reminiscent of Figma’s April Fools in 2025, FigPals . Thanks to the source leak, we can reverse engineer how the buddy system works. Let’s hunt some pokemon buddies: The Buddy System Buddies are broken down by rarity, species, eye, hat, shiny, and stats: Hat none , crown , tophat , propeller , halo , wizard , beanie , tinyduck Species duck , goose , blob , cat , dragon , octopus , owl , penguin , turtle , snail , ghost , axolotl , capybara , cactus , robot , rabbit , mushroom , chonk Eyes · , ✦ , × , ◉ , @ , ° Shiny true , false Stats debugging , patience , chaos , wisdom , snark Rarity common , uncommon , rare , epic , legendary Stats and shiny appear to be dead code, rolled but never consumed. Here’s what they all actually look like: Species Eyes Hats Rarity Stats Shiny 18 species, each with unique ASCII art and 3 animation frames. Purely cosmetic: species doesn’t affect stats. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ duck The OG. Subtle tail wag. (·> || _(__)_ ^^^^ (·> || _(__)_ ^^^^ (·>> || _(__)_ ^^^^ goose Long neck, menacing energy. .----. ( · · ) ( ) `----´ .------. ( · · ) ( ) `------´ .--. (· ·) ( ) `--´ blob Breathes (expands/contracts). /\_/\ ( · ·) ( ω ) (")_(") /\_/\ ( · ·) ( ω ) (")_(")~ /\-/\ ( · ·) ( ω ) (")_(") cat ω mouth. Tail flick on frame 2. /^\ /^\ < · · > ( ~~ ) `-vvvv-´ /^\ /^\ < · · > ( ) `-vvvv-´ ~ ~ /^\ /^\ < · · > ( ~~ ) `-vvvv-´ dragon Smoke puffs on frame 3. .----. ( · · ) (______) /\/\/\/\ .----. ( · · ) (______) \/\/\/\/ o .----. ( · · ) (______) /\/\/\/\ octopus Tentacles alternate. Ink bubble on frame 3. /\ /\ ((·)(·)) ( >< ) `----´ /\ /\ ((·)(·)) ( >< ) .----. /\ /\ ((·)(-)) ( >< ) `----´ owl Winks on frame 3. Feet shuffle. .---. (·>·) /( )\ `---´ .---. (·>·) |( )| `---´ .---. (·>·) /( )\ `---´ ~ ~ penguin Flippers alternate. Hops on frame 3. _,--._ ( · · ) /[______]\ `` `` _,--._ ( · · ) /[______]\ `` `` _,--._ ( · · ) /[======]\ `` `` turtle Shell pattern changes on frame 3. · .--. \ ( @ ) \_`--´ ~~~~~~~ · .--. | ( @ ) \_`--´ ~~~~~~~ · .--. \ ( @ ) \_`--´ ~~~~~~ snail Eyestalk sways. Single eye species. .----. / · · \ | | ~`~``~`~ .----. / · · \ | | `~`~~`~` ~ ~ .----. / · · \ | | ~~`~~`~~ ghost Bottom edge ripples. Floats up on frame 3. }~(______)~{ }~(· .. ·)~{ ( .--. ) (_/ \_) ~}(______){~ ~}(· .. ·){~ ( .--. ) (_/ \_) }~(______)~{ }~(· .. ·)~{ ( -- ) ~_/ \_~ axolotl Gills wave in alternating directions. n______n ( · · ) ( oo ) `------´ n______n ( · · ) ( Oo ) `------´ ~ ~ u______n ( · · ) ( oo ) `------´ capybara Calm. Occasional nostril twitch. n ____ n | |· ·| | |_| |_| | | ____ n |· ·| n |_| |_| | | n n | ____ | | |· ·| | |_| |_| | | cactus Arms move up and down between frames. .[||]. [ · · ] [ ==== ] `------´ .[||]. [ · · ] [ -==- ] `------´ * .[||]. [ · · ] [ ==== ] `------´ robot Antenna blinks. Mouth pattern shifts. (\__/) ( · · ) =( .. )= (")__(") (|__/) ( · · ) =( .. )= (")__(") (\__/) ( · · ) =( . . )= (")__(") rabbit Ear droops on frame 2. Nose wiggles. .-o-OO-o-. (__________) |· ·| |____| .-O-oo-O-. (__________) |· ·| |____| . o . .-o-OO-o-. (__________) |· ·| |____| mushroom Cap spots shift. Spores on frame 3. /\ /\ ( · · ) ( .. ) `------´ /\ /| ( · · ) ( .. ) `------´ /\ /\ ( · · ) ( .. ) `------´~ chonk Ear flick on frame 2. Tail wag on frame 3. 6 eye styles. Applied via {E} placeholder substitution in the sprite template. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ · Default. Minimal, calm. __ <(✦ )___ ( ._> `--´ __ <(✦ )___ ( ._> `--´~ __ <(✦ )___ ( .__> `--´ ✦ Sparkly. Excited energy. __ <(× )___ ( ._> `--´ __ <(× )___ ( ._> `--´~ __ <(× )___ ( .__> `--´ × Dizzy or mischievous. __ <(◉ )___ ( ._> `--´ __ <(◉ )___ ( ._> `--´~ __ <(◉ )___ ( .__> `--´ ◉ Wide-eyed. Alert. __ <(@ )___ ( ._> `--´ __ <(@ )___ ( ._> `--´~ __ <(@ )___ ( .__> `--´ @ Digital. Robotic feel. __ <(° )___ ( ._> `--´ __ <(° )___ ( ._> `--´~ __ <(° )___ ( .__> `--´ ° Surprised. Hollow stare. 8 hats. Commons always get “none”. Other rarities roll from the full set. Hat replaces the blank top line of the sprite. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ none Common rarity always gets this. \^^^/ __ <(· )___ ( ._> `--´ \^^^/ __ <(· )___ ( ._> `--´~ \^^^/ __ <(· )___ ( .__> `--´ crown \^^^/ — Regal. [___] __ <(· )___ ( ._> `--´ [___] __ <(· )___ ( ._> `--´~ [___] __ <(· )___ ( .__> `--´ tophat [___] — Classy. -+- __ <(· )___ ( ._> `--´ -+- __ <(· )___ ( ._> `--´~ -+- __ <(· )___ ( .__> `--´ propeller -+- — Playful. ( ) __ <(· )___ ( ._> `--´ ( ) __ <(· )___ ( ._> `--´~ ( ) __ <(· )___ ( .__> `--´ halo ( ) — Angelic. /^\ __ <(· )___ ( ._> `--´ /^\ __ <(· )___ ( ._> `--´~ /^\ __ <(· )___ ( .__> `--´ wizard /^\ — Magical. (___) __ <(· )___ ( ._> `--´ (___) __ <(· )___ ( ._> `--´~ (___) __ <(· )___ ( .__> `--´ beanie (___) — Cozy. ,> __ <(· )___ ( ._> `--´ ,> __ <(· )___ ( ._> `--´~ ,> __ <(· )___ ( .__> `--´ tinyduck ,> — A duck on your head. Rarity sets the stat floor and determines if hats are possible. Commons never get hats; all other rarities can. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ common Floor: 5. No hat. Peak stat: 55–84. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ uncommon Floor: 15. Hat possible. Peak: 65–94. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ rare Floor: 25. Hat possible. Peak: 75–100. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ epic Floor: 35. Hat possible. Peak: 85–100. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ legendary Floor: 50. Hat possible. Peak: 100. 5 stats are rolled but currently unused: as far as I can tell they don’t affect behavior, visuals, or prompts. Pure bragging rights, like Pokemon IVs that don’t affect battle. Each buddy gets one peak stat and one dump stat. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ DEBUGGING Peak: floor+50 to floor+79. Dump: floor-10 to floor+4. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ PATIENCE Same formula. Just a different slot in the array. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ CHAOS Same formula. The stat names are flavor only. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ WISDOM Same formula. No stat affects any behavior. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ SNARK Same formula. All five stats are cosmetic. 1% chance, independent of rarity. Like stats, shiny is currently dead code, rolled and stored but never read. No visual difference, no behavior change. A shiny legendary is the rarest possible roll: 0.01% chance. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ normal Default. No visual difference from shiny. __ <(· )___ ( ._> `--´ __ <(· )___ ( ._> `--´~ __ <(· )___ ( .__> `--´ shiny Flagged but unused. Maybe someday… Your buddy is determined strictly by your userId and a fixed SALT : export function companionUserId () : string { const config = getGlobalConfig (); return config.oauthAccount?.accountUuid ?? config.userID ?? " anon " ; } export function roll ( userId : string ) : Roll { const key = userId + SALT ; if (rollCache?.key === key) return rollCache.value; const value = rollFrom ( mulberry32 ( hashString (key))); rollCache = { key, value }; return value; } Notice mulberry32 being used: a 32-bit deterministic pseudo-random number generator. It is not cryptographically secure, but the source indicates it is “good enough for picking ducks”. Because it operates in a 32-bit space, there are exactly 2^32 (about 4.29 billion) possible PRNG states, which is trivial for a modern CPU to brute force in seconds. Calling rollFrom in a a simple loop to iterate from 0 to 2^32, you can determine seeds that result in legendaries. There’s 42,989,564 possible legendaries, which means a 1% chance of your userId being legendary. ”God” Rolls Brute-forcing all 2^32 seeds and filtering for legendary + shiny + at least one stat at 100, here are the top 20 god-roll UUIDs. Can you “fake” your config.oauthAccount?.accountUuid / config.userID in ~/.claude.json to one of these values to achieve these buddies? We’ll find out when the buddy system is actually released tomorrow! ( ) /\ /\ ((@)(@)) ( >< ) `----´ ( ) /\ /\ ((@)(@)) ( >< ) .----. ( ) /\ /\ ((@)(-)) ( >< ) `----´ owl + halo ✦ shiny ☠☠☠☠☠#1 debugging 86 patience 51 chaos 80 wisdom 71 snark 100 UUID: 3f6c5f24-86f4-4131-b02b-d8f1dd1c36b8 \^^^/ _,--._ ( @ @ ) /[______]\ `` `` \^^^/ _,--._ ( @ @ ) /[______]\ `` `` \^^^/ _,--._ ( @ @ ) /[======]\ `` `` turtle + crown ✦ shiny ☠☠☠☠☠#2 debugging 89 patience 74 chaos 76 wisdom 45 snark 100 UUID: 575d0192-5eec-4c6c-829c-c2ea74e52d5e (___) (°> || _(__)_ ^^^^ (___) (°> || _(__)_ ^^^^ (___) (°>> || _(__)_ ^^^^ goose + beanie ✦ shiny ☠☠☠☠☠#3 debugging 100 patience 67 chaos 41 wisdom 88 snark 84 UUID: 41c9d643-7b7f-49c5-b23d-d07700448db9 .----. ( × × ) (______) /\/\/\/\ .----. ( × × ) (______) \/\/\/\/ o .----. ( × × ) (______) /\/\/\/\ octopus ✦ shiny ☠☠☠☠☠#4 debugging 60 patience 45 chaos 100 wisdom 88 snark 79 UUID: c104cad9-b477-4794-9a72-0dcc528ec4a4 /^\ __ <(◉ )___ ( ._> `--´ /^\ __ <(◉ )___ ( ._> `--´~ /^\ __ <(◉ )___ ( .__> `--´ duck + wizard ✦ shiny ☠☠☠☠☠#5 debugging 88 patience 61 chaos 100 wisdom 68 snark 50 UUID: 4b9afb15-f776-4005-a5ea-81c4f0f5f340 /^\ (✦> || _(__)_ ^^^^ /^\ (✦> || _(__)_ ^^^^ /^\ (✦>> || _(__)_ ^^^^ goose + wizard ✦ shiny ☠☠☠☠☠#6 debugging 65 patience 83 chaos 69 wisdom 49 snark 100 UUID: 6b904e07-fd14-44dd-b0bd-861bf40a7c0c .-o-OO-o-. (__________) |✦ ✦| |____| .-O-oo-O-. (__________) |✦ ✦| |____| . o . .-o-OO-o-. (__________) |✦ ✦| |____| mushroom ✦ shiny ☠☠☠☠☠#7 debugging 100 patience 69 chaos 46 wisdom 67 snark 84 UUID: 9664a3ac-6d0a-4d87-aa3d-c0dce6482cca .----. ( ◉ ◉ ) (______) /\/\/\/\ .----. ( ◉ ◉ ) (______) \/\/\/\/ o .----. ( ◉ ◉ ) (______) /\/\/\/\ octopus ✦ shiny ☠☠☠☠☠#8 debugging 59 patience 100 chaos 66 wisdom 53 snark 86 UUID: 6a1f0a5f-6a6c-4a68-bad3-c7eab61970da /^\ .----. / ◉ ◉ \ | | ~`~``~`~ /^\ .----. / ◉ ◉ \ | | `~`~~`~` ~ ~ .----. / ◉ ◉ \ | | ~~`~~`~~ ghost + wizard ✦ shiny ☠☠☠☠☠#9 debugging 70 patience 58 chaos 100 wisdom 89 snark 46 UUID: 016ad3f9-f7d3-4cb6-a5ef-57d432c8c13d -+- .----. / ◉ ◉ \ | | ~`~``~`~ -+- .----. / ◉ ◉ \ | | `~`~~`~` ~ ~ .----. / ◉ ◉ \ | | ~~`~~`~~ ghost + propeller ✦ shiny ☠☠☠☠☠#10 debugging 66 patience 61 chaos 86 wisdom 100 snark 45 UUID: a3a4eac6-edb8-408b-900e-57b120b19ac4 (___) (@> || _(__)_ ^^^^ (___) (@> || _(__)_ ^^^^ (___) (@>> || _(__)_ ^^^^ goose + beanie ✦ shiny ☠☠☠☠☠#11 debugging 59 patience 63 chaos 100 wisdom 89 snark 46 UUID: c43e33a6-b046-4979-a168-544f982af407 .-o-OO-o-. (__________) |· ·| |____| .-O-oo-O-. (__________) |· ·| |____| . o . .-o-OO-o-. (__________) |· ·| |____| mushroom ✦ shiny ☠☠☠☠☠#12 debugging 52 patience 79 chaos 78 wisdom 43 snark 100 UUID: d42f15ca-45b5-40e0-8e67-9de505c2f94e \^^^/ n______n ( ◉ ◉ ) ( oo ) `------´ \^^^/ n______n ( ◉ ◉ ) ( Oo ) `------´ ~ ~ u______n ( ◉ ◉ ) ( oo ) `------´ capybara + crown ✦ shiny ☠☠☠☠☠#13 debugging 59 patience 57 chaos 83 wisdom 52 snark 100 UUID: 94f690ee-1057-4aa8-830f-a40ba0a128f8 ( ) _,--._ ( × × ) /[______]\ `` `` ( ) _,--._ ( × × ) /[______]\ `` `` ( ) _,--._ ( × × ) /[======]\ `` `` turtle + halo ✦ shiny ☠☠☠☠☠#14 debugging 85 patience 100 chaos 53 wisdom 66 snark 43 UUID: d79ecfd9-ab22-403b-b06e-88d3b01c6294 ,> .---. (·>·) /( )\ `---´ ,> .---. (·>·) |( )| `---´ .---. (·>·) /( )\ `---´ ~ ~ penguin + tinyduck ✦ shiny ☠☠☠☠☠#15 debugging 50 patience 100 chaos 78 wisdom 47 snark 71 UUID: 417effc7-a0d2-4038-af88-98b01e6d67b0 /^\ n______n ( × × ) ( oo ) `------´ /^\ n______n ( × × ) ( Oo ) `------´ ~ ~ u______n ( × × ) ( oo ) `------´ capybara + wizard ✦ shiny ☠☠☠☠☠#16 debugging 55 patience 100 chaos 72 wisdom 44 snark 69 UUID: bf9c3bee-5aca-44c2-8ccf-ecca27941f8f ( ) /\_/\ ( ✦ ✦) ( ω ) (")_(") ( ) /\_/\ ( ✦ ✦) ( ω ) (")_(")~ ( ) /\-/\ ( ✦ ✦) ( ω ) (")_(") cat + halo ✦ shiny ☠☠☠☠☠#17 debugging 100 patience 78 chaos 61 wisdom 50 snark 51 UUID: a7b74b5d-383b-4692-9ce8-39ab9c82425e [___] × .--. \ ( @ ) \_`--´ ~~~~~~~ [___] × .--. | ( @ ) \_`--´ ~~~~~~~ [___] × .--. \ ( @ ) \_`--´ ~~~~~~ snail + tophat ✦ shiny ☠☠☠☠☠#18 debugging 73 patience 50 chaos 65 wisdom 100 snark 48 UUID: 27a3c548-ba4f-40b1-8492-44b11160989d /^\ .[||]. [ × × ] [ ==== ] `------´ /^\ .[||]. [ × × ] [ -==- ] `------´ * .[||]. [ × × ] [ ==== ] `------´ robot + wizard ✦ shiny ☠☠☠☠☠#19 debugging 74 patience 53 chaos 100 wisdom 45 snark 62 UUID: 4fa7dba3-e562-4e1f-a79e-d73c46e928fc [___] _,--._ ( ✦ ✦ ) /[______]\ `` `` [___] _,--._ ( ✦ ✦ ) /[______]\ `` `` [___] _,--._ ( ✦ ✦ ) /[======]\ `` `` turtle + tophat ✦ shiny ☠☠☠☠☠#20 debugging 53 patience 51 chaos 100 wisdom 52 snark 58 UUID: 40c3e579-c951-404c-b423-9103a05f2313 Back to top