Proposal: Codex-native evidence-driven semantic escalation for dynamic multi-agent graphs

Open 💬 6 comments Opened Aug 22, 2026 by SlopSurfer4444

Summary

Codex Multi-Agent V2 is increasingly capable of model-driven graph construction rather than only running a fixed, human-authored pipeline: a model can delegate, recursively split work, consult other agents, request verification, choose different model/reasoning configurations, and reshape its next actions as new information arrives.

I am starting a local proof-of-concept around one missing control-plane behavior:

After execution produces new evidence, let the system decide what level of responsibility and capability should resolve the problem next.

Working term: semantic escalation.

This is not a proposal for a permanent EscalatorAgent, an always-running supervisor, or a mandatory pipeline stage. The decision could be made by the current owner, a transient no-history child, or another bounded model-backed turn.

The goal is to test whether Codex can use its existing graph primitives to build and revise workflows dynamically, while spending frontier intelligence primarily where execution reveals unresolved ambiguity.

---

Source-grounded starting point

I performed a static source audit against upstream commit 50ea8fd411422b3f7bc906bcde6c1c4432019a2e.

The current open-source architecture already contains much of the semantic surface needed for this experiment:

  • V2 spawn preserves parent thread, parent turn, root turn, canonical agent path, and inherited execution context, while children can recursively create descendants: spawn.rs.
  • Terminal child output is addressed to the direct parent as a contextual completion envelope: session/mod.rs.
  • Child construction supports no-history and bounded-history contexts, so recursive ownership does not inherently require cloning the full parent trajectory.
  • Spawn configuration can resolve child model and reasoning-effort overrides from the parent turn plus requested/default child configuration: multi_agents_common.rs.
  • A shared root-tree RolloutBudget and concurrent execution limiter already provide hard resource boundaries: rollout_budget.rs.
  • Detached review and rich app-server thread/turn/tool/event identities already provide useful verification and evidence surfaces.

I did not find a mandatory Planner → Worker → Reviewer sequence in core. The existing direction appears closer to a set of model-visible graph primitives from which the model chooses an execution shape.

That suggests semantic escalation should first be tested as a small model-driven behavior over existing primitives, not as a new orchestration subsystem.

---

The missing decision

Most routing proposals answer a question before execution:

Which model or agent should receive this task?

But execution often changes the nature of the task.

A narrowly scoped worker may discover that:

  • the failure is a trivial local implementation mistake;
  • the scope is valid, but the assigned model lacks the required capability;
  • the scope was decomposed incorrectly;
  • the problem crosses the current owner's boundary;
  • an architectural assumption made several levels above is wrong;
  • another retry would spend more tokens while preserving the wrong graph;
  • the safest action is to stop rather than continue mutating state.

At that point, neither “always retry the worker” nor “always escalate to the strongest model” is generally correct.

The useful question becomes:

Given the task contract, ownership chain, partial trajectory, evidence, prior attempts, and remaining budget, where should this problem be resolved now?

---

Illustrative decision space

A bounded semantic-escalation turn could return a typed decision such as:

RETRY_SAME
CHANGE_MODEL
RETURN_TO_PARENT
ESCALATE_SCOPE
REPLAN_SUBTREE
SPLIT_SCOPE
ABORT

This is illustrative, not a proposed final protocol.

The important distinction is that the decision routes a problem after execution has revealed new information, rather than only routing the original task.

Example:

root owner
   |
   +-- subsystem owner
          |
          +-- worker
                |
                +-- implementation attempt
                +-- tests / validator / tool evidence: failure
                         |
                         v
                semantic escalation
                         |
             +-----------+-------------+
             |           |             |
          retry       stronger      return upward /
          locally       model       reshape subtree

If the failure is local, the same worker retries.

If the scope is sound but capability is insufficient, the same narrow scope can move to a stronger model without expanding context.

If execution invalidates the decomposition, spending more intelligence inside the worker is the wrong action: the problem should move upward and the graph should change.

---

Why this is distinct from nearby roles

  • A router usually selects an executor before or at task admission.
  • A reviewer/validator decides whether an artifact satisfies a contract.
  • A planner/owner decides what work should be done inside its scope.
  • A permanent supervisor continuously manages the workflow.

Semantic escalation is narrower:

It interprets execution evidence and decides which level of ownership/capability should make the next decision.

A reviewer might return:

FAIL: the migration breaks backward compatibility.

Semantic escalation then decides whether that failure belongs to:

  • the same worker;
  • a stronger worker on the same scope;
  • the current scope owner;
  • a higher architectural owner;
  • a replanned subtree;
  • or an aborted attempt.

This function may not deserve a permanent runtime identity at all. The current owner or a transient child may already be the correct implementation shape.

---

Runtime records facts; models interpret them

The runtime can reliably know facts such as:

  • child/turn/attempt identity;
  • terminal status;
  • timeout, interruption, or cancellation;
  • tool/process failures;
  • token or relative-budget usage;
  • structured validator results;
  • available receipts and evidence references.

The runtime should not pretend to know semantically whether:

  • a test failure is a forgotten import;
  • the task boundary is wrong;
  • the worker misunderstood an architectural constraint;
  • the parent decomposition must be revised.

That interpretation belongs in model context.

The runtime should enforce only the consequences and invariants:

  • ownership and attempt identity;
  • budgets and allowed graph growth;
  • capabilities and permissions;
  • cancellation;
  • durable receipts/evidence delivery;
  • recovery and deduplication.

In short:

Runtime records facts. Models interpret them. Runtime enforces the resulting physics.

---

This is not a fixed pipeline proposal

The goal is not:

Planner -> Worker -> Reviewer -> Escalator -> Integrator

The graph should remain model-generated and mutable.

A successful narrow task may simply be:

Owner -> Worker -> ACCEPT

Another task may dynamically create research, verification, consultation, or escalation only when evidence makes those actions useful.

Possible model-visible actions are conceptually closer to:

DO
DELEGATE
SPLIT
CONSULT
VERIFY
ESCALATE
REPLAN
ACCEPT

These are actions, not mandatory stages or permanent agent classes.

The pipeline is therefore an execution artifact. It is not the runtime architecture.

---

Cost/quality hypothesis

The working hypothesis is:

Frontier intelligence should be spent primarily where unresolved ambiguity exists, not mechanically at every level of the tree.

A strong owner can reduce an ambiguous problem into a concrete contract. A cheaper worker can then execute that contract.

If execution discovers new ambiguity, semantic escalation can temporarily purchase stronger reasoning or return the problem to the correct owner. After the ambiguity is resolved, execution can downshift again.

This is not assumed to be correct in every workload. It should be measured against simpler policies.

---

Minimal PoC / dogfood plan

The first experiment should avoid adding a new scheduler or permanent role.

When a worker produces a simulated or real failure receipt:

  1. Build a bounded evidence packet containing only:
  • task/scope contract;
  • ownership chain;
  • configured model and reasoning effort;
  • attempt count;
  • relevant test/tool/validator evidence;
  • compact diff/artifact summary;
  • remaining relative budget.
  1. Ask either the current owner or a transient no-history escalation turn for one typed decision.
  1. Execute that decision using existing graph primitives.
  1. Compare at least three policies:
  • always retry locally;
  • always escalate to a stronger model;
  • evidence-driven semantic escalation.
  1. Measure:
  • total token/credit usage where observable;
  • avoided blind retries;
  • unnecessary tier-ups;
  • recovery success rate;
  • correct return-to-parent/replan decisions;
  • false escalation and oscillation;
  • whether a compact evidence packet is sufficient.

If backend-effective model/cost attestation is unavailable, the experiment should label that limitation rather than infer it from requested configuration.

---

Separate hard-invariant track

Semantic escalation can likely be prototyped with current model-facing primitives, but reliable unattended graphs still require hard runtime contracts.

The most relevant separate gaps appear to be:

  • durable owned child attempts and terminal receipts;
  • target-set join / exact owner continuation;
  • hard depth, fan-out, deadline, and sub-budget admission;
  • per-child capability narrowing;
  • restart-safe obligation recovery and deduplication.

Reliable completion/wake behavior is already tracked in #15723.

This issue is not proposing to bundle all of those concerns into one feature. They are runtime prerequisites that should remain separate from the semantic decision itself.

---

Relationship to existing proposals

This seems adjacent to, but distinct from:

  • #34278 — per-thread Auto routing for model and reasoning effort before a turn;
  • #36251 — carrying model/effort recommendations into a ChatGPT → Codex handoff, with possible future escalation;
  • #32100 — a concrete staged Orchestrated-mode workflow PoC;
  • #32705 — heterogeneous Multi-Agent V2 routing and effective child configuration;
  • #15723 — reliable completion delivery and owner wake.

Those focus primarily on initial model allocation, explicit workflow construction, child routing/configuration, or lifecycle delivery.

This proposal focuses specifically on:

Failure/evidence-driven routing of an already-running scope through a dynamic ownership graph, including the possibility that the graph itself must change.

---

Non-goals

This proposal does not require:

  • a permanent Escalator agent;
  • an always-running supervisor;
  • a mandatory review stage;
  • a fixed model hierarchy by tree depth;
  • a user-authored pipeline;
  • a new scheduler or model runtime;
  • all-to-all agent communication;
  • another trajectory database/event bus;
  • automatic replay after ambiguous side effects.

The useful implementation may turn out to be only:

  • a compact evidence handoff;
  • a bounded typed decision;
  • existing parent/child graph actions;
  • and hard runtime enforcement of the selected consequence.

---

Questions for maintainers

  1. Is evidence-driven graph reshaping aligned with the intended direction of Multi-Agent V2, or is similar behavior already owned by model/backend orchestration that is not visible in this repository?
  2. Is the current owner expected to make this class of decision, or would a transient no-history child/tool-backed turn be a better fit?
  3. Which existing app-server/core surface is the intended seam for a compact failure/evidence packet?
  4. Are there planned typed attempt/receipt semantics that would make this experiment overlap with upcoming work?
  5. Are there model-facing graph actions or backend constraints that a local PoC should avoid depending on?

---

Status

I am starting a local PoC/dogfood experiment against current Multi-Agent V2 and will add concrete results here rather than treating the architecture as proven in advance.

The purpose of opening this issue now is to:

  • make the hypothesis inspectable;
  • avoid building a large subsystem before validating the behavior;
  • identify overlap with intended Codex architecture early;
  • and keep the implementation Codex-native if the experiment is promising.

View original on GitHub ↗

6 Comments

SlopSurfer4444 · 5 days ago

Follow-up architecture clarification from current dogfood: I think the proposal above describes only the post-evidence half of the control problem.

A more fundamental question appears before semantic escalation:

Who decides that a user request should enter a multi-agent/control graph at all, at what reasoning level, and under what authority?

Four things that should stay orthogonal

I have found it useful to separate four concepts that are easy to accidentally collapse into one:

  • model — which intelligence executes a particular turn;
  • role — what logical function that participant currently serves;
  • thread/context — where its working trajectory lives;
  • authority / spend permission — what it may do and how much additional compute/fan-out it may authorize.

None should imply another.

A strong model is not automatically the parent architect. A child is not automatically a worker. The first user-visible thread does not need to remain the permanent architectural reasoning context. And a model concluding that stronger reasoning or a wider graph would help should not itself grant permission to spend more or expand fan-out.

There is some upstream evidence that these boundaries are already useful in narrower contexts:

  • merged #39299 explicitly constrains agent-role overrides so roles may customize model behavior or reduce capabilities without replacing the parent session's authority/provider configuration. That is a concrete example of role configuration != authority;
  • merged #39975 preserves genuine root user authorization for Guardian reviews while treating assistant-authored or forwarded claims as untrusted context. That is not a general orchestration-admission primitive, but it is a useful source-level example of authority provenance != text that claims authority.

Those PRs do not prove the broader architecture below, but they make the decomposition less hypothetical.

What is the "parent" actually?

This changes how I think about the parent in a native harness.

The stable thing should probably be the user-facing root authority, not a permanently long-lived parent-architect thread.

Under that root, the harness may create a transient control/coordinator role for one phase, create workers/reviewers beneath it, materialize compact durable state/evidence when the phase ends, and later create a different control context for the next phase. A single visible user chat could therefore hide an internal tree of separate agent/thread contexts without requiring the user to manually manage that tree.

Current local dogfood has been useful here. The same logical operational-coordinator role has worked in two different physical shapes depending on lifecycle needs:

  • as a native direct child for a bounded parent-owned phase;
  • as a separate user-visible task for a longer-lived execution campaign where persistent visibility/context was useful.

That is only local behavioral evidence, not an upstream guarantee, but it suggests an important invariant:

role != thread lifetime != topology

The role is logical. The topology is an execution artifact chosen for the current lifecycle/context needs.

There is a bootstrap problem before semantic escalation

The original issue asks what should happen after execution evidence changes the problem. Before that there is a separate orchestration admission / meta-routing problem:

user-facing root authority
    -> orchestration admission
    -> transient control/coordinator role if useful
    -> dynamic execution graph
    -> evidence
    -> semantic escalation / replan when new ambiguity appears

The bootstrap question is not just "which model should run?" It is:

  • does this task need a graph at all, or should it stay single-agent?
  • does it need a temporary control role?
  • how much initial reasoning is justified to make that decision?
  • what graph growth is allowed before asking the user?

That decision should not be inferred solely from the model currently selected in the UI.

Semantic need and economic authority are different decisions

There is then a second, independent admission problem around economics:

model requests stronger reasoning / wider fan-out
    -> runtime checks user compute/delegation policy
    -> authorize / deny / ask
    -> if authorized, perform bounded tier-up or graph growth
    -> downshift again when ambiguity is resolved

A model can say "stronger reasoning is useful here" without thereby gaining authority to spend more.

Likewise, spawning several cheap subagents can be economically significant even if no expensive model tier is used. So delegation policy and compute-escalation policy should be separate controls.

Possible user-facing product surface

I would not expose the whole control plane to every user. The default UX can stay simple while the underlying semantics remain explicit.

For ordinary users, a reasonable experience may be progressive disclosure:

  • the existing model selector remains the primary choice;
  • the selected model is treated as default intelligence, not automatically as role identity or universal ceiling;
  • the system may keep the internal agent tree hidden when policy allows it;
  • surface only meaningful events such as "using multiple agents", "stronger reasoning requested", "waiting for approval", or "subtask failed and was replanned";
  • ask only when the selected policy requires consent or a configured budget/ceiling would be crossed.

For power users, an advanced control surface could expose independent policies such as:

Delegation policy

  • Single — never spawn subagents;
  • Ask — ask before meaningful fan-out;
  • Adaptive — allow the harness to create/reshape the graph within configured limits.

Compute policy

  • Strict — never exceed the selected model/compute ceiling;
  • Ask — ask before a meaningful tier-up or additional compute purchase;
  • Budgeted Adaptive — allow automatic escalation only inside an explicit task/session budget and ceiling;
  • Full Adaptive — after explicit consent, allow the system to choose stronger model/reasoning tiers and additional fan-out when semantically justified.

Full Adaptive should have consent semantics analogous in spirit to Full Access: the user is not merely choosing a model, but granting the system discretion to spend additional compute. Strict should be the opposite hard guarantee: the configured ceiling is never crossed.

These controls should compose independently. For example:

Adaptive delegation + Strict compute

could allow several agents while forbidding any model-tier escalation, whereas:

Single agent + Budgeted Adaptive compute

could allow a single context to temporarily use stronger reasoning without creating a graph.

For advanced inspection/debugging, a graph view could expose the facts that matter without making topology itself the programming model:

  • current logical role;
  • parent/child lineage;
  • actual/effective model and reasoning effort for the turn;
  • effective permission/authority snapshot;
  • running/blocked/completed state;
  • evidence/receipt references;
  • budget/spend used where observable;
  • why a semantic escalation/replan or tier-up occurred.

That would make adaptive behavior auditable without requiring users to manually operate every internal thread. A compact execution receipt at the end could similarly summarize which agents/models were actually used, which escalations occurred, and whether extra compute/fan-out was authorized by policy.

Updated conceptual control loop

Putting the pieces together, the native shape I am now testing conceptually is closer to:

intent
  -> orchestration admission
  -> temporary control role when useful
  -> dynamic graph execution
  -> durable evidence/receipts
  -> semantic escalation or subtree replan when evidence reveals ambiguity
  -> runtime spend/permission admission
  -> transient stronger reasoning / wider fan-out only if authorized
  -> downshift / collapse graph when the ambiguity is resolved
  -> result back to user-facing root authority

The important part is that the model may request graph/model changes, while the runtime owns the hard consequence.

Models interpret semantics and may request graph/model changes; runtime owns hard physics: identity, provenance, permissions, budgets/spend ceilings, admission, lifecycle, cancellation, durable delivery/recovery, and enforcement of the user's policy.

What this changes about #40037

I now see #40037 as one important component of a broader control loop:

  • initial orchestration admission decides whether/how a graph starts;
  • evidence-driven semantic escalation decides how an already-running graph should change when execution reveals new information;
  • economic/spend admission decides whether requested extra reasoning/fan-out is actually allowed.

These should not be collapsed into one model selector or one permanent supervisor.

This is still a research hypothesis, not a request to add another scheduler, fixed pipeline, or large policy subsystem. The current PoC/dogfood should keep the distinctions explicit and test the smallest Codex-native seams first.

The concrete questions I would now add for maintainers are:

  1. Is there already a native/backend owner for initial orchestration admission before Multi-Agent V2 graph construction, even if it is not visible in OSS?
  2. Is the user-facing/root conversation intended to remain the authoritative provenance source while control roles/threads underneath it are transient?
  3. Is there an intended runtime seam for compute/fan-out admission that is distinct from model-visible semantic routing?
  4. Is a product direction where the normal UI stays simple but advanced users can separately configure delegation and compute policies compatible with the intended Codex model?
  5. Are there planned effective-model/spend/permission attestation surfaces that could make adaptive execution inspectable without treating requested configuration as proof of what actually happened?

For the PoC/dogfood I plan to keep these distinctions explicit rather than assuming that the currently selected model, current thread, graph parenthood, role, and spend authority are the same thing.

Yamrail · 4 days ago

Purpose and boundary

This is a public attachment for cross-Issue analysis of agent-boundary patterns observed in a purpose-selected 100-Issue openai/codex corpus.

  • It is not an assignment of responsibility to any individual Issue or reporter.
  • It shares patterns observed across a public-Issue group, not a claim that every individual report has the same cause.
  • It is improvement-oriented material for design and verification discussion.
  • It does not assert OpenAI-internal causes or product-wide prevalence.

Reviewed analysis

OpenAI/Codex public-Issue agent-boundary pattern classification (100-Issue corpus)

Purpose

This material shares recurring agent-boundary patterns observed across a purpose-selected set of 100 public openai/codex Issues. It is not an assignment of responsibility to any individual Issue or reporter, and it is not a claim about OpenAI-internal causes. It is provided as improvement-oriented analysis.

Method

  • Fixed, non-exclusive A–F taxonomy: Authority, Interface, Provenance, Role Boundary, Lifecycle, Human Load.
  • Every row retains the public Issue number, title, labels, URL, A–F flags, combined tag set, and classification rationale.
  • All 100 assignments are explicitly marked INFERRED_FROM_METADATA.
  • Exact Issue-number traceability was verified for 100/100 rows.
  • Issue bodies were checked for 99/100 rows. Issue #39984 currently has no public body, so its classification is limited to its title and public GitHub labels.

Reproduced counts

Tags are non-exclusive; shares do not sum to 100%.

| Tag | Name | Count | Share |
|---|---|---:|---:|
| A | Authority | 87 | 87% |
| B | Interface | 78 | 78% |
| C | Provenance | 52 | 52% |
| D | Role Boundary | 31 | 31% |
| E | Lifecycle | 41 | 41% |
| F | Human Load | 17 | 17% |

Most frequent pair co-occurrences

| Pair | Count | Descriptive reading |
|---|---:|---|
| A+B | 77 | authority expectations meet a concrete tool, sandbox, filesystem, connector, hook, or UI enforcement surface |
| A+C | 44 | authority depends on inspectable identity, configuration, evidence, or attribution |
| A+E | 38 | authority changes or decays across a session, turn, retry, resume, handoff, or other state transition |
| B+C | 37 | interface behavior is difficult to verify without provenance or correlated evidence |
| B+E | 31 | interface/runtime state changes across lifecycle transitions |

Supervisor review

Result: PASS_WITH_LIMITATIONS.

  • 100 rows, 100 unique Issue numbers, and 100 exact source-row matches.
  • Independent recount reproduced all published tag, pair, and exact-combination frequencies.
  • 100/100 rows retain an inference disclosure and non-empty rationale.
  • The review workbook contains the six expected sheets; its formula-error scan returned zero matches and all sheets passed visual rendering checks.
  • Nine automated tag-signal exceptions across eight rows were manually reviewed. Their Issue text or public labels support the assigned tags.

Required limitations

  1. The corpus is purpose-selected, not a random sample of every openai/codex Issue; the counts are not product-wide prevalence estimates.
  2. The taxonomy is an analytical lens, not an official OpenAI labeling system.
  3. Issue reports remain reporter claims and are not promoted here to confirmed incidents, defects, or root causes.
  4. One Issue (#39984) has no public body; that row is title-and-labels-only metadata inference.
  5. Issue state, labels, and text may change after the snapshot.

Artifact SHA-256

  • Public 100-row CSV: 9b265d8e78b99b05f6bda8c6d1f5ab8087d6b4777d5c95158d3d888302171e01
  • Public analysis: 75997d2c83dc3fdd5b3054be84a03e25bb19962a9e165a2d1cfc3baee83fcf8c
  • Public supervisor review: 0cf2837073b6c3b6fd40759cc7dfd3ab2647a0834d816788b39147d01d7ab202
  • Original reviewed workbook: 6259b48c7ac26677cb98cb716d51299838501aa32a313e9d5666a683002a19a4

<details>
<summary>100-row public classification CSV (Issue links, A–F flags, tag sets, rationales, review status)</summary>

github_issue,title,state,created_at,labels,A_Authority,B_Interface,C_Provenance,D_Role_Boundary,E_Lifecycle,F_Human_Load,tags,tag_count,classification_status,inference_flag,classification_rationale,body_review_status,url
#40229,Codex Python SDK 0.147.0: Sandbox.read_only permits persistent filesystem writes via managed file-edit path,open,2026-08-23,"bug, sandbox, CLI, app-server",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40229
#40149,1. `codex exec resume` rejects `-s/--sandbox`; a resumed turn wrote a file that `-s read-only` had blocked,open,2026-08-22,"bug, sandbox, exec, CLI, session",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40149
#12896,Codex CLI in read-only mode can write,open,2026-02-26,"bug, sandbox, CLI",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/12896
#31434,apply_patch can modify files outside writable roots without an approval prompt,open,2026-07-07,"bug, sandbox, CLI, tool-calls",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/31434
#38312,[Critical data loss] Codex deleted important project files without an explicit deletion request or confirmation,open,2026-08-13,"bug, windows-os, sandbox, safety-check",YES,YES,NO,NO,NO,YES,A+B+F,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38312
#37998,Critical data loss: sub-agent used git clean -fX for one ignored file and deleted the entire ignored data directory,open,2026-08-11,"bug, windows-os, sandbox, tool-calls, app, subagent",YES,YES,NO,YES,NO,YES,A+B+D+F,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | D: user-agent or agent/subagent/parent-child/delegation boundary | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/37998
#15310,Desktop automations silently fall back to workspace-write sandbox regardless of app configuration,open,2026-03-20,"bug, sandbox, app, Automation",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/15310
#39344,Subagent persistent network-policy amendments mutate the parent exec policy,open,2026-08-19,"bug, sandbox, CLI, subagent",YES,YES,NO,YES,YES,NO,A+B+D+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39344
#39872,Interactive TUI: PreToolUse-equivalent bash deny is not enforced (matches exec mode); apply_patch deny has a UX bypass via generic sandbox-failure retry prompt,open,2026-08-21,"bug, windows-os, sandbox, TUI, CLI, hooks",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39872
#39973,"Retiring approval_policy=""untrusted"" without deprecation weakens the execution-approval boundary",open,2026-08-21,"bug, sandbox, CLI, config",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39973
#36570,"exec: approvals_reviewer = ""auto_review"" silently defeats an explicit --sandbox level",open,2026-08-02,"bug, sandbox, exec, CLI, config",YES,YES,YES,YES,NO,NO,A+B+C+D,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/36570
#38790,[Windows app] Realtime Voice rewrites Full access to Custom and mutates config.toml,open,2026-08-15,"bug, windows-os, sandbox, app, config",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38790
#37655,Managed permission profiles with non-cwd writable roots incorrectly tell the model that cwd is writable,open,2026-08-09,"bug, sandbox, CLI, config",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/37655
#25590,Codex Desktop resumes thread with workspace-write sandbox despite UI showing Full Access,open,2026-06-01,"bug, sandbox, app, session",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/25590
#39729,"[Windows Desktop 26.818] Full Access applies for one turn, but composer silently reverts with no turn-level indicator",open,2026-08-20,"bug, windows-os, sandbox, app",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39729
#40104,Permission changes mid-task are not applied in the same session,open,2026-08-22,"bug, sandbox, CLI, session",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40104
#32612,Apply access-control changes to the currently running turn,open,2026-07-12,"enhancement, sandbox, app",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/32612
#25810,Windows Desktop: new threads/handoffs persist as on-request/workspaceWrite instead of inheriting visible Full Access state,open,2026-06-02,"bug, windows-os, sandbox, app, session",YES,YES,YES,NO,YES,NO,A+B+C+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/25810
#40125,Codex Desktop create_thread intermittently downgrades Full Access worktree children to managed approval mode,open,2026-08-22,"bug, windows-os, sandbox, app, subagent, app-server",YES,YES,NO,YES,YES,NO,A+B+D+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40125
#33282,Codex Desktop create_thread does not inherit auto-approval mode for worktree tasks,open,2026-07-15,"bug, windows-os, sandbox, app, app-server",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/33282
#39258,Codex 0.147.0: Workspace writes unexpectedly require approval with workspace-write + on-request,open,2026-08-18,"bug, windows-os, sandbox, CLI",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39258
#38318,Execpolicy allow rules silently stay sandboxed when any denied-read path is configured,open,2026-08-13,"bug, sandbox, app",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38318
#37975,Codex Desktop ignores Full access / Never ask and injects workspace-write + auto-review per thread on personal Pro account,closed,2026-08-11,"bug, sandbox, app, app-server",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/37975
#38890,[Windows app] Full Access -> Custom leaves stale approvals_reviewer=user and bypasses Auto-review,open,2026-08-16,"bug, windows-os, sandbox, app, config",YES,YES,YES,YES,YES,NO,A+B+C+D+E,5,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38890
#38926,[Windows][Subagents] Private permission profile cannot be applied before child tool registration,open,2026-08-17,"enhancement, windows-os, sandbox, app, subagent",YES,YES,NO,YES,NO,NO,A+B+D,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38926
#38791,App Server schema/runtime reject documented restricted read access on turn/start,open,2026-08-15,"bug, sandbox, app-server",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38791
#39201,"Clarify apply_patch escalation under approval_policy = ""never""",open,2026-08-18,"bug, sandbox, CLI",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39201
#40116,App Server: enforce restricted readable roots for workspaceWrite turns,open,2026-08-22,"enhancement, sandbox, app-server",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40116
#39996,Remote ChatGPT desktop tasks ignore writable_roots for new tasks,open,2026-08-21,"bug, sandbox, app, app-server, remote",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39996
#40245,Windows: custom permission profile plus non-empty AGENTS.md prevents task creation with os error 206,open,2026-08-23,"bug, windows-os, sandbox, app, config",YES,YES,YES,NO,NO,YES,A+B+C+F,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40245
#11701,Subagent configuration and orchestration,closed,2026-02-13,"enhancement, subagent",NO,NO,YES,YES,NO,NO,C+D,2,INFERRED_FROM_METADATA,YES,C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/11701
#40042,Custom-agent model_instructions_file is silently ignored while parent base instructions are inherited,open,2026-08-22,"bug, windows-os, app, subagent, config",NO,NO,YES,YES,NO,NO,C+D,2,INFERRED_FROM_METADATA,YES,C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40042
#40016,Subagent routing is not fail-closed: incompatible full-history forks silently inherit another model/quota pool (0.149.0),open,2026-08-21,"bug, model-behavior, rate-limits, CLI, subagent",NO,NO,YES,YES,NO,YES,C+D+F,3,INFERRED_FROM_METADATA,YES,C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40016
#39693,Codex Desktop executes agent-originated cross-thread delegation without direct-user authorization,open,2026-08-20,"bug, app, safety-check, subagent",YES,NO,NO,YES,YES,NO,A+D+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39693
#40069,[Bug] Subagent task messages never delivered to spawned agents; agents idle or act on inherited context (Windows desktop app),open,2026-08-22,"bug, windows-os, app, subagent",NO,NO,NO,YES,NO,YES,D+F,2,INFERRED_FROM_METADATA,YES,D: user-agent or agent/subagent/parent-child/delegation boundary | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40069
#38687,Subagents inherit Codex App task controls and can create independent user-owned threads,open,2026-08-15,"bug, app, subagent",NO,NO,NO,YES,YES,NO,D+E,2,INFERRED_FROM_METADATA,YES,D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38687
#38353,"Subagents need an MCP capability broker: parent allowlists, zero-start by default, bounded pooling, and deterministic teardown",open,2026-08-13,"enhancement, windows-os, mcp, app, subagent, app-server, performance",YES,YES,NO,YES,YES,NO,A+B+D+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38353
#38237,"Codex Desktop does not enforce subagent cap or delegation depth, then root-scoped controls cannot clean up the full tree",open,2026-08-12,"bug, app, subagent, performance",NO,NO,NO,YES,NO,NO,D,1,INFERRED_FROM_METADATA,YES,D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38237
#38375,[multi-agent][gpt-5.6-sol] Orchestrator turns out-of-scope reviewer findings into an unbounded blocking loop,open,2026-08-13,"bug, model-behavior, code-review, CLI, subagent",NO,NO,YES,YES,YES,YES,C+D+E+F,4,INFERRED_FROM_METADATA,YES,C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38375
#40212,Coordinator treats an unreported internal decision as user consent and terminates in-progress analysis,open,2026-08-23,"bug, CLI, subagent",YES,NO,NO,YES,YES,NO,A+D+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40212
#36733,Desktop-bundled Codex: guardian_subagent approvals reviewer enabled without consent; background memory jobs drain plan quota while idle,open,2026-08-03,"bug, rate-limits, app, subagent, config, memory",YES,NO,YES,YES,YES,YES,A+C+D+E+F,5,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/36733
#23324,Allow sub-agent escalation requests to inherit parent auto-approval policy,open,2026-05-18,"enhancement, sandbox, app, subagent",YES,YES,NO,YES,NO,NO,A+B+D,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/23324
#38989,"MultiAgentV2 runaway delegation: 74 subagents, 3-level nesting, 5.39B recorded tokens, and repeated review/test loops in one task",open,2026-08-17,"bug, CLI, subagent, performance",NO,NO,NO,YES,NO,YES,D+F,2,INFERRED_FROM_METADATA,YES,D: user-agent or agent/subagent/parent-child/delegation boundary | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38989
#39539,"[App] Benign local subagent implementation is policy-blocked after file writes, leaving partial edits",open,2026-08-19,"bug, app, safety-check, subagent",YES,NO,NO,YES,NO,YES,A+D+F,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | D: user-agent or agent/subagent/parent-child/delegation boundary | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39539
#37822,spawn_agent / followup_task message payload never reaches the sub-agent (encrypted_content is dropped),open,2026-08-10,"bug, CLI, app, subagent",NO,NO,YES,YES,NO,NO,C+D,2,INFERRED_FROM_METADATA,YES,C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/37822
#37760,Subagents do not inherit Responses API client metadata from parent turns,open,2026-08-10,"bug, subagent, app-server",NO,NO,YES,YES,YES,NO,C+D+E,3,INFERRED_FROM_METADATA,YES,C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/37760
#39542,"Codex App: show effective provider, model, reasoning effort, and service tier for V2 subagents",open,2026-08-19,"enhancement, app, subagent, app-server",NO,NO,YES,YES,NO,NO,C+D,2,INFERRED_FROM_METADATA,YES,C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39542
#38277,"[Bug] Multi-Agent V2 child gets service_tier=priority after parent switches to default, even when spawn_agent omits the field",open,2026-08-13,"bug, app, subagent",NO,NO,YES,YES,NO,NO,C+D,2,INFERRED_FROM_METADATA,YES,C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38277
#38178,Feature request: identify the agent controlling Computer Use,open,2026-08-12,"enhancement, windows-os, app, subagent, computer-use",NO,YES,NO,YES,NO,NO,B+D,2,INFERRED_FROM_METADATA,YES,B: sandbox/filesystem/tool/hook/connector enforcement surface | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38178
#40037,Proposal: Codex-native evidence-driven semantic escalation for dynamic multi-agent graphs,open,2026-08-22,"enhancement, subagent",YES,NO,YES,YES,NO,NO,A+C+D,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40037
#40088,[Sites] Add a host-owned push_source tool so repository credentials never cross agent transcripts,open,2026-08-22,"enhancement, tool-calls, app",YES,YES,YES,YES,NO,NO,A+B+C+D,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40088
#36079,Runtime-generated secrets in nested MCP calls are stored unredacted in Codex session transcripts,open,2026-07-30,"bug, mcp, app, session",YES,YES,YES,NO,YES,NO,A+B+C+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/36079
#22029,Local Secret Store for Sensitive Credentials,open,2026-05-10,"enhancement, app",YES,NO,YES,NO,NO,NO,A+C,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/22029
#39195,Codex Desktop and CLI sharing CODEX_HOME causes local provider state and CLI threads to leak into Desktop,open,2026-08-18,"bug, windows-os, auth, custom-model, app, session, config",YES,NO,YES,NO,YES,NO,A+C+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39195
#39096,Remote Control turn from account B silently executes against account A usage,open,2026-08-17,"bug, auth, rate-limits, app, session, remote",YES,NO,YES,NO,YES,NO,A+C+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39096
#39642,[macOS][Codex App] OAuth callback can be applied to the wrong concurrent session,open,2026-08-20,"bug, auth, app, session",YES,NO,YES,NO,YES,NO,A+C+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39642
#38739,[app/browser] Auth fallback can switch browser profiles without an identity confirmation gate,open,2026-08-15,"bug, auth, app, safety-check, skills, browser",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38739
#38146,GitHub connector appears connected but writes fail when Codex Connector is installed only on another accessible account,open,2026-08-12,"bug, codex-web, auth",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38146
#17265,Codex does not auto-refresh routed MCP OAuth tokens even when a refresh token is stored,open,2026-04-09,"bug, auth, mcp",YES,YES,YES,NO,YES,NO,A+B+C+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/17265
#35006,[MCP] Make OAuth lifecycle and reauthentication reliable for enterprise SSO,open,2026-07-23,"enhancement, auth, mcp",YES,YES,YES,NO,YES,NO,A+B+C+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/35006
#37695,Codex Desktop: declared owner-auth and secret-manager capabilities are absent at runtime,open,2026-08-09,"bug, windows-os, auth, app, skills, browser",YES,YES,YES,NO,YES,NO,A+B+C+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/37695
#39054,"MCP OAuth: a rejected refresh token stays ""usable"", so Codex retries it forever and never surfaces re-authentication",open,2026-08-17,"bug, auth, mcp, CLI, app-server",YES,YES,YES,NO,YES,YES,A+B+C+E+F,5,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39054
#23995,Support true read-only mode for Gmail and Calendar connectors,open,2026-05-22,"enhancement, codex-web, mcp, safety-check",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/23995
#21821,Windows sandboxed sessions cannot access valid gh keyring auth that works in full-access mode,open,2026-05-08,"bug, windows-os, auth, sandbox, CLI",YES,YES,YES,NO,YES,NO,A+B+C+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/21821
#39857,"Codex 0.149.0 drops API keys stored in `auth.json`, causing 401 Unauthorized ""Missing API key""",closed,2026-08-21,"bug, windows-os, auth, CLI, session",YES,NO,YES,NO,YES,NO,A+C+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39857
#38742,High-severity bug: Gmail write action executed without required confirmation,open,2026-08-15,"bug, tool-calls, safety-check",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38742
#38824,Agent ignores explicit reporting target and performs an external email action instead of filing the requested GitHub Issue,open,2026-08-16,"bug, model-behavior, tool-calls",YES,YES,YES,YES,NO,NO,A+B+C+D,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38824
#38474,"Gmail send_email returns JSONDecodeError after successful delivery, causing duplicate emails on retry",open,2026-08-14,"bug, windows-os, tool-calls, app, skills",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38474
#40083,"External GitHub write succeeds but Codex terminates on {""detail"":""Bad Request""} without state reconciliation",open,2026-08-22,"enhancement, codex-web, tool-calls",YES,YES,YES,NO,YES,NO,A+B+C+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40083
#39858,mcp_tool Stop hook fails open when MCP server is missing or cannot start,open,2026-08-21,"bug, mcp, exec, CLI, hooks",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39858
#39783,Codex Desktop ephemeral thread summaries leak full MCP stacks via thread/unsubscribe,open,2026-08-20,"bug, mcp, app, app-server, performance",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39783
#35947,Codex Desktop on Windows: MCP elicitation approvals lack the actionable notification used for command approvals,open,2026-07-29,"bug, windows-os, mcp, app, browser",YES,YES,NO,NO,NO,YES,A+B+F,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/35947
#39149,MCP tool approval elicitation can pend forever with no timeout or turn-state signal (headless app-server clients hang silently); rmcp is_closed() misses self-terminated service tasks,open,2026-08-18,"bug, mcp, tool-calls, app-server",YES,YES,YES,NO,YES,YES,A+B+C+E+F,5,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39149
#37778,Codebase Memory MCP approval prompt can become unclickable in Codex voice tasks,open,2026-08-10,"bug, mcp, sandbox, tool-calls, app",YES,YES,NO,NO,NO,YES,A+B+F,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/37778
#40130,"MCP, sandbox restriction definitions broken",open,2026-08-22,"bug, mcp, sandbox, app, subagent, config",YES,YES,YES,YES,NO,NO,A+B+C+D,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40130
#39984,Consult overlay (/q): runtime-reject writes while Full Access stays armed,closed,2026-08-21,"enhancement, sandbox, TUI, CLI, subagent",YES,YES,NO,YES,YES,NO,A+B+D+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition,TITLE_AND_PUBLIC_LABELS_ONLY,https://github.com/openai/codex/issues/39984
#39893,[macOS][ChatGPT Desktop] Computer Use startup reconciliation recreates a disabled stale MCP override,open,2026-08-21,"bug, mcp, app, config, computer-use",YES,YES,YES,NO,YES,NO,A+B+C+E,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39893
#38775,[Windows] plugin-scoped Context7 MCP disable override is silently ignored,open,2026-08-15,"bug, windows-os, mcp, CLI, skills, config",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38775
#39546,Desktop activity card misattributes Codex Security tools to Linear integration,open,2026-08-19,"bug, mcp, app",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39546
#39652,Persist call-correlated MCP tool-contract provenance on completed tool calls,open,2026-08-20,"enhancement, mcp, app-server",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39652
#34289,"Hooks: PostToolUse payload carries no failure signal, and PostToolUseFailure never fires",open,2026-07-20,"bug, CLI, hooks",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/34289
#38850,Code Mode / functions.exec does not fire PostToolUse hooks for nested shell results,open,2026-08-16,"bug, windows-os, tool-calls, app, hooks",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38850
#24453,"Windows command_execution does not emit PreToolUse hooks, even with matcher ""*""",open,2026-05-25,"bug, windows-os, exec, CLI, hooks",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/24453
#39018,"GitHub Connector: repository/PR/file reads work, but refs, commits, compare and workflow runs return 403",open,2026-08-17,"bug, codex-web, auth",YES,YES,NO,NO,YES,NO,A+B+E,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39018
#38811,GitHub integration: read-only branch-protection and ruleset evidence unavailable for independent review,open,2026-08-15,"enhancement, auth, app, safety-check",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38811
#7071,CLI sandbox: cannot commit because .git is read-only (“Unable to create .git/index.lock”),open,2025-11-21,"bug, sandbox, CLI",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/7071
#34961,Windows: codex exec --sandbox workspace-write remains read-only,open,2026-07-23,"bug, windows-os, sandbox, exec, CLI",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/34961
#37632,Regression: :workspace_roots write rules recursively expand again on 0.147.0,open,2026-08-08,"bug, sandbox, CLI, config, performance",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/37632
#38803,Permission profile rejects the documented TOML table syntax for :workspace_roots,open,2026-08-15,"bug, sandbox, app, config",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38803
#38731,Codex Desktop attributes approval-wait time to tool execution and draws false performance conclusions,open,2026-08-15,"bug, model-behavior, windows-os, sandbox, tool-calls, app",YES,YES,YES,NO,NO,YES,A+B+C+F,4,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38731
#38337,Auto-review reviewer state is not shown with a custom permission profile,open,2026-08-13,"bug, sandbox, app",YES,YES,YES,YES,YES,NO,A+B+C+D+E,5,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability | D: user-agent or agent/subagent/parent-child/delegation boundary | E: session/turn/resume/retry/runtime/handoff/state transition,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38337
#38328,"""Yes, and don't ask again"" remembers exact command instead of command/executable",open,2026-08-13,"bug, enhancement, sandbox, TUI, CLI",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38328
#24325,How to make it ask me before every single edit?,open,2026-05-24,"enhancement, extension, sandbox",YES,YES,NO,NO,NO,YES,A+B+F,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/24325
#39085,Codex documentation and model-facing instructions recommend unsafe prefix rules as examples of safe ones,open,2026-08-17,"documentation, sandbox, CLI",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39085
#40107,Approval auto-review rejects first escalation as too many requests,open,2026-08-22,"bug, sandbox, CLI, tool-calls",YES,YES,NO,NO,NO,YES,A+B+F,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/40107
#39408,Auto-review can cause runaway quota consumption when Windows sandbox bugs repeatedly escalate workspace-local operations,open,2026-08-19,"bug, windows-os, extension, sandbox, rate-limits, safety-check",YES,YES,NO,NO,NO,YES,A+B+F,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | F: waiting/recovery/repetition/quota/runaway/operator burden,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39408
#37914,"VS Code extension ignores project-scoped approval_policy = ""never"" for sandbox escalation requests",open,2026-08-11,"bug, extension, sandbox, config",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/37914
#38870,[Windows Desktop 26.810.52044] “Do anything” permission is greyed out despite danger-full-access config,closed,2026-08-16,"bug, windows-os, sandbox, app, config",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38870
#38535,Custom (config.toml) option disappears for never + danger-full-access,open,2026-08-14,"bug, extension, sandbox, CLI, app, config",YES,YES,YES,NO,NO,NO,A+B+C,3,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface | C: identity/configuration/attribution/evidence/version/traceability,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/38535
#39939,Codex CLI: add pre-apply interactive diff approval for every file edit,open,2026-08-21,"enhancement, sandbox, app",YES,YES,NO,NO,NO,NO,A+B,2,INFERRED_FROM_METADATA,YES,A: authority/permission/credential/approval/access boundary | B: sandbox/filesystem/tool/hook/connector enforcement surface,ISSUE_BODY_REVIEWED,https://github.com/openai/codex/issues/39939

</details>

<details>
<summary>Public manifest</summary>

schema_version: OPENAI_CODEX_PUBLIC_ISSUE_BOUNDARY_PATTERN_V1
recorded_at_jst: '2026-08-24'
review_result: PASS_WITH_LIMITATIONS
corpus:
  repository: openai/codex
  issue_count: 100
  unique_issue_numbers: 100
  body_reviewed: 99
  title_and_labels_only_issue: 39984
counts:
  A_Authority: 87
  B_Interface: 78
  C_Provenance: 52
  D_Role_Boundary: 31
  E_Lifecycle: 41
  F_Human_Load: 17
artifacts:
  - path: 01_PUBLIC_CLASSIFICATION_100.csv
    sha256: 9b265d8e78b99b05f6bda8c6d1f5ab8087d6b4777d5c95158d3d888302171e01
  - path: 02_PUBLIC_ANALYSIS.md
    sha256: 75997d2c83dc3fdd5b3054be84a03e25bb19962a9e165a2d1cfc3baee83fcf8c
  - path: 03_PUBLIC_SUPERVISOR_REVIEW.md
    sha256: 0cf2837073b6c3b6fd40759cc7dfd3ab2647a0834d816788b39147d01d7ab202
limitations:
  purpose_selected_corpus: true
  product_wide_prevalence_claim: false
  individual_issue_responsibility_claim: false
  openai_internal_cause_claim: false

</details>

Yamrail · 4 days ago

Related observation: DOCX/PDF artifact pipeline failure pattern.

Observed:

  • DOCX package can remain valid and open normally.
  • Failure can appear only in downstream rendering/export (for example PDF generation).
  • Similar classes of issues exist around document conversion/rendering pipelines, but no exact match for the following root cause was found in the checked OpenAI issues.

Specific case:

  • OOXML package was modified/repacked.
  • Word opened the DOCX successfully.
  • PDF export failed/hung.
  • Preserving original OOXML part ordering restored PDF generation.
  • Suspected trigger: relationship/package part ordering affecting downstream export behavior.

Status:

  • Observation only.
  • Not claiming a general OOXML specification violation.
  • Included as a reproducibility/data point for document artifact pipelines.
Yamrail · 4 days ago

Related observation: GitHub write/reachability variance across chat execution contexts.

Observed:

  • Same repository target and similar operation requests produced different outcomes depending on the active chat execution context.
  • In one context, GitHub write operation succeeded (create_file/commit generated).
  • In another context, GitHub verification or write capability remained UNKNOWN because the GitHub operation path was not available/executed.

Status:

  • Observation only.
  • Not claiming a permission model change or root cause.
  • Possible factors include tool availability, execution environment, connector state, or context-dependent access path.

Reproducibility point:

  • External tool availability should be confirmed before treating an AI agent session as having identical operational capabilities.
SlopSurfer4444 · 2 days ago

Removed.

SlopSurfer4444 · 1 day ago

From Waiting to Ownership: Building a Multi-Agent Control Loop Inside Codex

A practical report on exact owner continuations, rejected GREENs, dynamic graphs, and the product surface they suggest.

This work grew out of openai/codex#40037, a proposal around evidence-driven semantic escalation in dynamic multi-agent graphs. What follows is the implementation and dogfood story behind the narrower runtime seam we ended up testing.

---

One chat should be enough

The product shape we wanted was simple to describe.

A user should be able to stay in one conversation — the place where intent, architecture, risk, priorities, approvals, and corrections live — while the system expands whatever execution topology the work requires below it. Sometimes that should be one direct child. Sometimes a transient coordinator with several workers. Sometimes several independent approaches and a reviewer. Sometimes no graph at all.

The user should not have to become a thread janitor.

They should not need to remember which child belongs to which coordinator, manually forward completed results, keep an architectural turn open for hours, or infer from a spinner whether a model is still thinking. They should be able to change their mind in the owner-facing chat and eventually receive a branch-level result rather than a stream of leaf-level noise.

Codex already had many of the visible ingredients: subagents, task messaging, waiting, different models and reasoning efforts, parallel work, and a runtime capable of managing multiple threads. The hard part was not inventing a graph. The hard part was making those ingredients compose into something we could operate repeatedly under long-running workloads.

The questions that kept returning were more basic than any preferred agent framework:

  • Who owns the work?
  • Which completion should wake which owner?
  • When should a parent keep its current turn open, and when should it finish?
  • What does Completed actually prove?
  • Which permissions are effective for this exact action and environment?
  • Which model, provider, and tier actually ran — and who paid for it?
  • What survives a restart?
  • Which local control machinery should disappear once stock Codex becomes sufficient?

The project that grew around those questions became CodexForge. It was not intended to become a second Codex. It became a pressure rig: operate the native product hard, isolate the smallest missing piece of runtime physics, test it locally, and remove or avoid overlap whenever upstream becomes sufficient.

And this did not remain a diagram.

By our ninth and tenth local runtime iterations — V9 and V10 — we had a modified Codex that could run the bounded live-process composition we wanted:

owner-facing architect/root
  -> transient coordinator
      -> exact owned worker A
      -> exact owned worker B
      -> detached/unrelated child
  -> nearest-owner fan-in
  -> exactly one fresh coordinator continuation
  -> exactly one fresh root continuation

The detached child completed later and woke neither layer. The graph itself was still model-generated native orchestration rather than a hard-coded universal pipeline. Skills and operating instructions shaped roles and cooperative behavior, but they did not become hard identity or permission authority. Codex created and executed the graph. The runtime patch supplied the exact continuation behavior at finalized ownership boundaries.

That distinction — between a model-generated graph and the runtime physics that make it operable — became the center of the work.

---

Our first explanation was wrong

We did not begin with the right problem statement.

Our early explanation was roughly: Codex cannot cheaply wait for delegated work, so a new join or continuation mechanism is required for ordinary coordination.

That sounded plausible from the product surface. Parents sometimes failed to wait cleanly, timed out, polled, duplicated work, killed slow children, or simply finalized while children were still running. In the UI, a long-running turn also looked like an occupied conversational surface. It was easy to collapse all of this into one story: waiting itself was missing or wasteful.

Then we checked the source and ran a neutral control.

Native wait_agent already suspended asynchronously. While the runtime was waiting on the subscribed event, the parent model was not continuously performing inference merely because the turn remained open. The capability predated CodexForge. Later model calls could still happen when a wait returned or timed out, and bad policy could still create short waits, repeated wakeups, polling, duplication, or premature intervention. But the statement “Codex cannot sleep cheaply” was false.

So we removed it.

That correction changed the problem from:

Codex needs waiting

into:

Codex already has same-turn waiting.
What remains after the owning parent has finalized?

The residual seam was narrower:

owning parent finalizes
  -> admitted dependency continues independently
  -> dependency becomes ready
  -> exactly one fresh continuation is admitted for that exact owner

A same-turn wait and a post-finalization continuation are not two implementations of the same lifecycle. They are different lifecycle choices.

The result was not that waiting is wrong. It was that a reliable system needs both waiting and finalization, and must know which owner receives the next turn.

---

Waiting and finalization are both useful

A direct parent/child task may be best expressed as one active parent turn:

parent starts child
parent calls wait_agent
runtime sleeps
child finishes
parent continues in the same turn

No coordinator is required. No fresh owner continuation is required. Native waiting is the simplest correct mechanism.

But an owner-facing architect chat has a different job. It is where the user discusses architecture, changes intent, grants or refuses spend, and interprets the final evidence. Keeping that chat inside a long-running execution turn solely because work exists below it can be a poor lifecycle and context choice even when the wait interval itself is cheap.

For that surface, finalization can be cleaner:

architect/root states the contract
root finalizes
coordinator owns mechanical execution
workers complete to the coordinator
coordinator performs fan-in and finalizes
root receives one synthesized continuation

The benefits are not a claim of continuous token savings. They are lifecycle and product benefits. The owner cockpit stays available for new input. Leaf traces and mechanical waits remain below the architectural conversation. Nearest-owner routing prevents leaf completions from waking higher layers prematurely. The root receives branch-level synthesis rather than raw worker noise.

A coordinator can also choose either lifecycle. It may wait inside one turn, finalize and later continue, or combine both across phases. The right choice depends on task shape, latency, context cost, steering needs, and owner policy.

V9/V10 is therefore not “a better wait tool.” It is the complementary runtime path for a finalized ownership boundary.

---

What we actually built

The implementation history matters only where it explains the claims we accept and refuse. The V labels below are local experiment iterations, not official Codex releases.

Local iteration V8: make the first boundary truthful

V8 established a bounded foundation around admission and result routing. Child work was made visible before startup, startup failure had truthful compensation, and successful completion routing was narrowed so lifecycle did not silently masquerade as proof of useful work or external effect.

That foundation was useful precisely because its ceiling was explicit. V8 did not prove durable Terminal persistence, an exact recoverable Bound, receiver consumption acknowledgement, restart replay, recovered authority, or external-effect success.

Local iteration V9: exact live-process owned continuation

V9 focused on the post-finalization seam.

The parent can register an exact set of direct child dependencies through join_agents(...), finish its current turn, and later receive one fresh continuation when the registered condition becomes ready. This is intentionally narrower than a scheduler, durable inbox, or generic workflow engine.

The key mechanics were:

Exact target registration. The obligation is tied to an exact set of direct owned children, not “any child completion” and not a global agent event stream.

Arm-before-recheck. A naive implementation can check a child, see that it is not ready, then subscribe after the child has already completed. The accepted design arms the obligation before rechecking readiness so completion cannot disappear into that race window.

Immediate-parent routing. A grandchild does not wake the root merely because the root can address or observe it. Nested execution composes one ownership edge at a time:

leaf ready
  -> coordinator continuation / fan-in
  -> coordinator terminal
  -> root continuation

Exact-set readiness. For an all join, one child finishing does not wake the parent early. The exact target set must satisfy the readiness condition.

Exactly-one live-process handoff. Duplicate terminal observations, repeated readiness checks, and competing lifecycle paths must not create duplicate parent continuations. This is an exactly-one property inside the accepted live process — not a claim about exactly-once execution after crash or restart.

User-turn priority. Owned continuation does not trample active user input. If the parent already has an active or reserved user turn, the continuation defers.

Cancellation and cleanup guards. Failed or abandoned lifecycle paths must not leave a stale obligation that wakes a parent later for the wrong reason.

Detached exclusion. Detached or unrelated work can complete successfully without satisfying somebody else’s owned join.

No heartbeat poller. The intended path is event-driven:

exact obligation armed
  -> child lifecycle changes
  -> readiness transition
  -> exact owner handoff

Native wait_agent remains the same-turn primitive. Owned continuation exists for the finalized-owner lifecycle.

The V9 dogfood

The V9 dogfood deliberately included a neutral control and a hierarchical case.

The neutral control was native same-turn waiting: one child, one non-empty terminal result, one native wait, one original root turn. The deterministic replay/check matrix passed 13/13. We recorded that as upstream behavior, not a V9 advantage.

The primary case was hierarchical:

root
  -> coordinator
      -> owned leaf A
      -> owned leaf B
      -> detached child

Both exact owned leaves completed before exactly one fresh coordinator synthesis. The coordinator completion then produced exactly one fresh root continuation. The detached child completed later and woke neither coordinator nor root. The ownership, fan-in, immediate-parent, exclusion, and dedupe matrix passed 24/24.

The accepted V9 artifact was independently reviewed. One fixture family remained unsupported because the cohort lacked a required host binary, and active steering injection was not exercised. We recorded both as unsupported rather than green.

Local iteration V10: transplant the semantics, not the history

V10 moved the accepted semantics onto a newer selected upstream commit rather than continuing to carry an aging patch stack forward. Independent exact-final-byte review returned CLEAR_FINAL.

Focused verification passed:

| Check | Result |
|---|---:|
| cancellation shield | 1/1 |
| race regressions | 2/2 |
| join_agents | 7/7 |
| owned_join | 15/15 |
| native wait non-regression | 1/1 |
| native MSVC release build | exit 0 |
| neutral exact-artifact wait smoke | 13/13 |
| hierarchical owned fan-in / immediate-parent / detached exclusion | 26/26 |

The immutable Windows CLI was 311,539,712 bytes with SHA-256:

009f044ef239fc365df9562e8218f379b774a460f457d40ac9cd36870800a95c

Then we ran that exact artifact through our normal OpenAI.Codex Desktop surface and confirmed that the selected live CLI matched the accepted artifact identity.

That establishes a bounded but real fact: the architect -> coordinator -> model-generated agent graph -> exact owner-continuation composition was not only a test fixture. It ran in the owner-facing product composition.

The ceiling remained strict: live-process-only. No upstream acceptance is implied.

---

Why GREEN was not enough

The most useful implementation history may be the versions we refused.

One early line of work made sender-side state durable and looked close to restart-safe continuation. Review forced a more important distinction: sender persistence is not receiver consumption. If the receiver has not durably consumed and acknowledged the work, suppressing retry can still lose a wake. A persisted obligation is not a receiver ACK, and neither is replay.

Several later candidates had complete-looking focused test suites and still failed semantic or concurrency review. The clearest late V9 counterexample was concrete.

A user submission reserved a task-less ActiveTurn. A child completion correctly deferred its owned claim because user input had priority. Turn-context and settings preparation then failed. clear_reserved_idle_turn removed the reservation — but did not invoke the already-ready owned-join handoff. No other terminal hook remained to revive that obligation. The result was a ready lease that could remain ready forever without a parent continuation.

The correction was narrow: after a successful reservation clear, release the active-turn lock and run the existing owned-join handoff exactly once while preserving the original error, user priority, atomic multi-target behavior, nearest-parent routing, and dedupe.

V10 repeated the same lesson at a different boundary. Compilation and focused evidence were not enough to freeze the artifact; review found cancellation races involving lease rollback, competing terminal evidence, and post-commit delivery ordering. Deterministic regressions and exact-byte re-review came before the final build.

There was even an evidence-layer version of the same mistake. A driver could exit zero and the live stream could reach terminal state while the live summary remained INCOMPLETE / WARNING because observer finalization raced summary materialization. The saved trace replay later passed 13/13 and 26/26. We treated those as different facts instead of choosing the prettier one.

The pattern became familiar:

GREEN tests
  -> semantic counterexample
  -> REFUSE
  -> narrow correction
  -> rerun / re-review

This is not an argument against tests. It is an argument that a green test suite proves the schedules it covers. Ownership, cancellation, replacement, and recovery claims can still fail in a schedule nobody encoded yet.

---

The architecture that survived correction

The code changed repeatedly. A few distinctions survived because they explained failures across otherwise unrelated surfaces.

Model is not role

A model is the intelligence used for a step. A role is the function being performed: architect, coordinator, worker, reviewer, explorer. Changing the model does not automatically change the role.

Role is not thread or context

A role can be performed in different threads and contexts. A stronger reasoning step may not need a new child if the same logical context can switch model or reasoning effort natively. A separate child remains useful when the reason is parallelism, context isolation, independent judgment, no-history reasoning, or a distinct lifecycle.

Thread is not authority

Being inside a thread does not prove what the current action may do. Authority can belong to the exact issuing step, the action lifetime, the execution environment, an attached resource, the destination, current managed policy, or current user approval state. Historical configuration and UI labels are not timeless grants.

Semantic need is not spend authority

A model may correctly conclude that it needs stronger reasoning, more branches, or a gated capability. That semantic request does not authorize the cost. Runtime admission must validate it against entitlement, thread policy, current permissions, managed policy, destination constraints, and user-owned spend authority.

Requested state is not effective state

A requested model, provider, tier, topology, permission profile, or capability is not proof of what actually ran. Where the distinction matters, the system needs effective-state evidence and a compact receipt.

Provenance is not authority

Knowing why a turn or tool call exists — queue dispatch, retry recovery, a specific originating item — is useful evidence. It does not authorize the action or prove the result was correct.

Together:

model != role != thread/context != authority/spend
requested state != effective state
provenance != authority

These distinctions are not a preferred framework diagram. They are the minimum needed to keep a dynamic graph from confusing intelligence, ownership, capability, and payment.

A concise control principle emerged from that separation:

Models synthesize and revise workflows. Runtime enforces the physics.

The model can decide that the current evidence warrants a new branch, a stronger reasoning step, an independent reviewer, a replan, or an abort. The runtime decides whether that request is admissible and guarantees the lifecycle, ownership, and authority consequences.

Topology is therefore an execution artifact, not a fixed architecture. A simple task can stay single-agent. A task with one obvious parallel branch can have one child. A bounded execution phase can have one transient coordinator. Multiple coordinators make sense only when their scopes are genuinely disjoint. There is no requirement that every task look like Planner -> Worker -> Reviewer.

---

Three different truths

Agent systems often collapse “done” into one bit. Our dogfood and public issue corpus kept showing at least three different truths.

Lifecycle truth: did the turn, tool call, or child reach a real terminal lifecycle state?

Useful-work truth: did it produce the work the task required?

External-effect truth: did the intended change actually happen in the outside world?

These are not interchangeable.

A visible final answer is not necessarily terminal lifecycle. A stale projection can show an in-progress state after durable completion. A lifecycle Completed can exist without meaningful model work. An exit code, tool output, or model claim is not proof that the expected file, Git state, process, remote action, or side effect exists.

Therefore:

lifecycle truth != useful-work truth != external-effect truth

This distinction also applies to the evidence system itself. The live summary that says INCOMPLETE and the saved replay that later passes every deterministic check can both be true. One is observer/projection truth; the other is replay evidence. Treating one as the universal truth would hide the race we actually need to understand.

The practical consequence is straightforward: lifecycle belongs to runtime state; useful work is a semantic acceptance question; external effects require deterministic readback where they matter.

---

Upstream was often eating our backlog, not our code

During the experiment, upstream Codex added or expanded several adjacent native primitives: permission-aware admission, live turn settings, step-scoped model and effort attribution, execution-context ownership, originating-item correlation, action-lifetime approval policy, resource-scoped authority, worktree ownership metadata, generation fencing, native telemetry, typed output fidelity, and stronger paginated-history surfaces.

It would be inaccurate to say this deleted a large future CodexForge stack. We had not built most of that stack.

The useful classification is narrower:

  1. Actual deletion — implemented local overlap can be removed once the native path is product-exposed and dogfood-sufficient.
  2. Avoided implementation — a planned shim no longer needs to be written.
  3. Residual narrowing — native substrate now covers part of the chain, leaving a smaller missing seam.

In other words, upstream was often eating our backlog rather than our code.

That is a good outcome. The point of the pressure rig is not to preserve custom machinery as an identity. It is to make the road toward a sufficient stock Codex clearer.

We use a simple operability ladder before deleting local behavior that real work still depends on:

DOCUMENTED
  -> SOURCE PRESENT
  -> PRODUCT-EXPOSED / ENABLED
  -> DOGFOOD-SUFFICIENT

Source presence is useful evidence. It is not yet consumer sufficiency.

The same discipline prevents the opposite error: writing a second permission controller, telemetry plane, correlation layer, or model router for a problem that current native Codex already owns well enough.

---

Public issues are evidence, not a scoreboard

Independent public failures are useful stress cases, but they are not the requirements source and they are not a kill count.

We use an evidence ladder:

SOURCE_RELEVANT
  -> PLAUSIBLY_ADDRESSED_UNVERIFIED
  -> NOT_REPRODUCED_ON_CANDIDATE
  -> BASELINE_RED_CANDIDATE_GREEN
  -> FIXED_BY_CANDIDATE

Each rung has a different claim ceiling.

FIXED_BY_CANDIDATE is intentionally expensive. It requires a comparable bounded baseline failure and candidate non-reproduction with the relevant negative or exclusion controls preserved. Architectural similarity is not enough.

A fresh report, issue #40932, is almost a field illustration of the lifecycle seam we had been studying. In Codex CLI 0.149.1, the main turn observed three required subagents still running, sent them follow-up instructions, did not call wait_agent, emitted final_answer, and completed two seconds later. The subagents continued working. Their results did not reactivate the completed parent turn; they surfaced only after the user sent another prompt roughly half an hour later. The report records no crash or abort in that interval. At the time of writing, an automated duplicate check suggested #40299, but there was no maintainer verdict.

That report is source-relevant, not fix evidence. It may primarily be an orchestration-policy failure: the model should perhaps have waited instead of finalizing. It does not prove that stock Codex could not support another valid path, and we have not run the reporter scenario against our local artifact.

But it cleanly exposes the lifecycle choice:

same-turn wait
  -> parent stays active
  -> child results resume the same turn

finalize without an owned continuation
  -> parent becomes terminal
  -> child results may wait for an external user wake

finalize with an owned continuation
  -> parent registers exact dependencies
  -> parent becomes terminal
  -> runtime admits one fresh owner turn when they are ready

The third path is what our V9/V10 experiments implemented locally. That does not make #40932 “fixed by V10.” It makes the report a particularly clear external example of why a post-finalization owner-continuation primitive is useful at all.

Issue #15723 plays a different role: it shows why relevance is still not enough for a fix claim.

Its subagent branch crosses the same bounded failure boundary changed by V10: a parent can finish, the child can later finish, and the parent may not autonomously continue. Our local path addresses that lifecycle shape, but the broader issue also includes background-process behavior that may be orthogonal.

To make a strict fix claim, we wanted a same-HEAD baseline and candidate. We built a clean Windows baseline from the exact same upstream commit and tree without the V10 diff.

Then the comparison hit a different boundary. The existing exact-artifact driver relied on ambient live authentication in a way we did not want to turn into credential-copying test infrastructure. Building a credential-safe execution seam would have been real additional engineering, mainly to move one public label from “plausibly addressed” to “fixed.”

We stopped.

The standard did not change. The label did.

The bounded subagent branch remains plausibly addressed / unverified. The reporter-style A/B is unexecuted. The #32203 requester-versus-owner case remains an unexecuted nearest-parent negative control rather than something we bend the routing rules to make green.

That stopping boundary is useful evidence too. A good evidence system should allow UNKNOWN and UNEXECUTED to be final results rather than force every interesting case into a binary trophy.

One practical detail did slightly puncture our ambition: full Windows builds repeatedly took long enough for main to move again while the binary was still being produced. Chasing every intermediate commit was not going to converge, so causal comparisons stayed on frozen same-base cohorts and upstream was integrated when the semantic overlap actually mattered.

The linker was not impressed by our sense of urgency.

---

Evidence has an economics

Evidence discipline does not mean proving every claim at unlimited cost.

There is a difference between evidence required to decide whether code is safe to ship and evidence required only to make a sentence sound stronger. Concurrency, recovery, authority, replay, and exact runtime bytes can justify expensive work. A public issue label often cannot.

Heavy evidence work should be able to change something material: shipped bytes, architecture, deletion or retention, safety or authority, owner spend, or a genuinely release-blocking public claim. Improving confidence or wording alone is not enough.

That is why the clean same-HEAD baseline was still worth building: it established the object needed for causal comparison. Building a new credential-safe driver solely to upgrade a public label was not obviously worth the additional infrastructure work.

The evidence ceiling is part of the result.

A causal experiment uses a frozen cohort. Upstream can be watched read-only while it runs. If a new commit does not materially change the same semantic invariant, the causal result does not expire. If it does, integrate once after the slice rather than rebasing the experiment mid-flight.

The aim is not to make every intermediate binary maximally fresh. It is to keep the research valid and the assimilation loop fast.

---

Product direction: one cockpit, hidden graphs, adaptive intelligence

Everything above is practical evidence. What follows is a product hypothesis derived from operating the system, not a claim that current Codex or current OpenAI plans already work this way.

One visible cockpit

The bounded V10 composition already demonstrated the owner/root -> coordinator -> agent-graph -> owner-continuation shape locally. The product hypothesis is that this should remain one owner-facing conversation, with graph status, branches, receipts, and spend disclosed only when useful. What remains hypothetical is the stock-native, restart-safe, policy-driven version of that surface.

Orchestration appetite, not graph drawing

The normal user-facing control should influence how readily the model seeks useful delegation while leaving the concrete topology adaptive.

One possible execution-style surface is:

Single        stay single-agent
Conservative  delegate only when the benefit is clear
Adaptive      choose topology freely inside the allowed envelope
Aggressive    look harder for useful parallelism
Exploratory   favor independent approaches or hypotheses when the task supports them

The names are placeholders. The separation is the important part.

The user controls the appetite and the ceilings. The model synthesizes the topology. Runtime enforces the physics.

Hard ceilings can include budget, maximum concurrency, maximum fan-out, maximum depth, model tier, and capability families. A ceiling is permission to use capacity, not an instruction to consume it.

Hard semantic requirements are different from hard topology. “Give me five independent solutions,” “run two independent reviews,” or “explore competing hypotheses” constrains the evidence the user wants. The model can still decide how that requirement maps onto threads, children, depth, and fan-in.

Direct topology forcing belongs to advanced research and stress instrumentation, where topology itself is the independent variable. It should not be the normal product control model.

We do not yet know the natural graph shape

In many of our ordinary runs, coordinators visibly used only two or three subagents at once. We initially treated that as weak anecdotal evidence about the graph shapes models naturally prefer. Source inspection later exposed a confounder: Multi-Agent V2 defaults to four concurrent slots per session including the current agent, so a root operating at defaults has at most three simultaneous subagent slots. Effective capacity can be lower when resident threads are not yet unloadable.

For a while, we were measuring the walls of the box along with the model inside it.

That means the visible two-or-three-child pattern cannot be treated as evidence of a natural model branching preference. We do not currently have clean distributional evidence for natural fan-out or depth.

We still need to measure natural fan-out and depth by task and model, whether orchestration appetite actually changes topology, whether wider or deeper execution improves quality after fan-in cost, duplicate work, context and coordination overhead, and attested spend. We also need to know how often semantic diversity requirements improve outcomes without prescribing topology.

A product control has to earn its UI. If a “more exploratory” setting does not materially change useful behavior, it should not exist as decorative theater. If forced topology is useful only for research and stress testing, it should stay there.

The runtime should be able to survive the topology. The product should still earn the right to recommend it.

The selected model is default intelligence, not the whole factory

A model selector should not have to encode the entire execution policy of a task.

A cleaner interpretation is:

The selected model is the default intelligence for this thread.

After execution evidence arrives, the system may decide that the next step needs stronger reasoning, cheaper routine inference, a parallel branch, an independent reviewer, a fresh context, a replan, or an abort.

If the only need is stronger reasoning in the same logical context, native per-turn or per-step switching is cleaner than creating a new child solely to obtain a stronger brain. If the reason is parallelism, context isolation, independent judgment, or a separate lifecycle, a child remains the right primitive.

This is the semantic-escalation idea behind the control loop:

execute
  -> collect evidence
  -> interpret ambiguity / failure / confidence
  -> request stronger or weaker intelligence, or a topology change, if useful
  -> runtime admits or rejects the request
  -> continue

This is the product consequence of the earlier invariant semantic need != spend authority: models may request more compute or delegation when evidence justifies it, while runtime admission separately enforces budget, concurrency, and authority.

Compute policy and delegation policy should therefore be independent. A user might allow adaptive delegation but keep compute strict, or allow temporary model escalation while keeping the task single-agent.

Where the system does adapt, a compact execution receipt should make the effective result legible: which model and effort actually ran where it matters, what topology was used, which authority and environment applied, and what spend was actually attributed where the platform can attest it.

Requested configuration is not enough.

---

Why this could be attractive for OpenAI

This section is deliberately a product and economics hypothesis, not a revenue claim.

Multi-agent value without topology expertise

Dynamic graphs become useful to ordinary users without requiring them to learn thread routing, ownership, fan-in, or recovery semantics. The graph becomes implementation detail with progressive disclosure, not the product’s primary mental model.

Coherent plan differentiation

The same policy concepts can exist across plans while the admissible envelope changes. Lower-cost plans can have tighter automatic compute and concurrency ceilings. Higher-cost plans can expose larger budgets, broader adaptive execution, and more frontier inference.

That makes an upgrade legible as a larger autonomy, intelligence, and parallelism envelope rather than only a different model name.

A natural upgrade moment

A system that can explain why additional compute would help can make the upgrade decision concrete:

This task would benefit from two stronger reasoning steps and several independent approaches. It fits your current budget / requires approval / exceeds your current entitlement.

That is more meaningful than a generic quota warning because the extra compute is attached to a task-level benefit.

Better allocation of frontier compute

Expensive inference does not have to sit on every routine step. Frontier reasoning can be concentrated on ambiguity, architecture, critical review, and synthesis, while cheaper models and efforts handle routine execution.

That could improve quality per unit of compute and product economics, but it must be measured rather than assumed.

Spend trust

Adaptive systems are easier to authorize when users can see the budget, the escalation policy, and what actually happened. Effective model, tier, provider, billing identity, and a compact execution receipt reduce the “what just spent my quota?” problem.

Trust in spend is itself a product feature when the product can autonomously consume meaningful compute.

Enterprise governance

Managed policy, resource- and environment-bound authority, re-attestation, and auditable receipts can make adaptive execution governable rather than opaque. A model can be semantically ambitious without being operationally unconstrained.

A better learning loop

Native telemetry can help OpenAI learn when delegation, escalation, different graph shapes, or stronger reasoning actually improve outcomes. Aggregate telemetry is not the same thing as exact per-step spend or effect proof, but it is enough to make topology and escalation policies measurable instead of aesthetic.

The product value then shifts from “access to model X” toward “this much bounded, auditable autonomous work.”

A possible composition is:

plan entitlement ceiling
  -> thread policy envelope
      -> orchestration appetite + semantic requirements
      -> compute policy / spend ceiling
  -> runtime admission
  -> turn/step requested state
  -> effective state where attested
  -> provenance
  -> execution receipt
  -> economics telemetry

That is a product hypothesis. Current plan packaging does not prove it, and no revenue uplift is claimed.

---

What remains

The accepted V10 mechanism is intentionally narrow.

It does not provide restart-safe owned continuation. It does not establish durable Terminal -> exact recoverable Bound -> receiver ACK -> replay or dedupe. It does not prove no-loss or no-duplicate continuation across process death. It does not revive permissions after recovery. It does not prove external effects. It does not attest every effective model, provider, tier, or billing decision. It does not prove large graphs are better. It does not fix public issues by semantic resemblance.

Those gaps are useful because they define the residual kernel instead of letting “multi-agent orchestration” become an unlimited bucket.

The remaining areas worth investigating, if native Codex still leaves them open, are:

  • crash consistency of durable history and store;
  • durable Terminal, exact owner Bound, receiver consumption ACK, and replay;
  • authority re-attestation after resume or recovery;
  • effective model, provider, tier, billing, and spend attestation where material;
  • bounded payload, history, and recovery cost;
  • external-effect receipts or deterministic postconditions where possible.

Where we go next

The next work is intentionally narrow.

First, make owner continuation survive process restart. The next real boundary is a minimal durable Terminal -> exact Bound -> receiver ACK -> replay/dedupe path, reusing native primitives first and refusing any design that expands into a generic scheduler or inbox.

Second, re-attest authority and environment at recovery. Restoring the correct owner, thread, and turn is not enough to prove that permissions, workspace, environment, provider state, or the external world are still what they were before the process died. Before continuing or retrying, the runtime should re-resolve current authority and deterministically reconcile external effects where that matters.

Third, once recovery physics is honest, measure before widening: dogfood orchestration appetite, natural fan-out and depth, adaptive compute, quality, latency, coordination overhead, and attested spend — while continuing to ask which local layers upstream now makes deletable or unnecessary.

A credential-safe strict public-issue A/B driver remains optional. We would build it only if its outcome could change an architectural, runtime, safety, deletion, spend, or release decision — not merely to upgrade a public issue label.

These are not promises to build a large second runtime.

There are also things we would now refuse to build without very different evidence: a second generic scheduler, a durable inbox by default, heartbeat-as-correctness, a poller, unconditional wake plus empty retry, duplicate native telemetry, correlation, or authority layers, authority inference from labels or configuration, restart guarantees over process-local queues, or a rebuild whose only rationale is that main moved.

---

The smallest remaining machine

We started by trying to add control machinery around Codex.

The useful part of the experiment was learning which machinery was unnecessary.

One original explanation was false: native suspended waiting already existed. Several green-looking candidates were not semantically safe. Several public reports could not honestly be called fixed. Several future local layers became less necessary as native substrate grew. The working multi-level graph did not prove that large graphs are generally good. The current patch still does not survive a restart in the sense we ultimately care about.

What survived was narrower:

  • exact ownership matters;
  • waiting and finalization are different lifecycle choices;
  • one owner-facing chat can sit above a dynamic execution graph;
  • the model synthesizes that graph inside owner policy, semantic requirements, and hard ceilings;
  • stronger intelligence does not automatically require another thread;
  • lifecycle, useful work, and external effect are different truths;
  • semantic need does not grant spend or authority;
  • requested state is not effective state;
  • evidence strength has an economics;
  • the local control layer should shrink as stock Codex becomes sufficient.

The interesting end state is not the largest harness we can build.

It is the smallest amount of external physics still required for stock Codex to be convenient and trustworthy under sustained use.

A good pressure rig should eventually be able to prove that parts of itself are no longer needed.