Approving request_permissions in the TUI app-server path returns You did not grant additional permissions
What version of Codex CLI is running?
codex-cli v0.117.0
What subscription do you have?
Pro
Which model were you using?
gpt-5.4 xhigh fast
What platform is your computer?
Linux 6.8.0-106-generic x86_64 x86_64
What terminal emulator and version are you using (if applicable)?
Ghostty 1.3.1
What issue are you seeing?
When a tool calls request_permissions through the TUI app-server path with filesystem permissions, approving the prompt does not grant the requested permissions.
After selecting either:
Yes, grant these permissionsYes, grant these permissions for this session
Codex reports:
You did not grant additional permissions
and subsequent shell commands still behave as if no extra permissions were granted.
The prompt I saw was:
Would you like to grant these permissions?
Reason: Need access to the repository’s .git metadata so I can stage and commit the verified fix.
- Yes, grant these permissions (y)
- Yes, grant these permissions for this session (a)
- No, continue without permissions (n)
After choosing 1, Codex printed:
You did not grant additional permissions
One clue was that the prompt did not show the expected Permission rule: line for the requested filesystem paths.
What steps can reproduce the bug?
- Start Codex TUI in a local git repository.
- Trigger a tool call that uses
request_permissionsfor filesystem write access through the app-server path. In my case this was write access to.gitso the agent could rungit add/git commit. - When the permissions prompt appears, choose either:
1. Yes, grant these permissions- or
2. Yes, grant these permissions for this session
- Observe that Codex responds with
You did not grant additional permissions. - Observe that the requested filesystem permission was not actually applied.
What is the expected behavior?
Choosing option 1 or 2 should return the granted permission profile, preserve the requested filesystem paths, and allow subsequent shell commands to use the granted access.
The approval prompt should also display the expected Permission rule: line when filesystem permissions are present.
Additional information
I did a quick search and did not find an obvious duplicate issue in openai/codex.
I verified a local fix and it resolved the problem. The issue appears to come from lossy JSON round-trips in tui_app_server for permission request/response payloads. The app-server side uses camelCase fields like fileSystem, while the core side uses snake_case fields like file_system. When those payloads were round-tripped through JSON instead of converted with typed mappings, filesystem permissions could be dropped and turned into an empty permission profile.
Replacing those round-trips with typed conversions in the TUI request/response paths fixed the bug locally.
See also: https://github.com/openai/codex/compare/main...Mygod:fix-permission?expand=1
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗