Choose a boundary, not an interface

Codex CLI, the IDE extension, cloud tasks, the desktop app, and code review are often presented as access points to the same agent. That is true at the product-family level and misleading at the systems level. Each surface changes what state is nearby, where commands run, how quickly a person can steer, and what must be reconstructed at handoff.

The selection problem can be represented as

j=argmaxj(FjλlLjλrRjλsSjλhHj), j^*=\arg\max_j\left( F_j-\lambda_l L_j-\lambda_r R_j-\lambda_s S_j-\lambda_h H_j \right),

where FjF_j is task fit, LjL_j latency, RjR_j reproducibility risk, SjS_j security exposure, and HjH_j human coordination cost for surface jj. The coefficients depend on the repository and consequence of error. There is no globally best surface.

ADVERTISEMENT

CLI: local state and composability

Codex CLI operates in the project directory, reads and edits local files, invokes installed development tools, and supports both interactive sessions and non-interactive codex exec workflows [1]. It is the natural choice when the decisive state already exists locally: an uncommitted reproduction, a configured compiler cache, a device connection, or a failing test that is expensive to recreate elsewhere.

Its advantage is also its risk. Local state may include credentials, unrelated files, or environmental quirks. The documented default combines workspace-limited write access, disabled command networking, and on-request approval for boundary crossings [5]. That boundary should remain narrower than the user’s entire home directory. Use a branch or worktree, record the environment, and do not confuse “works on my machine” with reproducibility.

IDE: low context-description cost

The IDE extension can attach open files, selections, and recent chats directly to a task, then present changes beside the source [2]. It fits focused debugging, unfamiliar-code explanation, and edits where the human intends to remain in the loop at short intervals.

Its principal benefit is not a stronger model. It reduces the cost and ambiguity of saying which code matters now. The failure mode is attentional anchoring: open files may be relevant but incomplete. A defect whose cause crosses module boundaries still requires repository search and executable evidence.

Cloud: parallel, reconstructable delegation

Codex cloud assigns tasks to isolated hosted environments connected to selected repositories. Users configure dependencies, tools, variables, secrets, and setup steps, then review summaries and diffs or open pull requests [3]. Cloud fits longer tasks, multiple independent attempts, work started away from the development machine, and jobs whose environment should be reconstructed rather than inherited.

ADVERTISEMENT

The cloud boundary creates setup cost and epistemic value. Missing configuration causes failure, but explicit configuration reveals hidden dependencies. Current documentation separates a network-enabled setup phase from an agent phase that is offline by default unless internet access is enabled [5]. Secrets available during setup are documented as removed before the agent phase. These controls reduce exposure; they do not eliminate malicious dependencies or unsafe allowlists.

A single patch cord rising to a fanning strip where four possible runs diverge, its plug caught at the fan and committed to none of them
Figure 1. Surface choice is a constrained routing problem, not a hierarchy in which cloud or local execution is always superior.Image prompt and art direction by Brecht Corbeel; image generated to that direction.

Desktop orchestration: concurrency and supervision

OpenAI introduced the Codex app as a command center for multiple agent threads, with projects, worktrees, diff review, skills, and scheduled automations [4]. By mid-2026, this orchestration concept had expanded across desktop and remote workflows. It fits a supervisor managing several bounded tasks more than a developer making one tightly coupled edit.

Parallelism is useful only when work can be partitioned. If two agents modify the same architectural assumptions, worktrees prevent filesystem conflict but not semantic conflict. The orchestration burden moves upward: task decomposition, shared invariants, merge ordering, and final integration tests become the scarce resources.

Code review: preserve role separation

Review should be treated as an evaluation mode, not merely another implementation surface. The CLI documentation describes review against uncommitted changes, commits, or a base branch without modifying the working tree [1]. That separation matters. A generator asked to judge its own patch can inherit the same mistaken assumptions; an independent context and explicit review rubric can expose different defects.

Model choice can differ by role. Current documentation offers models with different capability, speed, and cost profiles, and those recommendations change over time [6]. Exploration, implementation, and final review need not use the same policy. What matters is recording which system produced each finding and whether executable checks support it.

Practical routing rules

  • Use CLI when local state and direct tool control dominate.
  • Use the IDE when rapid steering and selected-code context dominate.
  • Use cloud when isolation, reproducibility, duration, or parallel attempts dominate.
  • Use the desktop orchestration layer when coordinating several bounded workstreams dominates.
  • Use review mode as an independent evidence pass, regardless of where implementation occurred.

A handoff is a serialization event

Moving work between surfaces is not simply opening the same conversation elsewhere. Some environmental state must be serialized, and anything omitted becomes an implicit assumption. A defensible handoff bundle contains at least the repository commit or patch, dirty-worktree state, applicable instructions, environment definition, commands already run, complete test outcomes, unresolved failures, permission state, and provenance for external material.

ADVERTISEMENT
A brass plug drawn part-way out of a jack in an exchange frame, the jack's sprung contact caught springing back behind the plug tip while the cord falls slack below
Figure 2. Conversation continuity is not state transfer; whatever the receiving surface cannot reconstruct from artifacts becomes an implicit assumption.Image prompt and art direction by Brecht Corbeel; image generated to that direction.

The receiving surface should be able to answer three questions before continuing: What exact state am I acting on? What has already been established by evidence? Which authorities and resources do I currently possess? Conversation summaries are useful for intent but insufficient for executable state. A summary can say that tests passed while omitting the command, environment, skipped cases, or later edit that invalidated the result.

This makes version control and machine-readable logs more than developer conveniences. They are transport protocols for agent state. When a cloud task returns to an IDE, or a local exploration becomes a review request, reconstruct from artifacts first and prose second. If the transition cannot preserve the relevant evidence, treat the receiving run as a new experiment rather than a continuation.

A task can move between surfaces. The invariant should be a traceable repository state, explicit permissions, reproducible commands, and a reviewable diff. Interface continuity is convenient; evidence continuity is what makes the handoff trustworthy.