Allow custom top-level request body fields per model_provider (e.g. gateway cache controls)
What's missing
A [model_providers.<id>] entry can customize the connection (base_url, wire_api, query_params, http_headers, env_http_headers, request_max_retries) but has no way to add fields to the request body Codex sends. config.schema.json sets additionalProperties: false on ModelProviderInfo, so arbitrary keys are rejected outright.
Why it matters
Provider gateways expose useful behavior as top-level body fields on the OpenAI-compatible Responses/Chat APIs. Concretely, the Vercel AI Gateway enables prompt caching for explicit-cache providers (Anthropic, MiniMax) via a caching: "auto" field (plus cache_ttl, cache_anchor_items) in the request body:
POST https://ai-gateway.vercel.sh/v1/responses
{ "model": "anthropic/claude-...", "caching": "auto", "cache_ttl": "1h", "input": [...] }
When Codex routes to a non-OpenAI model through such a gateway, it sends OpenAI-format requests with no cache markers, so caching never engages — and there's no config surface to opt in. This leaves cost/latency savings on the table for exactly the multi-turn/agentic traffic Codex generates.
Proposed change
Add an optional per-provider map of extra top-level body fields merged into each request — e.g.:
[model_providers.vercel]
name = "Vercel AI Gateway"
base_url = "https://ai-gateway.vercel.sh/v1"
wire_api = "responses"
request_body_params = { caching = "auto", cache_ttl = "1h" }
Merged into the outgoing JSON body (provider-supplied keys not overriding Codex-managed fields like model/input). This mirrors the existing http_headers/query_params design and would require relaxing additionalProperties or adding a named field to ModelProviderInfo.