• 個人用と仕事用で、毎回ログアウトして入れ直すのが面倒
  • 設定ファイルや認証情報を触るのが怖い
  • どこを分ければ安全なのか、最初は分かりにくい

ターミナルで動くCodex CLIなら、アカウントごとに保存場所を分けて使い分けられます。

Macのzshなら、CODEX_HOMEをアカウントごとに変えて、codex1とcodex2みたいな短いコマンドで切り替えられます。

対象はMacのzshで起動するCodex CLIです。CodexのデスクトップアプリやVS Code拡張機能を切り替える手順ではありません。

目次

対象環境と公式設定を確認する

使っているMacで、次のコマンドを実行するとOSとツールのバージョンが分かります。

sw_vers -productVersion
zsh --version
codex --version

この記事の設定は、公式の認証設定とCODEX_HOMEの説明に沿っています。

仕事用アカウントを使う場合は、組織の管理者が指定した認証方式に従ってください。ファイル保存が禁止されている環境では、この設定で上書きできません。

ログアウトなしで切り替えるなら、保存場所を2つに分ける

Codexのアカウントごとに保存場所を分けて切り替える図解

やることは、Codexが設定を読みに行く場所をアカウントごとに分けることです。

分け終わると、起動はこれだけ。

codex1
codex2

codex1は1つ目のログイン情報、codex2は2つ目のログイン情報でCodexを起動します。

個人用はcodex1、仕事用はcodex2。

入口を2つにしておくだけです。

なぜログアウトしなくていいのか

一度ログインすれば、あとはMacの中にログイン情報が残ります。

毎回ブラウザを開かなくていいのは、その保存済みの情報を読んでいるからです。

ただ、デフォルトの保存先は1つだけ。

仕組みは、次の2つに分けると分かりやすくなります。

  • デフォルトの保存場所は~/.codex
  • CODEX_HOMEを変えると参照先が変わる

保存先を変えられるので、アカウントごとに別の場所を用意できます。

デフォルトの保存場所は~/.codex

何も触っていなければ、Codexは~/.codexを見に行きます。

ログイン情報は設定に応じてファイルかOSの認証情報ストアに保存されます。この記事では、保存先を分けやすいファイル保存を明示的に使います。

CODEX_HOMEを変えると参照先が変わる

今回いじるのはCODEX_HOMEです。

起動時にこの値を変えると、Codexが見に行くフォルダが切り替わります。認証情報だけでなく、ユーザー設定や履歴も別の保存先になります。

CODEX_HOME="$HOME/.codex1" codex
CODEX_HOME="$HOME/.codex2" codex

CODEX_HOME=$HOME/.codex1なら~/.codex1、CODEX_HOME=$HOME/.codex2なら~/.codex2を読みます。

フォルダを分けておけば、ログアウトせずにアカウントを切り替えられます。

もともとの~/.codexはそのまま使える

~/.codex1と~/.codex2は、今回新しく作るフォルダです。

今まで使っていた~/.codexは消えません。

いまログインしているアカウントの情報は~/.codexに残ったままなので、元に戻したくなったらいつでも戻せます。

Macのzshで切り替える手順

Codexの複数アカウント設定を4ステップで示した図解

Codex公式ページの画面

手順は次の4つです。

  1. アカウント用フォルダを2つ作る
  2. 認証情報をファイル保存にする
  3. 切り替え用のaliasを.zshrcに足す
  4. アカウントごとにログインする

1から3は最初の1回だけで、4のあとはcodex1かcodex2を打つだけになります。

1. アカウント用フォルダを2つ作る

まずはCodex用の保存場所を2つ作成してください。

mkdir -p ~/.codex1 ~/.codex2
chmod 700 ~/.codex1 ~/.codex2

~/.codex1を1つ目、~/.codex2を2つ目のアカウント用に使います。

chmod 700を付けておくと、フォルダの中身を見られるのは自分だけです。

あとでログイン情報が入るため、最初から権限を絞っておきます。

2. 認証情報をファイル保存にする

次に、2つのフォルダへconfig.tomlを配置します。以下は新しく作った空のフォルダ向けです。すでに設定ファイルがある場合は上書きせず、該当の設定を編集してください。

この設定で、Codexにログイン情報をファイルへ保存するよう指定します。

cat > ~/.codex1/config.toml <<'EOF'
cli_auth_credentials_store = "file"
EOF

cat > ~/.codex2/config.toml <<'EOF'
cli_auth_credentials_store = "file"
EOF

cli_auth_credentials_store = "file"にしておくと、ログイン後に各フォルダへauth.jsonが生成されます。

ログインが終わると、フォルダの中身はだいたいこうなります。

~/.codex1/
  config.toml
  auth.json

~/.codex2/
  config.toml
  auth.json

この時点でauth.jsonがなくても問題ありません。

あとでログインするときに作られます。

3. 切り替え用のaliasを.zshrcに足す

毎回、こんな長いコマンドを打つのはしんどいです。

CODEX_HOME="$HOME/.codex1" codex

なので、codex1とcodex2という短い名前を.zshrcに足します。

これはCodex公式のコマンドではなく、自分で作るaliasです。

.zshrcを開いて、一番下に2行追加してください。

nano ~/.zshrc
alias codex1='CODEX_HOME="$HOME/.codex1" codex'
alias codex2='CODEX_HOME="$HOME/.codex2" codex'

対応はこうです。

codex1 -> ~/.codex1を使ってCodexを起動する
codex2 -> ~/.codex2を使ってCodexを起動する

保存したら、いきなりsourceせず、先に構文チェックを行ってください。

zsh -n ~/.zshrc

何も出なければ、設定をシェルへ反映させます。

source ~/.zshrc

4. アカウントごとにログインする

1つ目のアカウントからログインします。

codex1 login

ブラウザが開いたら、個人用にするアカウントを選んでください。

続けて2つ目です。

codex2 login

こちらは仕事用にするアカウントを選びます。

これでcodex1とcodex2のログイン状態は別々になります。

ちゃんと分かれているか確認する

Codex公式ドキュメントの画面

普段の起動は、使いたい方のaliasを打つだけです。

codex1
codex2

ログイン状態を確認するコマンドはこちら。

codex1 login status
codex2 login status

login statusで分かるのはログイン状態や認証方式です。同じ「ChatGPTでログイン済み」という表示だけでは、別アカウントかどうかは判定できません。

それぞれのCLIを起動し、/statusのアカウント欄を確認してください。メールアドレスが表示される場合は、初回ログイン時にブラウザで選んだアドレスと照合します。

.zshrcを直したのに動かないとき

aliasの中身は合っているのに、ターミナルを開くたびにエラーが出ることがあります。

僕の環境では、原因は.zshrcの改行ミスでした。

}alias codex1=...

関数の閉じかっこ}とaliasが、同じ行につながっていました。

.zshrcにこういう関数があると、特に気をつけてください。

zai() {
  ANTHROPIC_AUTH_TOKEN="AUTH_TOKEN" \
  ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic" \
  API_TIMEOUT_MS="3000000" \
  ANTHROPIC_DEFAULT_SONNET_MODEL="glm-5.1" \
  ANTHROPIC_DEFAULT_OPUS_MODEL="glm-5.1" \
  claude "$@"
}alias codex1='CODEX_HOME=$HOME/.codex1 codex'
alias codex2='CODEX_HOME=$HOME/.codex2 codex'

見るのは、}の直後に改行が入っているかどうかです。

ここがつながっていると、シェルの読み込み時にエラーになります。

設定を全部やり直す前に、.zshrcを開いて}の直後を一度見てください。

auth.jsonはパスワードと同じ扱い

Codex CLI公式ドキュメントの画面

ログイン後にできるauth.jsonには、アクセストークンが入ります。

Slackに貼ったり、Gitにコミットしたりする類のファイルではありません。

やることは次の2つです。

  • 共有やGitへのコミットはしない
  • ファイルの権限を絞る

どちらも一度やれば終わります。

共有やGitへのコミットはしない

auth.jsonはパスワードと同じ感覚で扱ってください。

共有もコミットもしません。

プロジェクト配下のGit管理フォルダにも置かない方がいいです。

~/.codex1と~/.codex2のようにホーム直下に置いておけば、誤ってリポジトリに混ざることもありません。

ファイルの権限を絞る

ログイン後にauth.jsonが生成されたら、ファイルのアクセス権限も忘れずに固めておきます。

chmod 600 ~/.codex1/auth.json ~/.codex2/auth.json

自分だけが読み書きできる権限(600)にしておきます。

よくある質問

codex1とcodex2はCodex公式のコマンドですか?

いいえ、自分で作るaliasです。

`codex1`と`codex2`は`.zshrc`に足す名前で、中身は`CODEX_HOME`を変えて`codex`を起動しているだけです。

3つ以上のCodexアカウントも切り替えられますか?

同じやり方で増やせます。

3つ目なら~/.codex3を作り、本文と同じファイル保存の設定を入れます。

本文のaliasを3つ目の保存先に置き換えてcodex3として登録し、codex3 loginでログインしてください。

Mac以外でも同じ方法は使えますか?

考え方は同じです。

この記事はMacのzsh向けに書いています。

bashやWindowsなら、環境変数やショートカットの書き方をその環境用に直してください。

まとめ:Codexの複数アカウント切り替えはディレクトリとaliasで分ける

MacのzshでCodexの複数アカウントを切り替えるなら、CODEX_HOMEのディレクトリを分けてaliasを登録する方法が手軽です。

一度設定してしまえば、アカウントを切り替えるたびにログアウトやログインを繰り返す必要はありません。

設定したあとに見直すのは次の3点です。

  • 保存先ディレクトリのパーミッションが700に設定されているか
  • .zshrcの関数の末尾などで改行ミスが起きていないか
  • auth.jsonなどの認証情報をGitや外部に流出させていないか

元の~/.codexディレクトリには手を加えないため、いつでも元の環境に戻せます。

まずはターミナルを開き、mkdir -p ~/.codex1 ~/.codex2で専用ディレクトリを作成するところから始めてみてください。

Codexで長く作業する人向けに、休憩を提案させるフックも作りました。

関連記事Claude CodeとCodexのフックで休憩を提案させる方法!16GBのMacとGemma 4で動かすClaude CodeやCodexで座りっぱなしになる人向けに、フックと手元のGemma 4で休憩を提案させる手順をまとめました。16GBのMacで選ぶタグ、モデルへ送られる内容の確かめ方、Codexで動かないときの確認先が分かります。