[BUG] Desktop: "Disable automatic verification" does not persist, and a hand-written autoVerify: false in .claude/launch.json is overwritten with true shortly after app start

Status Open
Reported on v2.1.227
Maintainer reply None cached
Activity 2 comments · opened Aug 13, 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?

The documentation gives two ways to turn auto-verify off. Neither holds.

Auto-verify is on by default. Disable it per-project by adding "autoVerify": false to .claude/launch.json, or toggle it from the server dropdown menu. — https://code.claude.com/docs/en/desktop#auto-verify-changes
  1. The menu toggle does not persist. In the Browser pane's Panel settings (the ⋮ button), the item "Disable automatic verification" can be toggled, but reopening the menu shows the default again.
  1. A hand-written "autoVerify": false is overwritten. The app replaces it with "autoVerify": true about half a minute after start. Across a whole session, every value the app itself wrote was true; the only times the file ever held false were when it was written by hand.
  1. The menu and the file contradict each other. Observed at the same moment: the menu showed "Disable automatic verification" checked (auto-verify disabled) while .claude/launch.json held "autoVerify": true (auto-verify enabled).

The UI is German here; the item reads "Automatische Verifizierung deaktivieren".

What Should Happen?

  1. Toggling the menu item persists across reopening the menu and across restarts.
  2. A hand-written "autoVerify": false in .claude/launch.json is honoured and not overwritten, as the documentation states.
  3. The menu state and the file contents agree with each other.

Error Messages/Logs

No error is surfaced. The evidence is the file being rewritten.

`.claude/launch.json` did not exist in this project before; it was created by hand:

    {
      "version": "0.0.1",
      "autoVerify": false,
      "configurations": []
    }

The file is 72 bytes with `false` and 71 bytes with `true`, so the byte size alone identifies the value.

    13:55:43   file written by hand, autoVerify: false          72 B
    14:13:28   app process start (full restart, all processes ended first)
    14:14:00   file replaced by the app, autoVerify: true       71 B   <- 32 s after start
    14:23:51   replaced again, autoVerify: true                 71 B
    14:27:24   replaced again, autoVerify: true                 71 B

After the rewrite the file's creation time equals its last-write time, so the file is
replaced wholesale (write-temp-and-rename), not edited in place.

An earlier run showed the same with the app already running: a hand-written `false` at
13:54:0x was overwritten with `true` at 13:54:22.

Searched for any stored record of this toggle and found none:

    %APPDATA%\Claude   (recursive, every file < 20 MB)   no key for auto-verify
    %LOCALAPPDATA%\Claude                                no match
    ~\.claude                                            only inside conversation .jsonl transcripts

`claude_desktop_config.json` has keys for neighbouring preview state
(`launchPreviewPersistedWorkspaces`, `launchPreviewSessionScopedSessions`,
`launchPreviewAllowedOrigins`) but no key for auto-verify. The neighbouring
"Persist sessions" toggle in the same menu does have a slot there; this one does not.

Steps to Reproduce

The app is packaged as MSIX. Note that writes to %APPDATA% are redirected: from inside the
app the config appears under %APPDATA%\Claude\, while from an ordinary shell it exists only
under %LOCALAPPDATA%\Packages\<package family>\LocalCache\Roaming\Claude\. Both are the same
file. This matters when checking the file from a terminal.

Route A — the menu toggle

  1. Open a local session on a project folder and open the Browser pane.
  2. Open Panel settings (the ⋮ button in the Browser pane's title bar). The menu reads:

Datei öffnen (Open file)
Screenshot speichern (Save screenshot)
Erlaubte Websites verwalten (Manage allowed sites)
------------------------------------------
Links im Browser-Panel öffnen (Open links in the Browser pane)
Automatische Verifizierung deaktivieren v (Disable automatic verification)
Sitzungen beibehalten Nicht behalten > (Persist sessions)

  1. Toggle "Disable automatic verification".
  2. Close the menu and reopen it. The state is back to the default.

Note: "Manage allowed sites" contains no checkbox for this; the toggle exists only here.

Route B — the documented file

  1. Quit the app completely (end all processes, not just the window).
  2. Create .claude/launch.json in the project folder with:

{
"version": "0.0.1",
"autoVerify": false,
"configurations": []
}

  1. Start the app and open that project.
  2. Watch the file. Within about 30 seconds it is replaced with "autoVerify": true.

Claude Model

Not sure / Multiple models

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.227

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Other

Additional Information

Environment

Claude Desktop 1.28929.0 (MSIX package) — newest release at the time of filing,
changelog entry dated 2026-08-11
OS Windows 10, 10.0.19044
Session local; project folder on a mapped network drive (X: -> \\fileserver\share)
Permission mode auto (per-folder, stored in epitaxy-folder-permission-mode)
Preview servers none configured and none running (preview_list returns []);
the Browser pane was opened with preview_start {url}
UI language German — labels above are quoted verbatim with an English translation

Possibly related

The changelog for 1.28929.0 — the version in use here — contains this line:

Fixed some Windows installs (MSIX packages and enterprise-managed roaming profiles) failing to save chat history, settings, and scheduled tasks, and Cowork failing to start with "Download failed" after an app update.

This install is an MSIX package, and the symptom here is a setting that fails to save. So
either that fix does not cover this setting, or autoVerify takes a different path than the
settings it addressed. That seems worth checking first.

An earlier release (v1.24012.0, 2026-07-21) notes:

Fixed the app freezing when Claude Code updated its configuration file during concurrent use

so the app and Claude Code writing the same configuration concurrently has a history in this area.

#86175 (open) reports that preview_start prompts in every permission mode since desktop
1.28929.0 — the same version — and describes approvals living in an in-memory Set keyed by
session with nothing written to disk, with no settings key able to make them permanent. That
is a different code path (spawn consent, not auto-verify), but the "state is in memory only"
pattern matches what is measured above.

Host names and paths in this report are placeholders; the real ones differ but have the same shape.

View original on GitHub ↗

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