Codex CLI / Codex App
Codex supports two wire protocols: responses and
chat. Choose based on model capability. Once
~/.codex/config.toml and XAI_API_KEY
are configured, Codex App can reuse the same gateway setup. On
Windows, the config path is
%USERPROFILE%\.codex\config.toml.
# ~/.codex/config.toml
model_provider = "xai"
model = "gpt-5.3-codex"
approval_policy = "never"
sandbox_mode = "danger-full-access"
network_access = true
preferred_auth_method = "apikey"
[model_providers.xai]
name = "xai"
base_url = ""
wire_api = "responses"
requires_openai_auth = false
env_key = "XAI_API_KEY"
# launch
export XAI_API_KEY="sk-Xvs..."
codex --yolo
# ~/.codex/config.toml
[model_providers.xai]
name = "xai"
base_url = ""
env_key = "XAI_API_KEY"
wire_api = "chat"
requires_openai_auth = false
[profiles.minimax]
model = "MiniMax-M2.5"
model_provider = "xai"
# launch
export XAI_API_KEY="sk-Xvs..."
codex --profile minimax
:: Config file path
:: %USERPROFILE%\.codex\config.toml
:: Set API key
set XAI_API_KEY=sk-Xvs...
:: Option A (responses)
codex
:: Option B (chat)
codex --profile minimax
# Config file path
# $env:USERPROFILE\.codex\config.toml
$env:XAI_API_KEY="sk-Xvs..."
# Option A (responses)
codex
# Option B (chat)
codex --profile minimax
Verify with: codex (responses) or codex --profile minimax (chat)
Claude Code (MiniMax-M2.5)
Claude Code integration is primarily environment-variable based.
The following example sets MiniMax-M2.5 as the
default model family via .
export XAI_API_KEY="sk-Xvs..."
export ANTHROPIC_AUTH_TOKEN="$XAI_API_KEY"
export ANTHROPIC_BASE_URL=""
# Optional: custom default model mapping for Claude families (not required)
export ANTHROPIC_DEFAULT_OPUS_MODEL="MiniMax-M2.5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="MiniMax-M2.5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="MiniMax-M2.5"
# launch Claude Code
claude
set XAI_API_KEY=sk-Xvs...
set ANTHROPIC_AUTH_TOKEN=%XAI_API_KEY%
set ANTHROPIC_BASE_URL=
:: Optional: custom default model mapping for Claude families (not required)
set ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M2.5
set ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M2.5
set ANTHROPIC_DEFAULT_HAIKU_MODEL=MiniMax-M2.5
claude
$env:XAI_API_KEY="sk-Xvs..."
$env:ANTHROPIC_AUTH_TOKEN=$env:XAI_API_KEY
$env:ANTHROPIC_BASE_URL=""
# Optional: custom default model mapping for Claude families (not required)
$env:ANTHROPIC_DEFAULT_OPUS_MODEL="MiniMax-M2.5"
$env:ANTHROPIC_DEFAULT_SONNET_MODEL="MiniMax-M2.5"
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL="MiniMax-M2.5"
claude
Verify with: claude
OpenCode (MiniMax-M2.5)
OpenCode connects through the OpenAI API endpoint. Put core setup
in ~/.config/opencode/opencode.json (on Windows, you
can use %USERPROFILE%\.config\opencode\opencode.json),
and set XAI_API_KEY. OpenAI API has two request formats:
Chat Completions (/v1/chat/completions) and
Responses (/v1/responses).
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"XAI": {
"options": {
"baseURL": "",
"apiKey": "{env:XAI_API_KEY}"
},
"models": {
"MiniMax-M2.5": {}
}
}
}
}
curl /chat/completions \
-H "Authorization: Bearer ${XAI_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model":"MiniMax-M2.5",
"messages":[{"role":"user","content":"Explain the purpose of a microservice gateway in one sentence"}]
}'
curl /responses \
-H "Authorization: Bearer ${XAI_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model":"gpt-5.3-codex",
"input":"Explain the purpose of a microservice gateway in one sentence"
}'
set XAI_API_KEY=sk-Xvs...
mkdir "%USERPROFILE%\.config\opencode" 2>nul
notepad "%USERPROFILE%\.config\opencode\opencode.json"
opencode debug config
$env:XAI_API_KEY="sk-Xvs..."
New-Item -ItemType Directory -Path "$env:USERPROFILE\.config\opencode" -Force | Out-Null
notepad "$env:USERPROFILE\.config\opencode\opencode.json"
opencode debug config
Verify with: opencode debug config
OpenClaw
OpenClaw can connect to OpenAI API and Claude API, and can also
be extended to OpenAI Responses API. XAI Router supports OpenAI
API and Claude API by default; for Responses mode,
set api = "openai-responses". Config path:
~/.openclaw/openclaw.json on Linux / macOS, and
%USERPROFILE%\.openclaw\openclaw.json on Windows.
{
"agents": {
"defaults": {
"model": { "primary": "xairouter/MiniMax-M2.5" }
}
},
"models": {
"mode": "merge",
"providers": {
"xairouter": {
"baseUrl": "",
"apiKey": "${XAI_API_KEY}",
"api": "openai-completions",
"models": [{ "id": "MiniMax-M2.5", "name": "MiniMax-M2.5" }]
}
}
}
}
{
"agents": {
"defaults": {
"model": { "primary": "xairouter/MiniMax-M2.5" }
}
},
"models": {
"mode": "merge",
"providers": {
"xairouter": {
"baseUrl": "",
"apiKey": "${XAI_API_KEY}",
"api": "anthropic-messages",
"models": [{ "id": "MiniMax-M2.5", "name": "MiniMax-M2.5" }]
}
}
}
}
{
"agents": {
"defaults": {
"model": { "primary": "xairouter/gpt-5.3-codex" }
}
},
"models": {
"mode": "merge",
"providers": {
"xairouter": {
"baseUrl": "",
"apiKey": "${XAI_API_KEY}",
"api": "openai-responses",
"models": [{ "id": "gpt-5.3-codex", "name": "gpt-5.3-codex" }]
}
}
}
}
set XAI_API_KEY=sk-Xvs...
mkdir "%USERPROFILE%\.openclaw" 2>nul
notepad "%USERPROFILE%\.openclaw\openclaw.json"
openclaw models status
$env:XAI_API_KEY="sk-Xvs..."
New-Item -ItemType Directory -Path "$env:USERPROFILE\.openclaw" -Force | Out-Null
notepad "$env:USERPROFILE\.openclaw\openclaw.json"
openclaw models status
Verify with: openclaw models status