settings.local.json permissions silently ignored after directory rename; trust dialog never re-prompts when a parent dir is trusted

Open 💬 0 comments Opened Jul 6, 2026 by chandlerh

Environment

  • Claude Code version: 2.1.193
  • Platform: macOS (Darwin 25.5.0), zsh

Summary

After renaming a project directory, permissions.allow entries in the workspace's .claude/settings.local.json are silently ignored with:

Ignoring 11 permissions.allow entries from .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/Users/chandler/work/pursuit"].hasTrustDialogAccepted: true in /Users/chandler/.claude.json.

The suggested remedy ("run Claude Code interactively here once and accept the trust dialog") doesn't work: because a parent directory (/Users/chandler/work) already has hasTrustDialogAccepted: true, interactive sessions in the subdirectory never show the trust dialog again — so the flag stays false indefinitely and the permissions stay ignored, while everything else about the session works normally.

Repro

  1. Trust a workspace, e.g. /Users/chandler/work/huntplanner (and also have the parent /Users/chandler/work trusted).
  2. Add permissions.allow entries to <workspace>/.claude/settings.local.json.
  3. Rename the directory: mv huntplanner pursuit. A new projects["/Users/chandler/work/pursuit"] entry is created with hasTrustDialogAccepted: false; the old path keeps true.
  4. Run claude in the renamed directory.

Expected

Either:

  • the trust dialog is shown again so the flag can be accepted, or
  • trust of the parent directory extends to honoring the subdirectory's settings.local.json (it already suppresses the dialog, so the two behaviors are inconsistent), or
  • some path for trust to migrate/re-prompt after a rename.

Actual

  • Warning on every launch; the 11 allow entries are ignored, so permission prompts return for previously allowed commands.
  • No interactive way to re-accept trust — the dialog never appears because the parent is trusted.
  • Only fix is hand-editing ~/.claude.json as the message suggests.

Notes

Confirmed state in ~/.claude.json:

"projects": {
  "/Users/chandler/work":             { "hasTrustDialogAccepted": true  },
  "/Users/chandler/work/huntplanner": { "hasTrustDialogAccepted": true  },  // old path
  "/Users/chandler/work/pursuit":     { "hasTrustDialogAccepted": false }   // renamed path
}

View original on GitHub ↗