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.