Claude Code settings
Configure Claude Code with global and project-level settings, and environment variables.
Claude Code offers a variety of settings to configure its behavior to meet your needs. You can configure Claude Code by running the /config
command when using the interactive REPL.
Settings files
The settings.json
file is our official mechanism for configuring Claude
Code through hierarchical settings:
- User settings are defined in
~/.claude/settings.json
and apply to all projects. - Project settings are saved in your project directory:
.claude/settings.json
for settings that are checked into source control and shared with your team.claude/settings.local.json
for settings that are not checked in, useful for personal preferences and experimentation. Claude Code will configure git to ignore.claude/settings.local.json
when it is created.
- For enterprise deployments of Claude Code, we also support enterprise
managed policy settings. These take precedence over user and project
settings. System administrators can deploy policies to
/Library/Application Support/ClaudeCode/managed-settings.json
on macOS and/etc/claude-code/managed-settings.json
on Linux and Windows via WSL.
Available settings
settings.json
supports a number of options:
Key | Description | Example |
---|---|---|
apiKeyHelper | Custom script, to be executed in /bin/sh , to generate an auth value. This value will generally be sent as X-Api-Key , Authorization: Bearer , and Proxy-Authorization: Bearer headers for model requests | /bin/generate_temp_api_key.sh |
cleanupPeriodDays | How long to locally retain chat transcripts (default: 30 days) | 20 |
env | Environment variables that will be applied to every session | {"FOO": "bar"} |
includeCoAuthoredBy | Whether to include the co-authored-by Claude byline in git commits and pull requests (default: true ) | false |
permissions | See table below for structure of permissions. |
Permission settings
Keys | Description | Example |
---|---|---|
allow | Array of permission rules to allow tool use | [ "Bash(git diff:*)" ] |
deny | Array of permission rules to deny tool use | [ "WebFetch", "Bash(curl:*)" ] |
additionalDirectories | Additional working directories that Claude has access to | [ "../docs/" ] |
defaultMode | Default permission mode when opening Claude Code | "allowEdits" |
disableBypassPermissionsMode | Set to "disable" to prevent bypassPermissions mode from being activated. See managed policy settings | "disable" |
forceLoginMethod | Use claudeai to restrict login to subscription plans only, console to restrict login to Anthropic Console (API usage billing) accounts only | claudeai |
Settings precedence
Settings are applied in order of precedence:
- Enterprise policies (see IAM documentation)
- Command line arguments
- Local project settings
- Shared project settings
- User settings
Environment variables
Claude Code supports the following environment variables to control its behavior:
All environment variables can also be configured in settings.json
. This is useful as a way to automatically set environment variables for each session, or to roll out a set of environment variables for your whole team or organization.
Variable | Purpose |
---|---|
ANTHROPIC_API_KEY | API key sent as X-Api-Key header, typically for the Claude SDK (for interactive usage, run /login ) |
ANTHROPIC_AUTH_TOKEN | Custom value for the Authorization and Proxy-Authorization headers (the value you set here will be prefixed with Bearer ) |
ANTHROPIC_CUSTOM_HEADERS | Custom headers you want to add to the request (in Name: Value format) |
ANTHROPIC_MODEL | Name of custom model to use (see Model Configuration) |
ANTHROPIC_SMALL_FAST_MODEL | Name of Haiku-class model for background tasks |
BASH_DEFAULT_TIMEOUT_MS | Default timeout for long-running bash commands |
BASH_MAX_TIMEOUT_MS | Maximum timeout the model can set for long-running bash commands |
BASH_MAX_OUTPUT_LENGTH | Maximum number of characters in bash outputs before they are middle-truncated |
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR | Return to the original working directory after each Bash command |
CLAUDE_CODE_API_KEY_HELPER_TTL_MS | Interval in milliseconds at which credentials should be refreshed (when using apiKeyHelper ) |
CLAUDE_CODE_MAX_OUTPUT_TOKENS | Set the maximum number of output tokens for most requests |
CLAUDE_CODE_USE_BEDROCK | Use Bedrock (see Bedrock & Vertex) |
CLAUDE_CODE_USE_VERTEX | Use Vertex (see Bedrock & Vertex) |
CLAUDE_CODE_SKIP_BEDROCK_AUTH | Skip AWS authentication for Bedrock (e.g. when using an LLM gateway) |
CLAUDE_CODE_SKIP_VERTEX_AUTH | Skip Google authentication for Vertex (e.g. when using an LLM gateway) |
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | Equivalent of setting DISABLE_AUTOUPDATER , DISABLE_BUG_COMMAND , DISABLE_ERROR_REPORTING , and DISABLE_TELEMETRY |
DISABLE_AUTOUPDATER | Set to 1 to disable the automatic updater |
DISABLE_BUG_COMMAND | Set to 1 to disable the /bug command |
DISABLE_COST_WARNINGS | Set to 1 to disable cost warning messages |
DISABLE_ERROR_REPORTING | Set to 1 to opt out of Sentry error reporting |
DISABLE_NON_ESSENTIAL_MODEL_CALLS | Set to 1 to disable model calls for non-critical paths like flavor text |
DISABLE_TELEMETRY | Set to 1 to opt out of Statsig telemetry (note that Statsig events do not include user data like code, file paths, or bash commands) |
HTTP_PROXY | Specify HTTP proxy server for network connections |
HTTPS_PROXY | Specify HTTPS proxy server for network connections |
MAX_THINKING_TOKENS | Force a thinking for the model budget |
MCP_TIMEOUT | Timeout in milliseconds for MCP server startup |
MCP_TOOL_TIMEOUT | Timeout in milliseconds for MCP tool execution |
MAX_MCP_OUTPUT_TOKENS | Maximum number of tokens allowed in MCP tool responses (default: 25000) |
Configuration options
We are in the process of migrating global configuration to settings.json
.
claude config
will be deprecated in place of settings.json
To manage your configurations, use the following commands:
- List settings:
claude config list
- See a setting:
claude config get <key>
- Change a setting:
claude config set <key> <value>
- Push to a setting (for lists):
claude config add <key> <value>
- Remove from a setting (for lists):
claude config remove <key> <value>
By default config
changes your project configuration. To manage your global configuration, use the --global
(or -g
) flag.
Global configuration
To set a global configuration, use claude config set -g <key> <value>
:
Key | Description | Example |
---|---|---|
autoUpdates | Whether to enable automatic updates (default: true ) | false |
preferredNotifChannel | Where you want to receive notifications (default: iterm2 ) | iterm2 , iterm2_with_bell , terminal_bell , or notifications_disabled |
theme | Color theme | dark , light , light-daltonized , or dark-daltonized |
verbose | Whether to show full bash and command outputs (default: false ) | true |
Tools available to Claude
Claude Code has access to a set of powerful tools that help it understand and modify your codebase:
Tool | Description | Permission Required |
---|---|---|
Agent | Runs a sub-agent to handle complex, multi-step tasks | No |
Bash | Executes shell commands in your environment | Yes |
Edit | Makes targeted edits to specific files | Yes |
Glob | Finds files based on pattern matching | No |
Grep | Searches for patterns in file contents | No |
LS | Lists files and directories | No |
MultiEdit | Performs multiple edits on a single file atomically | Yes |
NotebookEdit | Modifies Jupyter notebook cells | Yes |
NotebookRead | Reads and displays Jupyter notebook contents | No |
Read | Reads the contents of files | No |
TodoRead | Reads the current session’s task list | No |
TodoWrite | Creates and manages structured task lists | No |
WebFetch | Fetches content from a specified URL | Yes |
WebSearch | Performs web searches with domain filtering | Yes |
Write | Creates or overwrites files | Yes |
Permission rules can be configured using /allowed-tools
or in permission settings.
See also
- Identity and Access Management - Learn about Claude Code’s permission system
- IAM and access control - Enterprise policy management
- Troubleshooting - Solutions for common configuration issues