Connecting Codex in the ChatGPT app
What this means:
- A separate API key is required: a regular Explyt Enterprise Platform key will not work; ask your organization's administrator to request a Codex key from Explyt support
-
Only OpenAI models and
autoare available; Anthropic models work in Codex CLI - DLP does not work: the data you send is not checked
- The connection works only inside Explyt VPC
If the task can be solved with another tool, it is better to choose it: the other connections work without these restrictions — see the list of tools.
-
On the sign-in screen, click Sign in another way
- Do not click Continue to sign in: this signs you in through a ChatGPT account, and requests to the gateway will be rejected
- If you are already signed in through a ChatGPT account, sign out and sign in again
-
Paste the API key issued to you into the OpenAI API key field and click Continue
- If you see these instructions but do not have an API key, contact your organization's administrator
- No OpenAI account is needed: the key is used only for requests to your gateway
-
Open the app settings (
Cmd/Ctrl + ,) → the Configuration section → click Open config.toml -
The file that opens already contains the app's own settings — do not delete them. Add three lines to the very beginning of the file:
model = "auto"
model_provider = "explyt"
model_catalog_json = "./model-catalog.json" -
Add the block below to the very end of the same file:
[model_providers.explyt]
name = "explyt"
base_url = "<YOUR_URL>"
wire_api = "responses"
requires_openai_auth = true- Replace
<YOUR_URL>with the OpenAI-compatible URL issued to you- If you see these instructions but do not have an OpenAI-compatible URL, contact your organization's administrator
- Replace
-
Next to
config.toml, create the filemodel-catalog.jsonwith the list of Explyt modelsDownload the ready-made
model-catalog.jsonfile — or copy its contents manually:Contents of
model-catalog.json{
"models": [
{
"slug": "auto",
"id": "auto",
"display_name": "Explyt Auto",
"description": "Automatic model selection: high quality with maximum availability",
"context_window": 372000,
"max_output_tokens": 32768,
"base_instructions": "default",
"shell_type": "default",
"visibility": "list",
"supported_in_api": true,
"priority": 1,
"support_verbosity": false,
"truncation_policy": {
"mode": "bytes",
"limit": 10000
},
"experimental_supported_tools": [],
"supported_reasoning_levels": [
{
"effort": "low",
"description": "low"
},
{
"effort": "medium",
"description": "medium"
},
{
"effort": "high",
"description": "high"
},
{
"effort": "xhigh",
"description": "xhigh"
}
]
},
{
"slug": "OpenAI/gpt-5.6-sol",
"id": "OpenAI/gpt-5.6-sol",
"display_name": "OpenAI GPT-5.6 Sol",
"description": "The highest quality among OpenAI models",
"context_window": 372000,
"max_output_tokens": 32768,
"base_instructions": "default",
"shell_type": "default",
"visibility": "list",
"supported_in_api": true,
"priority": 2,
"support_verbosity": false,
"truncation_policy": {
"mode": "bytes",
"limit": 10000
},
"experimental_supported_tools": [],
"supported_reasoning_levels": [
{
"effort": "low",
"description": "low"
},
{
"effort": "medium",
"description": "medium"
},
{
"effort": "high",
"description": "high"
},
{
"effort": "xhigh",
"description": "xhigh"
}
]
},
{
"slug": "OpenAI/gpt-5.6-terra",
"id": "OpenAI/gpt-5.6-terra",
"display_name": "OpenAI GPT-5.6 Terra",
"description": "Balance of quality and speed among OpenAI models",
"context_window": 372000,
"max_output_tokens": 32768,
"base_instructions": "default",
"shell_type": "default",
"visibility": "list",
"supported_in_api": true,
"priority": 3,
"support_verbosity": false,
"truncation_policy": {
"mode": "bytes",
"limit": 10000
},
"experimental_supported_tools": [],
"supported_reasoning_levels": [
{
"effort": "low",
"description": "low"
},
{
"effort": "medium",
"description": "medium"
},
{
"effort": "high",
"description": "high"
},
{
"effort": "xhigh",
"description": "xhigh"
}
]
},
{
"slug": "OpenAI/gpt-5.6-luna",
"id": "OpenAI/gpt-5.6-luna",
"display_name": "OpenAI GPT-5.6 Luna",
"description": "The fastest and cheapest among OpenAI models",
"context_window": 372000,
"max_output_tokens": 32768,
"base_instructions": "default",
"shell_type": "default",
"visibility": "list",
"supported_in_api": true,
"priority": 4,
"support_verbosity": false,
"truncation_policy": {
"mode": "bytes",
"limit": 10000
},
"experimental_supported_tools": [],
"supported_reasoning_levels": [
{
"effort": "low",
"description": "low"
},
{
"effort": "medium",
"description": "medium"
},
{
"effort": "high",
"description": "high"
},
{
"effort": "xhigh",
"description": "xhigh"
}
]
},
{
"slug": "OpenAI/gpt-5.5",
"id": "OpenAI/gpt-5.5",
"display_name": "OpenAI GPT-5.5",
"description": "Previous-generation OpenAI model",
"context_window": 272000,
"max_output_tokens": 16384,
"base_instructions": "default",
"shell_type": "default",
"visibility": "list",
"supported_in_api": true,
"priority": 5,
"support_verbosity": false,
"truncation_policy": {
"mode": "bytes",
"limit": 10000
},
"experimental_supported_tools": [],
"supported_reasoning_levels": [
{
"effort": "low",
"description": "low"
},
{
"effort": "medium",
"description": "medium"
},
{
"effort": "high",
"description": "high"
},
{
"effort": "xhigh",
"description": "xhigh"
}
]
}
]
}To add a model, copy any block and put your own
slugvalue in it.- The
priorityfield sets the order in the model picker: the lower the number, the higher the model in the list - To get the full list of models, contact your organization's administrator or open
<YOUR_URL>/models - If the error
failed to parse model_catalog_jsonappears after a Codex update, add the field named in the error message to every model
- The
-
Fully close and reopen the app
- The settings are read only at startup
-
In the bottom-right corner of the input field, click the button with the model name, then the row with the model name and the
›arrow in the window that appears -
Choose a model from the list
Explyt Auto– automatic model selection: high quality with maximum availabilityOpenAI GPT-5.6 Sol– the highest quality among OpenAI modelsOpenAI GPT-5.6 Terra– balance of quality and speed among OpenAI modelsOpenAI GPT-5.6 Luna– the fastest and cheapest among OpenAI modelsOpenAI GPT-5.5– previous-generation OpenAI model- If there are no Explyt models in the list, Codex did not read the catalog: check that the lines from step 4 are at the beginning of the file and the lines from step 5 are at the end of the file
-
Send any message and make sure the model responds
- If the error
404 Not Foundappears, the key is wrong or revoked: check that you signed in with the API key and not through a ChatGPT account, or contact your organization's administrator to reissue the key
- If the error
For errors, see Error messages.