ChatGPT Sites: removed environment secret still persists in production runtime after redeploy

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

  1. Start with an existing ChatGPT Site that has a hosted secret named:

    OPENAI_API_KEY

  2. Remove OPENAI_API_KEY from:

    Sites → Settings → Environment Variables.

  3. Confirm the visible Sites configuration now shows the variable as absent.

  4. Save/approve the current Site version.

  5. Redeploy that exact approved saved version.

  6. 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_KEY absent
  • 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.