Integration & Compatibility
External call returns 403 block / 403 Forbidden
Check in order:
- Whether the token group matches the current model type
- Whether the Base URL has the wrong
/v1(Claude types omit it, Codex needs it) - Whether the
User-Agentheader is missing or set to the wrong model type (don't reuse Claude's UA for Codex) - Whether the client actually sent the headers (some clients show them in the UI but don't send them)
- Whether
Authorizationis still inBearer sk-***format
How to set User-Agent? Examples per scenario
Claude integration:
"User-Agent": "claude-cli/2.0.76 (external, cli)"Codex integration:
"User-Agent": "codex_cli_rs/0.77.0 (Windows 10.0.26100; x86_64) WindowsTerminal"Domestic model integration (use a browser-type UA):
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0"Does the Base URL need /v1 or not?
- Claude-type (Anthropic Messages protocol):
https://your-request-address(without/v1) - Codex-type (OpenAI Responses protocol):
https://your-request-address/v1(with/v1)
The most common mistake is adding /v1 to a Claude address, or omitting /v1 from a Codex address.
Which 5 things to confirm before integrating?
Before configuring, line up these 5 — any mismatch can cause 403 / 401 / model unavailable:
- Group: which model and group the Key belongs to
- Protocol: whether the client uses
Anthropic MessagesorOpenAI Responses - Base URL: Claude-type omits
/v1, Codex-type includes/v1 - Headers: integrations need the matching
User-Agent - Model: some groups allow leaving it blank, others require an exact model ID
JetBrains IDE shows the plugin but calls return 401
Check first:
- Whether the IDE picked up stale local auth state (OAuth leftovers)
- Whether the Key is on the correct group
- Whether the plugin overrode the local
settings.json
Recommended: configure Claude Code or Codex locally with CC Switch first, confirm the CLI works, then reuse that local environment in the IDE.
JetBrains / Trae — local CLI works but IDE doesn't
The problem isn't the Key, it's the IDE-side config. Check whether the IDE read the wrong config file, didn't send the headers, or has extra restrictions on the local proxy/certificate.
Changed the Base URL in Trae but still can't connect
Check first:
- Whether the Claude / Codex Base URLs are swapped (Claude without
/v1, Codex with/v1) - Whether the plugin allows saving a full custom address
- Whether the current plugin version actually supports integration
- If Claude works but Codex doesn't, most likely the Codex
/v1is missing, ormodelis still set to a Claude model name