What
Muse Spark 1.3 Contributor via OpenCode Go (endpoint https://opencode.ai/zen/go/v1/responses) fails on the FIRST request, before any tool executes, when the client sends a recursive tool schema:
Error from provider (Console Go): Upstream request failed: [invalid_request_error] Recursive JSON schemas are not currently supported
Meta returns HTTP 400 for recursive schemas (https://ai.developer.meta.com/docs/features/structured-output).
Same error class as #45800 (postgres MCP $defs/__schema0 self-ref broke Muse 1.2). This report shows it's not MCP-specific: Codex Desktop's built-in app tools (codex_app MCP: automation_update, create_thread, send_message_to_thread, fork_thread, handoff_thread) trigger it too. Proven by elimination: same codex binary (0.153.4), same config/model/provider succeeds via codex exec (no Desktop-only tools) and fails in Desktop (with them). OpenAI-side report: openai/codex#44144.
Ask
Apply recursive-$ref sanitization Meta-bound in the provider transform layer (the approach from unmerged #29295 - inline local $refs, replace cycles with permissive {} - or the merged #16910 fallback {type:object, additionalProperties:true}), so one strict upstream doesn't break every tool-heavy client. transform.ts currently has sanitizers for OpenAI/Moonshot/Gemini but nothing Meta/Muse-shaped.
What
Muse Spark 1.3 Contributor via OpenCode Go (endpoint https://opencode.ai/zen/go/v1/responses) fails on the FIRST request, before any tool executes, when the client sends a recursive tool schema:
Meta returns HTTP 400 for recursive schemas (https://ai.developer.meta.com/docs/features/structured-output).
Relation to #45800
Same error class as #45800 (postgres MCP $defs/__schema0 self-ref broke Muse 1.2). This report shows it's not MCP-specific: Codex Desktop's built-in app tools (codex_app MCP: automation_update, create_thread, send_message_to_thread, fork_thread, handoff_thread) trigger it too. Proven by elimination: same codex binary (0.153.4), same config/model/provider succeeds via
codex exec(no Desktop-only tools) and fails in Desktop (with them). OpenAI-side report: openai/codex#44144.Ask
Apply recursive-$ref sanitization Meta-bound in the provider transform layer (the approach from unmerged #29295 - inline local $refs, replace cycles with permissive {} - or the merged #16910 fallback {type:object, additionalProperties:true}), so one strict upstream doesn't break every tool-heavy client. transform.ts currently has sanitizers for OpenAI/Moonshot/Gemini but nothing Meta/Muse-shaped.