ChatGPT Patcher is a macOS tool that patches the official ChatGPT / Codex desktop app with a custom model slider, optional profile-menu cleanup, optional OpenCode Go models, and a safe patched copy workflow — without modifying your original installation.
Customize the ChatGPT model picker on Mac, reorder reasoning-effort points, hide unused models, and build a verified ChatGPT (Patched).app you can launch from Finder.
Use the native ChatGPT Patcher app to pick a source app, choose where to save the patched copy, select features, and build a verified bundle you can launch from Finder.
Original Codex app → staged copy → patch & verify → ChatGPT (Patched).app
(unchanged) (hidden) (Node.js) (your output)
Requirements: macOS, Node.js (including npx), and an unmodified Codex app.
- Double-click
Scripts/launch-chatgpt-patcher.command, or run it from Terminal. - Choose the original Codex app as the source (the patcher auto-detects apps in common
Applicationsfolders). - Pick a save location — the default output name is
ChatGPT (Patched).app. - Select one or more features to patch.
- Click Patch & verify, then open the generated copy.
Quit Codex before patching or launching the patched copy. Both apps share the same UI profile and history database; running them at the same time can cause conflicts.
The launcher builds the native UI with Swift (no Xcode required) and bundles all patch scripts inside the app.
Pushing a semantic-version tag such as v1.2.3, or choosing Run workflow and entering a version, starts the GitHub Actions release workflow. It builds a universal macOS app bundle for Apple silicon and Intel, publishes ChatGPT-Patcher-macos.zip, and publishes its SHA-256 checksum alongside it.
The native patcher checks the repository’s latest GitHub release when it opens. If a newer release is available, choose Update in the top-right corner; the downloaded archive is checksum-verified, installed, and reopened automatically. If the app is running from a protected folder such as /Applications, the updater falls back to ~/Applications when needed.
| Feature | What it does |
|---|---|
| Custom Model Slider & Configuration | Replaces the composer model slider with a curated catalog, adds a Model slider settings tab, and lets you reorder, hide, and restore points. |
| Hide Profile Menu Items | Removes Show pet and Invite a friend from the Codex account / profile dropdown. |
| OpenCode Go Provider & Models | Embeds a localhost Responses-to-Chat-Completions adapter and 22 third-party models as a separate per-thread provider, without changing your global ~/.codex config. |
You can enable any combination of features. At least one must be selected before patching.
Removes clutter from the Codex account menu (the popup opened from your avatar / username in the sidebar):
- Show pet / Hide pet
- Invite a friend / Invite a coworker
Usage remaining, Settings, and Log out stay available. This only changes the profile dropdown in the patched copy — command-palette and native menu pet entries are left alone.
The model picker slider in Codex is replaced with a hand-picked set of GPT-5.6 points. A new Model slider tab appears in Settings, alongside General and Account.
Default active slider (left → right):
| Model | Effort levels on slider |
|---|---|
| 5.6 Luna | medium, high, xhigh, max |
| 5.6 Sol | low, medium, high, xhigh, max |
Available in Settings (not enabled by default):
| Model | Effort levels |
|---|---|
| 5.6 Luna | low |
| 5.6 Terra | low, medium, high, xhigh, max |
The default selected point when opening the picker is 5.6 Sol — medium.
Settings UI capabilities:
- Active slider — drag cards left/right or use arrow controls to set the exact sequence shown in the composer.
- Available points — removed points stay here; click + to add them back. Use the search field to filter by model name or effort level.
- Apply changes — saves your layout to local storage and updates the running app live. Reopen the model picker to see the new sequence.
- Reset — restores the built-in default layout.
OpenAI remains the default provider. New GPT threads continue to use the built-in openai provider.
When the OpenCode Go feature is also enabled, its models are added to the Available points catalog but are not placed on the default slider track — you add only the ones you want.
Reasoning effort by model (OpenCode catalog):
- Most OpenCode models expose no effort choices.
- GLM-5.2 — high, max
- DeepSeek V4 Pro — max
- Kimi K3 — low, high, max
Adds OpenCode Go as an isolated provider inside the patched app bundle. Your installed Codex app, terminal Codex, and ~/.codex/config.toml are never modified.
Included models (22):
GLM-5, GLM-5.1, GLM-5.2, Kimi K2.5, Kimi K2.6, Kimi K2.7 Code, MiMo V2 Pro, MiMo V2 Omni, MiMo V2.5 Pro, MiMo V2.5, MiniMax M2.5, MiniMax M2.7, MiniMax M3, Qwen 3.5 Plus, Qwen 3.6 Plus, Qwen 3.7 Plus, Qwen 3.7 Max, DeepSeek V4 Pro, DeepSeek V4 Flash, HY3 Preview, Kimi K3, Grok 4.5
How it works:
- A localhost adapter translates OpenAI Responses API calls to Chat Completions for OpenCode Go.
- The adapter starts on demand when the patched app's bundled Codex runtime needs it.
- The patched copy gets its own bundle identifier and Chromium data directory so it does not collide with a running stock app.
- Projects, chats, settings, and authentication from your normal Codex profile remain available.
Authentication is read from:
- The
OPENCODE_GO_API_KEYenvironment variable, or - The
opencode-goentry created byopencode auth login --provider opencode-go
New threads started with an OpenCode model are routed to the separate opencodego provider.
When the model slider feature is enabled, the patcher also adds a toggleable Development Build banner at the top of the window.
- Click the banner to hide it.
- Click the small Dev hint (bottom-right) to show it again.
The banner uses pure CSS (no extra JavaScript), so it works regardless of content security policy.
The patcher never edits your source app. It always works on a disposable staging copy.
flowchart LR
A[Select source app] --> B[Copy to staging bundle]
B --> C[Extract app.asar]
C --> D[Patch JavaScript bundles]
D --> E[Patch index.html banner]
E --> F[Repack & verify]
F --> G[Update ASAR integrity hash]
G --> H[Embed OpenCode runtime]
H --> I[Sign & clear quarantine]
I --> J[Publish to output path]
Safety guarantees:
- The original app bundle is never modified.
- Patches are verified (JavaScript syntax check, slider array presence, settings bootstrap, banner) before the output is published.
- The output replaces the previous patched copy only after verification succeeds.
- Electron's
ElectronAsarIntegrityhash inInfo.plistis updated so the app can launch. - The patched copy is ad-hoc signed and quarantine metadata is cleared.
Use an original, unmodified Codex app as the source. An already-patched or ad-hoc-signed source can trigger Keychain identity prompts.
You can run the patch worker directly without the native UI:
# Patch the default local copy (ChatGPT-Hello.app in the project root)
./Scripts/patch-model-slider.sh
# Patch a specific app bundle
./Scripts/patch-model-slider.sh /path/to/Codex.app
# Enable only the model slider
PATCHER_FEATURES=custom-model-slider ./Scripts/patch-model-slider.sh /path/to/Codex.app
# Enable only OpenCode Go
PATCHER_FEATURES=opencodego-provider ./Scripts/patch-model-slider.sh /path/to/Codex.app
# Enable both features
PATCHER_FEATURES=custom-model-slider,opencodego-provider ./Scripts/patch-model-slider.sh /path/to/Codex.appRe-run the patch script after every Codex app update to re-apply modifications. If OpenAI changes internal bundle structure or model names, the script exits without modifying anything and prints a warning.
Scripts/
├── launch-chatgpt-patcher.command # Double-click launcher
├── patch-model-slider.sh # Core ASAR patch worker
├── install-opencodego-provider.sh # Embeds OpenCode Go runtime
├── uninstall-opencodego-provider.sh # Restores original Codex launcher in a patched app
├── opencodego-*.js / .json / .sh # OpenCode Go adapter, auth, models, runtime
└── ChatGPTPatcher/
├── ChatGPTPatcher.swift # Native macOS UI
├── build-app.sh # Builds ChatGPT Patcher.app
└── ChatGPT Patcher.app # Self-contained patcher application
- Quit Codex completely.
- Re-run the patcher against the new, unmodified Codex app as the source.
- Let it replace your existing
ChatGPT (Patched).app.
Your model slider layout is stored in the app's local storage and persists across re-patches as long as the storage key namespace has not changed.
| Issue | What to try |
|---|---|
| Patch fails with "Could not find slider arrays" or "default-point helper" | Codex was updated with a new bundle layout. Use the latest patcher scripts and an unmodified source app. |
| Keychain identity prompts on launch | Source app may already be patched or ad-hoc signed. Start from a fresh Codex install. |
| Patched app won't open | Ensure Node.js was available during patching. Re-run the patcher and check the log for verification errors. |
| OpenCode models don't respond | Confirm OPENCODE_GO_API_KEY or opencode auth login --provider opencode-go is configured. |
| Stock and patched apps conflict | Quit the stock app before opening the patched copy. |
To remove the OpenCode Go runtime from an already-patched app (without touching global config):
./Scripts/uninstall-opencodego-provider.sh /path/to/ChatGPT\ \(Patched\).appClone this repo, run Scripts/launch-chatgpt-patcher.command, enable Custom Model Slider & Configuration, and build a patched copy. Then open Settings → Model slider in the patched app to reorder, hide, or restore model points.
Enable OpenCode Go Provider & Models in the patcher, build your patched copy, and authenticate with OPENCODE_GO_API_KEY or opencode auth login --provider opencode-go. OpenCode models appear in the model picker as a separate per-thread provider.
No. The patcher always works on a staged copy. Your source app in /Applications stays untouched.
Yes. Re-run the patcher against the new unmodified Codex app after each update to re-apply modifications.
5.6 Luna (medium–max) and 5.6 Sol (low–max). Settings also offers 5.6 Luna — low and 5.6 Terra — low through max as optional points.
This project modifies a third-party application for personal use. It is not affiliated with or endorsed by OpenAI. Use at your own risk, and keep a backup of your original Codex app.


