BUDDY — companion pet system
BUDDY — companion pet system
Feature flag:
Crate:
Status: Teaser window April 1–7 2026; full launch planned May 2026BUDDY is a Tamagotchi-style companion pet that lives in your terminal alongside the input prompt. Each user gets a deterministic companion — same user always hatches the same species.The seed is derived from your user ID, so the same user always hatches the same buddy.The buddy has its own personality and responds when addressed by name.Key types (
BUDDYCrate:
cc-buddy (crates/buddy)Status: Teaser window April 1–7 2026; full launch planned May 2026BUDDY is a Tamagotchi-style companion pet that lives in your terminal alongside the input prompt. Each user gets a deterministic companion — same user always hatches the same species.
Gacha and PRNG
Species is determined by a Mulberry32 PRNG seeded from youruserId hash with the salt 'friend-2026-401':Species and rarity
18 species across 5 rarity tiers. Rarity determines drop probability; shiny is a separate 1% roll independent of rarity.A shiny Legendary Nebulynx has a 0.01% chance (1% rarity × 1% shiny).
Stats
Each buddy has 5 procedurally generated stats in the range 0–100:Sprites
Sprites are rendered as 5 lines × 12 characters ASCII art with multiple animation frames (idle and reaction). They sit next to the user input prompt.Soul description
On first hatch, Claude generates a short personality description for the buddy — its “soul”. The system prompt tells Claude:Key types (cc-buddy)
KAIROS — always-on assistant
KAIROS — always-on assistant
Feature flags:
Status: Internal only; absent from all external buildsKAIROS is a persistent, always-running Claude assistant that does not wait for user input. It watches, logs, and proactively acts on things it notices.The system has a 15-second blocking budget: any proactive action that would block the user’s workflow for more than 15 seconds is deferred.
PROACTIVE / KAIROSStatus: Internal only; absent from all external buildsKAIROS is a persistent, always-running Claude assistant that does not wait for user input. It watches, logs, and proactively acts on things it notices.
How it works
KAIROS maintains append-only daily log files tracking observations, decisions, and actions throughout the day. On a regular interval it receives<tick> prompts that let it decide whether to act proactively or stay quiet.Brief mode
When KAIROS is active, theBrief output mode produces extremely concise responses — suitable for a persistent assistant that should not flood the terminal.Exclusive tools
KAIROS has access to three tools not available to regular Claude Code sessions:ULTRAPLAN — 30-minute remote planning
ULTRAPLAN — 30-minute remote planning
Status: Internal; gated behind feature configuration
Model: Opus 4.6 (configured via
Model: Opus 4.6 (configured via
tengu_ultraplan_model)ULTRAPLAN offloads a complex planning task to a remote Cloud Container Runtime (CCR) session, gives it up to 30 minutes to think, and lets the user approve the result from a browser.Flow
- Claude Code identifies a task that needs deep planning.
- It spins up a remote CCR session running Opus 4.6.
- The terminal enters a polling state — checking every 3 seconds for the result.
- A browser-based UI lets you watch the planning happen and approve or reject it.
- On approval, the sentinel value
__ULTRAPLAN_TELEPORT_LOCAL__is used to return the result to the local terminal.
The sentinel string
__ULTRAPLAN_TELEPORT_LOCAL__ is how the remote planning result is “teleported” back into the local session. It is never meant to be typed by the user.Undercover Mode — internal identity protection
Undercover Mode — internal identity protection
Activation:
Status: Present in all builds; injected into system prompt when activeUndercover Mode prevents Claude from accidentally revealing Anthropic-internal information in commits and pull requests. It is activated automatically unless the repo remote matches an internal allowlist.
CLAUDE_CODE_UNDERCOVER=1 (explicit) or automatic in public/open-source reposStatus: Present in all builds; injected into system prompt when activeUndercover Mode prevents Claude from accidentally revealing Anthropic-internal information in commits and pull requests. It is activated automatically unless the repo remote matches an internal allowlist.
System prompt injection
When active, the following block is injected into the system prompt:Activation logic
Internal model codenames referenced
The instruction explicitly lists animal names as internal codenames to suppress: Capybara, Tengu, Fennec.Penguin Mode — fast mode
Penguin Mode — fast mode
Internal name: Penguin Mode
User-facing name: Fast mode
Slash command:Penguin Mode is enabled per-organization. The org-level setting is fetched at startup and cached. If the fetch fails, the analytics event
User-facing name: Fast mode
Slash command:
/fastFast mode is internally called “Penguin Mode” throughout the codebase.Configuration keys
Enabling
tengu_org_penguin_mode_fetch_failed is recorded and the mode falls back to standard.System prompt architecture
System prompt architecture
The system prompt is not a single static string. It is assembled at runtime from modular, cached sections.This instruction draws clear lines around authorized security research — permitted actions versus destructive techniques and supply chain compromise.
Structure
Key markers and functions
The naming
DANGEROUS_uncachedSystemPromptSection reflects a hard lesson: adding volatile content to the cached portion of the prompt silently breaks prompt caching for all users. The DANGEROUS_ prefix is a deliberate warning to future engineers.CYBER_RISK_INSTRUCTION
One section of the static prompt carries a mandatory review header:Caching
Static sections are wrapped withCacheControl::ephemeral() via the SystemPrompt::Blocks variant in cc-api. The dynamic boundary ensures only truly volatile content bypasses the cache.Beta API headers
Beta API headers
Claude Code negotiates a set of beta feature headers with the Anthropic API on every request. These are set via the The full list of beta features negotiated (from Not all headers are sent on every request. The
anthropic-beta header in cc-api.The base header constant in cc-core::constants:constants/betas.ts in the original TypeScript source):redact-thinking, afk-mode, and advisor-tool are not yet publicly released at the time of writing.cc-api AnthropicClient selects the appropriate subset based on the request configuration (e.g., thinking enabled, KAIROS mode, etc.).