Claude Code System Prompt Leaked: The Full Breakdown of How Anthropic Instructs Their AI
Yesterday I covered the full Claude Code source leak after its 512K-line TypeScript codebase was exposed through an npm source map. One of the most interesting pieces buried in that leak is the system prompt itself, found in src/constants. This is the exact set of instructions Anthropic uses to control how Claude Code behaves.
I went through the full prompt and the surrounding code. Here is what it actually says, how it works, and what you can learn from it.
The Architecture: A Tool-Calling REPL Loop
Claude Code is not a simple chatbot with terminal access. The system prompt defines a tool-calling REPL loop where the model continuously cycles through reading user input, deciding which tools to call, executing them, and feeding results back into the conversation context.
The prompt gives the model access to a defined set of tools: file reading, file writing, bash execution, web search, code search (grep/glob), and a notebook editor. Each tool has explicit parameters and usage instructions embedded directly in the prompt. The model does not discover tools at runtime. It knows exactly what it can do from the first token.
This is a deliberate design choice. By enumerating every tool and its parameters in the system prompt, Anthropic avoids the ambiguity of dynamic tool discovery. The model always knows its capabilities. It never hallucinates a tool that does not exist.
Tools defined in the system prompt:
- Bash (execute shell commands)
- Read (read files with line numbers)
- Edit (exact string replacement in files)
- Write (create or overwrite files)
- Glob (fast file pattern matching)
- Grep (ripgrep-based content search)
- NotebookEdit (Jupyter cell operations)
- WebFetch / WebSearch (web access)
The Permission System
The prompt implements a layered permission model. Not every tool call requires user confirmation. The system differentiates between read-only operations (always allowed), write operations (need approval), and destructive operations (highlighted warnings).
Read operations like Glob, Grep, and Read run without asking. They cannot modify anything. But Bash, Edit, and Write trigger a confirmation flow where the user sees exactly what will happen before it executes.
The prompt also includes a dangerouslyDisableSandbox parameter on the Bash tool. When set, commands run without sandboxing. This is not something the model decides on its own. It maps to the --dangerously-skip-permissions CLI flag that the user passes at startup. The prompt just carries the flag through.
What is interesting here is how the prompt handles dangerous git operations specifically. There are explicit rules: never force push to main, never amend commits unless asked, never skip hooks. These are not just general guidelines. They are written as hard rules in the prompt with specific reasoning for each one.
Context Management
Claude Code operates under a context window constraint, and the prompt is designed around that reality. Several patterns emerge.
First, the prompt tells the model to prefer targeted reads over full file reads. The Read tool accepts offset and limit parameters so the model can read specific line ranges instead of loading entire files. The prompt explicitly says: "When you already know which part of the file you need, only read that part."
Second, there is a strong preference for Edit over Write. The Edit tool sends only the diff (old string to new string), while Write sends the entire file content. For large files, this is a massive context savings. The prompt says to only use Write for new files or complete rewrites.
Third, the prompt encourages parallel tool calls. If multiple independent pieces of information are needed, the model should make all calls in a single response rather than sequentially. This reduces round trips and keeps context usage efficient.
Safety Guardrails in the Prompt
The safety section is substantial. Some highlights:
- Never expose secrets (.env files, credentials) in commits or output
- Never run destructive git operations without explicit user request
- Never create documentation files unless explicitly asked
- Never amend existing commits (create new ones instead)
- Avoid
git add -Aorgit add .because they can accidentally stage sensitive files - If a pre-commit hook fails, the commit did not happen, so
--amendwould modify the wrong commit
That last point is notable. It is a very specific edge case that Anthropic clearly encountered in production. If the model runs git commit and a hook fails, the commit never happened. If the model then retries with --amend, it would modify the previous (unrelated) commit. The prompt explicitly warns against this. This level of edge case handling tells you a lot about how many failure modes they have already hit.
Prompt Engineering Patterns Worth Stealing
If you are building AI-powered tools, the Claude Code system prompt is a masterclass in production prompt engineering. Here are the patterns that stand out.
1. Structured Sections with Clear Hierarchy
The prompt is organized into distinct sections: tool definitions, usage guidelines, safety rules, workflow instructions. Each section has a clear purpose. There is no ambiguity about which rule applies where. This is not a flat list of instructions. It is a document with architecture.
2. Explicit Edge Case Handling
Rather than writing general rules and hoping the model handles edge cases, Anthropic writes out the edge cases directly. "If a pre-commit hook fails..." "If the file is too large..." "If there are no changes to commit..." Every branch is specified.
3. Negative Instructions
The prompt uses "NEVER" and "DO NOT" heavily. This is deliberate. Language models respond better to explicit prohibitions than implicit expectations. Instead of "be careful with git operations," the prompt says "NEVER run force push to main/master." No room for interpretation.
4. Reasoning Alongside Rules
Many rules include the reason why. "Prefer adding specific files by name rather than using git add -A, which can accidentally include sensitive files." The model performs better when it understands the intent behind a rule, not just the rule itself.
5. Workflow Templates
For complex multi-step operations like creating commits or pull requests, the prompt provides numbered step-by-step workflows. It even includes example code blocks showing the exact format to use. This removes ambiguity from multi-step tasks where the model might otherwise improvise.
How This Compares to Open Source Alternatives
Open source coding agents like Aider, Continue, and OpenHands take different approaches. Most use shorter, more general system prompts and rely on the model's training to handle edge cases. Claude Code goes the opposite direction: extremely detailed, extremely specific, covering every scenario the team has encountered.
The trade-off is clear. Anthropic's approach uses more of the context window on instructions, leaving less room for the actual conversation. But it produces more predictable behavior. When you are building a product used by hundreds of thousands of developers, predictability matters more than flexibility.
Open source tools tend to be more modular. They let you swap models, customize prompts, and extend behavior through plugins. Claude Code's prompt is monolithic by design. It is one big document that assumes Claude as the model. No abstraction layers, no model-agnostic patterns. This is prompt engineering for a single model at scale.
The Kairos Connection
One thing I noticed while reading the system prompt: it is designed to be extended dynamically. The prompt includes placeholder sections where additional context gets injected at runtime. This maps directly to the Kairos assistant mode I covered earlier, where Claude Code can operate as a proactive background agent. The base system prompt stays the same, but Kairos adds its own instructions on top.
This modular injection pattern is how Anthropic supports features like MCP (Model Context Protocol) servers, custom slash commands, and project-specific instructions from CLAUDE.md files. The system prompt is not static. It is a template that assembles itself based on the user's configuration.
What Developers Should Take Away
The Claude Code system prompt is probably the most sophisticated production prompt that has been publicly exposed. It is not clever. It is thorough. Every rule exists because something went wrong without it. Every edge case is documented because a user hit it.
If you are building AI agents, the lesson is simple: write your prompts like you are writing code. Structure them. Test them against edge cases. Include the reasoning. Be explicit about what the model should never do. And assume that every failure mode you can imagine will eventually happen.
The full source analysis with architecture details, hidden features, and more is in the main leak breakdown.
Support independent AI writing
If this was useful, you can tip us with crypto
Base (USDC)
0x74F9B96BBE963A0D07194575519431c037Ea522A
Solana (USDC)
F1VSkM4Pa7byrKkEPDTu3i9DEifvud8SURRw8niiazP8