Repository navigation
[Responses compatibility] Third-party providers reject requests containing unsupported access_programs parameter #4907
Description
Client or integration
Codex App
Affected providers
Multiple third-party / OpenAI-compatible providers.
I first observed this with Console Go, but this is not specific to OpenCode Go.
Current behavior
When using recent Codex App versions through OpenCodex with third-party providers, some requests fail immediately because the upstream receives the Codex Responses API field access_programs.
Example error:
Error from provider (Console Go): Upstream request failed: [invalid_request_error] unknown parameter `access_programs`
I have observed the same class of failure with more than one provider, so this appears to be a generic Responses/provider compatibility issue rather than an OpenCode Go-specific problem.
Recent Codex versions include the optional field:
#[serde(skip_serializing_if = "Option::is_none")]
pub access_programs: Option<AccessPrograms>,in ResponsesApiRequest.
The normal Codex request construction path currently initializes it as:
access_programs: None,but Codex also has paths where access_programs may be populated and serialized onto the wire.
When such a request is routed through OpenCodex to a provider that does not implement this OpenAI/Codex-specific field, the upstream rejects the entire request.
Expected behavior
OpenCodex should normalize Responses API payloads according to the capabilities of the selected upstream provider.
For providers that do not support access_programs, the field should be stripped before forwarding.
If a provider supports an equivalent capability with a different representation, OpenCodex should translate it instead.
A Codex-specific optional request field should not make otherwise compatible third-party providers unusable.
Minimal reproduction
- Configure a third-party / OpenAI-compatible provider in OpenCodex.
- Use it from recent Codex App.
- Start a normal inference request.
- Observe the forwarded request being rejected by the upstream with an unknown-parameter error for
access_programs.
Example:
[invalid_request_error] unknown parameter `access_programs`
Scope
This does not appear to be specific to OpenCode Go.
I have reproduced the same class of failure across multiple providers that otherwise accept Codex/OpenAI-compatible requests but do not recognize access_programs.
This suggests the compatibility boundary may belong in the generic Responses forwarding / provider normalization layer rather than in one provider-specific adapter.
Possible root cause
Not confirmed yet.
Two possibilities seem worth checking:
- Codex App is legitimately populating
access_programsfor some requests/models, and OpenCodex forwards it unchanged to providers that do not support it. - OpenCodex reconstructs or preserves the field during Responses transformation without checking upstream capability.
Either way, the important invariant seems to be:
Provider-specific upstream requests should only contain fields supported by that provider.
Suggested direction
Before forwarding a Responses request to a third-party provider:
- determine whether the provider supports
access_programs; - strip it when unsupported;
- or map it only for providers with an equivalent capability.
Ideally this should be handled in the common Responses compatibility layer rather than patched independently in each provider.
Notes
Codex currently defines access_programs directly in its Responses API request schema and skips serialization only when the value is None.
There are also explicit code/test paths where access_programs is populated and included in the wire payload, so treating it as a field that may legitimately arrive from newer Codex clients seems safer than assuming it will always be absent.
Checks
- Searched existing issues for
access_programs - Confirmed this is not limited to OpenCode Go
- Removed API keys, account identifiers, and credentials
- Exact provider list can be added if useful
Activity
github-actions commentedon Sep 17, 2026
Issue reopened
The automated check no longer treats this report as insufficient detail (substantial structured content was found). Thanks for updating it.
[-][Provider compatibility] OpenCode Go rejects Codex requests with unknown parameter `access_programs`[/-][+][Responses compatibility] Third-party providers reject requests containing unsupported access_programs parameter[/+]lidge-jun commentedon Sep 17, 2026
리뷰 · 우선순위 28 / 80
이 이슈는 최근 Codex App이 Responses 요청에
access_programs를 붙이고, OpenCodex가 그걸 서드파티/OpenAI 호환 upstream에 그대로내서unknown parameteraccess_programs`` 400이 난다는 보고다. 재현은 Console Go뿐 아니라 여러 제공자에서 같은 종류라고 했고, 고치려면 제공자 능력에 맞게 필드를 지우거나 번역하자는 방향이다.지금
devHEAD41f1832f6a893547f253d728bd93607e1793dd13(패키지 2.58.0)에는 이미 같은 구멍이 막혀 있다.#4884가4b234da42로 머지됐고, 원본 이슈#4853도 오늘 09:57 KST에 그 커밋으로 수동 클로즈됐다.src/adapters/openai-responses/request-strips.ts의CANONICAL_ONLY_TOP_LEVEL_FIELDS에access_programs가 들어 있고,stripCanonicalOnlyTopLevelFields가 OpenCodex가 운영하지 않는 destination에서만 그 키를 지운다. OpenAI/ChatGPT canonical destination에는 남긴다.tests/responses/responses-canonical-only-top-level-fields.test.ts가 서드파티에는 없고 canonical에는 남는 것, raw body 비변이, 미등록 키는 그대로 두는 것까지 잠근다.그래서 이 글은 새 버그 리포트라기보다
#4853의 중복(또는 이미 tip에 고친 뒤의 구버전 재보고)에 가깝다. 보고자가 아직 2.57.0 이하면dev/2.58.0 쪽을 쓰는지부터 확인하면 된다. types.ts/config.ts 분할과는 무관하고, preview deploy도 아니다.한 가지 남는 판단은, 보고 본문이 「지원하면 번역」까지 넓게 적은 점이다. 지금 tip 해법은 관측된 private 키를 표로 지우는 쪽이지, 일반 unknown-field sanitizer나 capability 번역층이 아니다. 그게 의도다(
#4884클로즈 노트와 테스트 주석). 번역층이 필요하면 별 이슈로 새로 열어야 한다.정리하면 우선순위는 낮다. tip에는 이미 고쳤고 원본도 닫혔다. 같은 증상이 2.58.0/
dev에서도 나면 그때는 strip 호출 경로(passthrough vs 다른 forward)를 새로 추적하면 된다.src/adapters/openai-responses/request-strips.ts - access_programs는 이미 CANONICAL_ONLY_TOP_LEVEL_FIELDS에 있다.
#4853 / #4884 - 같은 결함의 원본·수정. #4853은 4b234da42로 클로즈됨.
tests/responses/responses-canonical-only-top-level-fields.test.ts - 서드파티 strip / canonical keep 계약이 이미 있다.
본문 suggested direction(번역층) - tip 해법 범위 밖. 새 요구면 별 이슈.
메인테이너의 판단이 필요한 지점
너의 추천
#4853중복·이미#4884로 tip 수정 완료로 클로즈. 보고자에게 2.58.0/dev에서 재현되면 새 경로를 적어 달라고 안내.이 댓글은 grok-bot이 작성했습니다