Codex()
OpenAI's models through a ChatGPT Plus or Pro subscription. No API key, no per-token cost — you are billed by OpenAI exactly as you already are, and Axon takes nothing.
export default defineProfile({
providers: [Codex()],
})
The catalogue is per-account: chatgpt.com reports what your own subscription can
run, so two people declaring Codex() may see different models. Not being connected is an
absent entitlement rather than an error — you simply get no Codex routes.

Credentials
OAuth, vaulted. Connect once and it works on every machine you sign in from.
:provider codex connect # opens a browser to approve
:provider codex disconnect
Refresh is the vault's job and is invisible to you — there is nothing to reconnect unless you explicitly disconnect. Only a narrow, short-lived token ever reaches an agent; refresh material never leaves the vault.
Options
Codex(options?: ProviderOptions)
| Option | Default | Description |
|---|---|---|
slots | unbounded | Ceiling on concurrent calls |
key | — | Not used. Codex is OAuth, not a key |
url | — | Not used |
Model ids
Bare OpenAI slugs, as your subscription reports them:
export default defineAgent({ model: "codex:gpt-5.6-terra" })
Not the same as OpenAI()
OpenAI() is the API platform, billed per token against an
API key. This is the consumer subscription. Same vendor, different product, different
bill — and only this one has a per-account catalogue.