AI Development

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

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

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.

Luca Di Domenico LogoTell me about your project
Claude CodeOpus 5System PromptContext Engineering
Opus 5 verbose in Claude Code: blame the short system prompt | Luca Di Domenico