The Body, Not the Pencil
Sixteen months of the Codex tree show a division of labor being drawn: models take the ambiguous judgments, hand-written rules and OS sandboxes keep the hard boundaries, and the harness around both gets thicker, not thinner. What OpenAI deletes, keeps, and grows is a map of where every agent builder's footing moved.
In the space of one month, OpenAI’s Codex deleted three things an operator
could once read. Pull request #32093
removed the legacy exec policy engine and its built-in default policy.
#38011 removed config lockfiles.
#39630, in
rust-v0.149.0,
retired the untrusted approval preset and its known-safe command allowlist,
fourteen months after the rename that named it.
It would be easy to read that as a harness deleting itself. The tree says
something more precise, and more useful. What Codex is deleting is its deterministic defaults -- the
built-in policy, the preset, the allowlist that guessed what was safe. What it
keeps is deterministic constraints: at the same tag, the surviving policy
crate still parses hand-written rules to a hard
Allow, Prompt, or Forbidden,
and #39630’s own text says an
untrusted project now asks about every command “unless an explicit exec policy
rule allows it.” And what it grows is everything around both: threads, state,
events, approval routing, an embeddable server.
Three moves, one design. Ambiguous judgment goes to models. Hard boundaries stay in rules and operating systems. The machinery around them thickens. This piece reads sixteen months of the tree, and the team’s public statements alongside it, to show that design being drawn -- and what it means for everyone who is not OpenAI.
Sixteen months, measured
The velocity is real. From the
first commit
on 2025-04-16 to rust-v0.149.0 there are 9,577 commits; the ninety days
before this piece put 2,905 commits on main, from 204 distinct author
names. The codex-rs
workspace grew from 24 top-level entries in June 2025 to 115 at 0.149.0. The two stable
tags of 18 and 20 August sit 623 commits apart from their predecessor, cut 48
hours apart -- while stable releases themselves became rare events: seventeen
in August 2025, three in August 2026, over a near-daily alpha train.
The clearest instrument in the tree is the feature table: 116 flags: 38 stable, 41 under development, 34 removed, 3 deprecated. Read it as a roadmap stapled to a graveyard. Under development: a code-mode family, a network proxy, token and rollout budgets, agent identity, something called Chronicle. Removed: a JavaScript REPL, a search tool, tool search, steering, collaboration modes, the first multi-agent mode. Some flags retire downward into deletion; a few retire upward, absorbed into default behavior. Either way the experiment ends in public -- including experiments the rest of the field is still building as products.
Three deletions, three different jobs
The deletions are not one policy, and treating them as one hides the design.
The legacy policy engine was
built-in adjudication: shipped heuristics that guessed which commands were
safe. The same release ran a
one-time, scoped migration of
the user’s rules file, deleting exact legacy allow entries for prefixes Codex
no longer proposes -- an upgrade touching operator-owned policy on disk, but a
compatibility migration, not a license to rewrite it. The untrusted preset
and its allowlist were default trust: a canned answer to “what needs
asking.” Both deletions remove the harness’s own opinion while keeping the
operator’s: rules an administrator writes still bind, and
managed requirements can still impose them.
The config lockfile and auto-compaction’s off switch are a different pattern. The lockfile was export, replay, and validation of effective configuration; compaction is context lifecycle. Removing both says: how the runtime keeps itself productive is becoming provider-owned behavior, not an operator knob. You keep the boundaries. You are losing the freeze switches.
The shape of the migration: defaults and internal method move into the co-designed runtime; explicit constraints remain code you can read.
The gate has layers
Walk one approval through the system as the tag builds it. Codex edits
freely inside its writable workspace. When it wants a path outside the
sandbox, or the network, the boundary turns that want into a request. An
explicit rule can settle it: allow runs “without further approval,”
forbidden is “blocked without further consideration,” prompt sends it to
review -- and where several rules match,
the policy takes the most restrictive decision.
Otherwise the request routes to a reviewer, and who that reviewer is is the
change this year: the
App Server protocol
routes approvals to a reviewer that “Defaults to user,” or -- when the
client selects it or managed policy requires it -- to auto_review, “a
carefully prompted subagent” applying “a risk-based decision framework.” The
schema still accepts the legacy name for that value: guardian_subagent.
Guardian is where judgment became inference. Its
reviewer policy
is a prose rubric, versioned in the tree like source: which parts of a session
count as trusted, a four-level scale for how much the user actually
authorized, and instructions like “Judge authorization by the material
semantics, not exact syntax.” That is a real security adjudicator written in
natural language. It is not the whole security policy: the reviewer approves
or denies a boundary crossing; it does not widen the sandbox or grant itself
the network, and a forbidden rule is “blocked without further
consideration” before any reviewer enters it.
The flag table misleads on its own. guardian_approval is stable and
enabled at 0.149.0 -- the capability has
graduated. Routing is a separate fact: the default reviewer is still you.
“Approve for me” is a mode an operator or an organization selects. The
development that matters is not that every install already has a model in the
gate. It is that model-mediated approval is now a supported architectural
primitive, one selection away, with V2 -- the anticipatory scorer quoted
above -- in the stable tag and off, as
The Classifier Is Off reported.
The team narrates the bet
None of this needs inferring from commits alone; the people shipping it describe the doctrine in public.
In June, a Codex teammate located the bottleneck: The limiting factor now is likely giving models and agents access to the right tools, and having them run at the right moments
@TheRohanVarma.
Two weeks later the engineering lead, Tibo Sottiaux, attached the thesis to a
shipping feature: When you let the model be in the driver seat, you actually need less infrastructure.
@thsottiaux. In August Sottiaux told operators
the current product is temporary: But it will seem primitive in 2-3 months and we're about to go through another major evolution in how we use AI at the frontier.
@thsottiaux. An AI Engineer
attendee supplied the design rule from a May conversation, the only public
trace of it we could find:
back in may at @aiDotEngineer, i asked @thsottiaux when they wait for a better model instead of patching the harness and he said: > “oftentimes we actually ask ourselves: what if we don’t fix this in the harness today? how quickly is it going to be possible to improve the models?” now he’s saying today’s codex will look primitive in 2-3 months lol man i wish i could see what they’re testing right now
Vihaan Motwani @vihaanmotwani The same instinct shows up around the team. The engineer whose internal
Harness Engineering writeup the team publicly credits gives the advice as a
slogan -- give the model tools and context and let it cook.
@_lopopolo -- and warns against growing a rulebook
the model has to carry. The rule licenses deleting a heuristic the next
model will absorb. Nobody quoted here proposes deleting a boundary.
What the trade buys, and what it costs
OpenAI has published its own case for the model in the reviewer seat, and it is worth taking seriously. In its internal Auto-review deployment, sessions stop for human approval roughly 200 times less often than under manual approval; the reviewer approves about 99% of the small fraction escalated to it; and after a denial, Codex finds an acceptable path “in more than half of cases.” By 30 April 2026, a majority of internal Codex Desktop token usage was Auto-review. Those are the vendor’s own measurements of its own deployment -- but they name the real problem this architecture attacks.
July showed it live. Users reported deleted files; the lead published the
failure read -- full access, no sandbox, no auto-review, and
The model makes an honest mistake and mistakenly deletes $HOME instead.
@thsottiaux -- and an operator stated the constraint every
approval design answers to: We want the safeguards but without the friction.
@born2code. The
layered response was
prompts, execution checks, harder-to-reach full access, an updated reviewer,
and adding reinforcement-learning tasks and graders focused on these risks, and filtering destructive actions from training data.
@thsottiaux -- inference three ways, wrapped around an OS
sandbox.
The cost is a new kind of opacity. Human judgment was slow and visible. Model
judgment is high-volume, silently upgradeable, and hard to replay. Within
days of the 0.148.0 stable, one operator watched auto-review vanish from
their analytics and guessed at invisible rerouting:
codex-auto-review has been deprecated as more is routed to guardian-v2, which was never displayed
@acsmif. The tags can show guardianv2 present and
off by default; they cannot show what runs server-side or what gets billed.
The protocol contains the seed of the answer -- an
unstable decision-source field
on auto-review decisions -- but a governable gate needs the full receipt:
reviewer model and prompt version, the authorization evidence, the rationale,
the matching rule, the cost. A judgment you cannot replay is a judgment you
cannot govern.
The limit of the bet, and the field converging on it
Inside the team, the bet has a stated boundary. Asked whether harnesses stop
mattering: Codex computer and chrome use are part of the harness and add a ton of leverage.
@pvncher. Asked whether multi-agent is
model or harness: tools the models are trained to use well, built into the harness
@pvncher. And OpenAI’s platform post
gives the strongest reason the harness is not dissolving: on ARC-AGI-3,
retained reasoning and context compaction raised GPT-5.6 Sol’s score from 13.3% to 38.3%
while cutting output tokens sixfold. The harness is not incidental to the
model; it is part of what the model is in production. The independent check
points the same way: on SWE-Marathon, no
agent-model configuration clears 30% pass@1 across 1,300 logged attempts at
ultra-long tasks, and the failures --
poor self-verification, premature stops, reward-hacking in 13.8% of rollouts
-- are exactly the ones judgment alone does not fix.
The field is converging on the same split from the other side.
Claude Code’s hook system offers
both shapes explicitly: command hooks that return an exit code with no model
in the decision path, and prompt or agent hooks that delegate the judgment
call. A fork of Pi is rewriting itself to escape its upstream;
DeepSeek Harness makes the approval path a plugin;
Codex deletes its defaults and keeps its constraints. Different projects,
one emerging grammar: deterministic machinery for invariants, model judgment
for ambiguity, and an argument -- still open -- about which parts belong to
whom. When the eval side objected that this makes model rankings
incomparable -- We need to normalize measuring and judging models against a standardized test harness
@onusoz -- the Codex lead’s reply
was the closest thing to a mission statement the record contains:
A better analogy would be to say that your brain suddenly gets placed in the pencil for it to moved around when you need to do the exam. These are entirely different things you are comparing. The harness is much more similar to the body than it is to the classroom and environment.
Tibo @thsottiaux A body, in the lead’s telling. The record above says what kind: judgment moving into the cortex, limits held in the skeleton, and more nerves every release.
If you run or embed Codex
Find out who reviews your approvals. The capability is stable; the routing defaults to you. If you or your organization selected “Approve for me,” record that as a policy decision: which reviewer, which version, what it may approve, where its rationale goes. Watch your usage dashboard the way you watch your sandbox config, because the reviewer’s cost is the one receipt the tree cannot give you.
Treat upgrades as policy migrations, not feature updates. 0.145.0 migrated your rules file once, narrowly; 0.148.0 dropped config replay; 0.149.0 removed a preset your config may still name, and the setting now fails with an actionable error instead of being silently ignored -- the right kind of removal. Before promoting a new stable, replay the actions you care about: the ordinary, the ambiguous, the destructive, the adversarial. Compare what got approved, denied, and recorded.
If you embed the loop, know what “open” means here, because the team argued
it out in public. When a reader complained that the actual code for the UI of the harnass is nowhere to be found
@lucasmeijer,
the lead drew the boundary at the loop: The agent code is the harness. The codex app is an app.
@thsottiaux.
The agent code, the terminal UI, the protocol, and App Server are
Apache-2; the
desktop app is a product. And App Server hands you the reviewer route
along with the loop -- what it does not hand you is the institution:
identity, consent, which actions stay human-only, how approvals enter your
audit record. The official account said it plainly:
Their applications control the interface, context, tools, and approvals while the harness handles the agent loop.
@OpenAIDevs. Take them at their word, in both
directions.
What we expect next
Forecasts, with their falsifiers.
First: guardianv2 graduates. The anticipatory scorer’s flag flips
default-on by year end, following guardian_approval from capability to
default. Refuted if it is still off in the last stable of 2026.
Second: the audit surface becomes a product. The unstable decision-source field grows into decision events with rationales, version identifiers, and a priced line item, because enterprises will not route approvals to a reviewer they cannot replay or invoice. Refuted if the field is removed -- or still marked unstable, alone, at year end.
Third: presets keep dying and constraints keep growing -- fewer named modes, more explicit rules and managed requirements, because that is what an enterprise-shaped gate looks like. Refuted if a new approval preset ships in a stable this year.
Fourth: the hybrid gate becomes the field’s grammar. Within two quarters, most tier-one harnesses on our watchlist offer a model reviewer beside their deterministic policy, the way Claude Code’s hooks already pair exit codes with prompt hooks. Refuted if, by late February, most still have no model anywhere in the approval path -- or if one of them ships a gate that is judgment only.
Fifth: agents get names. The roadmap carries UseAgentIdentity and the
workspace carries a workload-identity crate, and every enterprise question
in this piece -- who approved, who is billed, who is allowed -- needs a
per-agent identity to hang its answer on. Refuted if both are still under
development, or gone, at year end.
Sixth: the tool call loses ground to the code call. CodeModeHost is stable
and on; CodeModeOnly -- a flag whose name says tool calls stop being the
default path -- is in development; and the first attempt, JsRepl, was
shipped, measured, and removed. We expect the second attempt to graduate.
Refuted if CodeMode follows JsRepl into the removed list.
Where the layer bet lands
Bitter Lesson Maxing asks which layer becomes more valuable as general models improve. Codex’s answer is not “delete the harness.” It is: delete what the next model absorbs -- heuristics, defaults, canned trust -- and pour the savings into what it cannot: state, boundaries, events, the protocol a person interrupts through. A harness trained into the model is the opposite of replaceable; it is co-design, the advantage this publication’s thesis assumes providers keep. The lesson for everyone else is not to stop building harnesses. It is to stop building on the layer Codex just deleted -- the temporary cognitive patches -- and to own what gets more valuable as the cortex improves: durable state, authority, verification, the audit trail, the human boundary. The gate’s judgment may be rented. The institution around the gate cannot be.
Amdahl’s law says find the serial human moment. OpenAI’s own numbers say the reviewer collapses two hundred interruptions into one -- attention saved on a scale no approval UI ever managed. What it does not yet give back is the thing the old, slow gate gave for free: a decision a person can read afterward. The attention did not disappear. It moved downstream, to whoever must answer for judgments made at machine volume.
They deleted the default rulebook and kept the walls. The model is one selection away from deciding what you meant. It does not get to decide where the walls are -- and the next fight, on this record, is whether it has to show its work.
Projects in this feature