[macOS][ChatGPT Work 26.901.31953] request_permissions disappears after projectless task continuation while granular policy still requires it
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Environment
- ChatGPT desktop app: 26.901.31953 (build 7868)
- Bundled
codex-cli: 0.153.1 - macOS: 26.6.2 (25G83)
- Architecture: Apple Silicon / arm64
- Task type: local, projectless task
- Approval setting shown in the UI: Ask for approval
Problem
In an existing projectless task, per-path filesystem permission prompts worked earlier in the same conversation. Later, after the conversation continued in a new internal rollout, the approval policy still required the built-in request_permissions mechanism, but that tool was no longer exposed to the model.
This creates a permission deadlock for writes outside the workspace:
- An ordinary write under
~/Downloadsfails withOperation not permitted. - Retrying through the legacy shell escalation path is rejected before any prompt can be shown.
- The built-in
request_permissionstool, which the active granular policy expects, is absent from the available tool inventory.
There is no “Full access” setting in this UI/configuration, and the user did not change the approval setting.
Redacted diagnostic evidence
The current desktop log repeatedly reports:
requestApprovalPolicy={"granular":{"sandbox_approval":false,"rules":false,"skill_approval":false,"request_permissions":true,"mcp_elicitations":true}}
requestPermissionProfile=:workspace
requestRuntimeWorkspaceRootCount=2
requestSandboxWritableRootCount=0
useAppServerPermissionDefault=false
Attempting the legacy escalation path produces:
approval policy is Granular(GranularApprovalConfig {
sandbox_approval: false,
rules: false,
skill_approval: false,
request_permissions: true,
mcp_elicitations: true
});
reject command — you cannot ask for escalated permissions
Earlier logs from this same conversation contain successful item/permissions/requestApproval responses granting write access to a subdirectory of ~/Downloads at:
- 2026-09-04 13:22:29 UTC
- 2026-09-04 14:54:24 UTC
- 2026-09-04 15:02:28 UTC
The earlier rollout contains 186 references to request_permissions; the current continuation contains none. The failure therefore correlates with the transition to a new internal rollout/continuation, while the granular policy itself remained active.
No sandbox, approval, or permission override is present in ~/.codex/config.toml.
Reproduction outline
- Start a local projectless task with Ask for approval.
- Perform an operation outside the workspace and approve a path through
request_permissions. - Continue the same conversation until a new internal rollout/continuation is created (the exact lifecycle trigger is uncertain).
- Request another write outside the workspace.
- Observe that
request_permissionsis no longer available, while the policy still rejects the legacysandbox_permissions=require_escalatedpath.
Expected behavior
Whenever the active granular policy has request_permissions: true, the built-in request_permissions tool should remain exposed across continuation, compaction, resume, or rollout transitions.
If it cannot be exposed, the runtime should provide a compatible approval fallback instead of leaving no valid authorization path.
Actual behavior
The task cannot request the user's authorization at all. It can read the source and determine the exact write needed, but it cannot create the requested backup under ~/Downloads.
Related issues
- #32563 — similar projectless-task deadlock involving Ask for approval
- #34182 — similar approval behavior changing during an existing desktop session
- #23359 — granular policy/model escalation mismatch
This report adds a current macOS reproduction and evidence that the required tool was available earlier and then disappeared within the same conversation.
Privacy
Paths, usernames, task identifiers, external-volume names, and user data have been redacted. No raw logs or personal files are attached.
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 projectless-task continuation flow with the granular policy and inspect the request_permissions tool inventory across rollout or resume transitions. Compare it with the legacy sandbox escalation path and the logged approval policy. Done means request_permissions remains available when required, or a compatible authorization fallback prevents the deadlock.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, rust
- Domain
- authorization, cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100