Docs

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 APIwire_api = "chat" was removed, and the binary now accepts responses and responses_websocket and nothing else. Helmcode serves /v1/chat/completions, and its /v1/responses does 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 setWhat 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, ollama or lmstudio, which are reserved. That is why it is called helmcode.
  • base_url ends at /v1 and nothing more. Do not add the endpoint path.

Known issues

  • /v1/responses serves fewer models than /v1/chat/completions. Even once streaming works, check the model you want is one of them.
  • qwen3.6 on /v1/responses rejects the request with System 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.