Model catalogue lists Anthropic model ids (Claude Opus 4, Fable 5, ...) for instances pinned to other providers
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:
- 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 tozai/glm-5.3serves GLM 5.3. The picker advertises models that do not exist behind the proxy. - 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
- Start an instance pinned to any non-Anthropic model:
MODEL=zai/glm-5.3 PORT=16080 fcc-server - Launch Claude Code against it with gateway discovery enabled.
- Open
/model: the picker lists "Claude Opus 4", "Claude Fable 5" and friends, "From gateway". - Select one; responses come from the pinned provider model, and
/contextsizes 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