Repository navigation
[Research]: AgentRouter content-blocked responses correlate with non-English first prompts #1804
Description
Summary
This issue tracks only the language/content-dependent half split from #1689.
Reports indicate that agentrouter.org may return HTTP 400 with error.code: "content-blocked" more often for benign Portuguese/Spanish first-user prompts than for equivalent English prompts.
This is separate from burst-sensitive failures. Request pacing, retry/backoff, and burst behavior remain tracked in #1689.
Why this is research / needs-info
The currently proposed workaround is to prepend an English instruction frame to the user's first message before forwarding it upstream. That changes user content and therefore changes request semantics. We should not adopt prompt mutation merely because it appears to bypass a third-party WAF.
Before implementing any OpenCodex-side language workaround, we need evidence that distinguishes:
- deterministic content filtering from burst/rate state;
- language effects from specific blocked phrases;
- gateway behavior from model/provider behavior;
- a supported provider contract from behavior inferred from a third-party reference implementation.
Evidence required
Please provide a controlled, redacted matrix against the same AgentRouter provider/account and current OpenCodex dev:
- Equivalent benign prompts in English, Portuguese, and Spanish, sent without burst traffic.
- Repeated runs after a sufficient idle period so prior WAF/burst state does not contaminate the comparison.
- Exact HTTP status and sanitized error code/type for each run.
- A control showing whether retrying the unchanged request after an idle period changes the result.
- If available, authoritative AgentRouter documentation describing the language/content filter contract.
Do not include credentials, full request identifiers, or sensitive prompt content.
Acceptance boundary
A fix should preserve user content unless there is an explicit, documented, opt-in compatibility policy with clear semantics.
A global or host-name-triggered hidden preamble is not an accepted implementation direction at this stage.
Potential outcomes after evidence:
- upstream/documentation-only guidance if this is intentional provider filtering;
- a provider-specific opt-in compatibility mode if a stable supported contract exists;
- no OpenCodex change if the only workaround is silently altering prompts.
Relationship
- Split from [Bug]: AgentRouter 400 content-blocked under burst traffic; characterize pacing/retry mitigation #1689.
- [Bug]: AgentRouter 400 content-blocked under burst traffic; characterize pacing/retry mitigation #1689 remains the burst/pacing/retry issue.
Activity
coderabbitai commentedon Aug 16, 2026
🔗 Related PRs
#350 - fix(responses): reconstruct dropped SSE output items + dedupe replayed multi-agent guidance (
#334,#326) [merged]#416 - fix(web-search): bound sidecar search deadline to 60s + graceful degradation (
#398) [merged]#889 - fix(providers): Copilot mixed-wire routing, DeepSeek service_tier + reasoning replay, Claude 4.6/4.7 1M windows [open]
#892 - fix: bound the six remaining retained-state leaks (
#820wave 2) [merged]#1020 - fix(anthropic): surface upstream error bodies through sidecar bridges [merged]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.🧪 Issue enrichment is currently in open beta.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:💬 Have feedback or questions? Drop into our discord!
lidge-jun commentedon Aug 18, 2026
Closing. The Codex prompt/patch surface this was characterized against has since changed substantially, and the correlation reported here was never reproduced with the requested evidence. Treating it as overtaken by events — if AgentRouter content-blocks still correlate with non-English first prompts on a current build, reopen with a fresh capture against the current prompt shape.