perf: avoid returning unused thread history during session resume - #382
Open
robinfai wants to merge 2 commits into
Open
perf: avoid returning unused thread history during session resume#382robinfai wants to merge 2 commits into
robinfai wants to merge 2 commits into
Conversation
robinfai
marked this pull request as ready for review
August 9, 2026 16:46
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
excludeTurns: truewhen ACPsession/resumeandsession/loadestablish the app-server subscriptionthread/read({ includeTurns: true })unchanged forsession/load, preserving full ACP history replayWhy
thread/resumeincludes the reconstructed turn history by default. Neither ACP path consumes that response history:session/resumemust not replay it, whilesession/loaddeliberately reads the authoritative full history with a subsequentthread/read.In one observed run on a real legacy thread backed by a 486 MiB rollout (77 turns, 2,306 items), Codex 0.147.0 produced:
excludeTurns: trueThis removes one unused large JSON response from both lifecycle paths. For
session/load, the required full history still comes fromthread/read, so the history and tool-call replay behavior introduced in #208 remains unchanged.The adapter already opts into app-server experimental APIs and depends on
@openai/codex ^0.147.0. The checked-in generated bindings currently omit experimental fields, so this uses the same local-type pattern already used for experimental thread settings instead of regenerating the whole experimental schema.Validation
npm run typechecknpm test— 357 passed, 28 skipped, including a transport-level assertion for the experimental JSON-RPC parameternpm run buildnpm run codex-test -- -p "Reply with exactly: resume-history-validation" -o summary— completed withend_turn(49 Codex events, 8 ACP events)