diff --git a/README.md b/README.md index 89063b7e..0c01654d 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,9 @@ - [Quickstart](#quickstart) - [Installing and running Codex CLI](#installing-and-running-codex-cli) - [Using Codex with your ChatGPT plan](#using-codex-with-your-chatgpt-plan) - - [Connecting through VPS or remote](#connecting-through-vps-or-remote) + - [Connecting on a "Headless" Machine](#connecting-on-a-headless-machine) + - [Authenticate locally and copy your credentials to the "headless" machine](#authenticate-locally-and-copy-your-credentials-to-the-headless-machine) + - [Connecting through VPS or remote](#connecting-through-vps-or-remote) - [Usage-based billing alternative: Use an OpenAI API key](#usage-based-billing-alternative-use-an-openai-api-key) - [Choosing Codex's level of autonomy](#choosing-codexs-level-of-autonomy) - [**1. Read/write**](#1-readwrite) @@ -99,17 +101,47 @@ Each archive contains a single entry with the platform baked into the name (e.g. Codex CLI login

-After you run `codex` select Sign in with ChatGPT. You'll need a Plus, Pro, or Team ChatGPT account, and will get access to our latest models, including `gpt-5`, at no extra cost to your plan. (Enterprise is coming soon.) +Run `codex` and select **Sign in with ChatGPT**. You'll need a Plus, Pro, or Team ChatGPT account, and will get access to our latest models, including `gpt-5`, at no extra cost to your plan. (Enterprise is coming soon.) -> Important: If you've used the Codex CLI before, you'll need to follow these steps to migrate from usage-based billing with your API key: +> Important: If you've used the Codex CLI before, follow these steps to migrate from usage-based billing with your API key: > -> 1. Update the CLI with `codex update` and ensure `codex --version` is greater than 0.13 -> 2. Ensure that there is no `OPENAI_API_KEY` environment variable set. (Check that `env | grep 'OPENAI_API_KEY'` returns empty) +> 1. Update the CLI and ensure `codex --version` is `0.20.0` or later +> 2. Delete `~/.codex/auth.json` (this should be `C:\Users\USERNAME\.codex\auth.json` on Windows) > 3. Run `codex login` again If you encounter problems with the login flow, please comment on [this issue](https://github.com/openai/codex/issues/1243). -### Connecting through VPS or remote +### Connecting on a "Headless" Machine + +Today, the login process entails running a server on `localhost:1455`. If you are on a "headless" server, such as a Docker container or are `ssh`'d into a remote machine, loading `localhost:1455` in the browser on your local machine will not automatically connect to the webserver running on the _headless_ machine, so you must use one of the following workarounds: + +#### Authenticate locally and copy your credentials to the "headless" machine + +The easiest solution is likely to run through the `codex login` process on your local machine such that `localhost:1455` _is_ accessible in your web browser. When you complete the authentication process, an `auth.json` file should be available at `$CODEX_HOME/auth.json` (on Mac/Linux, `$CODEX_HOME` defaults to `~/.codex` whereas on Windows, it defaults to `%USERPROFILE%\.codex`). + +Because the `auth.json` file is not tied to a specific host, once you complete the authentication flow locally, you can copy the `$CODEX_HOME/auth.json` file to the headless machine and then `codex` should "just work" on that machine. Note to copy a file to a Docker container, you can do: + +```shell +# substitute MY_CONTAINER with the name or id of your Docker container: +CONTAINER_HOME=$(docker exec MY_CONTAINER printenv HOME) +docker exec MY_CONTAINER mkdir -p "$CONTAINER_HOME/.codex" +docker cp auth.json MY_CONTAINER:"$CONTAINER_HOME/.codex/auth.json" +``` + +whereas if you are `ssh`'d into a remote machine, you likely want to use [`scp`](https://en.wikipedia.org/wiki/Secure_copy_protocol): + +```shell +ssh user@remote 'mkdir -p ~/.codex' +scp ~/.codex/auth.json user@remote:~/.codex/auth.json +``` + +or try this one-liner: + +```shell +ssh user@remote 'mkdir -p ~/.codex && cat > ~/.codex/auth.json' < ~/.codex/auth.json +``` + +#### Connecting through VPS or remote If you run Codex on a remote machine (VPS/server) without a local browser, the login helper starts a server on `localhost:1455` on the remote host. To complete login in your local browser, forward that port to your machine before starting the login flow: