A small, unofficial macOS launcher for a wider Codex conversation layout. It opens your existing, signed app and applies one stylesheet in memory; it does not modify the official app bundle.
The conversation and composer use 90% of the available conversation area, leaving intentional 5% outer gutters. Markdown tables fill the inner content width. The stylesheet also makes room for the open summary panel, removes one narrow task-title cap, and gives the fixed title header an opaque background. Native padding still applies; “full width” does not mean edge-to-edge.
Real screenshots from the owner's Codex, with private text covered by opaque redaction blocks. Click either image to view it at full resolution.
| Before: narrow conversation column | After: wider conversation and composer |
|---|---|
![]() |
![]() |
These historical screenshots show different content and window heights, not a controlled same-content comparison. The after image uses the earlier 80% preset; today's preset is 90%. No cropping, scaling, or AI regeneration was applied to the source images. See image provenance.
- macOS only. This release does not ship a Windows helper or offer tested Windows support.
- Node.js 22 or newer must be on your terminal's
PATHwhen installing. - This release targets the official OpenAI-signed app at
/Applications/ChatGPT.app, with executableContents/MacOS/ChatGPT. Different bundle paths, includingCodex.app, are not supported; do not rename or re-sign an app to bypass these checks. - This depends on unsupported app internals and can break after an update.
Security tradeoff: this launcher starts the app with a random loopback Chromium debugging port. That endpoint remains open for the app's entire lifetime, even after the helper disconnects and exits. Other local processes may use it to control the app, execute code in its renderer, and access chat data. A random port and loopback binding are not authentication. If that risk is unacceptable, use the stock app. Fully quit the app to close the endpoint. Read SECURITY.md before installing.
Download the repository ZIP and extract it, or clone it:
git clone https://github.com/Akrabut/codex-full-width.git
cd codex-full-widthThen run these commands from the repository directory:
node --version
bash scripts/install.sh --dry-run
bash scripts/install.shDo not use sudo. No npm dependencies need installing. The installer creates:
~/Applications/Codex Full Width.app~/Library/Application Support/CodexFullWidth/with the helper and logs
It pins the resolved Node executable so Finder and Dock launches do not depend
on your shell's PATH. Rerun the installer if a Node upgrade removes or changes
that path. The installer also disables, unloads, and removes the specifically
named legacy local.codex-full-width.helper LaunchAgent, if present. It does
not install a watcher, login item, or background service.
- Quit Codex completely with
Cmd-Q; closing its window is not enough. - Open
~/Applications/Codex Full Width.appin Finder. - Optionally drag that launcher to the Dock.
Your existing account, conversations, projects, and settings remain in the official app's profile. If the app is already running, the launcher refuses to attach and asks you to quit it first.
Normal in-app conversation navigation retains the style. A full renderer reload, renderer crash/replacement, or new window does not reliably retain it. Quit completely and reopen through Codex Full Width to reapply it. There are no reload hooks, app-process signals, or retained helper connections.
To return to the stock layout, fully quit, then open the ordinary app icon. Opening that icon while a styled instance is still running does not reset it.
The installer copies the official app's currently selected Dock icon locally. This is an installation-time snapshot, not an icon watcher. Rerun the installer after changing the selected icon or appearance to refresh it. The repository contains no extracted OpenAI icons or app-bundle assets. The layout examples are sanitized, user-provided screenshots published with permission.
In app versions that expose a Full width pages setting, that setting has been separate from chat width; its behavior may change in later versions.
This is an unsupported local customization, not an OpenAI product setting or an OpenAI-endorsed project. Signature, endpoint, renderer, and width checks refuse unexpected conditions rather than bypassing them. A passing width probe is not proof that every visual layout works. A failed launch may leave the official app running with its debugging port open; quit it before retrying.
The helper exits after bounded startup checks and one-shot injection. This reduces persistent companion work, but does not guarantee lower memory use or prevent app freezes.
npm testFor local macOS and isolated-browser checks, see CONTRIBUTING.md. For errors and logs, see Troubleshooting. Maintainers should read the handover, including the real-app checklist. The initial snapshot's verification record lists tested versions and the live-app acceptance gap.
Quit Codex first, then preview and remove only this launcher's files:
bash scripts/uninstall.sh --dry-run
bash scripts/uninstall.shThis removes the launcher, its support directory and logs, and the named legacy LaunchAgent file. It does not remove the official app or its account/chat data. It does not stop a running app: quit and reopen the ordinary app to clear an active style and close its debugging endpoint.
MIT. OpenAI and Codex names belong to their respective owners; the license does not grant rights to their artwork or other proprietary assets.

