Skip to content

Codex Desktop binary replacement and re-signing strategy #3

Description

@shiny-code-bot

Intent

Decide how the Every Code overlay can replace the Codex binary used inside the Codex Desktop app bundle in a way that survives updates of both Codex Desktop and the forked CLI.

Parent: #1

Finish Line

Produce an evidence-backed replacement strategy and viability decision covering:

  • where Codex Desktop stores and launches the bundled Codex binary
  • whether Desktop supports any override path, config, environment variable, app-server endpoint, or channel selector
  • whether binary replacement inside the .app bundle is stable enough across Desktop updates
  • what re-signing is required after replacing the binary
  • whether Gatekeeper/notarization/quarantine/translocation create user-facing friction
  • how to atomically install, verify, roll back, and re-apply after Desktop updates
  • whether the right product shape is a patcher/installer, launch wrapper, stable symlink, app-server bridge, or a first-class Desktop integration request

Current Status

Known from the prior Every Code session and current planning discussion:

  • The Codex binary used by Codex Desktop is inside the Codex Desktop app bundle.
  • The binary can be replaced manually, but replacing it requires re-signing the app bundle.
  • The likely product direction is a tool that replaces and re-signs the binary for users, if this can be made reliable and safe.
  • There may be useful prior-session evidence in /Users/cbusillo/Developer/code rollout/session files. Mine that archive before repeating expensive discovery.

Questions

  • Can re-signing be done locally with ad-hoc signing, or does it require a developer certificate for a usable UX?
  • Does the app continue to run normally after local re-signing on current macOS?
  • Does a Desktop update overwrite the bundle and require re-patching, and can we detect/re-apply safely?
  • Does a CLI update need to replace only one binary, or are supporting resources/protocol schemas bundled too?
  • Can we avoid patching the app bundle by using a shim path, symlink, environment override, app-server endpoint, or launch wrapper?
  • What should the rollback story be if the patched Desktop fails to launch?

Guardrails

  • Start read-only: inspect the installed app bundle and old rollout evidence before modifying anything.
  • Do not patch or re-sign the live app until the strategy and rollback plan are written down.
  • Treat app bundle mutation as a local user operation, not a repo code change.
  • Keep this separate from provider-worker architecture in Provider-agnostic worker decision spike #2.

Metadata

Metadata

Assignees

No one assigned

    Labels

    planDurable planning issueplan:activePlan is actionable now

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions