provider/openaicompat sends the requested effort level verbatim (including the literal "off" since PR #122) and the provider is the final judge — the documented policy in AGENTS.md's "Reasoning effort" section. Bifrost normalizes upstream differences, so no configured route rejects a level today.
A future non-normalizing OpenAI-compatible gateway could 400 on a level string it does not accept. The failure mode is bounded and loud (classifyStatus marks 400 non-retryable: zero base-loop retries, deterministic-tier park in the goal loop), but a host that must gate levels per model needs its own mapping — transcode.go:153-154 already flags the seam.
Filed from the PR #122 review (round-2 reviewer recommendation) so the concern survives the resolved PR thread. No configured route needs this today.
https://claude.ai/code/session_01WG6N8YSSwXMma1DKTMwJdf
provider/openaicompat sends the requested effort level verbatim (including the literal "off" since PR #122) and the provider is the final judge — the documented policy in AGENTS.md's "Reasoning effort" section. Bifrost normalizes upstream differences, so no configured route rejects a level today.
A future non-normalizing OpenAI-compatible gateway could 400 on a level string it does not accept. The failure mode is bounded and loud (classifyStatus marks 400 non-retryable: zero base-loop retries, deterministic-tier park in the goal loop), but a host that must gate levels per model needs its own mapping — transcode.go:153-154 already flags the seam.
Filed from the PR #122 review (round-2 reviewer recommendation) so the concern survives the resolved PR thread. No configured route needs this today.
https://claude.ai/code/session_01WG6N8YSSwXMma1DKTMwJdf