settings.json validator

Claude Code settings.json Validator

Check syntax, scope placement, exact allow/deny conflicts, and likely precedence causes. No upload required.

The short answer

You have three options to validate a settings.json file, each with a different trade-off.

Browser validator (Settings Check)
Enter the expected path and scope, then paste redacted JSON. It runs locally and checks strict syntax, path and scope fit, exact allow/deny conflicts, and common precedence or launch-context causes.
Claude Code built-in commands
Claude Code surfaces invalid settings at startup. /status shows active settings layers, /doctor checks setup and invalid settings, and /permissions shows resolved rules and source files.
External JSON validation
python3 -m json.tool checks strict JSON syntax. The published schema at json.schemastore.org/claude-code-settings.json can add editor validation and autocomplete, with documented limitations.

Start with the browser diagnostic for a private, targeted check, then use /status, /doctor, and /permissions for final confirmation inside the real environment.

Browser validator example

Environment:
  OS: macOS
  Version: 2.1.205
  Surface: Terminal
  Scope: User
  Path: ~/.claude/settings.json

Paste your redacted JSON → click "Run local diagnosis"

Method 1 — Browser validator (Settings Check)

Open the checker on this site, select your environment, enter the expected path and scope, and paste a redacted copy of your settings.json. The diagnostic engine runs entirely in your browser — no content is uploaded, saved, or logged.

The diagnostic checks strict JSON syntax, whether the path fits the selected scope, an exact rule duplicated across allow and deny, and common precedence or launch-context causes. It extracts only the permissions and environment-key context it needs; it does not perform complete Claude schema, unknown-key, permission-pattern, or rule-order validation.

Method 2 — Built-in Claude Code commands

These checks run in the real Claude Code environment and give the most authoritative picture of what it loaded.

/status

Shows the active settings layers and identifies files with settings errors. It does not attribute every resolved key to one source, so use it to confirm which layers are active.

/permissions

Shows the resolved allow, ask, and deny rules and the settings file each rule came from. This is the right view for tracing a permission rule to its source.

Method 3 — External JSON validation

Use these tools for an independent syntax or editor check, while keeping their limitations in view.

  1. Run a strict JSON syntax check

    Run python3 -m json.tool ~/.claude/settings.json. Strict JSON prints as formatted output; malformed input produces a parse error with a line and column. This does not validate Claude-specific fields or behavior. The published Claude settings schema allows trailing commas, so a strict parser rejecting one does not by itself prove Claude Code will reject the file.

  2. Add the published schema for editor help

    Add "$schema": "https://json.schemastore.org/claude-code-settings.json" at the top of your settings file. Compatible editors can then provide field suggestions, type checks, and hover documentation.

  3. Confirm against current official docs

    The schema permits additional properties and can lag fields from a new CLI release, so it cannot catch every unknown or outdated key. Treat a schema warning as a prompt to compare the current settings documentation and your installed version, not automatic proof that a field is invalid.

Quick reference

| Problem                    | Symptom                       | Next check                         |
|----------------------------|-------------------------------|------------------------------------|
| Malformed strict JSON      | Parser reports line/column    | Fix syntax; recheck /status        |
| Invalid settings value     | Settings Error or /doctor hit | Compare current settings docs      |
| Scope or precedence issue  | Active value is unexpected    | Inspect active layers with /status |
| Wrong location             | Expected layer is not active  | Move file to the documented path   |
| Exact allow/deny duplicate | Deny wins for the same rule    | Remove the unintended duplicate    |

Common validation failures

Use the symptom to choose the next authoritative check. No single validator covers syntax, schema guidance, scope resolution, and permission behavior equally well.

Local diagnostic

Validate your settings.json now

No upload. No account. The browser diagnostic checks strict syntax, path and scope fit, exact allow/deny conflicts, and likely precedence or launch-context causes in this tab.

Run validator

settings.json validator — FAQ

How do I validate my Claude Code settings.json syntax?

Current Claude Code shows a Settings Error when a settings file is invalid. After continuing, use /status to find affected files and /doctor to check setup and invalid settings. The terminal command claude doctor is read-only. For an independent strict JSON syntax check, run python3 -m json.tool ~/.claude/settings.json; the published schema can add editor validation but is not a complete or always-current Claude-specific validator.

How do I check whether my permission rules are correct?

Run /permissions inside Claude Code. It lists the resolved allow, ask, and deny rules along with the settings file each rule came from. This reveals whether a rule from a different scope is overriding or duplicating your intended rule. Rules are evaluated in the order deny, ask, allow, and the first matching category determines the result.

What is the difference between a JSON validator and a settings validator?

A strict JSON validator checks syntax only. A Claude settings validator may also check fields and types against the published schema, although the schema allows additional properties and can lag a new CLI release. Settings Check is a targeted browser diagnostic: it checks strict JSON syntax, path and scope fit, exact allow/deny conflicts, and common precedence or launch-context causes; it is not a complete schema or permission-pattern validator.

Can I validate my settings.json without sending it to a server?

Yes. Settings Check runs entirely in your browser, and it does not upload or store your content. It parses the redacted JSON you provide and stops analysis if it detects secret-like values. It then checks the path and scope, an exact allow/deny conflict, and common precedence or launch-context causes locally.

Official sources

Sources last reviewed August 11, 2026.