Opus 5 too verbose in Claude Code? It gets the short system prompt: how to force the long preset with an env var
Opus 5 in Claude Code runs on a short system prompt with no anti-verbosity rules. Set CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0 to force Sonnet 5’s long preset.

Luca Di Domenico
· 2 min read
In short
Claude Code uses two different system prompts depending on the model: Opus 5 gets the short version (about 11,000 characters), Sonnet 5 the long one (about 29,000), where nearly all the anti-verbosity rules live. That’s why Opus 5 fills your code with comments and generates .md files you never asked for. The fix is to set CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0 in ~/.claude/settings.json: it forces the long preset, anti-verbosity rules included, on Opus 5 too.
đź§ą Opus 5 fills your code with pointless comments, generates .md files you never asked for, and answers you with two pages of text? Almost everyone blames the model. The cause is somewhere else.
Two system prompts, one flag tied to the model
Claude Code doesn’t use one system prompt with small per-model differences. It uses two completely different ones, and an internal flag tied to the model decides which one you get.
Opus 5 gets the short version (about 11,000 characters). Sonnet 5 gets the long one (about 29,000). And nearly all the rules that keep verbosity in check live in the long version.
The comment policy Opus 5 gets
Translated: nobody is asking Opus 5 to be concise. On comment policy it gets a single line:
“Write code that reads like the code around it: same comment density, naming, and style.”
The long version, on the other hand, spells it out: no comments when the why is obvious, no multi-paragraph docstrings, and no planning or analysis documents unless you ask for them.
The fix: CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0
đź’ˇ The good news: you can force the long version on Opus 5 too. One line in ~/.claude/settings.json:
"env": { "CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT": "0" }
What the values mean:
1) 0 → forces the long preset, the one with the anti-verbosity rules. This is the one you want.
2) 1 → forces the short preset (on Opus 5 nothing changes: it already has it by default).
The variable’s behavior is documented in the inventory of environment variables extracted from the Claude Code CLI (v2.1.202): a truthy value forces the simple system prompt, a “disable” value turns it off.
Remove the cause instead of patching the symptom
Before adding skills, hooks, or ten lines to your CLAUDE.md to tame verbosity, try switching preset: that way you remove the cause instead of patching over the symptom.
Having fewer hand-written instructions isn’t always better. Sometimes you just need to turn on the ones your tool already ships with.
How do you keep Opus 5 concise: with this env var, with rules in your CLAUDE.md, or with a command like /talk-normal?
Sources
- Claude Code CLI Environment Variables — GitHub Gist — Inventory of environment variables extracted from the Claude Code CLI v2.1.202, accessed August 2026: a truthy value of CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT forces the simple system prompt, a “disable” value turns it off
- Piebald-AI/claude-code-system-prompts — GitHub — Repository cataloguing every part of the Claude Code system prompt, updated with each CLI release; accessed August 2026 for the prompt’s structure and the rules it contains
Want to know what this means for your product?
If you're building software with AI and want a second opinion on how you're working, tell me about your project.