Skip to content

Advanced ​

If you already lean on Codex every day and just need a little more control, this page collects the knobs you are most likely to reach for: tweak defaults in Config, add extra tools through Model Context Protocol support, and script full runs with codex exec. Jump to the section you need and keep building.

Config quickstart ​

Most day-to-day tuning lives in config.toml: set approval + sandbox presets, pin model defaults, and add MCP server launchers. The Config guide walks through every option and provides copy-paste examples for common setups.

Tracing / verbose logging ​

Because Codex is written in Rust, it honors the RUST_LOG environment variable to configure its logging behavior.

The TUI defaults to RUST_LOG=codex_core=info,codex_tui=info,codex_rmcp_client=info and log messages are written to ~/.codex/log/codex-tui.log, so you can leave the following running in a separate terminal to monitor log messages as they are written:

bash
tail -F ~/.codex/log/codex-tui.log

By comparison, the non-interactive mode (codex exec) defaults to RUST_LOG=error, but messages are printed inline, so there is no need to monitor a separate file.

See the Rust documentation on RUST_LOG for more information on the configuration options.

Model Context Protocol (MCP) ​

The Codex CLI and IDE extension is a MCP client which means that it can be configured to connect to MCP servers. For more information, refer to the config docs.

Using Codex as an MCP Server ​

The Codex CLI can also be run as an MCP server via codex mcp-server. For example, you can use codex mcp-server to make Codex available as a tool inside of a multi-agent framework like the OpenAI Agents SDK. Use codex mcp separately to add/list/get/remove MCP server launchers in your configuration.

Codex MCP Server Quickstart ​

You can launch a Codex MCP server with the Model Context Protocol Inspector:

bash
npx @modelcontextprotocol/inspector codex mcp-server

Send a tools/list request and you will see that there are two tools available:

codex - Run a Codex session. Accepts configuration parameters matching the Codex Config struct. The codex tool takes the following properties:

PropertyTypeDescription
prompt (required)stringThe initial user prompt to start the Codex conversation.
approval-policystringApproval policy for shell commands generated by the model: untrusted, on-failure, on-request, never.
base-instructionsstringThe set of instructions to use instead of the default ones.
configobjectIndividual config settings that will override what is in $CODEX_HOME/config.toml.
cwdstringWorking directory for the session. If relative, resolved against the server process's current directory.
modelstringOptional override for the model name (e.g. o3, o4-mini).
profilestringConfiguration profile from config.toml to specify default options.
sandboxstringSandbox mode: read-only, workspace-write, or danger-full-access.

codex-reply - Continue a Codex session by providing the conversation id and prompt. The codex-reply tool takes the following properties:

PropertyTypeDescription
prompt (required)stringThe next user prompt to continue the Codex conversation.
conversationId (required)stringThe id of the conversation to continue.

Trying it Out ​

TIP

Codex often takes a few minutes to run. To accommodate this, adjust the MCP inspector's Request and Total timeouts to 600000ms (10 minutes) under ⛭ Configuration.

Use the MCP inspector and codex mcp-server to build a simple tic-tac-toe game with the following settings:

approval-policy: never

prompt: Implement a simple tic-tac-toe game with HTML, JavaScript, and CSS. Write the game in a single file called index.html.

sandbox: workspace-write

Click "Run Tool" and you should see a list of events emitted from the Codex MCP server as it builds the game.