Skip to content

Settings Reference

  • Directory~/.claude/
    • config.json (global settings)
    • credentials.json (auth tokens)
    • settings.local.json (local overrides)
    • mcp.json (MCP server config)
{
"model": "claude-sonnet-4-5",
"theme": "dark",
"autoApprove": [
"git status",
"git diff",
"ls",
"cat"
],
"permissions": {
"allowedCommands": ["git", "npm", "python", "pytest"],
"blockedPaths": ["~/.ssh", "~/.aws", "~/.gnupg"]
}
}

Default model to use.

ModelFull IDBest For
Opus 4.5claude-opus-4-5Most capable, complex tasks
Sonnet 4claude-sonnet-4-5Balanced (recommended)
Haiku 4claude-haiku-4-5Fast, lightweight, CI/CD

Commands to run without asking permission.

"autoApprove": ["git status", "git diff", "pytest", "npm test"]

Whitelist of command prefixes allowed to run.

Paths Claude cannot read or write.

Use patterns for fine-grained control:

{
"permissions": {
"deny": ["Read(**/.env)", "Bash(rm -rf *)"],
"ask": ["Bash(git push*)"]
}
}
Terminal window
# API Configuration
ANTHROPIC_API_KEY=sk-ant-...
ANTHROPIC_BASE_URL=https://api.anthropic.com
# Internal/Custom setup
ANTHROPIC_AUTH_TOKEN=...
ANTHROPIC_BASE_URL=https://your-proxy.com

Create .claude/settings.json in your project:

{
"model": "claude-sonnet-4-5",
"context": {
"include": ["src/", "tests/"],
"exclude": ["node_modules/", "*.log"]
}
}

In settings.local.json:

{
"hooks": {
"Stop": [{
"hooks": [{
"type": "command",
"command": "notify-send 'Claude finished'"
}]
}],
"PreToolUse": [{
"matcher": {"tool": "Bash"},
"hooks": [{
"type": "command",
"command": "python3 ~/.claude/hooks/check.py"
}]
}]
}
}

See Hooks guide for details.

Settings load in priority order (highest first):

  1. Enterprise managed - System-wide (admins can enforce settings users can’t override)
  2. .claude/settings.local.json - Project personal (gitignored)
  3. .claude/settings.json - Project team (committed)
  4. ~/.claude/settings.json - User global

Higher priority settings override lower ones.