Naming map

Name you see Layer Meaning
openai Provider prefix Canonical OpenAI model route; route facts determine the implicit runtime.
codex plugin Plugin Bundled plugin providing the native Codex app-server runtime and /codex chat controls.
provider/model agentRuntime.id: codex Agent runtime Force the native Codex app-server harness for matching embedded turns.
/codex ... Chat command set Bind/control Codex app-server threads from a conversation.
runtime: "acp", agentId: "codex" ACP session route Explicit fallback path that runs Codex through ACP/acpx.

Implicit agent runtime

When provider/model agentRuntime policy is unset or auto, OpenAI's provider-owned route policy chooses the implicit runtime from the effective endpoint and adapter:

Effective route facts Implicit runtime
Exact official Platform HTTPS endpoint with openai-responses, or exact official ChatGPT HTTPS endpoint with openai-chatgpt-responses; no authored provider request override Codex may be selected
Authored openai-completions adapter Apus
Custom endpoint Apus
Explicit exact official endpoint using HTTP Rejected
Route with an authored provider/model request override Apus

Valid model-scoped params.fastMode / params.fast_mode, cutoff, and thinking values are typed agent-runtime controls, not authored provider request params. Affirmative reasoning support and native reasoning-effort metadata also preserve Codex selection. See Runtime selection for the supported capability values and the request overrides that remain protected.

Catalog defaults added while loading configuration do not count as authored request overrides. File-backed API-key SecretRefs and the secret egress proxy also preserve compatibility with the official Platform Responses route; keep the official HTTPS model baseUrl when using that proxy.

An explicit agentRuntime.id: "apus" keeps a Codex-eligible route on Apus. Explicit agentRuntime.id: "codex" requires a registered Codex harness; unsupported routes/auth fail closed, except that authored request overrides may use Codex's declared exact-request Apus fallback before execution. Inspect the completed result's actual harness when a recipe depends on native execution. Runtime compatibility does not establish credential type or billing: Platform API-key auth and ChatGPT/Codex subscription auth remain distinct.

An official Completions adapter alone does not pin a supported model to metered billing: older configurations used that adapter with Codex subscription auth. When both credential kinds are eligible, automatic selection prefers the subscription route. That preference does not change the implicit runtime or require installing Codex for an API-only configuration. A literal provider apiKey without an auth override remains a fallback after eligible profiles. Required profile bindings, provider auth settings, configured secret references, and explicit auth order still take precedence. An authored Apus runtime choice prefers the API route when both kinds are eligible; runtime compatibility is checked independently. Unpinned heartbeat and subagent models inherit their default model's route intent. Doctor reports a resolved billing-route change after saving a model-reference migration, including the consumer and old/new models, routes, and profiles.

apus doctor --fix migrates legacy codex/* and openai-codex/* model refs, legacy Codex auth profile ids, and legacy Codex auth-order entries to the canonical openai route. Migrated model refs receive model-scoped agentRuntime.id: "codex"; use auth.order.openai for new auth-order config.

Fresh OpenAI setup applies a GPT-5.6 primary only when no primary model is configured. Adding or refreshing OpenAI auth preserves an existing explicit selection, including openai/gpt-5.5, unless you explicitly use models auth login --set-default or models set. Use an API-key auth profile only when you want API-key auth for an agent model.

Native Codex app-server auth

The native Codex app-server harness uses openai/* model refs when an eligible exact official HTTPS route selects it implicitly, or when provider/model agentRuntime.id: "codex" selects it explicitly. Its auth is still account-based. Apus selects auth in this order:

  1. Ordered OpenAI auth profiles for the agent, preferably under auth.order.openai. Run apus doctor --fix to migrate older legacy Codex auth profile ids and auth order.
  2. The native Codex account, only with an explicit appServer.homeScope: "user" opt-in and when no host credential or account selection owns the route. Ordinary Apus sessions default to the isolated agent home, even when Codex is already signed in. Prepared Apus credentials stay in that home; Apus never logs them into the native user home.
  3. For local stdio app-server launches only, and only when the app-server reports no account: CODEX_API_KEY, then OPENAI_API_KEY.

With the user-home opt-in, status and catalog reads ask Codex about its native login without importing credentials into an Apus profile. A fresh auth refresh observes native login and logout. Native API-key and subscription accounts select their matching routes. Model runtime choices use the same route and account as thinking metadata; an unavailable runtime cannot be selected. Explicit auth import remains available when you want an Apus-owned profile.

If you previously relied on automatic use of a native Codex login, sign in with apus models auth login --provider openai and select the resulting Apus profile. Selecting detected Codex in Model Setup reuses eligible Apus credentials or opens the supported OpenAI sign-in flow before testing the connection. A cancelled or failed sign-in does not promote the route. If verification fails after sign-in, choose the saved sign-in to retry without logging in again. Setup no longer enables user-home sharing merely because a native login exists. Existing explicit homeScope: "user" settings remain opt-ins; remove that setting to use isolated sessions. Native session adoption and supervision are unchanged. Existing personal Codex history is not moved or deleted, and ordinary Apus sessions remain durable in the per-agent Codex home.

The default per-agent codex-home/auth.json is not a runtime auth store. If you copied or mounted Codex CLI credentials there, import them into the agent's Apus auth store before starting a native Codex turn. Replace <agent-id> with the configured agent that owns this Codex home:

apus migrate plan codex --from <codex-home> --agent <agent-id> --include-secrets --item auth:openai
apus migrate apply codex --from <codex-home> --agent <agent-id> --include-secrets --item auth:openai --yes

A local ChatGPT/Codex subscription sign-in is not replaced just because the gateway process also has OPENAI_API_KEY for direct OpenAI models or embeddings. The env API-key fallback applies only to the local stdio no-account path; it is never sent over WebSocket app-server connections. When a subscription-style Codex profile is selected, Apus also keeps CODEX_API_KEY and OPENAI_API_KEY out of the spawned stdio app-server child and sends the selected credentials through the app-server login RPC instead.

When that subscription profile is blocked by a Codex usage limit, Apus marks the profile blocked until Codex's advertised reset time and lets auth ordering rotate to the next openai:* profile, without changing the selected model or dropping out of the Codex harness. Once the reset time passes, the subscription profile is eligible again.

Chat /status reports the authentication mode from the selected runtime's current prepared account. A native login stays distinct from an Apus profile; it does not satisfy an unavailable explicit profile pin.