Skip to content

<div style="display: none;" hidden="true" aria-hidden="true">Are you an LLM? You can read better optimized documentation at /guides/claude/developer-overrides.md for this page in Markdown format</div>

Per-Developer Overrides

See also: System Overview | Agent Catalog | Repo Flexibility | Usage Guide

How to customize Claude Code configuration for your local workflow without affecting the team's shared setup.


Quick Start

  1. Open .claude/settings.local.json (gitignored) and add your preferred permissions
  2. Start a session — the shared detect-repo.sh hook runs automatically
  3. Rules in .claude/rules/ load automatically when you access matching files

No other setup required. Everything below is optional customization.


Override Hierarchy

Settings are resolved from highest to lowest priority. Higher layers override lower ones.

PrioritySourceScopeCommitted?
1CLI flags (--agents, --allowedTools)Session onlyNo
2.claude/settings.local.jsonPer-developerNo (gitignored)
3.claude/settings.jsonTeam-sharedYes
4~/.claude/settings.jsonUser-level (all projects)No

Merge Behavior

FeatureBehavior
PermissionsArrays merge across scopes. Deny wins absolutely at any layer.
HooksAll scopes fire (merge, not override). Cannot remove a shared hook.
AgentsSame-name file: project-level wins over user-level.
RulesMerge additively across project and user levels.
CLAUDE.mdAll files loaded (project + user + directory-specific).
SkillsNo user-level override mechanism.

Full Override Matrix

FeatureUser (~/.claude/)Project Local (settings.local.json)Project Shared (.claude/)
Permissionssettings.jsonsettings.local.jsonsettings.json
Hookssettings.jsonsettings.local.jsonsettings.json
Agentsagents/*.mddeny via permissionsagents/*.md
Rulesrules/*.mdrules/*.md
CLAUDE.mdCLAUDE.mdexclude via claudeMdExcludes./CLAUDE.md
MCP Servers~/.claude.json.mcp.json
Keybindingskeybindings.json
Skillsskills/*/

Common Recipes

1. Auto-Allow Common Commands

Add to .claude/settings.local.json:

json
{
  "permissions": {
    "allow": [
      "Bash(vendor/bin/phpunit:*)",
      "Bash(php:*)",
      "Bash(git add:*)",
      "Bash(git push:*)",
      "Bash(npm run:*)",
      "Bash(composer:*)",
      "Skill(code-reviewer)"
    ]
  }
}

2. Disable Unused Agents

If you never use certain agents, deny them in settings.local.json:

json
{
  "permissions": {
    "deny": [
      "Agent(feed-writer)",
      "Agent(patcher-writer)"
    ]
  }
}

3. Add Personal MCP Servers

MCP servers are configured per-project in ~/.claude.json (user-level):

json
{
  "projects": {
    "/path/to/adveshop4": {
      "mcpServers": {
        "my-db-tool": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://..."]
        }
      }
    }
  }
}

Team-shared MCP servers go in .mcp.json at the project root.

4. Add Personal Rules

Create rules in ~/.claude/rules/ that apply to all your projects:

markdown
<!-- ~/.claude/rules/my-preferences.md -->
---
paths:
  - "**"
---
When generating PHP code, always add a blank line before return statements.

Or project-scoped rules in .claude/rules/ (these are committed).

5. Personal CLAUDE.md Preferences

Create ~/.claude/CLAUDE.md for instructions that apply across all projects:

markdown
# Personal Preferences
- Always explain architectural decisions before implementing
- Use verbose git commit messages
- Prefer explicit type hints in PHP

6. Override an Agent's Model

To use a different model for a specific agent, create a same-named file at ~/.claude/agents/:

markdown
<!-- ~/.claude/agents/schema-analyzer.md -->
---
model: haiku
---
(copy the full agent content from .claude/agents/schema-analyzer.md)

The user-level file is used when no project-level file exists. Since our project commits agents, the project version takes precedence. To truly override, you'd need to use CLI flags or deny+recreate.

7. Exclude Specific CLAUDE.md Files

If a directory-level CLAUDE.md conflicts with your workflow:

json
{
  "claudeMdExcludes": ["path/to/specific/CLAUDE.md"]
}

Add this to .claude/settings.local.json.

8. Add Personal Hooks

Add hooks in ~/.claude/settings.json (user-level) — they fire alongside project hooks:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "echo 'File written: $TOOL_INPUT_FILE_PATH'"
          }
        ]
      }
    ]
  }
}

Clean settings.local.json Template

Starting point for new developers:

json
{
  "permissions": {
    "allow": [
      "Bash(vendor/bin/phpunit:*)",
      "Bash(php:*)",
      "Bash(git add:*)",
      "Bash(git push:*)",
      "Skill(code-reviewer)"
    ]
  }
}

Client Repo Notes

The same override mechanisms work identically in client repos:

  • .claude/settings.local.json — per-developer permissions
  • ~/.claude/agents/ — personal agent overrides
  • ~/.claude/rules/ — personal rules
  • ~/.claude.json — personal MCP servers

The detect-repo.sh hook auto-detects the repo type. Agents automatically switch to client mode (writing to custom/ and application/ instead of src/ and ecommercen/).


What NOT to Override

These are critical shared infrastructure — overriding them will break agent behavior:

ItemWhy
Skills (.claude/skills/)Knowledge bases agents depend on. No user-level override mechanism exists.
SessionStart hook (detect-repo.sh)Repo detection is critical for all agents. Hooks merge — you can't remove a shared hook.
CLAUDE.md core conventionsAgent delegation rules, namespace patterns, file structure. Wrong overrides cause bad code generation.
Agent workflow logicEncodes correct generation pipelines. Changing model is fine; changing logic risks broken output.

File Reference

FileLocationCommitted?Purpose
.claude/settings.jsonProjectYesTeam hooks
.claude/settings.local.jsonProjectNoDeveloper permissions
.claude/agents/*.mdProjectYesShared agent definitions
.claude/skills/*/ProjectYesShared skill knowledge bases
.claude/rules/*.mdProjectYesPath-specific conventions
CLAUDE.mdProject rootYesCore project instructions
.mcp.jsonProject rootYesTeam MCP servers
~/.claude/settings.jsonUser homeNoUser-level settings/hooks
~/.claude/agents/*.mdUser homeNoPersonal agent overrides
~/.claude/rules/*.mdUser homeNoPersonal rules
~/.claude/CLAUDE.mdUser homeNoPersonal instructions
~/.claude.jsonUser homeNoPersonal MCP servers