Skip to content

AI-credits guard rejects claude-fable-5: pricing missing from curated table and stale bundled models.dev catalog #5969

Description

@raman-anyware

Summary

With apiProxy.maxAiCredits active (the default), the api-proxy rejects every request for claude-fable-5 with HTTP 400 unknown_model_ai_credits, so any gh-aw workflow pinned to that model fails with 0 agent turns. The model is missing from both pricing sources the AI-credits guard consults, while the rest of the stack already knows the model.

Root cause

containers/api-proxy/guards/ai-credits-guard.js resolves pricing in this order: curated table (ai-credits-pricing.js) → canonical/prefix match → bundled catalog (models.dev.catalog.json) → AWF_DEFAULT_AI_CREDITS_PRICING → reject. For claude-fable-5, every step misses:

  • containers/api-proxy/ai-credits-pricing.js — the Claude entries stop at claude-opus-4-8; no Fable/Mythos rows.
  • containers/api-proxy/models.dev.catalog.json — vendored on 2026-06-09 (Bundle models.dev catalog for AI credits model resolution #4589) and not re-synced since; it predates the Claude Fable 5 release. The upstream models.dev catalog carries claude-fable-5 now.
  • No prefix match is possible (claude-fable-* shares no prefix with any priced key).

Meanwhile the model is already recognized elsewhere:

So the firewall's vendored pricing snapshot is the last component in the stack that still rejects the model.

Impact

Workflows on engine: copilot with model: claude-fable-5 fail 100% at the first inference call unless the operator disables the credits budget (max-ai-credits: -1 frontmatter, or GH_AW_DEFAULT_MAX_AI_CREDITS=0) — which throws away cost enforcement precisely on the most expensive model.

Suggested fix

Either (ideally both):

  1. Re-sync the vendored models.dev.catalog.json (it has been frozen for ~4 weeks; a periodic re-bundle would prevent this class of failure for every future model launch — same class as the Smoke Gemini gemini-3.1-flash-tts-preview failure, [aw-failures] P1: Smoke Gemini uses TTS preview model gemini-3.1-flash-tts-preview → unknown_model_ai_credits, 100% agent fail [Content truncated due to length] gh-aw#39172).
  2. Add curated rows, matching Anthropic's published pricing ($/1M tokens):
'claude-fable-5':  { input: 10.00, cachedInput: 1.00, cacheWrite: 12.50, output: 50.00 },
'claude-mythos-5': { input: 10.00, cachedInput: 1.00, cacheWrite: 12.50, output: 50.00 },

(input $10, output $50, cache read 0.1x, cache write 1.25x — per https://platform.claude.com/docs/en/about-claude/models/overview)

Reproduction

Any gh-aw workflow with:

engine:
  id: copilot
  model: claude-fable-5

and maxAiCredits left at its default fails its first model call with:

HTTP 400 {"type":"unknown_model_ai_credits","message":"Model \"claude-fable-5\" has no AI credits pricing and no default pricing is configured. ..."}

Observed with AWF v0.27.2 through v0.27.26 (current); the pricing files on main today still lack the model.

🤖 Filed with the help of Claude Code

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions