[BUG] hasTrustDialogAccepted never persisted to ~/.claude.json despite repeated interactive sessions

Open 💬 11 comments Opened Jun 26, 2026 by SecBurg

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?

After months of interactive use in a project directory, the hasTrustDialogAccepted flag in ~/.claude.json remains false. On every new session, Claude Code warns:

Ignoring 20 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["/path/to/project"].hasTrustDialogAccepted: true in ~/.claude.json.

Flag stays false indefinitely. projectOnboardingSeenCount increments correctly (value: 4), proving the project was opened interactively multiple times - but the trust acceptance is never written.

Environment:

  • OS: Linux (Debian 13, kernel 6.12)
  • Claude Code: 2.1.193
  • Project path: /home/username/workdir/projectname

What Should Happen?

After accepting the trust dialog once, hasTrustDialogAccepted is set to true and persists across sessions.

Error Messages/Logs

Ignoring 20 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["/path/to/project"].hasTrustDialogAccepted: true in ~/.claude.json.

Steps to Reproduce

  1. Open a project directory with Claude Code interactively
  2. Proceed through any trust/onboarding dialog
  3. Close and reopen the project multiple times
  4. Observe hasTrustDialogAccepted in ~/.claude.json

Claude Model

Sonnet (default)

Is this a regression?

Yes, this worked in a previous version

Last Working Version

version before latest

Claude Code Version

2.1.193

Platform

Anthropic API

Operating System

Ubuntu/Debian Linux

Terminal/Shell

Other

Additional Information

Workaround:

Manually set hasTrustDialogAccepted: true in ~/.claude.json.

View original on GitHub ↗

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