[BUG] Claude Code ignores permissions
Status Closed — not planned
Maintainer reply None cached
Workaround ✓ Mentioned in thread ↓
Activity 12 comments · opened Oct 10, 2025 · closed Mar 26, 2026
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?
I have a file in ~/.claude/settings.json and [project]/.claude/settings.local.json.
I have authorized — manually modifying the file — mcp__serena__find_symbol in both of those files. When I launch claude, it asks for the permission again. If I select "Remember for this project", it completely overwrites the file and puts the exact same line which should have granted it permissions in the first place.
What Should Happen?
It should not ignore the permissions in my user or project directory.
Error Messages/Logs
Steps to Reproduce
Self-explanatory
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.0.13
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
IntelliJ IDEA terminal
Additional Information
_No response_
12 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Detailed Investigation Report: Permissions Ignored Despite Explicit Configuration
### Environment
.claude/settings.local.json### Problem Statement
Claude Code repeatedly requests permissions for actions explicitly allowed in
.claude/settings.local.json, including:uv run ruff check,uv run ruff format,uv run python -m py_compilemcp__basic-memory__edit_note,mcp__basic-memory__write_note, etc.All of these permissions were explicitly listed in the
permissions.allowarray.### Investigation Steps
#### Theory 1: Path Format Issue (Single vs Double Slash)
Based on issue #6850 and #6881, we hypothesized that absolute paths needed double slashes (
//) on macOS.Changes Made:
```
// Before
"Read(/Users/arnon/projects/**)"
"Bash(/Users/arnon/bin/send_text:*)"
// After
"Read(//Users/arnon/projects/**)"
"Bash(//Users/arnon/bin/send_text:*)"
Result: ❌ Failed - Still requested permissions
Test Method: Fresh Claude instance, asked to run uv run ruff check on a file
Outcome: Permission prompt appeared despite pattern being in allow list
Theory 2: Wildcard Syntax Issue (Colon vs Space)
Based on issue #819, we hypothesized that command:* syntax doesn't match space-separated arguments.
Changes Made:
// Before
"Bash(uv run ruff check:*)"
"Bash(uv run ruff format:*)"
// After
"Bash(uv run ruff *)"
Result: ❌ Failed - Still requested permissions
Test Method: New Claude instance after configuration change
Outcome: Still prompted for permission to run uv run ruff check bin/checked_bash.py
Theory 3: Configuration File Corruption
Rolled back .claude/settings.local.json to a known-good version from Oct 27 (commit a079a14) using git.
Result: ❌ Failed - Still requested permissions with old configuration
Test Method: Fresh Claude instance with rolled-back configuration
Outcome: Permissions still requested, ruling out configuration file as the cause
Evidence of Core Bug
Verification Steps Taken
# Verified settings file exists and contains permissions
$ grep -n "edit_note" .claude/settings.local.json
39: "mcp__basic-memory__edit_note",
# Verified only one settings file in project
$ ls -la .claude/settings*.json
-rw-r--r--@ 1 arnon staff 2845 Nov 6 12:09 .claude/settings.local.json
# Tested with git history
$ git log --oneline -- .claude/settings.local.json
ffe4d62 FLO-72: Add customers table page with sortable columns
99fa209 FLO-72: Implement users table page infrastructure
a079a14 FLO-72: prep for implementing table pages
# Rolled back and tested
$ git checkout a079a14 -- .claude/settings.local.json
# Result: Still prompted for permissions
Screenshot Evidence
Permission prompt appeared for uv run ruff check bin/checked_bash.py despite:
Conclusion
The permission system in Claude Code 2.0.34 does not read or respect .claude/settings.local.json at all, or the pattern matching is completely broken for all pattern types.
This is not caused by:
This appears to be a fundamental bug in the permission system initialization or matching logic affecting:
The system prompts for permissions on every fresh instance regardless of configuration, making the settings file effectively non-functional.
Reproducibility
100% reproducible on every fresh Claude Code instance with any configuration pattern tested.
```
This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.
This issue is still occuring for me on windows in vscode with the claude code plugin. It seemed to start after the new UI was rolled out (when it was a terminal experience it worked fine)
I have not had a chance to dig into the detail of the problem on my machine but this issue appears to have very good detail and the OP has done extensive analysis already.
Additional data point: Project inside ~/.claude/skills/
I'm experiencing the same issue with a project located at
~/.claude/skills/helix-memory/. The nested location inside the main.claudedirectory might be an additional factor.What we've tried (all failed):
In
~/.claude/settings.json(global):In
~/.claude/skills/helix-memory/.claude/settings.local.json(project local):Observations:
Update(scripts/memory_helper.py)when prompting, confirming the internal tool name is "Update"Edit()andUpdate()patterns**/*,**, and explicit directory patterns likescripts/**Hypothesis:
Having a project inside
~/.claude/skills/might cause path resolution issues since:~/.claude/settings.json~/.claude/skills/helix-memory/.claude/settings.local.jsonThe nested
.claudedirectories could confuse the permission matching logic.Version: Claude Code CLI (latest as of Jan 2026)
@kornysietsma found a workaround: https://github.com/kornysietsma/claude-code-permissions-hook
I ended up not waiting for Anthropic to fix all their permissions issues. I wrote a drop-in replacement using hooks: https://github.com/arnonmoscona/toolguard
Very easy to set up. Adding some new feature soon to overcome even more weird behaviors. It seems to work for me. I'd welcome feedback on it.
Escalation — Feb 19, 2026: "No" on permission prompt is ignored entirely
This has escalated beyond "allow rules not matching correctly." In my case, Claude prompts for permission, the user explicitly selects No, and Claude executes the command anyway.
This is not a misconfigured settings file — this is the interactive permission prompt's deny path being non-functional. Filed separately as #27002 since it's a distinct (and more severe) failure mode.
Combined with the compaction instruction loss (#9796), this means:
The permission system is the last line of defense and it's broken at every level: allow rules don't match (#15742), settings get corrupted (__NEW_LINE__ tokens), and now explicit denial is ignored (#27002).
This is still broken.
Still Happening — Permission System Has Multiple Failure Modes
Adding fresh data: as of v2.1.55 (Feb 25, 2026), permission bypass is still occurring. Documented:
5 reporters on this issue alone. The community pattern across all permission bugs now includes wiped codebases, dropped databases, and lost compute results.
Closing for now — inactive for too long. Please open a new issue if this is still relevant.
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.