Loading lesson…
Settings.json is where the harness — not the model — gets configured. It is also where most surprises live, so understanding the layers saves debugging time.
Settings.json is the place to configure everything the model isn't deciding for itself: which permissions auto-approve, which env vars get exposed, which model the session defaults to, which hooks fire, which MCP servers connect. The model reads its own instructions; the harness reads settings.json.
| Layer | Path | Scope |
|---|---|---|
| User | ~/.claude/settings.json | All your sessions |
| Project | .claude/settings.json | Anyone in this repo |
| Local | .claude/settings.local.json | Just you, this repo (gitignored) |
{
"permissions": {
"allow": [
"Bash(pnpm test:*)",
"Bash(pnpm lint:*)",
"Bash(git status)",
"Bash(git diff:*)",
"Read(**)"
],
"deny": [
"Bash(git push --force:*)",
"Bash(rm -rf:*)"
]
}
}Common permission setup. Allow the safe, repeated commands; explicitly deny the destructive ones.Settings.json can expose env vars to the harness — useful for things like alternate API keys or AI Gateway URLs. It can also override the default model for a project (handy when one repo wants Sonnet and another wants Opus). The override happens at the harness level, before the model ever sees the request.
The big idea: settings.json is the harness contract. Audit it like you audit credentials, layer it like you layer dotfiles.
15 questions · take it digitally for instant feedback at tendril.neural-forge.io/learn/quiz/end-claude-code-settings-creators
What is the core idea behind "Settings.json: Permissions, Env Vars, Model Overrides"?
Which term best describes a foundational idea in "Settings.json: Permissions, Env Vars, Model Overrides"?
A learner studying Settings.json: Permissions, Env Vars, Model Overrides would need to understand which concept?
Which of these is directly relevant to Settings.json: Permissions, Env Vars, Model Overrides?
Which of the following is a key point about Settings.json: Permissions, Env Vars, Model Overrides?
What is one important takeaway from studying Settings.json: Permissions, Env Vars, Model Overrides?
Which of these does NOT belong in a discussion of Settings.json: Permissions, Env Vars, Model Overrides?
What is the key insight about "Project settings get committed" in the context of Settings.json: Permissions, Env Vars, Model Overrides?
What is the key insight about "Auto-approval is sharp" in the context of Settings.json: Permissions, Env Vars, Model Overrides?
What is the key insight about "From the community" in the context of Settings.json: Permissions, Env Vars, Model Overrides?
Which statement accurately describes an aspect of Settings.json: Permissions, Env Vars, Model Overrides?
What does working with Settings.json: Permissions, Env Vars, Model Overrides typically involve?
Which of the following is true about Settings.json: Permissions, Env Vars, Model Overrides?
Which best describes the scope of "Settings.json: Permissions, Env Vars, Model Overrides"?
Which section heading best belongs in a lesson about Settings.json: Permissions, Env Vars, Model Overrides?