Use settings.local.json for Machine-Specific Overrides That Stay Out of Git
Claude Code has three setting scopes: user (global), project (committed with the repo), and local (per-machine, ignored by git). The local scope solves the problem of developer-specific preferences conflicting with team standards.
# Set a personal default model — doesn't affect teammates
claude config set -s local defaultModel haiku
# Add a personal MCP server only you use
claude config set -s local mcpServers.my-notes '{"command":"node","args":["~/tools/notes-server.js"]}'
# Override a project setting for your machine
claude config set -s local autoMemoryEnabled false
Local settings live in .claude/settings.local.json, which is automatically excluded from git. They override project settings, which override user settings — so the specificity works like CSS.
The three scopes, from broadest to most specific:
| Scope | File | Committed? | Use for |
|---|---|---|---|
| User | ~/.claude/settings.json |
N/A | Your global defaults |
| Project | .claude/settings.json |
Yes | Team-shared settings |
| Local | .claude/settings.local.json |
No | Your machine overrides |
Common uses for local settings:
# You prefer a different model than the team default
claude config set -s local defaultModel sonnet
# You need extra tools approved for your workflow
claude config add -s local allowedTools "Bash(docker *)"
# You have a local database MCP the team doesn't use
claude config set -s local mcpServers.local-db '{"command":"node","args":["./my-db-tool.js"]}'
# You want more verbose output than the team default
claude config set -s local verbose true
The project scope (.claude/settings.json) is where team conventions go — shared allowedTools, ignorePatterns, and MCP servers that everyone needs. The local scope is where individual developers customise without stepping on each other.
Team settings belong in the project. Your settings belong in local. Mix them up and you get merge conflicts on preferences files.
via Claude Code
Log in to leave a comment.
When Claude writes error messages, button labels, validation text, or onboarding flows, it defaults to generic developer-speak. Add a "Users" section to your CLAUDE.md describing who your actual users are — their technical level, industry jargon, and what they care about — so Claude writes copy that makes sense to THEM, not to developers.
Use the --agent flag with custom markdown files in .claude/agents/ to launch purpose-built Claude sessions with restricted tools and scoped system prompts.
Every project has traps — the billing module that silently fails if you forget to queue the job, the legacy table with column names that don't match the model, the config value that must be set before tests run. Document these gotchas in your CLAUDE.md so Claude avoids the same mistakes your team spent days debugging.