Skip to content

fix(responses): stop marking native collaboration calls as plaintext - #15368

Merged
diegosouzapw merged 1 commit into
diegosouzapw:release/v3.8.52from
HouMinXi:fix/responses-plaintext-mark
Oct 6, 2026
Merged

diegosouzapw merged 1 commit into
diegosouzapw:release/v3.8.52from
HouMinXi:fix/responses-plaintext-mark

Conversation

@HouMinXi

@HouMinXi HouMinXi commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Summary

  • encrypted_function_args set to an empty array is the marker Codex uses for a call delivered as plaintext. The non-streaming translator stamped that marker onto every collaboration call, including ones that arrived already in Responses shape.
  • The sanitizer rebuilt each function_call without its namespace, status or encrypted arguments, and the stream path restored the identity without writing it back into the forwarded event.
  • Only a request translated from Chat into Responses gets the empty marker now. A native Responses call keeps the upstream fields as they arrived.

Related Issues

Validation

  • Change type: other (Responses passthrough)
  • Focused tests: node --import tsx/esm --test tests/unit/issue-15088-native-responses-collaboration-plaintext.test.ts (6 pass)
  • eslint on the changed files, with the repo suppression file
  • Reconciled with release/v3.8.52 @ 23a1148486
  • New test covers the change
  • Defect injection: restoring the unconditional marker makes the native passthrough case fail, and the change was restored

Tests Added Or Updated

  • tests/unit/issue-15088-native-responses-collaboration-plaintext.test.ts (added)

Coverage Notes

  • The test asserts a native collaboration call keeps its namespace and does not gain an empty encrypted_function_args, while a call translated from Chat still gets the marker.

Reviewer Notes

  • The Chat-to-Responses path still stamps the empty marker. That is the correct signal for a call OmniRoute translated from plaintext, and the existing cases cover it.

encrypted_function_args set to an empty array is the marker Codex uses
for a call that was delivered as plaintext. The non-streaming translator
stamped that marker onto every collaboration call, including ones that
arrived already in Responses shape. The sanitizer also rebuilt each
function_call without its namespace, status or encrypted arguments, and
the stream path restored the identity without writing it back.

Only a request that was translated from Chat into Responses gets the
empty marker now. A native Responses call keeps the upstream fields as
they arrived, and a changed identity is written back into the forwarded
event.

Signed-off-by: Minxi Hou <houminxi@gmail.com>
@HouMinXi
HouMinXi requested a review from diegosouzapw as a code owner October 2, 2026 18:20
@diegosouzapw
diegosouzapw merged commit bf1f9e8 into diegosouzapw:release/v3.8.52 Oct 6, 2026
43 of 51 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(api): native Responses collaboration calls falsely marked plaintext

2 participants