[BUG] Unrecognized key in settings.json freezes the CLI instead of being reported
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Summary
Adding an unrecognized top-level key to ~/.claude/settings.json makes the interactive CLI freeze. Startup completes and the banner renders, but input stops being processed shortly afterwards — typically while the slash command menu is filtering. Ctrl+C has no effect; the process must be killed from outside.
The docs state that Claude Code reports invalid JSON or unaccepted values at the start of an interactive session, and that claude doctor lists rejected entries. Neither happened. There was no error message at any point.
What Should Happen?
Claude Code should report the unrecognized key at startup, as documented, and continue with the remaining valid settings — or refuse to start with a clear error. It should not start successfully and then hang on input.
Side effect worth noting
While diagnosing this, every restart attempt registered a new Remote Control session, because Remote Control auto-connect was on by default. Seven orphaned sessions accumulated in the session list and had to be deleted one by one from the mobile app. Sessions killed via Stop-Process remain listed with an "active" indicator; the state is not updated after a hard kill.
Turning off "Enable Remote Control for all sessions" in /config resolved the accumulation. The corresponding key is remoteControlAtStartup.
Error Messages/Logs
{
"autoUpdatesChannel": "latest",
"theme": "dark",
"autoCompactEnabled": false,
"disableRemoteControl": true
}
Steps to Reproduce
Steps to reproduce
Add an unrecognized top-level key to %USERPROFILE%\.claude\settings.json. In my case:
{
"autoUpdatesChannel": "latest",
"theme": "dark",
"autoCompactEnabled": false,
"disableRemoteControl": true
}
disableRemoteControl is documented in third-party references but is apparently not a valid key in this version. The JSON itself is valid.
Start claude in a terminal.
Type / and continue typing a command name, e.g. /conf.
Result: the slash command menu appears, then the session stops accepting input. Ctrl+C does not interrupt. No error message is shown.
Isolating the cause
Renaming settings.json away and starting claude: starts normally, accepts input, slash menu works.
Restoring the file without the unrecognized key: starts normally, works.
Same behavior in Windows Terminal and in a plain PowerShell window, so it is not terminal-host specific.
Same behavior on 2.1.238 and 2.1.240, so it is not specific to one build.
Expected behavior
Claude Code should report the unrecognized key at startup, as documented, and continue with the remaining valid settings — or refuse to start with a clear error. It should not start successfully and then hang on input.
Side effect worth noting
While diagnosing this, every restart attempt registered a new Remote Control session, because Remote Control auto-connect was on by default. Seven orphaned sessions accumulated in the session list and had to be deleted one by one from the mobile app. Sessions killed via Stop-Process remain listed with an "active" indicator; the state is not updated after a hard kill.
Turning off "Enable Remote Control for all sessions" in /config resolved the accumulation. The corresponding key is remoteControlAtStartup.
Claude Model
Not sure / Multiple models
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.237 ?
Claude Code Version
2.1.240
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
_No response_