On March 31, 2026, the full source code of Anthropic's Claude Code CLI was leaked via a
.mapfile exposed in their npm registry.
Chaofan Shou (@Fried_rice) discovered the leak and posted it publicly:
"Claude code source code has been leaked via a map file in their npm registry!"
The source map file in the published npm package contained a reference to the full, unobfuscated TypeScript source, which was downloadable as a zip archive from Anthropic's R2 storage bucket.
Claude Code is Anthropic's official CLI tool that lets you interact with Claude directly from the terminal to perform software engineering tasks — editing files, running commands, searching codebases, managing git workflows, and more.
This repository contains the leaked src/ directory.
- Leaked on: 2026-03-31
- Language: TypeScript
- Runtime: Bun
- Terminal UI: React + Ink (React for CLI)
- Scale: ~1,900 files, 512,000+ lines of code
This rebuild baseline is currently verified runnable.
Verified on this repository with:
cd /home/clashuser/hzh/item_bo/learn-likecc/ccsource/CC/claude-code-rebuild
bun install
bun run dev --version
TERM=xterm-256color bun run devExpected version output:
0.0.1-learn (Claude Code)
Current conclusion:
ccsource/CC/claude-code-rebuildcan now enter the interactive REPL- there is no need to urgently re-anchor rebuild to
c75951f,50b6fb0, ora1531fb 6a1afe3remains the current rebuild baseline until we explicitly decide to change that role
Relevant repair commits:
d2f67e7restore rebuild baseline source tree006d512note rebuild install requirementde8fc29note rebuild terminal requirementb7b295eadd rebuild startup diagnostics and rg fallback57ad57frestore rebuild REPL startup
If you restored this directory from git and try to run it locally, install dependencies first:
bun install
bun run devWithout bun install, Bun will fail on imports such as lodash-es/sumBy.js.
If bun run dev appears to hang after printing only:
bun run src/entrypoints/cli.tsx
check your terminal type first:
echo "$TERM"
TERM=xterm-256color bun run devThis rebuilt baseline uses an Ink TUI. In weak terminals such as TERM=dumb, the CLI can enter interactive mode without rendering the screen correctly, which looks like it is stuck even though the process is already running.
If you want to know exactly where startup stops, enable the minimal startup diagnostic mode:
CLAUDE_CODE_STARTUP_DIAG=1 bun run devIt prints checkpoints such as:
[startup-diag] before loadCommandsAndAgents
[startup-diag] after getSkills
[startup-diag] after getSkillDirCommands
[startup-diag] after getPluginSkills
[startup-diag] after getPluginCommands
[startup-diag] after getWorkflowCommands
[startup-diag] after getCommands
[startup-diag] after getAgentDefinitionsWithOverrides
[startup-diag] after loadCommandsAndAgents
[startup-diag] before createRoot
[startup-diag] after createRoot
[startup-diag] before showSetupScreens
[startup-diag] after showSetupScreens
[startup-diag] before initializeLspServerManager
[startup-diag] after initializeLspServerManager
This is useful for distinguishing:
- TUI creation problems (
createRoot) - hidden setup/onboarding/trust screens (
showSetupScreens) - later startup work such as LSP manager initialization
The rebuild baseline did not fail because ~/.claude.json was wrong.
The actual issues were in the restored source tree itself:
- missing small runtime files needed by REPL import
- one bad import path in the Ink component tree
- one React hook compatibility mismatch (
useEffectEvent) - one sandbox runtime compatibility mismatch in the rebuild baseline
Those issues have now been patched in this rebuild directory, which is why the interactive CLI can start again.
src/
├── main.tsx # Entrypoint (Commander.js-based CLI parser)
├── commands.ts # Command registry
├── tools.ts # Tool registry
├── Tool.ts # Tool type definitions
├── QueryEngine.ts # LLM query engine (core Anthropic API caller)
├── context.ts # System/user context collection
├── cost-tracker.ts # Token cost tracking
│
├── commands/ # Slash command implementations (~50)
├── tools/ # Agent tool implementations (~40)
├── components/ # Ink UI components (~140)
├── hooks/ # React hooks
├── services/ # External service integrations
├── screens/ # Full-screen UIs (Doctor, REPL, Resume)
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
│
├── bridge/ # IDE integration bridge (VS Code, JetBrains)
├── coordinator/ # Multi-agent coordinator
├── plugins/ # Plugin system
├── skills/ # Skill system
├── keybindings/ # Keybinding configuration
├── vim/ # Vim mode
├── voice/ # Voice input
├── remote/ # Remote sessions
├── server/ # Server mode
├── memdir/ # Memory directory (persistent memory)
├── tasks/ # Task management
├── state/ # State management
├── migrations/ # Config migrations
├── schemas/ # Config schemas (Zod)
├── entrypoints/ # Initialization logic
├── ink/ # Ink renderer wrapper
├── buddy/ # Companion sprite (Easter egg)
├── native-ts/ # Native TypeScript utils
├── outputStyles/ # Output styling
├── query/ # Query pipeline
└── upstreamproxy/ # Proxy configuration
Every tool Claude Code can invoke is implemented as a self-contained module. Each tool defines its input schema, permission model, and execution logic.
| Tool | Description |
|---|---|
BashTool |
Shell command execution |
FileReadTool |
File reading (images, PDFs, notebooks) |
FileWriteTool |
File creation / overwrite |
FileEditTool |
Partial file modification (string replacement) |
GlobTool |
File pattern matching search |
GrepTool |
ripgrep-based content search |
WebFetchTool |
Fetch URL content |
WebSearchTool |
Web search |
AgentTool |
Sub-agent spawning |
SkillTool |
Skill execution |
MCPTool |
MCP server tool invocation |
LSPTool |
Language Server Protocol integration |
NotebookEditTool |
Jupyter notebook editing |
TaskCreateTool / TaskUpdateTool |
Task creation and management |
SendMessageTool |
Inter-agent messaging |
TeamCreateTool / TeamDeleteTool |
Team agent management |
EnterPlanModeTool / ExitPlanModeTool |
Plan mode toggle |
EnterWorktreeTool / ExitWorktreeTool |
Git worktree isolation |
ToolSearchTool |
Deferred tool discovery |
CronCreateTool |
Scheduled trigger creation |
RemoteTriggerTool |
Remote trigger |
SleepTool |
Proactive mode wait |
SyntheticOutputTool |
Structured output generation |
User-facing slash commands invoked with / prefix.
| Command | Description |
|---|---|
/commit |
Create a git commit |
/review |
Code review |
/compact |
Context compression |
/mcp |
MCP server management |
/config |
Settings management |
/doctor |
Environment diagnostics |
/login / /logout |
Authentication |
/memory |
Persistent memory management |
/skills |
Skill management |
/tasks |
Task management |
/vim |
Vim mode toggle |
/diff |
View changes |
/cost |
Check usage cost |
/theme |
Change theme |
/context |
Context visualization |
/pr_comments |
View PR comments |
/resume |
Restore previous session |
/share |
Share session |
/desktop |
Desktop app handoff |
/mobile |
Mobile app handoff |
| Service | Description |
|---|---|
api/ |
Anthropic API client, file API, bootstrap |
mcp/ |
Model Context Protocol server connection and management |
oauth/ |
OAuth 2.0 authentication flow |
lsp/ |
Language Server Protocol manager |
analytics/ |
GrowthBook-based feature flags and analytics |
plugins/ |
Plugin loader |
compact/ |
Conversation context compression |
policyLimits/ |
Organization policy limits |
remoteManagedSettings/ |
Remote managed settings |
extractMemories/ |
Automatic memory extraction |
tokenEstimation.ts |
Token count estimation |
teamMemorySync/ |
Team memory synchronization |
A bidirectional communication layer connecting IDE extensions (VS Code, JetBrains) with the Claude Code CLI.
bridgeMain.ts— Bridge main loopbridgeMessaging.ts— Message protocolbridgePermissionCallbacks.ts— Permission callbacksreplBridge.ts— REPL session bridgejwtUtils.ts— JWT-based authenticationsessionRunner.ts— Session execution management
Checks permissions on every tool invocation. Either prompts the user for approval/denial or automatically resolves based on the configured permission mode (default, plan, bypassPermissions, auto, etc.).
Dead code elimination via Bun's bun:bundle feature flags:
import { feature } from 'bun:bundle'
// Inactive code is completely stripped at build time
const voiceCommand = feature('VOICE_MODE')
? require('./commands/voice/index.js').default
: nullNotable flags: PROACTIVE, KAIROS, BRIDGE_MODE, DAEMON, VOICE_MODE, AGENT_TRIGGERS, MONITOR_TOOL
The core engine for LLM API calls. Handles streaming responses, tool-call loops, thinking mode, retry logic, and token counting.
Defines base types and interfaces for all tools — input schemas, permission models, and progress state types.
Manages registration and execution of all slash commands. Uses conditional imports to load different command sets per environment.
Commander.js-based CLI parser + React/Ink renderer initialization. At startup, parallelizes MDM settings, keychain prefetch, and GrowthBook initialization for faster boot.
| Category | Technology |
|---|---|
| Runtime | Bun |
| Language | TypeScript (strict) |
| Terminal UI | React + Ink |
| CLI Parsing | Commander.js (extra-typings) |
| Schema Validation | Zod v4 |
| Code Search | ripgrep (via GrepTool) |
| Protocols | MCP SDK, LSP |
| API | Anthropic SDK |
| Telemetry | OpenTelemetry + gRPC |
| Feature Flags | GrowthBook |
| Auth | OAuth 2.0, JWT, macOS Keychain |
Startup time is optimized by prefetching MDM settings, keychain reads, and API preconnect in parallel — before heavy module evaluation begins.
// main.tsx — fired as side-effects before other imports
startMdmRawRead()
startKeychainPrefetch()Heavy modules (OpenTelemetry ~400KB, gRPC ~700KB) are deferred via dynamic import() until actually needed.
Sub-agents are spawned via AgentTool, with coordinator/ handling multi-agent orchestration. TeamCreateTool enables team-level parallel work.
Reusable workflows defined in skills/ and executed through SkillTool. Users can add custom skills.
Built-in and third-party plugins are loaded through the plugins/ subsystem.
This repository archives source code that was leaked from Anthropic's npm registry on 2026-03-31. All original source code is the property of Anthropic.