1# Commands – Codex app1# Codex app commands
2 2
3Use these commands and keyboard shortcuts to navigate the Codex app.3Use these commands and keyboard shortcuts to navigate the Codex app.
4 4
5## Keyboard shortcuts5## Keyboard shortcuts
6 6
7| | Action | macOS shortcut |7| | Action | macOS shortcut |
8| --- | --- | --- |8| ----------- | ------------------ | --------------------------------------------------------------------------------- |
9| **General** | | |9| **General** | | |
10| | Command menu | `Cmd` + `Shift` + `P` or `Cmd` + `K` |10| | Command menu | <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> or <kbd>Cmd</kbd> + <kbd>K</kbd> |
11| | Settings | `Cmd` + `,` |11| | Settings | <kbd>Cmd</kbd> + <kbd>,</kbd> |
12| | Keyboard shortcuts | `Cmd` + `/` |12| | Keyboard shortcuts | <kbd>Cmd</kbd> + <kbd>/</kbd> |
13| | Open folder | `Cmd` + `O` |13| | Open folder | <kbd>Cmd</kbd> + <kbd>O</kbd> |
14| | Navigate back | `Cmd` + `[` |14| | Navigate back | <kbd>Cmd</kbd> + <kbd>[</kbd> |
15| | Navigate forward | `Cmd` + `]` |15| | Navigate forward | <kbd>Cmd</kbd> + <kbd>]</kbd> |
16| | Increase font size | `Cmd` + `+` or `Cmd` + `=` |16| | Increase font size | <kbd>Cmd</kbd> + <kbd>+</kbd> or <kbd>Cmd</kbd> + <kbd>=</kbd> |
17| | Decrease font size | `Cmd` + `-` or `Cmd` + `_` |17| | Decrease font size | <kbd>Cmd</kbd> + <kbd>-</kbd> or <kbd>Cmd</kbd> + <kbd>\_</kbd> |
18| | Toggle sidebar | `Cmd` + `B` |18| | Toggle sidebar | <kbd>Cmd</kbd> + <kbd>B</kbd> |
19| | Toggle diff panel | `Cmd` + `Option` + `B` |19| | Toggle diff panel | <kbd>Cmd</kbd> + <kbd>Option</kbd> + <kbd>B</kbd> |
20| | Toggle terminal | `Cmd` + `J` |20| | Toggle terminal | <kbd>Cmd</kbd> + <kbd>J</kbd> |
21| | Clear the terminal | `Ctrl` + `L` |21| | Clear the terminal | <kbd>Ctrl</kbd> + <kbd>L</kbd> |
22| **Thread** | | |22| **Thread** | | |
23| | New thread | `Cmd` + `N` or `Cmd` + `Shift` + `O` |23| | New thread | <kbd>Cmd</kbd> + <kbd>N</kbd> or <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>O</kbd> |
24| | Search threads | `Cmd` + `G` |24| | Search threads | <kbd>Cmd</kbd> + <kbd>G</kbd> |
25| | Find in thread | `Cmd` + `F` |25| | Find in thread | <kbd>Cmd</kbd> + <kbd>F</kbd> |
26| | Previous thread | `Cmd` + `Shift` + `[` |26| | Previous thread | <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>[</kbd> |
27| | Next thread | `Cmd` + `Shift` + `]` |27| | Next thread | <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>]</kbd> |
28| | Dictation | `Ctrl` + `M` |28| | Dictation | <kbd>Ctrl</kbd> + <kbd>M</kbd> |
29 29
30To find, customize, or reset shortcuts, open **Settings > Keyboard Shortcuts**.30To find, customize, or reset shortcuts, open **Settings > Keyboard Shortcuts**.
31You can search by command name or switch the search field into keystroke mode31You can search by command name or switch the search field into keystroke mode
33 33
34## Search past threads and find in a thread34## Search past threads and find in a thread
35 35
36Use thread search (`Cmd`/`Ctrl` + `G`) to reopen a36Use thread search (<kbd>Cmd</kbd>/<kbd>Ctrl</kbd> + <kbd>G</kbd>) to reopen a
37past conversation. When expanded matching is available in your Codex desktop37past conversation. When expanded matching is available in your Codex desktop
38app, it can also match conversation content and Git branch names, so you can38app, it can also match conversation content and Git branch names, so you can
39search for a phrase from the thread or a branch such as `fix/login-redirect`.39search for a phrase from the thread or a branch such as `fix/login-redirect`.
40 40
41Use **Find in thread** (`Cmd` + `F`) after opening a thread41Use **Find in thread** (<kbd>Cmd</kbd> + <kbd>F</kbd>) after opening a thread
42to find text within that current conversation. It does not search across other42to find text within that current conversation. It does not search across other
43threads.43threads.
44 44
58### Available slash commands58### Available slash commands
59 59
60| Slash command | Description |60| Slash command | Description |
61| --- | --- |61| ------------- | -------------------------------------------------------------------------------------- |
62| `/feedback` | Open the feedback dialog to submit feedback and optionally include logs. |62| `/feedback` | Open the feedback dialog to submit feedback and optionally include logs. |
63| `/goal` | Set a persistent goal for Codex to work toward; use `/plan` first to shape it. |63| `/goal` | Set a persistent goal for Codex to work toward; use `/plan` first to shape it. |
64| `/mcp` | Open MCP status to view connected servers. |64| `/mcp` | Open MCP status to view connected servers. |
73more input. To define the goal with Codex first, start with `/plan`, then set73more input. To define the goal with Codex first, start with `/plan`, then set
74the refined goal with `/goal`.74the refined goal with `/goal`.
75 75
76If `/goal` doesn’t appear in the slash command list, enable `features.goals`76If `/goal` doesn't appear in the slash command list, enable `features.goals`
77in `config.toml`:77in `config.toml`:
78 78
79```79```toml
80[features]80[features]
81goals = true81goals = true
82```82```
83 83
84You can also run `codex features enable goals` from the CLI or ask Codex to run it.84You can also run `codex features enable goals` from the CLI or ask Codex to run it.
85 85
8686<CodexScreenshot
87 alt="Codex app goal progress controls above the composer"
88 lightSrc="/images/codex/app/goal-dialog-light.webp"
89 darkSrc="/images/codex/app/goal-dialog-dark.webp"
90 class="mb-6"
91/>
87 92
88When a goal is active, the app shows its progress above the composer. Use the93When a goal is active, the app shows its progress above the composer. Use the
89buttons in that progress row to pause or resume the goal, edit the goal text, or94buttons in that progress row to pause or resume the goal, edit the goal text, or
94 99
95## Deep links100## Deep links
96 101
97The Codex app registers the `codex://` URL scheme so links can open specific parts of the app directly.102The Codex app registers the `codex://` URL scheme so links can open specific parts of the app directly. Encode query string values before adding them to a URL.
98 103
99### Common links104### Supported links
100 105
101Use these links when you just need to open a common app destination. The sections below list the full reference by link type.106Use these canonical forms when you create links. The sections below list the full reference by link type.
102 107
103| Deep link | Opens |108| Deep link | Opens |
104| --- | --- |109| --------------------------------------------------------------------------- | ---------------------------------------------------------------- |
105| `codex://threads/new` | A new local thread. |110| `codex://threads/new` | A new local thread. |
106| `codex://threads/<thread-id>` | A local thread. `<thread-id>` must be the thread’s session UUID. |111| `codex://new?<query>` | A new local thread with at least one new-thread query parameter. |
112| `codex://threads/<thread-id>` | A local thread. `<thread-id>` must be the thread's session UUID. |
107| `codex://settings` | Settings. |113| `codex://settings` | Settings. |
108| `codex://skills` | Skills. |114| `codex://skills` | Skills. |
109| `codex://automations` | Automations with the create flow open. |115| `codex://automations` | Automations with the create flow open. |
116| `codex://plugins/install/<plugin-name>?marketplace=<marketplace-name>` | The install flow for a plugin from a known marketplace. |
117| `codex://plugins/<plugin-id>` | A plugin detail page. |
118| `codex://plugins/<plugin-name>?marketplacePath=<absolute-marketplace-path>` | A local plugin detail page from a local marketplace. |
119| `codex://pets/install?name=<pet-name>&imageUrl=<https-image-url>` | The pet install flow. |
110 120
111### Threads121### Threads
112 122
113Use these links when you need to open an existing local thread or start a new one.123Use these links when you need to open an existing local thread or start a new one.
114 124
115| Deep link | Opens |125| Deep link | Opens |
116| --- | --- |126| ----------------------------- | -------------------------------------------------------------------------------------------------------------- |
117| `codex://threads/<thread-id>` | A local thread. `<thread-id>` must be the thread’s session UUID. |127| `codex://threads/<thread-id>` | A local thread. `<thread-id>` must be the thread's session UUID. |
118| `codex://threads/new` | A new local thread. |128| `codex://threads/new` | A new local thread. |
129| `codex://threads/new?<query>` | A new local thread with optional query parameters. |
130| `codex://new?<query>` | A new local thread. Include at least one of `prompt`, `path`, or `originUrl`; otherwise the link does nothing. |
119 131
120For `codex://threads/new`, add any of these query parameters as needed; you can combine them in the same URL.132For `codex://threads/new` or `codex://new`, add any of these query parameters as needed; you can combine them in the same URL.
121 133
122| Query parameter | Required | What it does |134| Query parameter | Required | What it does |
123| --- | --- | --- |135| ---------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
124| `prompt=<text>` | No | Sets the initial composer text. |136| `prompt=<text>` | No | Sets the initial composer text. |
125| `path=<absolute-path>` | No | Opens the new thread in a local workspace. `path` must be an absolute path to a local directory. When valid, Codex uses that directory as the active workspace. |137| `path=<absolute-path>` | No | Opens the new thread in a local workspace. `path` must be an absolute path to a local directory. When valid, Codex uses that directory as the active workspace. |
126| `originUrl=<git-remote-url>` | No | Matches one of your current workspace roots by Git remote URL. If `path` is also present, Codex resolves `path` first. |138| `originUrl=<git-remote-url>` | No | Matches one of your current workspace roots by Git remote URL. If `path` is also present, Codex resolves `path` first. |
127 139
128Example: [Show me some fun stats about how I’ve been using Codex](codex://threads/new?prompt=Show%20me%20some%20fun%20stats%20about%20how%20I%27ve%20been%20using%20Codex)140Example: [Show me some fun stats about how I've been using Codex](codex://threads/new?prompt=Show%20me%20some%20fun%20stats%20about%20how%20I%27ve%20been%20using%20Codex)
129 141
130### Settings142### Settings
131 143
132Use these links when you need to open Settings or a specific settings page.144Use these links when you need to open Settings or a specific settings page.
133 145
134| Deep link | Opens |146| Deep link | Opens |
135| --- | --- |147| --------------------------------------------- | ---------------------------------------- |
136| `codex://settings` | Settings. |148| `codex://settings` | Settings. |
137| `codex://settings/browser-use` | Browser use settings. |149| `codex://settings/browser-use` | Browser use settings. |
138| `codex://settings/computer-use/google-chrome` | Google Chrome settings for computer use. |150| `codex://settings/computer-use/google-chrome` | Google Chrome settings for computer use. |
139| `codex://settings/connections` | Remote connections settings. |151| `codex://settings/connections` | Remote connections settings. |
140 152
153Unsupported `codex://settings/...` paths open the main Settings page.
154
141### Skills155### Skills
142 156
143Use these links when you need to open Skills.157Use these links when you need to open Skills.
144 158
145| Deep link | Opens |159| Deep link | Opens |
146| --- | --- |160| ---------------- | ------- |
147| `codex://skills` | Skills. |161| `codex://skills` | Skills. |
148 162
149### Automations163### Automations
151Use these links when you need to open Automations.165Use these links when you need to open Automations.
152 166
153| Deep link | Opens |167| Deep link | Opens |
154| --- | --- |168| --------------------- | -------------------------------------- |
155| `codex://automations` | Automations with the create flow open. |169| `codex://automations` | Automations with the create flow open. |
156 170
157### Plugins171### Plugins
158 172
159Plugin links use different forms depending on whether you are opening a plugin, installing from a marketplace, or working from a local `marketplace.json`. For plugin basics, see [Plugins](https://developers.openai.com/codex/plugins). For local or repo marketplace setup, see [Build plugins](https://developers.openai.com/codex/plugins/build#build-your-own-curated-plugin-list).173Plugin links use different forms depending on whether you are installing from a marketplace, opening a plugin, or working from a local `marketplace.json`. For plugin basics, see [Plugins](https://developers.openai.com/codex/plugins). For local or repo marketplace setup, see [Build plugins](https://developers.openai.com/codex/plugins/build#build-your-own-curated-plugin-list).
174
175#### Plugin install
176
177Use this form to open the install flow for a plugin from a marketplace that Codex already knows about.
178
179| Deep link | Opens |
180| ---------------------------------------------------------------------- | ----------------------------------------------- |
181| `codex://plugins/install/<plugin-name>?marketplace=<marketplace-name>` | The plugin detail or install flow for a plugin. |
182
183| Query parameter | Required | What it does |
184| -------------------------------- | -------- | ------------------------------------------------------------------------------- |
185| `marketplace=<marketplace-name>` | Yes | Identifies the marketplace. For an OpenAI-curated plugin, use `openai-curated`. |
186
187The install link accepts only the `marketplace` query parameter. If Codex cannot find the requested marketplace or plugin, it opens the Plugins page instead.
160 188
161#### Plugin detail189#### Plugin detail
162 190
163| Deep link | Opens |191| Deep link | Opens |
164| --- | --- |192| ----------------------------- | --------------------- |
165| `codex://plugins/<plugin-id>` | A plugin detail page. |193| `codex://plugins/<plugin-id>` | A plugin detail page. |
166 194
167`<plugin-id>` must identify the plugin. For an OpenAI-curated plugin, use the form `<plugin-name>@openai-curated`.195`<plugin-id>` must identify the plugin. For an OpenAI-curated plugin, use the form `<plugin-name>@openai-curated`.
169Codex-generated plugin links can also include these query parameters. Omit both when you handwrite a link.197Codex-generated plugin links can also include these query parameters. Omit both when you handwrite a link.
170 198
171| Query parameter | Required | What it does |199| Query parameter | Required | What it does |
172| --- | --- | --- |200| ------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
173| `hostId=<host-id>` | No | Identifies the Codex host that owns the plugin context, such as `local` or one of your configured remote connections. Codex provides these IDs. |201| `hostId=<host-id>` | No | Identifies the Codex host that owns the plugin context, such as `local` or one of your configured remote connections. Codex provides these IDs. |
174| `source=manage` | No | Preserves the app’s plugin-management entry point. It is not admin-only. |202| `source=manage` | No | Preserves the app's plugin-management entry point. It is not admin-only. |
175 203
176Example: [Open the OpenAI Developers plugin](codex://plugins/openai-developers@openai-curated)204Example: [Open the OpenAI Developers plugin](codex://plugins/openai-developers@openai-curated)
177 205
180For local or repo marketplace setup, see [Build plugins](https://developers.openai.com/codex/plugins/build#build-your-own-curated-plugin-list).208For local or repo marketplace setup, see [Build plugins](https://developers.openai.com/codex/plugins/build#build-your-own-curated-plugin-list).
181 209
182| Deep link | Opens |210| Deep link | Opens |
183| --- | --- |211| --------------------------------------------------------------------------- | ---------------------------------------------------- |
184| `codex://plugins/<plugin-name>?marketplacePath=<absolute-marketplace-path>` | A local plugin detail page from a local marketplace. |212| `codex://plugins/<plugin-name>?marketplacePath=<absolute-marketplace-path>` | A local plugin detail page from a local marketplace. |
185 213
186| Query parameter | Required | What it does |214| Query parameter | Required | What it does |
187| --- | --- | --- |215| --------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------- |
188| `marketplacePath=<absolute-marketplace-path>` | Yes | Absolute path to the local `marketplace.json`, for example `/Users/alex/.agents/plugins/marketplace.json`. |216| `marketplacePath=<absolute-marketplace-path>` | Yes | Absolute path to the local `marketplace.json`, for example `/Users/alex/.agents/plugins/marketplace.json`. |
189| `mode=share` | No | Opens the share flow for that local plugin. |217| `mode=share` | No | Opens the share flow for that local plugin. |
190 218
193Use these links to open the pet install flow when that feature is enabled.221Use these links to open the pet install flow when that feature is enabled.
194 222
195| Deep link | Opens |223| Deep link | Opens |
196| --- | --- |224| ----------------------------------------------------------------- | --------------------- |
197| `codex://pets/install?name=<pet-name>&imageUrl=<https-image-url>` | The pet install flow. |225| `codex://pets/install?name=<pet-name>&imageUrl=<https-image-url>` | The pet install flow. |
198 226
199| Query parameter | Required | What it does |227| Query parameter | Required | What it does |
200| --- | --- | --- |228| ---------------------------- | -------- | ------------------------------------------------- |
201| `name=<pet-name>` | Yes | Sets the pet name. |229| `name=<pet-name>` | Yes | Sets the pet name. |
202| `imageUrl=<https-image-url>` | Yes | Sets the pet image URL. `imageUrl` must be HTTPS. |230| `imageUrl=<https-image-url>` | Yes | Sets the pet image URL. `imageUrl` must be HTTPS. |
203| `description=<text>` | No | Sets the optional pet description. |231| `description=<text>` | No | Sets the optional pet description. |