Update: correlated browser and backend evidence (July 21)
I have now correlated one failing run at both the ChatGPT browser boundary and the SkillPilot application-server boundary.
The captured run used ChatGPT web with gpt-5-6-thinking, reasoning effort standard, and automatic model switching disabled.
What is now directly established
RUN_RETAIN started at 04:38:07 UTC (06:38:07 CEST).
- During that turn, ChatGPT invoked
createRegressionProbe exactly once.
- At
04:38:15.277 UTC, the SkillPilot handler generated a fresh schema-valid tuple and committed an HTTP 200 JSON response:
- 128 response bytes
response_committed=true
- independently verified response-byte count and SHA-256
- ChatGPT completed the first turn with
RETAIN_READY approximately 3.857 seconds later.
RECALL_RETAIN was then sent in the same conversation. Its parent_message_id exactly matches the final RETAIN_READY Assistant message from the preceding turn, so this was not a new or incorrectly branched conversation.
- The Recall turn invoked no tool. Backend request-sequence continuity independently confirms that no probe or verifier handler ran during Recall.
- ChatGPT completed the second turn with
RETAIN_MISSING.
This closes an important evidence gap: the first Action did not merely appear to run in the UI. The application handler actually produced and committed a successful, tiny JSON response during the captured turn.
The remaining boundary is inside OpenAI. From outside, I still cannot determine whether the response was fully received and parsed, how the Action result was represented after the first turn, or whether its fields were included in the next-turn model context. The browser-visible stream contains the Action-call node but no conventional serialized Action-result node or actual probe fields. That is a useful structural observation, not proof that OpenAI never received or stored the response.
Separate system-connectors / localStorage finding
First, thank you, @iyvljtjqleyj, for sharing the QuotaExceededError observation and screenshots. That was a valuable lead and prompted a much deeper inspection of the Connector request, its initiator stack, and the exact ChatGPT JavaScript bundles delivered in the HAR.
The Action/JIT message renderer triggers a second Connector request without skip_directory=true:
- initial request: 33 connectors, about 77 KB;
- JIT message request: 2,345 connectors, about 9.85 MB;
- the client then attempts to persist an approximately 10.45-million-character
system-connectors value in localStorage.
This very strongly explains the observed QuotaExceededError and appears to be a real Web-client inefficiency/bug.
However, the code path stores Connector-catalog metadata, not the Action response. It populates the in-memory cache before attempting the persistent write, catches the storage exception, and does not rethrow it. In this run, the large Connector response—and therefore the earliest possible storage write—also completed only after ChatGPT had already produced RETAIN_READY.
I therefore would not currently treat the quota error as the demonstrated cause of RETAIN_MISSING. The best evidence-bounded interpretation is that these are probably two separate Action/JIT-related issues:
- an oversized full-directory Connector fetch and failing persistent cache write in the Web client;
- failure to reuse an earlier Action result after the next user-message boundary.
A patched/unpatched repeated browser test can still determine whether the quota exception is necessary for the second symptom, but the inspected dataflow provides no direct deletion mechanism.
Public reproducer
The public, stateless, credential-free reproducer remains available here:
It links RegressionGPT, the live OpenAPI schema, exact instructions, source, and test protocol. No authentication, production sessions, learner data, or database state are involved.
I have opened a ticket with OpenAI Support. The private conversation IDs, internal trace IDs, exact synthetic tuple, sanitized HAR analysis, and correlated server audit have been supplied there for internal trace inspection. I am not publishing those private identifiers, the support case number, or the raw HAR here.
I will update this thread if Support or the relevant engineering team classifies the behavior as intended, unsupported, or a tracked regression.
This evidence still does not prove GPT-5.6 causation; the rollout remains timing context. It does make the externally observable failure much narrower: a successful Action response is committed during a correctly linked two-turn conversation, yet its value is not used on the immediately following turn.