Skip to content

Claude Code Permission Pattern Error Fix

Claude Code — Permission Pattern Error Fix

Section titled “Claude Code — Permission Pattern Error Fix”

Date: 2026-02-12 Filed as: GitHub Issue #25289

After a Claude Code update, launching it fails with:

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.

Claude Code auto-saves permission approvals to ~/.claude/settings.local.json. Over time, this file accumulates entries like:

  • WebFetch(domain:prnt.sc) — older domain-filtering syntax
  • Bash commands containing URLs with https: in them

A recent update made the pattern parser stricter: any : in a permission pattern must now be :* at the very end (for prefix matching). Patterns with : elsewhere (like domain:xxx or https://) are now invalid. One invalid entry causes the entire file to be skipped.

  1. Open ~/.claude/settings.local.json in a text editor
  2. Remove any entries that contain : but do not end with :*
    • All WebFetch(domain:xxx) entries
    • Any Bash(...) entries containing URLs or other colons
  3. Keep entries like Bash(git push:*) where :* is at the end — these are valid
  4. Save and relaunch Claude Code

Valid patterns look like:

  • Bash(curl:*) — ends with :*
  • Bash(git push) — no : at all
  • WebSearch — no arguments

Invalid patterns look like:

  • WebFetch(domain:example.com): not followed by *
  • Bash(curl https://example.com): from URL