Skip to content

Claude Code Settings

Configure Claude Code behavior via ~/.claude/settings.json.

Config File Locations

  • User-level (all projects): ~/.claude/settings.json
  • Project-level (shared with team): .claude/settings.json in repo root
  • Local overrides (gitignored): .claude/settings.local.json in repo root
  • Managed (admin-enforced, macOS): /Library/Application Support/ClaudeCode/managed-settings.json

Settings merge across levels. More specific levels override less specific ones. Managed settings always take precedence.

Model

Override the default model for all sessions.

json
{
  "model": "opus"
}

Accepts aliases (opus, sonnet, haiku) or full model IDs (claude-opus-4-6, claude-sonnet-4-6, claude-haiku-4-5-20251001). Aliases track the latest version of each model family.

Override per-session with /model sonnet or via claude --model sonnet.

opus

Default Mode

Set the default permission mode for new sessions.

json
{
  "permissions": {
    "defaultMode": "auto"
  }
}

Accepts default (prompt for non-allowlisted commands), auto (continuous, autonomous execution — proceed on low-risk work without prompting), acceptEdits (auto-accept file edits), plan (plan mode), or bypassPermissions (skip all permission prompts).

Override per-session via the UI mode toggle.

auto

Permissions

See Claude Code Permissions.

Sync Settings

Sync the recommended settings above to the user's machine. Follow this procedure exactly.

1. Compare

Read ~/.claude/settings.json. Compare each local value to the recommended value above:

  • top-level model vs. recommended model string
  • permissions.defaultMode vs. recommended default mode string

2. Act based on the comparison

Apply this logic to each setting independently.

Already in sync — Local value matches the recommended. Tell the user.

Different or missing — Show the user current and recommended values. Ask whether to update. Apply if confirmed.

3. Preserve other settings

When writing ~/.claude/settings.json, only modify the keys covered above (model and permissions.defaultMode). Preserve all other keys (permissions.allow, permissions.ask, permissions.deny, statusLine, skipDangerousModePermissionPrompt, etc.) and use 2-space JSON indentation.