Upgrading /Permissions to Full Access does not take effect during an active task
What version of Codex CLI is running?
codex-cli 0.144.4
What subscription do you have?
Plus
Which model were you using?
gpt-5.5 xhigh
What platform is your computer?
Microsoft Windows NT 10.0.19045.0 x64
What terminal emulator and version are you using (if applicable)?
PowerShell 7.6.3
What issue are you seeing?
changing Codex permissions to Full Access while a task is already running does not update the permissions used by the active turn.
The UI shows that Full Access is enabled, but subsequent tool calls continue using the previous restricted permission level. The only workaround is to stop the current task and start it again, which interrupts long-running workflows and may lose progress.
What steps can reproduce the bug?
Start a Codex task with restricted permissions, such as read-only or workspace access.
Allow the task to continue running.
Change the permission level to Full Access without stopping the task.
Observe that the operation is still blocked or triggers an approval prompt.
What is the expected behavior?
Permission changes should apply to subsequent tool calls within the currently active task.
After selecting Full Access, Codex should be able to continue the existing workflow with the new permission level without requiring the task to be stopped or restarted.
Allow permission upgrades to be applied dynamically to the active turn, at least for subsequent tool calls.
Alternatively, the UI should clearly state that the permission change will only take effect after the current task is restarted, rather than showing Full Access as though it is already active.
Additional information
This is particularly disruptive for:
Long-running or multi-step workflows
Tasks that have already accumulated significant context or progress
Runs that encounter an unexpected permission requirement midway through execution
Workflows where restarting may repeat work or produce inconsistent results
Additional context
This request concerns upgrading permissions during an active task. It should not require restarting or discarding the current workflow merely to grant additional access.
6 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I can reproduce the same active-turn boundary on macOS:
0.144.4Darwin 25.5.0 arm64 armAfter selecting and confirming Full Access during an active turn, the TUI displays
Permissions updated to Full Access, but later tool calls in that same turn continue to request approval. The next user turn in the same thread uses Full Access correctly.I traced the current
mainimplementation (2e1607ee2fa8099a233df7437adee5f16a741905) and found the following:OverrideTurnContextaction:https://github.com/openai/codex/blob/2e1607ee2fa8099a233df7437adee5f16a741905/codex-rs/tui/src/chatwidget/permission_popups.rs#L248-L273
thread/settings/update:https://github.com/openai/codex/blob/2e1607ee2fa8099a233df7437adee5f16a741905/codex-rs/tui/src/app/thread_settings.rs#L94-L134
Session::update_settingsupdates the storedSessionConfiguration, but it does not update the already-createdTurnContext:https://github.com/openai/codex/blob/2e1607ee2fa8099a233df7437adee5f16a741905/codex-rs/core/src/session/mod.rs#L1440-L1477
https://github.com/openai/codex/blob/2e1607ee2fa8099a233df7437adee5f16a741905/codex-rs/core/src/tools/handlers/shell.rs#L168-L219
https://github.com/openai/codex/blob/2e1607ee2fa8099a233df7437adee5f16a741905/codex-rs/core/src/tools/orchestrator.rs#L137-L168
The built-in Full Access preset is unambiguous:
AskForApproval::NeverplusPermissionProfile::Disabled:https://github.com/openai/codex/blob/2e1607ee2fa8099a233df7437adee5f16a741905/codex-rs/utils/approval-presets/src/lib.rs#L50-L59
Suggested approval-boundary behavior
Before emitting a user approval request for
ExecApprovalRequirement::NeedsApproval, re-read the thread's latest effective settings (for example throughSession::thread_config_snapshot) rather than relying only on the turn-frozen values.If the latest acknowledged settings are Full Access (
approval_policy == Neverand the effective permission profile isPermissionProfile::Disabled):Skip;This check could happen immediately before
resolve_tool_apporvalin theNeedsApprovalpath. It is important to refresh both the approval decision and the execution/sandbox permissions; merely hiding the prompt would otherwise leave the command running under the stale restricted profile.This would provide a natural synchronization boundary without requiring every part of
TurnContextto become mutable: a tool call that reaches an approval boundary can observe the user's explicit Full Access upgrade and continue without interrupting the active task. If active-turn adoption is intentionally unsupported, the TUI message should instead say that the change applies starting with the next turn.I can reproduce the same active-turn failure in a Linux/WSL environment with Codex CLI
0.144.4.After the TUI says
Permissions updated to Full Access, the active task still asks for approval for repository-local commands, e.g.:The stated reason is that the local TypeScript tool needs a temporary local IPC socket. I approved and allowlisted
npm run pipeline:docs:refresh, which then completed, but the followingnpm run pipeline:docs:checkimmediately prompted again for the same reason.This is disruptive for unattended/YOLO workflows: Full Access is visibly acknowledged, yet each new command prefix can still interrupt the already-running task. The failure is not specific to network access; these are repository-local documentation commands using a temporary local IPC socket.
Update: I rebuilt this as a clean commit from current main and corrected test-compilation issues found in my initial draft.
Patch: https://github.com/simfor99/codex/commit/26e1b05
Compare: https://github.com/openai/codex/compare/main...simfor99:codex:fix/active-turn-permissions-clean?expand=1
The change keeps the active turn’s approval_policy and permission_profile behind shared locks, so Session::update_settings updates the values used by subsequent tool calls in the already-running turn. It also refreshes the MCP manager.
Regression coverage:
Validated:
The previous commit linked here is superseded by this one. I could not open an upstream PR because this repository restricts PR creation to collaborators, but this branch and commit are available to cherry-pick.
I can reproduce this behavior as well.
Environment:
codex-cli 0.145.0SSH Terminal019fc4df-715d-7e52-b466-f70a94eee9aaDuring an active, long-running task, I changed
/permissionsfrom the middle/workspace permission tier to Full Access. Codex confirmed that Full Access was selected, but subsequent commands in the same active task continued requesting approval under the previous permission level.Changing permissions during a session should update the effective permission state for subsequent tool calls without requiring the current task to be cancelled or restarted.
Ideally, after Full Access is confirmed:
Restarting a long-running task is disruptive because it can repeat work, lose execution progress, or cause the agent to abandon the original workflow.
Corroborating this on Windows 11 with Codex Desktop
26.803.10989.0(ChatGPT Desktop1.2026.190.0).Observed sequence:
create_threadroute began with recorded effective settingsworkspace-write/approval_policy: on-request/ restricted filesystem. The creation route exposed no permission parameter and did not inherit the parent's mode. This part overlaps #25810.The misleading part is therefore not only that the new task starts restricted: after the UI switch, the visible label says Full Access while the active turn still behaves as restricted. A worker can reasonably trust the displayed mode and misdiagnose the resulting prompts as its own orchestration error.
No repository-specific behavior was involved. The safe operational workaround is to treat the label as requested state only: stop the active turn, start a new turn after selecting the mode, and verify the new turn's recorded effective permission tuple before substantive commands. A mid-turn UI change did not repair the running turn in this reproduction.