Summary
Cost accounting and budget enforcement price every OpenAI request at the model's base rates, regardless of the effective service tier. createDisplayUsage(usage, model, providerMetadata, metadataModelOverride) has no tier input and models-extra.ts carries base-tier rates only, so a goal run with --service-tier priority (a higher-cost tier that the app labels as such) and --budget is admitted and metered as if it ran on the default tier. The represented dollar cap therefore under-counts real spend on priority runs.
Scope
Proposed fix (either)
- Carry the effective tier into usage accounting: extend
createDisplayUsage (or its caller) with the pinned serviceTier and apply per-tier rate multipliers/rates from the catalog.
- Or fail closed: reject budgeted runs when the effective tier is non-default until tier pricing exists.
Follow-up trigger
Next change to usage accounting or the OpenAI pricing catalog; owner: whoever next touches displayUsage.ts / models-extra.ts.
Generated with xum • Model: coder:anthropic/claude-fable-5-1 • Thinking: xhigh • Cost: $174.60
Summary
Cost accounting and budget enforcement price every OpenAI request at the model's base rates, regardless of the effective service tier.
createDisplayUsage(usage, model, providerMetadata, metadataModelOverride)has no tier input andmodels-extra.tscarries base-tier rates only, so a goal run with--service-tier priority(a higher-cost tier that the app labels as such) and--budgetis admitted and metered as if it ran on the default tier. The represented dollar cap therefore under-counts real spend on priority runs.Scope
Proposed fix (either)
createDisplayUsage(or its caller) with the pinnedserviceTierand apply per-tier rate multipliers/rates from the catalog.Follow-up trigger
Next change to usage accounting or the OpenAI pricing catalog; owner: whoever next touches
displayUsage.ts/models-extra.ts.Generated with
xum• Model:coder:anthropic/claude-fable-5-1• Thinking:xhigh• Cost:$174.60