Skip to main content
This page contains research findings derived from decompiled source code of @anthropic-ai/claude-code v2.1.88. It is intended for educational and research purposes only. All source code is the intellectual property of Anthropic.

Model Codename System

Anthropic uses animal names as internal model codenames. The build system actively prevents these names from appearing in published artifacts.

Known Codenames

Codename Protection

The undercover mode lists explicitly protected terms:
The build pipeline scans compiled output for leaked codenames via scripts/excluded-strings.txt. To avoid triggering the canary, the buddy system pet species “capybara” is constructed at runtime using String.fromCharCode():

Capybara v8 Known Behavioral Issues

The source code documents specific bugs in the current Capybara (Sonnet) v8 model that required workarounds:
Occurs when <functions> appears at the prompt tail. Dedicated mitigation exists in the agent loop.Source: src/utils/messages.ts:2141
An empty tool_result message causes the model to produce no response. Handled in storage layer.Source: src/utils/toolResultStorage.ts:281
v8 adds excessive inline comments to generated code. Requires a dedicated anti-comment prompt patch.Source: src/constants/prompts.ts:204
v8 has a 29–30% false-claims rate compared to v4’s 16.7%. Internal users receive a dedicated mitigation prompt.Source: src/constants/prompts.ts:237
v8 under-verifies its own outputs. Internal builds add a “thoroughness counterweight” to the system prompt.Source: src/constants/prompts.ts:210

Feature Flag Naming Convention

All feature flags use the tengu_ prefix followed by random word pairs (adjective/material + nature/object). This pattern is intentional — it prevents external observers from inferring the feature’s purpose from the flag name alone.
Source: src/services/analytics/, src/utils/, src/voice/

Internal vs. External User Differences

Anthropic employees (USER_TYPE === 'ant') receive materially different model behavior, prompt quality, and tool access compared to external users. This disparity is hardcoded in the source.

Prompt Differences

Source: src/constants/prompts.ts

Tool Access

Internal users have access to tools unavailable externally:
  • REPLTool — Interactive REPL mode (VM sandbox)
  • SuggestBackgroundPRTool — Background PR suggestions
  • TungstenTool — Performance monitoring panel
  • VerifyPlanExecutionTool — Plan execution verification
  • Agent nesting — Agents spawning sub-agents

Undercover Mode

Undercover mode instructs the AI to conceal its identity and present contributions as human-authored when Anthropic employees use Claude Code in public or open-source repositories. There is no force-off switch.

Activation Logic

Source: src/utils/undercover.ts:28-37
Key properties:
  • Internal only: Only activates for Anthropic employees (USER_TYPE === 'ant')
  • Default ON: Active in all repos that are not on the internal allowlist
  • No force-OFF: The source explicitly states: “There is NO force-OFF. This guards against model codename leaks”
  • External builds: Dead-code-eliminated by the bundler; never executes for non-Anthropic users

The Prompt Given to the Model

Source: src/utils/undercover.ts:39-69

Implications for Open-Source Communities

When Anthropic employees use Claude Code to contribute to open-source projects under undercover mode:
  1. Code is written by AI, but commits appear human-authored
  2. No Co-Authored-By: Claude attribution is added
  3. No “Generated with Claude Code” markers are included
  4. Project maintainers and contributors cannot identify AI-generated contributions
  5. This may conflict with open-source transparency norms and individual project contribution policies

Model Codename Masking

A separate masking function further protects codenames in any output that does reference a model name:

Hidden Slash Commands

The following slash commands exist in source but are not listed in the standard help output: