Permission-profile read denials are reported active but ignored by unified exec on macOS
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- PR merge metrics
- PR metrics pending
Description
Environment
- Codex CLI 0.149.1
- macOS 26.5.1
- Intel Mac
- ChatGPT subscription authentication
codex exec --json
Configuration
A custom permission profile contained:
":root" = "deny"":minimal" = "read"- write access to one synthetic project
- an exact deny for a synthetic sibling directory
- network disabled
The invocation used --ignore-user-config, --ignore-rules, approval policy never, and no legacy --sandbox flag.
The disposable fixture contained only:
/private/tmp/codex-profile-repro/
project/allowed.txt
denied/forbidden.txt
A single turn performed an allowed project read/write and attempted to read the denied marker with all output redirected to /dev/null.
Expected
- Project read/write succeeds.
- Reading
denied/forbidden.txtfails, or Codex refuses to execute if the policy cannot be enforced.
Actual
- Project read/write succeeds.
- Reading the explicitly denied file also succeeds.
- Recorded session metadata identifies the custom profile as active and contains the root deny and exact denied path.
- Applying the same generated profile directly with
codex sandbox -Pcorrectly denies the read. - The live failure reproduced twice.
No real credentials, private files, or secret contents were tested or printed. No API key was provided.
Questions
- Why does unified exec ignore the recorded filesystem deny entries?
- Should local profile denials survive every ordinary unified-exec path when no escalation or legacy sandbox is requested?
- Is there a supported no-inference diagnostic for the same execution path?
Documentation: https://learn.chatgpt.com/docs/permissions
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
Reproduce the issue with codex exec --json using the described profile, then compare it with the same generated profile under codex sandbox -P. Trace how the recorded filesystem denials are handled in unified exec; done when the denied read fails or execution refuses safely, and the no-inference diagnostic path is established.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, rust
- Domain
- cli, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100