SpyBara
Go Premium

Documentation 2026-10-22 23:57 UTC to 2026-10-23 23:59 UTC

6 files changed +274 −25. View all changes and history on the product overview
2026
Fri 30 23:59 Thu 29 23:59 Wed 28 23:00 Tue 27 23:58 Mon 26 23:58 Fri 23 23:59 Thu 22 23:57 Tue 20 23:02 Mon 19 23:02 Sat 17 23:00 Fri 16 23:02 Thu 15 23:00 Wed 14 23:59 Tue 13 23:01 Mon 12 23:01 Fri 9 23:02 Thu 8 23:01 Wed 7 23:57 Tue 6 23:02 Mon 5 23:57 Fri 2 23:58 Thu 1 22:59

developers.md +7 −0

Details

134 href: "/codex/app-server",134 href: "/codex/app-server",

135 icon: "storage",135 icon: "storage",

136 },136 },

137 {

138 title: "Model catalogs",

139 description:

140 "Serve current model defaults through a cloud or gateway integration.",

141 href: "/codex/model-catalogs",

142 icon: "settings",

143 },

137 {144 {

138 title: "GitHub Action",145 title: "GitHub Action",

139 description: "Run Codex from GitHub Actions workflows.",146 description: "Run Codex from GitHub Actions workflows.",

Details

66 66 

67Host a remote catalog with `model_providers.<id>.model_catalog_url` to update model metadata centrally, or distribute a local file with `model_catalog_json`. See the [configuration reference](https://learn.chatgpt.com/docs/config-file/config-reference) for both settings.67Host a remote catalog with `model_providers.<id>.model_catalog_url` to update model metadata centrally, or distribute a local file with `model_catalog_json`. See the [configuration reference](https://learn.chatgpt.com/docs/config-file/config-reference) for both settings.

68 68 

69For example, to use `company-coding-model` as an alias for `gpt-6-luna`:69Get a catalog endpoint or file compatible with your Codex version from your cloud

70 70or gateway provider. Make sure it includes each approved alias and its model

711. Create the `company-coding-model` alias on the gateway and route it to the approved upstream `gpt-6-luna` model.71metadata. For catalog implementation, see

722. Download the [Codex model catalog](https://github.com/openai/codex/blob/main/codex-rs/models-manager/models.json) for your Codex version and save a copy as `gateway-models.json`. Use this file as your starting point.72[Implementing model catalogs for gateways and clouds](https://learn.chatgpt.com/docs/model-catalogs).

733. Edit the `gpt-6-luna` entry in your copy: set `slug` to `company-coding-model` and check that the remaining metadata matches the upstream model and gateway capabilities. For an alias without a model migration, set `upgrade` to `null`.

744. Keep the entries in the top-level `models` array. Include every model users need to select, then serve the file from a catalog endpoint or distribute it locally as described below.

75 

76To use a catalog for a specific Codex version, check `codex --version` and select the matching `rust-v<version>` tag. For a custom build, use its exact source commit. For a desktop deployment, match the bundled CLI version.

77 

78For Bedrock through LiteLLM, apply the [required catalog edits](https://learn.chatgpt.com/docs/enterprise/bedrock-through-litellm#prepare-the-client-catalog).

79 73 

80#### Serve a remote catalog74#### Serve a remote catalog

81 75 

82Serve the prepared `gateway-models.json` as the response body of an HTTPS endpoint.76Use the HTTPS catalog endpoint supplied by your provider.

83Distribute the full endpoint URL in the selected provider's `config.toml` table:77Distribute the full endpoint URL in the selected provider's `config.toml` table:

84 78 

85```toml79```toml


90[model_providers.enterprise-gateway]84[model_providers.enterprise-gateway]

91name = "Organization Gateway"85name = "Organization Gateway"

92base_url = "https://gateway.example.com/v1"86base_url = "https://gateway.example.com/v1"

93model_catalog_url = "https://gateway.example.com/codex/models.json"87model_catalog_url = "https://gateway.example.com/codex/models"

94wire_api = "responses"88wire_api = "responses"

95env_key = "CODEX_GATEWAY_API_KEY"89env_key = "CODEX_GATEWAY_API_KEY"

96```90```


102Discovery requires API-key, command-backed, or Codex-backend authentication.96Discovery requires API-key, command-backed, or Codex-backend authentication.

103Custom headers alone don't trigger it.97Custom headers alone don't trigger it.

104 98 

105The catalog endpoint must:99Coordinate catalog updates with your provider when your approved models change. Restart the client after

106 

107- Accept `GET` requests at the configured URL, including the `client_version`

108 query parameter Codex adds and any configured provider `query_params`.

109- Accept the selected provider's authentication and configured headers. Host

110 the catalog on a service authorized to receive those credentials.

111- Return a top-level `models` array with complete Codex model metadata matching

112 the client's version. Use the version-matched catalog prepared above, rather

113 than a list of model IDs. Give each entry a unique, nonempty `slug`.

114- Return the JSON directly without redirects and keep the response within 1 MiB.

115 

116Update the catalog when your approved models change. Restart the client after

117changing its configuration.100changing its configuration.

118 101 

119Remove any effective `model_catalog_json` setting, including one enforced through102Remove any effective `model_catalog_json` setting, including one enforced through


121 104 

122#### Distribute a local catalog105#### Distribute a local catalog

123 106 

124Use `model_catalog_json` to load the prepared file at startup. A local custom107Use `model_catalog_json` to load the provider-supplied file at startup. A local custom

125catalog replaces the bundled catalog.108catalog replaces the bundled catalog.

126 109 

127Set the gateway alias, catalog `slug`, and Codex `model` to `company-coding-model`. Add these settings before the first TOML table in the Codex configuration you distribute, using the file's actual absolute path:110Set the gateway alias, catalog `slug`, and Codex `model` to `company-coding-model`. Add these settings before the first TOML table in the Codex configuration you distribute, using the file's actual absolute path:

model-catalogs.md +128 −0 created

Details

1# Implementing model catalogs for gateways and clouds

2 

3> For the complete documentation index, see [llms.txt](https://learn.chatgpt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

4 

5This page is for developers implementing the Codex Models format, which defines

6the model catalog and powers the model picker. If you build an inference

7provider, such as a gateway or cloud service, use this specification to let the

8Codex desktop app and CLI discover your models and use their instructions and

9capability settings.

10 

11If you administer an enterprise and want to control the model catalog, see the

12[`model_catalog_url` configuration guidance](https://learn.chatgpt.com/docs/enterprise/roll-out-a-gateway#serve-a-remote-catalog).

13 

14To support the format, implement an authenticated catalog endpoint. Fetch your

15upstream provider's current defaults for the requesting Codex version, apply

16your overrides, and return the resulting catalog.

17 

18 

19 

20> Illustration: Cloud providers fetch OpenAI model defaults for the requesting Codex version. Gateways read catalogs from their cloud or upstream providers, then apply caller filtering, aliases, and supported settings. Codex reads the gateway catalog to show available models and use compatible settings. Reads are authenticated at each step, and catalog responses return toward Codex. Optional enterprise or custom model definitions can feed the gateway and need not originate from OpenAI.

21 

22 

23 

24## Implement the catalog endpoint

25 

26The default catalog endpoint is `/models` under the provider's `base_url`.

27For example, with `base_url = "https://gateway.example.com/v1"`, Codex requests:

28 

29```http

30GET /v1/models?client_version=0.162.1

31Authorization: Bearer <PROVIDER_ACCESS_TOKEN>

32```

33 

34Default discovery supports command-backed authentication and Codex-backend

35authentication, such as ChatGPT. For a custom provider using API-key authentication

36without command-backed authentication, set `model_providers.<id>.model_catalog_url`

37explicitly to enable remote discovery. An API key alone doesn't trigger discovery

38at the default path.

39 

40Use `model_catalog_url` to choose a full catalog URL, such as

41`https://gateway.example.com/codex/models`. It can also point to the default

42`/v1/models` endpoint. Codex uses this URL directly without appending `/models`.

43For API-key discovery, keep `features.api_key_model_discovery` enabled; it is on

44by default. Custom headers alone don't enable discovery.

45 

46Codex sends the selected provider's authentication and configured headers, and

47appends `client_version` and any provider `query_params`. Host the catalog on a

48service authorized to receive those credentials.

49 

50Authenticate the caller, fetch the corresponding upstream defaults, apply your

51overrides, and return the complete `ModelsResponse` JSON directly. Give every

52entry a unique, nonempty `slug`. For an explicit `model_catalog_url`, Codex rejects

53redirects and responses larger than 1 MiB. Continue enforcing model access on

54inference requests.

55 

56Remove any effective `model_catalog_json` setting from clients using the endpoint:

57the local file takes precedence and prevents remote fetching.

58 

59## Match the client's schema

60 

61Read the `client_version` query parameter on the catalog request. Codex sends its

62CLI version as `major.minor.patch`, with any prerelease suffix removed. For desktop

63clients, this is the bundled CLI version.

64 

65Use the matching `rust-v<version>` tag in the public Codex repository, or the

66exact source commit for a custom build. These links use `rust-v0.162.1`; select

67the revision matching your client:

68 

69- Read the [`ModelsResponse` and `ModelInfo` response types](https://github.com/openai/codex/blob/rust-v0.162.1/codex-rs/protocol/src/openai_models.rs) for the schema.

70- Inspect the [bundled `models.json`](https://github.com/openai/codex/blob/rust-v0.162.1/codex-rs/models-manager/models.json) for a complete example. This is catalog data, not a JSON Schema document.

71 

72The bundled file is a release snapshot. Fetch current defaults before producing

73your catalog.

74 

75## Fetch current upstream defaults

76 

77Cloud providers serving OpenAI models fetch defaults from OpenAI. Gateways read

78their cloud or upstream provider's catalog so they retain the deployed model's

79settings and account and region availability. Pass the requesting Codex version

80at each step, and authenticate separately to each endpoint.

81 

82To fetch defaults directly from OpenAI, call the Codex models endpoint with the

83same `client_version`. For example, with an OpenAI API key:

84 

85```bash

86curl --fail --silent --show-error \

87 'https://chatgpt.com/backend-api/codex/models?client_version=0.162.1' \

88 -H "Authorization: Bearer $OPENAI_API_KEY"

89```

90 

91For a ChatGPT integration, use the caller's ChatGPT access token and

92`ChatGPT-Account-ID` header when applicable. Use credentials authorized for the

93upstream endpoint; your gateway's own API key doesn't authenticate to OpenAI.

94 

95Parse the full response, including its top-level `models` array. This endpoint

96returns Codex metadata such as instructions, reasoning defaults, tool settings,

97context limits, and service tiers. The public `/v1/models` endpoint doesn't

98supply this catalog.

99 

100Refresh these defaults even when the Codex version hasn't changed. Keep requests

101scoped to the intended upstream identity and honor response cache controls:

102catalogs can depend on the caller's access. Keep your overrides separate so you

103can reapply them to fresh defaults.

104 

105## Apply provider overrides

106 

107Change field values while preserving the version's response structure:

108 

109- Filter models to those the caller can use. Map each `slug` to a supported

110 inference route, and adjust `display_name`, `description`, or `priority`.

111 For an alias without a model migration, set `upgrade` to `null`.

112- Set reasoning options, context limits, input modalities, and service tiers to

113 values your model and route support. Keep defaults within the supported

114 choices. For a route without service tiers, clear `service_tiers` and

115 `additional_speed_tiers`, and set `default_service_tier` to `null`.

116- Preserve upstream instructions and tool settings unless you have tested a

117 replacement. Metadata doesn't add model capabilities or grant inference access.

118 

119For Bedrock through LiteLLM, apply the

120[required catalog edits](https://learn.chatgpt.com/docs/enterprise/bedrock-through-litellm#prepare-the-client-catalog).

121Test the resulting catalog with each supported Codex version.

122 

123## Use the public Rust types

124 

125Use crates from the same public Git tag or commit as the client's schema:

126 

127- Use [`codex-protocol`](https://github.com/openai/codex/tree/rust-v0.162.1/codex-rs/protocol) for `codex_protocol::openai_models::{ModelsResponse, ModelInfo}`. Parse with `serde_json::from_slice::<ModelsResponse>()`, edit `catalog.models`, and serialize the whole wrapper with `serde_json::to_vec()`. The wrapper handles compatibility fields for model instructions.

128- Use [`codex-models-manager::bundled_models_response()`](https://github.com/openai/codex/blob/rust-v0.162.1/codex-rs/models-manager/src/lib.rs) to load that revision's static bundled catalog as a `ModelsResponse`. It doesn't fetch current upstream defaults.

Details

8develop and test fixes. Start with a repository, a code change, or findings from8develop and test fixes. Start with a repository, a code change, or findings from

9tools you already use.9tools you already use.

10 10 

11## Set up Daybreak Blue

12 

13If your security team plans to use Daybreak Blue, a ChatGPT Enterprise

14workspace owner can grant access to selected members.

15 

16- [Getting Started with Daybreak Blue.](https://developers.openai.com/codex/use-cases/getting-started-with-daybreak-blue): Daybreak Blue reduces refusals on supported models for authorized defensive work

17 

11## Find vulnerabilities18## Find vulnerabilities

12 19 

13Start with a scan of one repository, run a deeper review, or scan a repository20Start with a scan of one repository, run a deeper review, or scan a repository

Details

8develop and test fixes. Start with a repository, a code change, or findings from8develop and test fixes. Start with a repository, a code change, or findings from

9tools you already use.9tools you already use.

10 10 

11## Set up Daybreak Blue

12 

13If your security team plans to use Daybreak Blue, a ChatGPT Enterprise

14workspace owner can grant access to selected members.

15 

16- [Getting Started with Daybreak Blue.](https://developers.openai.com/codex/use-cases/getting-started-with-daybreak-blue): Daybreak Blue reduces refusals on supported models for authorized defensive work

17 

11## Find vulnerabilities18## Find vulnerabilities

12 19 

13Start with a scan of one repository, run a deeper review, or scan a repository20Start with a scan of one repository, run a deeper review, or scan a repository

Details

1---

2name: Getting Started with Daybreak Blue.

3tagline: Give selected team members access and check that they can use Daybreak

4 in Codex.

5summary: Daybreak Blue reduces refusals on supported models for authorized

6 defensive work. As a ChatGPT Enterprise workspace owner, give approved team

7 members access to review internal code in Codex.

8bestFor:

9 - Enterprise workspace owners rolling out Daybreak Blue to an approved group.

10 - Security team members checking their workspace access in Codex.

11relatedLinks:

12 - label: Models and Trusted Access

13 url: /docs/cyber-safety

14 - label: Run your first security scan

15 url: /use-cases/find-vulnerabilities-in-your-code

16---

17 

18> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

19 

20## Before you start

21 

22Sign in as a **workspace owner** and open [Workspace status and access](https://chatgpt.com/admin/status-and-access) for the Enterprise workspace your team will use. Look for **Daybreak Blue** under **Trusted Access**.

23 

24**What you'll accomplish**

25 

261. [Request workspace access](#request-access-for-your-workspace) if you haven't applied. If Daybreak Blue shows **In review**, wait for OpenAI's welcome email.

272. [Give your team access](#enable-daybreak-for-your-team) when Daybreak Blue shows **Active**.

283. [Check access in Codex](#check-access-in-codex) with a team member who has the role. If you've already assigned the role, start here.

29 

30Using an API key for the Responses API or Codex? [Set up an API project](#set-up-an-api-project). If your team uses both ChatGPT sign-in and API keys, complete both setups.

31 

32## Request access for your workspace

33 

34Gather what you'll need for the application.

35 

36- **Business details.** Use the legal name, address, and contact details from your business records. Have a tax or registration number and supporting documents ready if requested.

37- **Intended use.** Have the workspace name and ID handy. Describe what your security team does and which defensive workflows it plans to run.

38- **Verification contact.** Use an email address the person completing verification can check. Persona may ask for proof they can act for the business. For identity verification, have an original, unexpired physical government-issued photo ID and a device with a camera ready if requested.

39 

40In **Trusted Access**, complete any outstanding business verification, then open the Daybreak Blue application. Complete the requested attestations, have an authorized signer accept the terms if prompted, and submit. See the [verification requirements](https://help.openai.com/en/articles/10910291-api-organization-verification) for accepted documents.

41 

42If your workspace doesn't show the application, follow the [enterprise onboarding guide](https://help.openai.com/en/articles/20001261-enterprise-daybreak-onboarding). On that path, submit the enterprise intake form first, then follow the verification email from Persona.

43 

44 

45 

46![Trusted Access showing Verified for the business and In review for the submitted Daybreak Blue application](<https://developers.openai.com/images/codex/daybreak/daybreak-application-under-review-focused-v3.webp>)

47 

48 

49 

50When OpenAI emails you that the workspace is ready, return to **Trusted Access**.

51 

52 

53 

54![ChatGPT workspace Trusted Access panel showing business verification as Verified and Daybreak Blue as Active](<https://developers.openai.com/images/codex/daybreak/daybreak-workspace-trusted-access.webp>)

55 

56 

57 

58## Enable Daybreak for your team

59 

60Open [Admin Console → Models](https://chatgpt.com/admin/models) and check **Workspace default → Cybersecurity**. For a new rollout to selected members, leave **Daybreak Blue** off here. If it's already on, first give everyone who should keep access a role that grants it. Then you can turn the default off and select **Save changes**.

61 

62 

63 

64 

651. In the Admin Console, open **Groups & roles**. Choose a custom role used only by approved team members, or create and save a new role for the team.

662. Return to **Models → Roles**. Select **Add role override** and choose your role. If it already has an override, open its **⋯** menu and select **Edit override**.

673. Under **Cybersecurity**, set **Daybreak Blue** to **On**. Under **Models**, enable the model your team will use, such as **6 Sol** for GPT-6 Sol. Select **Save changes**.

684. Return to **Groups & roles** and assign the custom role to the approved group. For direct member assignments or the **Permissions & roles** layout in workspace settings, follow the [role assignment instructions](https://help.openai.com/en/articles/11750701-managing-feature-access-with-role-based-access-control-in-chatgpt).

69 

70 

71 

72 

73 

74 

75![Models settings with the Roles tab selected and the Edit override menu open for an example role named Daybreak](<https://developers.openai.com/images/codex/daybreak/daybreak-models-roles.webp>)

76 

77 

78 

79 

80 

81![Role editor showing 6.1 Sol, 6 Sol, and 6 Luna set to On under Models and Daybreak Blue set to On under Cybersecurity](<https://developers.openai.com/images/codex/daybreak/daybreak-role-override.webp>)

82 

83 

84 

85Reopen the role in **Models → Roles** and confirm that you saved both Daybreak Blue and the model you chose. In **Groups & roles**, check who has the role, including through group membership. For someone outside the rollout, check whether any of their other roles grant Daybreak Blue. Allow about 10 minutes for changes to take effect before a team member checks access in Codex.

86 

87For other rollout options, see the [team setup guide](https://help.openai.com/en/articles/20001531-openai-daybreak-set-up-access-for-your-team).

88 

89## Check access in Codex

90 

91Ask one member with the role to open the [ChatGPT desktop app](https://developers.openai.com/docs/app), sign in with their ChatGPT account, and select the approved workspace. Have them open **Codex**, start a chat, and open the model menu below the message box.

92 

93In that menu, turn **Daybreak** on and select the model the owner enabled. **GPT-6 Sol** supports reduced refusals with Blue. For another model, check the [Daybreak model support table](https://help.openai.com/en/articles/20001258-openai-daybreak-trusted-access-for-cyber-overview).

94 

95 

96 

97![Codex model menu with Daybreak on and a checkmark beside GPT-6 Sol](<https://developers.openai.com/images/codex/daybreak/daybreak-model-picker-v2.webp>)

98 

99 

100 

101Have the member try a small task in that chat, such as “Suggest two tests for a patch that rejects expired session tokens.” Check that the chat returns a reply without a model access error.

102 

103If the toggle or model is missing, ask the member to refresh the app and check which workspace they're using. As the owner, confirm that the member has the intended role, directly or through their group. Then reopen the role in **Models → Roles** and check its Daybreak Blue and model settings. For access errors, see [Daybreak troubleshooting](https://help.openai.com/en/articles/20001259-troubleshooting-openai-daybreak).

104 

105## Run your first security scan

106 

107To review code with the team, follow [Run your first security scan](https://developers.openai.com/use-cases/find-vulnerabilities-in-your-code). Start with one repository the team owns or has permission to assess.

108 

109## Set up an API project

110 

111Workspace roles apply to people who sign in with ChatGPT. For API keys, an **API organization owner** enables Daybreak Blue separately for each project that needs it.

112 

1131. **Confirm which organization is approved.** Open [Organization status and access](https://platform.openai.com/settings/organization/status-and-access) in the API Platform and check your Daybreak approval email for the intended API organization. If the email only names your ChatGPT workspace, ask your OpenAI account team to confirm API access before proceeding.

1142. **Enable Blue for the project.** In the approved organization, choose or create a **non-default project** for your team's internal security work. Open **Project settings → General → Daybreak model access**, turn on **Daybreak Blue**, and select **Save**. Add the approved users to the project and allow up to 15 minutes for the change to take effect.

1153. **Check that a request uses Blue.** Have a project member use an API key from that project to send a Responses API request with an approved model such as `gpt-6-sol` and `access_programs.cyber` set to `daybreak_blue`. When the response includes that field, its value should be `daybreak_blue`. The [Responses API guide](https://developers.openai.com/api/docs/guides/daybreak#send-a-request) has a request you can copy.

116 

117If your team uses a command-line client, follow the instructions for [Codex CLI](https://github.com/openai/codex-security/blob/main/sdk/typescript/docs/cli.md#daybreak-opt-in) or [Codex Security CLI](https://github.com/openai/codex-security/blob/main/sdk/typescript/docs/cli.md#select-a-cyber-access-program). For personal access, use the [individual application](https://chatgpt.com/cyber).