Skip to main content

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​

QuestionAnswer
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.
StatusDocumented Undocumented

The Surfaces​

SurfaceUse it whenPage
Settings keysYou want a stored value that stays between sessions.Settings Files and Scopes
Environment variablesYou want a value for a shell, a script, or a CI job.Environment Variables
CLI flagsYou want a change for one run only.CLI Flags
HooksYou want your own code to run on an event, and maybe block it.Hooks
Skills and commandsYou want a reusable prompt or a /name shortcut.Skills and Commands
SubagentsYou want a helper with its own prompt, tools, and model.Subagents
PluginsYou want to bundle and share several of these.Plugins
MCP serversYou want Claude to use tools from another program or service.MCP
Mod APIYou want code that changes Claude Code itself, such as new UI or event handlers.Mod API Overview

Behavior and Safety​

I want to ...StatusHowPage
Allow or block a tool call without a promptDocumentedpermissions.allow, permissions.deny, and permissions.ask rulesPermission Rules
Start in a different permission modeDocumented--permission-mode flag or the permissions.defaultMode settingPermission Modes
Let a classifier approve safe actionsDocumentedAuto mode and its rulesAuto Mode
Limit what shell commands can touchDocumentedThe sandbox settingsSandbox
Block a command with my own logicDocumentedA PreToolUse hookHook Events
Understand why a call was allowed or askedDocumentedRead the flowPermission Flow
Let managed policy lock a valueDocumentedManaged settingsEnterprise Settings

Models and Cost​

I want to ...StatusHowPage
Pick the modelDocumented/model, --model, the model setting, or ANTHROPIC_MODELModel Settings
Change how hard the model thinksDocumentedThe effort and thinking settingsModels and Effort Variables
Use Bedrock, Vertex, or FoundryDocumentedProvider variablesModels and Providers
Change when old messages are summarizedDocumentedCompaction settings and variablesContext and Compaction Variables
Understand how a model is chosenDocumentedRead the flowModels
Route requests through a proxy or custom CADocumentedNetwork variablesNetwork and Proxy Variables

Instructions and Memory​

I want to ...StatusHowPage
Give Claude standing project adviceDocumentedCLAUDE.mdMemory and Rules
Apply advice only to some filesDocumentedA rule file with paths in .claude/rules/Memory and Rules
Turn off auto memoryDocumentedautoMemoryEnabled: false or CLAUDE_CODE_DISABLE_AUTO_MEMORY=1Memory and Rules
Change the tone or style of repliesDocumentedAn output styleOutput Styles
See the real system promptUndocumentedCaptured prompts on this sitePrompt Captures
Understand how the prompt is builtDocumentedRead the build stepsSystem Prompt
Add text to the system promptDocumented--append-system-promptCLI Flags

Tools and Automation​

I want to ...StatusHowPage
Run something after every file editDocumentedA PostToolUse hookHooks
Add my own /commandDocumentedA skill or a file in .claude/commands/Skills and Commands
Start a helper for one kind of taskDocumentedA file in .claude/agents/Subagent Frontmatter
Connect a database or an APIDocumentedclaude mcp add or .mcp.jsonMCP Config
Limit which MCP servers may runDocumentedMCP allow and deny settingsMCP Settings and Policy
Run Claude Code from a scriptDocumentedPrint mode with -pHeadless Mode
Drive it from my own programDocumentedStream JSON and the control protocolControl Protocol
Share my setup with a teamDocumentedA plugin and a marketplacePlugin Marketplaces

Screen and Terminal​

I want to ...StatusHowPage
Show my own status lineDocumentedThe statusLine settingStatus Line
Change theme, spinner, or noticesDocumentedInterface settingsInterface Settings
Change terminal behavior with variablesDocumentedUI and terminal variablesUI and Terminal Variables
Change keyboard shortcutsDocumented/keybindings opens ~/.claude/keybindings.jsonSlash Commands
Add a screen element or dialogDocumentedA mod that uses $.uiMod API UI

Sessions, Files, and Privacy​

I want to ...StatusHowPage
Continue or branch an old sessionDocumented--continue, --resume, /branchSessions and Storage
Keep sessions for a shorter timeDocumentedcleanupPeriodDaysCore Settings
Stop Claude Code from saving anythingDocumentedCLAUDE_CODE_SKIP_PROMPT_HISTORY or --no-session-persistenceSessions and Storage
Move the whole ~/.claude folderDocumentedCLAUDE_CONFIG_DIRFiles on Disk
Turn off telemetry or debug outputDocumentedTelemetry variablesTelemetry and Debug Variables
Know where a file livesDocumentedThe file mapFiles 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.

warning

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.

.claude/settings.json
{
"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.