[Bug] Remote settings short-circuit managed settings chain without merge
Bug Description/etc/claude-code/managed-settings.json does not load and do not merge due to enforced ~/.claude/remote-settings.json by Anthropic. Opus had to reverse the obfuscated code to understand the problem. There is no clear documentation about the enforced data and no warning about it.
Code snippet that Opus dig
● Bash(LC_ALL=C strings /home/mattisdalleau/.local/share/claude/versions/2.1.119 | LC_ALL=C grep -F 'remote managed settings' | LC_ALL=C grep -oE '.{50}remote managed settings.{500}' | head -3)
55 let M = Rt(); // remote: ~/.claude/remote-settings.json
56 if (M && Object.keys(M).length > 0) {
57 const parsed = bP().safeParse(fN(M));
58 if (parsed.success && Object.keys(parsed.data).length > 0) Y = parsed.data;
59 }
60 if (!Y) Y = lNH(); // /etc/claude-code/managed-settings.json + .d
61 if (!Y) Y = gv$(); // macOS plist
62 if (!Y) Y = Xk8(); // WSL parent (Windows policy)
63 if (!Y) Y = nNH(); // final fallback
64 if (Y) q = ht(q, Y, w4H); // merge winner into effective policy
Rt() reads ~/.claude/remote-settings.json (constant c79 = "remote-settings.json"). Any non-empty remote stub — including a single boolean unrelated to permissions/hooks — sets Y and short-circuits the chain. There is no merge between remote-pushed and endpoint-defined managed settings.
Environment Info
- Platform: linux
- Terminal: gnome-terminal
- Version: 2.1.119
- Feedback ID: 83b2b189-bde8-48f9-8de7-e61f999848c4
Errors
[]
Fixed by removing the ~/.claude/remote-settings.json
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗