← 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.
Get the runs we publish next
One short weekly dispatch with new guides, tools, and what we actually tested. No spam, unsubscribe anytime.