Skip to content

Level 5: You Run the Software Factory

Level 5 on the autonomy ladder is the software factory: a pipeline where agents pull work from a queue, build and verify it, and open pull requests without a human writing code. Stripe’s Minions merge more than 1,300 pull requests a week (stripe.dev, February 2026). The factory has six stations, intent, harness, loop, graph, verification and release, and this page maps each to what Claude Code, Codex and Cursor ship.

Shapiro’s name for this rung (The Five Levels, January 2026) is the dark software factory, and his description of it is blunt: “It’s a black box that turns specs into software”, where “humans are neither needed nor welcome”. He places a handful of people there, in teams of under five. Treat what follows as an inventory of parts, not a route: the parts are documented, the whole is rare.

The six stations come from splitting the agent pipeline by decision. Intent decides what the agent knows before it starts. Harness decides what it may run. Loop decides when it stops. Graph decides who does what once there is more than one. Verification decides what counts as proof. Release decides how work leaves the building. Every cell below was fetched from the vendor’s own documentation on 28 August 2026; a cell reading not documented as of 2026-08-28 is a gap in the docs, not proof the tool cannot do it.

What does the Intent station need, and what does each tool ship for it?

Section titled “What does the Intent station need, and what does each tool ship for it?”
CapabilityClaude CodeCodexCursor
Persistent project instructionsCLAUDE.md and auto memoryAGENTS.mdRules
Reusable procedureSkillsSkillsAgent Skills
Distributable bundlePluginsPluginsPlugins
Plan before implementingPlan mode/planPlan Mode
Guidance on framing a verifiable objectiveNot documented as of 2026-08-28Long-running workNot documented as of 2026-08-28

The three context files are equivalent in job and different in mechanics: Codex “reads AGENTS.md files before doing any work”, Cursor’s rules “bundle prompts, scripts, and more together”, and Claude Code adds accumulated memory to the file you write. Only Codex publishes advice on the objective itself, and it is the sentence to copy: outcome, constraints, verification.

What does the Harness station need, and what does each tool ship for it?

Section titled “What does the Harness station need, and what does each tool ship for it?”
CapabilityClaude CodeCodexCursor
Permission modesPermission modesPermission modesRun modes
Approval policyAuto modeApprovalsNot documented as of 2026-08-28
Operating-system sandboxSandboxed Bash toolSandbox/sandbox
Lifecycle interceptionHooksHooksHooks
External toolsMCPMCPMCP
Managed remote environmentCloud environmentsCloud environmentBuilds
Self-hosted computeSelf-hosted environmentsNot documented as of 2026-08-28Private workers
Push external events into a live sessionChannelsNot documented as of 2026-08-28Not documented as of 2026-08-28

This is the station a team can actually finish in an afternoon, and the one that decides how much of the rest is safe. Two rows are worth reading closely. Claude Code’s auto mode routes “tool calls through a classifier that blocks anything irreversible, destructive, or aimed outside your environment”, which is a judgement call made by a model; Codex’s approval policy is a named mode — on-request, never, untrusted, granular — which is a judgement call made by you. Both beat an agent running with whatever permissions the last session left behind.

What does the Loop station need, and what does each tool ship for it?

Section titled “What does the Loop station need, and what does each tool ship for it?”
CapabilityClaude CodeCodexCursor
Goal or stop condition/goal/goal/goal
Interval loop/loopAbsent from the command list (checked 2026-08-28)/loop skill, bundled since 3.5 (20 May 2026) — not in the CLI slash-command reference (checked 2026-08-28)
Scheduled unattended runsRoutinesScheduled tasksAutomations
Headless invocationclaude -pcodex execPrint mode
Programmatic SDKAgent SDKCodex SDKTypeScript SDK, Python SDK
Isolated cloud runClaude Code on the webCodex cloudCloud Agents

The triggers differ more than the runners. Claude Code’s routines “run on a schedule, trigger on API calls, or react to GitHub events”, and run “as full Claude Code cloud sessions: there is no permission-mode picker and no approval prompts during a run” — which is exactly why the harness has to be right first. Codex’s automations name Gmail, Slack and GitHub pull request activity as event sources. Cursor’s automations run “on a schedule or in response to events from GitHub, GitLab, Slack, webhooks, Linear, and more”, with Sentry and PagerDuty in the trigger list. If your factory pulls from a queue, that trigger list is the queue.

What does the Graph station need, and what does each tool ship for it?

Section titled “What does the Graph station need, and what does each tool ship for it?”
CapabilityClaude CodeCodexCursor
Delegated subagentsSubagentsSubagentsSubagents
Documented concurrency cap20 per session by defaultConfigurable, no documented defaultNo documented maximum
Subagents on their own machineShare the session’s machine; isolation comes from worktreesNot documented as of 2026-08-28Yes, since 19 August 2026
Peer agents that message each otherAgent teams, experimentalNot documented as of 2026-08-28Not documented as of 2026-08-28
Script-driven orchestrationDynamic workflowsNot documented as of 2026-08-28Not documented as of 2026-08-28
Filesystem isolationWorktreesWorktreesWorktrees
One screen for many agentsAgent viewCodex MicroAgents window
Programmatic fleet controlAgent SDKCodex SDK and app-serverCloud Agents API

Two rows are the state of the art rather than a checkbox. Claude Code’s dynamic workflows “orchestrate many subagents from a script Claude writes and you can rerun”, which is the closest any vendor comes to a factory floor you can version. Cursor’s 19 August 2026 changelog gives subagents “an isolated copy of the project with clean context in its own cloud environment”, which turns fan-out from a context problem into a scheduling one.

What does the Verification station need, and what does each tool ship for it?

Section titled “What does the Verification station need, and what does each tool ship for it?”
CapabilityClaude CodeCodexCursor
Review the local diff/code-review/reviewAgent review
Deep, verified multi-agent reviewUltrareviewNot documented as of 2026-08-28Not documented as of 2026-08-28
Managed pull request reviewCode ReviewGitHub and GitLab reviewBugbot
Security scanningClaude Security pluginCodex SecuritySecurity Agents
Undo or rewindCheckpointingNot documented as of 2026-08-28/rewind
Escalate to a stronger modelAdvisorNot documented as of 2026-08-28Not documented as of 2026-08-28

Nothing in this table is deterministic, and that is the station’s central problem. Ultrareview goes furthest — “every reported finding is independently reproduced and verified” — and still costs roughly $5 to $25 and 5 to 10 minutes per pass. The proof a factory runs on is the boring layer underneath: types, tests, lint, migrations that fail closed. Stripe’s Minions were built on “Stripe’s enormous preexisting battery of tests — over three million of them”, and bound to “at most two rounds of CI” before a human takes the branch back.

What does the Release station need, and what does each tool ship for it?

Section titled “What does the Release station need, and what does each tool ship for it?”
CapabilityClaude CodeCodexCursor
Run in GitHub CIGitHub ActionsCodex GitHub ActionGitHub Actions
Run in GitLab CIGitLab CI/CDGitLabGitLab
React to repository eventsRoutines GitHub triggerCloud tasks from GitHub, GitLab, Linear, SlackAutomations source-control triggers
Trigger from your own systemsRoutines API triggerNot documented as of 2026-08-28Webhook triggers
Outbound notification of run statusNot documented as of 2026-08-28Not documented as of 2026-08-28Webhooks
Route and approve pull requestsNot documented as of 2026-08-28Not documented as of 2026-08-28PR routing and approval
Steer a run from a phoneRemote ControlCodex RemoteMobile

The gap that matters here is the round trip. Claude Code’s routines take an inbound HTTP trigger — “POSTing to the endpoint with the routine’s bearer token starts a new session and returns a session URL” — but publish no outbound webhook; Cursor publishes outbound webhooks with a statusChange event but is the only one of the three documenting a PR approval agent. A factory that cannot tell your systems what happened is a factory you have to poll.

A level belongs to a loop, not to a company, and the same four questions decide every loop. They come from software factories, and they are the rule for which station may run unattended:

  1. What oracle decides “done”? Name the specific thing. “Tests pass” is an oracle. “It looks right” is not.
  2. Can the agent fake it? If the agent can edit the oracle, the oracle is a suggestion. Tests inside the repo fail this question by construction.
  3. How long until a wrong answer surfaces? Seconds is a green light. “A human notices in three weeks” is a red one.
  4. What is the blast radius if it is wrong? Reversible and contained, or a schema migration.

A loop that answers cleanly on all four can run dark today. A loop that fails question 2 or 3 stays lit no matter how good your harness is.

The queue outruns the review capacity. Faros AI measured the shape of this in April 2026 across 22,000 developers: incidents per pull request up 242.7%, median time in review up 441.5%, and 31.3% more pull requests merging with no review. A factory that scales generation without scaling proof produces the same output as a broken one, slightly later.

The oracle drifts into the agent’s reach. Every station that verifies its own work eventually rewrites the check. Keep the decisive validator in CI, in a separate package, or behind a command the run cannot edit.

Unattended runs inherit yesterday’s permissions. Routines run with no approval prompts by design. Whatever the harness allowed the last time you looked is what runs at 3am.

Untrusted text reaches an agent with tools. Issue bodies, pull request comments, webhook payloads and scraped pages are inputs an outsider can write. Wrap them as data, never as instructions, and give the loops that read them the narrowest permissions in the factory.

Nobody owns the whole line. Six stations with six owners and no one reading the seams is how a green pipeline ships a wrong product. That job does not automate; it is the human’s job.