macOS Codex Desktop Settings show "Unable to save" for sandbox/approval config writes due to configVersionConflict
What version of the Codex App are you using (From “About Codex” dialog)?
Codex Desktop: 26.513.31313 Codex Desktop bundle version: 2867
What subscription do you have?
plus
What platform is your computer?
Platform: macOS 14.6.1, arm64
What issue are you seeing?
Changing user settings in Codex Desktop Preferences, especially sandbox / permissions / approval-related settings, repeatedly shows:
Unable to save
The config file itself is writable and can be manually edited. For example, manually adding this to $CODEX_HOME/config.toml works and is read by the CLI:
sandbox_mode = "workspace-write"
The CLI also parses the resulting config successfully.
Expected behavior
Codex Desktop Preferences should save sandbox/approval settings successfully.
If the config has changed since the Preferences page last read it, Desktop should recover by re-reading the latest config version and retrying the write, or by batching/serializing related writes so they use the current config version.
Actual behavior
Desktop Preferences reports Unable to save.
Desktop logs show repeated config/value/write failures with:
error={"code":-32600,"data":{"config_write_error_code":"configVersionConflict"},"message":"Configuration was modified since last read. Fetch latest version and retry."}
method=config/value/write
Redacted log evidence
The following snippets are from:
~/Library/Logs/com.openai.codex/2026/05/18/*.log
Sensitive identifiers and local details are not included beyond the generic method/error fields.
2026-05-18T04:56:31.437Z error [electron-message-handler] Request failed
error={"code":-32600,"data":{"config_write_error_code":"configVersionConflict"},"message":"Configuration was modified since last read. Fetch latest version and retry."}
method=config/value/write
2026-05-18T07:06:09.657Z error [electron-message-handler] Request failed
error={"code":-32600,"data":{"config_write_error_code":"configVersionConflict"},"message":"Configuration was modified since last read. Fetch latest version and retry."}
method=config/value/write
2026-05-18T07:10:09.537Z error [electron-message-handler] Request failed
error={"code":-32600,"data":{"config_write_error_code":"configVersionConflict"},"message":"Configuration was modified since last read. Fetch latest version and retry."}
method=config/value/write
There are many repeated occurrences across several Desktop log files from the same day.
What steps can reproduce the bug?
Reproduction steps
- Start Codex Desktop on macOS.
- Open Preferences / Settings.
- Change a setting that writes to
$CODEX_HOME/config.toml, such as sandbox mode or approval-related settings. - Observe that the UI shows
Unable to save. - Check
~/Library/Logs/com.openai.codex/.... - Observe
config/value/writefailures withconfig_write_error_code=configVersionConflict.
Workaround
Manually editing $CODEX_HOME/config.toml works. For example:
sandbox_mode = "workspace-write"
This confirms the problem is not a basic filesystem permission failure. It appears to be a Desktop Preferences/app-server config write version conflict.
What is the expected behavior?
_No response_
Additional information
will this be fixed in next codex app version
3 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I can reproduce the same config write conflict on a newer macOS Codex Desktop build, and I have a bit more evidence that the setting may be partially persisted even while the UI keeps showing the stale-version error.
Environment:
26.519.31651(CFBundleVersion3017)codex-cli 0.133.0-alpha.126.5(25F71)arm64Reproduction:
config.tomlsettings / user config.Allow network accessunderWorkspace write.Observed behavior:
Earlier in the same session I manually set the same three sources to enabled and verified:
config.tomlhadnetwork_access = true.codex-global-state.jsonhad no bad current-workspacenetworkAccess != truerecordsstate_5.sqlitehad no current-workspaceworkspace-writethread rows withnetwork_access != 1codex doctorreported config load OK and sandbox network enabledAfter using the Settings UI again, the value changed to false but the UI still displayed the config version conflict. That suggests the core issue is not just a file permission or SQLite persistence problem. The UI/app-server path appears to perform a write with a stale
expectedVersion, then does not refresh/retry after the conflict, leaving the settings page stuck even when the underlying setting has changed.I also inspected the packaged frontend bundle locally and found the Settings page path keeps a layer
expectedVersionand passes it towrite-config-valuefor the network toggle (sandbox_workspace_write.network_access). On conflict, the UI displays the error, but from observed behavior it does not refresh the config layer/version and retry.Expected behavior:
configVersionConflict, the Settings page should re-read the latest config layer/version and retry, or invalidate/refetch the config query before allowing another save attempt.This is still reproducible in
26.519.31651/0.133.0-alpha.1.I can reproduce this on a newer macOS Codex Desktop build, with an additional symptom: the Settings UI can partially persist the change, then keep rejecting subsequent user-initiated edits with the stale-version error.
Environment:
~/.codex/config.toml)Reproduction observed:
``
text
``Configuration was modified since last read. Fetch latest version and retry.
Observed state transitions from the local config file:
``
toml
``approval_policy = "never"
sandbox_mode = "danger-full-access"
``
toml
``approval_policy = "on-request"
sandbox_mode = "danger-full-access"
and later:
``
toml
``approval_policy = "on-request"
sandbox_mode = "workspace-write"
codex doctor --summarythen reported the changed effective mode, e.g.restricted fs + enabled network · approval OnRequest, confirming the file was modified despite the UI still showing the stale-version error.Expected behavior:
config.toml, the UI should provide a visible reload/refetch action or automatically refetch and retry the requested single-field update.approval_policyandsandbox_modein a partially changed state.This seems like the Settings page is keeping the original config read-version after either its own write or a nearby background config update, then treating the next user action as a
configVersionConflict.