Corrupted deny_read_acl_state.json causes persistent "apply deny-read ACLs" sandbox failures
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 70/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- rust
- Domain
- operating-systems, security
Research direction
Locate the code that parses and regenerates .codex/.sandbox/deny_read_acl_state.json, then reproduce the failure with a file containing null bytes or invalid JSON. Done means corrupted state is safely recreated with an empty principals object and sandbox initialization succeeds; add or run coverage for the recovery path if the relevant tests are present.
Written by the indexing model from the issue text.
Description
What version of the Codex App are you using (From “About Codex” dialog)?
0.145.0-alpha.18
What subscription do you have?
ChatGPT Plus
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
Codex Desktop on Windows failed to initialize Browser Use and Computer Use.
The sandbox repeatedly failed with the following error:
setup error: apply deny-read ACLs
Caused by:
0: parse deny-read ACL state C:\Users<user>.codex.sandbox\deny_read_acl_state.json
1: expected value at line 1 column 1
The state file existed and was 22 bytes long, but its entire contents consisted of null bytes:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00
Because Codex kept trying to parse this corrupted file as JSON, all subsequent sandbox initialization attempts failed.
What steps can reproduce the bug?
- Start Codex Desktop on Windows.
- Attempt to use Browser Use or Computer Use.
- Codex fails before browser or screen control starts.
- Inspect this file:
C:\Users<user>.codex.sandbox\deny_read_acl_state.json
- The file contains only null bytes instead of valid JSON.
- Restarting Codex or Windows does not resolve the issue because the same corrupted state file is reused.
Workaround:
- Fully exit Codex.
- Rename:
deny_read_acl_state.json
to:
deny_read_acl_state.json.broken
- Restart Codex.
Codex then regenerates the file as:
{
"principals": {}
}
After regeneration, sandbox initialization succeeds.
What is the expected behavior?
Codex should detect that deny_read_acl_state.json is empty, corrupted, or invalid JSON and automatically recreate it.
A corrupted state file should not permanently block Browser Use and Computer Use across restarts.
Additional information
After renaming the corrupted file and restarting Codex, the following successful log entries appeared:
setup refresh: processed 3 write roots (read roots delegated); errors=[]
read-acl-only mode: applying read ACLs
setup binary completed
read ACL run completed
This suggests that the failure was caused specifically by the corrupted deny_read_acl_state.json file rather than Chrome login, the browser extension, or Windows permissions in general.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- Avg merge
- 1m
- Merged PRs (30d)
- 1k
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.
More from openai/codex
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug CLI windows-os
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
macOS sandbox blocks hw.optional.arm64 sysctl, causing Flutter to misdetect Apple Silicon as x64 Openbug CLI sandbox
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bug CLI TUI
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
CLI config enhancement skills
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
A-linter
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
oxc-project/oxc#26863 ·