[FEATURE] Please don't remove Output-Styles!
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
## Feature Request: Retain Output Styles Alongside Plugin System
### Summary
Deprecating output styles in favor of plugins is a significant regression in UX. The plugin-based approach introduces unnecessary complexity and friction for a feature that currently works well.
### Why Output Styles Should Stay
Simplicity & Usability:
- Easy swapping: Output styles allow instant persona switching without difficult configuration
- Zero setup: Work out of the box, no hooks to configure or debug
- Easily shareable: Simple text files anyone can use immediately
- Easy shut off: Easy to use the default - hooks by comparison require changing your configuration JSON files
Technical Superiority:
- Better adherence: Baked into system prompt = stronger instruction following (assumption)
- Token efficient: Minimal token overhead (assumption)
- Actually works: Output styles are stable and reliable (well tested by me in https://github.com/kylesnowschwartz/SimpleClaude/tree/main/simple-claude/output-styles)
Plugin System Problems:
- Difficult to swap: Changing hooks requires more steps than changing a setting
- High configuration overhead: Unnecessary complexity for simple persona changes
- Buggy implementation: Exit code 2 broken for plugin hooks (see #10412)
- Poor documentation: Users struggling to understand hook system is common for complex use cases
Proposed Solution
Proposal
Keep output styles as first-class citizens. Plugins are fine for extending functionality, but they're overkill for simple persona/style preferences. Don't force users into a complex system for something that currently just works.
The fun factor matters too - people enjoy customizing their Claude's personality. Making that harder serves no one. Certainly not me!
Thanks for your time.
Alternative Solutions
_No response_
Priority
High - Significant impact on productivity
Feature Category
Configuration and settings
Use Case Example
_No response_
Additional Context
_No response_
28 Comments
literally this i just made my own issue about this it is a good feature they didnt need to "fix"
Output styles are also trivially portable, unlike hooks (#10675)
Rather than the session start hook that Anthropic is suggesting we use, an alternative could be some kind of
--append-system-prompttool that loads the configured output style? I would hate to replace a good, working feature with a janky 3rd-party add-on though. I also don't like the idea of having 'conflicting' styles within the system prompt. Which one wins?!I have an output style that instructs Claud to output in structured HTML using details from the HTML specification. It's amazing. You can basically _stream_ html responses. This also works for YAML, HTML, etc. Output styles are NOT just funny little instructions for claude to pretend to be a pirate.
On the left is the result of a question asked about kitty terminal with the output style on. On the right is what the output looks like if I use the --append-system-prompt cli flag, e.g.
claude --append-system-prompt "$(command cat ~/.claude/output-styles/html-structured.md)"The difference is plain. Save output-styles.
<img width="1920" height="1056" alt="Image" src="https://github.com/user-attachments/assets/cd8e76aa-b03f-4ac1-846d-8fba6bdf6fa2" />
I'm using output styles to replace system prompt about coding with some other tasks (business-related). They are crucial to my workflow. I was able to achieve a lot because of the changed system prompts. If you do not undeprecate output styles or add any ability to replace claude's system prompt completely for the main agent, I'm leaving immediately as soon as my business, DevOps and sysadmin styles stop working.
Based on the documentation, plugins do not replace the system prompt, they append to the user prompt. And I cannot possibly use subagents every single time I submit my prompt, it's ridiculous. I used output styles because they REMOVED instruction about coding from the system prompt. What anthropic did with hooks is NOT the same as output styles.
Remove plugins instead - they are gimmicks.
I've performed more testing using https://github.com/badlogic/cchistory to trace how the system prompt changes with and without output styles, and also how the
--system-promptand--system-prompt-fileflags (both pretty much undocumented, but real) change the prompt.The truth is - output-styles is a minimal change to the overall prompt. Some prompting about tone is removed, and your output style is just added in. It should be easy to make a tool to replace output-styles if they remove the feature.
To be continued.
@kylesnowschwartz Can you provide more info on the differences please, maybe post raww diffs/files?
I want to know which workaround to choose for my workflows now. Would be grateful to you for that
@Nek-12 As a workaround for now the easiest thing to do is start claude like so:
claude --system-prompt-file <path_to_output_style.md>I agree with the above: a session start hook is a clunky alternative to output styles, and adherence won't be as good.
they already dropped support for output-style from their end: in 2.0.28 my output-style is no longer effective as of Oct31, 2025. They said in their official doc that the drop will be on Nov 5th.
@ww2283 I'm not seeing the same, my output style is still working in 2.0.30 (there's a prominent notice about the deprecation when starting the session, but the output style is being loaded, for now).
@milobird good to know; perhaps they are gradually rolling out. my custom style is very "stylish" so the non-effectiveness is instant and very obvious during daily use.
This is a substantial breaking change. If nothing else, the removal timeline should be extended to give developers and teams time to find alternatives.
We make heavy use of output styles for certain workflows. This gives us an important level of instruction: more specific than CLAUDE.md, but not as task specific as slash commands. For example, we use prompt-engineer and technical-pm styles across a number of different commands.
Overall, there might be some viable alternatives for us, but I'm really not excited about having less than a week to change our workflows. This feels like a wholly unnecessary scramble.
Just another upvote for maintaining output-styles. The alternatives don't seem to properly capture the capabilities, let alone user friendliness.
There is no token-efficient way to replace this on a per-agent basis. DO NOT remove output styles, please! Save output styles! I use these with every project, it is fundamental to my method of working!
Learning output style has been the best across the variations of Gemini and ChatGPT, I came back to Claude almost exclusively because of this and how much the vs code extension has improved my experience.
Agree. Don't remove
👋 Boris from the Claude Code team here.
Output styles are now more powerful, and easier to customize. You can add the same instructions you previously put in your output style to your CLAUDE.md, or use hooks to inject them at each turn, or use --system-prompt, --append-system-prompt, or --append-system-prompt-file to append to or fully swap out the system prompt.
Roughly, in order from weakest prompting to strongest prompting:
For most use cases 1 or 2 are sufficient, but if you want really strong adherence, 3-5 will give even better results.
For people that previously used the Learning output style, run:
And for Explanatory output style, run:
We want to keep Claude Code simple, and are always thinking about how we can generalize features to make them both simpler and more extensible for people using Claude Code.
Please keep the feedback coming!
@bcherny I thank you sincerely for your direct response. As you noted, adherence is the real issue. My testing found much better adherence using the existing output-style feature compared with --append-system-prompt.
Using the
--system-prompt-fileto replace the system prompt entirely works far better. My concern there is that we lose some additional instructions that your team includes in the system prompt that help make Claude-Code go.Currently, my theoretical work-around is to inject my output style in a facsimile of the current system-prompt, similar to how output styles work now. But, your system prompts are not open-sourced, leading me to have to get it sneakily through 3rd-party tooling.
Consider publishing a document that shows Claude-Code's current system prompt - including the dynamically injected environment and datetime sections - for users to tweak more easily.
Thanks again for creating my favorite engineering tool.
I'm hearing two things from folks:
Going to brainstorm with the team and get back to this thread with how we can make these even better than before.
@bcherny I’m using an output style to give assistant-specific instructions which are needed for the whole multi-agent system we’ve built to function smoothly, eg. instructions for creating dialogue files and how to use them to engage with sub-agents and even other instances of Claude Code. The output style is configured in project settings, so it functions as default behavior for all developers using the repo.
Moving the instructions to CLAUDE.md isn’t viable because CLAUDE.md is also loaded into the context window of sub-agents, and the instructions contain details about using sub-agents and interacting with the developer directly which are not relevant to sub-agents.
—system-promptor—append-system-promptwould probably do the job, but I don’t want I have to tell everyone on my team that they have to launch Claude Code with this special argument or else our setup will be broken! We have designers using CC with our repo too and it was hard enough to get them to use the terminal even just to typeclaude…!We’re already using the session start hook to drop some structured environment data into the session, I could put the instructions into a field there but it seems like they’d be rather “buried” in comparison to appearing in the system prompt, and it feels like I’m working around an odd gap in the system. Adherence is unlikely to be as good — if only because the instructions will appear much later in the context window (after the tool descriptions, which are quite heavy).
All this said, I have no objections to the killing of output styles as long as there’s some other way to modify or replace the assistant’s system prompt via project settings (not only CLI arguments) — though I understand others feeling differently if they want to be able to switch between styles on the fly.
@bcherny I would like to elaborate around point 1 here. The accurate description should be "there currently is a not a way (CLAUDE.md, hooks, etc.) to match the performance of output styles".
Output styles carries two properties that are invaluable: it is persistent across sessions, and is easily triggered with instant effect. The five candidate substituents you mentioned either is not as persistent, or is not as easily triggerable. It's not a direct append nor a direct complete swap, but rather a "masked" plugged-in method to existing system prompt, if my understanding is correct.
In short, if a new method has to substitute the current output-style, then please fulfill the current two aspects it now currently carries.
On a side note: from the current system prompt posted elsewhere, it seems that it relies heavily on examples and counter-example pairs. My observation when I build agents or skills with CC is that I believe this pattern is true and a default behavior by CC, that it wants to write examples and counter-example pairs. The result is very bloated body for agents, skills, commands etc that the bloats in effect will hamper the performance of these tools in use. Removing these example/counter-example pairs will dramatically increase the performance of the tools. I suggest re-consider the system prompt on this aspect.
Hi all, thank you for your input. I was the one responsible for executing both the initial launch and the deprecation of output styles. I recognize that the deprecation process has landed poorly. I apologize for the churn that this has caused.
After reviewing the suggestions that we had initially proposed against your feedback, the CC team has decided to keep output styles working indefinitely (previously announced as removed on 2025/11/05 or later), at least until we are confident that we can offer you strictly better alternatives. We do believe that with the proliferation of prompting options like CLI/SDK flags (
--system-prompt-file,--append-system-prompt,--system-prompt); CLAUDE.md; and hooks (SessionStart, UserPromptSubmit, Stop), there must some path toward simplifying the extension points we offer.I want to highlight the following about output styles:
/output-styles:new.We will update the docs and in-app copy to reflect this decision.
Thanks so much for listening! If you do go down the path of offering "strictly better alternatives," please engage with the userbase so we have a chance to be heard, and so everyone can be certain that those alternatives _do_ work better for all users and use cases. Thanks for the great product and the work you're all doing at Anthropic.
Thanks team for listening to feedback and @dicksontsai's latest update. Agreed that there is certainly a path forward towards simplification of the extension points on offer. I have many opinions on that - but I don't need to offer them here ;)
Closing this issue as resolved.
You didn't do a very good job of comparing them then. Output styles removes about 3/4s of the original system prompt. Use cctrace to FULL trace of the system prompt. It is NOT trivial IN THE LEAST.
Hi @dicksontsai - thank you. For what it's worth, I think the issue with Output Styles is the feature's name. It's a library of System Prompts, so the name should make it clear.
System Presets? Personalities?
The Claude Agent SDK has two very similar concepts -
SystemPromptPresetandAgentDefinition.Maybe borrow the terminology from there.
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.