Skip to content

Make cloud_requirements fail close#13063

Merged
alexsong-oai merged 9 commits intomainfrom
alexs/fail-close
Feb 28, 2026
Merged

Make cloud_requirements fail close#13063
alexsong-oai merged 9 commits intomainfrom
alexs/fail-close

Conversation

@alexsong-oai
Copy link
Copy Markdown
Collaborator

@alexsong-oai alexsong-oai commented Feb 27, 2026

Make it fail-close only for CLI for now
Will extend this for app-server later

@alexsong-oai alexsong-oai added the oai PRs contributed by OpenAI employees label Feb 27, 2026
Copy link
Copy Markdown
Contributor

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Err(err) => {
let message = config_warning_from_error("Invalid configuration; using defaults.", &err);
config_warnings.push(message);
Config::load_default_with_cli_overrides(cli_kv_overrides.clone()).map_err(|e| {
std::io::Error::new(

P1 Badge Treat cloud requirement load failures as fatal

ConfigBuilder::build() now returns an error when cloud requirements cannot be fetched, but this branch catches all build errors and silently falls back to Config::load_default_with_cli_overrides(), which uses CloudRequirementsLoader::default() (Ok(None)). In app-server, a transient cloud-requirements outage for Business/Enterprise can therefore start with no enforced constraints, contradicting fail-closed behavior.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@alexsong-oai
Copy link
Copy Markdown
Collaborator Author

💡 Codex Review

Err(err) => {
let message = config_warning_from_error("Invalid configuration; using defaults.", &err);
config_warnings.push(message);
Config::load_default_with_cli_overrides(cli_kv_overrides.clone()).map_err(|e| {
std::io::Error::new(

P1 Badge Treat cloud requirement load failures as fatal
ConfigBuilder::build() now returns an error when cloud requirements cannot be fetched, but this branch catches all build errors and silently falls back to Config::load_default_with_cli_overrides(), which uses CloudRequirementsLoader::default() (Ok(None)). In app-server, a transient cloud-requirements outage for Business/Enterprise can therefore start with no enforced constraints, contradicting fail-closed behavior.

ℹ️ About Codex in GitHub

Will support the fail-close for App afterwards

//! Today, fetching is best-effort: on error or timeout, Codex continues without cloud requirements.
//! We expect to tighten this so that Enterprise ChatGPT customers must successfully fetch these
//! requirements before Codex will run.
//! Fetching fails closed for eligible ChatGPT Business and Enterprise accounts. When cloud
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Today do we check if it is a ChatGPT Business and Enterprise accounts? If not we should, if so we could change the error message to something more speicfic/meaningful, like:

"Failed to load your workspace-managed config".

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we only fetch for ChatGPT Business and Enterprise accounts

@alexsong-oai alexsong-oai merged commit e2fef7a into main Feb 28, 2026
71 of 75 checks passed
@alexsong-oai alexsong-oai deleted the alexs/fail-close branch February 28, 2026 02:22
@github-actions github-actions bot locked and limited conversation to collaborators Feb 28, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

oai PRs contributed by OpenAI employees

2 participants