extensions.{provider} passthrough to prevent credential injection, routing bypass, and billing bypass. Fields are handled in one of two ways:
- Silent strip + warning — auth keys and core request fields are removed from the request, and a message is added to
routing_metadata.warnings[]. The request proceeds. - Hard rejection (400) — platform-governed parameters tied to the selected offering’s billing or compliance envelope return
400 invalid_request_error. The request does not proceed.
Authentication keys
Blocked at all nesting depths (recursive). These fields are never accepted in passthrough — setting them produces a warning and the field is stripped before the request reaches the provider.| Category | Blocked keys |
|---|---|
| Standard auth | api_key, apikey, api-key, authorization, auth, bearer, token, access_token, accesstoken, secret, secret_key, secretkey, credential, credentials, password |
| Provider-specific | x-api-key, x-auth-token, anthropic-api-key, openai-api-key, google-api-key |
edge-worker/src/routing/security.ts — BLOCKED_AUTH_KEYS.
Core request fields
Blocked at top level only withinextensions.{provider}. Nested occurrences (e.g., inside provider-specific containers like generation_config) are not stripped. Setting one at top level produces a warning and the field is stripped before the request reaches the provider.
| Category | Blocked fields |
|---|---|
| Routing / billing bypass | model, messages, stream, stream_options, max_tokens, max_completion_tokens, n |
| Capability routing | tools, tool_choice, response_format, parallel_tool_calls |
| Model behavior | temperature, top_p, presence_penalty, frequency_penalty, logit_bias, logprobs, top_logprobs, seed, stop |
| Platform-controlled | user, inference_geo, inferencegeo |
| Provider-specific equivalents | contents, system_instruction, systeminstruction, system |
systemInstruction and system_instruction both match).
Source of truth: edge-worker/src/routing/security.ts — BLOCKED_CORE_FIELDS.
Platform-governed parameters
Blocked with a hard400 invalid_request_error. The set is derived from each selected offering’s api_params at request time — it is not a fixed list. Which parameters are platform-governed depends on the offering Auriko picked for your request.
Representative examples:
| Provider | Representative platform-governed parameters |
|---|---|
| OpenAI | service_tier |
| Anthropic | speed |
model, or scope which providers Auriko considers via routing.providers / routing.exclude_providers. Different offerings can carry different api_params, so a different offering may ship with the value you want.
Source of truth: edge-worker/src/routing/owned-params.ts and edge-worker/src/adapter.ts.
Examples
Silent strip with warning
Request:extensions.anthropic.metadata forwarded to Anthropic.
Hard rejection (400)
Request (when Auriko routes to an offering whoseapi_params includes service_tier — e.g., OpenAI flex or priority tiers):