Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

command-code: catalog lists models the account gets MODEL_NOT_IN_PLAN (403) for

Closed
#7,684 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
43/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
github, typescript
Domain
api, backend

Research direction

Start by tracing Command Code catalog generation and the handling of POST /v1/responses errors; the issue does not name source files or tests. Check how MODEL_NOT_IN_PLAN responses affect model listing and retries, then verify the catalog omits an unavailable model or drops it after the first 403. Also assess whether the refusal can be returned as non-retryable; the Codex retry behavior and error response are the completion criteria.

Written by the indexing model from the issue text.

Description

catalog

OpenCodex can list a Command Code model the account's plan does not include. Codex and GOAT then select it, and every request fails.

Seen on 2026-10-24 (goat-si/goat#1205): a host's Codex model cache and opencodex-catalog.json (written by an older ocx, 2.83–2.86) still offered command-code/google-gemini-4-argon as a selectable model. Requests to it through POST /v1/responses returned:

Provider error 403: {"success":false,"error":{"code":"FORBIDDEN","status":403,"message":"MODEL_NOT_IN_PLAN: Gemini 4 Argon available in Pro and above plans or extra on demand usage"}}

Codex retried it 5/5 times per turn. A newer ocx (2.90.0) no longer lists the model, so this may be partly fixed already. The asks:

  1. Do not list a Command Code model in the catalog when the account gets MODEL_NOT_IN_PLAN for it, or drop it after the first such 403.
  2. Consider returning a 403 MODEL_NOT_IN_PLAN in a form Codex treats as non-retryable, so a turn does not spend five retries on a refusal that cannot change.

GOAT's side (classify the refusal as a permission error and let fallback chains move past it) is goat-si/goat#1205.

Dominant language
TypeScript
Stars
16.9k
Forks
1.3k
Avg merge
9h 39m
Merged PRs (30d)
633

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from lidge-jun/opencodex

All issues in lidge-jun/opencodex

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.