Note: The original unmodified leaked source is preserved in the backup branch.
On March 31, 2026, the full source code of Anthropic's Claude Code CLI was leaked via a .map file 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!"
- @Fried_rice, March 31, 2026
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
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 loop
- bridgeMessaging.ts - Message protocol
- bridgePermissionCallbacks.ts - Permission callbacks
- replBridge.ts - REPL session bridge
- jwtUtils.ts - JWT-based authentication
- sessionRunner.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.
If you want GitHub's file UI to show visually distinct commit messages per file, use the helper script in this repo:
bash ./gitpretty-apply.sh .This will:
- Clone gitpretty into ~/.gitpretty (first run only)
- Make scripts executable
- Run emoji-file-commits.sh against this repo
Optional: install auto-emoji hooks for future commits:
bash ./gitpretty-apply.sh . --hooksAfter running, push as usual:
git push origin mainThis repo includes an MCP server that lets you explore the Claude Code source directly from any Claude session. One command to set it up:
# Clone the repo (if you haven't already)
git clone https://github.com/Atharvsinh-codez/claude-code.git
cd claude-code/mcp-server
# Install dependencies and build
npm install && npm run build
# Add to Claude Code (run from the repo root)
claude mcp add claude-code-explorer -- node /absolute/path/to/claude-code/mcp-server/dist/index.jsReplace /absolute/path/to/claude-code with the actual path where you cloned the repo.
Or as a single copy-paste block (clones, builds, and registers in one go):
git clone https://github.com/Atharvsinh-codez/claude-code.git ~/claude-code \
&& cd ~/claude-code/mcp-server \
&& npm install && npm run build \
&& claude mcp add claude-code-explorer -- node ~/claude-code/mcp-server/dist/index.jsOnce added, Claude has access to these tools for exploring the codebase:
| 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 |
Plus prompts for guided exploration:
- 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
After adding the MCP server, just ask Claude naturally:
"How does the BashTool work?" "Search for where permissions are checked" "Show me the /review command source" "Explain the MCP client integration"
If your src/ directory is in a non-standard location, set the environment variable:
claude mcp add claude-code-explorer -e CLAUDE_CODE_SRC_ROOT=/path/to/src -- node /path/to/mcp-server/dist/index.jsclaude mcp remove claude-code-explorerThis 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.