"Always allow access from this project" permission not persisted to settings.local.json

Resolved 💬 2 comments Opened Sep 11, 2025 by royliu-sage Closed Sep 12, 2025

Description

When selecting "Yes, and always allow access to [directory] from this project" in the permission prompt, the permission is not saved to the project's .claude/settings.local.json file, despite the "always" promise in the option text.

Current Behavior

  • User is prompted for directory access permission (e.g., mkdir -p /Users/rliu/Dev/docs/WeeklyLogs/Reports)
  • User selects Option 2: "Yes, and always allow access to Reports/ from this project"
  • Permission works for the current session
  • Permission is NOT saved to project's .claude/settings.local.json
  • User will be prompted again in future sessions

Expected Behavior

When selecting "always allow... from this project":

  1. Permission should be saved to /path/to/project/.claude/settings.local.json
  2. Future sessions from the same project should not prompt for the same permission
  3. The permission should be visible in the settings file

Steps to Reproduce

  1. Start Claude Code in a project directory
  2. Run a command that requires permission for an external directory (e.g., mkdir -p /external/path)
  3. Choose "Yes, and always allow access to [directory] from this project"
  4. Check project's .claude/settings.local.json - permission is not added
  5. Restart Claude Code and try the same command - will be prompted again

Evidence

Before granting permission:

{
  "permissions": {
    "allow": [
      "mcp__zen__chat",
      "mcp__roy-jira__jira_search",
      "Read(//Users/rliu/.claude/**)",
      "mcp__github__list_pull_requests"
    ]
  }
}

After granting "always allow from this project":

Same content - no new permission added for the directory access.

Testing shows:

  • Permission works in current session (can create directories without further prompts)
  • Permission is stored in runtime/session memory only
  • Not persisted to settings file as promised by "always"

Impact

  • Misleading UX - "always" implies persistence but doesn't deliver
  • Workflow interruption - users must re-approve permissions every session
  • Contradicts the explicit promise in the option text

Suggested Fix

Either:

  1. Actually persist the permission to project's settings.local.json when Option 2 is selected
  2. Change the wording from "always allow" to "allow for this session" to match actual behavior

Environment

  • Claude Code (CLI version)
  • Platform: darwin
  • Project path: /Users/rliu/projects/Hackathon/2025.09
  • Settings file: /Users/rliu/projects/Hackathon/2025.09/.claude/settings.local.json

View original on GitHub ↗

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