Xint says OpenAI's compaction call leaked gpt-5.6-sol hidden reasoning, and that OpenAI fixed it on 23 October
Xint says a compaction request on gpt-5.6-sol, echoed by two older models, produced text it calls the model's raw reasoning, and that OpenAI deployed an undisclosed fix on 23 October. OpenAI has not published a statement on it, and fidelity is unproven.
By Parminder Kumar Sharma · · 15 min read
OpenAI's 30 September post mentioned compaction vulnerabilities; the fix Xint reports came 23 days on
In its post of 30 September 2026, OpenAI said independent security researchers had also reported vulnerabilities involving cross model replay and conversation compaction and that it had "confirmed that the attack paths they identified were real". Xint, whose site is run by the firm Theori, says OpenAI confirmed a bug in its compaction call, deployed an undisclosed fix on 23 October 2026 and paid a $6,000 bounty. From the post to that fix is 23 days, and from the fix to Xint's own post on 26 October is 3 days (both derived).
What those dates do not establish is whether they are the same bug. OpenAI's post does not name the researchers or say which paths it fixed, and nothing OpenAI has published that this briefing could read mentions Xint, the 23 October fix or the bounty. Every statement here about that fix, the bounty and the bug itself is Xint's. Treat it as a researcher's account of a vendor's fix, not as a vendor's confirmation.
Xint's claim is that a compaction call, a feature meant to shrink a long conversation, can be told to write out the hidden reasoning of gpt-5.6-sol, and that two older models will then print the result as plain text. In its example, a reasoning item of 405 tokens became a compaction item of 612 tokens, which is 51 per cent larger (derived), and each echo came back as 609 tokens. Xint says it cannot prove the text is word for word the model's real reasoning.
This briefing was built from Xint's own post of 26 October 2026 (the page data gives 08:21 UTC), OpenAI's compaction guide, API reference and reasoning guide, OpenAI's post of 30 September, the paper "Stealing Reasoning Traces from Proprietary LLM APIs" and CISA's advisory AA26-251A, all read between 14:12 and 14:30 UTC on Tuesday 27 October 2026. The Hacker News article that prompted the story answered this site's request with a Cloudflare challenge page, so it was skipped, not bypassed, and nothing here rests on it. SecurityWeek's report of 26 October was read only to see whether OpenAI had commented; it quotes none. Two parties have interests in how this reads: Xint sells AI vulnerability discovery and was paid for the report, and OpenAI sells the API and gains from its reasoning being hard to copy.
What compaction is, in OpenAI's own documentation
OpenAI's compaction guide says that to support long running interactions, compaction can "reduce context size while preserving state needed for subsequent turns". The Responses API offers it two ways. Server side compaction is switched on in an ordinary create request with a context_management setting and a compact_threshold; when the rendered token count crosses the threshold, the server compacts and the stream carries an encrypted compaction item. The standalone way is a call to /responses/compact with a full context window, which returns a new compacted window, described as stateless and friendly to zero data retention.
The guide describes what comes back in both modes in the same words: the compaction item "carries forward key prior state and reasoning using fewer tokens" and is opaque, not meant to be read by a person. That is the sentence to hold on to. The vendor's own description says compaction carries reasoning forward inside an item the developer cannot read. It does not say who else may be able to make that item readable, or by what instruction.
The API reference for /responses/compact lists an optional instructions field, "a system (or developer) message inserted into the model's context", beside model, input and previous_response_id. The same reference lists gpt-5.6-sol among the accepted model identifiers. Xint's post is built on that field, which is why this briefing quotes it. OpenAI's reasoning guide separately says it does not "expose the raw reasoning tokens emitted by the model" and offers a summary instead, and that in stateless mode (store set to false, or zero data retention) reasoning items carry an encrypted_content property that can be passed to later calls.
What Xint says it did, in three calls
Xint says it found the bug in August 2026 and calls the technique compaction smuggling. In its words the attack "takes three API calls". First, a task goes to gpt-5.6-sol with store set to False and the encrypted reasoning item is kept. Second, the original task is removed from the history and /responses/compact is called with instructions that tell the compaction step to preserve the reasoning verbatim, in a JSON object, with every space replaced by a tab. Xint says that was enough to get past OpenAI's usage policy classifiers. Third, the compaction item is sent to gpt-4.1 and to gpt-4o with a request to output its input exactly, and the tabs are turned back into spaces.
The post gives one set of token counts for an example run, reproduced below. The step names are Xint's.
Token counts for Xint's example run, as printed in its post of 26 October 2026. The last column is derived by this site.
| Step | Tokens (Xint) | Against the reasoning item (derived) |
|---|---|---|
| Reasoning item | 405 | baseline |
| Compaction item | 612 | 207 more, 51 per cent larger |
| Each echoed output | 609 | 204 more; 3 fewer than the compaction item |
Xint's checks are specific and limited. It echoed the compaction item through two models with two different prompts and confirmed identical output, which "rules out errors in the echo step, but not that the compaction step paraphrased the reasoning". It also says it cannot prove the text matches the original token for token without the original plaintext, a limit it says the authors of the earlier paper share. The evidence for fidelity is circumstantial and Xint presents it as such: the item is larger than the reasoning it was built from, the trace keeps false starts and self corrections, and the style matches a gpt-5.6-sol trace the paper had decoded for the same programming problem. The attack, Xint says, worked at every reasoning effort it tried, from minimal to max, and its demonstration used randomly generated puzzles. The post describes Xint's own requests only. It does not describe reaching any other customer's reasoning.
Why the August mitigations did not cover it
The earlier work is a paper posted to arXiv on 10 August 2026, "Stealing Reasoning Traces from Proprietary LLM APIs". Its abstract says the encrypted reasoning blocks that providers return are "fully compatible and interchangeable" across sessions, users and models within a provider, so a trace from a strong model can be injected into a weaker, less safeguarded model from the same provider and printed. It demonstrates this across Anthropic, OpenAI and Google. This site covered OpenAI's account of the related July campaign in an earlier briefing. The paper says that as of August 2026 its attacks were no longer reproducible because of mitigations the providers made after its disclosure.
Xint says OpenAI was the hardest of the three to attack: GPT-5.6 reasoning replays only into other GPT-5.6 models, so the authors used gpt-5.6-luna as their decoder, with per block prompt templates, best of n sampling and output chunks under 50 tokens. Xint says its own tests in August confirmed the paper's attack no longer produced the trace. Its new route works, it says, because the August mitigations "only block replaying reasoning into a different model, and the compaction call runs on the same model that produced the reasoning". The model change then happens one step later, on a compaction item that Xint found was still portable between models.
The paper itself had flagged the tension. Its defence section proposes binding the encrypted envelope to a user and conversation, and says such tight binding could force a fundamental redesign of existing session compaction and model switching. Xint's closing point is that the paper "treated compaction as a legitimate feature its proposed defenses had to work around", and that compaction "likely needs the same protections as the reasoning itself". Xint's route to the idea came from an earlier bug it calls GhostCompact: an inline compaction followed by a tool call was billed for 300 input tokens on a roughly 200,000 token input, and Xint says OpenAI fixed it on 21 September 2026 for a $600 bounty. In that post Xint writes that compaction is "highly steerable via the system prompt" and can perform arbitrary inference.
What the record states and what it does not
What is on the record and what is not, from the sources read on 27 October 2026. 'Xint' means Xint's post of 26 October 2026; 'OpenAI' means its post of 30 September 2026 and its documentation.
| Question | Stated (by whom) | Not stated |
|---|---|---|
| What came out | Text Xint calls a raw reasoning trace of gpt-5.6-sol, for randomly generated puzzles (Xint). | That it matches the model's real reasoning word for word. Xint says it cannot prove that. |
| Which models | gpt-5.6-sol as the source, at every effort from minimal to max; gpt-4.1 and gpt-4o as echoes (Xint). | Any other OpenAI model, including the gpt-6 family OpenAI's reference lists, any other vendor, or whether older models can still echo. |
| The fix | Confirmed and deployed on 23 October 2026, undisclosed, with a $6,000 bounty (Xint). | OpenAI's own statement, what the fix changes, or whether it covers every model and endpoint. |
| Who was affected | Nothing about customers. Xint's tests were its own requests (Xint). | Whether anyone else used the technique before the fix, or whether any customer's reasoning was exposed. |
| Link to the July campaign | OpenAI describes a campaign from 1 July with 16,000 attempted requests and says independent researchers reported compaction vulnerabilities (OpenAI). | That the campaign used compaction smuggling. Xint cites it as context only, and the campaign predates Xint's August finding. |
| Scale of harm | Xint says the technique enables large scale distillation of frontier OpenAI models (Xint). | A distilled model, a cost at scale, or any measure of how many requests it would take. Xint's example is one small puzzle. |
The friendly names, and what they do not mean
Describing this as a bypass of protections for hidden reasoning does work the record does not do. Xint does not say anyone broke the encryption or obtained a key. Its mechanism, as described, has the server decrypt the reasoning for a model because a client asked the compaction step to, which is why Xint's takeaway calls any such step a potential "decryption oracle". That reading of the mechanism is this site's inference from Xint's description, not a statement by OpenAI.
Labels in OpenAI's documentation and posts, and what each does and does not establish. Quotations are from OpenAI's compaction guide and its post of 30 September 2026.
| Label | What it describes | What it does not establish |
|---|---|---|
| "Encrypted" (encrypted_content, the encrypted compaction item) | The client cannot read the item. | That the item cannot be made readable by a server step the client can instruct. |
| Opaque, and not meant to be read by a person (the compaction guide) | The developer's intended view of a compaction item. | A control. Xint says the item carried the reasoning verbatim when asked to. |
| "Protected reasoning" and "strengthened protections for hidden reasoning across users, workspaces, organizations, and model families" | OpenAI's account of what it hardened by 30 September, including closing a replay pathway. | Coverage of compaction items. The post does not say what was done about compaction. |
| Friendly to zero data retention (store set to false) | A property of where state is kept. | Any limit on what the item can be made to reveal. Xint's own run used store set to False. |
| A reasoning summary | The supported view of reasoning, per OpenAI's reasoning guide. | That the raw reasoning is unavailable to anyone. Summaries are what API users are meant to see. |
Technical details
The primaries print request and response field names, not indicators. Xint publishes no hashes, domains or captured traffic, and the prompt it used for the compaction step is not printed in its post; Xint says a demonstration script is in its GitHub repository, which this briefing did not fetch or reproduce. The blocks below are the artifacts that are printed, each copied exactly from the page named in its caption. No instruction text for the attack is given here.
First, the setting that switches on server side compaction. It is a request parameter in an ordinary create call. A team that wants to know where compaction is in use should search its code and gateways for context_management.
response = client.responses.create(
model="gpt-5.3-codex",
input=conversation,
store=False,
context_management=[{"type": "compaction", "compact_threshold": 200000}],
)
Second, the standalone call. The model and input are required in the example; the API reference lists instructions as an optional field on the same call. A defender reading request logs should treat a /responses/compact call that carries custom instructions as a different thing from one that does not (this reading is derived).
compacted = client.responses.compact(
model="gpt-6-astra",
input=long_input_items_array,
)
- `instructions: optional string or null`
A system (or developer) message inserted into the model's context.
Third, where the encrypted reasoning comes from. In stateless mode OpenAI's reasoning guide says reasoning items carry an encrypted_content property by default. Any log or transcript that stores a full response in that mode stores these items.
When you create a response in stateless mode, reasoning items in the response's `output` array include an `encrypted_content` property by default. Stateless mode applies when `store` is `false` or when your organization uses Zero Data Retention (ZDR). The API still accepts the legacy `reasoning.encrypted_content` value in `include` for compatibility, but doesn't require it.
Reasoning items in the `output` array will include an `encrypted_content` property containing encrypted reasoning tokens that you can pass to future calls.
Fourth, the control names CISA lists for model extraction. The advisory is about distillation campaigns by named companies, not about this bug, and its mitigations are generic; three of them fit the monitoring gap here.
AML.M0004 - Limit AI Service Query Volume and Rate: Per-key/IP quotas, rate limits, progressive throttling. Adversaries seem to be sensitive to rate limits since they implement sophisticated strategies to work within constraints.
AML.M0019 - Control Access to AI Models and Data in Production: User verification, authenticated API access, policy monitoring. This addresses fraudulent account pool exploitation.
AML.M0024 - AI Telemetry Logging: Log inputs/outputs for threat detection/forensics. This is foundational for behavioral detection and enables correlation with intelligence.
Last, a hunting list derived by this site from the field names above. It is not published by Xint or OpenAI and is a starting point for a provider or a gateway operator, not a detection rule.
Derived by this site. Fields worth logging per request on any service that fronts a reasoning API:
endpoint (responses, or responses/compact)
model on the request, and model that produced any encrypted item sent in
presence and length of the instructions field on compact calls
presence of context_management on create calls
account, organisation and key that made the item, against the one replaying it
output length of a compaction item against the input it was built from
What to do, in order
The checklist is written for two groups: teams that run or resell a reasoning API, and teams that build on one and rely on hidden reasoning as an IP or safety control. No customer action is stated by OpenAI for this bug, so every item is this site's reading of the primaries.
Take this with you
Ranked checklist
- List every server step that decrypts or reads hidden reasoning and also takes instructions from the client: compaction, summarisation, forking, handoff between models. Xint's takeaway calls each a potential decryption oracle. OpenAI's post adds that partner hosted deployments need the same protections as first party ones.
- Hold those steps to the same output controls as the main response path, and test them with reformatted output, not only plain text. Xint says a tab for space encoding was enough to get past usage policy classifiers.
- Decide on purpose whether encrypted items are bound to a user and conversation. The paper proposes it and also warns it conflicts with compaction and model switching, so the trade is a design choice to record, not an oversight to discover.
- Log and alert on the pattern, not only the volume: compact calls with custom instructions, items sent to a model other than the one that made them, items replayed across accounts, and compaction output unusually large against its input. Apply per key rate limits (CISA lists AML.M0004 and AML.M0024).
- Do not publish agent session logs that hold encrypted reasoning or compaction items. The paper reports decoding 315,320 reasoning blocks from public repositories and finding 367 personal data artifacts and 182 credentials. Whether a compaction item alone can be decoded from a log was not shown; OpenAI says it carries reasoning forward.
- If hidden reasoning is part of your IP protection or your safety review, write down what it is meant to stop. A reasoning summary is the supported view. An encrypted item is not audit evidence and not a secret you can rely on.
- Ask your vendor in writing which items and models the 23 October fix covers, and whether older models can still read compaction items made by newer ones. Xint's post leaves both open.
- Read the OpenAI and Xint pages again before acting. This briefing is time stamped 14:30 UTC on 27 October 2026, and an OpenAI statement on the Xint report could land at any time.
The question to put to a vendor
OpenAI's own guide calls the compaction item opaque, and its own post says protections for hidden reasoning were strengthened across users, workspaces, organizations and model families. Xint's account is that a sealed item stayed sealed to the client and still came out as text, because a server step read it and followed an instruction about how to write it. If a server will read the sealed reasoning and follow the client's instructions about how to write it out, what exactly is the seal protecting?
Key facts
Sources
- PrimaryStealing OpenAI Reasoning Traces via Compaction Smuggling, 26 October 2026. Read in full: the three calls, the token counts, the fidelity limits, the 23 October fix and $6,000 bounty. The researchers' own account, and the only source for the fixXint (Theori)accessed 2026-10-27
- PrimaryGhostCompact: How Compaction Made OpenAI Inference Nearly Free, 8 October 2026. Read in full: the earlier billing bug, the 21 September fix and $600 bounty, and the statement that compaction is steerableXint (Theori)accessed 2026-10-27
- PrimaryCompaction guide. Server side and standalone compaction, the encrypted compaction item described as opaque, and the example request shapesOpenAIaccessed 2026-10-27
- PrimaryAPI reference for POST /responses/compact. The optional instructions field and the model identifiers accepted, including gpt-5.6-solOpenAIaccessed 2026-10-27
- PrimaryReasoning guide. Raw reasoning not exposed, summaries offered, and encrypted_content returned in stateless modeOpenAIaccessed 2026-10-27
- PrimaryDisrupting a coordinated model-distillation campaign, 30 September 2026. Read in a browser (curl returned 403). Source of the sentence about conversation-compaction vulnerabilities and the July campaign figuresOpenAIaccessed 2026-10-27
- PrimaryStealing Reasoning Traces from Proprietary LLM APIs, submitted 10 August 2026. The abstract page and the full HTML text: the interchangeability finding, the disclosure section, the compaction tension and the public log scanarXivaccessed 2026-10-27
- PrimaryCybersecurity Advisory AA26-251A, 8 September 2026, industrial scale distillation campaigns. Used for the MITRE ATLAS mitigation names onlyCISA, NSA and FBIaccessed 2026-10-27
- Reported byReport of 26 October 2026 on the Xint post. Read only to check whether OpenAI had commented; it quotes no OpenAI statementSecurityWeekaccessed 2026-10-27


