|
18 | 18 | - [Quickstart](#quickstart)
|
19 | 19 | - [Installing and running Codex CLI](#installing-and-running-codex-cli)
|
20 | 20 | - [Using Codex with your ChatGPT plan](#using-codex-with-your-chatgpt-plan)
|
21 |
| - - [Connecting through VPS or remote](#connecting-through-vps-or-remote) |
| 21 | + - [Connecting on a "Headless" Machine](#connecting-on-a-headless-machine) |
| 22 | + - [Authenticate locally and copy your credentials to the "headless" machine](#authenticate-locally-and-copy-your-credentials-to-the-headless-machine) |
| 23 | + - [Connecting through VPS or remote](#connecting-through-vps-or-remote) |
22 | 24 | - [Usage-based billing alternative: Use an OpenAI API key](#usage-based-billing-alternative-use-an-openai-api-key)
|
23 | 25 | - [Choosing Codex's level of autonomy](#choosing-codexs-level-of-autonomy)
|
24 | 26 | - [**1. Read/write**](#1-readwrite)
|
@@ -99,17 +101,47 @@ Each archive contains a single entry with the platform baked into the name (e.g.
|
99 | 101 | <img src="./.github/codex-cli-login.png" alt="Codex CLI login" width="50%" />
|
100 | 102 | </p>
|
101 | 103 |
|
102 |
| -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.) |
| 104 | +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.) |
103 | 105 |
|
104 |
| -> 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: |
| 106 | +> Important: If you've used the Codex CLI before, follow these steps to migrate from usage-based billing with your API key: |
105 | 107 | >
|
106 |
| -> 1. Update the CLI with `codex update` and ensure `codex --version` is greater than 0.13 |
107 |
| -> 2. Ensure that there is no `OPENAI_API_KEY` environment variable set. (Check that `env | grep 'OPENAI_API_KEY'` returns empty) |
| 108 | +> 1. Update the CLI and ensure `codex --version` is `0.20.0` or later |
| 109 | +> 2. Delete `~/.codex/auth.json` (this should be `C:\Users\USERNAME\.codex\auth.json` on Windows) |
108 | 110 | > 3. Run `codex login` again
|
109 | 111 |
|
110 | 112 | If you encounter problems with the login flow, please comment on [this issue](https://github.com/openai/codex/issues/1243).
|
111 | 113 |
|
112 |
| -### Connecting through VPS or remote |
| 114 | +### Connecting on a "Headless" Machine |
| 115 | + |
| 116 | +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: |
| 117 | + |
| 118 | +#### Authenticate locally and copy your credentials to the "headless" machine |
| 119 | + |
| 120 | +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`). |
| 121 | + |
| 122 | +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: |
| 123 | + |
| 124 | +```shell |
| 125 | +# substitute MY_CONTAINER with the name or id of your Docker container: |
| 126 | +CONTAINER_HOME=$(docker exec MY_CONTAINER printenv HOME) |
| 127 | +docker exec MY_CONTAINER mkdir -p "$CONTAINER_HOME/.codex" |
| 128 | +docker cp auth.json MY_CONTAINER:"$CONTAINER_HOME/.codex/auth.json" |
| 129 | +``` |
| 130 | + |
| 131 | +whereas if you are `ssh`'d into a remote machine, you likely want to use [`scp`](https://en.wikipedia.org/wiki/Secure_copy_protocol): |
| 132 | + |
| 133 | +```shell |
| 134 | +ssh user@remote 'mkdir -p ~/.codex' |
| 135 | +scp ~/.codex/auth.json user@remote:~/.codex/auth.json |
| 136 | +``` |
| 137 | + |
| 138 | +or try this one-liner: |
| 139 | + |
| 140 | +```shell |
| 141 | +ssh user@remote 'mkdir -p ~/.codex && cat > ~/.codex/auth.json' < ~/.codex/auth.json |
| 142 | +``` |
| 143 | + |
| 144 | +#### Connecting through VPS or remote |
113 | 145 |
|
114 | 146 | 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:
|
115 | 147 |
|
|
0 commit comments