Desktop app rewrites removed feature flag js_repl into config.toml on every startup
Summary
The Codex desktop app writes features.js_repl = false back into config.toml on every launch, even when the user has manually removed the line. js_repl is reported as a removed-stage feature flag by codex features list.
Environment
- codex-cli 0.133.0
- Codex desktop app 26.519.41501
- macOS (Darwin 25.4.0, arm64)
Steps to reproduce
- Quit the Codex desktop app completely.
- Edit
$CODEX_HOME/config.tomland remove thefeatures.js_repl = falseline. - Confirm with
grep js_repl $CODEX_HOME/config.tomlthat the line is gone. - Run
codex features listandcodex doctor. The line stays absent; the CLI does not write it back. - Launch the Codex desktop app.
- Re-check
config.toml.features.js_repl = falseis present again.
Observed behavior
After every desktop-app launch, features.js_repl = false is restored.
Code reference
In the desktop bundle at Codex.app/Contents/Resources/app.asar, file .vite/build/main-*.js:
var Qn = [`features.js_repl`, /* ... */];
async function $n({ appServerConnection, desktopFeatureAvailability, ... }) {
let d = await St({ ... });
await appServerConnection.sendAppServerRequest(`config/batchWrite`, {
edits: er(d), // Qn.map(t => ({ keyPath: t, mergeStrategy: `replace`, value: d?.[t] ?? null }))
expectedVersion: null,
filePath: null,
reloadUserConfig: true,
});
}
$n is awaited during app startup. The features.js_repl keyPath is written with mergeStrategy: "replace" unconditionally.
CLI feature stage
$ codex features list | grep js_repl
js_repl removed false
js_repl_tools_only removed false
Impact
A user who deletes features.js_repl = false finds it restored on the next desktop-app launch, with no UI control to suppress the rewrite. This is confusing because the CLI reports the flag as removed.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗