{"version":"2.1.318","anchor":"config-file-invalid-startup-refusal-reason","canonical_anchor":"config-file-invalid-startup-refusal-reason","heading":"A broken config file is now left alone and reported as config_file_invalid","tier":"notice","area":"SDK","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/config-file-invalid-startup-refusal-reason","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318","markdown":"### A broken config file is now left alone and reported as config_file_invalid\n\nWhen a config file is not valid JSON, Claude Code leaves it untouched, prints advice, and refuses non-terminal starts with `config_file_invalid`\n\n**What**\n\nClaude Code keeps settings in config files written in JSON, a text format. When one read at startup is not valid JSON:\n\n- Claude Code prints extra advice beyond the old \"Configuration error in\" line, and records `config_file_invalid` as the reason it stopped.\n\n- The file is left unchanged: saves to it are dropped rather than overwriting it.\n\n- `config_file_invalid` is a new startup-refusal code in the SDK schema, the description of messages for programs that embed Claude Code. Every start without a terminal is refused until the file is repaired.\n\n**Why**\n\nA corrupt config is no longer overwritten, so you can still repair it and keep your settings. Programs that run Claude Code automatically can now tell this case apart from a failure that is worth retrying, and know to fix the file first.\n\n- Area: SDK\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}