← Back to article
Open article →
Gpt 56 Explicit Prompt Cache Controls Cost Proof 2026
Evidence notes document the bounded local or source-based checks behind an Effloow article. They are not product endorsements, legal advice, or benchmark claims.
- Date: 2026-07-20 (UTC)
- Script:
scripts/gpt56-explicit-cache-probe.py - Artifact:
data/lab-runs/gpt-56-explicit-prompt-cache-controls-cost-proof-2026.openai.json - Endpoint:
https://api.openai.com/v1/responses - Models:
gpt-5.6-luna,gpt-5.5-2026-04-23 - Purpose: measure what GPT-5.6's explicit prompt-cache controls actually change versus implicit caching, and versus GPT-5.5's 24h retention
- Prefix: 9,208 characters of synthetic, invented "operations handbook" text, SHA-256
80761fcc454ee750...(full digest in the JSON artifact) - Budget guard: every call passed through
scripts/proof_budget.py(check_budgetbefore,record_usageafter) - Safety boundary: no confidential, customer, credential, or private data. The handbook text is entirely fictional.
Command
python3 scripts/gpt56-explicit-cache-probe.py
Configurations
| ID | Model | Cache settings |
|---|---|---|
| A | gpt-5.6-luna | prompt_cache_key only (implicit, the default) |
| B | gpt-5.6-luna | prompt_cache_options: {"mode": "explicit"} + prompt_cache_breakpoint on the handbook block |
| B2 | gpt-5.6-luna | same as B, plus prompt_cache_options.ttl: "24h" (1 call) |
| C | gpt-5.5-2026-04-23 | prompt_cache_retention: "24h" (the legacy control) |
Identical prefix and identical question in every configuration. 4 calls per config (B2: 1 call), ~2 seconds apart.
Raw output
[A_gpt56_implicit] call 1: input=2032 cached=0 cache_write=2029
[A_gpt56_implicit] call 2: input=2032 cached=2029 cache_write=None
[A_gpt56_implicit] call 3: input=2032 cached=2029 cache_write=None
[A_gpt56_implicit] call 4: input=2032 cached=2029 cache_write=None
[B_gpt56_explicit] call 1: input=2032 cached=0 cache_write=2001
[B_gpt56_explicit] call 2: input=2032 cached=2001 cache_write=None
[B_gpt56_explicit] call 3: input=2032 cached=2001 cache_write=None
[B_gpt56_explicit] call 4: input=2032 cached=2001 cache_write=None
[B2_gpt56_explicit_ttl_24h] call 1: ERROR HTTP 400: {
"error": {
"message": "Invalid value: '24h'. Supported values are: '30m'.",
"type": "invalid_request_error",
"param": "prompt_cache_options.ttl",
"code": "invalid_value"
}
}
[C_gpt55_retention_24h] call 1: input=2032 cached=0 cache_write=None
[C_gpt55_retention_24h] call 2: input=2032 cached=1792 cache_write=None
[C_gpt55_retention_24h] call 3: input=2032 cached=1792 cache_write=None
[C_gpt55_retention_24h] call 4: input=2032 cached=1792 cache_write=None
Measured summary
| Config | Input tokens/call | Cached tokens on repeat calls | Share of prefix cached | cache_write_tokens on first call |
|---|---|---|---|---|
| A — 5.6 implicit | 2,032 | 2,029 | 99.9% | 2,029 |
| B — 5.6 explicit breakpoint | 2,032 | 2,001 | 98.5% | 2,001 |
| C — 5.5, retention 24h | 2,032 | 1,792 | 88.2% | field absent |
What worked
- Both GPT-5.6 modes produced a cache hit on the very next call, with no warm-up delay beyond the ~2s gap between requests.
- The explicit breakpoint was accepted on the developer-role content block and produced a stable, repeatable cached prefix of exactly 2,001 tokens across all three repeat calls.
- GPT-5.5 with
prompt_cache_retention: "24h"also hit on the second call, at a smaller cached prefix (1,792 tokens).
What failed
prompt_cache_options.ttl: "24h"was rejected with HTTP 400:Invalid value: '24h'. Supported values are: '30m'.The 24-hour cache lifetime that GPT-5.5 offers has no equivalent on GPT-5.6 in this run.
What is new on 5.6
cache_write_tokensappeared as a populated field inusage.input_tokens_detailson the first GPT-5.6 call of each config, and was absent on GPT-5.5. Per OpenAI's pricing page, cache writes bill at 1.25x the uncached input rate.
Limitations
- Single prefix, single account, single region, one session on 2026-07-20. Cache behaviour is infrastructure-dependent and may vary by tenant, load, and time.
- 4 calls per config is enough to show hit/miss and the write field, not enough to characterise eviction, cross-machine routing, or hit rate under production concurrency.
- Only
gpt-5.6-lunawas tested. Sol and Terra were not exercised. - Repeat calls were ~2 seconds apart, so nothing here tests the 30-minute TTL boundary itself.
- All dollar figures in the published article are arithmetic over OpenAI's published price table and these measured token counts. No billing statement was read; no dollar amount was directly measured.
Read the article
This note supports the public article and records what was actually checked.