Claude Apps Gateway: Bedrock Application Inference Profile ARNs are metered at the "unknown-model" default rate, not per-model rates

Status Fixed / completed
Maintainer reply None cached
Activity 1 comment · opened Jul 23, 2026 · closed Jul 23, 2026

Description

We're required to use AWS Bedrock Application Inference Profiles (one per model) instead of plain foundation-model IDs, because our organization participates in the AWS MAP (Migration Acceleration Program) and must tag Bedrock usage per-model so costs are correctly attributed to the program.

When we configure the Claude Apps Gateway's models[].upstream_model.bedrock field with an Application Inference Profile ARN (per gateway config docs), inference works correctly, but the gateway's spend meter cannot find exact rates for the ARN and falls back to the default tier:

[gateway] 2026-07-23T13:56:40.530Z warn spend meter has no exact rates for model 'arn:aws:bedrock:us-east-1:<ACCOUNT_ID>:application-inference-profile/<PROFILE_ID>' — metering at the unknown-model default tier.

This is documented behavior per spend-limits docs, but it has a significant side effect for MAP-tagged deployments:

We expose 3 distinct models (Opus 4.8, Sonnet 5, Haiku 4.5) to our entire org, each backed by its own Application Inference Profile ARN (for MAP cost tagging). Example config:

models:
  - id: claude-opus-4-8
    label: Claude Opus 4.8
    upstream_model:
      bedrock: arn:aws:bedrock:us-east-1:<ACCOUNT_ID>:application-inference-profile/<PROFILE_ID_1>
  - id: claude-sonnet-5
    label: Claude Sonnet 5
    upstream_model:
      bedrock: arn:aws:bedrock:us-east-1:<ACCOUNT_ID>:application-inference-profile/<PROFILE_ID_2>
  - id: claude-haiku-4-5
    label: Claude Haiku 4.5
    upstream_model:
      bedrock: arn:aws:bedrock:us-east-1:<ACCOUNT_ID>:application-inference-profile/<PROFILE_ID_3>

Because the gateway can't resolve the ARN to a known model, all three models get metered at the same "unknown-model default tier" ($5 / $25 per million input/output tokens) rather than each model's actual rate. This breaks:

  • Accurate per-user / per-model spend limit enforcement
  • Cost visibility/attribution between Opus, Sonnet, and Haiku usage

Expected behavior

Usage against an Application Inference Profile ARN should be metered at the correct per-model rate, matching the underlying foundation model.

Suggested fix

Since Application Inference Profile ARNs are opaque and can't be mapped to a foundation model without a Bedrock API lookup, we'd suggest allowing admins to manually specify metering rates per model entry in the gateway config (referencing models config), e.g.:

models:
  - id: claude-opus-4-8
    label: Claude Opus 4.8
    upstream_model:
      bedrock: arn:aws:bedrock:us-east-1:<ACCOUNT_ID>:application-inference-profile/<PROFILE_ID_1>
    spend_meter:
      input_price_per_million: 15
      output_price_per_million: 75

This would let organizations using Application Inference Profiles (a hard AWS MAP requirement, not a preference) get correct metering and spend-limit enforcement instead of falling back to the default tier.

Environment

  • Claude Apps Gateway, self-hosted, deployed on EKS
  • Bedrock, us-east-1, via AWS MAP Application Inference Profiles

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗