Skip to content

Settings

The settings.json file configures Claude Code behavior. It can be located at ~/.claude/settings.json (global), .claude/settings.json (project), or .claude/settings.local.json (local, gitignored).

Fields

Permissions

FieldTypeRequiredDescription
allowstring[]noPermission patterns to auto-allow (e.g., "Bash(npm run *)")
denystring[]noPermission patterns to always deny
askstring[]noPermission patterns to always prompt
defaultModestringnoacceptEdits, bypassPermissions, default, or plan
disableBypassPermissionsModestringnoSet to "disable" to prevent bypass
additionalDirectoriesstring[]noExtra directories to allow access to

Attribution

FieldTypeRequiredDescription
commitstringnoCommit message template
prstringnoPR description template

Sandbox

FieldTypeRequiredDescription
enabledbooleannoEnable sandboxing
autoAllowBashIfSandboxedbooleannoAuto-allow bash in sandbox
excludedCommandsstring[]noCommands excluded from sandbox
allowUnsandboxedCommandsstring[]noCommands allowed outside sandbox
network.allowedHostsstring[]noAllowed network hosts
network.allowedPortsnumber[]noAllowed network ports
enableWeakerNestedSandboxbooleannoAllow weaker nested sandbox
ignoreViolationsbooleannoIgnore sandbox violations

Example

json
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git *)",
      "Read",
      "Edit"
    ],
    "deny": [
      "Bash(rm -rf *)"
    ]
  },
  "sandbox": {
    "enabled": true,
    "network": {
      "allowedHosts": ["registry.npmjs.org"]
    }
  }
}