Skip to content

Complete routing effort metadata for current OpenAI and Anthropic models #10030

Open

Description

@rabeckett

Summary

AWF's native model routing reads a model's reasoning efforts and context window from
routing metadata in containers/api-proxy/model-api-mapping.json. For the direct openai and
anthropic providers, this file is the only source of efforts; Copilot routing reads them from
live /models instead. The metadata is incomplete:

  • OpenAI: only gpt-5.4 has routing metadata. GPT-5.4 mini, GPT-5.5, GPT-5.6 Sol, Terra and
    Luna, GPT-6 Astra, Sol and Luna, and GPT-6.1 Sol have none, so the router has no effort choices
    for them.
  • Anthropic: every family lists low, medium, high, max and omits xhigh, which Anthropic
    supports on Claude Opus 5.5, Opus 5, Sonnet 5.5, Sonnet 5, Opus 4.8 and Opus 4.7. Claude Haiku
    5.5 has no routing metadata, because its efforts were marked unverified.

Evidence

Efforts and context windows come from each provider's official model pages, checked on
15 Oct 2026.

OpenAI (model pages, one per model):

Model IDs reasoning.effort Context window
gpt-5.4-mini none, low, medium, high, xhigh 400,000
gpt-5.5 none, low, medium, high, xhigh 1,050,000
gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna (and the gpt-5.6 alias, which routes to Sol) none, low, medium, high, xhigh, max 1,050,000
gpt-6-astra low, medium, high, xhigh, max 1,050,000
gpt-6-sol, gpt-6-luna none, low, medium, high, xhigh, max 1,050,000
gpt-6.1-sol low, medium, high, xhigh, max (the page says none and minimal are unsupported) 1,050,000

Anthropic (effort guide,
models overview):

  • xhigh is available on Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 5, Opus
    4.8, Opus 4.7, Sonnet 5.5, Sonnet 5 and Haiku 5.5.
  • It is not available on Opus 4.6, Sonnet 4.6 or Mythos Preview. The guide notes that "not
    every model that supports max supports xhigh".
  • Claude Haiku 5.5 supports all five levels and has a 1M-token context window.

Proposed changes

Edit containers/api-proxy/model-api-mapping.json and keep docs/model-api-mapping.json
identical; a sync test enforces this.

OpenAI provider

  1. Add routing metadata, with the efforts and context windows above, to the existing gpt-6-astra,
    gpt-6-sol, gpt-6.1-sol, gpt-6-luna, gpt-5.6 and gpt-5.5 families.
  2. Give each family exact routingPatterns, as gpt-5.4 already has, so the metadata never
    applies to unrelated variants. This matters most for gpt-5.6, because its wildcard would
    otherwise also match gpt-5.6-cyber, and for gpt-5.5, which would otherwise match
    gpt-5.5-pro. Include the documented dated snapshots where they exist (for example
    gpt-5.5-2026-04-23).
  3. Add a gpt-5.4-mini family before gpt-5.4, with its own routing metadata (400K context). The
    existing gpt-5.4 routing patterns stay exact-match.

Anthropic provider

  1. Add xhigh between high and max for the claude-opus-5 and claude-sonnet-5 families.
  2. Split Opus 4.6 out of the claude-opus-4 routing entry. Opus 4.8 and 4.7 get xhigh; Opus 4.6
    keeps low, medium, high, max. The new family name is not a Copilot CLI model, so add it to
    MAPPING_FAMILIES_NOT_EXPOSED_BY_COPILOT_CLI in src/copilot-model-catalog-sync.test.ts.
  3. Give claude-haiku-5 routing metadata for claude-haiku-5-5: all five efforts and a 1M-token
    context window. Update its note, which says the efforts are unverified. Its entry in
    MAPPING_FAMILIES_NOT_EXPOSED_BY_COPILOT_CLI is now stale, because claude-haiku-5.5 is in
    SUPPORTED_COPILOT_MODELS, so remove it.
  4. Leave claude-sonnet-4 (Sonnet 4.6) unchanged.

Housekeeping

  1. Bump lastUpdated, and point sources.openai_routing at the model index rather than only the
    GPT-5.4 page.

Validation

  • Update containers/api-proxy/model-api-mapping.test.js:
    • gpt-5.4-mini now returns metadata instead of null.
    • The Opus 5.5 efforts include xhigh.
    • claude-opus-4-6 has no xhigh.
    • gpt-5.6-cyber and gpt-5.5-pro still return null.
    • The reflect test's lastUpdated changes.
  • src/copilot-model-catalog-sync.test.ts passes: the two mapping copies match and every family is
    represented or excluded.
  • routing-catalogue.test.js passes. Optionally add a case where a direct OpenAI model such as
    gpt-6-sol returns its efforts without runtime metadata.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions