Documentation error: settings.json location

Resolved 💬 18 comments Opened May 20, 2025 by MattMagg Closed Dec 5, 2025
💡 Likely answer: A maintainer (ollie-anthropic, collaborator) responded on this thread — see the highlighted reply below.

The Claude Code documentation at https://docs.anthropic.com/en/docs/claude-code/settings states that settings should be in ~/.claude/settings.json, but this file doesn't exist. Settings are only accessible via the claude config list command and cannot be edited directly. This appears to be a discrepancy between the documentation and the actual implementation.

View original on GitHub ↗

18 Comments

pm4r · 1 year ago

Looks like the file is ~/.claude.json

cchanley2003 · 1 year ago

Here is the behavior I see:

claude config set -g env '{"NODE_EXTRA_CA_CERTS": "/etc/ssl/certs/ca-certificates.crt"}'

This does update the ~/.claude/settings.json

 cat ~/.claude/settings.json
{
  "env": {
    "NODE_EXTRA_CA_CERTS": "/etc/ssl/certs/ca-certificates.crt"
  }
}

But the setting is not reflected. If I run claude config list -g the env is empty.

bjdean · 1 year ago
Looks like the file is ~/.claude.json

Just confirming that's where I'm seeing "User Settings" configuration stored (running claude code version 1.0.29).

stevenrouk · 1 year ago

Setting allowedTools in ~/.claude/settings.json does cause those allowed tools to be reflected the next time I run claude.

It looks like the allowedTools rules I set in ~/.claude/settings.json are combined with the existing allowedTools permissions found in my project_dir/.claude/settings.local.json file that were already set.

After creating ~/.claude/settings.json (manually) and confirming that it is loaded the next time I ran claude, running claude config list still does not pull from there—allowedTools still showing as blank. The documentation does say that claude config in in the process of being deprecated in place of settings.json.

benjaminwood · 1 year ago

Same situation here. I have ~/.claude.json but no ~/.claude/settings.json.

It'd be great if somebody from anthropic could clarify what's going on here. The docs appear to be incorrect?

Please & thank you! 😄

ykka · 1 year ago

I think there is a stark difference in what claude config list and claude config list --global do.

One seems to seek and print the local project settings

{
  "allowedTools": [],
  "hasTrustDialogAccepted": false
}

And claude config list --global seems to read your globally set user settings, weirdly located in ~/claude.json (why isn't this file inside your ~/.claude/ directory, co-located with other CC-related things)?

Plus, this command doesn't print any of the allowedTools from my globally set ~/.claude/settings.json.

{
  "installMethod": "local",
  "autoUpdates": true,
  "theme": "dark",
  "verbose": false,
  "preferredNotifChannel": "terminal_bell",
  "editorMode": "vim",
  "autoCompactEnabled": true,
  "diffTool": "auto",
  "env": {},
  "tipsHistory": {
    "new-user-warmup": 7,
    "memory-command": 11,
    "theme-command": 54,
    "prompt-queue": 14,
    "enter-to-steer-in-relatime": 56,
    "todo-list": 61,
    "# for memory": 59,
    "install-github-app": 60,
    "permissions": 61,
    "drag-and-drop-images": 62,
    "double-esc": 63,
    "continue": 66,
    "custom-commands": 55,
    "shift-tab": 67
  },
  "parallelTasksCount": "1",
  "todoFeatureEnabled": true,
  "messageIdleNotifThresholdMs": 60000,
  "autoConnectIde": false
}

---

I reckon that Anthropic is in the middle of migrating settings and cleaning this up. There might be something in the pipeline that got stuck or got some internal pushback for a better option, that's why there's little update on our end what's going on.

But this is a mess, but somewhat a normal mess for a very young product.

ykka · 1 year ago

One more thing to note is that the ~/.claude.json file is difficult to use since it mixes global settings with all your project settings (mcps configs) with content (history of your prompts) and statistics. In my case it's almost 1700 lines long.

tonglil · 12 months ago

Is the documentation still outdated after 2 months, or is it just not working? Would've expected claude to corrected itself already..

idominikosgr · 12 months ago

looks like it is using ~/.claude.json indeed - I was experimenting and changing stuff through vscode and it changed in real time. I'm now transferring settings from ~/.claude/settings.json (mainly env) to check what works.

https://github.com/user-attachments/assets/995aae83-d000-4aa5-9c39-a3f856fcb5db

bugproof · 11 months ago

Bump. This is very misleading and we don't know what to do to configure settings.

matbeedotcom · 11 months ago

Where are the config files on windows?

dejoma · 10 months ago

My project settings don't work properly:
~/dejoma/project/.claude/settings.json I have Bash(ls:*) allowed

Then somehow it still creates a ~/dejoma/project/.claude/settings.local.json where sporadically it asks me permission for a "new" command. I still had to accept Bash(ls:*) -- this is now also inside the local settings.

But then yesterday I have a not_allowed command which is bun db:migrate and it mentioned "tool not allowed" so it is working for this?

  1. How is it possible it added the Bash(ls:*) to my local project settings if it is in the 'committed/shared project settings' ?
  2. When you are in a session, and something gets asked about permissions, this will always be added to local project settings?
kmizzi · 9 months ago

following

tdi · 9 months ago

What is the good file? ~/.claude.json or files in ~/.claude/ ? I had my MCPs configured globally - now they are gone but I can see them in ~/.claude.json

lentil32 · 9 months ago

check if settings.json is well formatted

baelter · 8 months ago

Which one is it?

ollie-anthropic collaborator · 7 months ago

Hey all, really sorry about the confusion here - we've updated the docs in multiple places to clearly indicate where things are.

Please see: https://code.claude.com/docs/en/troubleshooting#configuration-file-locations, https://code.claude.com/docs/en/mcp#local-scope

Right now, the mcp configuration for local and user scopes live in .claude.json; we understand this is a little confusing at the moment, and it's something we're thinking about

github-actions[bot] · 7 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.