Two ways to customize Codex, and both take under a minute. A codex theme is a color string you paste into settings — no install. A full codex skin is a one-click installer you run locally. This guide covers both, plus how to verify and safely restore.
A codex theme only changes colors and fonts. Codex supports this natively through a portable codex-theme-v1 string, so there's nothing to install and zero risk.
Use the Codex theme generator to tune colors, then copy the codex-theme-v1:… string.
Launch Codex, press Cmd+, (macOS) or Ctrl+, (Windows) and open Appearance.
Under Dark Theme or Light Theme, click Import and paste your string. The theme applies live — no restart needed.
codeThemeId. See our dedicated fix: Codex theme not showing →A full codex skin adds a character banner, styled sidebar and persona text across the whole window. It installs with a small local engine that injects over loopback CDP — it never modifies the official Codex app bundle, app.asar, or code signature, and it's fully reversible.
After exporting your skin pack, unzip it and:
Double-click "Install Codex Skin.command"
Grant the one-time permission prompt, restart Codex, and your skin is live. A desktop launcher is created for next time.
After exporting your skin pack, unzip it and run:
scripts\install-skin.ps1
Then launch via start-skin.ps1. Restart Codex and the skin applies. Re-run after Codex updates.
Don't have a skin pack yet? Build one in the skin generator → — upload an image, tune it, export the installer.
Every skin pack ships with a one-click restore. If you ever want the plain default Codex back — before a screen-share, or just because — run the uninstaller and Codex returns to stock instantly.
Open Codex home. You should see your banner and styled sidebar, with every native control still clickable. If not, re-run the installer (common after a Codex update).
Run Restore Codex Skin (macOS) or restore-skin.ps1 (Windows). No reinstall of Codex needed, no residue left behind.
127.0.0.1 only, validates the Codex signature before attaching, and touches nothing outside the renderer. Your API keys, projects and model settings are never read.