TUI: 'Failed to save approvals reviewer: config/batchWrite failed' on every Full Access startup despite fully persisted config (0.147.0, Windows)
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Summary
On codex-cli 0.147.0 on Windows 11 (npm install), every startup in Full Access shows this error immediately after Permissions updated to Full Access:
Failed to save approvals reviewer: config/batchWrite failed
The session still clearly starts in Full Access / YOLO mode, so the profile config is loading. This looks like a redundant startup persistence attempt that fails noisily even though the setting is already persisted.
Forensics
~\.codex\config.tomlalready containsapprovals_reviewer = "user",approval_policy = "never", andsandbox_mode = "danger-full-access".~\.codex\automation.config.tomlcontains the same persisted values.- ACLs were checked and normalized: owner has FullControl, there are no Deny ACEs, and directory inheritance is clean.
- Global state JSON is valid.
- There are no leftover
.tmpor.lockfiles. - The error persists across startups.
Related issues:
- #26077:
batchWritehides the underlying write error. - #36647: the Full Access path appears to write
approvals_reviewerunconditionally.
Request
Please make the startup write conditional, skipping it when approvals_reviewer is already persisted, and/or surface the underlying write error instead of only reporting config/batchWrite failed.
No secrets are included here; paths are limited to ~\.codex.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the Full Access startup path and inspect the config/batchWrite handling for approvals_reviewer. Compare the persisted config values with the unconditional write described in related issue #36647, and use #26077 to trace the hidden write failure. Done means the redundant write is skipped when already persisted and/or the underlying error is surfaced.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100