Provider
OpenCode Go (opencode-go)
What is the compatibility problem?
Two independently reported defects on the same provider, both caused by OpenCodex not modelling what the OpenCode Go endpoint requires on the wire. Each is closed individually and absorbed here:
Missing session header. The opencode-go registry row in src/providers/registry.ts defines no session-header behavior, and x-opencode-session appears nowhere under src/. Requests therefore arrive without the session identity the upstream expects.
Unsanitized web_search field. The Muse sanitizer in src/adapters/openai-responses.ts removes search_content_types but preserves indexed_web_access, which Muse Spark 1.3 rejects. The sanitizer knows this tool needs field-level filtering; it just does not filter this field.
Both are the same shape of bug: a provider-specific wire requirement that the adapter does not represent, so the request is well-formed for OpenAI and wrong for this upstream.
Expected behavior
opencode-go requests carry a stable x-opencode-session value for the life of a session.
- The Muse sanitizer drops
indexed_web_access alongside search_content_types, and the sanitizer's field list is expressed so that the next rejected field is a one-line addition rather than a new investigation.
Reproduction
Send any Codex request through an opencode-go provider and inspect the outbound headers for x-opencode-session. For the second defect, send a Codex web_search turn to Muse Spark 1.3 and observe the upstream rejection naming indexed_web_access.
Additional context
Absorbs #3344 and #3362. Credit for the original reports belongs to @colthreepv and @0disoft, who each supplied the upstream evidence that made these diagnosable.
Checks
Provider
OpenCode Go (
opencode-go)What is the compatibility problem?
Two independently reported defects on the same provider, both caused by OpenCodex not modelling what the OpenCode Go endpoint requires on the wire. Each is closed individually and absorbed here:
x-opencode-sessionweb_searchindexed_web_accessMissing session header. The
opencode-goregistry row insrc/providers/registry.tsdefines no session-header behavior, andx-opencode-sessionappears nowhere undersrc/. Requests therefore arrive without the session identity the upstream expects.Unsanitized web_search field. The Muse sanitizer in
src/adapters/openai-responses.tsremovessearch_content_typesbut preservesindexed_web_access, which Muse Spark 1.3 rejects. The sanitizer knows this tool needs field-level filtering; it just does not filter this field.Both are the same shape of bug: a provider-specific wire requirement that the adapter does not represent, so the request is well-formed for OpenAI and wrong for this upstream.
Expected behavior
opencode-gorequests carry a stablex-opencode-sessionvalue for the life of a session.indexed_web_accessalongsidesearch_content_types, and the sanitizer's field list is expressed so that the next rejected field is a one-line addition rather than a new investigation.Reproduction
Send any Codex request through an
opencode-goprovider and inspect the outbound headers forx-opencode-session. For the second defect, send a Codexweb_searchturn to Muse Spark 1.3 and observe the upstream rejection namingindexed_web_access.Additional context
Absorbs #3344 and #3362. Credit for the original reports belongs to @colthreepv and @0disoft, who each supplied the upstream evidence that made these diagnosable.
Checks