Codex
Codex CLI is OpenAI’s terminal agent. Today it cannot talk to Helmcode directly, and the reason is worth reading before you spend an afternoon on the configuration file.
Warning: this is not a problem with your key. Recent Codex versions only speak OpenAI’s Responses API —
wire_api = "chat"was removed, and the binary now acceptsresponsesandresponses_websocketand nothing else. Helmcode serves/v1/chat/completions, and its/v1/responsesdoes not yet emit the streaming events Codex waits for. Checked against codex-cli 0.154.0.
What you get if you try each of them:
| What you set | What happens |
|---|---|
wire_api = "chat" | Error loading config.toml: `wire_api = "chat"` is no longer supported |
wire_api = "responses" | stream disconnected before completion: stream closed before response.completed |
What works today — delegate to OpenCode
The same route the Claude Code page takes, and for the same reason: Codex runs commands in your terminal, and OpenCode works headless against Helmcode.
Configure OpenCode once, then ask Codex for it in plain words:
Use `opencode run --agent plan -m helmcode/glm5.3-flash` to review
src/parser.ts and tell me which cases it is not covering.
Codex runs the command, reads the answer and carries on. --agent plan keeps OpenCode read-only; without it, it starts with an agent that can edit files and run commands.
Your Codex subscription pays for the session; the model work comes out of your Helmcode key.
The configuration, for when it works
Nothing below is wrong — it is simply waiting on /v1/responses. When that endpoint streams, this is all Codex needs in ~/.codex/config.toml:
model_provider = "helmcode"
model = "glm5.3-flash"
[model_providers.helmcode]
name = "Helmcode"
base_url = "https://api.helmcode.com/v1"
env_key = "HELMCODE_API_KEY"
wire_api = "responses"
With your key in the environment, never in the file:
export HELMCODE_API_KEY="sk-your-key-here"
Two details that will still matter then:
- The provider identifier cannot be
openai,ollamaorlmstudio, which are reserved. That is why it is calledhelmcode. base_urlends at/v1and nothing more. Do not add the endpoint path.
Known issues
/v1/responsesserves fewer models than/v1/chat/completions. Even once streaming works, check the model you want is one of them.qwen3.6on/v1/responsesrejects the request withSystem message must be at the beginning, which is how Codex lays out its instructions.- Everything else in this section connects directly. If you want a terminal agent on Helmcode today, OpenCode and Pi both do.