You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Codex CLI picks up OPENAI_API_KEY from project .env (via shell auto-loading), causing 401 “AK/SK” errors and confusing /status #2341
codex --login # choose “Sign in with ChatGPT”
codex
Ask Codex to perform any action (e.g., pls run npm lint, and if problems, try to fix them.).
What is the expected behavior?
What is the expected behavior?
When signed in via ChatGPT, Codex should use the token generated by that login, not silently override it with OPENAI_API_KEY from the local environment.
/status should display which credential is actually being used (ChatGPT token or environment key) and clearly indicate when an override is happening.
What do you see instead?
Additional information
Actual result: 401 Unauthorized errors such as:
AuthenticationError: the API key or AK/SK in the request is missing or invalid
even though /status still shows:
Provider: OpenAI
Model: gpt-5
Signed in with ChatGPT (Plan: Plus)
Removing or renaming OPENAI_API_KEY in .env immediately resolves the problem.
Workarounds:
env -u OPENAI_API_KEY codex
or rename the variable to something like APP_OPENAI_API_KEY.
Suggestions:
Add /status transparency for credential source.
Warn when environment variables override ChatGPT sign-in.
I tried to see the error you're encountering, but it looks like codex itself doesn’t fail under these conditions. Could it be that some of your command executions, which rely on the OPENAI_API_KEY environment variable, are failing instead? If that’s the case, I understand how frustrating it must be, but I’m not sure it would be right to modify the environment variables on the codex side.
I also have the same issue, if there's an .env file present in the project folder where I launch Codex, it will first get OPENAI_API_KEY from that file, not from the environment variables in the shell, which is really inconvenient.
For now I had to create a separate model provider with a different env_key, but I hope there will be an easier solution soon.
It turns out that that provider is not correct for using ChatGPT Plus/Pro credentials. By removing the model_provider= line from the profile, i stopped getting auth errors.
The CLI no longer implicitly logs in using the env variable. You now must explicitly log in using codex login --api-key or go through the TUI-based login flow.
Activity
seratch commentedon Aug 18, 2025
I tried to see the error you're encountering, but it looks like
codexitself doesn’t fail under these conditions. Could it be that some of your command executions, which rely on theOPENAI_API_KEYenvironment variable, are failing instead? If that’s the case, I understand how frustrating it must be, but I’m not sure it would be right to modify the environment variables on the codex side.hourianto commentedon Aug 21, 2025
I also have the same issue, if there's an .env file present in the project folder where I launch Codex, it will first get OPENAI_API_KEY from that file, not from the environment variables in the shell, which is really inconvenient.
For now I had to create a separate model provider with a different
env_key, but I hope there will be an easier solution soon.ac1982 commentedon Aug 22, 2025
#2342
imajes commentedon Aug 25, 2025
I don't entirely know if this is the reason, but it is related:
in config.toml, i had a block like this, which i believe was historically correct:
and then wired up the gpt5 profile as such:
It turns out that that provider is not correct for using ChatGPT Plus/Pro credentials. By removing the
model_provider=line from the profile, i stopped getting auth errors.etraut-openai commentedon Nov 2, 2025
The CLI no longer implicitly logs in using the env variable. You now must explicitly log in using
codex login --api-keyor go through the TUI-based login flow.