cli/features.md +83 −14
1# Codex CLI features1# Codex CLI features
2 2
3Overview of functionality in the Codex terminal client
4
5Codex supports workflows beyond chat. Use this guide to learn what each one unlocks and when to use it.3Codex supports workflows beyond chat. Use this guide to learn what each one unlocks and when to use it.
6 4
7## Running in interactive mode5## Running in interactive mode
22 20
23- Send prompts, code snippets, or screenshots (see [image inputs](#image-inputs)) directly into the composer.21- Send prompts, code snippets, or screenshots (see [image inputs](#image-inputs)) directly into the composer.
24- Watch Codex explain its plan before making a change, and approve or reject steps inline.22- Watch Codex explain its plan before making a change, and approve or reject steps inline.
23- Read syntax-highlighted markdown code blocks and diffs in the TUI, then use `/theme` to preview and save a preferred theme.
24- Use `/clear` to wipe the terminal and start a fresh chat, or press <kbd>Ctrl</kbd>+<kbd>L</kbd> to clear the screen without starting a new conversation.
25- Use `/copy` to copy the latest completed Codex output. If a turn is still running, Codex copies the most recent finished output instead of in-progress text.
25- Navigate draft history in the composer with <kbd>Up</kbd>/<kbd>Down</kbd>; Codex restores prior draft text and image placeholders.26- Navigate draft history in the composer with <kbd>Up</kbd>/<kbd>Down</kbd>; Codex restores prior draft text and image placeholders.
26- Press <kbd>Ctrl</kbd>+<kbd>C</kbd> or use `/exit` to close the interactive session when you're done.27- Press <kbd>Ctrl</kbd>+<kbd>C</kbd> or use `/exit` to close the interactive session when you're done.
27 28
43 44
44Each resumed run keeps the original transcript, plan history, and approvals, so Codex can use prior context while you supply new instructions. Override the working directory with `--cd` or add extra roots with `--add-dir` if you need to steer the environment before resuming.45Each resumed run keeps the original transcript, plan history, and approvals, so Codex can use prior context while you supply new instructions. Override the working directory with `--cd` or add extra roots with `--add-dir` if you need to steer the environment before resuming.
45 46
47## Connect the TUI to a remote app server
48
49Remote TUI mode lets you run the Codex app server on one machine and use the Codex terminal UI from another machine. This is useful when the code, credentials, or execution environment live on a remote host, but you want the local interactive TUI experience.
50
51Start the app server on the machine that should own the workspace and run commands:
52
53```bash
54codex app-server --listen ws://127.0.0.1:4500
55```
56
57Then connect from the machine running the TUI:
58
59```bash
60codex --remote ws://127.0.0.1:4500
61```
62
63For access from another machine, bind the app server to a reachable interface, for example:
64
65```bash
66codex app-server --listen ws://0.0.0.0:4500
67```
68
69`--remote` accepts explicit `ws://host:port` and `wss://host:port` addresses only. For plain WebSocket connections, prefer local-host addresses or SSH port forwarding. If you expose the listener beyond the local host, configure authentication before real remote use and put authenticated non-local connections behind TLS.
70
71Codex supports these WebSocket authentication modes for remote TUI connections:
72
73- **No WebSocket auth**: Best for local-host listeners or SSH port-forwarded connections. Codex can start non-local listeners without auth, but logs a warning and the startup banner reminds you to configure auth before real remote use.
74- **Capability token**: Store a shared token in a file on the app-server host, start the server with `--ws-auth capability-token --ws-token-file /abs/path/to/token`, then set the same token in an environment variable on the TUI host and pass `--remote-auth-token-env <ENV_VAR>`.
75- **Signed bearer token**: Store an HMAC shared secret in a file on the app-server host, start the server with `--ws-auth signed-bearer-token --ws-shared-secret-file /abs/path/to/secret`, and have the TUI send a signed JWT bearer token through `--remote-auth-token-env <ENV_VAR>`. The shared secret must be at least 32 bytes. Signed tokens use HS256 and must include `exp`; Codex also validates `nbf`, `iss`, and `aud` when those claims or server options are present.
76
77To create a capability token on the app-server host, generate a random token file with permissions that only your user can read:
78
79```bash
80TOKEN_FILE="$HOME/.codex/codex-app-server-token"
81install -d -m 700 "$(dirname "$TOKEN_FILE")"
82openssl rand -base64 32 > "$TOKEN_FILE"
83chmod 600 "$TOKEN_FILE"
84```
85
86Treat the token file like a password, and regenerate it if it leaks.
87
88Then start the app server with that token file. For example, with a capability token behind a TLS proxy:
89
90```bash
91# Remote host
92TOKEN_FILE="$HOME/.codex/codex-app-server-token"
93codex app-server \
94 --listen ws://0.0.0.0:4500 \
95 --ws-auth capability-token \
96 --ws-token-file "$TOKEN_FILE"
97
98# TUI host
99export CODEX_REMOTE_AUTH_TOKEN="$(ssh devbox 'cat ~/.codex/codex-app-server-token')"
100codex --remote wss://codex-devbox.example.com:4500 \
101 --remote-auth-token-env CODEX_REMOTE_AUTH_TOKEN
102```
103
104The TUI sends remote auth tokens as `Authorization: Bearer <token>` during the WebSocket handshake. Codex only sends those tokens over `wss://` URLs or `ws://` URLs whose host is `localhost`, `127.0.0.1`, or `::1`, so put non-local remote listeners behind TLS if clients need to authenticate over the network.
105
46## Models and reasoning106## Models and reasoning
47 107
48108For most coding tasks in Codex, `gpt-5.3-codex` is the go-to model. It’s available for ChatGPT-authenticated Codex sessions in the Codex app, CLI, IDE extension, and Codex Cloud. For extra fast tasks, ChatGPT Pro subscribers have access to the GPT-5.3-Codex-Spark model in research preview.For most tasks in Codex, `gpt-5.4` is the recommended model. It brings the
109industry-leading coding capabilities of `gpt-5.3-codex` to OpenAI’s flagship
110frontier model, combining frontier coding performance with stronger reasoning,
111native computer use, and broader professional workflows. For extra fast tasks,
112ChatGPT Pro subscribers have access to the GPT-5.3-Codex-Spark model in
113research preview.
49 114
50115Switch models mid-session with the /model command, or specify one when launching the CLI.Switch models mid-session with the `/model` command, or specify one when launching the CLI.
51 116
52```bash117```bash
53118codex --model gpt-5.3-codexcodex --model gpt-5.4
54```119```
55 120
56[Learn more about the models available in Codex](https://developers.openai.com/codex/models).121[Learn more about the models available in Codex](https://developers.openai.com/codex/models).
67 132
68`codex features enable <feature>` and `codex features disable <feature>` write to `~/.codex/config.toml`. If you launch Codex with `--profile`, Codex stores the change in that profile rather than the root configuration.133`codex features enable <feature>` and `codex features disable <feature>` write to `~/.codex/config.toml`. If you launch Codex with `--profile`, Codex stores the change in that profile rather than the root configuration.
69 134
70135## Multi-agents (experimental)## Subagents
136
137Use Codex subagent workflows to parallelize larger tasks. For setup, role configuration (`[agents]` in `config.toml`), and examples, see [Subagents](https://developers.openai.com/codex/subagents).
71 138
72139Use Codex multi-agent workflows to parallelize larger tasks. For setup, role configuration (`[agents]` in `config.toml`), and examples, see [Multi-agents](https://developers.openai.com/codex/multi-agent).Codex only spawns subagents when you explicitly ask it to. Because each
140subagent does its own model and tool work, subagent workflows consume more
141tokens than comparable single-agent runs.
73 142
74## Image inputs143## Image inputs
75 144
85 154
86Codex accepts common formats such as PNG and JPEG. Use comma-separated filenames for two or more images, and combine them with text instructions to add context.155Codex accepts common formats such as PNG and JPEG. Use comma-separated filenames for two or more images, and combine them with text instructions to add context.
87 156
157## Syntax highlighting and themes
158
159The TUI syntax-highlights fenced markdown code blocks and file diffs so code is easier to scan during reviews and debugging.
160
161Use `/theme` to open the theme picker, preview themes live, and save your selection to `tui.theme` in `~/.codex/config.toml`. You can also add custom `.tmTheme` files under `$CODEX_HOME/themes` and select them in the picker.
162
88## Running local code review163## Running local code review
89 164
90Type `/review` in the CLI to open Codex's review presets. The CLI launches a dedicated reviewer that reads the diff you select and reports prioritized, actionable findings without touching your working tree. By default it uses the current session model; set `review_model` in `config.toml` to override.165Type `/review` in the CLI to open Codex's review presets. The CLI launches a dedicated reviewer that reads the diff you select and reports prioritized, actionable findings without touching your working tree. By default it uses the current session model; set `review_model` in `config.toml` to override.
98 173
99## Web search174## Web search
100 175
101176Codex ships with a first-party web search tool. For local tasks in the Codex CLI, Codex enables web search by default and serves results from a web search cache. The cache is an OpenAI-maintained index of web results, so cached mode returns pre-indexed results instead of fetching live pages. This reduces exposure to prompt injection from arbitrary live content, but you should still treat web results as untrusted. If you are using `--yolo` or another [full access sandbox setting](https://developers.openai.com/codex/security), web search defaults to live results. To fetch the most recent data, pass `--search` for a single run or set `web_search = "live"` in [Config basics](https://developers.openai.com/codex/config-basic). You can also set `web_search = "disabled"` to turn the tool off.Codex ships with a first-party web search tool. For local tasks in the Codex CLI, Codex enables web search by default and serves results from a web search cache. The cache is an OpenAI-maintained index of web results, so cached mode returns pre-indexed results instead of fetching live pages. This reduces exposure to prompt injection from arbitrary live content, but you should still treat web results as untrusted. If you are using `--yolo` or another [full access sandbox setting](https://developers.openai.com/codex/agent-approvals-security), web search defaults to live results. To fetch the most recent data, pass `--search` for a single run or set `web_search = "live"` in [Config basics](https://developers.openai.com/codex/config-basic). You can also set `web_search = "disabled"` to turn the tool off.
102 177
103You'll see `web_search` items in the transcript or `codex exec --json` output whenever Codex looks something up.178You'll see `web_search` items in the transcript or `codex exec --json` output whenever Codex looks something up.
104 179
192- Launch Codex from any directory using `codex --cd <path>` to set the working root without running `cd` first. The active path appears in the TUI header.267- Launch Codex from any directory using `codex --cd <path>` to set the working root without running `cd` first. The active path appears in the TUI header.
193- Expose more writable roots with `--add-dir` (for example, `codex --cd apps/frontend --add-dir ../backend --add-dir ../shared`) when you need to coordinate changes across more than one project.268- Expose more writable roots with `--add-dir` (for example, `codex --cd apps/frontend --add-dir ../backend --add-dir ../shared`) when you need to coordinate changes across more than one project.
194- Make sure your environment is already set up before launching Codex so it doesn't spend tokens probing what to activate. For example, source your Python virtual environment (or other language environments), start any required daemons, and export the environment variables you expect to use ahead of time.269- Make sure your environment is already set up before launching Codex so it doesn't spend tokens probing what to activate. For example, source your Python virtual environment (or other language environments), start any required daemons, and export the environment variables you expect to use ahead of time.
195
196[Previous
197
198Overview](https://developers.openai.com/codex/cli)[Next
199
200Command Line Options](https://developers.openai.com/codex/cli/reference)