Codex の /status 画面が崩れた原因は
WezTerm の文字幅設定だった

ターミナルエミュレータの WezTerm で OpenAI の Codex CLI を使っていたとき、/status コマンドで表示されるステータス画面のレイアウトが崩れていました1

プログレスバーの記号がずれ、罫線で組まれた枠が歪んでいます2

関連記事

1. 環境

  • WezTerm
  • OpenAI Codex CLI v0.141.0
  • M PLUS 1 Code

2. 原因

WezTerm の設定に treat_east_asian_ambiguous_width_as_wide という項目があります。
これを true にすると、Unicode で East Asian Ambiguous——東アジア圏では全角とも半角とも断言しにくい文字のカテゴリ——に分類される記号を、全角として描画します3

Codex のステータス画面のプログレスバーや罫線、たとえば といった記号もこのカテゴリに入っています4
Codex 側は半角1文字分を前提にレイアウトを組んでいますが、WezTerm が全角として描画するため1文字ぶん余計に幅を取り、行全体がずれていきます5

3. 直し方

wezterm.lua の以下の行を false に変えます。

config.treat_east_asian_ambiguous_width_as_wide = falseCode language: Lua (lua)

これで Codex のステータス画面が正しく表示されるようになりました。

4. 日本語表示への影響

ひらがな・カタカナ・漢字は East Asian Ambiguous に含まれないため、この設定を変えても日本語の文字幅には影響しません。
影響を受けるのは、全角か半角か曖昧とされる記号類だけです。

ただし、フォントや他のツールによっては別の記号がずれることもあります。
その場合は cell_width の調整で対処できます6

  1. WezTerm は Wez Furlong が開発したオープンソースのターミナルエミュレータ。GPU レンダリングを採用し、macOS・Windows・Linux で動作する。 – Wez’s Terminal Emulator 公式サイト
  2. Codex CLI は OpenAI が開発するコーディングエージェントで、Rust 製のオープンソースプロジェクトとして GitHub で公開されている。ターミナル上でコードの読み込み、ファイルの編集、コマンドの実行を行う。 – Codex CLI – OpenAI Developers
  3. デフォルト値は false。true にすると Ambiguous な文字を 2 セル幅として扱う。公式ドキュメントによると、この設定の変更は他のテキスト UI アプリケーションのレイアウトに影響することがある。 – treat_east_asian_ambiguous_width_as_wide – Wez’s Terminal Emulator
  4. █(U+2588 FULL BLOCK)と ─(U+2500 BOX DRAWINGS LIGHT HORIZONTAL)はいずれも East Asian Width が Ambiguous に分類される。東アジア文脈では全角、それ以外では半角として解釈される。 – U+2588 FULL BLOCK – codepoints.net
  5. Unicode の技術文書 UAX #11 “East Asian Width” で定義されるカテゴリ。全 Unicode 文字に 6 つの幅プロパティのいずれかが割り当てられ、Ambiguous はそのうち文脈次第で幅が変わる文字を指す。 – UAX #11: East Asian Width – Unicode
  6. cell_widths は Unicode コードポイントの範囲ごとにセル幅を個別に指定できる設定で、treat_east_asian_ambiguous_width_as_wide より優先して適用される。 – cell_widths – Wez’s Terminal Emulator