What Can I Change
Claude Code has many places where you can change how it works. This page starts from what you want to do, and it points to the right place. Each row links to the page that lists every key, flag, or field.
At a Glance
| Question | Answer |
|---|---|
| Can you use it? | ✅ Yes. Find your goal in a table below and follow the link. |
| Can you change it? | Every row names the surface that changes the goal. |
| Can you turn it on or off? | The "How" column names the switch. |
| Where does it live? | The pages in Configure, Extend, and How It Works. |
| Status | Documented Undocumented |
The Surfaces
| Surface | Use it when | Page |
|---|---|---|
| Settings keys | You want a stored value that stays between sessions. | Settings Files and Scopes |
| Environment variables | You want a value for a shell, a script, or a CI job. | Environment Variables |
| CLI flags | You want a change for one run only. | CLI Flags |
| Hooks | You want your own code to run on an event, and maybe block it. | Hooks |
| Skills and commands | You want a reusable prompt or a / shortcut. | Skills and Commands |
| Subagents | You want a helper with its own prompt, tools, and model. | Subagents |
| Plugins | You want to bundle and share several of these. | Plugins |
| MCP servers | You want Claude to use tools from another program or service. | MCP |
| Mod API | You want code that changes Claude Code itself, such as new UI or event handlers. | Mod API Overview |
Behavior and Safety
| I want to ... | Status | How | Page |
|---|---|---|---|
| Allow or block a tool call without a prompt | Documented | permissions., permissions., and permissions. rules | Permission Rules |
| Start in a different permission mode | Documented | -- flag or the permissions. setting | Permission Modes |
| Let a classifier approve safe actions | Documented | Auto mode and its rules | Auto Mode |
| Limit what shell commands can touch | Documented | The sandbox settings | Sandbox |
| Block a command with my own logic | Documented | A Pre hook | Hook Events |
| Understand why a call was allowed or asked | Documented | Read the flow | Permission Flow |
| Let managed policy lock a value | Documented | Managed settings | Enterprise Settings |
Models and Cost
| I want to ... | Status | How | Page |
|---|---|---|---|
| Pick the model | Documented | /, --, the model setting, or ANTHROPIC_ | Model Settings |
| Change how hard the model thinks | Documented | The effort and thinking settings | Models and Effort Variables |
| Use Bedrock, Vertex, or Foundry | Documented | Provider variables | Models and Providers |
| Change when old messages are summarized | Documented | Compaction settings and variables | Context and Compaction Variables |
| Understand how a model is chosen | Documented | Read the flow | Models |
| Route requests through a proxy or custom CA | Documented | Network variables | Network and Proxy Variables |
Instructions and Memory
| I want to ... | Status | How | Page |
|---|---|---|---|
| Give Claude standing project advice | Documented | CLAUDE. | Memory and Rules |
| Apply advice only to some files | Documented | A rule file with paths in . | Memory and Rules |
| Turn off auto memory | Documented | auto or CLAUDE_ | Memory and Rules |
| Change the tone or style of replies | Documented | An output style | Output Styles |
| See the real system prompt | Undocumented | Captured prompts on this site | Prompt Captures |
| Understand how the prompt is built | Documented | Read the build steps | System Prompt |
| Add text to the system prompt | Documented | -- | CLI Flags |
Tools and Automation
| I want to ... | Status | How | Page |
|---|---|---|---|
| Run something after every file edit | Documented | A Post hook | Hooks |
Add my own / | Documented | A skill or a file in . | Skills and Commands |
| Start a helper for one kind of task | Documented | A file in . | Subagent Frontmatter |
| Connect a database or an API | Documented | claude mcp add or . | MCP Config |
| Limit which MCP servers may run | Documented | MCP allow and deny settings | MCP Settings and Policy |
| Run Claude Code from a script | Documented | Print mode with - | Headless Mode |
| Drive it from my own program | Documented | Stream JSON and the control protocol | Control Protocol |
| Share my setup with a team | Documented | A plugin and a marketplace | Plugin Marketplaces |
Screen and Terminal
| I want to ... | Status | How | Page |
|---|---|---|---|
| Show my own status line | Documented | The status setting | Status Line |
| Change theme, spinner, or notices | Documented | Interface settings | Interface Settings |
| Change terminal behavior with variables | Documented | UI and terminal variables | UI and Terminal Variables |
| Change keyboard shortcuts | Documented | / opens ~/. | Slash Commands |
| Add a screen element or dialog | Documented | A mod that uses $. | Mod API UI |
Sessions, Files, and Privacy
| I want to ... | Status | How | Page |
|---|---|---|---|
| Continue or branch an old session | Documented | --, --, / | Sessions and Storage |
| Keep sessions for a shorter time | Documented | cleanup | Core Settings |
| Stop Claude Code from saving anything | Documented | CLAUDE_ or -- | Sessions and Storage |
Move the whole ~/. folder | Documented | CLAUDE_ | Files on Disk |
| Turn off telemetry or debug output | Documented | Telemetry variables | Telemetry and Debug Variables |
| Know where a file lives | Documented | The file map | Files on Disk |
What You Cannot Change
Some parts are fixed in the program. You cannot edit the built-in tools, the permission engine, or the request format from a setting. You can still watch or shape them with a hook or a mod. The Architecture and Agent Loop pages show where each part sits.
Do not use Undocumented items in shared setups without a plan. They can change in any release without notice.
Example
You want Claude to run your formatter after each edit and to ask before it runs git push.
Two small settings do both.
{
"permissions": {
"ask": ["Bash(git push:*)"]
},
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [{ "type": "command", "command": "bunx prettier --write ." }]
}
]
}
}
The first part is a permission rule. The second part is a hook. Both live in the shared project settings file.