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

Codexを2アカウントで使い分けたいなら、保存場所を分けるだけで足ります。

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

ターミナルとzsh、Codex CLIの3つが入っていれば準備は整っています。

目次

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

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

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

codex1
codex2

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

個人用はcodex1、仕事用はcodex2

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

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

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

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

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

ログイン情報は~/.codexに残る

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

ここにログイン状態が入るので、普通にcodexと打てばそのまま使えます。

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

今回いじるのはCODEX_HOMEです。

起動時にこの値を変えると、Codexが見に行くフォルダが切り替わります。

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

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

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

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

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

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

codex1codex2を使うときだけ、参照先がそちらに切り替わります。

いつもどおりcodexと打てば、従来どおり~/.codexのままです。

設定手順

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

まず、Codex用の保存場所を2つ作ります。

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

中身はこう分かれます。

~/.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

なので、codex1codex2という短い名前を.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

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

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

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

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

codex1
codex2

ログイン状態を見たいときは、こうです。

codex1 login status
codex2 login status

1つ目と2つ目で、別アカウントになっていればOKです。

.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はパスワードと同じ扱い

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

Slackに貼ったり、Gitにコミットしたりする類のファイルではないので、そこだけ先に書いておきます。

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

auth.jsonはパスワードと同じ感覚で扱います。

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

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

~/.codex1~/.codex2のようにホーム直下に置いておけば、うっかり混ざりにくくなります。

ファイルの権限を絞る

ログイン後にauth.jsonができたら、権限も固めます。

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

自分だけが読み書きできる状態にしておきます。

よくある質問

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

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

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

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

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

3つ目なら`~/.codex3`を作って、`.zshrc`にaliasを1つ足します。

~~~sh alias codex3='CODEX_HOME=$HOME/.codex3 codex' ~~~

あとは`codex3 login`でログインすれば、3つ目の保存場所を使えます。

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

考え方は同じです。

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

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

まとめ

フォルダを2つ作って、config.tomlを置いて、.zshrcにaliasを足せば終わりです。

あとはcodex1codex2で、別アカウントにログインするだけ。

普段は、個人用ならcodex1、仕事用ならcodex2

それだけ覚えておけば、ログアウトの手間はもう要りません。