Skip to content

macOS Desktop 26.803.41515 removes Custom permissions and forces managed workspace profile #37437

Open

Description

@svan71

What version of the Codex App are you using?

ChatGPT/Codex Desktop 26.803.41515 (build 6321)

Bundled Codex CLI: 0.147.0-alpha.6.5

What platform is your computer?

macOS ARM64

What issue are you seeing?

This Desktop update introduced a severe permission-profile regression.

An existing user configuration contains:

sandbox_mode = "danger-full-access"
approval_policy = "never"
approvals_reviewer = "user"

The bundled codex doctor still loads and parses that configuration successfully and reports unrestricted filesystem access, enabled network access, and approval policy Never.

However, every new Desktop task is launched with different task-injected runtime values:

approval_policy = granular
permission_profile.type = managed
active_permission_profile.id = :workspace
sandbox_policy.type = workspace-write
network_access = false

At the same time, the composer permission picker no longer offers Custom. It only offers Ask for approval and Approve for me. Fully restarting the application does not restore Custom.

This blocks previously working SSH and network operations and silently overrides a valid local configuration.

What steps can reproduce the bug?

  1. On macOS ARM64, configure:

    sandbox_mode = "danger-full-access"
    approval_policy = "never"
  2. Confirm with the bundled codex doctor that the configuration parses and resolves to unrestricted filesystem/network access with approval Never.

  3. Launch Desktop 26.803.41515 (build 6321).

  4. Start a fresh task.

  5. Inspect the composer permission picker and first-turn runtime metadata.

Observed:

  • Custom is absent from the picker.
  • The task is forced to managed :workspace, workspace-write, restricted network, and granular approvals.
  • Restarting does not help.

Rollback proof

Rolling back to the immediately preceding official appcast build:

  • Desktop 26.730.61639 (build 6234)
  • Bundled CLI 0.147.0-alpha.1.2

immediately restores:

  • the Custom picker option;
  • permission_profile.type = disabled;
  • sandbox_mode = danger-full-access;
  • enabled network access;
  • approval_policy = never.

No configuration change is required between the broken build and the rollback. No administrator or workspace policy is involved.

What is the expected behavior?

Desktop should honor the validated local permission and approval configuration. If a policy intentionally overrides it, the UI should identify that policy and source explicitly. It must not silently replace the configured runtime profile or remove Custom from the picker.

Please fix the Desktop config-to-runtime permission-profile handoff and restore the Custom option.

Additional information

Feedback was also submitted through /feedback with no logs uploaded.

Feedback thread ID: 019fdc28-2b3f-7ef2-ae50-fd326953ca23

Related reports:

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    sandboxIssues related to permissions or sandboxing
    on Aug 7, 2026
  2. github-actions commented on Aug 7, 2026

    @github-actions
    Contributor
  3. alexander-dreyzen commented on Aug 7, 2026

    @alexander-dreyzen

    Additional cross-host and existing-task evidence from the same regression:

    • Reproduced immediately after the update on three Apple Silicon Macs.
    • All three hosts run Desktop 26.803.41515 (build 6321) and CLI 0.147.0-alpha.6.5.
    • The permission-related user configuration remains unchanged and symmetric on all three: approval_policy = "never", sandbox_mode = "danger-full-access", and workspace network access enabled.
    • None of the three hosts has /etc/codex/requirements.toml or /etc/codex/managed_config.toml, and none has the macOS MDM config_toml_base64 or requirements_toml_base64 keys.
    • Existing, already-running Desktop tasks also changed posture after the update: they render Ask for approval, the Custom option is absent, and resumed turns receive a managed workspace-write runtime profile despite the unchanged local configuration.

    There is also a client-consistency failure on one existing task:

    • On one Mac, the same task has returned to full access and continues normally.
    • On another Mac displaying that task, the UI remains trapped on a permission request. Deny is unavailable, Escape does nothing, and force-quitting/relaunching the app does not clear it.
    • The task itself is demonstrably live because it continues on the first Mac while the second client remains blocked.

    This makes the failure deterministic across hosts and also shows that the injected permission state or approval overlay can diverge between clients for the same task. It appears to be an app-level config-to-runtime migration plus client-state reconciliation regression, not a machine-local configuration mutation.

  4. grtninja commented on Aug 8, 2026

    @grtninja

    I have a matching Windows reproduction with before/after UI evidence.

    Timeline:

    • On July 16, 2026, Codex Desktop showed the gear-labeled Custom mode in the composer and it was selected.
    • I then did not use Codex for several days.
    • Windows updated the packaged app while it was idle.
    • On the first launch on August 8, Custom was gone. The permission picker now contains only Ask for approval, Approve for me, and Full access.

    I did not switch modes or edit the configuration during that idle window. My local config.toml, model-instruction surface, backups, and recovery manifest still exist. Full access is not an acceptable substitute for Custom because it does not prove that the configured instructions, MCP/profile state, routing, and approval semantics are the effective runtime authority.

    This makes the report look cross-platform and consistent with an app-level permission-profile migration / config-to-runtime reconciliation regression rather than a machine-local config mutation. The exact Windows AppX package version and state hashes are being captured now and can be added once the forensic restore run completes.

    Please preserve and expose the user-defined Custom profile across app updates. If a migration cannot map the existing state safely, the app should fail closed and report the migration error instead of silently removing Custom or selecting a built-in preset.

  5. samtuke commented on Oct 15, 2026

    @samtuke

    We observed a related configuration-to-runtime mismatch on macOS on 15 October, on installed Desktop 26.1007.30912 (build 20156), runtime 0.162.0-alpha.17.2, macOS 27.0.1 arm64.

    The local config inspected during this investigation contains approval_policy="never" and sandbox_mode="danger-full-access". A parent chat's turn_context records never / danger-full-access / disabled, but a newly delegated child started at 00:15:29 UTC with on-request / workspace-write / network_access=false / managed profile / active profile :workspace. The parent still recorded unrestricted permissions at 00:24:45 UTC.

    The child required approval for a read-only GitHub query after a network failure and for writing its already-authorized evidence outside the workspace. This interrupted unattended work.

    The same child later received a Full Access settings update at 00:55:41 UTC, and its next direct user turn recorded never / danger-full-access / disabled. Subsequent network reads succeed without escalation.

    This confirms a related effective-permission mismatch on a newer build; it does not reproduce the missing Custom option, establish that an update caused it, or show permanent failure to recover. Cross-task delegation is the distinguishing context in this observation. No raw logs, credentials, private paths, or project details are included.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingsandboxIssues related to permissions or sandboxing

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions