Skip to content

Conversation

bolinfest
Copy link
Collaborator

@bolinfest bolinfest commented May 27, 2025

This PR introduces support for -c/--config so users can override individual config values on the command line using --config name=value. Example:

codex --config model=o4-mini

Making it possible to set arbitrary config values on the command line results in a more flexible configuration scheme and makes it easier to provide single-line examples that can be copy-pasted from documentation.

Effectively, it means there are four levels of configuration for some values:

  • Default value (e.g., model currently defaults to o4-mini)
  • Value in config.toml (e.g., user could override the default to be model = "o3" in their config.toml)
  • Specifying -c or --config to override model (e.g., user can include -c model=o3 in their list of args to Codex)
  • If available, a config-specific flag can be used, which takes precedence over -c (e.g., user can specify --model o3 in their list of args to Codex)

Now that it is possible to specify anything that could be configured in config.toml on the command line using -c, we do not need to have a custom flag for every possible config option (which can clutter the output of --help). To that end, as part of this PR, we drop support for the --disable-response-storage flag, as users can now specify -c disable_response_storage=true to get the equivalent functionality.

Under the hood, this works by loading the config.toml into a toml::Value. Then for each key=value, we create a small synthetic TOML file with value so that we can run the TOML parser to get the equivalent toml::Value. We then parse key to determine the point in the original toml::Value to do the insert/replace. Once all of the overrides from -c args have been applied, the toml::Value is deserialized into a ConfigToml and then the ConfigOverrides are applied, as before.

@bolinfest bolinfest force-pushed the pr1137 branch 6 times, most recently from 24a6334 to b8b755e Compare May 28, 2025 00:57
@bolinfest bolinfest marked this pull request as ready for review May 28, 2025 01:29
@bolinfest bolinfest force-pushed the pr1137 branch 3 times, most recently from fd8e479 to 6d4baff Compare May 28, 2025 05:16
@bolinfest bolinfest merged commit d60f350 into main May 28, 2025
18 checks passed
@bolinfest bolinfest deleted the pr1137 branch May 28, 2025 06:11
@github-actions github-actions bot locked and limited conversation to collaborators May 28, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant