Configuration Hierarchy
Claude Code uses a three-tier configuration system with clear precedence:
~/.claude/settings.json (global user defaults)
↓ overridden by
.claude/settings.json (project settings, team shared)
↓ overridden by
.claude/settings.local.json (machine-specific, personal)Precedence rules:
- Global (
~/.claude/settings.json): Applied to all projects unless overridden - Project (
.claude/settings.json): Shared team configuration, committed to Git - Local (
.claude/settings.local.json): Machine-specific overrides, gitignored
This hierarchy enables:
- Team coordination: Share hooks/rules in
.claude/settings.json - Personal flexibility: Override settings in
.local.jsonwithout Git conflicts - Multi-machine consistency: Global defaults in
~/.claude/synced separately
Legacy note: Claude Code still supports
~/.claude.jsonfor backward compatibility, but~/.claude/settings.jsonis the recommended location. CLI flags (e.g.,--teammate-mode in-process) override all file-based settings.