Trust dialog never re-fires for projects onboarded pre-2.1.195 → settings.local.json permissions permanently ignored

Resolved 💬 2 comments Opened Jun 30, 2026 by jaded423 Closed Jun 30, 2026

Environment: Claude Code 2.1.196, macOS (Darwin 25.5.0)

Summary

v2.1.195+ enforces the per-project hasTrustDialogAccepted flag — settings.local.json permissions.allow entries are ignored unless the flag is true. For projects whose onboarding completed before this enforcement existed, the flag was never set, and the trust dialog never re-fires, leaving no interactive way to set it. The CLI's own suggested remedy ("accept the trust dialog") is unreachable.

Repro

  1. Have a project in ~/.claude.json with:
  • hasCompletedProjectOnboarding: true
  • projectOnboardingSeenCount > 0
  • hasTrustDialogAccepted: false
  • (state left by onboarding on an older version — mine: lastOnboardingVersion: 2.1.59)
  1. Run claude in that dir (with or without --resume).

Actual

A red warning prints before the TUI, then Claude proceeds with permissions ignored:

Ignoring 87 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/j"].hasTrustDialogAccepted: true in /Users/j/.claude.json.

No trust dialog ever appears — because onboarding is marked complete, the prompt is skipped. So the suggested interactive fix is impossible; the only escape is hand-editing .claude.json or downgrading below 2.1.195.

Expected

Either:

  • (a) the trust dialog re-fires whenever hasTrustDialogAccepted is false, regardless of onboarding state; or
  • (b) a migration sets hasTrustDialogAccepted: true for already-onboarded projects that had working permissions before 2.1.195.

Notes

  • Not a data-loss event: .claude.json backups from March and May also show the flag false for these dirs — the flag was simply never set; only the enforcement is new in 2.1.195+.
  • Affected ~49 of 68 projects on this machine.
  • Workaround used: with all Claude sessions closed (Claude rewrites .claude.json on exit, clobbering live edits), set hasTrustDialogAccepted: true for each project entry in ~/.claude.json.

View original on GitHub ↗

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