# Claude Code CLI — Agent Instructions

## What This Is

This is the **leaked source code** of Anthropic's Claude Code CLI (leaked 2026-03-31). It is a read-only reference codebase — there is no build system, no tests, and no package.json included. Treat it as a study/exploration resource.

- **Language**: TypeScript / TSX
- **Runtime**: Bun (not Node.js)
- **Terminal UI**: React + Ink (React for CLI)
- **Scale**: ~1,900 files, 512,000+ lines across `src/`

## Architecture

### Core Pipeline

1. **Entrypoint** — `src/main.tsx`: Commander.js CLI parser, service initialization, lazy feature loading via Bun feature flags
2. **Query Engine** — `src/QueryEngine.ts` (~46K lines): LLM API call handler — streaming, tool loops, thinking mode, retries, token counting
3. **Tool System** — `src/Tool.ts` (~29K lines) + `src/tools/`: ~50 tools (BashTool, FileEditTool, AgentTool, etc.), each self-contained with input schema, permissions, and execution logic
4. **Command System** — `src/commands.ts` (~25K lines) + `src/commands/`: ~50 slash commands (`/commit`, `/review`, `/config`, etc.)
5. **Context** — `src/context.ts`: Collects OS, shell, git, and user context for prompt construction

### Key Subsystems

| Directory | Purpose |
|-----------|---------|
| `src/bridge/` | IDE integration layer (VS Code, JetBrains) — bidirectional messaging, JWT auth, session management |
| `src/coordinator/` | Multi-agent orchestration |
| `src/services/` | External integrations — Anthropic API, MCP, OAuth, LSP, analytics, plugins |
| `src/hooks/` | React hooks including `toolPermission/` for per-tool permission checks |
| `src/components/` | ~140 Ink UI components |
| `src/plugins/` | Plugin system |
| `src/skills/` | Skill system |
| `src/tasks/` | Task management |
| `src/types/` | Centralized TypeScript type definitions |
| `src/utils/` | Shared utilities |
| `src/schemas/` | Zod-based config schemas |
| `src/memdir/` | Persistent memory directory |
| `src/voice/` | Voice input |
| `src/vim/` | Vim mode |
| `src/buddy/` | Companion sprite (Easter egg) |

### Feature Flags (Dead Code Elimination)

Bun strips inactive code at build time via `import { feature } from 'bun:bundle'`. Notable flags: `PROACTIVE`, `KAIROS`, `BRIDGE_MODE`, `DAEMON`, `VOICE_MODE`, `AGENT_TRIGGERS`, `MONITOR_TOOL`, `COORDINATOR_MODE`.

## Code Style & Conventions

- **Imports**: ESM with explicit `.js` extensions (e.g., `from './commands.js'`)
- **Files/Dirs**: kebab-case (`commit-push-pr.ts`, `add-dir/`)
- **Classes/Components**: PascalCase (`BashTool`, `QueryEngine`)
- **Functions**: camelCase (`getCommands()`, `getAllTools()`)
- **Constants**: UPPER_SNAKE_CASE (`ALLOWED_TOOLS`, `FRAME_INTERVAL_MS`)
- **Linter**: Biome (not ESLint). Look for `biome-ignore` directives
- **Ant-only code**: Some imports/features are gated behind `process.env.USER_TYPE === 'ant'` (Anthropic internal)
- **Index pattern**: Features export via `index.ts` files

## Navigation Tips

- **Find a tool**: Look in `src/tools/<ToolName>/` — each tool is a directory with its implementation, UI, and permissions co-located
- **Find a command**: Look in `src/commands/<command-name>/` or `src/commands/<command-name>.ts`
- **Understand permissions**: Start at `src/hooks/toolPermission/`
- **Trace an API call**: Start at `src/QueryEngine.ts` → `src/services/api/`
- **Understand types**: Centralized in `src/types/`, tool-specific types in `src/Tool.ts`
- **Follow the bridge**: IDE integration starts at `src/bridge/bridgeMain.ts`
- **MCP integration**: `src/services/mcp/`

