Model catalogue lists Anthropic model ids (Claude Opus 4, Fable 5, ...) for instances pinned to other providers

Author: ojalberts-mydataCreated Sep 13, 2026Updated Sep 13, 2026

Upstream FCC Report — Anthropic-lookalike catalogue entries

Status: Complete

Report filed upstream against Alishahryar1/free-claude-code on 2026-09-13. This file is the local record of what was filed, so the finding stays reachable from this repository after the issue number changes or the upstream thread moves.

What was reported

SUPPORTED_CLAUDE_MODELS in api/model_catalog.py hardcodes real Anthropic model ids (claude-fable-5, claude-opus-4-20250514, claude-sonnet-4-20250514, claude-haiku-4-20250514, plus the claude-3-* family). Every FCC instance serves this list in its Claude-facing /v1/models catalogue, regardless of which provider model the instance is pinned to.

With Claude Code's gateway model discovery enabled, those ids appear in the client's /model picker as selectable models "From gateway". Selecting one does two misleading things:

  1. Wrong identity. The instance routes by tier-keyword substring (opus, fable, …) to the pinned provider model, so picking "Claude Opus 4" on an instance pinned to zai/glm-5.3 serves GLM 5.3. The picker advertises models that do not exist behind the proxy.
  2. Wrong context window. Those ids are sizeable from Claude Code's own model card, so a session switched to one meters context from the Anthropic card (200K for opus-4) instead of the provider's real window — early auto-compaction or overlong requests follow.

Environment

  • free-claude-code 5.22.8 (uv tool)
  • instance pinned to zai/glm-5.3, Z.ai Coding Plan
  • Claude Code 2.1.263, CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1

Reproduction

  1. Start an instance pinned to any non-Anthropic model: MODEL=zai/glm-5.3 PORT=16080 fcc-server
  2. Launch Claude Code against it with gateway discovery enabled.
  3. Open /model: the picker lists "Claude Opus 4", "Claude Fable 5" and friends, "From gateway".
  4. Select one; responses come from the pinned provider model, and /context sizes the session from the Anthropic card of the selected id.

Suggested direction

A per-instance catalogue option that serves only the honest provider-prefixed ids (zai/glm-5.3, …) — or keeps the Anthropic-compat ids behind an explicit opt-in for clients that require known names. Display-name disambiguation alone (for example, a provider suffix) would fix the identity half but not the window half.

Mitigation on our side

Our launcher pins an explicit Claude-facing model id per profile (exported as ANTHROPIC_MODEL), so sessions run a first-party id with a correct model card instead of relying on the gateway list. See docs/guides/launching-claude-code-via-fcc.md in mydata-za/tooling-ai-dev-kit.

Source: Alishahryar1/free-claude-code