The full source code of Anthropic's Claude Code CLI, leaked on March 31, 2026
The original unmodified leaked source is preserved here .
- How It Leaked
- What Is Claude Code?
- Documentation
- Explore with MCP Server
- Directory Structure
- Architecture
- Key Files
- Tech Stack
- Design Patterns
- GitPretty Setup
- Contributing
- Disclaimer
Chaofan Shou (@Fried_rice) discovered that the published npm package for Claude Code included a .map file referencing the full, unobfuscated TypeScript source β downloadable as a zip from Anthropic's R2 storage bucket.
"Claude code source code has been leaked via a map file in their npm registry!"
Claude Code is Anthropic's official CLI tool for interacting with Claude directly from the terminal β editing files, running commands, searching codebases, managing git workflows, and more. This repository contains the leaked src/ directory.
| Leaked | 2026-03-31 |
| Language | TypeScript (strict) |
| Runtime | Bun |
| Terminal UI | React + Ink |
| Scale | ~1,900 files Β· 512,000+ lines of code |
For in-depth guides, see the docs/ directory:
| Guide | Description |
|---|---|
| Architecture | Core pipeline, startup sequence, state management, rendering, data flow |
| Tools Reference | Complete catalog of all ~40 agent tools with categories and permission model |
| Commands Reference | All ~85 slash commands organized by category |
| Subsystems Guide | Deep dives into Bridge, MCP, Permissions, Plugins, Skills, Tasks, Memory, Voice |
| Exploration Guide | How to navigate the codebase β study paths, grep patterns, key files |
Also see: CONTRIBUTING.md Β· MCP Server README
This repo ships an MCP server that lets any MCP-compatible client (Claude Code, Claude Desktop, VS Code Copilot, Cursor) explore the full source interactively.
Step-by-step setup
# 1. Clone the repo
git clone https://github.com/utkarshcse2026/claude-code.git
cd claude-code/mcp-server
# 2. Install & build
npm install && npm run build
# 3. Register with Claude Code
claude mcp add claude-code-explorer -- node /absolute/path/to/claude-code/mcp-server/dist/index.jsReplace /absolute/path/to/claude-code with your actual clone path.
VS Code / Cursor / Claude Desktop config
VS Code β add to .vscode/mcp.json:
{
"servers": {
"claude-code-explorer": {
"type": "stdio",
"command": "node",
"args": ["${workspaceFolder}/mcp-server/dist/index.js"],
"env": { "CLAUDE_CODE_SRC_ROOT": "${workspaceFolder}/src" }
}
}
}Claude Desktop β add to your config file:
{
"mcpServers": {
"claude-code-explorer": {
"command": "node",
"args": ["/absolute/path/to/claude-code/mcp-server/dist/index.js"],
"env": { "CLAUDE_CODE_SRC_ROOT": "/absolute/path/to/claude-code/src" }
}
}
}Cursor β add to ~/.cursor/mcp.json (same format as Claude Desktop).
| Tool | Description |
|---|---|
list_tools |
List all ~40 agent tools with source files |
list_commands |
List all ~50 slash commands with source files |
get_tool_source |
Read full source of any tool (e.g. BashTool, FileEditTool) |
get_command_source |
Read source of any slash command (e.g. review, mcp) |
read_source_file |
Read any file from src/ by path |
search_source |
Grep across the entire source tree |
list_directory |
Browse src/ directories |
get_architecture |
High-level architecture overview |
| Prompt | Description |
|---|---|
explain_tool |
Deep-dive into how a specific tool works |
explain_command |
Understand a slash command's implementation |
architecture_overview |
Guided tour of the full architecture |
how_does_it_work |
Explain any subsystem (permissions, MCP, bridge, etc.) |
compare_tools |
Side-by-side comparison of two tools |
Try asking: "How does the BashTool work?" Β· "Search for where permissions are checked" Β· "Show me the /review command source"
# Custom source location
claude mcp add claude-code-explorer -e CLAUDE_CODE_SRC_ROOT=/path/to/src -- node /path/to/mcp-server/dist/index.js
# Remove
claude mcp remove claude-code-explorersrc/
βββ main.tsx # Entrypoint β Commander.js CLI parser + React/Ink renderer
βββ QueryEngine.ts # Core LLM API caller (~46K lines)
βββ Tool.ts # Tool type definitions (~29K lines)
βββ commands.ts # Command registry (~25K lines)
βββ tools.ts # Tool registry
βββ context.ts # System/user context collection
βββ cost-tracker.ts # Token cost tracking
β
βββ tools/ # Agent tool implementations (~40)
βββ commands/ # Slash command implementations (~50)
βββ components/ # Ink UI components (~140)
βββ services/ # External service integrations
βββ hooks/ # React hooks (incl. permission checks)
βββ types/ # TypeScript type definitions
βββ utils/ # Utility functions
βββ screens/ # Full-screen UIs (Doctor, REPL, Resume)
β
βββ bridge/ # IDE integration (VS Code, JetBrains)
βββ coordinator/ # Multi-agent orchestration
βββ plugins/ # Plugin system
βββ skills/ # Skill system
βββ server/ # Server mode
βββ remote/ # Remote sessions
βββ memdir/ # Persistent memory directory
βββ tasks/ # Task management
βββ state/ # State management
β
βββ voice/ # Voice input
βββ vim/ # Vim mode
βββ keybindings/ # Keybinding configuration
βββ schemas/ # Config schemas (Zod)
βββ migrations/ # Config migrations
βββ entrypoints/ # Initialization logic
βββ query/ # Query pipeline
βββ ink/ # Ink renderer wrapper
βββ buddy/ # Companion sprite (Easter egg π£)
βββ native-ts/ # Native TypeScript utils
βββ outputStyles/ # Output styling
βββ upstreamproxy/ # Proxy configuration
src/tools/β Every tool Claude can invoke is a self-contained module with its own input schema, permission model, and execution logic.
| Tool | Description |
|---|---|
| File I/O | |
FileReadTool |
Read files (images, PDFs, notebooks) |
FileWriteTool |
Create / overwrite files |
FileEditTool |
Partial modification (string replacement) |
NotebookEditTool |
Jupyter notebook editing |
| Search | |
GlobTool |
File pattern matching |
GrepTool |
ripgrep-based content search |
WebSearchTool |
Web search |
WebFetchTool |
Fetch URL content |
| Execution | |
BashTool |
Shell command execution |
SkillTool |
Skill execution |
MCPTool |
MCP server tool invocation |
LSPTool |
Language Server Protocol integration |
| Agents & Teams | |
AgentTool |
Sub-agent spawning |
SendMessageTool |
Inter-agent messaging |
TeamCreateTool / TeamDeleteTool |
Team management |
TaskCreateTool / TaskUpdateTool |
Task management |
| Mode & State | |
EnterPlanModeTool / ExitPlanModeTool |
Plan mode toggle |
EnterWorktreeTool / ExitWorktreeTool |
Git worktree isolation |
ToolSearchTool |
Deferred tool discovery |
SleepTool |
Proactive mode wait |
CronCreateTool |
Scheduled triggers |
RemoteTriggerTool |
Remote trigger |
SyntheticOutputTool |
Structured output generation |
src/commands/β User-facing slash commands invoked with/in the REPL.
| Command | Description | Command | Description | |
|---|---|---|---|---|
/commit |
Git commit | /memory |
Persistent memory | |
/review |
Code review | /skills |
Skill management | |
/compact |
Context compression | /tasks |
Task management | |
/mcp |
MCP server management | /vim |
Vim mode toggle | |
/config |
Settings | /diff |
View changes | |
/doctor |
Environment diagnostics | /cost |
Check usage cost | |
/login / /logout |
Auth | /theme |
Change theme | |
/context |
Context visualization | /share |
Share session | |
/pr_comments |
PR comments | /resume |
Restore session | |
/desktop |
Desktop handoff | /mobile |
Mobile handoff |
src/services/β External integrations and core infrastructure.
| Service | Description |
|---|---|
api/ |
Anthropic API client, file API, bootstrap |
mcp/ |
Model Context Protocol connection & management |
oauth/ |
OAuth 2.0 authentication |
lsp/ |
Language Server Protocol manager |
analytics/ |
GrowthBook feature flags & analytics |
plugins/ |
Plugin loader |
compact/ |
Conversation context compression |
extractMemories/ |
Automatic memory extraction |
teamMemorySync/ |
Team memory synchronization |
tokenEstimation.ts |
Token count estimation |
policyLimits/ |
Organization policy limits |
remoteManagedSettings/ |
Remote managed settings |
src/bridge/β Bidirectional communication layer connecting IDE extensions (VS Code, JetBrains) with the CLI.
Key files: bridgeMain.ts (main loop) Β· bridgeMessaging.ts (protocol) Β· bridgePermissionCallbacks.ts (permission callbacks) Β· replBridge.ts (REPL session) Β· jwtUtils.ts (JWT auth) Β· sessionRunner.ts (session execution)
src/hooks/toolPermission/β Checks permissions on every tool invocation.
Prompts the user for approval/denial or auto-resolves based on the configured permission mode: default, plan, bypassPermissions, auto, etc.
Dead code elimination at build time via Bun's bun:bundle:
import { feature } from 'bun:bundle'
const voiceCommand = feature('VOICE_MODE')
? require('./commands/voice/index.js').default
: nullNotable flags: PROACTIVE Β· KAIROS Β· BRIDGE_MODE Β· DAEMON Β· VOICE_MODE Β· AGENT_TRIGGERS Β· MONITOR_TOOL
| File | Lines | Purpose |
|---|---|---|
QueryEngine.ts |
~46K | Core LLM API engine β streaming, tool loops, thinking mode, retries, token counting |
Tool.ts |
~29K | Base types/interfaces for all tools β input schemas, permissions, progress state |
commands.ts |
~25K | Command registration & execution with conditional per-environment imports |
main.tsx |
β | CLI parser + React/Ink renderer; parallelizes MDM, keychain, and GrowthBook on startup |
| 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 |
Parallel Prefetch β Startup optimization
MDM settings, keychain reads, and API preconnect fire in parallel as side-effects before heavy module evaluation:
// main.tsx
startMdmRawRead()
startKeychainPrefetch()Lazy Loading β Deferred heavy modules
OpenTelemetry (~400KB) and gRPC (~700KB) are loaded via dynamic import() only when needed.
Agent Swarms β Multi-agent orchestration
Sub-agents spawn via AgentTool, with coordinator/ handling orchestration. TeamCreateTool enables team-level parallel work.
Skill System β Reusable workflows
Defined in skills/ and executed through SkillTool. Users can add custom skills.
Plugin Architecture β Extensibility
Built-in and third-party plugins loaded through the plugins/ subsystem.
Show per-file emoji commit messages in GitHub's file UI
# Apply emoji commits
bash ./gitpretty-apply.sh .
# Optional: install hooks for future commits
bash ./gitpretty-apply.sh . --hooks
# Push as usual
git push origin mainContributions to documentation, the MCP server, and exploration tooling are welcome. See CONTRIBUTING.md for guidelines.
Note: The
src/directory is the original leaked source and should not be modified.
This repository archives source code leaked from Anthropic's npm registry on 2026-03-31. All original source code is the property of Anthropic. This is not an official release and is not licensed for redistribution. Contact Utkarsh Aggarwal⦠for any comments.