Back to Notable InsightsTech

The Hardware-Software Nexus

Why the AI Harness Matters Most

James Collier
0:00 / 0:00

You've just inherited a messy codebase. Undocumented functions. Inconsistent naming. A test suite that covers about 40 percent of what it should. You open an AI coding agent, point it at the project, and ask it to map the dependency graph and identify the three highest-risk modules.

That agent might be Claude Code running locally in your terminal or desktop app. It might be Codex running locally in the Codex desktop app. It might be a cloud session that continues after you close your laptop. It might be a task kicked off from a browser, issue tracker, IDE, or pull request review flow.

The model behind the tool matters, but it is no longer the cleanest way to understand the difference between these products. The old comparison was simple: Claude Code was the local collaborator, and Codex was the cloud contractor. That comparison is now too narrow.

Claude Code and Codex have both expanded across local, desktop, cloud, IDE, memory, and review-oriented workflows. The important distinction is no longer which product lives in which place. It is which harness mode the task actually needs.

What can the agent reach? What does it remember? Where does it execute? How isolated is the work? How does the output enter the codebase?

That is the hardware-software nexus. Not the chip. Not the model alone. The harness.

The part the benchmarks don't show

Most comparisons between Claude Code and Codex focus on code quality: does the output compile, does it pass tests, does it match the spec. Those questions matter. But they do not tell you what happens when the task requires understanding something that is not in the prompt.

Real development work is context-dense. A function that looks wrong in isolation might be correct given how it is called three files away. A refactor that seems simple can break an implicit contract that lives only in a comment from two years ago. A test failure might depend on a local environment variable, a fixture, a package manager quirk, or a design decision nobody wrote down.

The model that produces the cleanest output on a synthetic benchmark may still fail on your actual codebase because your actual codebase is not a synthetic benchmark.

The harder question is: how much of your working context can the tool actually access, and how much of that context persists as the work evolves?

That question used to map neatly onto product categories. It no longer does.

The old local versus cloud binary broke

A year ago, it was reasonable to describe Claude Code and Codex as two sharply different theories of where an AI coding agent should live.

Claude Code was easiest to understand as a local environment. It read your files, ran commands, worked in your shell, and carried project instructions through CLAUDE.md. It behaved like a collaborator sitting inside your working environment.

Codex was easiest to understand as cloud orchestration. You gave it a task, it worked in an isolated environment, and the result came back as a proposed change or pull request. It behaved like a contractor you hired for bounded work.

That comparison made sense as a snapshot. It is no longer accurate as a product-level distinction.

Claude Code now spans terminal, IDE, desktop, and browser workflows. It can run locally, remotely in Anthropic's cloud infrastructure, or through SSH against another machine. Its memory story is no longer just CLAUDE.md; it also includes auto memory that accumulates useful project learnings across sessions.

Codex now spans web, desktop app, IDE extension, CLI, GitHub, Slack, memories, worktrees, automations, plugins, local terminal actions, in-app browser flows, and cloud background tasks. The Codex web experience still supports cloud delegation and pull-request-oriented work. The Codex desktop app also lets you select a local project and run Codex on your machine.

So the article is no longer Claude local versus Codex cloud. That framing misses the current state of the tools.

The better framing is local interactive work, local isolated work, cloud background work, and review-driven handoff. Claude Code and Codex now participate in more than one of those modes.

The five questions that define the harness

The harness is the operating environment around the model. It determines what the agent can perceive, where it can act, what persists, and how humans review the result.

When you choose an AI coding tool, you are really answering five questions.

  • Where does the agent execute? Local machine, remote machine, cloud environment, browser session, IDE, or containerized workspace.
  • What can it reach? Files, terminal, browser, issue tracker, docs, Slack, local services, secrets, build tools, and test infrastructure.
  • What does it remember? Project instructions, durable preferences, prior debugging discoveries, known pitfalls, and recent task history.
  • How isolated is the work? Direct edits, worktrees, sandboxed environments, remote sessions, cloud containers, or PR-only changes.
  • How does output enter the codebase? Live file edits, staged diffs, commits, branches, pull requests, review comments, or generated reports.

Those questions matter more than brand labels because the same product may offer multiple answers depending on how you launch it.

Four harness modes for AI coding work

Local interactive workspace

This is the classic high-context mode. The agent works where you work. It can read the project, inspect files, run commands, respond to corrections, and adapt while you watch.

This mode is strongest when the problem is exploratory. You are debugging a vague failure. You are tracing state through several modules. You are trying to understand an unfamiliar codebase. You are refactoring something with hidden coupling. The agent benefits from immediate access to the same environment you are using.

The cost is exposure. A local agent that can edit files and run commands has a broader trust boundary. Permission prompts, sandbox settings, and review discipline matter because the agent is close to the actual working surface.

Use this mode when the value of context outweighs the cost of close access.

Local isolated workspace

This mode keeps the agent near your environment but separates the work from your main branch or active files. Git worktrees, sandboxed shells, permission settings, and restricted execution policies all belong in this category.

The value is that the agent can still reason over the local project while reducing the risk of contaminating your current working state. This is useful when you want the model to explore, test, and modify code, but you do not want those changes mixed into the branch you are actively editing.

This mode is a strong fit for medium-sized changes, exploratory refactors, dependency updates, and experiments where you want local context but controlled blast radius.

Use this mode when you want proximity without giving the agent a free hand on your active workspace.

Cloud background workspace

This is the delegation mode. The agent works somewhere else. It can keep running while you move on. Multiple tasks can run in parallel. The cloud environment can be configured with repository setup steps, tools, and network access policies.

The value is throughput. You do not need to sit with every task. You can ask for tests, documentation updates, migration checks, UI changes, or bug investigations and return to the results later.

The cost is context packaging. A cloud agent can only use the project, instructions, connected tools, and environment you make available to it. If the key constraint lives in your head, on your laptop, or in an unconnected conversation, the agent may produce technically plausible but context-poor work.

Use this mode when the task is bounded enough to delegate and the needed context can be written down or attached.

Review-driven handoff

This is the PR, diff, and code review mode. The agent's work is valuable not because it is immediately accepted, but because it arrives in a reviewable form.

That can mean a pull request, a branch, a staged diff, a patch, a review comment, a test report, or a written implementation plan. The agent is not replacing the developer's judgment. It is producing structured work that a human can inspect.

The value is governance. You can require tests, review changes file by file, compare attempts, reject weak outputs, and preserve a clean audit trail. The cost is that quality assurance shifts downstream. A bad change may look tidy in a PR, so the review process has to be real.

Use this mode when correctness, auditability, and team workflow matter more than live collaboration.

What each mode actually costs you

Local interactive work gives you the richest feedback loop. You can redirect the agent midstream, clarify intent, inspect changes immediately, and use project memory to avoid restarting from zero. That makes it strong for difficult debugging and architecture work. It also means the agent has more opportunity to touch things it should not touch.

Local isolated work gives you much of the same context with better separation. It is not risk-free, but it limits the damage from exploratory edits and makes experiments easier to discard. The tradeoff is additional workflow complexity. You need to understand where the agent is working and how changes will be merged back.

Cloud background work gives you leverage. You can run several investigations or implementation attempts while you focus elsewhere. That is useful for repeatable work, long-running tests, broad cleanup, and tasks that do not require constant steering. The tradeoff is that context has to be externalized. A vague instruction in a cloud session often fails for the same reason a vague contractor brief fails.

Review-driven handoff gives you control. The output is not finished work until someone reviews it. That is valuable for teams and production systems. The tradeoff is that review becomes the safety net, and a weak review process turns neat-looking agent output into hidden risk.

None of these modes is inherently better. They are different answers to different operating problems.

Matching the harness to the work

The practical decision is not which tool is better. It is which harness mode fits the task.

  • Debugging a vague local failure: Use a local interactive workspace because the agent needs environment access, live feedback, and iterative steering.
  • Mapping an unfamiliar codebase: Use a local interactive workspace or cloud analysis. Local is best if environment details matter. Cloud works if the repo and docs are enough.
  • Writing tests for a stable module: Use cloud background work or review-driven handoff because the task is bounded and the output can be reviewed as a diff.
  • Refactoring across coupled modules: Use a local interactive or local isolated workspace because the agent needs context and careful course correction. Isolation helps manage risk.
  • Applying a known transformation across files: Use a local isolated or cloud background workspace because the task is repetitive and reviewable.
  • Generating boilerplate from a complete spec: Use a cloud background workspace because the work is bounded and does not require constant human presence.
  • Reviewing a pull request: Use review-driven handoff because the output should be comments, findings, tests, or a proposed patch.
  • Investigating architecture tradeoffs: Use a local interactive workspace because the answer depends on judgment, context, and follow-up questions.

A strong AI development workflow will not route everything through one default tool. It will route work by harness mode.

The real divide is context versus control

The useful tension is not Claude versus Codex. It is context versus control.

High-context work benefits from agents that can see more, remember more, and stay closer to the developer's environment. That is where local interactive workflows shine.

High-control work benefits from agents that act in bounded spaces, produce reviewable output, and keep changes isolated until a human accepts them. That is where cloud background tasks, worktrees, PRs, and review modes shine.

The wrong move is to confuse one dimension for the other.

If you use a high-access local agent for a task that only needed a clean repo and a complete spec, you accepted more exposure than necessary. If you use a cloud background agent for a task that depends on local state, accumulated project judgment, or unwritten constraints, you should expect shallow output.

The agent did not necessarily fail because the model was weak. It failed because the harness did not fit the work.

The practical routing rule

Before assigning work to an AI coding agent, ask three questions.

First, does the task require live, high-context exploration? If yes, start local and interactive.

Second, can the task be written as a bounded work order with clear acceptance criteria? If yes, delegate it to a cloud background or review-driven workflow.

Third, would a mistake be expensive if it touched the active workspace? If yes, isolate it through a worktree, sandbox, branch, PR, or remote environment.

That routing rule is more useful than asking which product is smarter. Both Claude Code and Codex are moving toward broader, overlapping surfaces. The difference that remains is how well you match the task to the operating environment.

The decision you are actually making

The best coding model is not automatically the best development partner. A model only becomes useful through the harness around it: the files it can read, the commands it can run, the memory it can carry, the environment it inhabits, and the review process that controls how its output becomes real code.

That is why the benchmark conversation is incomplete. Model quality matters, but the decisive gap is often outside the model. It is in the working surface.

The specific next step: look at the last five development tasks you delegated to an AI tool and classify each one by harness mode. Local interactive. Local isolated. Cloud background. Review-driven handoff.

If every task went through the same mode, your workflow is probably too blunt.

The gap that matters is not only in the model weights. It is in what the model can see, what it remembers, where it is allowed to act, and how its work is reviewed.

That is the harness. And that is the decision you are actually making.


← Back to Notable Insights