Claude Code settings.json Builder and Validator
Build a file from the common keys, or paste yours to check syntax, key names, and rule shape.
Builder
settings.json
Validator
What the validator checks
- Strict JSON: no comments, no trailing commas.
- Type of each known top-level key.
- Permission rules: shape,
Write(path)andcommand:mistakes, entries in both allow and deny. - Hook events and handler types against the hooks docs.
It is not a full schema check. For that, use the SchemaStore schema in your editor.
Keys this tool knows
| Key | Type | Notes |
|---|---|---|
$schema | string | Schema URL for editor autocomplete |
model | string | Default model |
effortLevel | string | Default effort level |
permissions | object | allow, ask, deny, defaultMode, additionalDirectories |
hooks | object | Event name to array of matcher groups |
env | object | Environment variables set for each session |
statusLine | object | Custom status line command |
outputStyle | string | Output style name |
cleanupPeriodDays | number | How long to keep transcripts |
apiKeyHelper | string | Script that returns an auth value |
disableAllHooks | boolean | Turns off every hook |
disableSkillShellExecution | boolean | Blocks !`cmd` injection in skills |
skillOverrides | object | Per-skill on, off or name-only |
enabledPlugins | object | Plugin id to true or false |
sandbox | object | Sandbox settings |
attribution | object | Commit and PR attribution text |
language | string | Response language |
Claude Code has more settings than this list. An unrecognized key gets a warning, not an error. Full list: the settings reference in the Claude Code docs.
Which file to use
| Priority | File | Use for |
|---|---|---|
| 1 | Managed settings | Organization policy |
| 2 | claude --settings | One session |
| 3 | .claude/settings.local.json | Your overrides in one project, not committed |
| 4 | .claude/settings.json | Rules the whole team shares |
| 5 | ~/.claude/settings.json | Your defaults everywhere |
Checked against code.claude.com/docs/en/settings on 2026-10-20. unverified: whether array keys such as permissions.allow merge across files or are replaced; test with /status and /permissions.
FAQ
Where is the Claude Code settings.json file?
User: ~/.claude/settings.json. Shared project: .claude/settings.json. Personal project: .claude/settings.local.json. Managed settings can also come from your organization.
Which settings file wins?
From highest to lowest: managed settings, command line (--settings), project local, shared project, user. A key set at a higher level overrides the same key lower down.
Can settings.json have comments?
No. Settings files are strict JSON. A // comment or a trailing comma is a syntax error and Claude Code reports a Settings Error at the next start.
How do I get autocomplete for settings.json?
Add "$schema": "https://json.schemastore.org/claude-code-settings.json" at the top. The schema can lag behind new releases, so a warning on a new key is not proof it is wrong.
How do I check that my settings loaded?
Run /status inside Claude Code. The Setting sources line shows which files were read and reports a broken file.