codex-plus-patcher creates a local patched desktop app from an installed OpenAI app by applying version-checked ASAR patch queues. ChatGPT.app is the primary source and produces ChatGPT Plus.app; Codex.app is still supported during the transition period and produces Codex Plus.app. It does not ship OpenAI app binaries.
Codex Plus and ChatGPT Plus are experimental local demonstrators for changes that can be layered onto an installed OpenAI desktop app without redistributing the app itself. The patcher is meant for technically curious users who want to inspect, test, or iterate on small binary patch sets against their own local copy.
The current built-in Codex Plus features are delivered by versioned ASAR patches plus readable runtime plugins:
- rename the copied app and add patch provenance to the About dialog
- expose nested repositories in the Review pane
- add diagnostic detail for selected app-shell errors
- add user-message bubble color controls in Appearance settings
- add adaptive project colors for sidebar projects, grouped threads, pinned threads, user-message accents, and the composer
- show the active project path in the thread header with a copy action
- add the
Toggle sidebar blurcommand palette entry to blur sidebar chat and project names for the current session - add an
Open Developer Toolspanels command for opening the current Codex window's DevTools - add the
Focus project selectorcommand andCmdOrCtrl+.shortcut for new-chat project selection - add a fullscreen Mermaid diagram viewer with zoom controls
The generated app includes a readable Codex Plus runtime under
webview/assets/codex-plus/. Versioned ASAR patches install the runtime,
built-in plugins, and the small Codex core hooks those plugins use. See
Runtime Plugin Support for the currently supported
plugin interfaces and Plugin Architecture for
the layer rules. Use Plugin Debugging for the
side-by-side dev launch and live proof workflow.
The patcher reads the installed ChatGPT.app when present, otherwise Codex.app, verifies the exact app version, bundle version, source family, and original Contents/Resources/app.asar SHA-256, then selects the matching patch queue. Unsupported app versions fail closed so a patch written for one bundle is not applied to a different bundle by accident.
When applying patches, the tool copies the source app to a family-specific target (ChatGPT Plus.app for ChatGPT sources, Codex Plus.app for Codex sources), rewrites selected packed ASAR files with ordered text transforms, adds Codex Plus runtime/plugin assets, updates bundle metadata such as the app name and identifier, refreshes Electron ASAR integrity metadata, and signs the copied app ad hoc. The source app is not modified.
The patch transforms should stay small where possible: their job is increasingly to add reusable plugin interfaces and hook those interfaces into Codex core surfaces, while feature behavior lives in readable runtime/plugin files.
Disclaimer of Warranty and Limitation of Liability
THIS SOFTWARE IS PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. This is a modified, binary-patched demonstrator provided strictly for experimental or demonstration purposes.
The upstream developers, contributors, and maintainers assume NO responsibility or liability for any errors, malfunctions, data loss, or damages—including consequential or incidental damages—arising from the installation or use of this patched version. You use, test, or distribute this patched app at your sole and absolute risk.
The original authors and upstream suppliers are under no obligation to provide support, updates, fixes, or assistance with any issues, mess, or conflicts caused by this modified build.
Install the CLI:
npm install -g codex-plus-patcherOr run it without a global install:
npx codex-plus-patcher applyShow help:
codex-plus-patcherApply built-in patches with defaults:
codex-plus-patcher applyBy default this reads /Applications/ChatGPT.app when present and creates ~/Applications/ChatGPT Plus.app. If ChatGPT is not installed, it falls back to /Applications/Codex.app and creates ~/Applications/Codex Plus.app.
Validate the installed Codex version without copying or signing:
codex-plus-patcher apply --dry-runApply a local development patch queue:
codex-plus-patcher apply --mode dev --patch-dir ./src/patches --target "./work/ChatGPT Plus.app"Apply patches from a GitHub release asset:
codex-plus-patcher apply \
--mode release \
--github-repo OWNER/REPOPrint the machine-readable result:
codex-plus-patcher apply --dry-run --jsonInspect menu-related patch markers in a generated app:
codex-plus-patcher menu-diagnostics \
--asar "~/Applications/ChatGPT Plus.app/Contents/Resources/app.asar"For local development of the CLI wrapper:
npm link
codex-plus-patcher --helpPatch queues export patchSets from index.js. Each patch set declares:
- exact Codex version, bundle version, and original
app.asarSHA-256 - an ordered
patchesarray with stable patch IDs - optional bundle metadata updates for the copied app
- ordered file transforms applied to packed ASAR files
- optional
assetFilesentries added to the packed ASAR, used for runtime code, built-in plugins, and plugin interface assets
Unsupported app versions fail closed.
npm test
npm run check
npm pack --dry-runBusiness logic that can be tested outside Codex lives under src/plus/. The current nested repository TOML parser is shared by tests and the injected worker patch source.
- Install the new
ChatGPT.appor transition-periodCodex.app. - Record
CFBundleShortVersionString,CFBundleVersion, and rawContents/Resources/app.asarSHA-256. - Copy the closest existing patch set in
src/patches/. - Update target chunk filenames and fail-closed anchor strings by inspecting the new ASAR.
- Run
npm test,npm run check, and a dry run. - Apply the patch to a copied app and verify
codesign --verify --deep --strict. - Launch manually and validate the features enabled for that source family. For ChatGPT ports, keep optional UI plugins disabled until current UI evidence and audit screenshots prove they still apply.
The update hook should be implemented as a separate patch in the queue. V1 should detect source app update completion, check GitHub Releases for a matching patch bundle, and offer to repatch ChatGPT Plus.app or Codex Plus.app. Silent auto-apply should be avoided until patch availability and signing failures are handled reliably.



