Environment
- Surface: Web
- Browser: Chrome desktop
- OS: Windows
- Affected feature: ChatGPT Sites → Environment Variables / hosted secrets
- Model: Not relevant
Summary
A hosted secret in ChatGPT Sites continues to be available to the production runtime even after the secret is removed from Sites settings and the exact approved saved version is redeployed.
This appears to be a stale hosted-secret/runtime binding issue rather than an application-code issue.
Steps to reproduce
-
Start with an existing ChatGPT Site that has a hosted secret named:
OPENAI_API_KEY -
Remove
OPENAI_API_KEYfrom:Sites → Settings → Environment Variables.
-
Confirm the visible Sites configuration now shows the variable as absent.
-
Save/approve the current Site version.
-
Redeploy that exact approved saved version.
-
Run a bounded server-side diagnostic that checks only whether the secret is present and computes a shortened SHA-256 fingerprint.
Expected behavior
After removing the secret and redeploying the exact approved saved version:
runtime_secret_present = NO
The removed secret should no longer be available to the production runtime.
Actual behavior
The visible Sites configuration shows:
OPENAI_API_KEY = ABSENT
but the production runtime still reports:
runtime_secret_present = YES
and continues resolving the same pre-removal secret identity:
SHA256 first12 = 99a13cdba6bd
Reproduction evidence
Removal test:
- new environment revision created: env38
- approved saved version: V62
- deployed version: V62
- exact approved saved version redeployed: YES
- visible
OPENAI_API_KEY: ABSENT - runtime secret still present: YES
- runtime fingerprint still:
99a13cdba6bd
After the diagnostic:
- diagnostic gate was closed
- active environment revision advanced to env39
- visible Sites configuration still showed
OPENAI_API_KEYabsent - runtime’s last proven secret identity remained
99a13cdba6bd
Additional evidence
Before the removal test, updating the existing OPENAI_API_KEY value through Sites Environment Variables repeatedly created new environment revisions, but the production runtime continued resolving the previous secret identity.
A locally held intended API key had a different safe fingerprint:
SHA256 first12 = 7cb7c4547cf2
So the Sites UI configuration and the production runtime were demonstrably out of sync.
Ruled out
During the reproduction:
- no source-code copy of the secret was present
- no whitespace/newline corruption was found
- no separate Preview binding was found
- the production environment was used
- deployment completed successfully
- the exact approved saved version was redeployed
- no application code change was made during the removal test
- no provider call was made during the removal test
- no learner/user state was mutated
Request
Could the ChatGPT Sites team investigate whether hosted secret bindings can remain stale across environment revisions and exact approved-version redeployments?
In particular:
- Is there a separate runtime secret binding/cache not represented in the visible Sites Environment Variables UI?
- Is there an authoritative supported way to clear or rebind that runtime secret?
- Is this a known issue?
A successful resolution would make:
runtime_secret_present = NO
while the secret remains absent from Sites configuration.
Security note
No raw API key or secret value is included in this report.
Only shortened SHA-256 fingerprints are used to distinguish secret identities.