settings.json keys set almost all of Claude Code's persistent behavior, and they are more conveniently understood by group than as a flat list. There are keys for the model and reasoning, permissions, the sandbox, updates, the environment, hooks, the interface, MCP and maintenance. Each key acts in its own scope with a known precedence, and the file's validity is checked by claude doctor. This reference gives a map of the most-used keys; the full and exact set for your version is on the official settings page and in the JSON schema attached via $schema.
The permission and sandbox keys are the security core. permissions holds allow, ask, deny, defaultMode and additionalDirectories; rules from scopes accumulate, and a deny is not removed by a broad allow. sandbox describes enabled, autoAllowBashIfSandboxed, allowUnsandboxedCommands and the nested filesystem, network and credentials. It is exactly these keys that determine what the agent does without asking and what it can physically touch at all, so they are edited especially consciously and verified with a negative test.
The model, update and memory keys control session behavior. The model is set via model, effortLevel, advisorModel and fallbackModel; updates via autoUpdatesChannel and minimumVersion (an update floor, not a pin), while requiredMinimumVersion exists in managed settings only and blocks startup. Memory and context via autoMemoryEnabled and autoCompactEnabled. The interface via statusLine, outputStyle, editorMode and vimInsertModeRemaps. Maintenance via cleanupPeriodDays, respectGitignore and includeCoAuthoredBy. Below is a map of the key fields by group.
The reference should be used with the book's general caveat: a key's presence does not mean a recommendation to enable it. Many keys are for diagnostics, enterprise rollout or compatibility, and you are especially careful with fields containing dangerously, disable, bypass or experimental: first you find the official task, the version and the way to roll back. The $schema gives autocomplete and validation but may lag the freshest CLI - on a discrepancy you check the official page and claude doctor.
| Group | Key | Purpose |
|---|---|---|
| Permissions | permissions.allow / ask / deny | Rules per tool (deny > ask > allow) |
| permissions.defaultMode | The permanent permission mode |
| permissions.additionalDirectories | Additional working directories |
| Sandbox | sandbox.enabled / allowUnsandboxedCommands | Enable / forbid the escape hatch |
|---|
| sandbox.filesystem / network / credentials | File, network, secret boundaries |
| Model | model / effortLevel | Model and reasoning depth |
|---|
| advisorModel / fallbackModel | Advisor and fallback model |
| Updates | autoUpdatesChannel / minimumVersion | Channel (latest/stable) / update floor |
|---|
| requiredMinimumVersion | Managed gate: refuses to start below the version |
| Memory/context | autoMemoryEnabled / autoCompactEnabled | Auto memory / auto compaction |
|---|
| Interface | statusLine / outputStyle / editorMode | Status line, output style, vim |
|---|
| Extensions | hooks / enableAllProjectMcpServers | Event reactions / approve project MCP (servers live in .mcp.json) |
|---|
| Maintenance | cleanupPeriodDays / respectGitignore | Retention / respect .gitignore |
|---|
| includeCoAuthoredBy | Co-Authored-By signature in commits |