Error loading configuration: <path>/config.toml
config.toml の書式が壊れている状態。メッセージに行と桁が出るので、その位置だけ直せば済む。
エラー文字列
Error loading configuration: <path>/config.toml
⚠️ 標準エラーに出て、終了コードは 1 です。 codex login status のような、通信しないコマンドでも落ちます。
Error loading configuration: C:\Users\<名前>\.codex\config.toml:2:7: key with no value, expected `=`
🔴 codex exec では前置きが違う
同じ原因でも、非対話の codex exec から出ると先頭の文言が変わります。
Error loading config.toml:
C:\Users\<名前>\.codex\config.toml:2:19: string values must be quoted, expected literal string
|
2 | approval_policy =
| ^
⚠️ Error loading configuration で検索しても、この形は出てきません。 CI のログで見るのはたいてい後者です。原因も直し方も同じです。
| 出どころ | 先頭の文言 | 位置の示し方 |
|---|---|---|
| 対話セッション | Error loading configuration: |
1行に続けて ファイル:行:桁 |
codex exec |
Error loading config.toml: |
改行してから、下に ` |
何が起きているか
config.toml が TOML として読めない状態です。
⭐ メッセージの末尾に「ファイル:行:桁: 何が悪いか」が出ます。 探す必要はありません。上の例なら 2行目7桁目で、= が無いという意味です。
🔴 知らないキーは、エラーになりません
v0.149.0 で実測しました。書き間違えたキー名は黙って無視されます。
config.toml の状態 |
結果 |
|---|---|
書式が壊れている(= が無いなど) |
Error loading configuration: で停止 |
| 知らないキーが書いてある | 何も言わずに素通り(その設定は効かない) |
⚠️ つまり 「設定が効かない」ときにエラーは出ません。 キー名の打ち間違いは、自分で気づく以外に方法がありません。
直し方
1. メッセージの位置を直す
出ている 行:桁 をそのまま開きます。TOML でよくある形はこの3つです。
| 書き間違い | 正しい形 |
|---|---|
model gpt-5 |
model = "gpt-5" |
model = gpt-5 |
model = "gpt-5"(文字列は引用符が要る) |
[profiles |
[profiles](角括弧を閉じる) |
2. どのファイルを読んでいるか確認する
既定は ~/.codex/config.toml ですが、CODEX_HOME が設定されているとそちらを読みます。
Windows(PowerShell)
if ($env:CODEX_HOME) { "CODEX_HOME = $env:CODEX_HOME" } else { "既定: $env:USERPROFILE\.codex" }
macOS / Linux
echo "${CODEX_HOME:-$HOME/.codex}"
⚠️ メッセージに出ているパスが、いま直そうとしているファイルと同じか必ず見てください。
3. TOML として妥当か確かめる
Windows(PowerShell) — 追加インストール無しで、壊れている行だけを見つけます。
$p = "$env:USERPROFILE\.codex\config.toml"
Get-Content $p | Select-String -Pattern '^\s*[^#\[\s][^=]*$' |
ForEach-Object { "{0} 行目: {1}" -f $_.LineNumber, $_.Line }
⚠️ = を含まない行(コメントと見出し行を除く)を拾います。TOML の完全な検証ではありませんが、今回のような書き間違いはこれで見つかります。
macOS / Linux
python3 -c "import tomllib,sys;tomllib.load(open(sys.argv[1],'rb'))" ~/.codex/config.toml && echo OK
⭐ tomllib は Python 3.11 以降に標準で入っています。追加インストールは不要です。
4. 切り分けたいときは、一時的に別の場所を読ませる
設定を消さずに、既定の状態で動くかを確かめられます。
macOS / Linux
CODEX_HOME="$(mktemp -d)" codex login status
Windows(PowerShell)
$env:CODEX_HOME = New-Item -ItemType Directory -Path (Join-Path $env:TEMP "codex-test") -Force | Select-Object -ExpandProperty FullName
codex login status
$env:CODEX_HOME = $null
これで通るなら、原因は設定ファイルです。
再発防止
- 設定を直したら、通信しない
codex login statusで一度読ませて確認する - 🔴 キー名の打ち間違いはエラーにならない。 設定が効かないときは、綴りを疑う
- 文字列の値は必ず引用符で囲む(
model = "gpt-5")