Skip to content

Cross-task delegated turns ignore visible Full Access until direct user input #32165

Open

Description

@devansh-jain-18

Environment

  • Codex Desktop: 26.707.31428 (build 5059)
  • Bundled/local Codex CLI: 0.144.1
  • macOS: 26.5.2
  • Target task visibly configured as Full access

Summary

A turn delivered to an existing task through cross-task messaging can run with a managed/restricted network policy even though the target task's composer displays Full access.

Submitting a direct user message in the same target task immediately fixes the execution boundary: the same localhost connection then succeeds.

This appears to be a permission-context propagation gap specific to cross-task delegated turns, similar to the automation and Goal continuation issues listed below.

Steps to reproduce

  1. Open task B in Codex Desktop and select Full access.
  2. Start a harmless localhost HTTP listener.
  3. From task A, send a message to task B using Codex cross-task messaging.
  4. In task B, observe the incoming bubble labeled "Sent by Codex from another task".
  5. Have that delegated turn connect to the localhost listener using both curl and Python socket.create_connection.
  6. Observe:
    • lsof can see the listener.
    • curl cannot connect.
    • Python raises PermissionError: [Errno 1] Operation not permitted.
  7. Without changing the visible permission selector, submit a direct user message in task B.
  8. Repeat the same localhost connection.
  9. The connection succeeds.

Expected behavior

A cross-task delegated turn should inherit the target task's current effective Full Access policy.

If delegated turns are intentionally restricted, the UI should display the delegated turn's effective permission policy instead of continuing to show Full access.

Actual behavior

  • Cross-task delegated turn: managed/restricted network execution despite the target composer showing Full access.
  • Direct user-submitted turn in the same task: Full Access takes effect and the same localhost operation succeeds.

The visible permission state and effective turn execution state therefore disagree.

Impact

  • Cross-task orchestration can silently fail on localhost services, development servers, Docker-backed workflows, MCP servers, and other network-dependent tools.
  • The assistant may incorrectly diagnose service, DNS, authentication, or application failures when the actual cause is stale/restricted turn permissions.
  • The only observed recovery is manual user intervention in the target task, defeating unattended orchestration.

Related issues

The distinguishing trigger here is an existing task receiving a cross-task delegated message, followed by a direct user message in that same task.

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    sandboxIssues related to permissions or sandboxing
    subagentIssues involving subagents or multi-agent features
    on Jul 10, 2026
  2. samtuke commented on Oct 15, 2026

    @samtuke

    We observed a closely matching delegated-task permission mismatch on macOS on 15 October. This is evidence from the effective runtime records, rather than an inference from the agent asking a question.

    Environment: installed Desktop 26.1007.30912 (build 20156), bundled runtime 0.162.0-alpha.17.2, macOS 27.0.1 arm64. The local configuration inspected during this investigation contains approval_policy="never" and sandbox_mode="danger-full-access".

    Sanitized timeline, all UTC:

    • 00:10:40: the parent chat's turn_context records never / danger-full-access / disabled permission profile.
    • 00:15:29: a new chat created through cross-task delegation starts with on-request / workspace-write / network_access=false / managed profile / active profile :workspace.
    • 00:24:45: the parent chat still records never / danger-full-access / disabled.
    • The delegated chat encounters a network failure reading GitHub and requests command approval. Saving its authorized evidence outside the workspace also requires approval. Both interrupt the intended unattended work.
    • 00:54:47: the child still has on-request and a managed/restricted profile in thread_settings_applied.
    • 00:55:41: thread_settings_applied changes the same child to never / disabled / :danger-full-access.
    • 00:55:42: the next direct user turn records never / danger-full-access / disabled. Subsequent network reads succeed without escalation.

    This extends the report to newly created delegated chats, as well as existing-task continuations. The direct-user turn followed the recorded Full Access settings update, so we cannot separate the effect of the settings update from direct input. We did not reproduce the localhost test or establish which client path selected the child's initial restricted profile.

    Expected: delegated execution should honor the intended permission selection, and the UI should expose the actual executing profile and the source of any override. No raw rollout, credentials, private paths, or project details are included here.

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 sandboxingsubagentIssues involving subagents or multi-agent features

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions