Skip to content

codex-rescue subagent cannot retrieve its own background task result, and status/result are user-invocation-only #601

Description

@alexey-igrychev

What happens

Delegating a review to codex:codex-rescue from an orchestrating agent produces a task id and nothing else. The result is unreachable to that agent: the wrapper cannot fetch it, and /codex:status / /codex:result are marked disable-model-invocation, so only the human can retrieve the output.

Plugin codex@openai-codex 1.0.6 (db52e28f4d9ded852ab3942cea316258ae4ef346), Claude Code, macOS.

Sequence

  1. The main agent spawns the codex-rescue subagent with a review prompt (background).
  2. The subagent returns after ~34s with only: Codex Task started in the background as task-msgiet54-w97mof. Check /codex:status task-msgiet54-w97mof for progress. — no findings.
  3. The main agent messages the subagent to wait for that task and relay its output. It answers that it is "a thin forwarding wrapper restricted to a single task invocation per rescue request" and is "not permitted to call status, result, or poll for background task completion".
  4. The main agent tries the obvious fallback, invoking the codex:status skill/command itself, and is refused: Skill codex:status cannot be used with Skill tool due to disable-model-invocation. Ask the user to run /codex:status themselves.
  5. The review output only appears after the human runs /codex:result <id> and pastes it back.

commands/status.md, commands/result.md, commands/cancel.md, commands/review.md, commands/adversarial-review.md and commands/transfer.md all carry disable-model-invocation, so there is no model-reachable path to a finished task.

Why it matters

An agent that hands work to Codex cannot complete that work on its own — the loop always needs a human relay in the middle. In an unattended or scheduled run there is no relay, so the task completes and its result is simply never read. The delegation looks successful while producing nothing.

Suggestions

Either would close it:

  • let the rescue wrapper await or poll the task it started, so it returns findings rather than an id;
  • or expose a read-only, model-invocable way to fetch a finished task's result (a separate command without disable-model-invocation, or a tool), keeping the interactive commands as they are.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions