[BUG] Custom output styles cannot set `turnReminder`, so they steer weaker than built-ins by construction
What's Wrong?
Built-in output styles carry two payloads: a prompt injected once into the system prompt, and a turnReminder re-injected after every user turn and every tool-result batch. Concise sets turnReminder to "Be concise: lead with the result, skip preamble and narration, keep only what the user needs." Proactive sets its own.
Custom file-based output styles get only the first. The loader builds its object from frontmatter with no turnReminder key:
{name, description, prompt, source, baseDir, keepCodingInstructions}
The built-in registry sets turnReminder alongside prompt; the custom-style path has no way to populate it. A custom style is therefore injected once at session start and never re-fires, while a built-in re-asserts itself on every turn.
Custom styles appear in the /config picker and are documented as a first-class extension point, so the asymmetry is invisible — a user who writes stricter rules than Concise still gets weaker steering, with nothing indicating why.
What Should Happen?
Custom output styles should be able to set a per-turn reminder, via a frontmatter key such as:
---
name: my-style
description: ...
turn-reminder: Lead with the result; no preamble.
---
Absent that, /config should indicate that custom styles do not re-assert per turn, so the weaker steering is at least visible.
Steps to Reproduce
~/.claude/output-styles/test.md:
````
---
name: test
description: test style
---
Never begin a response with "Let me" or "I'll".
- Set
"outputStyle": "test"in~/.claude/settings.json, restart. - Confirm loaded — the system prompt contains
# Output Style: testand the rule. - Observe: no reminder text follows user turns or tool results.
- Switch to
"outputStyle": "Concise", restart. Observe "Be concise: lead with the result, skip preamble and narration, keep only what the user needs." after every user turn and every tool-result batch.
The difference in injection frequency is directly observable in both cases.
Is this a regression?
No, this never worked.
Claude Code Version
2.1.237
Additional Information
Related, same theme of custom styles being second-class relative to built-ins:
- #86490 — a loaded custom style drifts over a session; no mechanism identified
- #85246, #86599 — custom styles missing from the
/configpicker
Environment
- Claude Code version: 2.1.237
- Platform: Anthropic API
- OS: macOS
- Terminal: Terminal.app
- Model: Opus
- Regression: No, this never worked
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗