Client or integration
OpenCodex dashboard
Area
Dashboard
Summary
The bundled jawcode cost rows for openai/gpt-5.6-terra and openai/gpt-5.6-luna are the pre-price-cut rates. OpenAI has since lowered both, so the ~$ column and /api/usage over-estimate every request on those two models.
| Model |
src/generated/jawcode-model-metadata.ts |
OpenAI official (2026-08-02) |
gpt-5.6-terra |
{ input: 2.5, output: 15, cacheRead: 0.25, cacheWrite: 3.125 } |
2 / 12 / 0.20 / 0 |
gpt-5.6-luna |
{ input: 1, output: 6, cacheRead: 0.1, cacheWrite: 1.25 } |
0.20 / 1.20 / 0.02 / 0 |
gpt-5.6-sol |
{ input: 5, output: 30, cacheRead: 0.5, cacheWrite: 6.25 } |
5 / 30 / 0.50 / 0 — input/output/cacheRead match |
Sol matching while Terra and Luna do not lines up with the two models having been repriced after the bundle snapshot; Sol was not.
The expected-price overlay cannot correct this, and I do not think it should: resolveMatchedPriceExact() deliberately prefers a non-zero jawcode row over any overlay, which is the right priority. The fix belongs in the source data.
Three separate points, in case they want splitting:
- Terra and Luna carry stale input/output/cacheRead rates.
- All three
gpt-5.6-* rows carry a non-zero cacheWrite. OpenAI's automatic caching has no write charge — the published table has input / cached input / output and no write column. gpt-5.5 and gpt-5.4 in the same bundle correctly carry cacheWrite: 0, so the gpt-5.6 family looks like it picked up the Anthropic 1.25×-input convention by accident (6.25 = 5 × 1.25, 3.125 = 2.5 × 1.25, 1.25 = 1 × 1.25). No impact on my host — I have zero cacheCreationInputTokens on these models — but it would bite anyone whose client sends explicit cache writes.
- Unrelated to the stale values but in the same area: none of the
gpt-5.6-* rows carries the long-context tier. OpenAI bills prompts above 272k input tokens at 2× input (and cached input) and 1.5× output for the whole request. Cost4 has no way to express that, so requests over the threshold are billed at the short rate. On my 30-day window 391 requests crossed a published threshold. I am happy to open that as its own issue if you would rather keep this one to the data fix.
Reproduction
Read the rows straight out of the bundle — no proxy needed:
bun -e 'import {getJawcodeModelMetadata} from "./src/generated/jawcode-model-metadata";
for (const m of ["gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-5.5","gpt-5.4"])
console.log(m, JSON.stringify(getJawcodeModelMetadata("openai", m)?.cost));'
Then compare against https://developers.openai.com/api/docs/pricing.
To see it end to end: send any request through openai/gpt-5.6-luna, then open Logs. The ~$ value is 5× the amount OpenAI actually bills.
Version
2.10.0
Operating system
Windows 11 Home Single Language 10.0.26200
Provider and model
openai / gpt-5.6-terra, openai / gpt-5.6-luna (and gpt-5.6-sol for the cacheWrite point)
Logs or error output
# Bundled rows, 2.10.0
gpt-5.6-sol {"input":5,"output":30,"cacheRead":0.5,"cacheWrite":6.25}
gpt-5.6-terra {"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":3.125}
gpt-5.6-luna {"input":1,"output":6,"cacheRead":0.1,"cacheWrite":1.25}
gpt-5.5 {"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0}
gpt-5.4 {"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0}
# Effect on 30 days of my own usage.jsonl, replaying calculateCost() with each rate table.
# Same requests, same normalized tokens; only the Cost4 differs.
gpt-5.6-sol n=6283 jawcode=$640.16 official=$640.16 delta=$0.00 (0%)
gpt-5.6-terra n=1104 jawcode=$33.24 official=$26.59 delta=$6.65 (+25%)
gpt-5.6-luna n=424 jawcode=$4.02 official=$0.80 delta=$3.22 (+400%)
The absolute numbers are small on my host because Sol carries most of my volume and Sol is correct. The percentages are the point — anyone whose workload leans on Luna sees a 5× over-estimate.
Checks
Client or integration
OpenCodex dashboard
Area
Dashboard
Summary
The bundled jawcode cost rows for
openai/gpt-5.6-terraandopenai/gpt-5.6-lunaare the pre-price-cut rates. OpenAI has since lowered both, so the~$column and/api/usageover-estimate every request on those two models.src/generated/jawcode-model-metadata.tsgpt-5.6-terra{ input: 2.5, output: 15, cacheRead: 0.25, cacheWrite: 3.125 }gpt-5.6-luna{ input: 1, output: 6, cacheRead: 0.1, cacheWrite: 1.25 }gpt-5.6-sol{ input: 5, output: 30, cacheRead: 0.5, cacheWrite: 6.25 }Sol matching while Terra and Luna do not lines up with the two models having been repriced after the bundle snapshot; Sol was not.
The expected-price overlay cannot correct this, and I do not think it should:
resolveMatchedPriceExact()deliberately prefers a non-zero jawcode row over any overlay, which is the right priority. The fix belongs in the source data.Three separate points, in case they want splitting:
gpt-5.6-*rows carry a non-zerocacheWrite. OpenAI's automatic caching has no write charge — the published table has input / cached input / output and no write column.gpt-5.5andgpt-5.4in the same bundle correctly carrycacheWrite: 0, so thegpt-5.6family looks like it picked up the Anthropic 1.25×-input convention by accident (6.25 = 5 × 1.25, 3.125 = 2.5 × 1.25, 1.25 = 1 × 1.25). No impact on my host — I have zerocacheCreationInputTokenson these models — but it would bite anyone whose client sends explicit cache writes.gpt-5.6-*rows carries the long-context tier. OpenAI bills prompts above 272k input tokens at 2× input (and cached input) and 1.5× output for the whole request.Cost4has no way to express that, so requests over the threshold are billed at the short rate. On my 30-day window 391 requests crossed a published threshold. I am happy to open that as its own issue if you would rather keep this one to the data fix.Reproduction
Read the rows straight out of the bundle — no proxy needed:
Then compare against https://developers.openai.com/api/docs/pricing.
To see it end to end: send any request through
openai/gpt-5.6-luna, then open Logs. The~$value is 5× the amount OpenAI actually bills.Version
2.10.0
Operating system
Windows 11 Home Single Language 10.0.26200
Provider and model
openai / gpt-5.6-terra,openai / gpt-5.6-luna(andgpt-5.6-solfor thecacheWritepoint)Logs or error output
The absolute numbers are small on my host because Sol carries most of my volume and Sol is correct. The percentages are the point — anyone whose workload leans on Luna sees a 5× over-estimate.
Checks