Codex / ChatGPT coding with ChatGPT, Claude & SuperGrok
Point Codex CLI and ChatGPT desktop coding at the Inja LLM Gateway using ~/.codex/config.toml and your consumer subscriptions.
Last updated: 2026-08-28
Use Codex CLI and ChatGPT desktop coding / Codex mode with the same local gateway as Claude Code: ChatGPT Plus/Pro (Codex OAuth), plus Claude and SuperGrok when those logins are present.
The ChatGPT chat UI often ignores a custom provider (product limitation). The supported path is anything that reads ~/.codex/config.toml (Codex CLI, many ChatGPT coding agent surfaces).
Codex CLI / ChatGPT coding
│ OpenAI-compatible ~/.codex/config.toml
▼
llm-gateway https://127.0.0.1:8787/v1
├── ChatGPT subscription (Codex OAuth)
├── SuperGrok (device / Grok CLI OAuth)
└── Claude subscription (translated)Related: Claude app · Claude Code · Cursor · Any app · OAuth
Prerequisites
llm-gateway helpers install
eval "$(llm-gateway helpers source)"
llm-gateway auth login chatgpt # ChatGPT Plus/Pro via Codex OAuth
# optional: llm-gateway auth import grok
# optional: llm-gateway auth login claude
llm-gateway auth status
export KEY=local-dev
cc-gateway-up # https://127.0.0.1:8787Prefer mkcert -install so Node/Electron trusts local HTTPS. Cert path after helpers install:
~/.config/inja-gateway/certs/localhost.pemKEY=local-dev is the edge credential Codex sends to the gateway. Subscription tokens stay in the gateway auth store (~/Library/Application Support/inja-gateway/credentials.json on macOS).
ToS: personal accounts you own only.
One-command write
export KEY=local-dev
apps-write-codex # snapshots ~/.codex/config.toml, then writes gateway provider
# or: apps-use-gateway # Claude settings + Desktop + Codex togetherThen in this shell (and your login shell / launchd if you start Codex from the Dock):
export INJA_GATEWAY_KEY=local-dev
export NODE_EXTRA_CA_CERTS="$HOME/.config/inja-gateway/certs/localhost.pem"
codexRollback:
apps-use-default~/.codex/config.toml
Template: examples/apps/codex/config.toml.
model = "gpt"
model_provider = "inja"
openai_base_url = "https://127.0.0.1:8787/v1"
[model_providers.inja]
name = "Inja LLM Gateway"
base_url = "https://127.0.0.1:8787/v1"
env_key = "INJA_GATEWAY_KEY"
wire_api = "chat_completions"
# Some Codex agent builds prefer Responses:
# wire_api = "responses"| Field | Why |
|---|---|
base_url with /v1 |
OpenAI clients call {base}/chat/completions and {base}/responses |
env_key = "INJA_GATEWAY_KEY" |
Avoid stuffing the edge key in the file; export it in the environment |
wire_api = "chat_completions" |
Broadest compatibility |
wire_api = "responses" |
Try this if agent/tools features fail on chat completions |
Do not put a ChatGPT Platform sk- here. The gateway holds Codex OAuth.
Models
Gateway aliases (subscription YAML, Aug 2026):
Codex model |
Upstream |
|---|---|
gpt / terra |
ChatGPT GPT-5.6 Terra |
sol |
ChatGPT GPT-5.6 Sol |
luna |
ChatGPT GPT-5.6 Luna |
grok-4.6 |
SuperGrok Grok 4.6 |
grok-4.5 |
SuperGrok Grok 4.5 |
composer-2.5 |
SuperGrok Build (grok-build-0.1) |
sonnet / opus |
Claude via translate |
codex --model grok-4.6
# or edit model = "grok-4.6" in config.tomlList what this gateway will route:
curl -sk -H "Authorization: Bearer local-dev" \
'https://127.0.0.1:8787/v1/models' | jq -r '.data[].id' | sortGrok 4.6 xhigh effort is reasoning_effort on the OpenAI wire. If your Codex build exposes a reasoning-effort setting, set it to xhigh and use model = "grok-4.6" (grok-4.5 coerces xhigh → high).
ChatGPT desktop coding
Many ChatGPT desktop coding / Codex modes share ~/.codex/config.toml. After apps-write-codex:
- Export
INJA_GATEWAY_KEYandNODE_EXTRA_CA_CERTSfor processes launched from the Dock (macOS GUI apps do not inherit your zshrc). A LaunchAgent,launchctl setenv, or starting ChatGPT from a terminal that already exported the vars all work. - Fully quit ChatGPT / Codex and reopen.
- Confirm
cc-gateway-logs -fshowspath=/v1/chat/completionsor/v1/responseswhen you send a prompt.
If the chat tab still talks to OpenAI directly, that surface has no custom-base override — use Codex CLI, Cursor, or the coding agent UI instead.
TLS
| Setup | What to do |
|---|---|
mkcert -install (recommended) |
System trust store; ChatGPT/Codex/Node accept https://127.0.0.1:8787 |
| Self-signed only | export NODE_EXTRA_CA_CERTS=$HOME/.config/inja-gateway/certs/localhost.pem (and SSL_CERT_FILE for some runtimes) |
Helpers: cc-gateway-up generates certs via scripts/gen-localhost-tls.sh in the install dir.
Troubleshooting
| Symptom | Fix |
|---|---|
| Connection refused | cc-gateway-up |
TLS / UNABLE_TO_VERIFY_LEAF_SIGNATURE |
mkcert -install or NODE_EXTRA_CA_CERTS |
| 401 | export INJA_GATEWAY_KEY=local-dev; llm-gateway auth status must show chatgpt (or grok/claude for those models) |
| 404 model | Use an alias from GET /v1/models; grok-4.6 needs the current subscription YAML |
| Codex ignores config | Confirm ~/.codex/config.toml model_provider = "inja"; fully quit the app |
| ChatGPT chat unchanged | Expected — use Codex CLI / coding agent |
| Agent tools fail | Try wire_api = "responses" |
| Want OpenAI defaults back | apps-use-default |
cc-gateway-status
llm-gateway auth status
apps-codex
curl -sk https://127.0.0.1:8787/healthz
cc-gateway-logs --usageRelated
- In-repo:
docs/codex-subscriptions.md - Template:
examples/apps/codex/config.toml - Helpers:
apps-write-codex·apps-codex·apps-use-gateway - External: Codex config · Codex / ChatGPT auth