{"slug": "why-gpt-models-sucked-at-ui", "title": "Why GPT Models Sucked At UI", "summary": "A developer discovered that OpenAI's Codex model manifest for GPT-5.5 contained a large frontend guidance block with specific UI rules, suggesting that GPT's perceived poor UI taste may stem from hidden harness instructions rather than model capability. The developer argues that comparing Claude Code vs Codex often compares the full harness, not just model intelligence, and urges developers to review their own agent files like AGENTS.md and CLAUDE.md to avoid outdated steering.", "body_md": "I had this default belief for a while:\n\nClaude/Opus for UI.\n\nCodex/GPT for code.\n\nAnd honestly, I think a lot of devs had some version of that in their head too.\n\nClaude Code usually felt more tasteful.\n\nCodex frontend output had that same repeated smell:\n\ncards everywhere,\n\ngeneric dashboard polish,\n\nsame-ish layouts,\n\nsame-ish \"AI app\" vibe.\n\nSo the easy conclusion was:\n\nGPT just sucks at UI.\n\nBut after watching [Theo's video](https://www.youtube.com/watch?v=Noo0NWD0gHU) and checking [OpenAI's own Codex model manifest](https://github.com/openai/codex/blob/main/codex-rs/models-manager/models.json), I don't think that explanation is clean enough anymore.\n\nGPT-5.5 inside Codex had a huge frontend guidance block sitting in the harness.\n\nNot just \"make the UI good\".\n\nActual rules around:\n\nThat stuff should not be global hidden law.\n\n\"Use icons\" depends on the product.\n\n\"Don't make this kind of hero\" depends on the page.\n\n\"Cards should be this radius\" is not something every repo should inherit because a model manifest said so.\n\nSo when people say \"GPT has bad UI taste\", the fairer question is:\n\nwhat exactly did Codex tell it to do before my prompt even started?\n\nWhen we compare Claude Code vs Codex, we are usually not comparing just model intelligence.\n\nWe are comparing the full harness around the model:\n\nSame model in a different harness can feel like a different product.\n\nThat is why Theo's experiment was interesting to me.\n\nHe ran GPT-5.6 Sol through a Claude Code-like setup using [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI), and the output looked much better than the usual Codex UI reputation would make you expect.\n\nNot a perfect benchmark.\n\nStill useful.\n\nBecause it separates two things people usually collapse into one:\n\nAlso, GPT is clearly not helpless at React.\n\n[ReactBench](https://www.reactbench.com/) currently has GPT models scoring extremely well on realistic React tasks.\n\nSo the model being bad at React is not the clean explanation.\n\nI checked the current public Codex manifest again before updating this post.\n\nThe old GPT-5.5 entry still has that frontend block.\n\nThe current GPT-5.6 Sol entry does not seem to have that exact same block in the public manifest.\n\nSo I am not claiming the latest ChatGPT/Codex app still behaves exactly like old GPT-5.5 Codex.\n\nThat would need separate product-level proof.\n\nWhat I am saying is simpler:\n\nthis was real public Codex config, and it is a very good example of how much the wrapper around a model can change the model's perceived taste.\n\nAnd since this whole thing is basically about prompts steering models, this is a good time to look at your own setup too.\n\nOpen your `AGENTS.md`\n\n, `CLAUDE.md`\n\n, custom instructions, and skills.\n\nNot as some productivity ritual.\n\nFor the same reason this Codex thing matters:\n\nhidden instructions steer outputs.\n\nA rule you added six months ago because GPT-4 kept doing something annoying might be actively hurting a newer model now.\n\nA giant `CLAUDE.md`\n\nthat keeps repeating old architecture notes, dead commands, stale style opinions, and random preferences is not harmless.\n\nIt is context.\n\nIt is steering.\n\nClaude's own docs say `CLAUDE.md`\n\ngets loaded into context, and that memory works better when instructions are specific, concise, and periodically reviewed.\n\nSo yeah, go look at yours.\n\nI would bet a lot of people have rotten agent files they have not read in months.\n\nAnd then we blame the model.", "url": "https://wpnews.pro/news/why-gpt-models-sucked-at-ui", "canonical_source": "https://dev.to/pranavbobde/maybe-gpt-wasnt-the-ui-problem-38ag", "published_at": "2026-07-22 11:16:36+00:00", "updated_at": "2026-07-22 12:00:23.475258+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "developer-tools"], "entities": ["OpenAI", "Codex", "Claude", "GPT-5.5", "GPT-5.6 Sol", "Theo", "CLIProxyAPI", "ReactBench"], "alternates": {"html": "https://wpnews.pro/news/why-gpt-models-sucked-at-ui", "markdown": "https://wpnews.pro/news/why-gpt-models-sucked-at-ui.md", "text": "https://wpnews.pro/news/why-gpt-models-sucked-at-ui.txt", "jsonld": "https://wpnews.pro/news/why-gpt-models-sucked-at-ui.jsonld"}}