この記事の結論WindowsのGit Bashで codex login を完了し、Cloud IDE側で codex login status を確認します。Cloud IDEがすでに Logged in using ChatGPT ならコピー作業は不要です。未ログインの場合だけ、ファイル保存にした ~/.codex/auth.json をCloud IDEの ~/.codex/auth.json へコピーします。

前提

この記事では、手元PCはWindows、ターミナルはGit Bash、リモート側はブラウザで使うVS Code系のCloud IDEを想定します。実際のユーザー名、IPアドレス、ホスト名、プロジェクト名は例示用に置き換えています。

OpenAI公式ドキュメントでは、Codex CLIは codex login でブラウザのChatGPT OAuthを完了する方式を案内しています。また、ログイン状態は codex login status で確認できます。

Windows側でNode.jsとnpmを確認する

Git Bashを開き、Node.jsとnpmが使えることを確認します。

node -v
npm -v

どちらもバージョン番号が表示されれば次へ進めます。

Codex CLIをインストールする

Codex CLIをnpmのグローバルパッケージとしてインストールします。

npm install -g @openai/codex

インストール後、バージョンを確認します。

codex --version

ここで次のように表示されることがあります。

bash: codex: command not found

この場合は、npmのグローバルインストール先がGit Bashの PATH に入っていません。次のコマンドで、現在のGit Bashセッションへ追加します。

export PATH="$PATH:$(cygpath -u "$(npm prefix -g)")"
hash -r
codex --version

成功すると、次のようにCodex CLIのバージョンが表示されます。

codex-cli 0.148.0

毎回設定しなくてよいようにするなら、~/.bashrc に追記します。

echo 'export PATH="$PATH:$(cygpath -u "$(npm prefix -g)")"' >> ~/.bashrc
source ~/.bashrc

認証情報をファイルへ保存する設定にする

Cloud IDEへ認証情報をコピーする可能性があるため、Windows Credential Storeではなくファイルへ保存する設定にします。Codexのユーザー設定ファイルは ~/.codex/config.toml です。

mkdir -p ~/.codex
grep -q '^cli_auth_credentials_store' ~/.codex/config.toml 2>/dev/null \
  || echo 'cli_auth_credentials_store = "file"' >> ~/.codex/config.toml

設定を確認します。

grep cli_auth_credentials_store ~/.codex/config.toml

次のように表示されればOKです。

cli_auth_credentials_store = "file"

OpenAI公式ドキュメントでは、cli_auth_credentials_store は file、keyring、auto を指定でき、file の場合は CODEX_HOME 配下、既定では ~/.codex/auth.json に認証情報を保存すると説明されています。

Windows側でChatGPTログインする

Git Bashで次を実行します。今回はローカルブラウザでログインするため、--device-auth は付けません。

codex login

次のような表示とともに、ブラウザが起動します。

Starting local login server on http://localhost:1455
If your browser did not open, navigate to this URL...

普段利用しているChatGPTアカウントでログインします。会社のChatGPTワークスペースを使う場合は、必要なワークスペースを選びます。

成功すると、ターミナルに次のように表示されます。

Successfully logged in

ログイン状態を確認します。

codex login status

次のように表示されれば、Windows側のCodex CLIはChatGPT認証済みです。

Logged in using ChatGPT

auth.jsonの場所を確認する

ファイルが作成されていることを確認します。中身は表示しません。

ls -l ~/.codex/auth.json

Windows上の実際の場所を確認する場合は、Git BashでWindows形式のパスへ変換します。

cygpath -w ~/.codex/auth.json

例として、次のようなパスになります。

C:\Users\example-user\.codex\auth.json

Cloud IDE側でログイン状態を先に確認する

ここからCloud IDE側へ移ります。ブラウザ上のVS CodeまたはCloud IDEのターミナルで、~/.codex を用意します。

mkdir -p ~/.codex
ls -a ~

.codex が表示されればOKです。次に、Cloud IDE側のログイン状態を確認します。

codex login status

もし次のように表示されるなら、すでにCloud IDE側でChatGPT認証が有効です。この場合、Windowsの auth.json をコピーしたり上書きしたりする必要はありません。

Logged in using ChatGPT

実際の確認例は、個人情報を伏せると次のような形です。

[coder@cloud-ide-host .codex]$ codex login status
Logged in using ChatGPT

未ログインの場合だけauth.jsonをコピーする

Cloud IDE側がログインしていない場合だけ、Windows側で作った auth.json をコピーします。既存ファイルがある場合は、Cloud IDE側で先にバックアップします。

cp ~/.codex/auth.json ~/.codex/auth.json.bak

SSH接続できるCloud IDEなら、Windows側のGit Bashから次のようにコピーできます。

ssh coder@cloud-ide-host 'mkdir -p ~/.codex'
scp ~/.codex/auth.json coder@cloud-ide-host:~/.codex/auth.json

OpenAI公式ドキュメントでも、信頼できるリモート環境へ auth.json を配置するパターンが紹介されています。ただし、これはアクセストークンを含むファイルを移す作業なので、対象が信頼できる環境であることが前提です。

SSHが使えず、ブラウザ版VS Codeからしかアクセスできない場合は、VS Codeのファイルアップロード機能で一時的にアップロードします。たとえば /home/coder/auth.json に置かれた場合は、Cloud IDEのターミナルで移動します。

mv ~/auth.json ~/.codex/auth.json

Git管理されているプロジェクトディレクトリに置いたままにしないことが重要です。

Cloud IDE側で権限を絞る

Cloud IDE側に auth.json を置いたら、ディレクトリとファイルの権限を絞ります。

chmod 700 ~/.codex
chmod 600 ~/.codex/auth.json

確認します。

ls -l ~/.codex/auth.json

次のように、自分だけが読める状態ならOKです。

-rw------- 1 coder coder ... /home/coder/.codex/auth.json

最後に、Cloud IDE側でログイン状態を確認します。

codex login status

Logged in using ChatGPT と表示されれば認証成功です。

Cloud IDE上でCodexを起動する

Codexは起動したディレクトリを基準に、リポジトリのファイル確認、編集、コマンド実行を行います。対象プロジェクトへ移動してから起動するのがおすすめです。

cd ~/target-project
codex

最初の動作確認では、ファイル変更を伴わない依頼から始めると安心です。

このプロジェクトの構成を確認して説明してください。
まだファイルは変更しないでください。

auth.jsonの取り扱い

~/.codex/auth.json はアクセストークンを含むため、パスワードと同じように扱います。次のような扱いは避けます。

避けること理由
cat ~/.codex/auth.json で表示する画面共有、ログ、履歴にトークンが残る可能性がある
GitHubへコミットするリポジトリ経由で認証情報が漏えいする
チャットやチケットへ貼る閲覧者や保存期間を制御しづらい
共有フォルダへ置く意図しないユーザーが読める可能性がある

OpenAI公式ドキュメントでも、~/.codex/auth.json にはアクセストークンが含まれるため、コミットしたり、チケットやチャットへ貼ったりしないよう注意されています。

会社管理のCloud IDEを使う場合は、その環境へ認証情報を保存してよいか社内ポリシーも確認します。管理環境では、管理者がChatGPTログイン方式や対象ワークスペースを制限でき、認証情報が条件に合わない場合はCodexがログアウトして終了する仕組みもあります。

最短コマンドまとめ

Windows / Git Bash側です。

npm install -g @openai/codex
export PATH="$PATH:$(cygpath -u "$(npm prefix -g)")"
hash -r

mkdir -p ~/.codex
grep -q '^cli_auth_credentials_store' ~/.codex/config.toml 2>/dev/null \
  || echo 'cli_auth_credentials_store = "file"' >> ~/.codex/config.toml

codex --version
codex login
codex login status
ls -l ~/.codex/auth.json

Cloud IDE側です。

mkdir -p ~/.codex
codex login status

ここで Logged in using ChatGPT と表示されるなら、そのまま完了です。ログインしていない場合だけ、Windows側の ~/.codex/auth.json をCloud IDE側の ~/.codex/auth.json へコピーします。

chmod 700 ~/.codex
chmod 600 ~/.codex/auth.json
codex login status

最後に、対象プロジェクトでCodexを起動します。

cd ~/target-project
codex

今回の状態

今回の環境では、Windows側もCloud IDE側も codex login status が Logged in using ChatGPT になるところまで確認済みでした。そのため、最終的には auth.json をコピーせずに、Cloud IDE上でそのままCodex CLIを使える状態でした。

参考: OpenAI公式ドキュメント Authentication、Configuration Reference、Maintain Codex account auth in CI/CD