Permission profile rejects the documented TOML table syntax for :workspace_roots
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- PR merge metrics
- PR metrics pending
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.810.52044
What subscription do you have?
Plus
What platform is your computer?
Darwin 24.6.0 arm64 arm
What issue are you seeing?
Codex App fails to load config.toml when a permission profile uses the documented TOML table syntax for :workspace_roots, as shown in the “Extend a profile” documentation.
Error message
Codex reports the following error for the filesystem.":workspace_roots" table in the configuration from the reproduction steps:
data did not match any variant of untagged enum FilesystemPermissionToml
Workaround
Replacing that nested TOML table with the equivalent inline-table syntax makes the configuration load successfully. The bundled Codex CLI (0.148.0-alpha.9) then reports:
config.toml parse ok
What steps can reproduce the bug?
- Add this documented configuration to ~/.codex/config.toml
default_permissions = "workspace-with-git"
[permissions.workspace-with-git]
extends = ":workspace"
[permissions.workspace-with-git.filesystem.":workspace_roots"]
".git" = "write"
- Restart Codex App or reopen a thread.
- Codex App refuses to load the configuration with the error above.
- Replace the nested table with this inline equivalent:
default_permissions = "workspace-with-git"
[permissions.workspace-with-git]
extends = ":workspace"
filesystem = { ":workspace_roots" = { ".git" = "write" } }
- Restart Codex App or run
codex doctor. - The configuration parses successfully.
What is the expected behavior?
The documented nested-table syntax and the equivalent inline-table syntax should both be accepted. If the nested-table form is not supported by the bundled Codex App parser, the permission-profile documentation should be updated to show only supported syntax.
Additional information
No response
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 by reproducing the documented nested-table configuration in ~/.codex/config.toml and compare it with the inline-table workaround; run codex doctor to verify parsing. Inspect the permission-profile parsing path used by the bundled Codex CLI, or the linked Extend a profile documentation if parser support is unavailable. Done means both documented forms load successfully, or the documentation shows only supported syntax.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 64/100