macOS Codex app updater times out waiting for Sparkle progress helper
What version of the Codex App are you using (From “About Codex” dialog)?
Before update: 26.415.40636, build 1799. After workaround: 26.422.21637, build 2056.
What subscription do you have?
Pro
What platform is your computer?
Darwin arm64 arm64; macOS 26.3; Apple Silicon / M4 Pro
What issue are you seeing?
The Codex desktop app repeatedly failed to update in-app with:
An error occurred while running the updater. Please try again later.
The repeated Sparkle error was:
Error Domain=SUSparkleErrorDomain Code=4005
NSUnderlyingError = Error Domain=SUSparkleErrorDomain Code=10 "Timeout: agent connection was never initiated"
I used Codex itself to troubleshoot the failure locally by inspecting Codex logs, Sparkle logs, macOS unified logs, launchd behavior, and code-signing state.
The update eventually succeeded only when I repeatedly forced Codex's Sparkle progress helper to start during the update window:
launchctl kickstart -k gui/<uid>/com.openai.codex-sparkle-progress
That points to a Sparkle helper launch/ordering issue rather than a damaged app bundle or a simple permissions problem.
What steps can reproduce the bug?
- Open Codex desktop on macOS.
- Trigger the in-app update flow.
- Wait for Sparkle/Autoupdate to run.
- The update downloads, extracts, and verifies, but then fails with the generic updater error.
Observed log sequence from redacted unified logs:
Codex activates: com.openai.codex-spki
launchd spawns: com.openai.codex-sparkle-updater
Autoupdate starts and registers:
com.openai.codex-spki
com.openai.codex-spkp
Autoupdate extracts the update ZIP
Autoupdate verifies: OK: EdDSA signature is correct
Autoupdate later logs:
Error: Timeout: agent connection was never initiated
Codex later activates:
com.openai.codex-spks
launchd spawns:
com.openai.codex-sparkle-progress
Updater starts too late and fails to look up:
com.openai.codex-spkp
with:
No such process
Updater logs:
Agent failed..
Agent Invalidating without having the chance to reply to installer
The workaround was to keep com.openai.codex-sparkle-progress alive/started while the update was running. After that, the update completed successfully.
What is the expected behavior?
The in-app updater should download, verify, install, and relaunch Codex without requiring manual download or launchd intervention.
Additional information
I have a redacted support bundle ready to attach:
codex-updater-bug-report-20260424-minimal-redacted.zip
It excludes full Codex desktop logs and only includes redacted updater-specific excerpts. I scanned it for usernames, local paths, repo names, SSH paths, GitHub hostnames, emails, auth headers, tokens, passwords/secrets, session/request/conversation IDs, and private LAN IPs before preparing it.
The installed app bundle and the transient cached Sparkle Updater.app both verified successfully with codesign/spctl. The failure appears to occur after archive extraction and EdDSA verification, during the helper/XPC handoff.
3 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Thanks. I reviewed #17413. It looks related, but I do not think it is an exact duplicate.
#17413 appears to describe an updater hang after clicking Update: the app/updater processes remain idle, the app does not quit/relaunch cleanly, and there is no visible error dialog.
This issue has a narrower failure mode: Sparkle reports
SUSparkleErrorDomain Code=4005, with underlyingCode=10 "Timeout: agent connection was never initiated". The redacted logs showAutoupdateregisterscom.openai.codex-spki/com.openai.codex-spkp, extracts and verifies the update ZIP successfully, then times out before thecom.openai.codex-sparkle-progresshelper connects. When the progress helper later starts, it fails to look upcom.openai.codex-spkpbecause that process is already gone.The workaround that made this update succeed was repeatedly kickstarting
com.openai.codex-sparkle-progressduring the update window, which suggests a helper launch/ordering issue rather than the idle hang described in #17413.Happy to have this linked as related, but I think it is useful to keep separate unless maintainers want one broader “macOS Sparkle updater handoff failures” tracking issue.
This may be related: https://github.com/openai/codex/issues/18874