Codex does not respect API keys specified through environment variables for other vendors

Resolved 💬 3 comments Opened May 20, 2025 by yzhaoa Closed Aug 7, 2025

What version of Codex is running?

0.1.2505172129

Which model were you using?

N/A

What platform is your computer?

Darwin 23.6.0 arm64 arm

What steps can reproduce the bug?

Case 1: codex should not ask for API key when using a non-openai provider

After installing codex, without running it at all or after deleting ~/.codex

TEST_BASE_URL=http://127.0.0.1:12345 TEST_API_KEY=test codex --provider test --model test/test

Case 2: codex should use the provider-specific API_KEY environment variable instead of OPENAI_API_KEY

First, run the following

socat TCP-LISTEN:12345,fork,reuseport -

Then

TEST_BASE_URL=http://127.0.0.1:12345 TEST_API_KEY=right OPENAI_API_KEY=wrong codex --provider test --model test/test

Enter a prompt after codex starts

What is the expected behavior?

Case 1: codex starts

Case 2: socat prints a request with Authorization: Bearer right

What do you see instead?

Case 1:

Sign in with ChatGPT to generate an API key or paste one you already have.
[use arrows to move, enter to select]

❯ Sign in with ChatGPT
  Paste an API key (or set as OPENAI_API_KEY)

Case 2:

socat prints

...
POST /chat/completions HTTP/1.1
...
authorization: Bearer wrong

In other words: codex uses OPENAI_API_KEY for the custom provider, even though it asks for the provider-specific <provider>_API_KEY environment variable.

Additional information

Also, if you run the above tests with a ~/.codex/auth.json file present containing an API key, the api key from that file is used, despite specifying OPENAI_API_KEY, and TEST_API_KEY.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗