通过 Azure OpenAI 连接模型服务

Foundry Codex 专页走 v1 Responses:用户层 [model_providers.azure],base_url 必须带 /openai/v1,不要再塞 query_params 的 api-version。env_key = AZURE_OPENAI_API_KEY。

Azure OpenAI 官方 Codex 网关:profile 写 [model_providers.azure],base_url 是 https://YOUR_RESOURCE_NAME.openai.azure.com/openai/v1,env_key 读 AZURE_OPENAI_API_KEY。

这是换 Codex 使用的模型,流量留在 Azure Foundry,不是添加 MCP 服务。Microsoft Foundry 的 Codex 专页用 v1 Responsesbase_url 必须带 /openai/v1不要再传 api-versionenv_key 只能写变量,不能把密钥字面量塞进去。model 是你在 Foundry 里的部署名,不是随便抄目录 slug。

官方示例会把 model_provider = "azure" 写进用户 ~/.codex/config.toml,变成所有会话的默认后端。更稳妥是独立 profile(用户层 $CODEX_HOME,不是项目 .codex)。GitHub Actions 官方示例也是 -p azure,跟 profile 名对齐:

# ~/.codex/azure.config.toml
model = "YOUR_DEPLOYMENT_NAME"
model_provider = "azure"
model_reasoning_effort = "medium"

[model_providers.azure]
name = "Azure OpenAI"
base_url = "https://YOUR_RESOURCE_NAME.openai.azure.com/openai/v1"
env_key = "AZURE_OPENAI_API_KEY"
wire_api = "responses"

YOUR_RESOURCE_NAME 换成资源名,YOUR_DEPLOYMENT_NAME 换成部署名。Codex 不会在 base_url 里展开环境变量,不要把 $AZURE_OPENAI_ENDPOINT 留在 TOML 里。Foundry v1 也接受 https://YOUR_RESOURCE_NAME.services.ai.azure.com/openai/v1

export AZURE_OPENAI_API_KEY="YOUR_AZURE_OPENAI_KEY"
codex --profile azure
codex --profile azure "write a unit test for src/utils/date.ts"
codex -p azure exec --full-auto "update CHANGELOG for next release"

密钥必须出现在启动 Codex 的那个进程里。从已经 export 的终端启动;Dock / 开始菜单打开的桌面或 VS Code 读不到你刚改的 zshrc。WSL 里用 Codex 扩展时,还要在 Windows 主机上设同一个 AZURE_OPENAI_API_KEY,再 code .。不要抄专页 VS Code 节里那行 export OPENAI_API_KEY——env_key 读的是 AZURE_OPENAI_API_KEY

0.134 起不要再写 [profiles.azure]。不要写进项目 .codex/config.toml:项目文件无法修改 model_provider / model_providers。CI 把仓库密钥存成 AZURE_OPENAI_KEY,进进程时仍要 export 成 AZURE_OPENAI_API_KEY。Foundry 写明 gpt-6-astra 在 Azure 上验证过 Codex CLI 0.152.10.153.0(含多代理和 prompt cache),这是验证过的版本,不是最低版本。

不要把它和 Learn 高级配置里那份 preview 片段混抄。那边是 base_url 停在 /openai(没有 /v1),再加 query_params = { api-version = "2025-04-01-preview" }。v1 路径不要再叠 api-version;preview 路径不要只加 /v1 却留着旧 query。跟 Foundry Codex 专页走时,用带 /v1、不带 query_params 的那张表。

配置说明:

  • 不要把这张表当成 plugin marketplace add microsoft/azure-skills。那是订阅 / 部署技能和 @azure/mcp,不是换模型。
  • 不要写 wire_api = "chat",也不要省略 /openai/v1
  • 不要覆盖内置 ID openaiollamalmstudioazure 是新 ID,可以。
  • 不要把 OPENAI_BASE_URL 当主路径。
  • 不要指望 Entra ID:Foundry 写明 Codex 目前不支持。
  • 不要把密钥写进 http_headers 或 TOML 字面量。

改完新开会话。codex --profile azure 启动后,发送一条简短请求验证连接。401 先看进程里有没有该变量;404 / DNS 先对照资源名和 /openai/v1

来源