SpyBara
Go Premium

Documentation 2026-07-31 22:02 UTC to 2026-08-02 21:00 UTC

25 files changed +661 −79. View all changes and history on the product overview
2026
Sun 2 21:00

app-server.md +18 −0

Details

36`unix://PATH` endpoints. Use plain WebSockets only for localhost or an SSH36`unix://PATH` endpoints. Use plain WebSockets only for localhost or an SSH

37port-forwarded connection.37port-forwarded connection.

38 38 

39## Connect a remote Code Mode host

40 

41By default, app-server starts a local Code Mode host. To use a remote host

42instead, pass its secure WebSocket URL:

43 

44```bash

45codex app-server --code-mode-host wss://code-mode.example.com/host

46```

47 

48`--code-mode-host` controls the outbound connection from app-server to its Code

49Mode host. It doesn't change `--listen`, which controls how clients connect to

50app-server. Every thread in the same app-server process shares the selected

51Code Mode host connection.

52 

53Use `wss://` for a remote host. Use `ws://` only for a localhost or

54SSH-forwarded connection. The app-server command and WebSocket transport are

55experimental and aren't supported for production workloads.

56 

39## Protocol57## Protocol

40 58 

41Like [MCP](https://modelcontextprotocol.io/), `codex app-server` supports bidirectional communication using JSON-RPC 2.0 messages (with the `"jsonrpc":"2.0"` header omitted on the wire).59Like [MCP](https://modelcontextprotocol.io/), `codex app-server` supports bidirectional communication using JSON-RPC 2.0 messages (with the `"jsonrpc":"2.0"` header omitted on the wire).

app/browser.md +21 −0

Details

49 variant="no-wallpaper"49 variant="no-wallpaper"

50/>50/>

51 51 

52## Search from the address bar

53 

54Start typing in the built-in browser's address bar to find pages from its

55browsing history. Select a matching page to reopen it, or enter a search term

56to search Google when no history result matches.

57 

58The built-in browser keeps its own profile and browsing history. Results don't

59automatically include pages from your regular Chrome profile or other browsers.

60 

61## Manage browsing history

62 

63Open **Settings > Browser** to search the built-in browser's history, reopen a

64visited page, or remove history entries when your organization permits it. Use

65**Clear browsing data** to choose a time range and the types of browsing data

66you want to remove.

67 

68When available, ChatGPT can ask to search your browsing history to find a page

69that matters to the current task. Review the request before allowing access.

70Browsing history can include internal URLs, search terms, and other sensitive

71information, so allow it only when the task requires that context.

72 

52<a id="browser-use"></a>73<a id="browser-use"></a>

53 74 

54## Computer Use in the browser75## Computer Use in the browser

Details

48 />48 />

49</Illustration>49</Illustration>

50 50 

51## Bring tabs and selected text into a chat

52 

53Mention an open Chrome tab in the side chat when you want ChatGPT to use that

54page as context. You can also highlight text on a page and bring the selection

55into your chat to ask about a specific passage without copying the whole page.

56 

57To start from the page instead, right-click it and select **Ask ChatGPT**. The

58side chat opens with the relevant page context so you can continue the request

59in Chrome.

60 

61### Ask about a YouTube video

62 

63Open a YouTube video, then ask a question about it in the Chrome side chat.

64When captions are available, ChatGPT can use the video's timestamped transcript

65to explain, summarize, or answer questions about the content.

66 

67Treat webpage content, selected text, and video transcripts as untrusted

68context. Review the page and any requested permissions before asking ChatGPT to

69use or act on that information.

70 

51## Set up the Chrome extension71## Set up the Chrome extension

52 72 

53In the ChatGPT desktop app, open the Plugins Directory and install **Chrome**.73In the ChatGPT desktop app, open the Plugins Directory and install **Chrome**.

app/review.md +13 −0

Details

71Git index, **Commit** for a selected commit, **Branch** for the diff against your71Git index, **Commit** for a selected commit, **Branch** for the diff against your

72base branch, or **Last turn** for the most recent assistant turn.72base branch, or **Last turn** for the most recent assistant turn.

73 73 

74### Review multiple repositories

75 

76When a [local project includes multiple folders](https://learn.chatgpt.com/docs/projects#use-local-projects-for-folders-and-codebases)

77backed by different Git repositories, the review pane can show changes from each

78repository. Open the repository selector in the review header to inspect

79another repository and see the lines added or removed without leaving the

80current review pane.

81 

82Choose **Last turn** to see the assistant's latest changes across the attached

83repositories. The repository selector shows **All repos** for that view. Other

84review scopes, such as **Unstaged**, **Staged**, and **Branch**, apply to the

85repository you select.

86 

74</ContentModeSwitch>87</ContentModeSwitch>

75 88 

76<ContentModeSwitch group="codex-surface" id="cli">89<ContentModeSwitch group="codex-surface" id="cli">

browser.md +21 −0

Details

49 variant="no-wallpaper"49 variant="no-wallpaper"

50/>50/>

51 51 

52## Search from the address bar

53 

54Start typing in the built-in browser's address bar to find pages from its

55browsing history. Select a matching page to reopen it, or enter a search term

56to search Google when no history result matches.

57 

58The built-in browser keeps its own profile and browsing history. Results don't

59automatically include pages from your regular Chrome profile or other browsers.

60 

61## Manage browsing history

62 

63Open **Settings > Browser** to search the built-in browser's history, reopen a

64visited page, or remove history entries when your organization permits it. Use

65**Clear browsing data** to choose a time range and the types of browsing data

66you want to remove.

67 

68When available, ChatGPT can ask to search your browsing history to find a page

69that matters to the current task. Review the request before allowing access.

70Browsing history can include internal URLs, search terms, and other sensitive

71information, so allow it only when the task requires that context.

72 

52<a id="browser-use"></a>73<a id="browser-use"></a>

53 74 

54## Computer Use in the browser75## Computer Use in the browser

Details

48 />48 />

49</Illustration>49</Illustration>

50 50 

51## Bring tabs and selected text into a chat

52 

53Mention an open Chrome tab in the side chat when you want ChatGPT to use that

54page as context. You can also highlight text on a page and bring the selection

55into your chat to ask about a specific passage without copying the whole page.

56 

57To start from the page instead, right-click it and select **Ask ChatGPT**. The

58side chat opens with the relevant page context so you can continue the request

59in Chrome.

60 

61### Ask about a YouTube video

62 

63Open a YouTube video, then ask a question about it in the Chrome side chat.

64When captions are available, ChatGPT can use the video's timestamped transcript

65to explain, summarize, or answer questions about the content.

66 

67Treat webpage content, selected text, and video transcripts as untrusted

68context. Review the page and any requested permissions before asking ChatGPT to

69use or act on that information.

70 

51## Set up the Chrome extension71## Set up the Chrome extension

52 72 

53In the ChatGPT desktop app, open the Plugins Directory and install **Chrome**.73In the ChatGPT desktop app, open the Plugins Directory and install **Chrome**.

cli/reference.md +16 −4

Details

50 50 

51`codex app-server --listen stdio://` keeps the default JSONL-over-stdio behavior, and `codex app-server --stdio` is an alias for that transport. `--listen ws://IP:PORT` enables WebSocket transport for app-server clients. The server accepts `ws://` listen URLs; use TLS termination or a secure proxy when clients connect with `wss://`. Use `--listen unix://` to accept WebSocket handshakes on Codex's default Unix socket, or `--listen unix:///absolute/path.sock` to choose a socket path. If you generate schemas for client bindings, add `--experimental` to include gated fields and methods.51`codex app-server --listen stdio://` keeps the default JSONL-over-stdio behavior, and `codex app-server --stdio` is an alias for that transport. `--listen ws://IP:PORT` enables WebSocket transport for app-server clients. The server accepts `ws://` listen URLs; use TLS termination or a secure proxy when clients connect with `wss://`. Use `--listen unix://` to accept WebSocket handshakes on Codex's default Unix socket, or `--listen unix:///absolute/path.sock` to choose a socket path. If you generate schemas for client bindings, add `--experimental` to include gated fields and methods.

52 52 

53Add `--code-mode-host wss://code-mode.example.com/host` to connect app-server to

54a remote Code Mode host instead of starting a local host. This outbound

55connection is separate from `--listen` and shared by every thread in the

56app-server process. Use `ws://` only for a localhost or SSH-forwarded host.

57 

53### `codex remote-control`58### `codex remote-control`

54 59 

55Run `codex remote-control` to start remote control in the foreground. Use60Run `codex remote-control` to start remote control in the foreground. Use


376| [`/approve`](#approve-an-auto-review-denial-with-approve) | Approve one retry of a recent auto review denial. | Retry a command or action that the auto reviewer denied. |381| [`/approve`](#approve-an-auto-review-denial-with-approve) | Approve one retry of a recent auto review denial. | Retry a command or action that the auto reviewer denied. |

377| [`/memories`](#configure-memories-with-memories) | Configure memory use and generation. | Turn memory injection or memory generation on or off without leaving the TUI. |382| [`/memories`](#configure-memories-with-memories) | Configure memory use and generation. | Turn memory injection or memory generation on or off without leaving the TUI. |

378| [`/skills`](#use-skills-with-skills) | Browse and use skills. | Improve task-specific behavior by selecting a relevant local skill. |383| [`/skills`](#use-skills-with-skills) | Browse and use skills. | Improve task-specific behavior by selecting a relevant local skill. |

379| [`/import`](#import-claude-code-configuration-with-import) | Import Claude Code setup, project files, and recent chats. | Migrate supported external-agent artifacts into Codex configuration and local files. |384| [`/import`](#import-claude-code-or-cursor-configuration-with-import) | Import Claude Code or Cursor setup, projects, and recent chats. | Migrate supported external-agent artifacts into Codex configuration and local files. |

380| [`/feedback`](#send-feedback-with-feedback) | Send logs to the Codex maintainers. | Report issues or share diagnostics with support. |385| [`/feedback`](#send-feedback-with-feedback) | Send logs to the Codex maintainers. | Report issues or share diagnostics with support. |

381| [`/init`](#generate-agentsmd-with-init) | Generate an `AGENTS.md` scaffold in the current directory. | Capture persistent instructions for the repository or subdirectory you're working in. |386| [`/init`](#generate-agentsmd-with-init) | Generate an `AGENTS.md` scaffold in the current directory. | Capture persistent instructions for the repository or subdirectory you're working in. |

382| [`/logout`](#sign-out-with-logout) | Sign out of Codex. | Clear local credentials when using a shared machine. |387| [`/logout`](#sign-out-with-logout) | Sign out of Codex. | Clear local credentials when using a shared machine. |


507Expected: Codex inserts the selected skill context so the next request follows512Expected: Codex inserts the selected skill context so the next request follows

508that skill's instructions.513that skill's instructions.

509 514 

510### Import Claude Code configuration with `/import`515<a id="import-claude-code-configuration-with-import"></a>

516 

517### Import Claude Code or Cursor configuration with `/import`

511 518 

5121. Type `/import`.5191. Type `/import`.

5132. Choose the Claude Code setup, project files, or recent chats you want to migrate.5202. Choose **Claude Code** or **Cursor**.

5213. Select the setup, project files, or recent chats you want to migrate.

514 522 

515Expected: Codex opens the external-agent import picker and imports the selected523Expected: Codex opens the external-agent import picker and imports the selected

516supported artifacts into Codex configuration and local files.524supported artifacts into Codex configuration and local files. Session discovery

525includes up to 50 chats from the last 30 days.

517 526 

518Run `/import` from a local TUI session. It's unavailable while a task is running,527Run `/import` from a local TUI session. It's unavailable while a task is running,

519in remote sessions, and while connected to the local app-server daemon.528in remote sessions, and while connected to the local app-server daemon.

520 529 

530For the desktop app workflow and supported artifact types, see [Import from

531another agent](https://learn.chatgpt.com/docs/import).

532 

521<a id="clear-the-terminal-and-start-a-new-chat-with-clear"></a>533<a id="clear-the-terminal-and-start-a-new-chat-with-clear"></a>

522<a id="clear-the-terminal-and-start-a-new-task-with-clear"></a>534<a id="clear-the-terminal-and-start-a-new-task-with-clear"></a>

523 535 

Details

50 50 

51`codex app-server --listen stdio://` keeps the default JSONL-over-stdio behavior, and `codex app-server --stdio` is an alias for that transport. `--listen ws://IP:PORT` enables WebSocket transport for app-server clients. The server accepts `ws://` listen URLs; use TLS termination or a secure proxy when clients connect with `wss://`. Use `--listen unix://` to accept WebSocket handshakes on Codex's default Unix socket, or `--listen unix:///absolute/path.sock` to choose a socket path. If you generate schemas for client bindings, add `--experimental` to include gated fields and methods.51`codex app-server --listen stdio://` keeps the default JSONL-over-stdio behavior, and `codex app-server --stdio` is an alias for that transport. `--listen ws://IP:PORT` enables WebSocket transport for app-server clients. The server accepts `ws://` listen URLs; use TLS termination or a secure proxy when clients connect with `wss://`. Use `--listen unix://` to accept WebSocket handshakes on Codex's default Unix socket, or `--listen unix:///absolute/path.sock` to choose a socket path. If you generate schemas for client bindings, add `--experimental` to include gated fields and methods.

52 52 

53Add `--code-mode-host wss://code-mode.example.com/host` to connect app-server to

54a remote Code Mode host instead of starting a local host. This outbound

55connection is separate from `--listen` and shared by every thread in the

56app-server process. Use `ws://` only for a localhost or SSH-forwarded host.

57 

53### `codex remote-control`58### `codex remote-control`

54 59 

55Run `codex remote-control` to start remote control in the foreground. Use60Run `codex remote-control` to start remote control in the foreground. Use


376| [`/approve`](#approve-an-auto-review-denial-with-approve) | Approve one retry of a recent auto review denial. | Retry a command or action that the auto reviewer denied. |381| [`/approve`](#approve-an-auto-review-denial-with-approve) | Approve one retry of a recent auto review denial. | Retry a command or action that the auto reviewer denied. |

377| [`/memories`](#configure-memories-with-memories) | Configure memory use and generation. | Turn memory injection or memory generation on or off without leaving the TUI. |382| [`/memories`](#configure-memories-with-memories) | Configure memory use and generation. | Turn memory injection or memory generation on or off without leaving the TUI. |

378| [`/skills`](#use-skills-with-skills) | Browse and use skills. | Improve task-specific behavior by selecting a relevant local skill. |383| [`/skills`](#use-skills-with-skills) | Browse and use skills. | Improve task-specific behavior by selecting a relevant local skill. |

379| [`/import`](#import-claude-code-configuration-with-import) | Import Claude Code setup, project files, and recent chats. | Migrate supported external-agent artifacts into Codex configuration and local files. |384| [`/import`](#import-claude-code-or-cursor-configuration-with-import) | Import Claude Code or Cursor setup, projects, and recent chats. | Migrate supported external-agent artifacts into Codex configuration and local files. |

380| [`/feedback`](#send-feedback-with-feedback) | Send logs to the Codex maintainers. | Report issues or share diagnostics with support. |385| [`/feedback`](#send-feedback-with-feedback) | Send logs to the Codex maintainers. | Report issues or share diagnostics with support. |

381| [`/init`](#generate-agentsmd-with-init) | Generate an `AGENTS.md` scaffold in the current directory. | Capture persistent instructions for the repository or subdirectory you're working in. |386| [`/init`](#generate-agentsmd-with-init) | Generate an `AGENTS.md` scaffold in the current directory. | Capture persistent instructions for the repository or subdirectory you're working in. |

382| [`/logout`](#sign-out-with-logout) | Sign out of Codex. | Clear local credentials when using a shared machine. |387| [`/logout`](#sign-out-with-logout) | Sign out of Codex. | Clear local credentials when using a shared machine. |


507Expected: Codex inserts the selected skill context so the next request follows512Expected: Codex inserts the selected skill context so the next request follows

508that skill's instructions.513that skill's instructions.

509 514 

510### Import Claude Code configuration with `/import`515<a id="import-claude-code-configuration-with-import"></a>

516 

517### Import Claude Code or Cursor configuration with `/import`

511 518 

5121. Type `/import`.5191. Type `/import`.

5132. Choose the Claude Code setup, project files, or recent chats you want to migrate.5202. Choose **Claude Code** or **Cursor**.

5213. Select the setup, project files, or recent chats you want to migrate.

514 522 

515Expected: Codex opens the external-agent import picker and imports the selected523Expected: Codex opens the external-agent import picker and imports the selected

516supported artifacts into Codex configuration and local files.524supported artifacts into Codex configuration and local files. Session discovery

525includes up to 50 chats from the last 30 days.

517 526 

518Run `/import` from a local TUI session. It's unavailable while a task is running,527Run `/import` from a local TUI session. It's unavailable while a task is running,

519in remote sessions, and while connected to the local app-server daemon.528in remote sessions, and while connected to the local app-server daemon.

520 529 

530For the desktop app workflow and supported artifact types, see [Import from

531another agent](https://learn.chatgpt.com/docs/import).

532 

521<a id="clear-the-terminal-and-start-a-new-chat-with-clear"></a>533<a id="clear-the-terminal-and-start-a-new-chat-with-clear"></a>

522<a id="clear-the-terminal-and-start-a-new-task-with-clear"></a>534<a id="clear-the-terminal-and-start-a-new-task-with-clear"></a>

523 535 

code-review.md +13 −0

Details

71Git index, **Commit** for a selected commit, **Branch** for the diff against your71Git index, **Commit** for a selected commit, **Branch** for the diff against your

72base branch, or **Last turn** for the most recent assistant turn.72base branch, or **Last turn** for the most recent assistant turn.

73 73 

74### Review multiple repositories

75 

76When a [local project includes multiple folders](https://learn.chatgpt.com/docs/projects#use-local-projects-for-folders-and-codebases)

77backed by different Git repositories, the review pane can show changes from each

78repository. Open the repository selector in the review header to inspect

79another repository and see the lines added or removed without leaving the

80current review pane.

81 

82Choose **Last turn** to see the assistant's latest changes across the attached

83repositories. The repository selector shows **All repos** for that view. Other

84review scopes, such as **Unstaged**, **Staged**, and **Branch**, apply to the

85repository you select.

86 

74</ContentModeSwitch>87</ContentModeSwitch>

75 88 

76<ContentModeSwitch group="codex-surface" id="cli">89<ContentModeSwitch group="codex-surface" id="cli">

Details

182env_key = "MISTRAL_API_KEY"182env_key = "MISTRAL_API_KEY"

183```183```

184 184 

185If a custom provider supports the standalone web search endpoint, advertise

186that capability in its provider configuration:

187 

188```toml

189[model_providers.proxy]

190name = "OpenAI using LLM proxy"

191base_url = "https://proxy.example.com/v1"

192env_key = "OPENAI_API_KEY"

193supports_standalone_web_search = true

194```

195 

196The setting defaults to `false` for custom providers. Standalone web search is

197under development and off by default. Setting the provider capability to `true`

198doesn't enable it: the provider must support a compatible endpoint,

199and the selected model and runtime must support standalone search. The

200configured [`web_search` mode](https://learn.chatgpt.com/docs/web-search) and

201managed search restrictions still apply.

202 

185Add request headers when needed:203Add request headers when needed:

186 204 

187```toml205```toml


347 365 

348## Shell environment policy366## Shell environment policy

349 367 

350`shell_environment_policy` controls which environment variables Codex passes to any subprocess it launches (for example, when running a tool-command the model proposes). Start from a clean start (`inherit = "none"`) or a trimmed set (`inherit = "core"`), then layer on excludes, includes, and overrides to avoid leaking secrets while still providing the paths, keys, or flags your tasks need.368`shell_environment_policy` controls which environment variables Codex passes to

369spawned commands. Start with an empty environment using `inherit = "none"`, or

370inherit a trimmed set using `inherit = "core"`. Add explicit values and keyed

371filters to avoid passing unnecessary secrets to spawned commands.

351 372 

352```toml373```toml

353[shell_environment_policy]374[shell_environment_policy]

354inherit = "none"375inherit = "core"

355set = { PATH = "/usr/bin", MY_FLAG = "1" }376set = { MY_FLAG = "1" }

356ignore_default_excludes = false377ignore_default_excludes = false

357exclude = ["AWS_*", "AZURE_*"]378 

358include_only = ["PATH", "HOME"]379[shell_environment_policy.filters]

380"AWS_*" = "exclude"

381"AZURE_*" = "exclude"

359```382```

360 383 

361Patterns are case-insensitive globs (`*`, `?`, `[A-Z]`); `ignore_default_excludes = false` keeps the automatic KEY/SECRET/TOKEN filter before your includes/excludes run.384Filter patterns are case-insensitive and support `*` and `?`. Use `"exclude"`

385to remove matching variables. When any pattern uses `"include"`, Codex keeps

386only variables matching an include pattern. Includes don't restore variables

387that were already excluded. Filter keys merge case-insensitively across

388configuration layers.

389 

390`ignore_default_excludes` defaults to `true`, so Codex doesn't automatically

391remove variable names containing `KEY`, `SECRET`, or `TOKEN`. Set it to `false`

392to apply those automatic exclusions before your explicit filters run.

393 

394Codex applies automatic exclusions first, then custom exclusions, values from

395`set`, and finally the include-pattern allowlist. Because `set` runs after

396exclusions, it can restore an excluded variable. An include-pattern allowlist

397can still remove that restored value.

398 

399The older `exclude` and `include_only` arrays remain supported for existing

400configurations. Don't combine either array with

401`[shell_environment_policy.filters]` in the same configuration layer; Codex

402rejects that combination.

362 403 

363## MCP servers404## MCP servers

364 405 

config-basic.md +13 −2

Details

140 140 

141#### Command environment141#### Command environment

142 142 

143Control which environment variables Codex forwards to spawned commands.143Control which environment variables Codex forwards to spawned commands. Use

144keyed filters to keep only the variables you need:

144 145 

145```toml146```toml

146[shell_environment_policy]147[shell_environment_policy]

147include_only = ["PATH", "HOME"]148ignore_default_excludes = false

149 

150[shell_environment_policy.filters]

151"PATH" = "include"

152"HOME" = "include"

148```153```

149 154 

155`ignore_default_excludes` defaults to `true`, which skips automatic filtering

156for variable names containing `KEY`, `SECRET`, or `TOKEN`. Set it to `false`

157when you want that automatic filtering. For exclusion rules, precedence, and

158legacy configuration, see [Shell environment

159policy](https://learn.chatgpt.com/docs/config-file/config-advanced#shell-environment-policy).

160 

150#### Log directory161#### Log directory

151 162 

152Override where Codex writes local log files. Setting `log_dir` explicitly also163Override where Codex writes local log files. Setting `log_dir` explicitly also

Details

182env_key = "MISTRAL_API_KEY"182env_key = "MISTRAL_API_KEY"

183```183```

184 184 

185If a custom provider supports the standalone web search endpoint, advertise

186that capability in its provider configuration:

187 

188```toml

189[model_providers.proxy]

190name = "OpenAI using LLM proxy"

191base_url = "https://proxy.example.com/v1"

192env_key = "OPENAI_API_KEY"

193supports_standalone_web_search = true

194```

195 

196The setting defaults to `false` for custom providers. Standalone web search is

197under development and off by default. Setting the provider capability to `true`

198doesn't enable it: the provider must support a compatible endpoint,

199and the selected model and runtime must support standalone search. The

200configured [`web_search` mode](https://learn.chatgpt.com/docs/web-search) and

201managed search restrictions still apply.

202 

185Add request headers when needed:203Add request headers when needed:

186 204 

187```toml205```toml


347 365 

348## Shell environment policy366## Shell environment policy

349 367 

350`shell_environment_policy` controls which environment variables Codex passes to any subprocess it launches (for example, when running a tool-command the model proposes). Start from a clean start (`inherit = "none"`) or a trimmed set (`inherit = "core"`), then layer on excludes, includes, and overrides to avoid leaking secrets while still providing the paths, keys, or flags your tasks need.368`shell_environment_policy` controls which environment variables Codex passes to

369spawned commands. Start with an empty environment using `inherit = "none"`, or

370inherit a trimmed set using `inherit = "core"`. Add explicit values and keyed

371filters to avoid passing unnecessary secrets to spawned commands.

351 372 

352```toml373```toml

353[shell_environment_policy]374[shell_environment_policy]

354inherit = "none"375inherit = "core"

355set = { PATH = "/usr/bin", MY_FLAG = "1" }376set = { MY_FLAG = "1" }

356ignore_default_excludes = false377ignore_default_excludes = false

357exclude = ["AWS_*", "AZURE_*"]378 

358include_only = ["PATH", "HOME"]379[shell_environment_policy.filters]

380"AWS_*" = "exclude"

381"AZURE_*" = "exclude"

359```382```

360 383 

361Patterns are case-insensitive globs (`*`, `?`, `[A-Z]`); `ignore_default_excludes = false` keeps the automatic KEY/SECRET/TOKEN filter before your includes/excludes run.384Filter patterns are case-insensitive and support `*` and `?`. Use `"exclude"`

385to remove matching variables. When any pattern uses `"include"`, Codex keeps

386only variables matching an include pattern. Includes don't restore variables

387that were already excluded. Filter keys merge case-insensitively across

388configuration layers.

389 

390`ignore_default_excludes` defaults to `true`, so Codex doesn't automatically

391remove variable names containing `KEY`, `SECRET`, or `TOKEN`. Set it to `false`

392to apply those automatic exclusions before your explicit filters run.

393 

394Codex applies automatic exclusions first, then custom exclusions, values from

395`set`, and finally the include-pattern allowlist. Because `set` runs after

396exclusions, it can restore an excluded variable. An include-pattern allowlist

397can still remove that restored value.

398 

399The older `exclude` and `include_only` arrays remain supported for existing

400configurations. Don't combine either array with

401`[shell_environment_policy.filters]` in the same configuration layer; Codex

402rejects that combination.

362 403 

363## MCP servers404## MCP servers

364 405 

Details

140 140 

141#### Command environment141#### Command environment

142 142 

143Control which environment variables Codex forwards to spawned commands.143Control which environment variables Codex forwards to spawned commands. Use

144keyed filters to keep only the variables you need:

144 145 

145```toml146```toml

146[shell_environment_policy]147[shell_environment_policy]

147include_only = ["PATH", "HOME"]148ignore_default_excludes = false

149 

150[shell_environment_policy.filters]

151"PATH" = "include"

152"HOME" = "include"

148```153```

149 154 

155`ignore_default_excludes` defaults to `true`, which skips automatic filtering

156for variable names containing `KEY`, `SECRET`, or `TOKEN`. Set it to `false`

157when you want that automatic filtering. For exclusion rules, precedence, and

158legacy configuration, see [Shell environment

159policy](https://learn.chatgpt.com/docs/config-file/config-advanced#shell-environment-policy).

160 

150#### Log directory161#### Log directory

151 162 

152Override where Codex writes local log files. Setting `log_dir` explicitly also163Override where Codex writes local log files. Setting `log_dir` explicitly also

Details

934 description:934 description:

935 "Whether that provider supports the Responses API WebSocket transport.",935 "Whether that provider supports the Responses API WebSocket transport.",

936 },936 },

937 {

938 key: "model_providers.<id>.supports_standalone_web_search",

939 type: "boolean",

940 description:

941 "Advertise support for a compatible standalone web search endpoint (default: false). Standalone search remains under development and off by default; provider compatibility alone doesn't enable it.",

942 },

937 {943 {

938 key: "model_providers.<id>.auth",944 key: "model_providers.<id>.auth",

939 type: "table",945 type: "table",


1018 key: "shell_environment_policy.ignore_default_excludes",1024 key: "shell_environment_policy.ignore_default_excludes",

1019 type: "boolean",1025 type: "boolean",

1020 description:1026 description:

1021 "Keep variables containing KEY/SECRET/TOKEN before other filters run.",1027 "Keep variables containing KEY, SECRET, or TOKEN before other filters run (default: true). Set to false to apply automatic secret-name exclusions.",

1028 },

1029 {

1030 key: "shell_environment_policy.filters",

1031 type: "map<string, include | exclude>",

1032 description:

1033 "Canonical case-insensitive environment-variable pattern filters. Include entries create an allowlist and can't restore excluded values. Explicit `set` values apply after exclusions. Don't combine filters with legacy `exclude` or `include_only` arrays in the same layer.",

1022 },1034 },

1023 {1035 {

1024 key: "shell_environment_policy.exclude",1036 key: "shell_environment_policy.exclude",

1025 type: "array<string>",1037 type: "array<string>",

1026 description:1038 description:

1027 "Glob patterns for removing environment variables after the defaults.",1039 "Legacy environment-variable exclusion patterns. Use `shell_environment_policy.filters` for new configuration; don't combine both forms in the same layer.",

1028 },1040 },

1029 {1041 {

1030 key: "shell_environment_policy.include_only",1042 key: "shell_environment_policy.include_only",

1031 type: "array<string>",1043 type: "array<string>",

1032 description:1044 description:

1033 "Whitelist of patterns; when set only matching variables are kept.",1045 "Legacy allowlist of environment-variable patterns. Use `shell_environment_policy.filters` for new configuration; don't combine both forms in the same layer.",

1034 },1046 },

1035 {1047 {

1036 key: "shell_environment_policy.set",1048 key: "shell_environment_policy.set",

1037 type: "map<string,string>",1049 type: "map<string,string>",

1038 description:1050 description:

1039 "Explicit environment overrides injected into every subprocess.",1051 "Explicit environment values injected after exclusions; include filters can still remove them.",

1040 },1052 },

1041 {1053 {

1042 key: "shell_environment_policy.experimental_use_profile",1054 key: "shell_environment_policy.experimental_use_profile",

Details

405 405 

406inherit = "all"406inherit = "all"

407 407 

408# Skip default excludes for names containing KEY/SECRET/TOKEN (case-insensitive). Default: false408# Skip automatic filtering for names containing KEY/SECRET/TOKEN. Default: true.

409 

410# Set false to remove those variables before applying explicit filters.

409 411 

410ignore_default_excludes = false412ignore_default_excludes = false

411 413 

412# Case-insensitive glob patterns to remove (e.g., "AWS*\*", "AZURE*\*"). Default: []414# Explicit key/value overrides. Include filters can still remove them. Default: {}

413 415 

414exclude = []416set = {}

415 417 

416# Explicit key/value overrides (always win). Default: {}418# Experimental: run via user shell profile. Default: false

417 419 

418set = {}420experimental_use_profile = false

419 421 

420# Whitelist; if non-empty, keep only matching vars. Default: []422# Canonical case-insensitive filters. "include" entries create an allowlist.

421 423 

422include_only = []424# Excludes apply before explicit set values and the include allowlist.

423 425 

424# Experimental: run via user shell profile. Default: false426# Don't combine filters with legacy exclude or

425 427 

426experimental_use_profile = false428# include_only arrays in the same configuration layer.

429 

430[shell_environment_policy.filters]

431 

432"AWS\_\*" = "exclude"

433 

434"AZURE\_\*" = "exclude"

427 435 

428################################################################################436################################################################################

429 437 


883 891 

884# # supports_websockets = true # optional892# # supports_websockets = true # optional

885 893 

894# # supports_standalone_web_search = true # optional; search is under development and off by default

895 

886# # experimental_bearer_token = "sk-example" # optional dev-only direct bearer token896# # experimental_bearer_token = "sk-example" # optional dev-only direct bearer token

887 897 

888# # http_headers = { "X-Example" = "value" }898# # http_headers = { "X-Example" = "value" }

Details

934 description:934 description:

935 "Whether that provider supports the Responses API WebSocket transport.",935 "Whether that provider supports the Responses API WebSocket transport.",

936 },936 },

937 {

938 key: "model_providers.<id>.supports_standalone_web_search",

939 type: "boolean",

940 description:

941 "Advertise support for a compatible standalone web search endpoint (default: false). Standalone search remains under development and off by default; provider compatibility alone doesn't enable it.",

942 },

937 {943 {

938 key: "model_providers.<id>.auth",944 key: "model_providers.<id>.auth",

939 type: "table",945 type: "table",


1018 key: "shell_environment_policy.ignore_default_excludes",1024 key: "shell_environment_policy.ignore_default_excludes",

1019 type: "boolean",1025 type: "boolean",

1020 description:1026 description:

1021 "Keep variables containing KEY/SECRET/TOKEN before other filters run.",1027 "Keep variables containing KEY, SECRET, or TOKEN before other filters run (default: true). Set to false to apply automatic secret-name exclusions.",

1028 },

1029 {

1030 key: "shell_environment_policy.filters",

1031 type: "map<string, include | exclude>",

1032 description:

1033 "Canonical case-insensitive environment-variable pattern filters. Include entries create an allowlist and can't restore excluded values. Explicit `set` values apply after exclusions. Don't combine filters with legacy `exclude` or `include_only` arrays in the same layer.",

1022 },1034 },

1023 {1035 {

1024 key: "shell_environment_policy.exclude",1036 key: "shell_environment_policy.exclude",

1025 type: "array<string>",1037 type: "array<string>",

1026 description:1038 description:

1027 "Glob patterns for removing environment variables after the defaults.",1039 "Legacy environment-variable exclusion patterns. Use `shell_environment_policy.filters` for new configuration; don't combine both forms in the same layer.",

1028 },1040 },

1029 {1041 {

1030 key: "shell_environment_policy.include_only",1042 key: "shell_environment_policy.include_only",

1031 type: "array<string>",1043 type: "array<string>",

1032 description:1044 description:

1033 "Whitelist of patterns; when set only matching variables are kept.",1045 "Legacy allowlist of environment-variable patterns. Use `shell_environment_policy.filters` for new configuration; don't combine both forms in the same layer.",

1034 },1046 },

1035 {1047 {

1036 key: "shell_environment_policy.set",1048 key: "shell_environment_policy.set",

1037 type: "map<string,string>",1049 type: "map<string,string>",

1038 description:1050 description:

1039 "Explicit environment overrides injected into every subprocess.",1051 "Explicit environment values injected after exclusions; include filters can still remove them.",

1040 },1052 },

1041 {1053 {

1042 key: "shell_environment_policy.experimental_use_profile",1054 key: "shell_environment_policy.experimental_use_profile",

config-sample.md +19 −9

Details

405 405 

406inherit = "all"406inherit = "all"

407 407 

408# Skip default excludes for names containing KEY/SECRET/TOKEN (case-insensitive). Default: false408# Skip automatic filtering for names containing KEY/SECRET/TOKEN. Default: true.

409 

410# Set false to remove those variables before applying explicit filters.

409 411 

410ignore_default_excludes = false412ignore_default_excludes = false

411 413 

412# Case-insensitive glob patterns to remove (e.g., "AWS*\*", "AZURE*\*"). Default: []414# Explicit key/value overrides. Include filters can still remove them. Default: {}

413 415 

414exclude = []416set = {}

415 417 

416# Explicit key/value overrides (always win). Default: {}418# Experimental: run via user shell profile. Default: false

417 419 

418set = {}420experimental_use_profile = false

419 421 

420# Whitelist; if non-empty, keep only matching vars. Default: []422# Canonical case-insensitive filters. "include" entries create an allowlist.

421 423 

422include_only = []424# Excludes apply before explicit set values and the include allowlist.

423 425 

424# Experimental: run via user shell profile. Default: false426# Don't combine filters with legacy exclude or

425 427 

426experimental_use_profile = false428# include_only arrays in the same configuration layer.

429 

430[shell_environment_policy.filters]

431 

432"AWS\_\*" = "exclude"

433 

434"AZURE\_\*" = "exclude"

427 435 

428################################################################################436################################################################################

429 437 


883 891 

884# # supports_websockets = true # optional892# # supports_websockets = true # optional

885 893 

894# # supports_standalone_web_search = true # optional; search is under development and off by default

895 

886# # experimental_bearer_token = "sk-example" # optional dev-only direct bearer token896# # experimental_bearer_token = "sk-example" # optional dev-only direct bearer token

887 897 

888# # http_headers = { "X-Example" = "value" }898# # http_headers = { "X-Example" = "value" }

Details

11Ask for an image from the app composer. Add a reference image when you want11Ask for an image from the app composer. Add a reference image when you want

12ChatGPT to transform an existing asset or use it as visual guidance.12ChatGPT to transform an existing asset or use it as visual guidance.

13 13 

14### Review and edit generated images

15 

16Select a generated image to open its expanded viewer. Switch between

17**Focused view** to inspect one image and **Canvas view** to see the images

18generated in the same chat.

19 

20In **Canvas view**, use **Comment** to add precise feedback to one or more

21images. Select **Multi-select** to choose the images you want to include, then

22send your comments and any additional editing instructions in the same chat.

23Describe what should change and what should remain the same.

24 

14</ContentModeSwitch>25</ContentModeSwitch>

15 26 

16<ContentModeSwitch group="codex-surface" id="web">27<ContentModeSwitch group="codex-surface" id="web">

import.md +24 −5

Details

2 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.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 4 

5Use the import flow to bring your instructions, settings, skills, plugins,5Use the import flow to bring instructions, settings, skills, plugins, projects,

6projects, and recent work from other agents into the ChatGPT desktop app. The6and recent work from another agent into the ChatGPT desktop app or Codex CLI.

7app imports supported items directly and lets you finish setup for any imported7Codex CLI can import from **Claude Code** or **Cursor**. The desktop app

8plugins or connections that need authorization.8supports Claude Code, with Cursor import available as it rolls out.

9 

10The desktop app imports supported items directly and lets you finish setup for

11imported plugins or connections that need authorization.

9 12 

10Importing doesn't change or delete your existing agent setup.13Importing doesn't change or delete your existing agent setup.

11 14 


15 18 

16## Start an import19## Start an import

17 20 

21### Import in the desktop app

22 

18<WorkflowSteps>23<WorkflowSteps>

19 24 

201. In the ChatGPT desktop app, open **Settings > Import**. If **Import** isn't251. In the ChatGPT desktop app, open **Settings > Import**. If **Import** isn't


27 32 

28</WorkflowSteps>33</WorkflowSteps>

29 34 

35### Import in Codex CLI

36 

371. Start a local Codex CLI session and type `/import`.

382. Choose **Claude Code** or **Cursor**.

393. Select the supported setup, project files, and recent chats you want to

40 import.

414. Review the imported configuration and continue working in Codex.

42 

43Codex CLI imports up to 50 chats from the last 30 days. The `/import` command

44isn't available during a running task, in a remote session, or while connected

45to a local app-server daemon. See [CLI slash

46commands](https://learn.chatgpt.com/docs/developer-commands?surface=cli#cli-import-claude-code-or-cursor-configuration-with-import).

47 

30<Illustration description="ChatGPT import screen for selecting setup, projects, and recent chats to import.">48<Illustration description="ChatGPT import screen for selecting setup, projects, and recent chats to import.">

31 <ExternalAgentImportIllustration step="items" />49 <ExternalAgentImportIllustration step="items" />

32</Illustration>50</Illustration>


48## What ChatGPT can import66## What ChatGPT can import

49 67 

50| Imported item | Destination |68| Imported item | Destination |

51| --------------------------- | ---------------------------------------------------- |69| --------------------------------- | ---------------------------------------------------- |

52| Instruction files | [`AGENTS.md`](https://learn.chatgpt.com/docs/agent-configuration/agents-md) |70| Instruction files | [`AGENTS.md`](https://learn.chatgpt.com/docs/agent-configuration/agents-md) |

53| `settings.json` | [`config.toml`](https://learn.chatgpt.com/docs/config-file/config-basic) |71| `settings.json` | [`config.toml`](https://learn.chatgpt.com/docs/config-file/config-basic) |

54| Skills | [Skills](https://learn.chatgpt.com/docs/build-skills) |72| Skills | [Skills](https://learn.chatgpt.com/docs/build-skills) |

55| Plugins | Plugins |73| Plugins | Plugins |

56| Existing project folders | Projects using the same folders |74| Existing project folders | Projects using the same folders |

75| Project memories from Claude Code | [Memories](https://learn.chatgpt.com/docs/customization/memories) |

57| Chats from the last 30 days | ChatGPT chats |76| Chats from the last 30 days | ChatGPT chats |

58| MCP server configuration | [Codex MCP configuration](https://learn.chatgpt.com/docs/extend/mcp) |77| MCP server configuration | [Codex MCP configuration](https://learn.chatgpt.com/docs/extend/mcp) |

59| Hooks | [Codex hooks](https://learn.chatgpt.com/docs/hooks) |78| Hooks | [Codex hooks](https://learn.chatgpt.com/docs/hooks) |

notifications.md +11 −0

Details

15operating system may ask you to grant notification permission to the ChatGPT15operating system may ask you to grant notification permission to the ChatGPT

16desktop app.16desktop app.

17 17 

18### Follow chats in Activity view

19 

20When **Activity** is available, select the bell in the sidebar to see chats

21that are unread, running, or waiting for your response. You can also open or

22close Activity view with <kbd>Cmd</kbd>+<kbd>Option</kbd>+<kbd>U</kbd> on macOS

23or <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>U</kbd> on Windows.

24 

25Use the view's options to choose which chats appear. Depending on your current

26surface, the options can include **Work**, **Chat**, **Pinned**, and

27**Scheduled**. You can also select **Mark all as read** to clear unread items.

28 

18<a id="follow-task-activity-with-a-pet"></a>29<a id="follow-task-activity-with-a-pet"></a>

19 30 

20### Follow chat activity with a pet31### Follow chat activity with a pet

plugins.md +12 −0

Details

140 140 

141</WorkflowSteps>141</WorkflowSteps>

142 142 

143### Connect supported partners with Sign in with ChatGPT

144 

145**Sign in with ChatGPT** is rolling out in beta for supported plugins and

146partner sites, including Airtable, GitLab, HubSpot, Notion, Supabase, and

147Vercel. When the option is available, select **Sign in with ChatGPT** while

148connecting the plugin to create or link your account with that service.

149 

150Signing in shares only your name, email address, and profile picture, when

151available, with the partner. It doesn't grant the plugin access to your data or

152approve actions automatically. Review and approve the plugin's requested

153permissions as a separate step before using the connection.

154 

143After you install a plugin, you can use it directly in the prompt window:155After you install a plugin, you can use it directly in the prompt window:

144 156 

145</ContentModeSwitch>157</ContentModeSwitch>

projects.md +8 −6

Details

193in every attached folder. To change the default working directory, point to a193in every attached folder. To change the default working directory, point to a

194folder and select **Make primary**.194folder and select **Make primary**.

195 195 

196New chats start in the primary folder. Codex also uses that folder for Git196New chats start in the primary folder. Codex also uses that folder as the

197operations and automatic discovery of `AGENTS.md`, skills, and `config.toml`.197default for Git operations and automatic discovery of `AGENTS.md`, skills, and

198Secondary folders remain available for file search, reading, and editing, but198`config.toml`. Secondary folders remain available for file search, reading, and

199Codex doesn't automatically discover those project files from secondary199editing, but Codex doesn't automatically discover those project files from

200folders.200secondary folders.

201 201 

202Use multiple folders when related work lives in different places, like an app and202Use multiple folders when related work lives in different places, like an app and

203its documentation or a website and its backend. Create separate projects for203its documentation or a website and its backend. Create separate projects for


206folder.206folder.

207 207 

208Use [local environments](https://learn.chatgpt.com/docs/environments/local-environment) to define setup208Use [local environments](https://learn.chatgpt.com/docs/environments/local-environment) to define setup

209actions and common commands for a project. Git review, pull request, and209actions and common commands for a project. The [review

210pane](https://learn.chatgpt.com/docs/code-review?surface=app) can show changes across repositories

211attached to the same project. Pull request and

210[worktree](https://learn.chatgpt.com/docs/environments/git-worktrees) actions target the primary212[worktree](https://learn.chatgpt.com/docs/environments/git-worktrees) actions target the primary

211repository. When you start a chat in a worktree, the other folders remain213repository. When you start a chat in a worktree, the other folders remain

212attached.214attached.

use-chatgpt.md +68 −18

Details

25 25 

26## Choose how you want to work26## Choose how you want to work

27 27 

28Use Chat for a question or back-and-forth. Turn on Work in the switcher when you want28Use Chat for a question or back-and-forth. Turn on Work in the switcher when you

29ChatGPT to carry a larger task through to a reviewable result. Select Codex when29want ChatGPT to carry a larger task through to a reviewable result. Select Codex

30you want developer views or more technical detail, especially for software30when you want developer views or more technical detail, especially for software

31development.31development.

32 32 

33| Choose | When you want to | Examples |33| Choose | When you want to | Examples |


36| ChatGPT Work | Define an outcome and get a reviewable result | Create a deck, analyze files, draft a report, build a project plan |36| ChatGPT Work | Define an outcome and get a reviewable result | Create a deck, analyze files, draft a report, build a project plan |

37| Codex | Use developer tools and see technical details | Debug code, run tests, review a PR, implement a feature |37| Codex | Use developer tools and see technical details | Debug code, run tests, review a PR, implement a feature |

38 38 

39In Codex, point to **New chat**, then select the **Quick chat** icon on its right39Use Chat to ask questions, brainstorm, draft or revise text, summarize files,

40when you want to:40compare options, or clarify a larger task. In Codex, point to **New chat**, then

41 41select **Quick chat** when that option is available.

42- Ask a question, search the web, or learn about a topic.42 

43- Get an unfamiliar idea explained in simpler language.43When you need a finished, reviewable result, switch to **Work** and describe

44- Brainstorm possibilities.44what it should include. See [Get started with ChatGPT

45- Draft a message, outline, or piece of content.45Work](https://learn.chatgpt.com/docs/get-started-with-work) for example tasks, prompts, and best

46- Rewrite something for a different tone or audience.46practices.

47- Summarize notes, text, or a file.47 

48- Compare options or think through a decision.48### What ChatGPT Work can do

49- Clarify what you need before starting a larger task.49 

50 50ChatGPT Work can plan a task, gather context, use tools, and carry the work

51When you need a substantial, reviewable result, turn on Work in the switcher and describe51through to a result you can review. Ask it to:

52the outcome you need. See [Get started with ChatGPT Work](https://learn.chatgpt.com/docs/get-started-with-work)52 

53for example tasks, prompts, and best practices.53- **Research and analyze information.** Search the web, browse websites,

54 compare sources, read files, analyze data, and summarize findings.

55- **Use your files and tools.** Bring in uploaded files,

56 [projects](https://learn.chatgpt.com/docs/projects), memories, ChatGPT Library, and installed

57 [plugins](https://learn.chatgpt.com/docs/plugins). Plugins can provide connected information, reusable

58 workflows, and supported actions.

59- **Create finished files.** Draft and refine [documents, presentations,

60 spreadsheets, and PDF files](https://learn.chatgpt.com/docs/artifacts-viewer). Review the result, ask

61 for specific changes, and download the completed file.

62- **Create visual and interactive work.** Generate or edit

63 [images](https://learn.chatgpt.com/docs/image-generation), make interactive

64 [visualizations](https://learn.chatgpt.com/docs/visualizations), and build or share websites and apps

65 with [Sites](https://learn.chatgpt.com/docs/sites).

66- **Work across websites and apps.** Use the [browser](https://learn.chatgpt.com/docs/browser) to

67 research and interact with websites. In the desktop app, use the

68 [Chrome extension](https://learn.chatgpt.com/docs/chrome-extension),

69 [Computer Use](https://learn.chatgpt.com/docs/computer-use), and [appshots](https://learn.chatgpt.com/docs/appshots) when

70 those features are available.

71- **Run code and review technical work.** Run code and shell commands, analyze

72 data, inspect files, [review code](https://learn.chatgpt.com/docs/code-review), and work with

73 repositories your selected environment can access.

74- **Delegate and continue longer tasks.** Split independent work across

75 [subagents](https://learn.chatgpt.com/docs/agent-configuration/subagents), follow their progress, and

76 keep [long-running work](https://learn.chatgpt.com/docs/long-running-work) active.

77- **Repeat useful workflows.** Set up [scheduled

78 tasks](https://learn.chatgpt.com/docs/automations) for recurring work and use

79 [skills](https://learn.chatgpt.com/docs/skills-and-plugins) to reuse a workflow.

80- **Talk through a task.** On supported plans in the desktop app, use

81 [ChatGPT Voice](https://learn.chatgpt.com/docs/features/voice) to start work, check progress, or

82 change direction.

83 

84Features depend on your plan, platform, region, rollout, and workspace

85 settings. Your workspace administrator can control access to ChatGPT Work,

86 plugins, browser use, and network access. ChatGPT Work and Codex share [usage

87 limits](https://learn.chatgpt.com/docs/pricing).

88 

89### Choose cloud or local work

90 

91On the web, ChatGPT Work runs in a managed cloud environment. In the desktop

92app, you may also be able to choose where a task runs:

93 

94- **Cloud:** Run work in an isolated hosted environment. A task can keep going

95 after you close the desktop app and continue from the web or mobile app. Cloud

96 work can use uploaded files, connected tools, and approved websites.

97- **Work locally:** Use files, apps, or the browser on your computer. Local

98 work is available in the desktop app when enabled for your account or

99 workspace.

100 

101ChatGPT shows its progress and pauses when it needs information or approval.

102Review consequential actions before approving them, and check the final result

103before you use or share it.

54 104 

55<a id="compare-work-mode-and-codex-on-desktop"></a>105<a id="compare-work-mode-and-codex-on-desktop"></a>

56 106 

whats-new.md +157 −0

Details

6work, with examples and links to learn more. For every versioned update, bug fix,6work, with examples and links to learn more. For every versioned update, bug fix,

7and minor improvement, see the [Codex changelog](https://learn.chatgpt.com/docs/changelog).7and minor improvement, see the [Codex changelog](https://learn.chatgpt.com/docs/changelog).

8 8 

9## July 27–31, 2026

10 

11### Use GPT-5.6 Terra and Luna at lower rates

12 

13GPT-5.6 Terra now costs 20% less, and GPT-5.6 Luna costs 80% less. Input,

14cached input, and output rates decreased by the same proportions. The updated

15[usage limits and rates](https://learn.chatgpt.com/docs/pricing) make Terra a stronger fit for everyday

16work and Luna especially useful for focused coding and high-volume tasks.

17 

18### Find useful context across your browser and open tabs

19 

20In the ChatGPT desktop app, the [built-in browser](https://learn.chatgpt.com/docs/browser) can find

21pages from your browsing history or search Google directly from its address

22bar. ChatGPT can also search your browsing history when a task needs earlier

23context.

24 

25The [Chrome extension](https://learn.chatgpt.com/docs/chrome-extension) lets you mention open tabs,

26bring selected page text into a side chat, ask questions about YouTube videos,

27or select **Ask ChatGPT** from a page's context menu. Review and approve

28requests to use browser history before ChatGPT includes that information in a

29task.

30 

31### Review changes across repositories

32 

33When a [local project contains more than one

34folder](https://learn.chatgpt.com/docs/projects#use-local-projects-for-folders-and-codebases), the

35desktop app shows every repository and the lines changed in each one. Select

36**Review** to inspect their diffs together without switching between separate

37review views.

38 

39 

40 

41**Prompt:**

42 

43```text

44Review the changes across every repository in this project, identify integration risks, and summarize the fixes needed before I open a pull request.

45```

46 

47### Refine generated images in your conversation

48 

49Open a generated image in the expanded viewer, then switch between

50**Focused view** and **Canvas view**. Add comments across images, select the

51versions you want to keep, and ask for targeted edits without leaving the chat.

52Learn more about [image generation](https://learn.chatgpt.com/docs/image-generation).

53 

54### Find chats that need your attention

55 

56The desktop app's new **Activity view** brings together chats you recently

57engaged with and work that needs your attention. Select the bell in the sidebar

58to open the view.

59 

60[Read the July 30 desktop release

61notes](https://learn.chatgpt.com/docs/changelog#codex-2026-07-30-app).

62 

63### Connect partner tools with Sign in with ChatGPT

64 

65**Sign in with ChatGPT** is rolling out in beta to supported plugins and

66partner sites, beginning with Airtable, GitLab, HubSpot, Notion, Supabase, and

67Vercel. Use it to create or link a partner account with fewer steps, then start

68working with that service in ChatGPT or Codex.

69 

70Partners receive only your name, email address, and profile picture when

71available. Each plugin's requested access still requires a separate review

72and approval. Read the [July 29 sign-in

73announcement](https://learn.chatgpt.com/docs/changelog#codex-2026-07-29).

74 

75### Collaborate in a dedicated academic research workspace

76 

77[ChatGPT for Academic Researchers](https://openai.com/index/chatgpt-for-academic-researchers/)

78offers eligible faculty and postdoctoral researchers 12 months of complimentary

79access to a dedicated ChatGPT workspace. Approved teams can include up to five

80verified researchers from the same institution and receive business data

81protections and ChatGPT Pro-level usage limits. Participants can use GPT-5.6

82across ChatGPT, ChatGPT Work, and Codex for research and coding workflows.

83 

84The program covers ChatGPT access, not OpenAI API credits. Eligibility requires

85[institutional verification and a qualifying research

86paper](https://help.openai.com/en/articles/20001406).

87 

88### Continue Codex tasks more reliably on iOS

89 

90ChatGPT for iOS 1.2026.202 reconnects to tasks more reliably when you return to

91the app or unlock your device with Face ID. Voice conversations use your chosen

92ChatGPT voice and show usage-limit warnings, while the composer now suggests

93installed plugins and their skills consistently with the desktop app.

94 

95The release also improves pause and resume controls for goals, inline tables

96and visual themes, large workspace diffs, selected-text references, and model

97restoration. Read the [July 27 iOS release

98notes](https://learn.chatgpt.com/docs/changelog#codex-2026-07-27-mobile).

99 

100### Compare security scans and manage findings

101 

102Hosted Codex Security plugin releases `0.1.14` and `0.1.15` add scan comparisons,

103false-positive feedback, scoped `SECURITY.md` policies, and clearer repository

104and finding histories. You can select findings for tracking in Linear or GitHub

105Issues, with Codex reviewing the proposed action before you approve it.

106 

107Use the existing [Codex Security

108workbench](https://learn.chatgpt.com/docs/security/plugin/workbench) to review saved scans, findings,

109repository history, and remediation in the desktop app. The hosted plugin

110catalog offers version `0.1.15`, while the public CLI plugin marketplace

111offers version `0.1.11`. Check the [Codex Security plugin

112changelog](https://learn.chatgpt.com/docs/security/plugin/changelog) before relying on a new feature.

113 

114### Run security scans from the terminal, CI, or TypeScript

115 

116The public `@openai/codex-security` CLI and TypeScript SDK reached version

117`0.1.5`, with release numbers separate from the Codex Security plugin. Use the

118package to [run scans from the CLI](https://learn.chatgpt.com/docs/security/cli), review pull-request

119changes and upload SARIF results in [CI](https://learn.chatgpt.com/docs/security/cli/ci), or run

120resumable [bulk scans](https://learn.chatgpt.com/docs/security/cli/bulk-scans) across GitHub

121repositories or a pinned CSV inventory.

122 

123The [Codex Security TypeScript SDK](https://learn.chatgpt.com/docs/security/sdk) also lets you build

124scanning, progress reporting, cost controls, and cancellation into your own

125tools. The package is public, but running scans still requires Codex Security

126access. Some full-repository scans also require Trusted Access for Cyber.

127 

128### Organize sessions and extend Codex CLI 0.146.0

129 

130[Codex CLI 0.146.0](https://github.com/openai/codex/releases/tag/rust-v0.146.0)

131lets you name a new chat with `/new release prep` or `/clear bug bash`, pin

132important threads, and switch between side conversations without closing them.

133It also adds temporary conversation forks, standalone web search for compatible

134custom model providers, executor-provided skills, and support for Agent Plugins

135manifests, workspace plugin publishing, and other plugin marketplaces.

136 

137For custom clients, the [app server](https://learn.chatgpt.com/docs/app-server) can filter pinned

138threads, create in-memory forks, inspect installed connector state, and read

139connector metadata. Experimental WebSocket support also connects app-server to

140remote Code Mode hosts. Review the

141[app-server security requirements](https://learn.chatgpt.com/docs/app-server#connect-the-cli-terminal-ui)

142before exposing a remote connection. The release also improves proxy support,

143MCP reconnection, terminal responsiveness, and Windows sandbox reliability.

144 

145### Use GPT-5.6 Sol for hosted Codex work

146 

147[GPT-5.6 Sol](https://learn.chatgpt.com/docs/models#recommended-models) now powers Codex cloud code

148review and quality assurance for eligible customers. Sol is the flagship

149GPT-5.6 model for complex coding, research, computer use, and security work.

150Codex cloud selects its model automatically; Terra and Luna remain available on

151supported local and web surfaces.

152 

153### Prepare for the GPT-5.4 model retirement

154 

155On August 31, GPT-5.4 and GPT-5.4 mini will retire from Codex for users signed

156in with ChatGPT. Replace `gpt-5.4` with `gpt-5.6-terra` and `gpt-5.4-mini`

157with `gpt-5.6-luna` in workspace defaults, saved model settings, managed

158configurations, custom agents, and scheduled tasks.

159 

160The OpenAI API and Codex sessions authenticated with an API key are not

161affected. Review the [deprecated Codex models](https://learn.chatgpt.com/docs/models#deprecated-codex-models)

162and [workspace model

163availability](https://learn.chatgpt.com/docs/enterprise/workspace-model-availability) before the

164cutoff.

165 

9## July 20–24, 2026166## July 20–24, 2026

10 167 

11### Talk through work with ChatGPT Voice168### Talk through work with ChatGPT Voice