You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What happened: during multi-round compression on the Responses path, the proxy remapped upstream output items to ids of the form msg-proxy-2-<upstream-id>. With a 54-char upstream id that produces a 66-char id, over the upstream 64-char cap for input[].id. Codex Desktop persists that id into its rollout, so every subsequent request replays it and gets:
Invalid 'input[42].id': string too long. Expected a string with maximum length 64 ...
The fix (two parts):
Proxy-synthesized ids now use a short deterministic digest (msg-proxy-2-<7-char-hash>, ≤ ~21 chars) — never over the cap again.
Existing poisoned conversations are healed on the fly: any input[].id longer than 64 chars is rewritten to a short deterministic id (msg-fix-<hash>) before the request goes upstream, so a rollout that is currently 400-ing on every turn recovers by itself on the next request — no client-side cleanup needed.
Update: the fix now lives in #243 (by @Haerbin23456 — cleaner root-cause fix reusing the existing hashId()), with the ingress-healing commit added on top. #244 closed as superseded. The four test-matrix jobs + version-guard pass on #243; build-artifact fails only due to the known fork-PR npm-secret limitation, not code.
Activity
ranxianglei commentedon Aug 25, 2026
Model: qwen3.8-27b (vllm)
Root cause found and fixed in #244.
What happened: during multi-round compression on the Responses path, the proxy remapped upstream output items to ids of the form
msg-proxy-2-<upstream-id>. With a 54-char upstream id that produces a 66-char id, over the upstream 64-char cap forinput[].id. Codex Desktop persists that id into its rollout, so every subsequent request replays it and gets:The fix (two parts):
msg-proxy-2-<7-char-hash>, ≤ ~21 chars) — never over the cap again.input[].idlonger than 64 chars is rewritten to a short deterministic id (msg-fix-<hash>) before the request goes upstream, so a rollout that is currently 400-ing on every turn recovers by itself on the next request — no client-side cleanup needed.Will ship in the next release.
fix: heal already-poisoned Responses rollouts at ingress (ranxianglei…
ranxianglei commentedon Aug 25, 2026
Model: qwen3.8-27b (vllm)
Update: the fix now lives in #243 (by @Haerbin23456 — cleaner root-cause fix reusing the existing
hashId()), with the ingress-healing commit added on top. #244 closed as superseded. The four test-matrix jobs + version-guard pass on #243;build-artifactfails only due to the known fork-PR npm-secret limitation, not code.fix: scope Responses ingress id healing to Bili's msg-proxy namespace (…
fix: scope Responses ingress id healing to Bili's msg-proxy namespace (…
docs: MESSAGE-IDENTITY — content hashes as the cross-turn join key (r…
Merge master (7056dc5, v0.1.57) into PR branch to resolve conflicts
fix: keep proxy-synthesized Responses item ids within the 64-char ups…