Кастомизация интерфейса Codex должна повышать наблюдаемость, а не превращать TUI в декорацию. Разница принципиальна: строка статуса и заголовок нужны не ради красоты, а чтобы в любой момент видеть, в каких условиях идёт работа. Самые полезные поля предсказуемы: модель и reasoning, оставшийся контекст, ветка Git, текущий каталог, лимиты и id сессии. Всё это отвечает на вопрос "где я и что сейчас в игре" без отдельной команды.
Настраивают интерфейс и командами, и конфигом. Полезно один раз увидеть их рядом. Команды /statusline, /title, /keymap, /theme и /personality управляют соответствующими аспектами интерактивно, а секция [tui] в config задаёт то же декларативно и на постоянной основе. Ниже - фрагмент [tui] со строкой статуса из полезных полей, заголовком терминала, режимом vim и raw-выводом. Декларативная настройка переживает сессию, интерактивная удобна для быстрой пробы.
Строку статуса собирают из полей, которые действительно помогают принимать решения. model-with-reasoning показывает, какая модель и глубина в игре; context-remaining предупреждает о заполнении контекста до того, как он начнёт теряться; git-branch и current-dir подтверждают, где именно вы работаете. Это не украшения, а сигналы: заметить, что контекст на исходе или ветка не та, дешевле по статусной строке, чем обнаружить это постфактум по странному результату.
Заголовок терминала и keymap - про удобство и предсказуемость, а не про стиль. terminal_title из проекта, ветки и статуса помогает не путать окна, когда их несколько. Keymap и vim_mode_default подстраивают ввод под привычку, но с той же оговоркой, что и везде: сочетания могут перехватываться терминалом или IDE, поэтому переназначения вводят по одному и проверяют, а не переписывают всё сразу. Raw-вывод отключают или включают под конкретную задачу, понимая эффект.
IDE-настройки живут на своей границе, и её важно понимать. Они управляют интеграцией с редактором и представлением, но ядро - модель, sandbox, approvals и MCP - берётся из общих слоёв конфигурации, а не из настроек редактора. Практическое следствие: источник истины для политики - это config.toml, к которому в IDE идут через gear, Codex Settings, Open config.toml. Дублировать политику в editor-specific настройках без нужды не стоит - это плодит два места, которые легко рассинхронизировать.
Отсюда правило для смешанных сред: политику держат в общем config, а не размазывают по редакторам. Если каждый клиент задаёт свои permissions и sandbox по-своему, поведение становится непредсказуемым и зависит от того, где вы открыли проект. Единый источник в config.toml делает поведение переносимым между CLI, IDE и desktop. Editor-specific настройки оставляют для того, что действительно специфично редактору, - представления и интеграции, - а не для границ безопасности.
Отдельно стоит выбор execution target и surface обзора - его делают осознанно. Один и тот же prompt на Local, в Worktree и в Cloud имеет разные входные данные, разные секреты и разный путь восстановления. Local видит вашу машину, Worktree изолирует, Cloud работает со свежим клоном без ваших локальных файлов. Кастомизация статусной строки как раз и помогает не перепутать: видеть текущую цель выполнения - часть той же наблюдаемости, ради которой всё настраивается.
Типичные провалы вокруг кастомизации предсказуемы. Настроить TUI ради вида, а не наблюдаемости, и не вынести в статус полезные поля. Переписать keymap целиком и получить перехваченные терминалом сочетания. Задать политику в editor-specific настройках вместо общего config и рассинхронизировать поведение. И не замечать execution target, запуская один prompt в разных средах с разными последствиями. Настраивайте интерфейс ради сигналов, держите политику в config, а execution target выбирайте осознанно.
[tui]
status_line = ["model-with-reasoning", "context-remaining", "git-branch", "current-dir"]
terminal_title = ["project", "git-branch", "status"]
vim_mode_default = false
raw_output_mode = false
# интерактивно: /statusline /title /keymap /theme /personality
# core (model, sandbox, approvals, MCP) - из общих config layers, не из IDE settings