Same model. Different harness. Different output.
On July 11, 2026, Theo (@theo) posted that gpt-5.6-sol runs meaningfully better in Claude Code than in Codex — including better designs in a side-by-side test. His follow-up gripe: set Sol to ultra and every subagent inherits ultra → massive token burn for work that should run on Terra or Luna.
Tibo (@thsottiaux, OpenAI Codex) first asked Theo to "Share the recipe." Then on July 12 he posted the official OpenAI-endorsed version (933K+ views):
"If you aren't yet bold enough to install the Codex app, you can stay in the presence of your orange crab and point it at GPT 5.6 Sol. Takes 5 minutes. Kudos to Theo."
"If this gets blocked, I owe you a reset."
Theo replied 🫡.
This guide leads with Tibo's 3-step recipe, then covers alternative proxies, what each env var does, and how to mix Claude and GPT without wrecking your default setup.
Tibo's official recipe — copy this first
OpenAI's Codex lead posted the shortest path on X (July 12, 7:10 AM):
| Step | Action |
|---|---|
| 1 | Install CLIProxyAPI |
| 2 | Connect — OAuth Codex (and Claude if needed) so CC routes through the proxy |
| 3 | Add the claudex alias below |
Tibo's alias (verbatim)
alias claudex='CLAUDE_CODE_SUBAGENT_MODEL=gpt-5.6-sol \
CLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1 \
CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY=3 \
ENABLE_TOOL_SEARCH=false \
claude --model gpt-5.6-sol'
Add to ~/.zshrc or ~/.bashrc, then source ~/.zshrc and run claudex.
Note: Tibo's alias assumes Step 2 already wired Claude Code → CLIProxyAPI (proxy listening, auth synced). It does not inline ANTHROPIC_BASE_URL — connection lives in proxy config or CC Switch. If requests still hit Anthropic directly, complete Step 2 first.
What each env var does
| Variable | Tibo's value | Purpose |
|---|---|---|
CLAUDE_CODE_SUBAGENT_MODEL | gpt-5.6-sol | Pin subagent model — fixes inherited ultra burn (#31814) |
CLAUDE_CODE_ALWAYS_ENABLE_EFFORT | 1 | Effort controls always on — matches model vs effort guidance |
CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY | 3 | Cap parallel tool calls — stability over blast radius |
ENABLE_TOOL_SEARCH | false | Disable tool-search overhead for leaner sessions |
--model gpt-5.6-sol | CLI flag | Parent session on Sol via proxy |
Theo's shorter tl;dr (same day): CLIProxyAPI + Codex auth + env alias — "Took like 2 prompts (proxy already set up tbf)."
TL;DR — pick your path
| Path | Who endorsed | Upstream | Best for |
|---|---|---|---|
| B — Tibo recipe | OpenAI Codex lead | CLIProxyAPI + ChatGPT OAuth | Most viral thread followers |
| A — claude-code-proxy | Community | API key or Codex OAuth | Cleaner docs, port 18765 |
| C — CC Switch | @Jason_Young1231 | GUI/CLI provider manager | No manual env juggling |
| D — native Codex | OpenAI app | Codex CLI only | Until #31814 fixed |
Theo's claim in one line: weights are OpenAI's; orchestration is Anthropic's — Tibo now ships the bridge officially.
Why harness matters (not just hype)
| Factor | Claude Code | Codex (Jul 2026) |
|---|---|---|
| Subagent effort | Per-agent control; model vs effort split | Ultra on Sol → all subagents ultra (#31814) |
| Workflow | File primitives, .claude/ skills, loops | Subagent-first defaults on Sol |
| Compaction | Tunable via [1m] + AUTO_COMPACT_WINDOW | Context routing quirks on 5.6 |
| Who said so | Theo, Paul Bettner, @hqmank demo | Tibo posted official recipe — "we don't discriminate on the harness" |
Artificial Analysis ranks Sol-in-Codex atop its Coding Agent Index — but that's each lab on its own harness, not Sol cross-swapped. The viral claim is controlled comparison: Sol + CC > Sol + Codex for some builders right now.
Prerequisites
- Claude Code installed (
claude --version) - ChatGPT Plus/Pro with Codex access or billed OpenAI API key with
gpt-5.6-solenabled - Separate terminal session — do not globally overwrite Anthropic settings
- Optional: second ChatGPT account if testing OAuth proxy on Path B
Path B — CLIProxyAPI (Tibo's stack) — expanded
Tibo's recipe uses CLIProxyAPI — OAuth against ChatGPT Codex, exposed as an endpoint Claude Code talks to.
Architecture:
Claude Code → claudex alias → CLIProxyAPI → chatgpt.com/backend-api/codex
Step 1 — Install CLIProxyAPI
Follow upstream README — typically Go binary or Docker. Default listen port is often 8317 (verify your config.yaml).
# Example: clone and build (check repo for current install)
git clone https://github.com/router-for-me/CLIProxyAPI.git
cd CLIProxyAPI
# build + configure per README
Community bootstrap skill: livoras/claudex-gateway-skill automates stack + claudex wrapper scripts.
Step 2 — Connect
- Run Codex OAuth login through CLIProxyAPI (same flow as official Codex CLI)
- Point Claude Code's API base at the proxy — via CLIProxyAPI config,
~/.claude/settings.jsonfor this profile only, or CC Switch (below) - Smoke test:
curlproxy/v1/messagesor runclaude --versionthrough connected session
Typical connection env (if not using CC Switch):
export ANTHROPIC_BASE_URL=http://localhost:8317/v1
export ANTHROPIC_AUTH_TOKEN=freecc # or per your CLIProxyAPI config
Step 3 — Tibo's alias
Use the verbatim alias above. Run claudex with proxy already serving.
Tibo's guarantee: "If this gets blocked, I owe you a reset." — OpenAI acknowledging grey-area risk while endorsing the workflow.
ToS note: OAuth is official; non-OpenAI frontends remain grey area. Tibo's joke signals OpenAI knows builders will try anyway. Secondary ChatGPT account still prudent.
Path C — CC Switch (GUI alternative)
@Jason_Young1231 noted latest CC Switch supports this routing — and vice versa (point Codex at Claude models too).
| Tool | Link | Notes |
|---|---|---|
| CC Switch desktop | ccswitch.io · farion1231/cc-switch | Hot-switch providers, local proxy, v3.16+ |
| CC Switch CLI | SaladDay/cc-switch-cli | cc-switch proxy enable per app |
cc-switch proxy enable # Claude Code proxy on
cc-switch --app claude proxy config --listen-port 15721
cc-switch proxy serve --takeover claude # foreground debug
Then still use Tibo's claudex alias — CC Switch handles connection; alias handles model + subagent tuning.
Path A — claude-code-proxy (API-first alternative)
raine/claude-code-proxy translates Claude Code's Anthropic Messages API into Codex OAuth or OpenAI API calls. Maintained; supports gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna.
Step 1 — Install proxy
# macOS / Linux (Homebrew)
brew install raine/claude-code-proxy/claude-code-proxy
# Or install script
curl -fsSL https://raw.githubusercontent.com/raine/claude-code-proxy/main/scripts/install.sh | bash
Step 2 — Authenticate Codex
claude-code-proxy codex auth login # browser OAuth — ChatGPT account, not API key
claude-code-proxy codex auth status # verify token stored
Step 3 — Start proxy
claude-code-proxy serve
# Listens on http://127.0.0.1:18765
Keep this terminal open. Use --no-monitor if you want plain logs.
Step 4 — Launch Claude Code through proxy (one session)
ANTHROPIC_BASE_URL=http://localhost:18765 \
ANTHROPIC_AUTH_TOKEN=unused \
ANTHROPIC_MODEL=gpt-5.6-sol[1m] \
ANTHROPIC_SMALL_FAST_MODEL=gpt-5.6-luna[1m] \
CLAUDE_CODE_AUTO_COMPACT_WINDOW=372000 \
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK=1 \
claude
Verify: ask "What model are you?" — should report Sol routing. Check proxy monitor for upstream gpt-5.6-sol.
Step 5 — Extended claudex alias (proxy + Tibo vars)
Combine Tibo's subagent vars with proxy routing:
claudex() {
ANTHROPIC_BASE_URL=http://localhost:18765 \
ANTHROPIC_AUTH_TOKEN=unused \
ANTHROPIC_MODEL=gpt-5.6-sol[1m] \
ANTHROPIC_SMALL_FAST_MODEL=gpt-5.6-luna[1m] \
CLAUDE_CODE_AUTO_COMPACT_WINDOW=372000 \
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK=1 \
CLAUDE_CODE_SUBAGENT_MODEL=gpt-5.6-sol \
CLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1 \
CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY=3 \
ENABLE_TOOL_SEARCH=false \
claude --model gpt-5.6-sol "$@"
}
Usage:
claude-code-proxy serve & # background proxy
claudex # GPT-5.6 Sol session
claude # normal Anthropic session (unchanged)
Critical: env vars are per-shell — default claude stays on Fable/Sonnet/Opus (the orange crab's native diet).
Path A notes — when to use claude-code-proxy instead
Use Path A if you want billed OpenAI API (no subscription grey area) or Homebrew install without CLIProxyAPI. Tibo's recipe is the social default; Path A is the compliance default.
Model & effort mapping — avoid token burn
| Task | Model in proxy | Effort |
|---|---|---|
| Orchestration / hard bugs | gpt-5.6-sol[1m] | medium–high |
| Fast edits | gpt-5.6-terra[1m] | medium |
| Background / titles | gpt-5.6-luna[1m] | low |
| UI / taste | Real Fable via claude | default effort |
Theo's ultra bug (native Codex): Sol ultra → subagents ultra. Workaround in CC: spawn subagents with explicit cheaper model ids via your proxy's model routing — CC lets you set effort per delegation in ways Codex currently doesn't.
Append -fast to model name for Codex priority tier: gpt-5.6-sol-fast.
Mixing Claude + GPT in one workflow
┌─────────────────────────────────────────────────┐
│ claude → Anthropic API → Fable / Sonnet │
│ claudex → proxy → GPT-5.6 Sol │
│ codex → OpenAI CLI → native Codex │
└─────────────────────────────────────────────────┘
Patterns that work:
| Pattern | Flow |
|---|---|
| Plan / execute split | Fable plans in claude → Sol grinds bugs in claudex |
| Advisor | /advisor fable on Anthropic; swap executor env to Sol |
| Compare harnesses | Same prompt, claudex vs codex — Theo's experiment |
| Budget guard | Luna for reads; Sol only when tests fail |
@hqmank posted a 31s screen recording of Sol inside CC via CLIProxyAPI — useful smoke-test reference.
@madhavajay/alex — multi-subscription router with trace inspection; supports cross-routing Fable ↔ Codex for power users.
Native alternative — Codex inside Claude Code without proxy?
@Jon_Slemp asked: "Why do this when there's already a way to invoke codex via CC?"
Some teams use MCP bridges or OpenAI's official Codex integration paths — check your Claude Code version's /help and Codex vs Claude Code for native invoke. Proxy routing remains the popular Jul 2026 path because it swaps the entire model backend while keeping CC's harness — not just one tool call.
Troubleshooting
| Symptom | Fix |
|---|---|
400 on haiku background calls | Set ANTHROPIC_SMALL_FAST_MODEL=gpt-5.6-luna[1m] |
| Early compaction | Add [1m] suffix + CLAUDE_CODE_AUTO_COMPACT_WINDOW=372000 |
| Proxy won't start | Re-run codex auth login; check port 18765 free |
| Still on Claude weights | Echo $ANTHROPIC_BASE_URL — must be localhost proxy |
| Token burn | Drop ultra; use Terra/Luna subagents; see #31814 |
| Account worry | Path A API key, or secondary ChatGPT for Path B |
What to watch
- Codex #31814 fix — Tibo's
CLAUDE_CODE_SUBAGENT_MODELis the CC-side workaround today - Tibo "reset" promise — if OpenAI blocks proxy routing, community watches for official path
- Theo's design test — reproducible harness A/B benchmark
- July 19 Fable cliff — credits vs Sol weekly-only experiment (Anthropic · OpenAI 5h removal)
- CC Switch updates — GUI routing may absorb Tibo's manual steps
Related on explainx.ai
- Codex vs Claude Code — developer verdict
- Claude Code model vs effort
- GPT-5.6 vs Fable 5 comparison
- GPT-5.6 Sol preview — pricing & tiers
- Fable advisor orchestrator patterns
- How to run GLM 5.2 in every harness
- Why AI companies want you using agents — token economics
- JPMorgan AI agents — same vendor stack, different domain
Sources: @theo Jul 11–12, 2026 · @thsottiaux Jul 12 claudex recipe · CLIProxyAPI · CC Switch · raine/claude-code-proxy · openai/codex#31814
Proxy ports, model ids, and OAuth flows reflect July 2026 community tooling — verify against upstream READMEs before production use. Not affiliated with Anthropic or OpenAI.
