RuntimeWire found a new pull-request automation in the latest production desktop build that repeatedly checks GitHub, fixes CI failures and merge conflicts in an isolated worktree, pushes repairs, and can keep going until the PR merges.
By Ryan Merket · Published
RUNTIMEWIRE INVESTIGATION — Scoop
Original reporting by RuntimeWire, based on reverse engineering.
Why it matters #
Coding agents are moving from one-shot code generation into persistent ownership of delivery. Codex's heartbeat targets the costly last mile: keeping a PR green and mergeable while CI and the base branch continue changing.
Reporting record #
Finding
OpenAI’s latest production desktop build contains a new “Watch and fix” pull-request automation that attaches a 10-minute heartbeat to a Codex task, repeatedly checks the live PR state, fixes relevant CI failures and merge conflicts, pushes repairs, and can optionally continue until the pull request is merged.
How we verified
Methods: reverse engineering.
RuntimeWire found user-facing settings titled “Watch and fix pull requests” in OpenAI desktop version 26.901.20858, build 7658, alongside controls for “Auto-merge when ready” and custom “Pull request watch instructions.” The implementation creates an automation of type heartbeat named Auto-fix PR #<number>. When first activated, the child task is told: “Begin automatically fixing PR #<number>” and that a 10-minute heartbeat will continue checking the pull request until the task is complete or blocked. The default automation instructions direct Codex to inspect the latest PR state with gh, including mergeability and current checks; repair failing checks caused by the PR; resolve merge conflicts with the base branch; use logs and CI annotations before editing; perform mutations inside an isolated git worktree; commit and push repairs to the PR branch; re-check live GitHub state rather than relying on earlier turns; and revisit pending checks on the next 10-minute heartbeat. When the user enables automatic merging, the embedded instructions tell Codex to merge once required checks pass and the PR is mergeable. If merging fails, Codex is instructed to diagnose the failure, update the branch when needed, retry, and continue until the PR is merged or closed. The previous production package RuntimeWire analyzed was version 26.820.60940, build 7119. Exact searches of that baseline for the new PR-watch configuration keys and related automatic-fix markers returned no matches.
RuntimeWire analyzed the distributed OpenAI desktop application package for version 26.901.20858/build 7658, extracted and searched its Electron and bundled frontend code, traced the user-facing pull-request settings into their stored configuration keys, and followed the automatic-fix implementation through automation creation, task setup, heartbeat scheduling, PR-state inspection instructions, worktree behavior, push behavior and optional merge logic. RuntimeWire compared those identifiers against its earlier production desktop package, version 26.820.60940/build 7119, and searched OpenAI’s public product documentation, release material and current Codex descriptions for the same “Watch and fix” feature. We also compared its behavior with publicly documented competing PR automation.
Tested versions: OpenAI desktop 26.820.60940 / build 7119 — prior production baseline OpenAI desktop 26.901.20858 / build 7658 — Watch and fix implementation present.
Reproduction
RuntimeWire partially reproduced the finding.
Inspect OpenAI desktop 26.901.20858 / build 7658. Search the package for: settings.git.pullRequestWatch.title Verify its default message: Watch and fix pull requests Locate the stored settings: git-pr-watch-auto-merge git-pr-watch-instructions Verify the associated internal descriptions: Whether watched pull requests are merged when ready Custom instructions for watching and fixing pull requests Locate the PR automatic-fix module. Verify that it creates: kind: heartbeat name: Auto-fix PR #<number> Verify that the recurrence interval resolves to 10 minutes. Verify the initial task text begins: Begin automatically fixing PR #<number>. Verify that the prompt explicitly instructs Codex to repair PR-caused failing checks and base-branch merge conflicts, use an isolated worktree, commit and push fixes, and re-check GitHub state on subsequent heartbeat runs. Enable the auto-merge preference in code/config and verify that the generated prompt adds instructions to merge once checks pass and continue retrying failed merge attempts. RuntimeWire has not yet run the feature end-to-end against a live GitHub pull request, so this should remain Partially Reproduced.
File hashes
sha256:09c7ef96b5d524fef9b76270de216cf6d661ffad4727680a9b9631d18795183d app.asar
Company response
RuntimeWire requested comment; the company had not responded by publication time.
OpenAI's current production desktop package contains a "Watch and fix" mode that assigns a persistent Codex task to a pull request, wakes it every 10 minutes, and tells it to repair the branch until the work is complete or blocked.
RuntimeWire found the feature in OpenAI desktop version 26.901.20858, build 7658. Its user-facing controls include "Watch and fix pull requests," "Auto-merge when ready," and a field for custom pull-request watch instructions.
The implementation gives each watched PR a child automation classified as a heartbeat and named "Auto-fix PR #<number>." The first turn tells Codex to begin fixing the PR and explains that a 10-minute heartbeat will keep checking it until the task finishes or hits a blocker.
That architecture matters because Codex does not hold open one model turn while waiting for GitHub. The task wakes again on a schedule, reads the live PR state, acts when something changed, and otherwise stays quiet. Pending CI checks are left for the next heartbeat rather than handled with a sleep loop inside an active turn.
What Codex does when it wakes up
The embedded instructions direct Codex to use GitHub's gh
command-line tool to inspect mergeability and current checks. It must start with CI logs and annotations, focus its edits on failures caused by the PR, and resolve conflicts with the base branch.
When a repair requires code changes, Codex is told to leave the developer's active checkout alone and create an isolated git worktree. It then makes a narrow fix, runs relevant verification, commits the change, pushes it to the PR branch, and cleans up the temporary worktree when safe.
Each heartbeat must re-read GitHub instead of trusting state retained from an earlier turn. That instruction addresses a basic problem with long-running coding agents: a correct diagnosis can become stale as other commits land, checks finish, or the base branch moves.
The feature also defines a stopping condition. If Codex needs a decision or credential from the developer, it should ask one concise question, explain the blocker, and the heartbeat rather than repeatedly attempting the same action.
RuntimeWire traced the settings, automation creation, task prompt, recurrence interval, worktree behavior, push instructions, and optional merge logic in the distributed application package. The analyzed archive was 298,996,178 bytes and had the SHA-256 hash 09c7ef96b5d524fef9b76270de216cf6d661ffad4727680a9b9631d18795183d
.
The finding is partially reproduced. RuntimeWire verified the complete implementation path inside the package, but has not run Watch and fix end-to-end against a live GitHub pull request. Its presence in the package therefore establishes the product code and intended behavior, rather than account-level availability or successful operation for every Codex user.
Auto-merge changes the terminal state
Automatic merging is a separate preference and defaults to off. With that setting disabled, Codex is told to repair the branch and leave the merge to the developer unless custom instructions say otherwise.
With auto-merge enabled, Codex receives a more aggressive mandate. Once required checks pass and the PR becomes mergeable, it should merge. A failed attempt sends the agent back through diagnosis, branch updates, and another merge attempt. The heartbeat s after the PR is merged or closed.
That turns "green" into an intermediate state. Codex can own the loop from a failed check through a pushed repair and, when authorized, continue until GitHub records the merge.
OpenAI has already shipped automatic Codex reviews that analyze pull requests and let developers ask the agent to implement recommended edits. The company also added support for updating existing pull requests after follow-up instructions. Watch and fix removes another developer prompt from that sequence by giving the repair task its own recurrence schedule.
OpenAI is productizing its internal PR shepherd
OpenAI has publicly described a similar operating model inside its engineering organization. Its Symphony orchestration system assigns agents persistent workspaces, watches tasks on a fixed cadence, and restarts work that stalls. OpenAI said Symphony increased landed pull requests by 500% on some teams, a company-reported figure tied to its internal deployment.
Watch and fix appears to bring a narrower version of that continuous-agent model into the Codex desktop product. The unit of work is a pull request rather than an issue-tracker ticket, and the objective is tightly bounded: keep the branch healthy, resolve conflicts, and optionally get it merged.
Anthropic already offers overlapping Claude Code workflows. Its current desktop documentation describes a CI status bar that polls check results, along with Auto-fix and Auto-merge toggles. Anthropic's web Auto-fix workflow also watches pull-request events, investigates failed checks or review comments, and can push a clear fix.
OpenAI's 10-minute heartbeat is therefore an implementation detail, not evidence that Codex uniquely solves a documented limitation in Claude Code. Without an authoritative Anthropic source establishing a specific merge-conflict gap, the supported conclusion is narrower: Watch and fix gives Codex a recurring task that re-reads GitHub, repairs the branch, and can retain responsibility until the pull request merges or closes.
RuntimeWire contacted OpenAI for comment and will update this story if a response eventually completes the round trip.