Amiga
Оглавление курса · урок 2 из 16

Модуль 1 · Конфигурация · урок 2 из 16

config.toml: где лежит и что в нём

Все локальные клиенты Codex — CLI, расширение для IDE и режим Codex в ChatGPT desktop — читают один и тот же формат настроек: TOML-файл config.toml. Разберёмся, сколько таких файлов может быть, кто из них главнее и как понять, откуда взялось значение, которое вы видите в /status.

Где лежат файлы

Личная конфигурация — ~/.codex/config.toml. Точнее, $CODEX_HOME/config.toml: переменная CODEX_HOME по умолчанию указывает на ~/.codex, и в этом же каталоге Codex хранит учётные данные (auth.json, если не используется системное хранилище ключей), историю, логи и кэши.

Проектная конфигурация — .codex/config.toml в репозитории. Их может быть несколько: Codex идёт от корня проекта до текущего каталога и загружает каждый найденный файл. Корень по умолчанию — каталог с .git; изменить это можно ключом project_root_markers.

Есть и системный уровень — /etc/codex/config.toml на Unix, — а в Business и Enterprise администратор может доставлять облачные настройки по умолчанию и жёсткие ограничения через requirements.toml. Ограничения не задают значения, а запрещают их: например, approval_policy = "never" или danger-full-access.

Порядок слоёв

От высшего приоритета к низшему:

# Слой Где
1 Флаги CLI и -c / --config командная строка
2 Проектные .codex/config.toml, ближайший к текущему каталогу побеждает репозиторий, только доверенный
3 Файл профиля, выбранный --profile ~/.codex/<имя>.config.toml
4 Личный конфиг ~/.codex/config.toml
5 Облачные настройки рабочего пространства Business и Enterprise
6 Системный конфиг /etc/codex/config.toml
7 Встроенные значения —

Из таблицы следует неочевидное: проектный конфиг сильнее профиля. Если в репозитории записано model = "...", профиль эту модель не перебьёт — только флаг -m. Профили разберём в следующем уроке.

Доверие к проекту

Проектный .codex/ — это код, пришедший к вам из чужого репозитория. Поэтому Codex загружает проектные слои (конфиг, хуки, rules) только для доверенных проектов. Когда вы впервые открываете каталог и подтверждаете доверие, Codex сам дописывает в личный конфиг запись:

toml · ~/.codex/config.toml
[projects."/Users/me/work/site"]
trust_level = "trusted"

Значение "untrusted" отключает проектные слои; личные и системные настройки при этом продолжают действовать.

Даже в доверенном проекте часть ключей игнорируется, а Codex предупреждает об этом при старте: openai_base_url, chatgpt_base_url, model_provider, model_providers, notify, profile, profiles, otel и ещё несколько. Причина — защита от подмены: иначе репозиторий мог бы перенаправить ваши запросы с учётными данными на чужой сервер или запускать команды через уведомления. Провайдеров, уведомления и телеметрию задавайте только в личном конфиге.

Что обычно лежит в личном конфиге

Минимальный рабочий вариант для разработчика агентства:

toml · ~/.codex/config.toml
#:schema https://developers.openai.com/codex/config-schema.json

model = "gpt-6.1-sol"              # на октябрь 2026; см. урок про модели
model_reasoning_effort = "medium"

approval_policy = "on-request"
sandbox_mode = "workspace-write"

web_search = "cached"              # по умолчанию; 5, 6, 7
file_opener = "vscode"             # куда открывать ссылки на файлы: cursor, windsurf, none

[shell_environment_policy]
inherit = "core"
ignore_default_excludes = false    # убирать из окружения команд *KEY*, *SECRET*, *TOKEN*

[shell_environment_policy.filters]
"AWS_*" = "exclude"

[tui]
notifications = true

Строка #:schema в начале даёт автодополнение и подсветку ошибок в VS Code и Cursor с расширением Even Better TOML.

Обратите внимание на shell_environment_policy. По умолчанию ignore_default_excludes = true, то есть переменные с KEY, SECRET и TOKEN в имени не вычищаются автоматически из окружения команд, которые запускает агент. Если в вашей оболочке экспортированы токены GitLab или ключи API, имеет смысл включить фильтр явно.

sandbox_mode и [sandbox_workspace_write] — старая схема песочницы. Если позже перейдёте на профили прав из урока про песочницу, эти ключи придётся убрать из всех конфигов: две схемы не смешиваются.

Что класть в проектный конфиг

В .codex/config.toml репозитория — то, что описывает проект и одинаково для всей команды: MCP-серверы, которые нужны для работы с этим кодом (без секретов — токены берутся из переменных окружения), настройки песочницы под проект, модель для ревью, если команда договорилась.

toml · .codex/config.toml
review_model = "gpt-6.1-sol"

[sandbox_workspace_write]
network_access = false

Относительные пути внутри проектного конфига (например, model_instructions_file) считаются от каталога .codex/, в котором лежит файл.

Разовые переопределения

Для одного запуска не нужно править файлы. Если для ключа есть отдельный флаг, используйте его (--model, --sandbox), для остального — -c:

bash
codex -c model_reasoning_effort='"high"'
codex -c sandbox_workspace_write.network_access=true
codex -c 'shell_environment_policy.include_only=["PATH","HOME"]'
codex -c mcp_servers.context7.enabled=false

Значение после = разбирается как TOML, вложенные ключи пишутся через точку. Если значение не разобралось как TOML, Codex берёт его как строку, поэтому строки надёжнее брать в кавычки и защищать от оболочки одинарными. Флаги --enable имя и --disable имя — короткая запись для -c features.имя=true/false.

Как понять, что применилось

  • /status в TUI — активная модель, политика одобрений, каталоги на запись, расход токенов.
  • /debug-config — все слои конфигурации по порядку и источники ограничений. Это первое, что стоит открыть, когда значение «не то».
  • codex --strict-config — завершиться с ошибкой, если в файле есть ключи, неизвестные этой версии. Помогает поймать опечатку или ключ, который переименовали.
  • codex features list — экспериментальные и стабильные функции с их текущим состоянием; codex features enable имя записывает флаг в ~/.codex/config.toml.
  • codex -c log_dir=./.codex-log — включить текстовый лог codex-tui.log в указанном каталоге.

Если вы читали старые инструкции

  • approval_policy = "untrusted" больше не поддерживается и может помешать клиенту запуститься; on-failure устарел. Остались on-request, never и гранулярная политика. Строгий режим «спрашивать всё» теперь получают через trust_level = "untrusted" у проекта.
  • Таблицы [profiles.имя] внутри config.toml с версии 0.134.0 не читаются — профили переехали в отдельные файлы.
  • Ключ experimental_instructions_file переименован в model_instructions_file.

Попробуйте сами

10–15 мин на рабочем месте
  1. Добавьте в начало ~/.codex/config.toml строку #:schema и откройте файл в редакторе — проверьте, что появилось автодополнение ключей.
  2. Запустите codex --strict-config в рабочем проекте. Если Codex ругается на неизвестные ключи, найдите их в справочнике или удалите.
  3. Создайте в ветке проекта .codex/config.toml с одним ключом, например review_model, перезапустите Codex и найдите этот слой в выводе /debug-config.

Коротко

  • Личный конфиг — ~/.codex/config.toml, проектные — .codex/config.toml от корня до текущего каталога.
  • Приоритет: флаги и -c → проект → профиль → личный → облачный → системный → встроенный.
  • Проектные слои работают только в доверенных проектах, а ключи провайдеров, уведомлений и телеметрии в них игнорируются.
  • -c ключ=значение — разовое переопределение, значение разбирается как TOML.
  • Отладка: /status, /debug-config, --strict-config, codex features list.
Отметка хранится только в вашем браузере
Хотите связаться с владельцем
компании напрямую?
Дмитрий Тарасов
Дмитрий Тарасов
СЕО

НАПИСАТЬ

Написать в MAX