- To use a built-in style, pick one from the built-in output styles and switch to it.
- To write your own instructions, create a custom output style.
An output style gives Claude instructions to follow. It doesn’t guarantee that something always happens or never happens. Some needs fit a different feature:
- For what Claude should know about your project, use CLAUDE.md.
- For something that has to happen every time, such as formatting after each edit or blocking a command, use a hook.
- For skills, subagents, and the other options, see Choose between an output style and other features.
Built-in output styles
Claude Code starts in the Default style, its standard instructions for completing software engineering tasks. Each of the four other built-in styles keeps those instructions and adds its own. This table shows what each style changes about a session and when it fits:Default
Default means no output style is selected. Claude Code adds no style instructions, and Claude works from Claude Code’s standard system prompt, which is written for software engineering tasks.default appears in the /output-style list with the other styles, so you select it the same way.
Proactive
In the Proactive style, Claude starts implementing as soon as you send a task. It makes reasonable assumptions about routine decisions rather than stopping to ask, and it doesn’t switch to plan mode unless you ask for a plan. You can redirect it at any point. The style’s instructions also tell Claude to check with you in the conversation before an action that deletes data or changes a shared or production system. That check is an instruction Claude follows and is separate from permission prompts. Switching to the Proactive style doesn’t change your permission mode. Your permission mode still decides which tool calls run without asking you, so permission prompts appear the same way they did before you switched.Concise
In the Concise style, the first sentence of a response states what happened or what the answer is. Claude leaves out the lead-in, the step-by-step narration, and the closing recap, and answers a simple question in one to three sentences. It does the engineering work as thoroughly as in the Default style. Requires Claude Code v2.1.237 or later. Claude still writes at full length in these cases:- Anything you ask for: when you ask for an explanation or more detail, Claude answers in full.
- Anything you need in order to act safely: error reports, failing test output, security warnings, and confirmations for destructive actions keep their complete content.
Explanatory
In the Explanatory style, Claude does the task the way it does in the Default style and adds short explanations of why it made the choices it made. Each explanation appears in the conversation, before or after the code it’s about, in a block labeledInsight. The explanations aren’t written into your files as comments.
An Insight block carries two or three points about your codebase or the code Claude wrote, such as this one after adding an API endpoint:
Learning
In the Learning style, Claude adds the sameInsight blocks as the Explanatory style and also asks you to write some of the code. Claude handles routine implementation itself. When it reaches a piece with a real design decision, such as error handling, a data structure, or business logic with more than one valid approach, it leaves a few lines for you.
Claude marks the spot with a TODO(human) comment in the file, then sends a request that says what’s already built, what to write, and what to weigh:
TODO(human) comment and tell Claude when you’re done. Claude responds with one Insight about your code and continues the task.
Change your output style
Pick a style with the command, a menu, or a settings file. The command and both menus save your choice to.claude/settings.local.json at the local project level.
-
/output-stylecommand: run/output-style <style>to switch, for example/output-style concise. With no argument, the command lists the styles you can pick and marks the current one. The command also works in non-interactive mode and Agent SDK sessions, and from the mobile app or web via Remote Control, where you can list and select only built-in styles. Requires Claude Code v2.1.269 or later. -
Terminal menu: run
/configand select Output style to pick a style from a menu. -
VS Code extension: open the command menu with
/and select Output styles to pick a style, including your custom styles. Requires Claude Code v2.1.257 or later. -
Desktop app: set the
outputStylefield in a settings file, for example.claude/settings.local.json, the file the terminal menu writes. When you run/configthere, Claude Code opens Settings > Claude Code rather than a menu.
outputStyle field directly in a settings file:
Proactive, Concise, Explanatory, and Learning. A value that doesn’t match a style name exactly, such as explanatory, gives you the Default style. The /output-style command ignores case.
To make a style your default across projects, set outputStyle in ~/.claude/settings.json. A project’s own settings files take precedence over that value.
When you switch styles mid-session, Claude uses the new style starting with your next message. For what that first message costs in prompt caching, see Changing output style. Before v2.1.251, the new style applied only after you ran /clear or started a new session.
Create a custom output style
A custom output style is a Markdown file: frontmatter for metadata, then the instructions for Claude. In the VS Code extension, you can also create the file from the Output styles menu rather than writing it by hand. This requires Claude Code v2.1.261 or later.1
Create a Markdown file
Save it at one of three levels. The file name becomes the style name unless you set
name in the frontmatter.- User:
~/.claude/output-styles - Project:
.claude/output-styles - Managed policy:
.claude/output-stylesinside the managed settings directory
.claude/output-styles/ between the working directory and the repository root. When more than one of these nested directories defines a style with the same name, Claude Code uses the one closest to the working directory.2
Add frontmatter and instructions
Decide whether to keep Claude Code’s software engineering instructions. Set
keep-coding-instructions: true if you’re changing how Claude communicates but still want it coding the same way. Leave it out if Claude won’t be doing software engineering.This example leads every explanation with a diagram while keeping Claude’s coding behavior:3
Switch to your style
Run
/output-style <style> in the terminal, or run /config and select your style under Output style. Claude uses the new style starting with your next message. In the terminal, Claude Code reads style files when it starts, so if you create or edit one during a running session, restart Claude Code to pick up the change.output-styles/ directory.
Frontmatter reference
Configure an output style with YAML frontmatter between--- markers at the top of the file. All fields are optional, and field names use lowercase words separated by hyphens. A misspelled field is ignored without an error. If the YAML doesn’t parse, the style still loads under its file name with no fields set; run claude --debug to see the parse error.
Choose between an output style and other features
An output style applies to every response in a session. It’s an instruction Claude follows, so nothing enforces it. When what you want is narrower than every response, or has to happen without fail, another feature fits better. This table matches what you want to the feature that does it:
These features combine. For example, you can use CLAUDE.md for what Claude should know, an output style for how it responds, and a hook for anything that has to be guaranteed. Extend Claude Code compares the rest of the extension features.
How output styles work
An output style changes the instructions Claude Code gives Claude.- Claude Code sends the active style’s instructions with every request.
- Custom output styles leave out Claude Code’s built-in software engineering instructions, such as how to scope changes, write comments, and verify work, unless
keep-coding-instructionsis set totrue.
Related resources
- Settings: where the
outputStylefield lives and how settings precedence works - Permission modes: how the Proactive style compares to auto mode
- Plugins: package and distribute output styles alongside skills, hooks, and agents
- Debug your configuration: diagnose why an output style isn’t taking effect