PrepGenAICerts

CLAUDE.md vs settings.json for Team Configuration

Core

Configure Claude tools and environments for teams · Difficulty 2/5

0%
claude-mdsettings-jsonteam-configurationclaude-code

Explanation

An architect standardizing Claude Code for a team must keep two configuration surfaces cleanly separated: **CLAUDE.md (memory/instructions) and settings.json** (deterministic configuration).

CLAUDE.md Hierarchy

Project memory is hierarchical and auto-loaded into context at multiple levels:

LevelLocationScope
Enterprise/systemManaged centrallyOrg-wide policy
User~/.claudePersonal, per-developer
Project./CLAUDE.mdWhole team, via the repo
SubdirectoryNested CLAUDE.mdLocal to that part of the codebase

The key architectural decision: the **project-level `CLAUDE.md` is committed to the repo** so the whole team shares the same conventions and context -- it is not something each developer maintains privately.

settings.json as the Control Surface

settings.json is the deterministic control surface for a team's Claude Code deployment. It holds:

  • Tool allow/deny lists
  • Hooks
  • Environment variables
  • Model selection
  • Connected MCP servers

The distinction to hold firmly: **permissions and guardrails live in settings.json, not in `CLAUDE.md.** CLAUDE.md is instructions and memory that Claude reads; settings.json` is enforced configuration the harness applies regardless of what Claude decides.

Why the Split Matters

Mixing the two surfaces produces inconsistent, unsafe team behavior:

  • If permission rules live only in `CLAUDE.md`, they are advisory instructions Claude could ignore or misinterpret, not enforced guardrails
  • If team conventions live only in a developer's personal setup, new team members never receive them

Common exam traps

  • Putting permissions or tool allow/deny rules in `CLAUDE.md. Those belong in settings.json; CLAUDE.md` is instructions/memory, not an enforcement mechanism.
  • Assuming personal (~/.claude) configuration is sufficient for team standardization -- shared conventions must live in the committed, project-level `CLAUDE.md` to reach every developer.

See the [Claude Code settings.json reference](/glossary/claude-settings).

Key Takeaways

  • CLAUDE.md is memory/instructions; settings.json is deterministic configuration (permissions, hooks, MCP)
  • Project memory is hierarchical: enterprise/system, user (~/.claude), project (./CLAUDE.md), and subdirectory levels
  • Project-level CLAUDE.md is committed to the repo so the whole team shares conventions and context
  • Tool allow/deny lists, hooks, environment, model selection, and MCP servers all live in settings.json
  • Putting permissions or guardrails in CLAUDE.md instead of settings.json is a common misconfiguration

Glossary Terms

Related Concepts

PrepGenAICerts is an independent exam-prep site. It is not affiliated with, endorsed by, or sponsored by Anthropic, PBC. Claude and Anthropic are trademarks of Anthropic, PBC. Exam details are taken from publicly available Anthropic and Pearson documentation. About PrepGenAICerts.