[Bug] Project settings (.claude/settings.json) not loaded, only user settings applied

Resolved 💬 3 comments Opened Jan 19, 2026 by marcstraube Closed Jan 19, 2026

Bug Description

Bug Report: Project settings not loaded

URL: https://github.com/anthropics/claude-code/issues/new

Title: Project settings (.claude/settings.json) not loaded - only user settings applied

---

Bug Description

Claude Code 2.0.67 detects project-level settings files but does not apply their permissions or hooks. Only user-level settings from ~/.claude/settings.json are loaded.

Environment

  • Claude Code Version: 2.0.67
  • OS: Linux 6.12.66-1-lts (Arch Linux)
  • Terminal: PHPStorm integrated terminal + standalone terminal (both affected)

Steps to Reproduce

  1. Create project settings files:
  • .claude/settings.json (project-level, committed)
  • .claude/settings.local.json (local overrides, gitignored)
  1. Add permissions and hooks to both files (valid JSON, verified with jq)
  1. Start Claude Code in the project directory
  1. Run /permissions command

Expected Behavior

Permissions from all three files should be merged according to documented precedence:

  1. Local project settings (.claude/settings.local.json) - highest
  2. Shared project settings (.claude/settings.json)
  3. User settings (~/.claude/settings.json) - lowest

Actual Behavior

Only user settings are applied. Debug log shows:

[DEBUG] Watching for changes in setting files /home/user/.claude/settings.json, /project/.claude/settings.json, /project/.claude/settings.local.json...
[DEBUG] Applying permission update: Adding 3 allow rule(s) to destination 'userSettings': ["Bash(ls:*)","Bash(cat:*)","Bash(find:*)"]
[DEBUG] Found 0 hook matchers in settings

Key observations:

  • Claude Code watches all three settings files
  • Only userSettings permissions are applied (3 rules from ~/.claude/settings.json)
  • No projectSettings or localSettings permissions are applied
  • Hooks are not loaded despite being defined in project settings files
  • /permissions only shows the 3 rules from user settings

Files Verified

Both project settings files:

  • Exist in correct location (.claude/ directory)
  • Are valid JSON (verified with jq . filename)
  • Are readable (correct file permissions)
  • Contain permissions.allow arrays and hooks objects

Workaround

Moving all permissions to ~/.claude/settings.json works, but defeats the purpose of project-specific settings.

Impact

  • Cannot use project-specific permissions (security concern - over-permissive global settings required)
  • Cannot use project-specific hooks
  • Team cannot share permissions via committed .claude/settings.json

Environment Info

  • Platform: linux
  • Terminal: pycharm
  • Version: 2.0.67
  • Feedback ID: 2c28d645-3b53-4dae-b9ac-fb6fc7bd4ae7

Errors

[{"error":"Error\n    at wO (/$bunfs/root/claude:58:1143)\n    at <anonymous> (/$bunfs/root/claude:59:10080)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:862:50)\n    at processTicksAndRejections (native:7:39)\n    at request (/$bunfs/root/claude:61:2147)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-19T19:49:17.757Z"},{"error":"Error\n    at wO (/$bunfs/root/claude:58:1143)\n    at <anonymous> (/$bunfs/root/claude:59:10080)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:862:50)\n    at processTicksAndRejections (native:7:39)\n    at request (/$bunfs/root/claude:61:2147)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-19T19:49:35.127Z"},{"error":"Error\n    at wO (/$bunfs/root/claude:58:1143)\n    at <anonymous> (/$bunfs/root/claude:59:10080)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:862:50)\n    at processTicksAndRejections (native:7:39)\n    at request (/$bunfs/root/claude:61:2147)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-19T19:49:51.184Z"},{"error":"Error\n    at wO (/$bunfs/root/claude:58:1143)\n    at <anonymous> (/$bunfs/root/claude:59:10080)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:862:50)\n    at processTicksAndRejections (native:7:39)\n    at request (/$bunfs/root/claude:61:2147)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-19T19:50:34.532Z"},{"error":"Error\n    at wO (/$bunfs/root/claude:58:1143)\n    at <anonymous> (/$bunfs/root/claude:59:10080)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:862:50)\n    at processTicksAndRejections (native:7:39)\n    at request (/$bunfs/root/claude:61:2147)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-01-19T19:50:53.869Z"},{"error":"Error\n    at wO (/$bunfs/root/claude:58:1143)\n    at <anonymous> (/$bunfs/root/claude:59:10080)\n    at emit (node:events:92:22)\n    at endReadableNT (internal:streams/readable:862:50)\n    at processTicksAndRejections (native:7:39)\n   

Note: Error logs were truncated.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗