Claude Code Settings
Claude Code's 3-level configuration system: global (~/.claude/settings.json), project (.claude/settings.json), and project-local (.claude/settings.local.json). Each level overrides the previous. Covers tool permissions, hook configuration, model preferences and env var management.
Strengths
- 3 granularity levels, global for all repos, project for the team, local for you only
- Tool permissions controllable by domain: shell, files, MCPs, zero-trust possible
- Hooks configurable in settings, all automation without modifying CLAUDE.md
Limitations
- Non-obvious hierarchy, conflicts between levels can be silent and hard to debug
- Terse official documentation, edge cases (partial overrides, array merging) are poorly covered
Best for
- Configuring automation hooks (pre-commit, post-edit) without putting them in CLAUDE.md
- Teams wanting to share Claude rules via the repo (.claude/settings.json committed) while allowing personal overrides
- Restricting tool permissions per project for sensitive environments