Feature / Published 2026-08-23

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.

By Michael Ruescher / revised 2026-09-23 / reporting window 2025-04-16 to 2026-08-23

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 narrower. Codex is deleting its deterministic defaults: the built-in policy, the preset, the allowlist that guessed what was safe. It keeps deterministic constraints: at the same tag the 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 it grows everything around both: threads, state, events, approval routing, an embeddable server. Ambiguous judgment goes to models, hard boundaries stay in rules and the operating system, and the machinery between them thickens. The gate itself is as old as the product. On launch day Michael Bolin, the CLI’s original author, said the modes shipped so the user can pick the mode on a per-action or per-session basis.@bolinfest What sixteen months changed is who sits in it.

What was said, in order

The team states 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 An AI Engineer attendee supplied the working 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 engineer whose Harness Engineering writeup the team credits warned against a rulebook the model has to carry, and put the alternative as a slogan: give the model tools and context and let it cook.@_lopopolo

July tested it. Users reported deleted files, and 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 An operator in the thread stated the constraint every approval design answers to: We want the safeguards but without the friction.@born2code On 30 July OpenAI moved the reviewer to a new model and said we expect Auto-review to cost about 10x less@OpenAI. On 4 August the lead told operators the product itself 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

On 10 August Thorsten Ball, who builds Amp, argued the harness is no longer what provides the most leverage.@thorstenball A Codex engineer, Eric Provencher, answered the same day that he only half agreed: Codex computer and chrome use are part of the harness and add a ton of leverage.@pvncher Asked later whether multi-agent work is model or harness, he said it is tools the models are trained to use well, built into the harness@pvncher.

On 19 August the lead recapped the deletion fix as layers: instructions, execution checks, a harder-to-reach full access mode, an updated reviewer, and adding reinforcement-learning tasks and graders focused on these risks, and filtering destructive actions from training data.@thsottiaux The next day one operator watched auto-review vanish from their analytics and guessed that codex-auto-review has been deprecated as more is routed to guardian-v2, which was never displayed@acsmif. Another found the part Codex kept, the package that decides whether a command may run: I have been doing this with a hook and a hand-written allowlist. Theirs is better and I am rewriting mine.@the_niresh

The openness question ran alongside. When a reader wrote that the actual code for the UI of the harnass is nowhere to be found@lucasmeijer, the lead drew the line at the loop: The agent code is the harness. The codex app is an app.@thsottiaux The official account said what that leaves to an embedder: Their applications control the interface, context, tools, and approvals while the harness handles the agent loop.@OpenAIDevs

And on 23 August Onur Solmaz, who works on a competing harness, made the eval side’s case: We need to normalize measuring and judging models against a standardized test harness@onusoz. The lead replied:

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

What the tree says

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 on main, from 204 distinct author names. The codex-rs workspace grew from 24 top-level entries in June 2025 to 115. The feature table at 0.149.0 holds 116 flags: 38 stable, 41 under development, 34 removed, 3 deprecated. Removed: a JavaScript REPL, tool search, steering, collaboration modes, the first multi-agent mode. Experiments end in public, including ones the rest of the field still sells as products.

The deletions do different jobs. The legacy engine was built-in adjudication, shipped heuristics guessing which commands were safe; the same release ran a one-time, scoped migration of the user’s rules file, deleting exact allow entries for prefixes Codex no longer proposes. The untrusted preset was default trust. Both remove the harness’s opinion and keep the operator’s: rules an administrator writes still bind, and managed requirements can still impose them. The lockfile and auto-compaction’s off switch are another pattern: how the runtime keeps itself productive becomes provider-owned. You keep the boundaries. You lose the freeze switches.

Walk one approval through the tag. Codex edits freely inside its writable workspace. A path outside it, or the network, becomes a request. An explicit rule can settle it: allow runs “without further approval,” forbidden is “blocked without further consideration,” and where several rules match the most restrictive decision wins. Otherwise the request goes to a reviewer. The App Server protocol says that reviewer “Defaults to user,” or, where the client selects it or managed policy requires it, is auto_review, “a carefully prompted subagent” applying “a risk-based decision framework.” The schema still accepts the legacy name, guardian_subagent.

That subagent’s policy is a prose rubric versioned like source: which parts of a session count as trusted, a four-level scale for how much the user authorized, and lines like “Judge authorization by the material semantics, not exact syntax.” It approves or denies a crossing. It cannot widen the sandbox, and a forbidden rule stops a command before any reviewer sees it.

The dispute, line by line

Is a model already in your approval path? No, unless someone put it there. guardian_approval is stable and enabled at 0.149.0, so the capability has graduated; routing is a separate fact, and it defaults to the user. “Approve for me” is a selection an operator or organization makes. Guardian V2, the anticipatory scorer, is in the stable tag and off, as Approvals Belong to the App reported.

Does an embedder get the reviewer? Yes. App Server exposes the auto_review route along with the loop. What it does not hand over is the institution: identity, consent, which actions stay human-only, how approvals enter your audit record. The official account’s sentence holds in both directions.

What is open? Settled by the license. The agent code, terminal UI, protocol and App Server are Apache-2; the desktop app is not in the tree. Meijer is right about the app and wrong if read as the whole product.

Is the harness getting thinner? Not on this record. The lead’s “less infrastructure” describes the defaults; the workspace grew almost fivefold over the same sixteen months. OpenAI’s own platform post says retained reasoning and context compaction raised GPT-5.6 Sol’s ARC-AGI-3 score from 13.3% to 38.3% while cutting output tokens sixfold. Ball’s case that the lever has moved and Provencher’s that computer use still adds one are both consistent with a tree that deletes heuristics and adds tools the model is trained on. The independent check points the same way: on SWE-Marathon no configuration clears 30% pass@1 on ultra-long tasks, and the failures (weak self-verification, premature stops) are ones judgment alone does not fix.

What does the reviewer buy, and what does it cost? OpenAI’s case is worth taking seriously. In its internal Auto-review deployment, sessions stop for human approval roughly 200 times less often, the reviewer approves about 99% of what reaches it, and after a denial Codex finds an acceptable path “in more than half of cases.” Those are the vendor’s measurements of its own deployment, and so is the tenfold cost cut; neither can be checked from outside. The cost that can be seen is opacity. The tags show guardianv2 present and off; they cannot show what runs server-side, on which model, at what price. The protocol carries an unstable decision-source field on auto-review decisions, the seed of a receipt. A judgment you cannot replay is a judgment you cannot govern.

Pencil or body? No receipt settles it, because it is a question about what a benchmark is for. Solmaz wants models compared on a common harness; the lead says the harness is part of what is being measured. The ARC-AGI-3 numbers support his description of his own product, and they are also why a score measured in one lab’s harness does not transfer to anyone else’s.

If you run or embed Codex

Find out who reviews your approvals. If you or your organization selected “Approve for me,” record it as a policy decision: which reviewer, what it may approve, where its rationale goes. Watch the usage dashboard the way you watch the sandbox config, because the reviewer’s cost is the one receipt the tree cannot give you.

Treat upgrades as policy migrations. 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, which is the right kind of removal. Before promoting a new stable, replay the actions you care about (ordinary, ambiguous, destructive, adversarial) and compare what got approved, denied and recorded. If you wrote your own allowlist in a hook, the policy crate is worth reading before you extend it.

Where the layer bet lands

Bitter Lesson Maxing asks which layer gains value as general models improve. Codex’s answer is not “delete the harness.” It is to delete what the next model absorbs (heuristics, defaults, canned trust) and spend on what it cannot: state, boundaries, events, the protocol a person interrupts through. A harness trained into the model is co-design, the advantage this publication’s thesis assumes providers keep. For everyone else the lesson is to stop building on the layer Codex just deleted and to own what gains value as the model improves: authority, verification, the audit trail, the human boundary. Claude Code’s hooks already pair exit-code rules with prompt hooks; the split is not OpenAI’s alone. The gate’s judgment may be rented. The institution around it cannot be.

Amdahl Maxing says find the serial human moment. OpenAI’s own numbers say the reviewer removes almost all of them, which no approval UI ever managed. What it does not yet give back is what the slow gate gave for free: a decision a person can read afterward. The attention moved downstream, to whoever must answer for judgments made at machine volume.

They deleted the default rulebook and kept the walls. The model may get to decide what you meant. It does not get to decide where the walls are.

Projects in this feature