Settings file with auto-generated permission patterns breaks after update due to stricter colon parsing
Resolved 💬 3 comments Opened Feb 12, 2026 by p-oancia Closed Feb 16, 2026
Description
After updating Claude Code, login fails with this error:
The :* pattern must be at the end. Move :* to the end for prefix
matching, or use * for wildcard matching. Examples: Bash(npm run:*) - prefix
matching (legacy), Bash(npm run *) - wildcard matching
Files with errors are skipped entirely, not just the invalid settings.
The invalid patterns in ~/.claude/settings.local.json were auto-generated by previous Claude Code sessions when approving commands — not hand-written. They include:
WebFetch(domain:prnt.sc)and similarWebFetch(domain:xxx)entries — an older domain-filtering syntax where:was part of the domain filter, not a prefix matcher- One-off Bash approvals that contained URLs with
https:in them (e.g.Bash(for url in "https://example.com/..."))
These were all valid under the previous parser but now fail the stricter : validation.
Two issues
- No migration for auto-generated patterns. Since Claude Code itself wrote these patterns to the settings file, an update that changes validation rules should either migrate existing entries or gracefully skip only the invalid ones.
- Entire file is skipped, not just invalid entries. The error message confirms this: "Files with errors are skipped entirely, not just the invalid settings." A single invalid pattern causes all permissions in the file to be lost, which blocks the user from logging in. Gracefully ignoring only the invalid entries would be much less disruptive.
Steps to reproduce
- Use a previous version of Claude Code and approve some
WebFetchrequests for specific domains (generatesWebFetch(domain:xxx)entries) and/or approve Bash commands containing URLs - Update Claude Code to a version with the stricter
:*pattern validation - Attempt to launch Claude Code
Expected behavior
- Auto-generated patterns from previous versions should either be migrated automatically or ignored gracefully
- Invalid individual entries should be skipped with a warning, not cause the entire settings file to be discarded
Workaround
Manually edit ~/.claude/settings.local.json to remove all entries containing : that don't end with :*.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗