# Commands

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

Use these commands and keyboard shortcuts to navigate the app.

## Keyboard shortcuts

Choose your platform to see its default shortcuts. Some shortcuts appear only when the corresponding feature or view is available.

### macOS



| General | Shortcut |
| --- | --- |
| Open command menu | **⌘+⇧+P** or **⌘+K** |
| Open settings | **⌘+,** |
| Open keyboard shortcuts | **⌘+/** |
| Open folder (Codex and Work only) | **⌘+O** |
| Navigate back | **⌘+[** or **Mouse Back** |
| Navigate forward | **⌘+]** or **Mouse Forward** |
| Increase font size | **⌘++** or **⌘+Numpad +** |
| Decrease font size | **⌘+-** or **⌘+Numpad −** |
| Reset font size | **⌘+0** or **⌘+Numpad 0** |
| Toggle sidebar | **⌘+B** |
| Toggle bottom panel (Codex only) | **⌘+J** |
| Toggle terminal (Codex only) | **⌃+`** |
| Clear terminal (When the terminal is focused) | **⌃+L** or **⌘+K** |
| Clear all unread indicators (Codex only) | **⇧+Esc** |
| Undo last app action | **⌘+Z** |
| Redo last app action | **⌘+⇧+Z** |
| Close current tab or window | **⌘+W** |
| Toggle full screen | **⌘+⌃+F** |
| Quit the app | **⌘+Q** |

| Chats | Shortcut |
| --- | --- |
| New chat | **⌘+N** or **⌘+⇧+O** |
| New standalone chat (Codex only) | **⌘+⌥+O** |
| Quick chat (ChatGPT only) | **⌘+⌥+N** |
| New temporary chat (ChatGPT only) | **⌘+⇧+N** |
| Archive chat | **⌘+⇧+A** |
| Mark chat as unread | **⌘+⇧+U** |
| Pin or unpin chat | **⌘+⌥+P** |
| Rename chat | **⌘+⌥+R** |
| Open side chat (Codex only) | **⌘+⌥+S** |
| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |
| Find in chat | **⌘+F** |
| Find next match | **⌘+G** |
| Find previous match | **⌘+⇧+G** |
| Previous chat or tab | **⌃+⇧+Tab** or **⌘+⇧+[** or **⌘+⌥+←** |
| Next chat or tab | **⌃+Tab** or **⌘+⇧+]** or **⌘+⌥+→** |
| Next chat needing attention (Codex only) | **⌘+⌥+A** |
| Open recent chat 1–6 | **⌘+⌥+1–6** |
| Go to chat 1–9 | **⌘+1–9** |

| Input and modes | Shortcut |
| --- | --- |
| Open model picker | **⌃+⇧+M** |
| Open project picker | **⌘+⌥+⇧+O** |
| Start voice chat (When voice chat is available) | **⌃+⇧+V** |
| Start dictation (When dictation is available) | **⌃+⇧+D** |
| Restore previous composer prompt (When the composer is empty) | **↑** |
| Approve request (When an approval request is open) | **⏎** |
| Decline request (When an approval request is open) | **Esc** |
| Switch to Chat, Work, or Codex (In the order shown) | **⌃+1** or **⌃+2** or **⌃+3** |
| Toggle Activity view (When Activity is available) | **⌘+⌥+U** |

| Workspace and browser | Shortcut |
| --- | --- |
| Run environment action 1 (When the environment defines a primary action) | **⌘+⇧+D** |
| Search files (Codex only) | **⌘+P** |
| Toggle file tree (Codex only) | **⌘+⇧+E** |
| Open review tab (Codex only) | **⌃+⇧+G** |
| Toggle review panel (Codex only) | **⌘+⌥+B** |
| Open browser tab (When the built-in browser is available) | **⌘+T** |
| Toggle browser panel (When the built-in browser is available) | **⌘+⇧+B** |
| Go to line or focus browser address bar (Depends on the focused view) | **⌘+L** |
| Browser back (When the built-in browser is focused) | **⌘+←** |
| Browser forward (When the built-in browser is focused) | **⌘+→** |
| Reload browser page (When the built-in browser is focused) | **⌘+R** |
| Reload browser page without cache (When the built-in browser is focused) | **⌘+⇧+R** |
| Copy browser URL (When the built-in browser is focused) | **⌘+⇧+C** |
| Toggle browser browse or comment mode (When browser commenting is available) | **⌘+.** |
| Copy conversation path (Codex only) | **⌘+⌥+⇧+C** |
| Copy chat deep link | **⌘+⌥+L** |
| Copy session ID | **⌘+⌥+C** |
| Copy working directory (Codex only) | **⌘+⇧+C** |
| Take an Appshot (press both keys simultaneously) | **⌘+⌘** |

### Windows



| General | Shortcut |
| --- | --- |
| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |
| Open settings | **Ctrl+,** |
| Open keyboard shortcuts | **Ctrl+/** |
| Open folder (Codex and Work only) | **Ctrl+O** |
| Navigate back | **Ctrl+[** or **Mouse Back** |
| Navigate forward | **Ctrl+]** or **Mouse Forward** |
| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |
| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |
| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |
| Toggle sidebar | **Ctrl+B** |
| Toggle bottom panel (Codex only) | **Ctrl+J** |
| Toggle terminal (Codex only) | **Ctrl+`** |
| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |
| Clear all unread indicators (Codex only) | **Shift+Esc** |
| Undo last app action | **Ctrl+Z** |
| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |
| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |
| Toggle full screen | **F11** |
| Quit the app | **Ctrl+Q** |

| Chats | Shortcut |
| --- | --- |
| New chat | **Ctrl+N** or **Ctrl+Shift+O** |
| New standalone chat (Codex only) | **Ctrl+Alt+O** |
| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |
| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |
| Archive chat | **Ctrl+Shift+A** |
| Mark chat as unread | **Ctrl+Shift+U** |
| Pin or unpin chat | **Ctrl+Alt+P** |
| Rename chat | **Ctrl+Alt+R** |
| Open side chat (Codex only) | **Ctrl+Alt+S** |
| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |
| Find in chat | **Ctrl+F** |
| Find next match | **Ctrl+G** |
| Find previous match | **Shift+F3** |
| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |
| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |
| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |
| Open recent chat 1–6 | **Ctrl+Alt+1–6** |
| Go to chat 1–9 | **Ctrl+1–9** |

| Input and modes | Shortcut |
| --- | --- |
| Open model picker | **Ctrl+Shift+M** |
| Open project picker | **Ctrl+Alt+Shift+O** |
| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |
| Start dictation (When dictation is available) | **Ctrl+Shift+D** |
| Restore previous composer prompt (When the composer is empty) | **↑** |
| Approve request (When an approval request is open) | **⏎** |
| Decline request (When an approval request is open) | **Esc** |
| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |
| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

| Workspace and browser | Shortcut |
| --- | --- |
| Run environment action 1 (When the environment defines a primary action) | **Win+Shift+D** |
| Search files (Codex only) | **Ctrl+P** |
| Toggle file tree (Codex only) | **Ctrl+Shift+E** |
| Open review tab (Codex only) | **Ctrl+Shift+G** |
| Toggle review panel (Codex only) | **Ctrl+Alt+B** |
| Open browser tab (When the built-in browser is available) | **Ctrl+T** |
| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |
| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |
| Browser back (When the built-in browser is focused) | **Alt+←** |
| Browser forward (When the built-in browser is focused) | **Alt+→** |
| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |
| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |
| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |
| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |
| Copy chat deep link | **Ctrl+Alt+L** |
| Copy session ID | **Ctrl+Alt+C** |
| Copy working directory (Codex only) | **Ctrl+Shift+C** |

### Linux



| General | Shortcut |
| --- | --- |
| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |
| Open settings | **Ctrl+,** |
| Open keyboard shortcuts | **Ctrl+/** |
| Open folder (Codex and Work only) | **Ctrl+O** |
| Navigate back | **Ctrl+[** or **Mouse Back** |
| Navigate forward | **Ctrl+]** or **Mouse Forward** |
| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |
| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |
| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |
| Toggle sidebar | **Ctrl+B** |
| Toggle bottom panel (Codex only) | **Ctrl+J** |
| Toggle terminal (Codex only) | **Ctrl+`** |
| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |
| Clear all unread indicators (Codex only) | **Shift+Esc** |
| Undo last app action | **Ctrl+Z** |
| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |
| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |
| Toggle full screen | **F11** |
| Quit the app | **Ctrl+Q** |

| Chats | Shortcut |
| --- | --- |
| New chat | **Ctrl+N** or **Ctrl+Shift+O** |
| New standalone chat (Codex only) | **Ctrl+Alt+O** |
| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |
| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |
| Archive chat | **Ctrl+Shift+A** |
| Mark chat as unread | **Ctrl+Shift+U** |
| Pin or unpin chat | **Ctrl+Alt+P** |
| Rename chat | **Ctrl+Alt+R** |
| Open side chat (Codex only) | **Ctrl+Alt+S** |
| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |
| Find in chat | **Ctrl+F** |
| Find next match | **Ctrl+G** |
| Find previous match | **Shift+F3** |
| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |
| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |
| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |
| Open recent chat 1–6 | **Ctrl+Alt+1–6** |
| Go to chat 1–9 | **Ctrl+1–9** |

| Input and modes | Shortcut |
| --- | --- |
| Open model picker | **Ctrl+Shift+M** |
| Open project picker | **Ctrl+Alt+Shift+O** |
| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |
| Start dictation (When dictation is available) | **Ctrl+Shift+D** |
| Restore previous composer prompt (When the composer is empty) | **↑** |
| Approve request (When an approval request is open) | **⏎** |
| Decline request (When an approval request is open) | **Esc** |
| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |
| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

| Workspace and browser | Shortcut |
| --- | --- |
| Run environment action 1 (When the environment defines a primary action) | **Super+Shift+D** |
| Search files (Codex only) | **Ctrl+P** |
| Toggle file tree (Codex only) | **Ctrl+Shift+E** |
| Open review tab (Codex only) | **Ctrl+Shift+G** |
| Toggle review panel (Codex only) | **Ctrl+Alt+B** |
| Open browser tab (When the built-in browser is available) | **Ctrl+T** |
| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |
| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |
| Browser back (When the built-in browser is focused) | **Alt+←** |
| Browser forward (When the built-in browser is focused) | **Alt+→** |
| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |
| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |
| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |
| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |
| Copy chat deep link | **Ctrl+Alt+L** |
| Copy session ID | **Ctrl+Alt+C** |
| Copy working directory (Codex only) | **Ctrl+Shift+C** |To find, customize, or reset app shortcuts, open **Settings > Keyboard
Shortcuts**.

You can search by command name or switch the search field into keystroke mode
and press the shortcut you want to find. Appshots use a separate global shortcut
under **Settings > Appshots**.

On Linux, experimental native Wayland can affect shortcut support. See the
[Linux desktop app guide](https://learn.chatgpt.com/docs/linux/linux-app#wayland-support).

<a id="search-past-tasks-and-find-in-a-task"></a>

## Search past chats and find in a chat

Use **Search chats** to reopen a past chat. Search chats doesn't have a default
shortcut. You can assign one under **Settings > Keyboard Shortcuts**. When
expanded matching is available, search can also match chat content and Git
branch names, so you can search for a phrase from the chat or a branch such as
`fix/login-redirect`.

Use **Find in chat** after opening a chat to find text within it. It doesn't
search across other chats.

For actions that start with `/`, see [Slash commands](https://learn.chatgpt.com/docs/reference/slash-commands).

## Deep links

The ChatGPT desktop app keeps the `codex://` URL scheme for compatibility, so
links can open specific parts of the app directly. Encode query string values
before adding them to a URL.

### Supported links

Use these canonical forms when you create links. The sections below list the full reference by link type.

| Deep link                                                                   | Opens                                                   |
| --------------------------------------------------------------------------- | ------------------------------------------------------- |
| `codex://threads/new`                                                       | A new local chat.                                       |
| `codex://new?<query>`                                                       | A new local chat with at least one query parameter.     |
| `codex://threads/<thread-id>`                                               | A local chat. `<thread-id>` is its technical thread ID. |
| `codex://settings`                                                          | Settings.                                               |
| `codex://settings/connections/<connection-type>`                            | Computer, device, or SSH connection settings.           |
| `codex://settings/connections/ssh/add?name=<ssh-config-host>`               | Adds a host from your SSH config to Codex.              |
| `codex://skills`                                                            | Skills.                                                 |
| `codex://automations`                                                       | Scheduled with the create flow open.                    |
| `codex://plugins/install/<plugin-name>?marketplace=<marketplace-name>`      | The install flow for a plugin from a known marketplace. |
| `codex://plugins/<plugin-id>`                                               | A plugin detail page.                                   |
| `codex://plugins/<plugin-name>?marketplacePath=<absolute-marketplace-path>` | A local plugin detail page from a local marketplace.    |
| `codex://pets/install?name=<pet-name>&imageUrl=<https-image-url>`           | The pet install flow.                                   |

<a id="tasks"></a>

### Chats

Use these links when you need to open an existing local chat or start a new one.

| Deep link                     | Opens                                                                                                        |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID.                                                      |
| `codex://threads/new`         | A new local chat.                                                                                            |
| `codex://threads/new?<query>` | A new local chat with optional query parameters.                                                             |
| `codex://new?<query>`         | A new local chat. Include at least one of `prompt`, `path`, or `originUrl`; otherwise the link does nothing. |

For `codex://threads/new` or `codex://new`, add any of these query parameters as needed; you can combine them in the same URL.

| Query parameter              | Required | What it does                                                                                                                                                  |
| ---------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `prompt=<text>`              | No       | Sets the initial composer text.                                                                                                                               |
| `path=<absolute-path>`       | No       | Opens the new chat in a local workspace. `path` must be an absolute path to a local directory. When valid, Codex uses that directory as the active workspace. |
| `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.                                        |

Example: [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)

<a id="start-a-task-with-a-plugin"></a>

#### Start a chat with a plugin

To help users start a plugin-backed chat, include a plugin mention in the
prompt before you encode it:

```text
[@Example](plugin://example@openai-curated) Summarize this document: https://example.com/document/123
```

Encode the complete prompt as a URI component—for example, with
`encodeURIComponent` in JavaScript—and pass it to the `prompt` parameter:

```text
codex://new?prompt=%5B%40Example%5D(plugin%3A%2F%2Fexample%40openai-curated)%20Summarize%20this%20document%3A%20https%3A%2F%2Fexample.com%2Fdocument%2F123
```

The link opens a new chat with the decoded prompt in the composer. It doesn't
send the prompt automatically. After the user sends it, Codex can use an
installed plugin in that chat. If the plugin isn't installed but is available
to the user, Codex asks the user to install it and connect any required connectors.
After setup, the user can select **Continue** to resume the same chat. Workspace
settings can limit which plugins a user can install. For plugin installation
and permission details, see [Plugins](https://learn.chatgpt.com/docs/plugins).

### Settings

Use these links when you need to open Settings or a specific settings page.

| Deep link                                                     | Opens                                                                                        |
| ------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| `codex://settings`                                            | Settings.                                                                                    |
| `codex://settings/browser-use`                                | Browser settings.                                                                            |
| `codex://settings/computer-use/google-chrome`                 | Google Chrome settings for computer use.                                                     |
| `codex://settings/connections`                                | Remote connections settings.                                                                 |
| `codex://settings/connections/computer`                       | Settings for controlling this Mac or PC from another device.                                 |
| `codex://settings/connections/devices`                        | Settings for controlling other devices.                                                      |
| `codex://settings/connections/ssh`                            | SSH connection settings.                                                                     |
| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds the named host alias as a Codex-managed connection, then opens SSH connection settings. |

The `name` value must match a host alias in `~/.ssh/config`. The link disables
automatic connection for the added host. If Codex can't find the named host, it
opens SSH connection settings and shows an error.

Unsupported `codex://settings/...` paths open the main Settings page.

### Skills

Use these links when you need to open Skills.

| Deep link        | Opens   |
| ---------------- | ------- |
| `codex://skills` | Skills. |

### Scheduled

Use these links when you need to open **Scheduled**.

| Deep link             | Opens                                |
| --------------------- | ------------------------------------ |
| `codex://automations` | Scheduled with the create flow open. |

### Plugins

Plugin 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://learn.chatgpt.com/docs/plugins). For local or repo marketplace setup, see [Build plugins](https://developers.openai.com/plugins/build/plugins#build-your-own-curated-plugin-list).

#### Plugin install

Use this form to open the install flow for a plugin from a marketplace that Codex already knows about.

| Deep link                                                              | Opens                                           |
| ---------------------------------------------------------------------- | ----------------------------------------------- |
| `codex://plugins/install/<plugin-name>?marketplace=<marketplace-name>` | The plugin detail or install flow for a plugin. |

| Query parameter                  | Required | What it does                                                                    |
| -------------------------------- | -------- | ------------------------------------------------------------------------------- |
| `marketplace=<marketplace-name>` | Yes      | Identifies the marketplace. For an OpenAI-curated plugin, use `openai-curated`. |

The install link accepts only the `marketplace` query parameter. If Codex can't find the requested marketplace or plugin, it opens the Plugins page instead.

#### Plugin detail

| Deep link                     | Opens                 |
| ----------------------------- | --------------------- |
| `codex://plugins/<plugin-id>` | A plugin detail page. |

`<plugin-id>` must identify the plugin. For an OpenAI-curated plugin, use the form `<plugin-name>@openai-curated`.

Codex-generated plugin links can also include these query parameters. Omit both when you write a link manually.

| Query parameter    | Required | What it does                                                                                                                                    |
| ------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `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. |
| `source=manage`    | No       | Preserves the app's plugin-management entry point. It's not admin-only.                                                                         |

Example: [Open the OpenAI Developers plugin](codex://plugins/openai-developers@openai-curated)

#### Local plugin

For local or repo marketplace setup, see [Build plugins](https://developers.openai.com/plugins/build/plugins#build-your-own-curated-plugin-list).

| Deep link                                                                   | Opens                                                |
| --------------------------------------------------------------------------- | ---------------------------------------------------- |
| `codex://plugins/<plugin-name>?marketplacePath=<absolute-marketplace-path>` | A local plugin detail page from a local marketplace. |

| Query parameter                               | Required | What it does                                                                                               |
| --------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------- |
| `marketplacePath=<absolute-marketplace-path>` | Yes      | Absolute path to the local `marketplace.json`, for example `/Users/alex/.agents/plugins/marketplace.json`. |
| `mode=share`                                  | No       | Opens the share flow for that local plugin.                                                                |

### Pets

Use these links to open the pet install flow when that feature is enabled.

| Deep link                                                         | Opens                 |
| ----------------------------------------------------------------- | --------------------- |
| `codex://pets/install?name=<pet-name>&imageUrl=<https-image-url>` | The pet install flow. |

| Query parameter                | Required | What it does                                                                                |
| ------------------------------ | -------- | ------------------------------------------------------------------------------------------- |
| `name=<pet-name>`              | Yes      | Sets the pet name. The value must contain at least one non-whitespace character.            |
| `imageUrl=<https-image-url>`   | Yes      | Provides an absolute HTTPS URL for the pet image or sprite sheet.                           |
| `description=<text>`           | No       | Adds a description to the install flow.                                                     |
| `spriteVersionNumber=<1-or-2>` | No       | Selects the sprite-sheet format. The default is `1`; the only other supported value is `2`. |

The install link accepts only these query parameters. Invalid names, non-HTTPS
image URLs, unsupported sprite versions, or extra path segments cause the link
to do nothing.

## See also

- [Features](https://learn.chatgpt.com/docs/features)
- [Settings](https://learn.chatgpt.com/docs/reference/settings)
- [Slash commands](https://learn.chatgpt.com/docs/reference/slash-commands)