Codex CLI fix: Codex refuses a model as not supported for the account

Codex says the model is not supported with a ChatGPT account

The model is not supported when using Codex with a ChatGPT account error means Codex asked the backend for a model your ChatGPT sign-in does not cover, usually because a model name is pinned in config.toml or passed with -m. Pick a model your plan has with /model, or remove the pin. The raw form people paste looks like {"type":"error","status":400,"error":{"type":"invalid_request_error","message":"The '<model>' model is not supported when using Codex with a ChatGPT account."}}. It is a 400 from the backend: the model exists, your login does not cover it, and the CLI passed the name through without checking it against anything.

model is not supported when using Codex with a ChatGPT account
Printed by Codex CLI.

Diagnosis

What it actually is

Model availability is a property of the login

Which models an account can use depends on how it authenticated. A ChatGPT sign-in and an API key reach different lists, and so do different plan tiers, which is why a model a colleague picks without trouble is refused on your machine. OpenAI's models page says availability depends on the rollout, your sign-in method and your client, and that with an API key it follows your API organization and project.

The model was retired for ChatGPT sign-in

OpenAI retires models from Codex for ChatGPT sign-in on dated schedules while leaving them on the API. Its models page says GPT-5.5 retired from Codex for users signed in with ChatGPT on October 14, 2026, and that the OpenAI API and Codex sessions authenticated with an API key are not affected. A model = "gpt-5.5" line that worked last month fails with exactly this error today.

Your plan tier gets a different recommendation

The same page recommends GPT-6.1 Sol (gpt-6.1-sol) on Plus, Pro, Business, Enterprise and Edu plans, and GPT-6 Luna (gpt-6-luna) on Free and Go plans. A config copied from a colleague on a bigger plan can name a model your plan does not reach.

The CLI does not pre-filter what you ask for

A model named with -m, with -c model=..., in a -p profile or in config.toml is sent as written. Nothing local compares it against the list your account can see, so the first thing to know the name is wrong is the backend, and it answers 400.

The real list is answered live, per credential

The app-server has a model/list call and it answers for the login in use. Termdeck asks that rather than shipping a hardcoded catalog, because a static list is exactly what hides a new model from a picker while every other layer is already correct.

Check

Confirm it before you fix it

Run thisWhat a good answer looks like
codex login statusNames the auth mode. Logged in using ChatGPT means the ChatGPT list applies; an API key reaches the API list instead. This decides which set of models the next question is even about.
grep -n model ~/.codex/config.tomlFinds a pinned model you may have forgotten. A model set here applies to every session and long outlives the one you were running when it broke. Check any [profiles] section too if you launch with -p.
codex debug models | grep -o '"slug":"[^"]*"'The model catalog this CLI knows, as slugs. Use it to spell a model name exactly. Being in the catalog does not guarantee your plan can use it; the error is the backend deciding that.

Every command here has been run on a real machine. Termdeck answers the same questions for every machine you have connected, without opening a terminal on any of them.

Fix

Cheapest thing first

1. Run once without a model override

Start codex with no -m and no profile, after commenting out any model line, so Codex falls back to its default for your login. If that works, the name you pinned is the problem rather than the account.

2. Pick a supported model with /model

Inside a session, /model opens the picker with the models and reasoning efforts your login offers. To choose at launch, use codex -m gpt-6.1-sol or codex exec -m gpt-6.1-sol with a model your plan has.

3. Unpin or update the model in config.toml

A stale model line survives every update, and it is the usual reason this appears out of nowhere weeks after somebody set it. Delete it, or set it to a current model such as model = "gpt-6.1-sol" on a plan that has it. The Codex models and effort guide covers choosing one.

4. Switch the login rather than the model

Where the model is one an API key covers and a ChatGPT sign-in does not, such as a model retired for ChatGPT only, printenv OPENAI_API_KEY | codex login --with-api-key is shorter than hunting for an equivalent. That usage is billed at API prices, not from your plan.

5. Let the picker come from the account

Termdeck builds its Codex model picker from the live list the machine's own login returns, and drops that list when you switch accounts, so the picker shows what the signed-in account reports rather than a fixed catalog. See Engines.

Not this

What will not help

Updating the CLI

The refusal came from the backend, and a newer CLI sends the same name to the same account. An update helps only when the model is so new that your CLI cannot name it at all, which fails differently.

Logging out and back in with the same ChatGPT account

The list belongs to the account and plan. The same account signs back in to the same list and the same refusal.

FAQ

Codex refuses a model as not supported for the account, answered

What does model is not supported when using Codex with a ChatGPT account mean?

Codex asked for a model your ChatGPT sign-in does not cover. The model can still exist and work with an API key or on another plan. Pick one with /model or remove the pinned model.

Which models can I use in Codex with a ChatGPT account?

It depends on the plan and the rollout. OpenAI recommends GPT-6.1 Sol on Plus, Pro, Business, Enterprise and Edu, and GPT-6 Luna on Free and Go. The /model picker in a session lists what your login offers.

How do I change the model in Codex?

Use /model inside a session, codex -m with a model name at launch, or a model line in ~/.codex/config.toml for every session.

Why does GPT-5.5 say it is not supported?

OpenAI retired GPT-5.5 from Codex for ChatGPT sign-in on October 14, 2026. It still works through the API and in Codex sessions signed in with an API key.

Does this mean the model does not exist?

No. It means your login does not cover it. The same name can work on another account on the same machine.

Why did it work yesterday?

A plan change, a switched login, or a model being retired for ChatGPT sign-in all change the list without anything on your machine changing.

Where does the model name come from if I did not pass one?

Codex reads a default from its config, so a model line set once applies to every session afterwards.