Permission engine misparses file paths containing colons

Resolved 💬 2 comments Opened Mar 26, 2026 by ruleslide Closed May 27, 2026

Summary

The permission engine appears to treat : in file paths as a special separator, causing permission checks to fail even when the path is covered by explicit allow rules. This makes "Allow for this session" ineffective and forces repeated permission prompts.

Environment

  • Claude Code version: 2.1.84
  • Platform: macOS (Darwin 21.6.0)
  • File paths are on Dropbox (valid macOS paths containing colons in folder names)

Reproduction

  1. Have a file path containing a colon, e.g.:

``
.tmp/YTV-21-Unlock Your Creativity: Transform One Rhythm into Endless Guitar Parts/article-browser-part2.txt
``

  1. Configure explicit allow rules in project settings.json:

``json
"Write(.tmp/**)"
`
And/or blanket allows in
settings.local.json:
`json
"Write",
"Edit"
``

  1. Attempt to Read or Write the file — Claude Code prompts for permission despite the allow rules.
  1. Click "Yes, during this session" — the next operation on the same file prompts again.

Expected behavior

  • Paths matching Write(.tmp/**) should be allowed without prompting, regardless of : in the path.
  • Blanket "Write" / "Edit" allows (no path pattern) should allow all paths.
  • "Yes, during this session" should persist for at least the exact same file path.

Actual behavior

  • Every Read/Write/Edit on paths containing : triggers a permission prompt.
  • Session-level allows do not persist, even for the identical file.
  • Restarting the session does not help (same files, same colons).

Evidence it is the colon

Two concurrent top-level instances (same version, same project, same settings files):

  • Instance A processed a folder without a colon (YTV-22- The Big Picture of Rhythm — Why These Ideas Apply to Any Style) — all permissions worked correctly, no prompts.
  • Instance B processed a folder with a colon (YTV-21-Unlock Your Creativity: Transform One Rhythm into Endless Guitar Parts) — prompted repeatedly for every file operation, session allows did not stick.

Notes

Colons are valid in macOS file paths and common in video titles. The permission pattern syntax uses : as a separator in Bash rules (e.g., Bash(sqlite3:*)), which may be the source of the conflict — the engine may be applying the same parsing to file path arguments in Read/Write/Edit calls.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗