Claude Code Analysis Research
Skill by ara.so — Claude Code Skills collection.
Overview
The claude-code-analysis project is a comprehensive analysis of Anthropic's Claude Code leaked TypeScript source (513,237 lines across 1,902 files). On March 31, 2026, security researcher Chaofan Shou discovered that Anthropic's npm package included source maps, exposing the complete codebase.
This skill enables agents to:
- Navigate the leaked source structure and architecture
- Understand Claude Code's memory, tool call, and MCP implementations
- Analyze security mechanisms (sandbox, permissions)
- Compare Claude Code to competitors (Cursor, Aider, Codex)
- Reference implementation patterns and code evidence
Project Structure
claude-code-analysis/
├── README.md # Main index
├── analysis/ # Analysis documents
│ ├── 01-architecture-overview.md
│ ├── 02-security-analysis.md
│ ├── 04-agent-memory.md
│ ├── 04b-tool-call-implementation.md
│ ├── 04c-skills-implementation.md
│ ├── 04d-mcp-implementation.md
│ ├── 04e-sandbox-implementation.md
│ ├── 04f-context-management.md
│ ├── 04g-prompt-management.md
│ ├── 04h-multi-agent.md
│ ├── 04i-session-storage-resume.md
│ ├── 05-differentiators-and-comparison.md
│ ├── 06-extra-findings.md
│ ├── 06b-negative-keyword-analysis.md
│ ├── 07-code-evidence-index.md
│ ├── 08-competitive-comparison.md
│ ├── 09-final-summary.md
│ ├── 10-src-file-tree.md
│ ├── 11-hidden-features-and-easter-eggs.md
│ └── components/ # UI component analysis
├── src.zip # Source archive
└── src/ # Full TypeScript source
Key Architecture Components
Entry Points
// Main CLI entry: entrypoints/cli.tsx
// Initialization: init.ts, setup.ts
// Core execution: query.ts, QueryEngine.ts
The application flow:
- CLI/Entry →
entrypoints/cli.tsx,main.tsx - Initialization →
init.ts,setup.ts - Command Layer →
commands.ts,PromptInput - TUI/REPL →
App,REPL,Messages - Execution Kernel →
query.ts,QueryEngine.ts - Core Systems:
- Tool/Permission:
Tool.ts, orchestration - Memory:
sessionStorage,memdir,SessionMem - Extensions: MCP, Plugins, Remote, Swarm
- Tool/Permission:
Memory System
Claude Code implements a multi-layer memory architecture:
// Session storage in src/sessionStorage/
interface SessionMemory {
transcript: Message[];
context: Context;
compressedHistory: CompressedEntry[];
}
// Memory directories: src/memdir/
// - Short-term: active session
// - Long-term: compressed/indexed
// - Resume: persistent session recovery
Key patterns:
- Hierarchical storage (session → compressed → indexed)
- Automatic context pruning based on token limits
- Session resumption via
Transcriptpersistence
Tool Call Mechanism
// Tool definitions in src/tools/
interface Tool {
name: string;
description: string;
inputSchema: JSONSchema;
execute: (params: unknown) => Promise<ToolResult>;
}
// Tool orchestration in src/orchestration/
class ToolOrchestrator {
async executeTool(
toolName: string,
params: Record<string, unknown>,
permissions: PermissionSet
): Promise<ToolResult>;
}
Built-in tools:
- File operations:
readFile,writeFile,listFiles - Execution:
runCommand,executeCode - Search:
searchCode,grepFiles - Browser: web scraping, navigation
MCP (Model Context Protocol) Integration
// MCP implementation in src/mcp/
interface MCPServer {
name: string;
transport: Transport; // stdio | SSE | WebSocket
capabilities: Capability[];
}
// MCP tools are exposed via standardized protocol
const mcpClient = await MCPClient.connect({
command: "npx",
args: ["-y", "@modelcontextprotocol/server-filesystem"],
env: { ...process.env }
});
MCP usage patterns:
// Connect to MCP server
await mcpClient.initialize();
// List available tools
const tools = await mcpClient.listTools();
// Call MCP tool
const result = await mcpClient.callTool("read_file", {
path: "/path/to/file"
});
Sandbox Mechanism
// Sandbox isolation in src/sandbox/
class Sandbox {
async executeInIsolation(
code: string,
options: SandboxOptions
): Promise<ExecutionResult> {
// Creates isolated environment
// - Separate process/container
// - Limited filesystem access
// - Network restrictions
// - Resource quotas
}
}
Security layers:
- Permission system (user approval for sensitive ops)
- Filesystem isolation (chroot/container)
- Network filtering
- Resource limits (CPU, memory, time)
Skills Extension System
// Skills in src/skills/
interface Skill {
name: string;
triggers: string[];
execute: (context: Context) => Promise<void>;
}
// Example skill structure
export const debugSkill: Skill = {
name: "debug-assistant",
triggers: ["debug", "fix error", "troubleshoot"],
async execute(context) {
// Skill implementation
const error = await analyzeError(context);
const fix = await suggestFix(error);
await applyFix(fix);
}
};
Installation & Access
This is an analysis repository, not executable code. To explore:
# Clone the analysis
git clone https://github.com/liuup/claude-code-analysis.git
cd claude-code-analysis
# Extract source
unzip src.zip
# Browse analysis documents
cd analysis
Key Analysis Documents
Architecture Understanding
# Read core architecture
cat analysis/01-architecture-overview.md
# Understand execution flow
# Entry → Init → Command → TUI → Query → Tools/Memory/Extensions
Security Analysis
# User data collection
cat analysis/02-security-analysis.md
# Key findings:
# - Telemetry data sent to Anthropic
# - Local session storage in ~/.claude-code/
# - Sandbox isolation for code execution
# - Permission gates for file/network access
Memory Implementation
// From analysis/04-agent-memory.md
/*
Multi-tier memory:
1. Active context (current session)
2. Compressed history (summarized)
3. Indexed memory (long-term retrieval)
Token budget management:
- Max context: ~200k tokens
- Auto-compression when exceeded
- Sliding window + importance ranking
*/
Tool Call Deep Dive
// From analysis/04b-tool-call-implementation.md
/*
Tool execution flow:
1. LLM generates tool_use block
2. Permission check (user approval if needed)
3. Tool execution in sandbox
4. Result returned to LLM
5. Continue conversation loop
Tool categories:
- Filesystem (read/write/search)
- Execution (shell/code)
- Browser (web scraping)
- MCP (external protocols)
*/
MCP Technical Details
# Read MCP implementation
cat analysis/04d-mcp-implementation.md
# MCP servers communicate via:
# - stdin/stdout (stdio transport)
# - Server-Sent Events (SSE)
# - WebSocket
#
# Tools registered dynamically at runtime
Common Patterns
Analyzing Agent Memory Usage
// Reference: src/sessionStorage/
// Pattern: Multi-layer storage with compression
// Active session (in-memory)
const activeContext = {
messages: Message[],
tools: ToolDefinition[],
files: FileContext[]
};
// Compressed history (when token limit hit)
const compressed = {
summary: string,
keyPoints: string[],
truncatedMessages: Message[]
};
// Persistent storage (~/.claude-code/sessions/)
interface PersistedSession {
id: string;
timestamp: number;
transcript: Message[];
metadata: SessionMetadata;
}
Tracing Tool Execution
// Reference: src/tools/, src/orchestration/
// 1. Tool registration
const tool = {
name: "read_file",
schema: { path: { type: "string" } },
execute: async (params) => {
// Permission check
if (needsApproval(params.path)) {
await requestPermission("read_file", params);
}
// Execute in sandbox
return await sandbox.readFile(params.path);
}
};
// 2. LLM invokes tool
// <tool_use name="read_file">{"path": "/src/app.ts"}</tool_use>
// 3. Tool result
// <tool_result>file contents...</tool_result>
Understanding Security Boundaries
// Reference: src/sandbox/, src/permissions/
// Permission levels:
enum PermissionLevel {
ALWAYS_ALLOW = "always",
PROMPT = "prompt", // Default
NEVER_ALLOW = "never"
}
// Sandbox isolation:
const sandboxConfig = {
workingDir: "/tmp/claude-sandbox-xxx",
allowedPaths: ["/workspace"],
blockedHosts: ["internal.company.com"],
resourceLimits: {
maxMemory: "2GB",
maxCPU: "2 cores",
timeout: 30000 // 30s
}
};
Comparing to Other AI Coding Agents
# Reference: analysis/08-competitive-comparison.md
# Claude Code vs Cursor:
# - Claude: Local-first, MCP-based extensions
# - Cursor: Cloud-integrated, VSCode-based
# Claude Code vs Aider:
# - Claude: Full TUI, multi-agent support
# - Aider: CLI-focused, git-centric
# Claude Code vs GitHub Copilot:
# - Claude: Autonomous agent, tool use
# - Copilot: Autocomplete, inline suggestions
Configuration
Claude Code configuration (inferred from source):
// Config file: ~/.claude-code/config.json
interface Config {
apiKey?: string; // From ANTHROPIC_API_KEY env var
model: string; // Default: "claude-3-5-sonnet-20241022"
// Memory settings
memory: {
maxTokens: number; // ~200k
compressionThreshold: number;
persistSessions: boolean;
};
// Sandbox settings
sandbox: {
enabled: boolean;
isolation: "process" | "container";
allowedPaths: string[];
};
// MCP servers
mcpServers: {
[name: string]: {
command: string;
args: string[];
env?: Record<string, string>;
};
};
// Telemetry
telemetry: {
enabled: boolean;
endpoint?: string;
};
}
Environment variables:
# Required
export ANTHROPIC_API_KEY=your_api_key_here
# Optional
export CLAUDE_CODE_CONFIG_DIR=~/.claude-code
export CLAUDE_CODE_LOG_LEVEL=debug
export CLAUDE_CODE_TELEMETRY_OPT_OUT=1
Troubleshooting
Understanding Data Collection
Issue: What user data does Claude Code collect?
# Reference: analysis/02-security-analysis.md section 1
# Data collected:
# 1. Telemetry: usage stats, errors, feature flags
# 2. Session transcripts: stored locally in ~/.claude-code/
# 3. Context: code snippets sent to LLM API
# 4. MCP data: depends on external MCP servers
# Check local storage:
ls -la ~/.claude-code/sessions/
ls -la ~/.claude-code/memory/
Analyzing Memory Compression
Issue: How does Claude Code handle long conversations?
// Reference: src/sessionStorage/compression.ts
/*
Compression strategy:
1. Token count monitoring
2. When > threshold (e.g., 180k tokens):
- Summarize oldest messages
- Retain recent N messages
- Keep important system messages
3. Store summary in compressed tier
4. Continue with reduced context
Key files:
- src/sessionStorage/SessionMemory.ts
- src/memdir/compression.ts
*/
Tracing Tool Permission Flows
Issue: Why does Claude Code ask permission for certain operations?
// Reference: src/permissions/
// Permission required for:
// - Writing files outside workspace
// - Executing shell commands
// - Network requests to new domains
// - Installing packages
// Check permission logic:
// src/permissions/PermissionManager.ts
// src/tools/permissions.ts
Investigating MCP Integration Issues
Issue: MCP server not connecting
# Reference: analysis/04d-mcp-implementation.md
# Debug MCP connection:
# 1. Check MCP server config in ~/.claude-code/config.json
# 2. Test server directly:
npx -y @modelcontextprotocol/server-filesystem
# 3. Check logs:
tail -f ~/.claude-code/logs/mcp-*.log
# 4. Verify transport type (stdio/SSE/WebSocket)
# 5. Check environment variables passed to server
Understanding Hidden Features
# Reference: analysis/11-hidden-features-and-easter-eggs.md
# Feature flags in source:
# - ENABLE_SWARM_MODE: Multi-agent coordination
# - ENABLE_REMOTE_TOOLS: Cloud-based tool execution
# - DEBUG_MODE: Verbose logging
# - EXPERIMENTAL_MEMORY: Advanced memory features
# Check: src/featureFlags.ts
# Check: src/config/experiments.ts
Code Evidence References
Key source files for common investigations:
// Architecture entry points
"entrypoints/cli.tsx" // CLI main
"src/init.ts" // Initialization
"src/query.ts" // Query engine
// Memory system
"src/sessionStorage/" // Session management
"src/memdir/" // Memory directories
"src/transcript/" // Conversation logs
// Tool system
"src/tools/" // Tool definitions
"src/orchestration/" // Tool execution
"src/permissions/" // Permission gates
// MCP integration
"src/mcp/" // MCP client/server
"src/mcp/transports/" // Communication layer
// Security
"src/sandbox/" // Isolation
"src/permissions/" // Access control
"src/telemetry/" // Analytics
// UI
"src/components/" // TUI components
"src/tui/" // Terminal UI
Analysis Navigation
# Start with architecture overview
cat analysis/01-architecture-overview.md
# Then dive into specific topics:
cat analysis/04-agent-memory.md # Memory system
cat analysis/04b-tool-call-implementation.md # Tool calls
cat analysis/04d-mcp-implementation.md # MCP
cat analysis/02-security-analysis.md # Security/privacy
# For comparisons:
cat analysis/08-competitive-comparison.md
# For complete file tree:
cat analysis/10-src-file-tree.md
# For component-level details:
ls analysis/components/
Academic & Research Use
This repository is for academic research and technical learning only:
- ✅ Understanding AI coding agent architecture
- ✅ Security boundary analysis
- ✅ Privacy design patterns
- ✅ Competitive landscape research
- ❌ Commercial use prohibited
- ❌ Bypassing security mechanisms prohibited
- ❌ Violating Anthropic terms of service prohibited
All source code rights belong to Anthropic.