Override a Prompt
Some built-in prompt texts can be changed. This page lists each one, says whether you can replace it, append to it, or turn it off, and shows how. Most rows were tested live against the local stub (source "Probe"). The rest come from reading the program (source "The program") and were not run.
- Replace means the original text is gone and yours takes its place.
- Append means the original stays and your text is added.
- Turn Off means the text is removed.
- Indirect means the text stays the same, but it tells the model to use something you control.
- No means we found no way to change the text.
A subscription (OAuth) login gets the same main system prompt text and the same 12 default tools as an API key (live probe live.oauth-parity on 2.1.307 and 2.1.308, 2026-10-22, and on 2.1.309, 2026-10-23, with the prompt Reply with 'OK'.; the text matched once model names, temp paths, and the per-run billing hash were masked). It also got the same Explore subagent prompt in a live run on 2.1.305 (2026-10-21), which was not run again, because the model decides by itself whether to start Explore. The Explore request had the same 7 tools: Bash, ListAgents, Read, ReportFindings, Skill, DeferredToolPlaceholder, and ToolSearch. In the 2.1.305 run, we compared the main request with an API key request on the same model (Opus 5.5). The system prompt differed only in the memory folder path. Other differences:
- The two cached system blocks and
messages[1](rolesystem) have a cachettlof"1h"with a subscription. The API key request had nottl. thinking.displaywasupdateswith a subscription andomittedwith an API key.- The
ScheduleWakeupdescription is different. With a subscription it says requests use a 1-hour prompt-cache TTL. With an API key it says the default 5-minute TTL. Both say the program clamps delays to 60 to 3600 seconds. - The first user message listed
RemoteTriggeras a deferred tool and ascheduleskill only with a subscription, and thecode-reviewskill text was longer there (cloud review and a--postoption). - The request metadata IDs differ, as expected.
Agent Merge Rule
Agents are merged by name. The later source wins: built-in, plugin, user (~/.claude/agents), project (.claude/agents), --agents JSON, managed settings. A same-named file therefore replaces a built-in agent completely: body, tools, and model. This was tested for Explore (project file) and general-purpose (--agents).
Main System Prompt
| Prompt | Override | How | Source |
|---|---|---|---|
| Main system prompt | Replace | -- or --. | Probe |
| Main system prompt | Append | -- or --. | Probe |
| Main thread agent | Replace | --. | Probe |
| Auto memory section | Turn Off | CLAUDE_ (tested). auto setting (not tested). | Probe |
| Git commit and PR rules in the Bash tool text | Turn Off | include (tested) or CLAUDE_ (not tested). | Probe |
| Chrome integration prompt | Turn Off | CLAUDE_. | The program |
Resume prompt (Continue from where you left off.) | Replace | CLAUDE_. | The program |
| Managed memory | Append | claude in managed settings only. CLAUDE.md-style text is added as org memory. | The program |
Subagents and Built-in Agents
| Prompt | Override | How | Source |
|---|---|---|---|
| Explore agent | Replace | A same-named agent file, .. You get no read-only tool list unless you set tools. | Probe |
| Explore and Plan agents | Turn Off | CLAUDE_ removes both from the agent list. | Probe |
| Plan agent | Replace | Same rule as Explore: a same-named agent file. | The program |
| general-purpose agent | Replace | -- JSON with the same name, or a same-named agent file. | Probe |
| statusline-setup agent | Replace | A same-named agent file. | The program |
| claude agent | Replace | A same-named agent file. | The program |
| claude agent | Turn Off | CLAUDE_ or the disable setting. | The program |
| web-fetch agent | Replace | A same-named agent file. Off by default. CLAUDE_ turns it on and CLAUDE_ turns it off. | The program |
| claude-code-guide agent | Replace | A same-named agent file. This rests on the shared agent merge code and was not tested for this agent. Not offered when the entry point is sdk-, sdk-, or sdk-, so it is not available in -. The interactive screen offers it (checked on 2.1.308). | The program |
| Workflow subagent | No | No override found. | The program |
| comment-thread-analyst agent | No | No override found. | The program |
| Coordinator and worker prompts | No | No text override. Coordinator mode replaces the agent list and the main prompt. -- is still added. | The program |
| All subagent prompts | Append | -- or --. Print mode only. Hidden from --. It reaches nested subagents. | Probe |
| All built-in agents | Turn Off | CLAUDE_ in print mode removes the whole agent list. | Probe |
| Memory text for subagents | Turn Off | Set CLAUDE_ and the memory block is not appended. Only matters with memory stores. | The program |
| Custom agent fields | Append | Frontmatter fields initial, observer, observer, omit, and skills are text you set. | The program |
| Observer prompt | Append | observer in agent frontmatter. The base text is fixed. | The program |
The flags --system-prompt and --append-system-prompt do not reach built-in subagents. See Subagent with --system-prompt and --append-system-prompt.
Slash Commands and Skills
| Prompt | Override | How | Source |
|---|---|---|---|
| /init | Replace | A command file, .. ~/. works too. | Probe |
| /security-review | Replace | Same rule as /. | The program |
| /simplify | Replace | A same-named skill, .. The skill wrapper adds a Base directory line. | Probe |
| /debug | Replace | Same rule as /. | The program |
/code-review and its / alias | Replace | Same rule as /. | The program |
| Other bundled skills: batch, claude-api, dataviz, deep-research, doctor, fewer-permission-prompts, goal, insights, loop, plugin-authoring, run, run-skill-generator, team-onboarding, update-config, verify, workflow-authoring | Replace | A same-named skill file. | The program |
/recap, /auto-mode-setup, and /autocompact sent no model request, so they have no prompt to change. /pr-comments does not exist in 2.1.311.
Output Styles
| Prompt | Override | How | Source |
|---|---|---|---|
| Built-in styles: Explanatory, Learning, Proactive, Concise | Replace | You cannot edit them. A custom style file with the same name, such as ~/., replaces one. | Probe |
Compaction
| Prompt | Override | How | Source |
|---|---|---|---|
| Compaction prompt | Append | Text after / goes under Additional Instructions:. | Probe |
| Compaction prompt | Append | Standard output of a Pre hook goes in the same place, after your text. | Probe |
| Compaction prompt | Indirect | A ## Compact Instructions section in CLAUDE.md is not copied into the compaction text. The compaction text tells the model to look for it in the context it already has. | Probe |
The base text stays in every case. The program picks one of several base texts by a server flag. The control text was seen.
Hooks
| Prompt | Override | How | Source |
|---|---|---|---|
| Prompt hook | No | You write prompt ($ARGUMENTS is the hook JSON) and model. The system text is fixed. It is different on Stop. | Probe |
| Agent hook | No | You write prompt and model (default Haiku). The system text is fixed and has a Structured tool. | Probe |
Auto Mode
| Prompt | Override | How | Source |
|---|---|---|---|
| Auto mode classifier | Append | The auto setting has allow, soft_, hard_, environment, and classify. "$defaults" keeps the built-in rules at that spot. | Probe |
| Auto mode classifier | Replace | A list without "$defaults" replaces the built-in rules. In the test, soft_ lost 72 default rules. | Probe |
The autoMode object is also sent to the server in safeguards.classifier_context on the main request. The test used the local fallback classifier.
Plan Mode
| Prompt | Override | How | Source |
|---|---|---|---|
| Plan mode workflow | Replace | -- (hidden flag) replaces the phases. The read-only preamble and the Exit footer stay. | Probe |
Other
| Prompt | Override | How | Source |
|---|---|---|---|
| Tool descriptions | No | --, --, and -- only add or remove tools. tool is an SDK option for names, not text. MCP tool text comes from the server. | Probe |
| Session title and branch name | No | No override found. See also session naming. | The program |
| Memory selection and extraction | No | No override found. | The program |
| Surface prompts | No | No override found. The entry point picks the text. | The program |
SDK system presets | No | The SDK package passes flags to the program. The program has only -- and --. Not tested. | The program |
Examples
Replace the Explore Agent
Save this as .claude/agents/Explore.md. The name must match.
---
name: Explore
description: Find files and answer questions about the code.
tools: Read, Grep, Glob
---
You search the codebase and report what you find. Do not edit files.
Append to Every Subagent
This works in print mode only. The flag is hidden from --help.
claude -p --append-subagent-system-prompt "Answer in one short paragraph." "Use a subagent to find where login is handled."
Keep the Auto Mode Defaults
Add your own rule and keep the built-in rules with "$defaults".
{
"autoMode": {
"soft_deny": ["$defaults", "Never push to the main branch."]
}
}
Replace a Bundled Skill
Save this as .claude/skills/simplify/SKILL.md. The skill name matches the built-in /simplify.
---
name: simplify
description: Simplify the code I changed.
---
Review the changed code. Remove dead code and extra layers. Keep behavior the same.
Cases with No Override
- Tool descriptions. You can add or remove tools. You cannot change their text.
- Hook prompt system text. You write only the
promptandmodel. - Subagents and the main thread flags.
--system-promptand--append-system-promptdo not reach built-in subagents. Use--append-subagent-system-prompt. - Compact Instructions in CLAUDE.md. The
## Compact Instructionssection is not copied into the compaction text. It works only because the model is told to look for it in its context.