diff --git a/aws/codex.sh b/aws/codex.sh index 8d03e2bf..654d01ac 100755 --- a/aws/codex.sh +++ b/aws/codex.sh @@ -12,7 +12,7 @@ fi log_info "Codex CLI on AWS Lightsail" echo "" -agent_install() { install_agent "Codex CLI" "npm install -g @openai/codex@0.94.0" cloud_run; } +agent_install() { install_agent "Codex CLI" "npm install -g @openai/codex" cloud_run; } agent_env_vars() { generate_env_config \ "OPENROUTER_API_KEY=${OPENROUTER_API_KEY}" diff --git a/daytona/codex.sh b/daytona/codex.sh index d80109ed..76ad04ac 100644 --- a/daytona/codex.sh +++ b/daytona/codex.sh @@ -13,7 +13,7 @@ log_info "Codex CLI on Daytona" echo "" agent_install() { - install_agent "Codex CLI" "npm install -g @openai/codex@0.94.0" cloud_run + install_agent "Codex CLI" "npm install -g @openai/codex" cloud_run } agent_env_vars() { diff --git a/digitalocean/codex.sh b/digitalocean/codex.sh index 1dec6ec9..6c7c0f8f 100755 --- a/digitalocean/codex.sh +++ b/digitalocean/codex.sh @@ -12,7 +12,7 @@ fi log_info "Codex CLI on DigitalOcean" echo "" -agent_install() { install_agent "Codex CLI" "npm install -g @openai/codex@0.94.0" cloud_run; } +agent_install() { install_agent "Codex CLI" "npm install -g @openai/codex" cloud_run; } agent_env_vars() { generate_env_config \ "OPENROUTER_API_KEY=${OPENROUTER_API_KEY}" diff --git a/fly/lib/agents.ts b/fly/lib/agents.ts index 9d58090a..88ad7725 100644 --- a/fly/lib/agents.ts +++ b/fly/lib/agents.ts @@ -364,7 +364,7 @@ export const agents: Record = { codex: { name: "Codex CLI", - install: () => installAgent("Codex CLI", "npm install -g @openai/codex@0.94.0"), + install: () => installAgent("Codex CLI", "npm install -g @openai/codex"), envVars: (apiKey) => [`OPENROUTER_API_KEY=${apiKey}`], configure: (apiKey) => setupCodexConfig(apiKey), launchCmd: () => diff --git a/gcp/codex.sh b/gcp/codex.sh index c08d6640..d63de8cb 100755 --- a/gcp/codex.sh +++ b/gcp/codex.sh @@ -12,7 +12,7 @@ fi log_info "Codex CLI on GCP Compute Engine" echo "" -agent_install() { install_agent "Codex CLI" "npm install -g @openai/codex@0.94.0" cloud_run; } +agent_install() { install_agent "Codex CLI" "npm install -g @openai/codex" cloud_run; } agent_env_vars() { generate_env_config \ "OPENROUTER_API_KEY=${OPENROUTER_API_KEY}" diff --git a/hetzner/codex.sh b/hetzner/codex.sh index e1b3fbf8..7650f652 100755 --- a/hetzner/codex.sh +++ b/hetzner/codex.sh @@ -12,7 +12,7 @@ fi log_info "Codex CLI on Hetzner Cloud" echo "" -agent_install() { install_agent "Codex CLI" "npm install -g @openai/codex@0.94.0" cloud_run; } +agent_install() { install_agent "Codex CLI" "npm install -g @openai/codex" cloud_run; } agent_env_vars() { generate_env_config \ "OPENROUTER_API_KEY=${OPENROUTER_API_KEY}" diff --git a/local/codex.sh b/local/codex.sh index dd8c53f0..d2524bd2 100644 --- a/local/codex.sh +++ b/local/codex.sh @@ -13,7 +13,7 @@ log_info "Codex CLI on local machine" echo "" agent_install() { - install_agent "Codex CLI" "npm install -g @openai/codex@0.94.0" cloud_run + install_agent "Codex CLI" "npm install -g @openai/codex" cloud_run } agent_env_vars() { diff --git a/manifest.json b/manifest.json index d05fd888..d4ff1331 100644 --- a/manifest.json +++ b/manifest.json @@ -130,7 +130,7 @@ "name": "Codex CLI", "description": "OpenAI's open-source coding agent", "url": "https://github.com/openai/codex", - "install": "npm install -g @openai/codex@0.94.0", + "install": "npm install -g @openai/codex", "launch": "codex", "env": { "OPENAI_API_KEY": "${OPENROUTER_API_KEY}", diff --git a/shared/common.sh b/shared/common.sh index 3124b163..267d6bca 100644 --- a/shared/common.sh +++ b/shared/common.sh @@ -3359,12 +3359,7 @@ wait_for_openclaw_gateway() { # ============================================================ # Setup Codex CLI config.toml for OpenRouter -# Uses wire_api="chat" (Chat Completions) because OpenRouter's Responses API -# proxy drops required fields (id, content) from conversation-history items on -# multi-turn requests, causing "Invalid Responses API request" errors. -# Codex >=0.97.0 removed "chat" support, so scripts pin @openai/codex@0.94.0. -# TODO: unpin once OpenRouter's /responses proxy handles round-trip correctly. -# Tracking: https://github.com/openai/codex/issues/12114 +# Uses the native model_provider config instead of OPENAI_BASE_URL env var. # Usage: setup_codex_config OPENROUTER_KEY UPLOAD_CALLBACK RUN_CALLBACK setup_codex_config() { local openrouter_key="${1}" @@ -3382,7 +3377,7 @@ model_provider = "openrouter" name = "OpenRouter" base_url = "https://openrouter.ai/api/v1" env_key = "OPENROUTER_API_KEY" -wire_api = "chat" +wire_api = "responses" TOML ) diff --git a/sprite/codex.sh b/sprite/codex.sh index 30c9c134..38573f3b 100755 --- a/sprite/codex.sh +++ b/sprite/codex.sh @@ -13,7 +13,7 @@ log_info "Codex CLI on Sprite" echo "" agent_install() { - install_agent "Codex CLI" "export PATH=\$(npm prefix -g 2>/dev/null)/bin:\$PATH && npm install -g @openai/codex@0.94.0" cloud_run + install_agent "Codex CLI" "export PATH=\$(npm prefix -g 2>/dev/null)/bin:\$PATH && npm install -g @openai/codex" cloud_run } agent_env_vars() {