Skip to content

Latest commit

 

History

History
459 lines (344 loc) · 16.6 KB

File metadata and controls

459 lines (344 loc) · 16.6 KB

Claude Code — Leaked Source

The full source code of Anthropic's Claude Code CLI, leaked on March 31, 2026

TypeScript Bun React + Ink Files MCP Server npm Twitter Follow

The original unmodified leaked source is preserved in the backup branch.


Table of Contents


How It Leaked

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!"

@Fried_rice, March 31, 2026


What Is Claude Code?

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

� Documentation

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


�🔍 Explore with MCP Server

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.

Install from npm

The MCP server is published as warrioraashuu-codemaster on npm — no need to clone the repo:

# Claude Code
claude mcp add warrioraashuu-codemaster -- npx -y warrioraashuu-codemaster

One-liner setup (from source)

git clone https://github.com/codeaashu/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.js
Step-by-step setup
# 1. Clone the repo
git clone https://github.com/codeaashu/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.js

Replace /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).

Available tools & prompts

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 path / Remove

# 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-explorer

Directory Structure

src/
├── 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

Architecture

1. Tool System

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

2. Command System

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

3. Service Layer

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

4. Bridge System

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)

5. Permission System

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.

6. Feature Flags

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
  : null

Notable flags: PROACTIVE · KAIROS · BRIDGE_MODE · DAEMON · VOICE_MODE · AGENT_TRIGGERS · MONITOR_TOOL


Key Files

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

Tech Stack

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

Design Patterns

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.


GitPretty Setup

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 main

Contributing

Contributions 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.


Disclaimer

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 aashuu ✦ for any comments.


Star History Chart