SpyBara
Go Premium

Documentation 2026-09-17 10:05 UTC to 2026-09-18 22:59 UTC

41 files changed +1,181 −4,414. View all changes and history on the product overview
2026
Wed 30 23:01 Tue 29 22:59 Sun 27 23:59 Fri 25 23:02 Thu 24 23:02 Wed 23 23:58 Tue 22 23:00 Sat 19 23:02 Fri 18 22:59 Thu 17 10:05 Wed 16 20:58 Tue 15 21:01 Mon 14 20:57 Sun 13 21:58 Fri 11 20:00 Thu 10 16:58 Wed 9 21:01 Fri 4 19:59 Thu 3 23:00 Wed 2 22:59 Tue 1 07:57
Details

84 href: "/codex/auth",84 href: "/codex/auth",

85 icon: "key",85 icon: "key",

86 },86 },

87 {

88 title: "Workload identity",

89 description:

90 "Let trusted workloads use Codex without long-lived credentials.",

91 href: "/codex/enterprise/workload-identity",

92 icon: "key",

93 },

94 {87 {

95 title: "Personal Access Tokens",88 title: "Personal Access Tokens",

96 description: "Create and manage tokens for programmatic access.",89 description: "Create and manage tokens for programmatic access.",

Details

36 src="/videos/codex/fast-mode-demo.mp4"36 src="/videos/codex/fast-mode-demo.mp4"

37 class="[&_video]:mx-auto [&_video]:max-h-[400px] [&_video]:max-w-full [&_video]:w-auto"37 class="[&_video]:mx-auto [&_video]:max-h-[400px] [&_video]:max-w-full [&_video]:w-auto"

38/>38/>

39 

40## Codex-Spark

41 

42GPT-5.3-Codex-Spark is a separate fast, less-capable Codex model optimized for

43near-instant, real-time coding iteration. Unlike fast mode, which speeds up a

44supported model at a higher credit rate, Codex-Spark is its own model choice

45and has its own usage limits.

46 

47During research preview Codex-Spark is only available for ChatGPT Pro subscribers.

Details

420```toml420```toml

421name = "pr_explorer"421name = "pr_explorer"

422description = "Read-only codebase explorer for gathering evidence before changes are proposed."422description = "Read-only codebase explorer for gathering evidence before changes are proposed."

423model = "gpt-5.3-codex-spark"423model = "gpt-5.6-luna"

424model_reasoning_effort = "medium"424model_reasoning_effort = "medium"

425sandbox_mode = "read-only"425sandbox_mode = "read-only"

426developer_instructions = """426developer_instructions = """


518```toml518```toml

519name = "ui_fixer"519name = "ui_fixer"

520description = "Implementation-focused agent for small, targeted fixes after the issue is understood."520description = "Implementation-focused agent for small, targeted fixes after the issue is understood."

521model = "gpt-5.3-codex-spark"521model = "gpt-5.6-luna"

522model_reasoning_effort = "medium"522model_reasoning_effort = "medium"

523developer_instructions = """523developer_instructions = """

524Own the fix once the issue is reproduced.524Own the fix once the issue is reproduced.

app/commands.md +0 −455 deleted

File Deleted View Diff

1# Commands

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.

4 

5Use these commands and keyboard shortcuts to navigate the app.

6 

7## Keyboard shortcuts

8 

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

10 

11### macOS

12 

13 

14 

15| General | Shortcut |

16| --- | --- |

17| Open command menu | **⌘+⇧+P** or **⌘+K** |

18| Open settings | **⌘+,** |

19| Open keyboard shortcuts | **⌘+/** |

20| Open folder (Codex and Work only) | **⌘+O** |

21| Navigate back | **⌘+[** or **Mouse Back** |

22| Navigate forward | **⌘+]** or **Mouse Forward** |

23| Increase font size | **⌘++** or **⌘+Numpad +** |

24| Decrease font size | **⌘+-** or **⌘+Numpad −** |

25| Reset font size | **⌘+0** or **⌘+Numpad 0** |

26| Toggle sidebar | **⌘+B** |

27| Toggle bottom panel (Codex only) | **⌘+J** |

28| Toggle terminal (Codex only) | **⌃+`** |

29| Clear terminal (When the terminal is focused) | **⌃+L** or **⌘+K** |

30| Clear all unread indicators (Codex only) | **⇧+Esc** |

31| Undo last app action | **⌘+Z** |

32| Redo last app action | **⌘+⇧+Z** |

33| Close current tab or window | **⌘+W** |

34| Toggle full screen | **⌘+⌃+F** |

35| Quit the app | **⌘+Q** |

36 

37| Chats | Shortcut |

38| --- | --- |

39| New chat | **⌘+N** or **⌘+⇧+O** |

40| New standalone chat (Codex only) | **⌘+⌥+O** |

41| Quick chat (ChatGPT only) | **⌘+⌥+N** |

42| New temporary chat (ChatGPT only) | **⌘+⇧+N** |

43| Archive chat | **⌘+⇧+A** |

44| Mark chat as unread | **⌘+⇧+U** |

45| Pin or unpin chat | **⌘+⌥+P** |

46| Rename chat | **⌘+⌥+R** |

47| Open side chat (Codex only) | **⌘+⌥+S** |

48| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

49| Find in chat | **⌘+F** |

50| Find next match | **⌘+G** |

51| Find previous match | **⌘+⇧+G** |

52| Previous chat or tab | **⌃+⇧+Tab** or **⌘+⇧+[** or **⌘+⌥+←** |

53| Next chat or tab | **⌃+Tab** or **⌘+⇧+]** or **⌘+⌥+→** |

54| Next chat needing attention (Codex only) | **⌘+⌥+A** |

55| Open recent chat 1–6 | **⌘+⌥+1–6** |

56| Go to chat 1–9 | **⌘+1–9** |

57 

58| Input and modes | Shortcut |

59| --- | --- |

60| Open model picker | **⌃+⇧+M** |

61| Open project picker | **⌘+⌥+⇧+O** |

62| Start voice chat (When voice chat is available) | **⌃+⇧+V** |

63| Start dictation (When dictation is available) | **⌃+⇧+D** |

64| Restore previous composer prompt (When the composer is empty) | **↑** |

65| Approve request (When an approval request is open) | **⏎** |

66| Decline request (When an approval request is open) | **Esc** |

67| Switch to Chat, Work, or Codex (In the order shown) | **⌃+1** or **⌃+2** or **⌃+3** |

68| Toggle Activity view (When Activity is available) | **⌘+⌥+U** |

69 

70| Workspace and browser | Shortcut |

71| --- | --- |

72| Run environment action 1 (When the environment defines a primary action) | **⌘+⇧+D** |

73| Search files (Codex only) | **⌘+P** |

74| Toggle file tree (Codex only) | **⌘+⇧+E** |

75| Open review tab (Codex only) | **⌃+⇧+G** |

76| Toggle review panel (Codex only) | **⌘+⌥+B** |

77| Open browser tab (When the built-in browser is available) | **⌘+T** |

78| Toggle browser panel (When the built-in browser is available) | **⌘+⇧+B** |

79| Go to line or focus browser address bar (Depends on the focused view) | **⌘+L** |

80| Browser back (When the built-in browser is focused) | **⌘+←** |

81| Browser forward (When the built-in browser is focused) | **⌘+→** |

82| Reload browser page (When the built-in browser is focused) | **⌘+R** |

83| Reload browser page without cache (When the built-in browser is focused) | **⌘+⇧+R** |

84| Copy browser URL (When the built-in browser is focused) | **⌘+⇧+C** |

85| Toggle browser browse or comment mode (When browser commenting is available) | **⌘+.** |

86| Copy conversation path (Codex only) | **⌘+⌥+⇧+C** |

87| Copy chat deep link | **⌘+⌥+L** |

88| Copy session ID | **⌘+⌥+C** |

89| Copy working directory (Codex only) | **⌘+⇧+C** |

90| Take an Appshot (press both keys simultaneously) | **⌘+⌘** |

91 

92### Windows

93 

94 

95 

96| General | Shortcut |

97| --- | --- |

98| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

99| Open settings | **Ctrl+,** |

100| Open keyboard shortcuts | **Ctrl+/** |

101| Open folder (Codex and Work only) | **Ctrl+O** |

102| Navigate back | **Ctrl+[** or **Mouse Back** |

103| Navigate forward | **Ctrl+]** or **Mouse Forward** |

104| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

105| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

106| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

107| Toggle sidebar | **Ctrl+B** |

108| Toggle bottom panel (Codex only) | **Ctrl+J** |

109| Toggle terminal (Codex only) | **Ctrl+`** |

110| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

111| Clear all unread indicators (Codex only) | **Shift+Esc** |

112| Undo last app action | **Ctrl+Z** |

113| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

114| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

115| Toggle full screen | **F11** |

116| Quit the app | **Ctrl+Q** |

117 

118| Chats | Shortcut |

119| --- | --- |

120| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

121| New standalone chat (Codex only) | **Ctrl+Alt+O** |

122| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

123| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

124| Archive chat | **Ctrl+Shift+A** |

125| Mark chat as unread | **Ctrl+Shift+U** |

126| Pin or unpin chat | **Ctrl+Alt+P** |

127| Rename chat | **Ctrl+Alt+R** |

128| Open side chat (Codex only) | **Ctrl+Alt+S** |

129| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

130| Find in chat | **Ctrl+F** |

131| Find next match | **Ctrl+G** |

132| Find previous match | **Shift+F3** |

133| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

134| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

135| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

136| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

137| Go to chat 1–9 | **Ctrl+1–9** |

138 

139| Input and modes | Shortcut |

140| --- | --- |

141| Open model picker | **Ctrl+Shift+M** |

142| Open project picker | **Ctrl+Alt+Shift+O** |

143| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

144| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

145| Restore previous composer prompt (When the composer is empty) | **↑** |

146| Approve request (When an approval request is open) | **⏎** |

147| Decline request (When an approval request is open) | **Esc** |

148| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

149| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

150 

151| Workspace and browser | Shortcut |

152| --- | --- |

153| Run environment action 1 (When the environment defines a primary action) | **Win+Shift+D** |

154| Search files (Codex only) | **Ctrl+P** |

155| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

156| Open review tab (Codex only) | **Ctrl+Shift+G** |

157| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

158| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

159| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

160| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

161| Browser back (When the built-in browser is focused) | **Alt+←** |

162| Browser forward (When the built-in browser is focused) | **Alt+→** |

163| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

164| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

165| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

166| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

167| Copy chat deep link | **Ctrl+Alt+L** |

168| Copy session ID | **Ctrl+Alt+C** |

169| Copy working directory (Codex only) | **Ctrl+Shift+C** |

170 

171### Linux

172 

173 

174 

175| General | Shortcut |

176| --- | --- |

177| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

178| Open settings | **Ctrl+,** |

179| Open keyboard shortcuts | **Ctrl+/** |

180| Open folder (Codex and Work only) | **Ctrl+O** |

181| Navigate back | **Ctrl+[** or **Mouse Back** |

182| Navigate forward | **Ctrl+]** or **Mouse Forward** |

183| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

184| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

185| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

186| Toggle sidebar | **Ctrl+B** |

187| Toggle bottom panel (Codex only) | **Ctrl+J** |

188| Toggle terminal (Codex only) | **Ctrl+`** |

189| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

190| Clear all unread indicators (Codex only) | **Shift+Esc** |

191| Undo last app action | **Ctrl+Z** |

192| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

193| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

194| Toggle full screen | **F11** |

195| Quit the app | **Ctrl+Q** |

196 

197| Chats | Shortcut |

198| --- | --- |

199| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

200| New standalone chat (Codex only) | **Ctrl+Alt+O** |

201| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

202| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

203| Archive chat | **Ctrl+Shift+A** |

204| Mark chat as unread | **Ctrl+Shift+U** |

205| Pin or unpin chat | **Ctrl+Alt+P** |

206| Rename chat | **Ctrl+Alt+R** |

207| Open side chat (Codex only) | **Ctrl+Alt+S** |

208| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

209| Find in chat | **Ctrl+F** |

210| Find next match | **Ctrl+G** |

211| Find previous match | **Shift+F3** |

212| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

213| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

214| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

215| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

216| Go to chat 1–9 | **Ctrl+1–9** |

217 

218| Input and modes | Shortcut |

219| --- | --- |

220| Open model picker | **Ctrl+Shift+M** |

221| Open project picker | **Ctrl+Alt+Shift+O** |

222| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

223| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

224| Restore previous composer prompt (When the composer is empty) | **↑** |

225| Approve request (When an approval request is open) | **⏎** |

226| Decline request (When an approval request is open) | **Esc** |

227| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

228| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

229 

230| Workspace and browser | Shortcut |

231| --- | --- |

232| Run environment action 1 (When the environment defines a primary action) | **Super+Shift+D** |

233| Search files (Codex only) | **Ctrl+P** |

234| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

235| Open review tab (Codex only) | **Ctrl+Shift+G** |

236| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

237| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

238| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

239| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

240| Browser back (When the built-in browser is focused) | **Alt+←** |

241| Browser forward (When the built-in browser is focused) | **Alt+→** |

242| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

243| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

244| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

245| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

246| Copy chat deep link | **Ctrl+Alt+L** |

247| Copy session ID | **Ctrl+Alt+C** |

248| Copy working directory (Codex only) | **Ctrl+Shift+C** |To find, customize, or reset app shortcuts, open **Settings > Keyboard

249Shortcuts**.

250 

251You can search by command name or switch the search field into keystroke mode

252and press the shortcut you want to find. Appshots use a separate global shortcut

253under **Settings > Appshots**.

254 

255On Linux, experimental native Wayland can affect shortcut support. See the

256[Linux desktop app guide](https://learn.chatgpt.com/docs/linux/linux-app#wayland-support).

257 

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

259 

260## Search past chats and find in a chat

261 

262Use **Search chats** to reopen a past chat. Search chats doesn't have a default

263shortcut. You can assign one under **Settings > Keyboard Shortcuts**. When

264expanded matching is available, search can also match chat content and Git

265branch names, so you can search for a phrase from the chat or a branch such as

266`fix/login-redirect`.

267 

268Use **Find in chat** after opening a chat to find text within it. It doesn't

269search across other chats.

270 

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

272 

273## Deep links

274 

275The ChatGPT desktop app keeps the `codex://` URL scheme for compatibility, so

276links can open specific parts of the app directly. Encode query string values

277before adding them to a URL.

278 

279### Supported links

280 

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

282 

283| Deep link | Opens |

284| --------------------------------------------------------------------------- | ------------------------------------------------------- |

285| `codex://threads/new` | A new local chat. |

286| `codex://new?<query>` | A new local chat with at least one query parameter. |

287| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

288| `codex://settings` | Settings. |

289| `codex://settings/connections/<connection-type>` | Computer, device, or SSH connection settings. |

290| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds a host from your SSH config to Codex. |

291| `codex://skills` | Skills. |

292| `codex://automations` | Scheduled with the create flow open. |

293| `codex://plugins/install/<plugin-name>?marketplace=<marketplace-name>` | The install flow for a plugin from a known marketplace. |

294| `codex://plugins/<plugin-id>` | A plugin detail page. |

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

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

297 

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

299 

300### Chats

301 

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

303 

304| Deep link | Opens |

305| ----------------------------- | ------------------------------------------------------------------------------------------------------------ |

306| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

307| `codex://threads/new` | A new local chat. |

308| `codex://threads/new?<query>` | A new local chat with optional query parameters. |

309| `codex://new?<query>` | A new local chat. Include at least one of `prompt`, `path`, or `originUrl`; otherwise the link does nothing. |

310 

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

312 

313| Query parameter | Required | What it does |

314| ---------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |

315| `prompt=<text>` | No | Sets the initial composer text. |

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

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

318 

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

320 

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

322 

323#### Start a chat with a plugin

324 

325To help users start a plugin-backed chat, include a plugin mention in the

326prompt before you encode it:

327 

328```text

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

330```

331 

332Encode the complete prompt as a URI component—for example, with

333`encodeURIComponent` in JavaScript—and pass it to the `prompt` parameter:

334 

335```text

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

337```

338 

339The link opens a new chat with the decoded prompt in the composer. It doesn't

340send the prompt automatically. After the user sends it, Codex can use an

341installed plugin in that chat. If the plugin isn't installed but is available

342to the user, Codex asks the user to install it and connect any required connectors.

343After setup, the user can select **Continue** to resume the same chat. Workspace

344settings can limit which plugins a user can install. For plugin installation

345and permission details, see [Plugins](https://learn.chatgpt.com/docs/plugins).

346 

347### Settings

348 

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

350 

351| Deep link | Opens |

352| ------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |

353| `codex://settings` | Settings. |

354| `codex://settings/browser-use` | Browser settings. |

355| `codex://settings/computer-use/google-chrome` | Google Chrome settings for computer use. |

356| `codex://settings/connections` | Remote connections settings. |

357| `codex://settings/connections/computer` | Settings for controlling this Mac or PC from another device. |

358| `codex://settings/connections/devices` | Settings for controlling other devices. |

359| `codex://settings/connections/ssh` | SSH connection settings. |

360| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds the named host alias as a Codex-managed connection, then opens SSH connection settings. |

361 

362The `name` value must match a host alias in `~/.ssh/config`. The link disables

363automatic connection for the added host. If Codex can't find the named host, it

364opens SSH connection settings and shows an error.

365 

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

367 

368### Skills

369 

370Use these links when you need to open Skills.

371 

372| Deep link | Opens |

373| ---------------- | ------- |

374| `codex://skills` | Skills. |

375 

376### Scheduled

377 

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

379 

380| Deep link | Opens |

381| --------------------- | ------------------------------------ |

382| `codex://automations` | Scheduled with the create flow open. |

383 

384### Plugins

385 

386Plugin 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).

387 

388#### Plugin install

389 

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

391 

392| Deep link | Opens |

393| ---------------------------------------------------------------------- | ----------------------------------------------- |

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

395 

396| Query parameter | Required | What it does |

397| -------------------------------- | -------- | ------------------------------------------------------------------------------- |

398| `marketplace=<marketplace-name>` | Yes | Identifies the marketplace. For an OpenAI-curated plugin, use `openai-curated`. |

399 

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

401 

402#### Plugin detail

403 

404| Deep link | Opens |

405| ----------------------------- | --------------------- |

406| `codex://plugins/<plugin-id>` | A plugin detail page. |

407 

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

409 

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

411 

412| Query parameter | Required | What it does |

413| ------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |

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

415| `source=manage` | No | Preserves the app's plugin-management entry point. It's not admin-only. |

416 

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

418 

419#### Local plugin

420 

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

422 

423| Deep link | Opens |

424| --------------------------------------------------------------------------- | ---------------------------------------------------- |

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

426 

427| Query parameter | Required | What it does |

428| --------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------- |

429| `marketplacePath=<absolute-marketplace-path>` | Yes | Absolute path to the local `marketplace.json`, for example `/Users/alex/.agents/plugins/marketplace.json`. |

430| `mode=share` | No | Opens the share flow for that local plugin. |

431 

432### Pets

433 

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

435 

436| Deep link | Opens |

437| ----------------------------------------------------------------- | --------------------- |

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

439 

440| Query parameter | Required | What it does |

441| ------------------------------ | -------- | ------------------------------------------------------------------------------------------- |

442| `name=<pet-name>` | Yes | Sets the pet name. The value must contain at least one non-whitespace character. |

443| `imageUrl=<https-image-url>` | Yes | Provides an absolute HTTPS URL for the pet image or sprite sheet. |

444| `description=<text>` | No | Adds a description to the install flow. |

445| `spriteVersionNumber=<1-or-2>` | No | Selects the sprite-sheet format. The default is `1`; the only other supported value is `2`. |

446 

447The install link accepts only these query parameters. Invalid names, non-HTTPS

448image URLs, unsupported sprite versions, or extra path segments cause the link

449to do nothing.

450 

451## See also

452 

453- [Features](https://learn.chatgpt.com/docs/features)

454- [Settings](https://learn.chatgpt.com/docs/reference/settings)

455- [Slash commands](https://learn.chatgpt.com/docs/reference/slash-commands)

app/settings.md +0 −135 deleted

File Deleted View Diff

1# Settings

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.

4 

5Use the settings panel to personalize the app and manage everyday preferences.

6Open [**Settings**](codex://settings) from the app menu or press

7 

8<kbd>Cmd</kbd>+<kbd>,</kbd> on macOS or <kbd>Ctrl</kbd>+<kbd>,</kbd> on Windows.

9 

10## General

11 

12Require <kbd>Cmd</kbd>+<kbd>Enter</kbd> for multiline prompts, or turn on

13**Prevent sleep while running** so local chats can continue while you step away.

14Under **Follow-up behavior**, choose whether a message sent while ChatGPT works

15should steer the current run or wait for the next run.

16 

17## Profile

18 

19Use **Profile** to review activity insights, lifetime tokens, peak tokens,

20streaks, your longest task, and token activity. You can also update your profile

21details, such as your picture, display name, and username, and save a profile

22card with usage highlights. Sharing profile cards is available on consumer

23ChatGPT plans.

24 

25Eligible users can also send Codex invitations from the profile menu. Choose

26**Invite a friend** on an eligible personal plan or **Invite a coworker** in an

27eligible Business workspace. See

28[Invite friends and coworkers](https://learn.chatgpt.com/docs/pricing#invite-friends-and-coworkers) for

29current rewards, limits, and eligibility.

30 

31## Keyboard shortcuts

32 

33Open **Keyboard Shortcuts** to review commands, change bindings, or reset custom

34shortcuts to their defaults. Use the search field to find shortcuts by command

35name, or switch to keystroke search and press a key combination to find the

36command that uses it.

37 

38## Notifications

39 

40Choose when turn completion notifications appear, and whether the app should prompt for

41notification permissions.

42 

43## Appearance

44 

45In **Settings**, you can change the app appearance by choosing a base theme,

46adjusting accent, background, and foreground colors, and changing the UI and

47code fonts. You can also share your custom theme with friends.

48 

49 

50

51 

52> Illustration: ChatGPT desktop app Appearance settings showing theme selection, color controls, and font options

53 

54 

55 

56 

57## Pets

58 

59 

60 

61

62 

63 Pets are optional animated companions for the app. In **Settings > Pets**,

64 choose a built-in or custom pet, then use `/pet`, **Show pet**, or **Hide pet**

65 to control the floating overlay. Choose **Mini** to keep the chat controls

66 visible without a pet.

67 

68 See [Pets](https://learn.chatgpt.com/docs/pets?surface=app) to start chats, use voice, follow

69 activity, or create your own pet.

70 

71

72 

73 

74 <CodexPetsDemo client:load />

75 

76 

77 

78<a id="browser-use"></a>

79 

80## Browser

81 

82Use these settings to install or enable the bundled Browser plugin, set up the

83[browser extension](https://learn.chatgpt.com/docs/chrome-extension), and manage allowed and blocked

84websites. ChatGPT asks before using a website unless you've allowed it. Removing

85a blocked site lets ChatGPT ask again before using it in the browser.

86 

87See [Built-in browser](https://learn.chatgpt.com/docs/browser?surface=app) for browser preview, comment, and

88Computer Use workflows.

89 

90## Computer Use

91 

92Check your Computer Use settings to review desktop-app access and related

93preferences after setup. On macOS, revoke system-level access by updating Screen

94Recording or Accessibility permissions in macOS Privacy & Security settings.

95 

96## Personalization

97 

98Choose **Friendly**, **Pragmatic**, or **None** as your default personality. Use

99**None** to disable personality instructions. You can update this at any time.

100 

101You can also add your own custom instructions. Editing custom instructions updates your

102[personal instructions in `AGENTS.md`](https://learn.chatgpt.com/docs/agent-configuration/agents-md).

103 

104## Suggested prompts

105 

106Use context-aware suggestions to surface follow-ups and tasks you may want to resume when you

107start or return to ChatGPT.

108 

109## Memories

110 

111Enable Memories, where available, to let ChatGPT carry useful context from past

112chats into future work. See [Memories](https://learn.chatgpt.com/docs/customization/memories)

113for setup, storage, and controls for individual chats.

114 

115<a id="archived-tasks"></a>

116 

117## Archived chats

118 

119The **Archived chats** section lists archived chats with dates and project

120context. Use **Unarchive** to restore a chat.

121 

122<a id="keep-an-app-task-near-your-work"></a>

123<a id="keep-an-app-chat-near-your-work"></a>

124<a id="keep-a-task-near-your-work"></a>

125 

126## Keep a chat near your work

127 

128In the ChatGPT desktop app, pop out an active chat into a separate window and place it

129next to your browser, editor, or design preview. Turn on **Always on top** when

130you want the chat to remain visible while you work in another app.

131 

132 

133

134 

135> Illustration: ChatGPT desktop app chat displayed in a floating pop-out window

auth.md +0 −5

Details

185For setup steps, permissions, rotation, and revocation guidance, see185For setup steps, permissions, rotation, and revocation guidance, see

186[Access tokens](https://learn.chatgpt.com/docs/enterprise/access-tokens).186[Access tokens](https://learn.chatgpt.com/docs/enterprise/access-tokens).

187 187 

188If your cloud platform, CI system, or cluster already issues short-lived

189workload tokens, use

190[workload identity federation](https://learn.chatgpt.com/docs/enterprise/workload-identity)

191instead of storing an OpenAI credential.

192 

193</ContentModeSwitch>188</ContentModeSwitch>

194 189 

195<ContentModeSwitch group="codex-surface" id="cli">190<ContentModeSwitch group="codex-surface" id="cli">

cli/reference.md +0 −455 deleted

File Deleted View Diff

1# Commands

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.

4 

5Use these commands and keyboard shortcuts to navigate the app.

6 

7## Keyboard shortcuts

8 

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

10 

11### macOS

12 

13 

14 

15| General | Shortcut |

16| --- | --- |

17| Open command menu | **⌘+⇧+P** or **⌘+K** |

18| Open settings | **⌘+,** |

19| Open keyboard shortcuts | **⌘+/** |

20| Open folder (Codex and Work only) | **⌘+O** |

21| Navigate back | **⌘+[** or **Mouse Back** |

22| Navigate forward | **⌘+]** or **Mouse Forward** |

23| Increase font size | **⌘++** or **⌘+Numpad +** |

24| Decrease font size | **⌘+-** or **⌘+Numpad −** |

25| Reset font size | **⌘+0** or **⌘+Numpad 0** |

26| Toggle sidebar | **⌘+B** |

27| Toggle bottom panel (Codex only) | **⌘+J** |

28| Toggle terminal (Codex only) | **⌃+`** |

29| Clear terminal (When the terminal is focused) | **⌃+L** or **⌘+K** |

30| Clear all unread indicators (Codex only) | **⇧+Esc** |

31| Undo last app action | **⌘+Z** |

32| Redo last app action | **⌘+⇧+Z** |

33| Close current tab or window | **⌘+W** |

34| Toggle full screen | **⌘+⌃+F** |

35| Quit the app | **⌘+Q** |

36 

37| Chats | Shortcut |

38| --- | --- |

39| New chat | **⌘+N** or **⌘+⇧+O** |

40| New standalone chat (Codex only) | **⌘+⌥+O** |

41| Quick chat (ChatGPT only) | **⌘+⌥+N** |

42| New temporary chat (ChatGPT only) | **⌘+⇧+N** |

43| Archive chat | **⌘+⇧+A** |

44| Mark chat as unread | **⌘+⇧+U** |

45| Pin or unpin chat | **⌘+⌥+P** |

46| Rename chat | **⌘+⌥+R** |

47| Open side chat (Codex only) | **⌘+⌥+S** |

48| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

49| Find in chat | **⌘+F** |

50| Find next match | **⌘+G** |

51| Find previous match | **⌘+⇧+G** |

52| Previous chat or tab | **⌃+⇧+Tab** or **⌘+⇧+[** or **⌘+⌥+←** |

53| Next chat or tab | **⌃+Tab** or **⌘+⇧+]** or **⌘+⌥+→** |

54| Next chat needing attention (Codex only) | **⌘+⌥+A** |

55| Open recent chat 1–6 | **⌘+⌥+1–6** |

56| Go to chat 1–9 | **⌘+1–9** |

57 

58| Input and modes | Shortcut |

59| --- | --- |

60| Open model picker | **⌃+⇧+M** |

61| Open project picker | **⌘+⌥+⇧+O** |

62| Start voice chat (When voice chat is available) | **⌃+⇧+V** |

63| Start dictation (When dictation is available) | **⌃+⇧+D** |

64| Restore previous composer prompt (When the composer is empty) | **↑** |

65| Approve request (When an approval request is open) | **⏎** |

66| Decline request (When an approval request is open) | **Esc** |

67| Switch to Chat, Work, or Codex (In the order shown) | **⌃+1** or **⌃+2** or **⌃+3** |

68| Toggle Activity view (When Activity is available) | **⌘+⌥+U** |

69 

70| Workspace and browser | Shortcut |

71| --- | --- |

72| Run environment action 1 (When the environment defines a primary action) | **⌘+⇧+D** |

73| Search files (Codex only) | **⌘+P** |

74| Toggle file tree (Codex only) | **⌘+⇧+E** |

75| Open review tab (Codex only) | **⌃+⇧+G** |

76| Toggle review panel (Codex only) | **⌘+⌥+B** |

77| Open browser tab (When the built-in browser is available) | **⌘+T** |

78| Toggle browser panel (When the built-in browser is available) | **⌘+⇧+B** |

79| Go to line or focus browser address bar (Depends on the focused view) | **⌘+L** |

80| Browser back (When the built-in browser is focused) | **⌘+←** |

81| Browser forward (When the built-in browser is focused) | **⌘+→** |

82| Reload browser page (When the built-in browser is focused) | **⌘+R** |

83| Reload browser page without cache (When the built-in browser is focused) | **⌘+⇧+R** |

84| Copy browser URL (When the built-in browser is focused) | **⌘+⇧+C** |

85| Toggle browser browse or comment mode (When browser commenting is available) | **⌘+.** |

86| Copy conversation path (Codex only) | **⌘+⌥+⇧+C** |

87| Copy chat deep link | **⌘+⌥+L** |

88| Copy session ID | **⌘+⌥+C** |

89| Copy working directory (Codex only) | **⌘+⇧+C** |

90| Take an Appshot (press both keys simultaneously) | **⌘+⌘** |

91 

92### Windows

93 

94 

95 

96| General | Shortcut |

97| --- | --- |

98| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

99| Open settings | **Ctrl+,** |

100| Open keyboard shortcuts | **Ctrl+/** |

101| Open folder (Codex and Work only) | **Ctrl+O** |

102| Navigate back | **Ctrl+[** or **Mouse Back** |

103| Navigate forward | **Ctrl+]** or **Mouse Forward** |

104| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

105| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

106| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

107| Toggle sidebar | **Ctrl+B** |

108| Toggle bottom panel (Codex only) | **Ctrl+J** |

109| Toggle terminal (Codex only) | **Ctrl+`** |

110| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

111| Clear all unread indicators (Codex only) | **Shift+Esc** |

112| Undo last app action | **Ctrl+Z** |

113| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

114| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

115| Toggle full screen | **F11** |

116| Quit the app | **Ctrl+Q** |

117 

118| Chats | Shortcut |

119| --- | --- |

120| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

121| New standalone chat (Codex only) | **Ctrl+Alt+O** |

122| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

123| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

124| Archive chat | **Ctrl+Shift+A** |

125| Mark chat as unread | **Ctrl+Shift+U** |

126| Pin or unpin chat | **Ctrl+Alt+P** |

127| Rename chat | **Ctrl+Alt+R** |

128| Open side chat (Codex only) | **Ctrl+Alt+S** |

129| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

130| Find in chat | **Ctrl+F** |

131| Find next match | **Ctrl+G** |

132| Find previous match | **Shift+F3** |

133| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

134| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

135| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

136| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

137| Go to chat 1–9 | **Ctrl+1–9** |

138 

139| Input and modes | Shortcut |

140| --- | --- |

141| Open model picker | **Ctrl+Shift+M** |

142| Open project picker | **Ctrl+Alt+Shift+O** |

143| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

144| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

145| Restore previous composer prompt (When the composer is empty) | **↑** |

146| Approve request (When an approval request is open) | **⏎** |

147| Decline request (When an approval request is open) | **Esc** |

148| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

149| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

150 

151| Workspace and browser | Shortcut |

152| --- | --- |

153| Run environment action 1 (When the environment defines a primary action) | **Win+Shift+D** |

154| Search files (Codex only) | **Ctrl+P** |

155| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

156| Open review tab (Codex only) | **Ctrl+Shift+G** |

157| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

158| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

159| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

160| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

161| Browser back (When the built-in browser is focused) | **Alt+←** |

162| Browser forward (When the built-in browser is focused) | **Alt+→** |

163| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

164| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

165| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

166| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

167| Copy chat deep link | **Ctrl+Alt+L** |

168| Copy session ID | **Ctrl+Alt+C** |

169| Copy working directory (Codex only) | **Ctrl+Shift+C** |

170 

171### Linux

172 

173 

174 

175| General | Shortcut |

176| --- | --- |

177| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

178| Open settings | **Ctrl+,** |

179| Open keyboard shortcuts | **Ctrl+/** |

180| Open folder (Codex and Work only) | **Ctrl+O** |

181| Navigate back | **Ctrl+[** or **Mouse Back** |

182| Navigate forward | **Ctrl+]** or **Mouse Forward** |

183| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

184| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

185| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

186| Toggle sidebar | **Ctrl+B** |

187| Toggle bottom panel (Codex only) | **Ctrl+J** |

188| Toggle terminal (Codex only) | **Ctrl+`** |

189| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

190| Clear all unread indicators (Codex only) | **Shift+Esc** |

191| Undo last app action | **Ctrl+Z** |

192| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

193| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

194| Toggle full screen | **F11** |

195| Quit the app | **Ctrl+Q** |

196 

197| Chats | Shortcut |

198| --- | --- |

199| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

200| New standalone chat (Codex only) | **Ctrl+Alt+O** |

201| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

202| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

203| Archive chat | **Ctrl+Shift+A** |

204| Mark chat as unread | **Ctrl+Shift+U** |

205| Pin or unpin chat | **Ctrl+Alt+P** |

206| Rename chat | **Ctrl+Alt+R** |

207| Open side chat (Codex only) | **Ctrl+Alt+S** |

208| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

209| Find in chat | **Ctrl+F** |

210| Find next match | **Ctrl+G** |

211| Find previous match | **Shift+F3** |

212| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

213| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

214| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

215| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

216| Go to chat 1–9 | **Ctrl+1–9** |

217 

218| Input and modes | Shortcut |

219| --- | --- |

220| Open model picker | **Ctrl+Shift+M** |

221| Open project picker | **Ctrl+Alt+Shift+O** |

222| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

223| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

224| Restore previous composer prompt (When the composer is empty) | **↑** |

225| Approve request (When an approval request is open) | **⏎** |

226| Decline request (When an approval request is open) | **Esc** |

227| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

228| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

229 

230| Workspace and browser | Shortcut |

231| --- | --- |

232| Run environment action 1 (When the environment defines a primary action) | **Super+Shift+D** |

233| Search files (Codex only) | **Ctrl+P** |

234| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

235| Open review tab (Codex only) | **Ctrl+Shift+G** |

236| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

237| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

238| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

239| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

240| Browser back (When the built-in browser is focused) | **Alt+←** |

241| Browser forward (When the built-in browser is focused) | **Alt+→** |

242| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

243| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

244| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

245| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

246| Copy chat deep link | **Ctrl+Alt+L** |

247| Copy session ID | **Ctrl+Alt+C** |

248| Copy working directory (Codex only) | **Ctrl+Shift+C** |To find, customize, or reset app shortcuts, open **Settings > Keyboard

249Shortcuts**.

250 

251You can search by command name or switch the search field into keystroke mode

252and press the shortcut you want to find. Appshots use a separate global shortcut

253under **Settings > Appshots**.

254 

255On Linux, experimental native Wayland can affect shortcut support. See the

256[Linux desktop app guide](https://learn.chatgpt.com/docs/linux/linux-app#wayland-support).

257 

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

259 

260## Search past chats and find in a chat

261 

262Use **Search chats** to reopen a past chat. Search chats doesn't have a default

263shortcut. You can assign one under **Settings > Keyboard Shortcuts**. When

264expanded matching is available, search can also match chat content and Git

265branch names, so you can search for a phrase from the chat or a branch such as

266`fix/login-redirect`.

267 

268Use **Find in chat** after opening a chat to find text within it. It doesn't

269search across other chats.

270 

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

272 

273## Deep links

274 

275The ChatGPT desktop app keeps the `codex://` URL scheme for compatibility, so

276links can open specific parts of the app directly. Encode query string values

277before adding them to a URL.

278 

279### Supported links

280 

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

282 

283| Deep link | Opens |

284| --------------------------------------------------------------------------- | ------------------------------------------------------- |

285| `codex://threads/new` | A new local chat. |

286| `codex://new?<query>` | A new local chat with at least one query parameter. |

287| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

288| `codex://settings` | Settings. |

289| `codex://settings/connections/<connection-type>` | Computer, device, or SSH connection settings. |

290| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds a host from your SSH config to Codex. |

291| `codex://skills` | Skills. |

292| `codex://automations` | Scheduled with the create flow open. |

293| `codex://plugins/install/<plugin-name>?marketplace=<marketplace-name>` | The install flow for a plugin from a known marketplace. |

294| `codex://plugins/<plugin-id>` | A plugin detail page. |

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

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

297 

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

299 

300### Chats

301 

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

303 

304| Deep link | Opens |

305| ----------------------------- | ------------------------------------------------------------------------------------------------------------ |

306| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

307| `codex://threads/new` | A new local chat. |

308| `codex://threads/new?<query>` | A new local chat with optional query parameters. |

309| `codex://new?<query>` | A new local chat. Include at least one of `prompt`, `path`, or `originUrl`; otherwise the link does nothing. |

310 

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

312 

313| Query parameter | Required | What it does |

314| ---------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |

315| `prompt=<text>` | No | Sets the initial composer text. |

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

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

318 

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

320 

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

322 

323#### Start a chat with a plugin

324 

325To help users start a plugin-backed chat, include a plugin mention in the

326prompt before you encode it:

327 

328```text

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

330```

331 

332Encode the complete prompt as a URI component—for example, with

333`encodeURIComponent` in JavaScript—and pass it to the `prompt` parameter:

334 

335```text

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

337```

338 

339The link opens a new chat with the decoded prompt in the composer. It doesn't

340send the prompt automatically. After the user sends it, Codex can use an

341installed plugin in that chat. If the plugin isn't installed but is available

342to the user, Codex asks the user to install it and connect any required connectors.

343After setup, the user can select **Continue** to resume the same chat. Workspace

344settings can limit which plugins a user can install. For plugin installation

345and permission details, see [Plugins](https://learn.chatgpt.com/docs/plugins).

346 

347### Settings

348 

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

350 

351| Deep link | Opens |

352| ------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |

353| `codex://settings` | Settings. |

354| `codex://settings/browser-use` | Browser settings. |

355| `codex://settings/computer-use/google-chrome` | Google Chrome settings for computer use. |

356| `codex://settings/connections` | Remote connections settings. |

357| `codex://settings/connections/computer` | Settings for controlling this Mac or PC from another device. |

358| `codex://settings/connections/devices` | Settings for controlling other devices. |

359| `codex://settings/connections/ssh` | SSH connection settings. |

360| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds the named host alias as a Codex-managed connection, then opens SSH connection settings. |

361 

362The `name` value must match a host alias in `~/.ssh/config`. The link disables

363automatic connection for the added host. If Codex can't find the named host, it

364opens SSH connection settings and shows an error.

365 

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

367 

368### Skills

369 

370Use these links when you need to open Skills.

371 

372| Deep link | Opens |

373| ---------------- | ------- |

374| `codex://skills` | Skills. |

375 

376### Scheduled

377 

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

379 

380| Deep link | Opens |

381| --------------------- | ------------------------------------ |

382| `codex://automations` | Scheduled with the create flow open. |

383 

384### Plugins

385 

386Plugin 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).

387 

388#### Plugin install

389 

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

391 

392| Deep link | Opens |

393| ---------------------------------------------------------------------- | ----------------------------------------------- |

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

395 

396| Query parameter | Required | What it does |

397| -------------------------------- | -------- | ------------------------------------------------------------------------------- |

398| `marketplace=<marketplace-name>` | Yes | Identifies the marketplace. For an OpenAI-curated plugin, use `openai-curated`. |

399 

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

401 

402#### Plugin detail

403 

404| Deep link | Opens |

405| ----------------------------- | --------------------- |

406| `codex://plugins/<plugin-id>` | A plugin detail page. |

407 

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

409 

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

411 

412| Query parameter | Required | What it does |

413| ------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |

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

415| `source=manage` | No | Preserves the app's plugin-management entry point. It's not admin-only. |

416 

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

418 

419#### Local plugin

420 

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

422 

423| Deep link | Opens |

424| --------------------------------------------------------------------------- | ---------------------------------------------------- |

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

426 

427| Query parameter | Required | What it does |

428| --------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------- |

429| `marketplacePath=<absolute-marketplace-path>` | Yes | Absolute path to the local `marketplace.json`, for example `/Users/alex/.agents/plugins/marketplace.json`. |

430| `mode=share` | No | Opens the share flow for that local plugin. |

431 

432### Pets

433 

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

435 

436| Deep link | Opens |

437| ----------------------------------------------------------------- | --------------------- |

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

439 

440| Query parameter | Required | What it does |

441| ------------------------------ | -------- | ------------------------------------------------------------------------------------------- |

442| `name=<pet-name>` | Yes | Sets the pet name. The value must contain at least one non-whitespace character. |

443| `imageUrl=<https-image-url>` | Yes | Provides an absolute HTTPS URL for the pet image or sprite sheet. |

444| `description=<text>` | No | Adds a description to the install flow. |

445| `spriteVersionNumber=<1-or-2>` | No | Selects the sprite-sheet format. The default is `1`; the only other supported value is `2`. |

446 

447The install link accepts only these query parameters. Invalid names, non-HTTPS

448image URLs, unsupported sprite versions, or extra path segments cause the link

449to do nothing.

450 

451## See also

452 

453- [Features](https://learn.chatgpt.com/docs/features)

454- [Settings](https://learn.chatgpt.com/docs/reference/settings)

455- [Slash commands](https://learn.chatgpt.com/docs/reference/slash-commands)

cli/slash-commands.md +0 −455 deleted

File Deleted View Diff

1# Commands

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.

4 

5Use these commands and keyboard shortcuts to navigate the app.

6 

7## Keyboard shortcuts

8 

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

10 

11### macOS

12 

13 

14 

15| General | Shortcut |

16| --- | --- |

17| Open command menu | **⌘+⇧+P** or **⌘+K** |

18| Open settings | **⌘+,** |

19| Open keyboard shortcuts | **⌘+/** |

20| Open folder (Codex and Work only) | **⌘+O** |

21| Navigate back | **⌘+[** or **Mouse Back** |

22| Navigate forward | **⌘+]** or **Mouse Forward** |

23| Increase font size | **⌘++** or **⌘+Numpad +** |

24| Decrease font size | **⌘+-** or **⌘+Numpad −** |

25| Reset font size | **⌘+0** or **⌘+Numpad 0** |

26| Toggle sidebar | **⌘+B** |

27| Toggle bottom panel (Codex only) | **⌘+J** |

28| Toggle terminal (Codex only) | **⌃+`** |

29| Clear terminal (When the terminal is focused) | **⌃+L** or **⌘+K** |

30| Clear all unread indicators (Codex only) | **⇧+Esc** |

31| Undo last app action | **⌘+Z** |

32| Redo last app action | **⌘+⇧+Z** |

33| Close current tab or window | **⌘+W** |

34| Toggle full screen | **⌘+⌃+F** |

35| Quit the app | **⌘+Q** |

36 

37| Chats | Shortcut |

38| --- | --- |

39| New chat | **⌘+N** or **⌘+⇧+O** |

40| New standalone chat (Codex only) | **⌘+⌥+O** |

41| Quick chat (ChatGPT only) | **⌘+⌥+N** |

42| New temporary chat (ChatGPT only) | **⌘+⇧+N** |

43| Archive chat | **⌘+⇧+A** |

44| Mark chat as unread | **⌘+⇧+U** |

45| Pin or unpin chat | **⌘+⌥+P** |

46| Rename chat | **⌘+⌥+R** |

47| Open side chat (Codex only) | **⌘+⌥+S** |

48| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

49| Find in chat | **⌘+F** |

50| Find next match | **⌘+G** |

51| Find previous match | **⌘+⇧+G** |

52| Previous chat or tab | **⌃+⇧+Tab** or **⌘+⇧+[** or **⌘+⌥+←** |

53| Next chat or tab | **⌃+Tab** or **⌘+⇧+]** or **⌘+⌥+→** |

54| Next chat needing attention (Codex only) | **⌘+⌥+A** |

55| Open recent chat 1–6 | **⌘+⌥+1–6** |

56| Go to chat 1–9 | **⌘+1–9** |

57 

58| Input and modes | Shortcut |

59| --- | --- |

60| Open model picker | **⌃+⇧+M** |

61| Open project picker | **⌘+⌥+⇧+O** |

62| Start voice chat (When voice chat is available) | **⌃+⇧+V** |

63| Start dictation (When dictation is available) | **⌃+⇧+D** |

64| Restore previous composer prompt (When the composer is empty) | **↑** |

65| Approve request (When an approval request is open) | **⏎** |

66| Decline request (When an approval request is open) | **Esc** |

67| Switch to Chat, Work, or Codex (In the order shown) | **⌃+1** or **⌃+2** or **⌃+3** |

68| Toggle Activity view (When Activity is available) | **⌘+⌥+U** |

69 

70| Workspace and browser | Shortcut |

71| --- | --- |

72| Run environment action 1 (When the environment defines a primary action) | **⌘+⇧+D** |

73| Search files (Codex only) | **⌘+P** |

74| Toggle file tree (Codex only) | **⌘+⇧+E** |

75| Open review tab (Codex only) | **⌃+⇧+G** |

76| Toggle review panel (Codex only) | **⌘+⌥+B** |

77| Open browser tab (When the built-in browser is available) | **⌘+T** |

78| Toggle browser panel (When the built-in browser is available) | **⌘+⇧+B** |

79| Go to line or focus browser address bar (Depends on the focused view) | **⌘+L** |

80| Browser back (When the built-in browser is focused) | **⌘+←** |

81| Browser forward (When the built-in browser is focused) | **⌘+→** |

82| Reload browser page (When the built-in browser is focused) | **⌘+R** |

83| Reload browser page without cache (When the built-in browser is focused) | **⌘+⇧+R** |

84| Copy browser URL (When the built-in browser is focused) | **⌘+⇧+C** |

85| Toggle browser browse or comment mode (When browser commenting is available) | **⌘+.** |

86| Copy conversation path (Codex only) | **⌘+⌥+⇧+C** |

87| Copy chat deep link | **⌘+⌥+L** |

88| Copy session ID | **⌘+⌥+C** |

89| Copy working directory (Codex only) | **⌘+⇧+C** |

90| Take an Appshot (press both keys simultaneously) | **⌘+⌘** |

91 

92### Windows

93 

94 

95 

96| General | Shortcut |

97| --- | --- |

98| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

99| Open settings | **Ctrl+,** |

100| Open keyboard shortcuts | **Ctrl+/** |

101| Open folder (Codex and Work only) | **Ctrl+O** |

102| Navigate back | **Ctrl+[** or **Mouse Back** |

103| Navigate forward | **Ctrl+]** or **Mouse Forward** |

104| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

105| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

106| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

107| Toggle sidebar | **Ctrl+B** |

108| Toggle bottom panel (Codex only) | **Ctrl+J** |

109| Toggle terminal (Codex only) | **Ctrl+`** |

110| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

111| Clear all unread indicators (Codex only) | **Shift+Esc** |

112| Undo last app action | **Ctrl+Z** |

113| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

114| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

115| Toggle full screen | **F11** |

116| Quit the app | **Ctrl+Q** |

117 

118| Chats | Shortcut |

119| --- | --- |

120| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

121| New standalone chat (Codex only) | **Ctrl+Alt+O** |

122| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

123| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

124| Archive chat | **Ctrl+Shift+A** |

125| Mark chat as unread | **Ctrl+Shift+U** |

126| Pin or unpin chat | **Ctrl+Alt+P** |

127| Rename chat | **Ctrl+Alt+R** |

128| Open side chat (Codex only) | **Ctrl+Alt+S** |

129| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

130| Find in chat | **Ctrl+F** |

131| Find next match | **Ctrl+G** |

132| Find previous match | **Shift+F3** |

133| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

134| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

135| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

136| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

137| Go to chat 1–9 | **Ctrl+1–9** |

138 

139| Input and modes | Shortcut |

140| --- | --- |

141| Open model picker | **Ctrl+Shift+M** |

142| Open project picker | **Ctrl+Alt+Shift+O** |

143| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

144| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

145| Restore previous composer prompt (When the composer is empty) | **↑** |

146| Approve request (When an approval request is open) | **⏎** |

147| Decline request (When an approval request is open) | **Esc** |

148| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

149| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

150 

151| Workspace and browser | Shortcut |

152| --- | --- |

153| Run environment action 1 (When the environment defines a primary action) | **Win+Shift+D** |

154| Search files (Codex only) | **Ctrl+P** |

155| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

156| Open review tab (Codex only) | **Ctrl+Shift+G** |

157| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

158| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

159| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

160| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

161| Browser back (When the built-in browser is focused) | **Alt+←** |

162| Browser forward (When the built-in browser is focused) | **Alt+→** |

163| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

164| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

165| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

166| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

167| Copy chat deep link | **Ctrl+Alt+L** |

168| Copy session ID | **Ctrl+Alt+C** |

169| Copy working directory (Codex only) | **Ctrl+Shift+C** |

170 

171### Linux

172 

173 

174 

175| General | Shortcut |

176| --- | --- |

177| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

178| Open settings | **Ctrl+,** |

179| Open keyboard shortcuts | **Ctrl+/** |

180| Open folder (Codex and Work only) | **Ctrl+O** |

181| Navigate back | **Ctrl+[** or **Mouse Back** |

182| Navigate forward | **Ctrl+]** or **Mouse Forward** |

183| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

184| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

185| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

186| Toggle sidebar | **Ctrl+B** |

187| Toggle bottom panel (Codex only) | **Ctrl+J** |

188| Toggle terminal (Codex only) | **Ctrl+`** |

189| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

190| Clear all unread indicators (Codex only) | **Shift+Esc** |

191| Undo last app action | **Ctrl+Z** |

192| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

193| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

194| Toggle full screen | **F11** |

195| Quit the app | **Ctrl+Q** |

196 

197| Chats | Shortcut |

198| --- | --- |

199| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

200| New standalone chat (Codex only) | **Ctrl+Alt+O** |

201| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

202| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

203| Archive chat | **Ctrl+Shift+A** |

204| Mark chat as unread | **Ctrl+Shift+U** |

205| Pin or unpin chat | **Ctrl+Alt+P** |

206| Rename chat | **Ctrl+Alt+R** |

207| Open side chat (Codex only) | **Ctrl+Alt+S** |

208| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

209| Find in chat | **Ctrl+F** |

210| Find next match | **Ctrl+G** |

211| Find previous match | **Shift+F3** |

212| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

213| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

214| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

215| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

216| Go to chat 1–9 | **Ctrl+1–9** |

217 

218| Input and modes | Shortcut |

219| --- | --- |

220| Open model picker | **Ctrl+Shift+M** |

221| Open project picker | **Ctrl+Alt+Shift+O** |

222| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

223| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

224| Restore previous composer prompt (When the composer is empty) | **↑** |

225| Approve request (When an approval request is open) | **⏎** |

226| Decline request (When an approval request is open) | **Esc** |

227| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

228| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

229 

230| Workspace and browser | Shortcut |

231| --- | --- |

232| Run environment action 1 (When the environment defines a primary action) | **Super+Shift+D** |

233| Search files (Codex only) | **Ctrl+P** |

234| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

235| Open review tab (Codex only) | **Ctrl+Shift+G** |

236| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

237| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

238| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

239| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

240| Browser back (When the built-in browser is focused) | **Alt+←** |

241| Browser forward (When the built-in browser is focused) | **Alt+→** |

242| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

243| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

244| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

245| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

246| Copy chat deep link | **Ctrl+Alt+L** |

247| Copy session ID | **Ctrl+Alt+C** |

248| Copy working directory (Codex only) | **Ctrl+Shift+C** |To find, customize, or reset app shortcuts, open **Settings > Keyboard

249Shortcuts**.

250 

251You can search by command name or switch the search field into keystroke mode

252and press the shortcut you want to find. Appshots use a separate global shortcut

253under **Settings > Appshots**.

254 

255On Linux, experimental native Wayland can affect shortcut support. See the

256[Linux desktop app guide](https://learn.chatgpt.com/docs/linux/linux-app#wayland-support).

257 

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

259 

260## Search past chats and find in a chat

261 

262Use **Search chats** to reopen a past chat. Search chats doesn't have a default

263shortcut. You can assign one under **Settings > Keyboard Shortcuts**. When

264expanded matching is available, search can also match chat content and Git

265branch names, so you can search for a phrase from the chat or a branch such as

266`fix/login-redirect`.

267 

268Use **Find in chat** after opening a chat to find text within it. It doesn't

269search across other chats.

270 

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

272 

273## Deep links

274 

275The ChatGPT desktop app keeps the `codex://` URL scheme for compatibility, so

276links can open specific parts of the app directly. Encode query string values

277before adding them to a URL.

278 

279### Supported links

280 

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

282 

283| Deep link | Opens |

284| --------------------------------------------------------------------------- | ------------------------------------------------------- |

285| `codex://threads/new` | A new local chat. |

286| `codex://new?<query>` | A new local chat with at least one query parameter. |

287| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

288| `codex://settings` | Settings. |

289| `codex://settings/connections/<connection-type>` | Computer, device, or SSH connection settings. |

290| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds a host from your SSH config to Codex. |

291| `codex://skills` | Skills. |

292| `codex://automations` | Scheduled with the create flow open. |

293| `codex://plugins/install/<plugin-name>?marketplace=<marketplace-name>` | The install flow for a plugin from a known marketplace. |

294| `codex://plugins/<plugin-id>` | A plugin detail page. |

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

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

297 

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

299 

300### Chats

301 

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

303 

304| Deep link | Opens |

305| ----------------------------- | ------------------------------------------------------------------------------------------------------------ |

306| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

307| `codex://threads/new` | A new local chat. |

308| `codex://threads/new?<query>` | A new local chat with optional query parameters. |

309| `codex://new?<query>` | A new local chat. Include at least one of `prompt`, `path`, or `originUrl`; otherwise the link does nothing. |

310 

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

312 

313| Query parameter | Required | What it does |

314| ---------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |

315| `prompt=<text>` | No | Sets the initial composer text. |

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

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

318 

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

320 

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

322 

323#### Start a chat with a plugin

324 

325To help users start a plugin-backed chat, include a plugin mention in the

326prompt before you encode it:

327 

328```text

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

330```

331 

332Encode the complete prompt as a URI component—for example, with

333`encodeURIComponent` in JavaScript—and pass it to the `prompt` parameter:

334 

335```text

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

337```

338 

339The link opens a new chat with the decoded prompt in the composer. It doesn't

340send the prompt automatically. After the user sends it, Codex can use an

341installed plugin in that chat. If the plugin isn't installed but is available

342to the user, Codex asks the user to install it and connect any required connectors.

343After setup, the user can select **Continue** to resume the same chat. Workspace

344settings can limit which plugins a user can install. For plugin installation

345and permission details, see [Plugins](https://learn.chatgpt.com/docs/plugins).

346 

347### Settings

348 

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

350 

351| Deep link | Opens |

352| ------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |

353| `codex://settings` | Settings. |

354| `codex://settings/browser-use` | Browser settings. |

355| `codex://settings/computer-use/google-chrome` | Google Chrome settings for computer use. |

356| `codex://settings/connections` | Remote connections settings. |

357| `codex://settings/connections/computer` | Settings for controlling this Mac or PC from another device. |

358| `codex://settings/connections/devices` | Settings for controlling other devices. |

359| `codex://settings/connections/ssh` | SSH connection settings. |

360| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds the named host alias as a Codex-managed connection, then opens SSH connection settings. |

361 

362The `name` value must match a host alias in `~/.ssh/config`. The link disables

363automatic connection for the added host. If Codex can't find the named host, it

364opens SSH connection settings and shows an error.

365 

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

367 

368### Skills

369 

370Use these links when you need to open Skills.

371 

372| Deep link | Opens |

373| ---------------- | ------- |

374| `codex://skills` | Skills. |

375 

376### Scheduled

377 

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

379 

380| Deep link | Opens |

381| --------------------- | ------------------------------------ |

382| `codex://automations` | Scheduled with the create flow open. |

383 

384### Plugins

385 

386Plugin 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).

387 

388#### Plugin install

389 

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

391 

392| Deep link | Opens |

393| ---------------------------------------------------------------------- | ----------------------------------------------- |

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

395 

396| Query parameter | Required | What it does |

397| -------------------------------- | -------- | ------------------------------------------------------------------------------- |

398| `marketplace=<marketplace-name>` | Yes | Identifies the marketplace. For an OpenAI-curated plugin, use `openai-curated`. |

399 

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

401 

402#### Plugin detail

403 

404| Deep link | Opens |

405| ----------------------------- | --------------------- |

406| `codex://plugins/<plugin-id>` | A plugin detail page. |

407 

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

409 

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

411 

412| Query parameter | Required | What it does |

413| ------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |

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

415| `source=manage` | No | Preserves the app's plugin-management entry point. It's not admin-only. |

416 

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

418 

419#### Local plugin

420 

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

422 

423| Deep link | Opens |

424| --------------------------------------------------------------------------- | ---------------------------------------------------- |

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

426 

427| Query parameter | Required | What it does |

428| --------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------- |

429| `marketplacePath=<absolute-marketplace-path>` | Yes | Absolute path to the local `marketplace.json`, for example `/Users/alex/.agents/plugins/marketplace.json`. |

430| `mode=share` | No | Opens the share flow for that local plugin. |

431 

432### Pets

433 

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

435 

436| Deep link | Opens |

437| ----------------------------------------------------------------- | --------------------- |

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

439 

440| Query parameter | Required | What it does |

441| ------------------------------ | -------- | ------------------------------------------------------------------------------------------- |

442| `name=<pet-name>` | Yes | Sets the pet name. The value must contain at least one non-whitespace character. |

443| `imageUrl=<https-image-url>` | Yes | Provides an absolute HTTPS URL for the pet image or sprite sheet. |

444| `description=<text>` | No | Adds a description to the install flow. |

445| `spriteVersionNumber=<1-or-2>` | No | Selects the sprite-sheet format. The default is `1`; the only other supported value is `2`. |

446 

447The install link accepts only these query parameters. Invalid names, non-HTTPS

448image URLs, unsupported sprite versions, or extra path segments cause the link

449to do nothing.

450 

451## See also

452 

453- [Features](https://learn.chatgpt.com/docs/features)

454- [Settings](https://learn.chatgpt.com/docs/reference/settings)

455- [Slash commands](https://learn.chatgpt.com/docs/reference/slash-commands)

Details

420```toml420```toml

421name = "pr_explorer"421name = "pr_explorer"

422description = "Read-only codebase explorer for gathering evidence before changes are proposed."422description = "Read-only codebase explorer for gathering evidence before changes are proposed."

423model = "gpt-5.3-codex-spark"423model = "gpt-5.6-luna"

424model_reasoning_effort = "medium"424model_reasoning_effort = "medium"

425sandbox_mode = "read-only"425sandbox_mode = "read-only"

426developer_instructions = """426developer_instructions = """


518```toml518```toml

519name = "ui_fixer"519name = "ui_fixer"

520description = "Implementation-focused agent for small, targeted fixes after the issue is understood."520description = "Implementation-focused agent for small, targeted fixes after the issue is understood."

521model = "gpt-5.3-codex-spark"521model = "gpt-5.6-luna"

522model_reasoning_effort = "medium"522model_reasoning_effort = "medium"

523developer_instructions = """523developer_instructions = """

524Own the fix once the issue is reproduced.524Own the fix once the issue is reproduced.

Details

62For automation secret handling, see62For automation secret handling, see

63[Use API key auth](https://learn.chatgpt.com/docs/non-interactive-mode#use-api-key-auth).63[Use API key auth](https://learn.chatgpt.com/docs/non-interactive-mode#use-api-key-auth).

64For access token setup, see [Access tokens](https://learn.chatgpt.com/docs/enterprise/access-tokens).64For access token setup, see [Access tokens](https://learn.chatgpt.com/docs/enterprise/access-tokens).

65For workload identity setup, see

66[Workload identity federation](https://learn.chatgpt.com/docs/enterprise/workload-identity).

67 65 

68## Diagnostics66## Diagnostics

69 67 

customization/chronicle.md +0 −201 deleted

File Deleted View Diff

1# Chronicle

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.

4 

5Chronicle is in an **opt-in research preview**. It is only available for

6 ChatGPT Pro subscribers on macOS. Please review the [Privacy and

7 Security](#privacy-and-security) section for details and to understand the

8 current risks before enabling.

9 

10Chronicle augments Codex memories with context from your screen. When you prompt

11Codex, those memories can help it understand what you’ve been working on with

12less need for you to restate context.

13 

14Chronicle is available as an opt-in research preview in the ChatGPT desktop app on macOS.

15It requires macOS Screen Recording and Accessibility permissions. Before

16enabling, be aware that Chronicle uses rate limits quickly, increases risk of

17prompt injection, and stores memories unencrypted on your device.

18 

19## How Chronicle helps

20 

21We’ve designed Chronicle to reduce the amount of context you have to restate

22when you work with Codex. By using recent screen context to improve memory

23building, Chronicle can help Codex understand what you’re referring to, identify

24the right source to use, and pick up on the tools and workflows you rely on.

25 

26<section class="feature-grid mt-4">

27 

28 

29 

30 

31### Use what’s on screen

32 

33With Chronicle Codex can understand what you are currently looking at, saving

34you time and context switching.

35 

36 

37 

38 

39<ChronicleThreadDemo client:load scenario="screen" />

40 

41</section>

42 

43<section class="feature-grid inverse">

44 

45 

46 

47 

48### Fill in missing context

49 

50No need to carefully craft your context and start from zero. Chronicle lets

51Codex fill in the gaps in your context.

52 

53 

54 

55 

56<ChronicleThreadDemo client:load scenario="project" />

57 

58</section>

59 

60<section class="feature-grid">

61 

62 

63 

64 

65### Remember tools and workflows

66 

67No need to explain to Codex which tools to use to perform your work. Codex

68learns as you work to save you time in the long run.

69 

70 

71 

72 

73<ChronicleThreadDemo client:load scenario="tools" />

74 

75</section>

76 

77In these cases, Codex uses Chronicle to provide additional context. When another

78source is better for the job, such as reading the specific file, Slack thread,

79Google Doc, dashboard, or pull request, Codex uses Chronicle to identify the

80source and then use that source directly.

81 

82## Enable Chronicle

83 

841. Open Settings in the ChatGPT desktop app.

852. Go to **Personalization** and make sure **Memories** is enabled.

863. Turn on **Chronicle** below the Memories setting.

874. Review the consent dialog and choose **Continue**.

885. Grant macOS Screen Recording and Accessibility permissions when prompted.

896. When setup completes, choose **Try it out** or start a new chat.

90 

91If macOS reports that Screen Recording or Accessibility permission is denied,

92open System Settings &gt; Privacy & Security &gt; Screen Recording or

93Accessibility and enable ChatGPT. If a permission is restricted by macOS or

94your organization, Chronicle will start after the restriction is removed and

95ChatGPT receives the required permission.

96 

97## Pause or disable Chronicle at any time

98 

99You control when Chronicle generates memories using screen context. Use the

100ChatGPT menu bar icon to choose **Pause Chronicle** or **Resume Chronicle**. Pause

101Chronicle before meetings or when viewing sensitive content that you do not want

102Codex to use as context. To disable Chronicle, return to **Settings &gt;

103Personalization &gt; Memories** and turn off **Chronicle**.

104 

105You can also control whether memories are used in a given chat. [Learn

106more](https://learn.chatgpt.com/docs/customization/memories#control-memories-per-chat).

107 

108## Rate limits

109 

110Chronicle works by running sandboxed agents in the background to generate

111memories from captured screen images. These agents currently consume rate limits

112quickly.

113 

114## Privacy and security

115 

116Chronicle uses screen captures, which can include sensitive information visible

117on your screen. It does not have access to your microphone or system audio.

118Don’t use Chronicle to record meetings or communications with others without

119their consent. Pause Chronicle when viewing content you do not want remembered

120in memories.

121 

122### Where does Chronicle store my data?

123 

124Screen captures are ephemeral and will only be saved temporarily on your

125computer. Temporary screen capture files may appear under

126`$TMPDIR/chronicle/screen_recording/` while Chronicle is running. Screen captures

127that are older than 6 hours will be deleted while Chronicle is running.

128 

129The memories that Chronicle generates are just like other Codex memories:

130unencrypted markdown files that you can read and modify if needed. You can also

131ask Codex to search them. If you want to have Codex forget something you can

132delete the respective file inside the folder or selectively edit the markdown

133files to remove the information you’d like to remove. You should not manually

134add new information. The generated Chronicle memories are stored locally on your

135computer under `$CODEX_HOME/memories_extensions/chronicle/` (typically

136`~/.codex/memories_extensions/chronicle`).

137 

138 

139 

140 <Alert

141 client:load

142 color="danger"

143 variant="soft"

144 description="Both directories for your screen captures and memories might contain sensitive information. Make sure you do not share content with others, and be aware that other programs on your computer can also access these files."

145 />

146 

147 

148 

149### What data gets shared with OpenAI?

150 

151Chronicle captures screen context locally, then periodically uses Codex to

152summarize recent activity into memories. To generate those memories, Chronicle

153starts an ephemeral Codex session with access to this screen context. That

154session may process selected screenshot frames, OCR text extracted from

155screenshots, timing information, and local file paths for the relevant time

156window.

157 

158Screen captures used for memory generation are stored temporarily on your device. They are processed on our

159servers to generate memories, which are then stored locally on device. We do not

160store the screenshots on our servers after processing unless required by law,

161and do not use them for training.

162 

163The generated memories are Markdown files stored locally under

164`$CODEX_HOME/memories_extensions/chronicle/`. When Codex uses memories in a

165future session, relevant memory contents may be included as context for that

166session, and may be used to improve our models if allowed in your ChatGPT

167settings. [Learn more](https://help.openai.com/en/articles/7730893-data-controls-faq).

168 

169## Prompt injection risk

170 

171Using Chronicle increases risk to prompt injection attacks from screen content.

172For instance, if you browse a site with malicious agent instructions, Codex may

173follow those instructions.

174 

175## Troubleshooting

176 

177### How do I enable Chronicle?

178 

179If you do not see the Chronicle setting, make sure you are using a ChatGPT desktop app

180build that includes Chronicle and that you have Memories enabled inside Settings

181&gt; Personalization.

182 

183Chronicle is currently only available for ChatGPT Pro subscribers on macOS.

184 

185If setup does not complete:

186 

1871. Confirm that ChatGPT has Screen Recording and Accessibility permissions.

1882. Quit and reopen the ChatGPT desktop app.

1893. Open **Settings > Personalization** and check the Chronicle status.

190 

191### Which model is used for generating the Chronicle memories?

192 

193Chronicle uses the same model as your other [Memories](https://learn.chatgpt.com/docs/customization/memories). If you

194did not configure a specific model it uses your default Codex model. To choose a

195specific model, update the `consolidation_model` in your

196[configuration](https://learn.chatgpt.com/docs/config-file/config-basic).

197 

198```toml

199[memories]

200consolidation_model = "gpt-5.6-luna"

201```

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 

5Users can install the ChatGPT desktop app themselves, or your IT team can5Choose how your organization installs apps.

6deploy it with an enterprise management tool. The app is Store-signed, but

7users don't need to open the Microsoft Store to install or update it.

8 6 

9## Let users install and update the app7<a id="deploy-the-app-with-an-enterprise-management-tool"></a>

10 8 

11If users can manage their own applications, direct them to the9{/* prettier-ignore */}

12[web installer](https://get.microsoft.com/installer/download/9PLM9XGG6VKS?cid=website_cta_psi).10<Tabs

13The installer provides the standard installation and automatic-update11 id="windows-deployment"

14experience. Microsoft Store components may appear during installation or12 ariaLabel="Deployment method"

15updates, but users don't need to browse the Store themselves.13 param="deployment"

14 defaultTab="intune"

15 block

16 tabs={[

17 { id: "intune", label: "Intune" },

18 { id: "sccm", label: "SCCM" },

19 { id: "user", label: "Self-install" },

20 { id: "other", label: "Other" },

21 ]}

22>

16 23

17You can also install the app from the command line:24 

25 

26Package source

27 

28 

29<Tabs

30 id="windows-intune-source"

31 ariaLabel="Intune package source"

32 param="intune-source"

33 defaultTab="store"

34 selector="dropdown"

35 tabs={[

36 { id: "store", label: "Microsoft Store (recommended)" },

37 { id: "offline", label: "Offline MSIX" },

38 ]}

39>

40

41 

42 

43### Deploy through Microsoft Store

44 

45Use Intune's Microsoft Store integration to install and update the app.

46 

47<WorkflowSteps>

48 

491. In the Intune admin center, go to **Apps** > **All apps** >

50 **Create**. Select **Microsoft Store app (new)**.

512. Search for **ChatGPT** from **OpenAI**, or enter the Store

52 product ID `9PLM9XGG6VKS`. Select the app and review its installation settings.

533. On **App information**, set **Install behavior** to **System**.

544. Under **Required**, add your target group so Intune installs the app

55 automatically, then select **Create**.

56 

57</WorkflowSteps>

58 

59For optional installation through Company Portal, use **Available for enrolled

60devices** instead.

61 

62Devices need access to the Microsoft Store and Windows Update endpoints in

63Microsoft's [network requirements](https://learn.microsoft.com/en-us/intune/fundamentals/endpoints#microsoft-store).

64If your network blocks these endpoints, select **Offline MSIX**.

65 

66For installation context, network requirements, and deployment monitoring, see

67Microsoft's [Intune Store app guide](https://learn.microsoft.com/en-us/intune/app-management/deployment/add-microsoft-store).

68 

69

70 

71

72 

73 

74### Deploy an offline package with Intune

75 

76Use a downloaded MSIX when devices can't use Microsoft's distribution services

77or you need to deploy a specific approved version. Choose a **Required**

78assignment so Intune installs the app automatically.

79 

80<WarningTip>

81 If you've only blocked access to the Microsoft Store app, you can still deploy

82 through Intune's Microsoft Store integration. Select **Microsoft Store

83 (recommended)** above.

84</WarningTip>

85 

86 

87Assignment

88 

89 

90<Tabs

91 id="windows-intune-assignment"

92 ariaLabel="Intune assignment"

93 param="intune-assignment"

94 defaultTab="required"

95 selector="dropdown"

96 tabs={[

97 { id: "required", label: "Required (recommended)" },

98 { id: "available", label: "Available in Company Portal" },

99 ]}

100>

101

102 

103 

104<WorkflowSteps>

105 

1061. Download the [x64 MSIX](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-x64.msix) or [Arm64 MSIX](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-arm64.msix) for your devices.

1072. In the Intune admin center, go to **Apps** > **All apps** > **Create**.

108 Select **Line-of-business app**, upload the MSIX, and review the package

109 information.

1103. On **Assignments**, add your target device group under **Required**.

1114. In that assignment's **Install Context** column, select **User context**,

112 change it to **Device context**, and save.

1135. Review and create the app. Confirm successful installation in **Device

114 install status**, then have employees launch ChatGPT normally.

115 

116</WorkflowSteps>

117 

118If the app doesn't appear, have users sign out and back in.

119 

120For more information, see Microsoft's [LOB app deployment guide](https://learn.microsoft.com/en-us/intune/app-management/deployment/add-lob-windows).

121 

122

123 

124

125 

126 

127To let users choose when to install the offline package, use a **Windows app

128(Win32)** with an **Available for enrolled devices** assignment:

129 

130<WorkflowSteps>

131 

1321. Download the [x64 MSIX](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-x64.msix) or [Arm64 MSIX](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-arm64.msix), plus the [offline license](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-License.xml). Rename the package to `ChatGPT.msix` and keep both files in the same

133 folder.

1342. Save the following as `Install-ChatGPT.ps1`

135 beside the downloaded files:

18 136 

19```powershell137```powershell

20winget install --id 9PLM9XGG6VKS -s msstore138 #Requires -RunAsAdministrator

139 $ErrorActionPreference = 'Stop'

140 

141 Add-AppxProvisionedPackage -Online `

142 -PackagePath "$PSScriptRoot\ChatGPT.msix" `

143 -LicensePath "$PSScriptRoot\ChatGPT-License.xml" `

144 -Regions all

21```145```

22 146 

23## Deploy the app with an enterprise management tool1473. Use Microsoft's [Win32 app workflow](https://learn.microsoft.com/en-us/intune/app-management/deployment/add-win32) to package these files and add a **Windows app (Win32)** in Intune. Set

148 **Install behavior** to **System**, target the package's architecture, and

149 run the script with 64-bit Windows PowerShell. Assign it as

150 **Available for enrolled devices**.

151 

152</WorkflowSteps>

24 153 

25If your organization centrally manages software, use Microsoft Intune or154<details>

26another compatible mobile device management (MDM) or software-deployment155<summary>Win32 installation and detection settings</summary>

27platform. If your platform supports Microsoft Store app deployment, search for156 

28ChatGPT from OpenAI in the Store app flow, or use this Store product ID:157Use this install command:

29 158 

30```text159```text

319PLM9XGG6VKS160%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\powershell.exe -NoProfile -File .\Install-ChatGPT.ps1

161```

162 

163For the custom detection rule, run the following script in 64-bit PowerShell.

164It reports success when Windows has provisioned the app on the device. If you deploy a

165specific version, also compare its `Version` with your approved version.

166 

167```powershell

168$package = Get-AppxProvisionedPackage -Online -ErrorAction Stop |

169 Where-Object DisplayName -eq 'OpenAI.Codex'

170 

171if ($package) {

172 Write-Output $package.PackageName

173 exit 0

174}

175exit 1

176```

177 

178For the uninstall command, package an `Uninstall-ChatGPT.ps1` script with these

179commands and run it in the same System context. This removes the provisioned

180package and the app registrations for all users on the device.

181 

182```powershell

183#Requires -RunAsAdministrator

184$ErrorActionPreference = 'Stop'

185 

186Get-AppxProvisionedPackage -Online |

187 Where-Object DisplayName -eq 'OpenAI.Codex' |

188 Remove-AppxProvisionedPackage -Online -AllUsers

189 

190Get-AppxPackage -AllUsers -Name 'OpenAI.Codex' |

191 Remove-AppxPackage -AllUsers

192```

193 

194Follow your organization's PowerShell script-signing policy for both scripts.

195 

196The app becomes available to users when Windows registers the provisioned

197package at sign-in. Have users sign out and back in if it doesn't appear.

198 

199</details>

200 

201

202 

203</Tabs>

204

205 

206</Tabs>

207

208 

209

210 

211 

212### Deploy with Microsoft Configuration Manager (SCCM)

213 

214Deploy the downloaded MSIX through Configuration Manager and Software Center.

215 

216<WorkflowSteps>

217 

2181. Download the [x64 MSIX](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-x64.msix) or [Arm64 MSIX](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-arm64.msix) for your devices. Put it on a network share accessible to Configuration

219 Manager.

2202. Go to **Software Library** > **Application

221 Management** > **Applications** > **Create Application**. Select **Windows app

222 package** and enter the MSIX path. Review the detected package information and

223 enable **Provision this application for all users on the device**.

2243. Distribute the content to your distribution points

225 and deploy to a device collection. Choose **Required** to install

226 automatically, or **Available** to let users install from Software Center.

227 

228</WorkflowSteps>

229 

230Use the Windows app package deployment type, rather than the Store-link

231deployment type. For package requirements and all-user provisioning, see

232Microsoft's [Configuration Manager guide](https://learn.microsoft.com/en-us/intune/configmgr/apps/get-started/creating-windows-applications).

233 

234If your deployment workflow requires it, download the [offline license](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-License.xml) alongside the package.

235 

236

237 

238

239 

240 

241### Deploy with another management tool

242 

243Use your management tool's MSIX deployment workflow to install the app on managed

244Windows devices.

245 

246<WorkflowSteps>

247 

2481. Download the [x64 MSIX](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-x64.msix) or [Arm64 MSIX](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-arm64.msix) for your devices.

2492. Add the MSIX to your deployment tool. Configure installation for the device,

250 using Local System or administrator privileges.

2513. Assign automatic installation to a pilot device group. Confirm that employees

252 can open ChatGPT under their normal Windows accounts before expanding deployment.

253 

254</WorkflowSteps>

255 

256If the app doesn't appear, have users sign out and back in.

257 

258<details>

259<summary>Install with a PowerShell script</summary>

260 

261If your tool requires an installation command, download the [offline license](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-License.xml) alongside the MSIX.

262Rename the package to `ChatGPT.msix` and save this script as

263`Install-ChatGPT.ps1` in the same folder:

264 

265```powershell

266#Requires -RunAsAdministrator

267$ErrorActionPreference = 'Stop'

268 

269Add-AppxProvisionedPackage -Online `

270 -PackagePath "$PSScriptRoot\ChatGPT.msix" `

271 -LicensePath "$PSScriptRoot\ChatGPT-License.xml" `

272 -Regions all

273```

274 

275Package the script and both files together. Configure your tool to run the script

276with 64-bit Windows PowerShell as Local System or an administrator.

277 

278</details>

279 

280

281 

282

283 

284<a id="let-users-install-and-update-the-app"></a>

285 

286Package source

287 

288 

289<Tabs

290 id="windows-user-source"

291 ariaLabel="User installation package source"

292 param="user-source"

293 defaultTab="store"

294 selector="dropdown"

295 tabs={[

296 { id: "store", label: "Web installer (recommended)" },

297 { id: "offline", label: "Offline MSIX" },

298 ]}

299>

300

301 

302 

303### Let users install the app

304 

305Use this option when users can install applications themselves or get help

306from an administrator.

307 

308<WorkflowSteps>

309 

3101. Direct users to the [ChatGPT Windows installer](https://get.microsoft.com/installer/download/9PLM9XGG6VKS?cid=website_cta_psi).

3112. Run the installer and follow the Windows installation

312 prompts. An administrator must approve the installation.

3133. Open ChatGPT and sign in with a work account to get started.

314 

315</WorkflowSteps>

316 

317Users can also install from the command line:

318 

319```powershell

320winget install --id 9PLM9XGG6VKS -s msstore

32```321```

33 322 

34For setup details, see the following Microsoft documentation:323The installer provides automatic updates. Microsoft Store components may appear

324during installation or updates, but users don't need to browse the Store.

35 325 

36- [Enterprise deployment guide](https://1drv.ms/b/c/123ec1ed6c72a14a/IQDVdo5pE5P3QKg5r0eieSvfAeE7cW0yy58ncBFW7OYajwU?e=dGH94F)326

37- [Intune deployment guide](https://1drv.ms/b/c/123ec1ed6c72a14a/IQDh_5o31T6XT7bUn5RPldEJAZX58gEuRr8YnJD7d2IMpec?e=nByKw6)327 

38- [MECM deployment guide](https://1drv.ms/b/c/123ec1ed6c72a14a/IQB829f_TSbkR7-H9qA4Q9ntAa9D2He3qMjXksWi2ozdeg8?e=GTKgAl)328

39- [Add Microsoft Store apps to Microsoft Intune](https://learn.microsoft.com/en-us/intune/app-management/deployment/add-microsoft-store)329 

330<a id="install-without-microsoft-distribution-services"></a>

331 

332### Install from an offline package

333 

334Download the files on a connected machine, then copy them to the target device.

335An administrator must perform the installation.

336 

337<WorkflowSteps>

338 

3391. Download the [x64 MSIX](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-x64.msix) or [Arm64 MSIX](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-arm64.msix), plus the [offline license](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-License.xml). Rename the package to `ChatGPT.msix` and keep both files in the same

340 folder.

3412. Open Windows PowerShell as an administrator in that

342 folder and run:

343 

344```powershell

345 Add-AppxProvisionedPackage -Online `

346 -PackagePath .\ChatGPT.msix `

347 -LicensePath .\ChatGPT-License.xml `

348 -Regions all

349```

350 

3513. Sign out and back in if the app doesn't appear, then open

352 ChatGPT and sign in with a work account.

353 

354</WorkflowSteps>

355 

356These links provide the latest Store-signed package for each architecture.

357Offline installation doesn't provide offline access to ChatGPT. Standalone

358MSI and non-Store EXE packages aren't available.

359 

360

361 

362</Tabs>

363

364 

365</Tabs>

40 366 

41<a id="manage-in-app-updates"></a>367<a id="manage-in-app-updates"></a>

42 368 

43### Manage app updates369## Manage app updates

370 

371The app checks for updates by default, including after an offline

372installation. To enable automatic updates, allow devices to reach

373`persistent.oaistatic.com`. If you disable automatic updates, deploy newer

374packages through your management tool.

375 

376For update policy and rollout guidance, see

377[Manage app updates](https://learn.chatgpt.com/docs/enterprise/manage-app-updates). Disabling the built-in

378updater doesn't disable updates from the Microsoft Store or your management tool.

379 

380## Troubleshooting

381 

382<details>

383<summary>Users are prompted for administrator credentials when installing</summary>

384 

385For self-install, this is expected. An administrator must approve the installation.

386 

387For an Intune deployment through the Microsoft Store:

388 

3891. In the Intune admin center, go to **Apps** > **All apps** and select ChatGPT.

3902. Check **Install behavior** in the app's **Properties**. If it's **User**, add

391 the app again as a **Microsoft Store app (new)** and select **System** on

392 **App information**.

3933. Assign the app to your target group under **Required** or **Available for

394 enrolled devices**. If you added a new app, remove that group's assignment

395 from the original app.

3964. Sync the affected device with Intune, then check **Device install status**.

397 For an available assignment, retry the installation in Company Portal.

44 398 

45For setup instructions and rollout guidance, see399If the app is already installed, deploying it with **System** install behavior may

46[Manage app updates](https://learn.chatgpt.com/docs/enterprise/manage-app-updates).400cause Intune to report `0x87D1041C`. Installation still succeeds in this scenario.

401Verify the app on the affected device.

47 402 

48## Install without Microsoft distribution services403</details>

49 404 

50If your environment can't use Microsoft app-distribution services for the405<details>

51initial installation, download the Store-signed MSIX package for each device406<summary>Installation fails with error `0x80073D28`</summary>

52architecture:

53 407 

54| Device architecture | Package |408Windows returns `0x80073D28` (`ERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES`)

55| ------------------- | ---------------------------------------------------------------------------------------- |409when it can't install a packaged service without administrator privileges.

56| x64 | [ChatGPT-x64.msix](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-x64.msix) |410Run the installation as an administrator, or configure your deployment tool to

57| Arm64 | [ChatGPT-arm64.msix](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-arm64.msix) |411install in device or System context.

58 412 

59These stable links point to the latest published Store-signed package for each413For an existing SCCM deployment:

60architecture. For offline deployment workflows that require a license file,

61also download the

62[offline license (`ChatGPT-License.xml`)](https://persistent.oaistatic.com/codex-app-prod/ChatGPT-License.xml).

63Ingest the appropriate MSIX and, when required, the license file into your MDM

64or software-deployment platform.

65 414 

66After the initial installation, devices that can reach4151. Open the application's **Properties** > **Deployment Types**.

67`persistent.oaistatic.com` can install updates automatically unless managed4162. Edit the **Windows app package** deployment type and open **User Experience**.

68configuration disables the app's built-in updater. If you disable in-app4173. Enable **Provision this application for all users on the device** and save.

69updates, deploy newer packages through your MDM or software-deployment tool.4184. Refresh the client's machine policy, then retry the installation in Software

419 Center.

70 420 

71This deployment path:421For more information about the provisioning setting, see Microsoft's [application deployment settings](https://learn.microsoft.com/en-us/intune/configmgr/apps/deploy-use/create-applications#automatically-detect-application-information).

72 422 

73- Supports initial installation in restricted environments.423</details>

74- Supports x64 and Arm64 devices.

75- Doesn't provide a standalone MSI or non-Store EXE.

76 424 

77## Related resources425## Related resources

78 426 

79- [Manage app updates](https://learn.chatgpt.com/docs/enterprise/manage-app-updates)427- [Managed configuration](https://learn.chatgpt.com/docs/enterprise/managed-configuration)

80- [ChatGPT desktop app for Windows](https://learn.chatgpt.com/docs/windows/windows-app)428- [ChatGPT desktop app for Windows](https://learn.chatgpt.com/docs/windows/windows-app)

enterprise/workload-identity.md +0 −340 deleted

File Deleted View Diff

1# Workload identity federation

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.

4 

5Workload identity federation lets trusted automation use Codex without storing

6a personal access token or another long-lived OpenAI credential. Your workload

7presents a short-lived identity token from a provider you already operate.

8OpenAI verifies that token and returns a short-lived access token for a user or

9service account in your managed ChatGPT workspace.

10 

11Use workload identity for unattended Codex processes in cloud platforms,

12Kubernetes, CI systems, and other environments that can issue OIDC tokens or

13SPIFFE JWT-SVIDs. For the shared trust model and the separate OpenAI API flow,

14see the [workload identity overview](https://developers.openai.com/api/docs/guides/workload-identity-federation).

15 

16Codex workload identity federation is in beta and must be enabled for your

17 workspace. To request access, contact your OpenAI representative or [OpenAI

18 Support](https://help.openai.com/en/articles/6614161-how-can-i-contact-support).

19 

20## Before you begin

21 

22You need:

23 

24- Permission to manage workload identity in the OpenAI Admin Portal.

25- A managed ChatGPT workspace.

26- A ChatGPT user or service account that is an active member of that workspace,

27 or permission to create one during setup.

28- An OIDC token or SPIFFE JWT-SVID whose issuer, audience, and identifying

29 claims you know.

30- A runtime that can keep that token current in a protected file at an absolute

31 path.

32- Codex 0.148.0 or later.

33- An effective Codex authentication policy that permits ChatGPT authentication

34 and the workspace selected by the federation rule. See [Enforce a login

35 method or workspace](https://learn.chatgpt.com/docs/auth#enforce-a-login-method-or-workspace).

36 

37OpenAI does not create a principal or workspace membership during token

38exchange. An administrator selects or creates the principal before the workload

39connects. Creating a human user consumes a workspace seat and follows the

40membership rules for that workspace.

41 

42On native Windows, use the **elevated**

43[Windows sandbox](https://learn.chatgpt.com/docs/windows/windows-sandbox). Other Windows sandbox modes

44cannot protect the identity-token file from model-controlled commands.

45 

46## Get an identity token

47 

48Your workload runtime gets and refreshes the upstream identity token. Codex does

49not call cloud metadata services or identity-provider client libraries on your

50behalf.

51 

52| Runtime | Recommended token-file source |

53| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |

54| Kubernetes, AKS, EKS, or GKE | Mount a projected service-account token and point Codex at that file. The platform rotates it. |

55| Microsoft Entra managed identity | Run a trusted host process or sidecar that requests a token from Azure IMDS and replaces the file before expiry. |

56| AWS outbound identity federation | Run a trusted host process that calls regional STS `GetWebIdentityToken` and replaces the file before expiry. |

57| Google Cloud | Run a trusted host process that requests an identity token from the metadata server and replaces the file before expiry. |

58| Oracle Cloud Infrastructure | Run a trusted host process that uses an instance principal to request an IDCS access token and replaces the file before expiry. |

59| GitHub Actions | Request the job's OIDC token, write it to a protected file, and request a new token before a later exchange. |

60| SPIFFE | Use the SPIFFE Workload API or an approved helper to write a current JWT-SVID to the file. |

61| Custom OIDC provider | Use the issuer's workload flow to get a JWT, then refresh the protected file before the JWT expires. |

62 

63Follow the guide for your provider to configure token issuance and inspect a

64sample token:

65 

66- [Microsoft Azure](https://developers.openai.com/api/docs/guides/workload-identity-federation/microsoft-azure)

67- [AWS](https://developers.openai.com/api/docs/guides/workload-identity-federation/aws)

68- [Google Cloud](https://developers.openai.com/api/docs/guides/workload-identity-federation/google-cloud)

69- [Oracle Cloud Infrastructure](https://developers.openai.com/api/docs/guides/workload-identity-federation/oracle-cloud)

70- [GitHub Actions](https://developers.openai.com/api/docs/guides/workload-identity-federation/github-actions)

71- [Kubernetes](https://developers.openai.com/api/docs/guides/workload-identity-federation/kubernetes)

72- [SPIFFE](https://developers.openai.com/api/docs/guides/workload-identity-federation/spiffe)

73 

74Decode a sample token locally and record its `iss`, `aud`, `sub`, and any other

75claims you plan to trust. Decoding does not verify the signature. Do not paste a

76production token into a website or write it to logs.

77 

78## Connect the workload

79 

80An administrator creates the provider and federation rule before starting

81Codex.

82 

831. Open [Workload identity](https://admin.openai.com/workload-identity) in the

84 OpenAI Admin Portal, then select **Connect workload**.

852. Reuse a provider configured for Codex, or create one. Provider presets fill

86 in common settings for GitHub Actions, Microsoft Entra ID, Google Cloud,

87 AWS, Kubernetes, SPIFFE, and custom OIDC providers.

883. Select **Codex** and the managed workspace the workload may use.

894. Add the narrowest conditions that identify the workload. Match a subject,

90 exact claims, a CEL condition, or a combination. Add accepted audiences to

91 restrict which tokens the rule accepts. Every configured matcher must pass.

925. Map the rule to one existing ChatGPT user or service account, or create one

93 during setup.

946. Review the provider, conditions, workspace, principal, scopes, and access

95 token lifetime. Select **Connect workload**, then **Download config**.

96 

97The downloaded file contains a non-secret federation rule ID and the path where

98Codex will read the identity token. It does not contain a credential.

99 

100To automate setup, use the [workload identity Admin

101API](https://developers.openai.com/api/docs/guides/workload-identity-federation/admin-api). For matcher

102behavior and examples, see [Federation rule

103reference](https://developers.openai.com/api/docs/guides/workload-identity-federation/federation-rules).

104 

105## Configure the Codex process

106 

107The process that starts Codex requires these two workload identity variables:

108 

109```bash

110export OPENAI_FEDERATION_RULE_ID="idpm_..."

111export OPENAI_IDENTITY_TOKEN_FILE="/var/run/secrets/openai.com/identity-token"

112```

113 

114`OPENAI_FEDERATION_RULE_ID` is not a secret. The token file is. Use an absolute

115path in a dedicated directory, such as `/var/run/secrets/openai.com`, owned by

116the workload account with mode `0700`. Only trusted host processes should write

117there. Keep the directory outside repositories and other paths available to

118Codex tools. Keep credentials out of logs, shell history, and build artifacts.

119 

120### Add audit attribution

121 

122When runtime instances share a federation rule, you can identify each instance

123in token-issuance audit events. Set the optional

124`OPENAI_WORKLOAD_IDENTITY_CONTEXT` variable to a JSON object encoded as a

125string:

126 

127```bash

128export OPENAI_WORKLOAD_IDENTITY_CONTEXT='{

129 "instance_id": "runner-42",

130 "display_name": "payments-prod",

131 "labels": {

132 "environment": "production",

133 "region": "us-west-2"

134 }

135}'

136```

137 

138The object requires `instance_id`. It can also contain `display_name` and up to

139eight labels. The encoded object can be up to 1,024 bytes. `instance_id` and

140`display_name` can be up to 128 characters. Label keys can be up to 64

141characters, and label values can be up to 256 characters.

142 

143Identifiers must start with an ASCII letter or number. Values can then contain

144letters, numbers, `.`, `_`, `:`, `/`, `@`, and `-`. Label keys support letters,

145numbers, `.`, `_`, and `-`.

146 

147OpenAI treats this context as client-reported audit attribution, not as verified

148workload identity. It does not affect authentication, authorization, rule

149matching, scopes, rate limits, revocation, feature gates, or metrics. Do not put

150credentials, secrets, personal data, prompts, model output, or other Customer

151Content in it.

152 

153For valid context, OpenAI derives a stable attribution ID scoped to the tenant,

154provider, federation rule, and `instance_id`. For attribution, the access token

155contains the ID but not the context. The successful token-issuance audit event

156contains the ID and the normalized context. Context that exceeds a limit or

157violates this schema makes the exchange fail with `invalid_grant`.

158 

159Codex reads the context when the process starts and does not pass it, the rule

160ID, or the token-file path to model-controlled shells, hooks, or MCP servers.

161Restart Codex after changing the context.

162 

163### Protect and rotate the token file

164 

165For managed Linux, macOS, and WSL deployments, add the entire token directory to

166[`permissions.filesystem.deny_read`](https://learn.chatgpt.com/docs/enterprise/managed-configuration#enforce-deny-read-requirements)

167in managed requirements:

168 

169```toml

170[permissions.filesystem]

171deny_read = ["/var/run/secrets/openai.com"]

172```

173 

174This blocks model-controlled commands from reading the active token or a

175temporary replacement while the Codex host process can still use the token for

176exchange. For projected-token volumes, deny the entire token mount and any

177backing or resolved target paths outside it. File modes and environment-variable

178scrubbing alone do not protect credentials from another process running as the

179same user. On native Windows, use the elevated sandbox described above.

180 

181For token sources that do not project a file, have a trusted host process write

182each replacement inside that protected directory and rename it into place. An

183atomic rename prevents Codex from reading a partial token. For example, adapt

184this host-owned refresh script to your provider's token command. Provision the

185directory before running the script:

186 

187```bash

188set -eu

189TOKEN_DIR="/var/run/secrets/openai.com"

190TOKEN_FILE="$TOKEN_DIR/identity-token"

191umask 077

192TOKEN_TEMP="$(mktemp "$TOKEN_DIR/.identity-token.XXXXXX")"

193trap 'rm -f -- "$TOKEN_TEMP"' EXIT

194trap 'exit 1' HUP INT TERM

195your-identity-provider-command > "$TOKEN_TEMP"

196test -s "$TOKEN_TEMP"

197mv -f -- "$TOKEN_TEMP" "$TOKEN_FILE"

198```

199 

200Run the refresh process outside any shell or tool that Codex can control. Keep

201the read denial in place during refresh and cleanup. Even if a forced stop

202leaves a temporary file behind, that file must remain inside the denied

203directory. Do not put workload identity settings in `config.toml`.

204 

205## Verify the connection

206 

207Load the downloaded environment and inspect the selected authentication method:

208 

209```bash

210. ./workload-identity-idpm_example.env

211codex login status

212```

213 

214In PowerShell:

215 

216```powershell

217$env:OPENAI_FEDERATION_RULE_ID = "idpm_..."

218$env:OPENAI_IDENTITY_TOKEN_FILE = "C:\run\openai\identity-token"

219codex login status

220```

221 

222A successful check prints `Logged in using workload identity`. This confirms

223that Codex exchanged a token through the configured federation rule. The command

224does not print the resolved workspace, principal, or rule. Confirm those values

225in the Admin Portal before you start the workload. If Codex reports another

226authentication method, the two required WIF variables did not reach the process.

227 

228If the provider uses **Prevent assertion replay** and the assertion has a `jti`

229claim, this check consumes that `jti`. Write a newly issued assertion with a new

230`jti` before starting another Codex process.

231 

232Run a small request from the same environment:

233 

234```bash

235codex exec "Reply with only: workload identity is working"

236```

237 

238Codex exchanges the upstream token and keeps the OpenAI access token in memory.

239It does not write either credential to `auth.json`, the system keyring, or

240`config.toml`.

241 

242## Keep the token current

243 

244Refresh the identity-token file before the upstream token expires. Codex rereads

245the file when it needs another OpenAI access token. The OpenAI token expires at

246the earlier of the upstream token's expiry or the federation rule's lifetime,

247and never lasts longer than one hour.

248 

249When an administrator turns on replay protection, each upstream JWT must have a

250unique `jti`. Write a newly issued assertion with a new `jti` before each

251exchange, including refreshes in a long-running process. Assertions without

252`jti` do not receive replay protection.

253 

254Codex shares one in-memory exchange session inside each host process. Concurrent

255requests in that process reuse a valid OpenAI access token and share one refresh

256when it expires. Separate processes perform separate exchanges, so they need

257assertions that the provider permits them to use.

258 

259## Credential precedence

260 

261The two required workload identity variables take precedence over every other

262credential source:

263 

2641. If either `OPENAI_FEDERATION_RULE_ID` or

265 `OPENAI_IDENTITY_TOKEN_FILE` is present, Codex selects workload identity.

2662. If only one required variable is present, Codex returns an error. It does not

267 fall back to an API key, access token, or stored login.

2683. `OPENAI_WORKLOAD_IDENTITY_CONTEXT` alone does not select workload identity.

2694. When neither required WIF variable is present, Codex applies the normal

270 credential rules for that surface. For surfaces that allow API key

271 authentication, `CODEX_API_KEY` takes precedence on `codex exec`,

272 `codex review`, the TypeScript SDK, and `codex exec-server --remote`. Other

273 surfaces can use `CODEX_ACCESS_TOKEN` or a stored login.

274 

275An SDK `apiKey` option becomes `CODEX_API_KEY`, but WIF still takes precedence

276when either required WIF variable is present. Omit the option when using WIF so

277the workload does not carry an unused long-lived credential.

278 

279To move an existing workload without downtime, configure WIF while its current

280credential is still available. Start a new process with both required WIF

281variables; WIF takes precedence even if the old credential is still present.

282After the workload succeeds with WIF, remove the old credential from its runtime

283and secrets store, then revoke it. Before revocation, you can roll back by

284removing both required WIF variables and starting a new process.

285 

286## Supported Codex surfaces

287 

288Configure workload identity on the machine that owns the Codex process.

289 

290| Surface | Support and host boundary |

291| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------- |

292| Interactive `codex`, `resume`, and `fork` | Supported. Start the CLI in the configured environment. |

293| `codex exec`, `exec resume`, and `codex review` | Supported. Either required WIF variable makes WIF take precedence. |

294| TypeScript SDK | Supported. The parent process supplies the required WIF variables and any optional attribution context. |

295| `codex app-server` | Supported. Configure WIF on the app-server host, not on a remote client. |

296| `codex exec-server --remote` | Supported for authentication to the remote environment registry. Configure WIF on the exec-server host. |

297| Local exec-server process operations | Do not use WIF authentication. They run through the local exec-server protocol. |

298 

299Remote app-server and exec-server clients never send the upstream identity

300token over their protocols.

301 

302## Change or remove access

303 

304Changes to a rule's subjects, audiences, claims, CEL condition, scopes, or token

305lifetime apply to new exchanges. A token issued before the change can remain

306valid until its lifetime ends.

307 

308Disable a provider or rule to stop access immediately. Disablement blocks new

309exchanges and revokes OpenAI access tokens already issued through that resource.

310Archiving has the same access effect and cannot be undone. Changing provider

311trust also revokes issued tokens before the new trust takes effect.

312 

313## Audit changes

314 

315Provider and federation rule creation, updates, and archival generate audit

316events. Use the [Compliance API and audit event

317guidance](https://learn.chatgpt.com/docs/enterprise/compliance-api) to export the events your workspace

318supports. Correlate them with your identity provider's issuance logs, and do not

319record upstream assertions or OpenAI access tokens in either system.

320 

321When the process supplies `OPENAI_WORKLOAD_IDENTITY_CONTEXT`, successful

322token-issuance audit events also contain the stable attribution ID and

323normalized context described above.

324 

325## Troubleshoot

326 

327| Symptom | Check |

328| --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |

329| Codex reports incomplete workload identity configuration | Set both required variables in the same process and use an absolute token-file path. |

330| Codex reports that its login policy does not permit workload identity | Allow ChatGPT authentication in the effective policy and include the rule's workspace in its permitted workspaces. |

331| Codex reports another credential | Load both required WIF variables into the Codex process, then start a new process and rerun `codex login status`. |

332| OpenAI rejects workload context | Check its JSON shape, size, allowed characters, and field limits. Remove sensitive or Customer Content. |

333| OpenAI rejects the token | Compare `iss`, `aud`, expiry, signature key, and assertion lifetime with the provider configuration. |

334| The rule does not match | Confirm the client uses the intended rule ID and that every subject, audience, exact-claim, and CEL check passes. |

335| OpenAI rejects the principal | Confirm the user or service account is active and is an active member of the selected workspace. |

336| OpenAI rejects a repeated assertion | Get a new JWT with a new `jti`; do not retry the same replay-protected assertion. |

337| A long-running process stops refreshing | Confirm the host refresh process is still replacing the token file before expiry. |

338 

339For provider verification, limits, and CEL details, see the [federation rule

340reference](https://developers.openai.com/api/docs/guides/workload-identity-federation/federation-rules).

Details

62For automation secret handling, see62For automation secret handling, see

63[Use API key auth](https://learn.chatgpt.com/docs/non-interactive-mode#use-api-key-auth).63[Use API key auth](https://learn.chatgpt.com/docs/non-interactive-mode#use-api-key-auth).

64For access token setup, see [Access tokens](https://learn.chatgpt.com/docs/enterprise/access-tokens).64For access token setup, see [Access tokens](https://learn.chatgpt.com/docs/enterprise/access-tokens).

65For workload identity setup, see

66[Workload identity federation](https://learn.chatgpt.com/docs/enterprise/workload-identity).

67 65 

68## Diagnostics66## Diagnostics

69 67 

guides/build-ai-native-engineering-team.md +0 −247 deleted

File Deleted View Diff

1# Building an AI-Native Engineering Team – Codex

2 

3## Introduction

4 

5AI models are rapidly expanding the range of tasks they can perform, with significant implications for engineering. Frontier systems now sustain multi-hour reasoning: as of August 2025, METR found that leading models could complete **2 hours and 17 minutes** of continuous work with roughly **50% confidence** of producing a correct answer.

6 

7This capability is improving quickly, with task length doubling about every seven months. Only a few years ago, models could manage about 30 seconds of reasoning – enough for small code suggestions. Today, as models sustain longer chains of reasoning, the entire software development lifecycle is potentially in scope for AI assistance, enabling coding agents to contribute effectively to planning, design, development, testing, code reviews, and deployment.

8 

9![](/images/codex/guides/build-ai-native-engineering-team.png)In this guide, we’ll share real examples that outline how AI agents are contributing to the software development lifecycle with practical guidance on what engineering leaders can do today to start building AI-native teams and processes.

10 

11## AI Coding: From Autocomplete to Agents

12 

13AI coding tools have progressed far beyond their origins as autocomplete assistants. Early tools handled quick tasks such as suggesting the next line of code or filling in function templates. As models gained stronger reasoning abilities, developers began interacting with agents through chat interfaces in IDEs for pair programming and code exploration.

14 

15Today’s coding agents can generate entire files, scaffold new projects, and translate designs into code. They can reason through multi-step problems such as debugging or refactoring, with agent execution also now shifting from an individual developer’s machine to cloud-based, multi-agent environments. This is changing how developers work, allowing them to spend less time generating code with the agent inside the IDE and more time delegating entire workflows.

16 

17| Capability | What It Enables |

18| --- | --- |

19| **Unified context across systems** | A single model can read code, configuration, and telemetry, providing consistent reasoning across layers that previously required separate tooling. |

20| **Structured tool execution** | Models can now call compilers, test runners, and scanners directly, producing verifiable results rather than static suggestions. |

21| **Persistent project memory** | Long context windows and techniques like compaction allow models to follow a feature from proposal to deployment, remembering previous design choices and constraints. |

22| **Evaluation loops** | Model outputs can be tested automatically against benchmarks—unit tests, latency targets, or style guides—so improvements are grounded in measurable quality. |

23 

24At OpenAI, we have witnessed this firsthand. Development cycles have accelerated, with work that once required weeks now being delivered in days. Teams move more easily across domains, onboard faster to unfamiliar projects, and operate with greater agility and autonomy across the organization. Many routine and time-consuming tasks, from documenting new code and surfacing relevant tests, maintaining dependencies and cleaning up feature flags are now delegated to Codex entirely.

25 

26However, some aspects of engineering remain unchanged. True ownership of code—especially for new or ambiguous problems—still rests with engineers, and certain challenges exceed the capabilities of current models. But with coding agents like Codex, engineers can now spend more time on complex and novel challenges, focusing on design, architecture, and system-level reasoning rather than debugging or rote implementation.

27 

28In the following sections, we break down how each phase of the SDLC changes with coding agents — and outline the concrete steps your team can take to start operating as an AI-native engineering org.

29 

30## 1. Plan

31 

32Teams across an organization often depend on engineers to determine whether a feature is feasible, how long it will take to build, and which systems or teams will be involved. While anyone can draft a specification, forming an accurate plan typically requires deep codebase awareness and multiple rounds of iteration with engineering to uncover requirements, clarify edge cases, and align on what is technically realistic.

33 

34### How coding agents help

35 

36AI coding agents give teams immediate, code-aware insights during planning and scoping. For example, teams may build workflows that connect coding agents to their issue-tracking systems to read a feature specification, cross-reference it against the codebase, and then flag ambiguities, break the work into subcomponents, or estimate difficulty.

37 

38Coding agents can also instantly trace code paths to show which services are involved in a feature — work that previously required hours or days of manual digging through a large codebase.

39 

40### What engineers do instead

41 

42Teams spend more time on core feature work because agents surface the context that previously required meetings for product alignment and scoping. Key implementation details, dependencies, and edge cases are identified up front, enabling faster decisions with fewer meetings.

43 

44| Delegate | Review | Own |

45| --- | --- | --- |

46| AI agents can take the first pass at feasibility and architectural analysis. They read a specification, map it to the codebase, identify dependencies, and surface ambiguities or edge cases that need clarification. | Teams review the agent’s findings to validate accuracy, assess completeness, and ensure estimates reflect real technical constraints. Story point assignment, effort sizing, and identifying non-obvious risks still require human judgment. | Strategic decisions — such as prioritization, long-term direction, sequencing, and tradeoffs — remain human-led. Teams may ask the agent for options or next steps, but final responsibility for planning and product direction stays with the organization. |

47 

48### Getting started checklist

49 

50- Identify common processes that require alignment between features and source code. Common areas include feature scoping and ticket creation.

51- Begin by implementing basic workflows, for example tagging and deduplicating issues or feature requests.

52- Consider more advanced workflows, like adding sub-tasks to a ticket based on an initial feature description. Or kick off an agent run when a ticket reaches a specific stage to supplement the description with more details.

53 

54## 2. Design

55 

56The design phase is often slowed by foundational setup work. Teams spend significant time wiring up boilerplate, integrating design systems, and refining UI components or flows. Misalignment between mockups and implementation can create rework and long feedback cycles, and limited bandwidth to explore alternatives or adapt to changing requirements delays design validation.

57 

58### How coding agents help

59 

60AI coding tools dramatically accelerate prototyping by scaffolding boilerplate code, building project structures, and instantly implementing design tokens or style guides. Engineers can describe desired features or UI layouts in natural language and receive prototype code or component stubs that match the team’s conventions.

61 

62They can convert designs directly into code, suggest accessibility improvements, and even analyze the codebase for user flows or edge cases. This makes it possible to iterate on multiple prototypes in hours instead of days, and to prototype in high fidelity early, giving teams a clearer basis for decision-making and enabling customer testing far sooner in the process.

63 

64### What engineers do instead

65 

66With routine setup and translation tasks handled by agents, teams can redirect their attention to higher-leverage work. Engineers focus on refining core logic, establishing scalable architectural patterns, and ensuring components meet quality and reliability standards. Designers can spend more time evaluating user flows and exploring alternative concepts. The collaborative effort shifts from implementation overhead to improving the underlying product experience.

67 

68| Delegate | Review | Own |

69| --- | --- | --- |

70| Agents handle the initial implementation work by scaffolding projects, generating boilerplate code, translating mockups into components, and applying design tokens or style guides. | The team reviews the agent’s output to ensure components follow design conventions, meet quality and accessibility standards, and integrate correctly with existing systems. | The team owns the overarching design system, UX patterns, architectural decisions, and the final direction of the user experience. |

71 

72### Getting started checklist

73 

74- Use a multi-modal coding agent that accepts both text and image input

75- Integrate design tools via MCP with coding agents

76- Programmatically expose component libraries with MCP, and integrate them with your coding model

77- Build workflows that map designs → components → implementation of components

78- Utilize typed languages (e.g. Typescript) to define valid props and subcomponents for the agent

79 

80## 3. Build

81 

82The build phase is where teams feel the most friction, and where coding agents have the clearest impact. Engineers spend substantial time translating specs into code structures, wiring services together, duplicating patterns across the codebase, and filling in boilerplate, with even small features requiring hours of busy-work.

83 

84As systems grow, this friction compounds. Large monorepos accumulate patterns, conventions, and historical quirks that slow contributors down. Engineers can spend as much time rediscovering the “right way” to do something as implementing the feature itself. Constant context switching between specs, code search, build errors, test failures, and dependency management adds cognitive load — and interruptions during long-running tasks break flow and delay delivery further.

85 

86### How coding agents help

87 

88Coding agents running in the IDE and CLI accelerate the build phase by handling larger, multi-step implementation tasks. Rather than producing just the next function or file, they can produce full features end-to-end — data models, APIs, UI components, tests, and documentation — in a single coordinated run. With sustained reasoning across the entire codebase, they handle decisions that once required engineers to manually trace code paths.

89 

90With long-running tasks, agents can:

91 

92- Draft entire feature implementations based on a written spec.

93- Search and modify code across dozens of files while maintaining consistency.

94- Generate boilerplate that matches conventions: error handling, telemetry, security wrappers, or style patterns.

95- Fix build errors as they appear rather than pausing for human intervention.

96- Write tests alongside implementation as part of a single workflow.

97- Produce diff-ready changesets that follow internal guidelines and include PR messages.

98 

99In practice, this shifts much of the mechanical “build work” from engineers to agents. The agent becomes the first-pass implementer; the engineer becomes the reviewer, editor, and source of direction.

100 

101### What engineers do instead

102 

103When agents can reliably execute multi-step build tasks, engineers shift their attention to higher-order work:

104 

105- Clarifying product behavior, edge cases, and specs before implementation.

106- Reviewing architectural implications of AI-generated code instead of performing rote wiring.

107- Refining business logic and performance-critical paths that require deep domain reasoning.

108- Designing patterns, guardrails, and conventions that guide agent-generated code.

109- Collaborating with PMs and design to iterate on feature intent, not boilerplate.

110 

111Instead of “translating” a feature spec into code, engineers concentrate on correctness, coherence, maintainability, and long-term quality, areas where human context still matters most.

112 

113| Delegate | Review | Own |

114| --- | --- | --- |

115| Agents draft the first implementation pass for well-specified features — scaffolding, CRUD logic, wiring, refactors, and tests. As long-running reasoning improves, this increasingly covers full end-to-end builds rather than isolated snippets. | Engineers assess design choices, performance, security, migration risk, and domain alignment while correcting subtle issues the agent may miss. They shape and refine AI-generated code rather than performing the mechanical work. | Engineers retain ownership of work requiring deep system intuition: new abstractions, cross-cutting architectural changes, ambiguous product requirements, and long-term maintainability trade-offs. As agents take on longer tasks, engineering shifts from line-by-line implementation to iterative oversight. |

116 

117Example:

118 

119Engineers, PMs, designers, and operators at Cloudwalk use Codex daily to turn specs into working code whether they need a script, a new fraud rule, or a full microservice delivered in minutes. It removes the busy work from the build phase and gives every employee the power to implement ideas at remarkable speed.

120 

121### Getting started checklist

122 

123- Start with well specified tasks

124- Have the agent use a planning tool via MCP, or by writing a PLAN.md file that is committed to the codebase

125- Check that the commands the agent attempts to execute are succeeding

126- Iterate on an AGENTS.md file that unlocks agentic loops like running tests and linters to receive feedback

127 

128## 4. Test

129 

130Developers often struggle to ensure adequate test coverage because writing and maintaining comprehensive tests takes time, requires context switching, and deep understanding of edge cases. Teams frequently face trade-offs between moving fast and writing thorough tests. When deadlines loom, test coverage is often the first thing to suffer.

131 

132Even when tests are written, keeping them updated as code evolves introduces ongoing friction. Tests can become brittle, fail for unclear reasons, and can require their own major refactors as the underlying product changes. High quality tests let teams ship faster with more confidence.

133 

134### How coding agents help

135 

136AI coding tools can help developers author better tests in several powerful ways. First, they can suggest test cases based on reading a requirements document and the logic of the feature code. Models can be surprisingly good at suggesting edge cases and failure modes that may be easy for a developer to overlook, especially when they have been deeply focused on the feature and need a second opinion.

137 

138In addition, models can help tests up to date as code evolves, reducing the friction of refactoring and avoiding stale tests that become flaky. By handling the basic implementation details of test writing and surfacing edge cases, coding agents accelerate the process of developing tests.

139 

140### What engineers do instead

141 

142Writing tests with AI tools doesn’t remove the need for developers to think about testing. In fact, as agents remove barriers to generating code, tests serve a more and more important function as a source of truth for application functionality. Since agents can run the test suite and iterate based on the output, defining high quality tests is often the first step to allowing an agent to build a feature.

143 

144Instead, developers focus more on seeing the high level patterns in test coverage, building on and challenging the model’s identification of test cases. Making test writing faster allows developers to ship features more quickly and also take on more ambitious features.

145 

146| Delegate | Review | Own |

147| --- | --- | --- |

148| Engineers will delegate the initial pass at generating test cases based on feature specifications. They’ll also use the model to take a first pass at generating tests. It can be helpful to have the model generate tests in a separate session from the feature implementation. | Engineers must still thoroughly review model-generated tests to ensure that the model did not take shortcuts or implement stubbed tests. Engineers also ensure that tests are runnable by their agents; that the agent has the appropriate permissions to run, and that the agent has context awareness of the different test suites it can run. | Engineers own aligning test coverage with feature specifications and user experience expectations. Adversarial thinking, creativity in mapping edge cases, and focus on intent of the tests remain critical skills. |

149 

150### Getting started checklist

151 

152- Guide the model to implement tests as a separate step, and validate that new tests fail before moving to feature implementation.

153- Set guidelines for test coverage in your AGENTS.md file

154- Give the agent specific examples of code coverage tools it can call to understand test coverage

155 

156## 5. Review

157 

158On average, developers spend 2–5 hours per week conducting code reviews. Teams often face a choice between investing significant time in a deep review or doing a quick “good enough” pass for changes that seem small. When this prioritization is off, bugs slip into production, causing issues for users and creating substantial rework.

159 

160### How coding agents help

161 

162Coding agents allow the code review process to scale so every PR receives a consistent baseline of attention. Unlike traditional static analysis tools (which rely on pattern matching and rule-based checks) AI reviewers can actually execute parts of the code, interpret runtime behavior, and trace logic across files and services. To be effective, however, models must be trained specifically to identify P0 and P1-level bugs, and tuned to provide concise, high-signal feedback; overly verbose responses are ignored just as easily as noisy lint warnings.

163 

164### What engineers do instead

165 

166At OpenAI, we find that AI code review gives engineers more confidence that they are not shipping major bugs into production. Frequently, code review will catch issues that the contributor can correct before pulling in another engineer. Code review doesn’t necessarily make the pull request process faster, especially if it finds meaningful bugs – but it does prevent defects and outages.

167 

168### Delegate vs review vs own

169 

170Even with AI code review, engineers are still responsible for ensuring that the code is ready to ship. Practically, this means reading and understanding the implications of the change. Engineers delegate the initial code review to an agent, but own the final review and merge process.

171 

172| Delegate | Review | Own |

173| --- | --- | --- |

174| Engineers delegate the initial coding review to agents. This may happen multiple times before the pull request is marked as ready for review by a teammate. | Engineers still review pull requests, but with more of an emphasis on architectural alignment; are composable patterns being implemented, are the correct conventions being used, does the functionality match requirements. | Engineers ultimately own the code that is deployed to production; they must ensure it functions reliably and fulfills the intended requirements. |

175 

176Example:

177 

178Sansan uses Codex review for race conditions and database relations, which are issues humans often overlook. Codex has also been able to catch improper hard-coding and even anticipates future scalability concerns.

179 

180### Getting started checklist

181 

182- Curate examples of gold-standard PRs that have been conducted by engineers including both the code changes and comments left. Save this as an evaluation set to measure different tools.

183- Select a product that has a model specifically trained on code review. We’ve found that generalized models often nitpick and provide a low signal to noise ratio.

184- Define how your team will measure whether reviews are high quality. We recommend tracking PR comment reactions as a low-friction way to mark good and bad reviews.

185- Start small but rollout quickly once you gain confidence in the results of reviews.

186 

187## 6. Document

188 

189Most engineering teams know their documentation is behind, but find catching up costly. Critical knowledge is often held by individuals rather than captured in searchable knowledge bases, and existing docs quickly go stale because updating them pulls engineers away from product work. And even when teams run documentation sprints, the result is usually a one-off effort that decays as soon as the system evolves.

190 

191### How coding agents help

192 

193Coding agents are highly capable of summarizing functionality based on reading codebases. Not only can they write about how parts of the codebase work, but they can also generate system diagrams in syntaxes like mermaid. As developers build features with agents, they can also update documentation simply by prompting the model. With AGENTS.md, instructions to update documentation as needed can be automatically included with every prompt for more consistency.

194 

195Since coding agents can be run programmatically through SDKs, they can also be incorporated into release workflows. For example, we can ask a coding agent to review commits being included in the release and summarize key changes. The result is that documentation becomes a built-in part of the delivery pipeline: faster to produce, easier to keep current, and no longer dependent on someone “finding the time.”

196 

197### What engineers do instead

198 

199Engineers move from writing every doc by hand to shaping and supervising the system. They decide how docs are organized, add the important “why” behind decisions, set clear standards and templates for agents to follow, and review the critical or customer-facing pieces. Their job becomes making sure documentation is structured, accurate, and wired into the delivery process rather than doing all the typing themselves.

200 

201| Delegate | Review | Own |

202| --- | --- | --- |

203| Fully hand off low-risk, repetitive work to Codex like first-pass summaries of files and modules, basic descriptions of inputs and outputs, dependency lists, and short summaries of pull-request changes. | Engineers review and edit important docs drafted by Codex like overviews of core services, public API and SDK docs, runbooks, and architecture pages, before anything is published. | Engineers remain responsible for overall documentation strategy and structure, standards and templates the agent follows, and all external-facing or safety-critical documentation involving legal, regulatory, or brand risk. |

204 

205### Getting started checklist

206 

207- Experiment with documentation generation by prompting the coding agent

208- Incorporate documentation guidelines into your AGENTS.md

209- Identify workflows (e.g. release cycles) where documentation can be automatically generated

210- Review generated content for quality, correctness, and focus

211 

212## 7. Deploy and Maintain

213 

214Understanding application logging is critical to software reliability. During an incident, software engineers will reference logging tools, code deploys, and infrastructure changes to identify a root cause. This process is often surprisingly manual and requires developers to tab back and forth between different systems, costing critical minutes in high pressure situations like incidents.

215 

216### How coding agents help

217 

218With AI coding tools, you can provide access to your logging tools via MCP servers in addition to the context of your codebase. This allows developers to have a single workflow where they can prompt the model to look at errors for a specific endpoint, and then the model can use that context to traverse the codebase and find relevant bugs or performance issues. Since coding agents can also use command line tools, they can look at the git history to identify specific changes that might result in issues captured in log traces.

219 

220### What engineers do instead

221 

222By automating the tedious aspects of log analysis and incident triage, AI enables engineers to concentrate on higher-level troubleshooting and system improvement. Rather than manually correlating logs, commits, and infrastructure changes, engineers can focus on validating AI-generated root causes, designing resilient fixes, and developing preventative measures.This shift reduces time spent on reactive firefighting, allowing teams to invest more energy in proactive reliability engineering and architectural improvements.

223 

224| Delegate | Review | Own |

225| --- | --- | --- |

226| Many operational tasks can be delegated to agents — parsing logs, surfacing anomalous metrics, identifying suspect code changes, and even proposing hotfixes. | Engineers vet and refine AI-generated diagnostics, confirm accuracy, and approve remediation steps. They ensure fixes meet reliability, security, and compliance standards. | Critical decisions stay with engineers, especially for novel incidents, sensitive production changes, or situations where model confidence is low. Humans remain responsible for judgment and final sign-off. |

227 

228Example:

229 

230Virgin Atlantic uses Codex to strengthen how teams deploy and maintain their systems. The Codex VS Code Extension gives engineers a single place to investigate logs, trace issues across code and data, and review changes through Azure DevOps MCP and Databricks Managed MCPs. By unifying this operational context inside the IDE, Codex speeds up root cause discovery, reduces manual triage, and helps teams focus on validating fixes and improving system reliability.

231 

232### Getting started checklist

233 

234- Connect AI tools to logging and deployment systems: Integrate Codex CLI or similar with your MCP servers and log aggregators.

235- Define access scopes and permissions: Ensure agents can access relevant logs, code repositories, and deployment histories, while maintaining security best practices.

236- Configure prompt templates: Create reusable prompts for common operational queries, such as “Investigate errors for endpoint X” or “Analyze log spikes post-deploy.”

237- Test the workflow: Run simulated incident scenarios to ensure the AI surfaces correct context, traces code accurately, and proposes actionable diagnostics.

238- Iterate and improve: Collect feedback from real incidents, tune prompt strategies, and expand agent capabilities as your systems and processes evolve.

239 

240## Conclusion

241 

242Coding agents are transforming the software development lifecycle by taking on the mechanical, multi-step work that has traditionally slowed engineering teams down. With sustained reasoning, unified codebase context, and the ability to execute real tools, these agents now handle tasks ranging from scoping and prototyping to implementation, testing, review, and even operational triage. Engineers stay firmly in control of architecture, product intent, and quality — but coding agents increasingly serve as the first-pass implementer and continuous collaborator across every phase of the SDLC.

243 

244This shift doesn’t require a radical overhaul; small, targeted workflows compound quickly as coding agents become more capable and reliable. Teams that start with well-scoped tasks, invest in guardrails, and iteratively expand agent responsibility see meaningful gains in speed, consistency, and developer focus.

245 

246If you’re exploring how coding agents can accelerate your organization or preparing for your first deployment, reach out to OpenAI. We’re here to help you turn coding agents into real leverage—designing end-to-end workflows across planning, design, build, test, review, and operations, and helping your team adopt production-ready patterns that make AI-native engineering a reality.

247 

ide/commands.md +0 −455 deleted

File Deleted View Diff

1# Commands

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.

4 

5Use these commands and keyboard shortcuts to navigate the app.

6 

7## Keyboard shortcuts

8 

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

10 

11### macOS

12 

13 

14 

15| General | Shortcut |

16| --- | --- |

17| Open command menu | **⌘+⇧+P** or **⌘+K** |

18| Open settings | **⌘+,** |

19| Open keyboard shortcuts | **⌘+/** |

20| Open folder (Codex and Work only) | **⌘+O** |

21| Navigate back | **⌘+[** or **Mouse Back** |

22| Navigate forward | **⌘+]** or **Mouse Forward** |

23| Increase font size | **⌘++** or **⌘+Numpad +** |

24| Decrease font size | **⌘+-** or **⌘+Numpad −** |

25| Reset font size | **⌘+0** or **⌘+Numpad 0** |

26| Toggle sidebar | **⌘+B** |

27| Toggle bottom panel (Codex only) | **⌘+J** |

28| Toggle terminal (Codex only) | **⌃+`** |

29| Clear terminal (When the terminal is focused) | **⌃+L** or **⌘+K** |

30| Clear all unread indicators (Codex only) | **⇧+Esc** |

31| Undo last app action | **⌘+Z** |

32| Redo last app action | **⌘+⇧+Z** |

33| Close current tab or window | **⌘+W** |

34| Toggle full screen | **⌘+⌃+F** |

35| Quit the app | **⌘+Q** |

36 

37| Chats | Shortcut |

38| --- | --- |

39| New chat | **⌘+N** or **⌘+⇧+O** |

40| New standalone chat (Codex only) | **⌘+⌥+O** |

41| Quick chat (ChatGPT only) | **⌘+⌥+N** |

42| New temporary chat (ChatGPT only) | **⌘+⇧+N** |

43| Archive chat | **⌘+⇧+A** |

44| Mark chat as unread | **⌘+⇧+U** |

45| Pin or unpin chat | **⌘+⌥+P** |

46| Rename chat | **⌘+⌥+R** |

47| Open side chat (Codex only) | **⌘+⌥+S** |

48| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

49| Find in chat | **⌘+F** |

50| Find next match | **⌘+G** |

51| Find previous match | **⌘+⇧+G** |

52| Previous chat or tab | **⌃+⇧+Tab** or **⌘+⇧+[** or **⌘+⌥+←** |

53| Next chat or tab | **⌃+Tab** or **⌘+⇧+]** or **⌘+⌥+→** |

54| Next chat needing attention (Codex only) | **⌘+⌥+A** |

55| Open recent chat 1–6 | **⌘+⌥+1–6** |

56| Go to chat 1–9 | **⌘+1–9** |

57 

58| Input and modes | Shortcut |

59| --- | --- |

60| Open model picker | **⌃+⇧+M** |

61| Open project picker | **⌘+⌥+⇧+O** |

62| Start voice chat (When voice chat is available) | **⌃+⇧+V** |

63| Start dictation (When dictation is available) | **⌃+⇧+D** |

64| Restore previous composer prompt (When the composer is empty) | **↑** |

65| Approve request (When an approval request is open) | **⏎** |

66| Decline request (When an approval request is open) | **Esc** |

67| Switch to Chat, Work, or Codex (In the order shown) | **⌃+1** or **⌃+2** or **⌃+3** |

68| Toggle Activity view (When Activity is available) | **⌘+⌥+U** |

69 

70| Workspace and browser | Shortcut |

71| --- | --- |

72| Run environment action 1 (When the environment defines a primary action) | **⌘+⇧+D** |

73| Search files (Codex only) | **⌘+P** |

74| Toggle file tree (Codex only) | **⌘+⇧+E** |

75| Open review tab (Codex only) | **⌃+⇧+G** |

76| Toggle review panel (Codex only) | **⌘+⌥+B** |

77| Open browser tab (When the built-in browser is available) | **⌘+T** |

78| Toggle browser panel (When the built-in browser is available) | **⌘+⇧+B** |

79| Go to line or focus browser address bar (Depends on the focused view) | **⌘+L** |

80| Browser back (When the built-in browser is focused) | **⌘+←** |

81| Browser forward (When the built-in browser is focused) | **⌘+→** |

82| Reload browser page (When the built-in browser is focused) | **⌘+R** |

83| Reload browser page without cache (When the built-in browser is focused) | **⌘+⇧+R** |

84| Copy browser URL (When the built-in browser is focused) | **⌘+⇧+C** |

85| Toggle browser browse or comment mode (When browser commenting is available) | **⌘+.** |

86| Copy conversation path (Codex only) | **⌘+⌥+⇧+C** |

87| Copy chat deep link | **⌘+⌥+L** |

88| Copy session ID | **⌘+⌥+C** |

89| Copy working directory (Codex only) | **⌘+⇧+C** |

90| Take an Appshot (press both keys simultaneously) | **⌘+⌘** |

91 

92### Windows

93 

94 

95 

96| General | Shortcut |

97| --- | --- |

98| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

99| Open settings | **Ctrl+,** |

100| Open keyboard shortcuts | **Ctrl+/** |

101| Open folder (Codex and Work only) | **Ctrl+O** |

102| Navigate back | **Ctrl+[** or **Mouse Back** |

103| Navigate forward | **Ctrl+]** or **Mouse Forward** |

104| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

105| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

106| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

107| Toggle sidebar | **Ctrl+B** |

108| Toggle bottom panel (Codex only) | **Ctrl+J** |

109| Toggle terminal (Codex only) | **Ctrl+`** |

110| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

111| Clear all unread indicators (Codex only) | **Shift+Esc** |

112| Undo last app action | **Ctrl+Z** |

113| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

114| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

115| Toggle full screen | **F11** |

116| Quit the app | **Ctrl+Q** |

117 

118| Chats | Shortcut |

119| --- | --- |

120| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

121| New standalone chat (Codex only) | **Ctrl+Alt+O** |

122| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

123| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

124| Archive chat | **Ctrl+Shift+A** |

125| Mark chat as unread | **Ctrl+Shift+U** |

126| Pin or unpin chat | **Ctrl+Alt+P** |

127| Rename chat | **Ctrl+Alt+R** |

128| Open side chat (Codex only) | **Ctrl+Alt+S** |

129| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

130| Find in chat | **Ctrl+F** |

131| Find next match | **Ctrl+G** |

132| Find previous match | **Shift+F3** |

133| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

134| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

135| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

136| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

137| Go to chat 1–9 | **Ctrl+1–9** |

138 

139| Input and modes | Shortcut |

140| --- | --- |

141| Open model picker | **Ctrl+Shift+M** |

142| Open project picker | **Ctrl+Alt+Shift+O** |

143| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

144| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

145| Restore previous composer prompt (When the composer is empty) | **↑** |

146| Approve request (When an approval request is open) | **⏎** |

147| Decline request (When an approval request is open) | **Esc** |

148| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

149| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

150 

151| Workspace and browser | Shortcut |

152| --- | --- |

153| Run environment action 1 (When the environment defines a primary action) | **Win+Shift+D** |

154| Search files (Codex only) | **Ctrl+P** |

155| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

156| Open review tab (Codex only) | **Ctrl+Shift+G** |

157| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

158| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

159| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

160| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

161| Browser back (When the built-in browser is focused) | **Alt+←** |

162| Browser forward (When the built-in browser is focused) | **Alt+→** |

163| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

164| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

165| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

166| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

167| Copy chat deep link | **Ctrl+Alt+L** |

168| Copy session ID | **Ctrl+Alt+C** |

169| Copy working directory (Codex only) | **Ctrl+Shift+C** |

170 

171### Linux

172 

173 

174 

175| General | Shortcut |

176| --- | --- |

177| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

178| Open settings | **Ctrl+,** |

179| Open keyboard shortcuts | **Ctrl+/** |

180| Open folder (Codex and Work only) | **Ctrl+O** |

181| Navigate back | **Ctrl+[** or **Mouse Back** |

182| Navigate forward | **Ctrl+]** or **Mouse Forward** |

183| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

184| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

185| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

186| Toggle sidebar | **Ctrl+B** |

187| Toggle bottom panel (Codex only) | **Ctrl+J** |

188| Toggle terminal (Codex only) | **Ctrl+`** |

189| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

190| Clear all unread indicators (Codex only) | **Shift+Esc** |

191| Undo last app action | **Ctrl+Z** |

192| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

193| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

194| Toggle full screen | **F11** |

195| Quit the app | **Ctrl+Q** |

196 

197| Chats | Shortcut |

198| --- | --- |

199| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

200| New standalone chat (Codex only) | **Ctrl+Alt+O** |

201| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

202| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

203| Archive chat | **Ctrl+Shift+A** |

204| Mark chat as unread | **Ctrl+Shift+U** |

205| Pin or unpin chat | **Ctrl+Alt+P** |

206| Rename chat | **Ctrl+Alt+R** |

207| Open side chat (Codex only) | **Ctrl+Alt+S** |

208| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

209| Find in chat | **Ctrl+F** |

210| Find next match | **Ctrl+G** |

211| Find previous match | **Shift+F3** |

212| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

213| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

214| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

215| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

216| Go to chat 1–9 | **Ctrl+1–9** |

217 

218| Input and modes | Shortcut |

219| --- | --- |

220| Open model picker | **Ctrl+Shift+M** |

221| Open project picker | **Ctrl+Alt+Shift+O** |

222| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

223| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

224| Restore previous composer prompt (When the composer is empty) | **↑** |

225| Approve request (When an approval request is open) | **⏎** |

226| Decline request (When an approval request is open) | **Esc** |

227| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

228| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

229 

230| Workspace and browser | Shortcut |

231| --- | --- |

232| Run environment action 1 (When the environment defines a primary action) | **Super+Shift+D** |

233| Search files (Codex only) | **Ctrl+P** |

234| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

235| Open review tab (Codex only) | **Ctrl+Shift+G** |

236| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

237| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

238| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

239| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

240| Browser back (When the built-in browser is focused) | **Alt+←** |

241| Browser forward (When the built-in browser is focused) | **Alt+→** |

242| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

243| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

244| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

245| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

246| Copy chat deep link | **Ctrl+Alt+L** |

247| Copy session ID | **Ctrl+Alt+C** |

248| Copy working directory (Codex only) | **Ctrl+Shift+C** |To find, customize, or reset app shortcuts, open **Settings > Keyboard

249Shortcuts**.

250 

251You can search by command name or switch the search field into keystroke mode

252and press the shortcut you want to find. Appshots use a separate global shortcut

253under **Settings > Appshots**.

254 

255On Linux, experimental native Wayland can affect shortcut support. See the

256[Linux desktop app guide](https://learn.chatgpt.com/docs/linux/linux-app#wayland-support).

257 

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

259 

260## Search past chats and find in a chat

261 

262Use **Search chats** to reopen a past chat. Search chats doesn't have a default

263shortcut. You can assign one under **Settings > Keyboard Shortcuts**. When

264expanded matching is available, search can also match chat content and Git

265branch names, so you can search for a phrase from the chat or a branch such as

266`fix/login-redirect`.

267 

268Use **Find in chat** after opening a chat to find text within it. It doesn't

269search across other chats.

270 

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

272 

273## Deep links

274 

275The ChatGPT desktop app keeps the `codex://` URL scheme for compatibility, so

276links can open specific parts of the app directly. Encode query string values

277before adding them to a URL.

278 

279### Supported links

280 

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

282 

283| Deep link | Opens |

284| --------------------------------------------------------------------------- | ------------------------------------------------------- |

285| `codex://threads/new` | A new local chat. |

286| `codex://new?<query>` | A new local chat with at least one query parameter. |

287| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

288| `codex://settings` | Settings. |

289| `codex://settings/connections/<connection-type>` | Computer, device, or SSH connection settings. |

290| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds a host from your SSH config to Codex. |

291| `codex://skills` | Skills. |

292| `codex://automations` | Scheduled with the create flow open. |

293| `codex://plugins/install/<plugin-name>?marketplace=<marketplace-name>` | The install flow for a plugin from a known marketplace. |

294| `codex://plugins/<plugin-id>` | A plugin detail page. |

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

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

297 

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

299 

300### Chats

301 

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

303 

304| Deep link | Opens |

305| ----------------------------- | ------------------------------------------------------------------------------------------------------------ |

306| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

307| `codex://threads/new` | A new local chat. |

308| `codex://threads/new?<query>` | A new local chat with optional query parameters. |

309| `codex://new?<query>` | A new local chat. Include at least one of `prompt`, `path`, or `originUrl`; otherwise the link does nothing. |

310 

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

312 

313| Query parameter | Required | What it does |

314| ---------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |

315| `prompt=<text>` | No | Sets the initial composer text. |

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

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

318 

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

320 

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

322 

323#### Start a chat with a plugin

324 

325To help users start a plugin-backed chat, include a plugin mention in the

326prompt before you encode it:

327 

328```text

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

330```

331 

332Encode the complete prompt as a URI component—for example, with

333`encodeURIComponent` in JavaScript—and pass it to the `prompt` parameter:

334 

335```text

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

337```

338 

339The link opens a new chat with the decoded prompt in the composer. It doesn't

340send the prompt automatically. After the user sends it, Codex can use an

341installed plugin in that chat. If the plugin isn't installed but is available

342to the user, Codex asks the user to install it and connect any required connectors.

343After setup, the user can select **Continue** to resume the same chat. Workspace

344settings can limit which plugins a user can install. For plugin installation

345and permission details, see [Plugins](https://learn.chatgpt.com/docs/plugins).

346 

347### Settings

348 

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

350 

351| Deep link | Opens |

352| ------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |

353| `codex://settings` | Settings. |

354| `codex://settings/browser-use` | Browser settings. |

355| `codex://settings/computer-use/google-chrome` | Google Chrome settings for computer use. |

356| `codex://settings/connections` | Remote connections settings. |

357| `codex://settings/connections/computer` | Settings for controlling this Mac or PC from another device. |

358| `codex://settings/connections/devices` | Settings for controlling other devices. |

359| `codex://settings/connections/ssh` | SSH connection settings. |

360| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds the named host alias as a Codex-managed connection, then opens SSH connection settings. |

361 

362The `name` value must match a host alias in `~/.ssh/config`. The link disables

363automatic connection for the added host. If Codex can't find the named host, it

364opens SSH connection settings and shows an error.

365 

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

367 

368### Skills

369 

370Use these links when you need to open Skills.

371 

372| Deep link | Opens |

373| ---------------- | ------- |

374| `codex://skills` | Skills. |

375 

376### Scheduled

377 

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

379 

380| Deep link | Opens |

381| --------------------- | ------------------------------------ |

382| `codex://automations` | Scheduled with the create flow open. |

383 

384### Plugins

385 

386Plugin 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).

387 

388#### Plugin install

389 

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

391 

392| Deep link | Opens |

393| ---------------------------------------------------------------------- | ----------------------------------------------- |

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

395 

396| Query parameter | Required | What it does |

397| -------------------------------- | -------- | ------------------------------------------------------------------------------- |

398| `marketplace=<marketplace-name>` | Yes | Identifies the marketplace. For an OpenAI-curated plugin, use `openai-curated`. |

399 

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

401 

402#### Plugin detail

403 

404| Deep link | Opens |

405| ----------------------------- | --------------------- |

406| `codex://plugins/<plugin-id>` | A plugin detail page. |

407 

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

409 

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

411 

412| Query parameter | Required | What it does |

413| ------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |

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

415| `source=manage` | No | Preserves the app's plugin-management entry point. It's not admin-only. |

416 

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

418 

419#### Local plugin

420 

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

422 

423| Deep link | Opens |

424| --------------------------------------------------------------------------- | ---------------------------------------------------- |

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

426 

427| Query parameter | Required | What it does |

428| --------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------- |

429| `marketplacePath=<absolute-marketplace-path>` | Yes | Absolute path to the local `marketplace.json`, for example `/Users/alex/.agents/plugins/marketplace.json`. |

430| `mode=share` | No | Opens the share flow for that local plugin. |

431 

432### Pets

433 

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

435 

436| Deep link | Opens |

437| ----------------------------------------------------------------- | --------------------- |

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

439 

440| Query parameter | Required | What it does |

441| ------------------------------ | -------- | ------------------------------------------------------------------------------------------- |

442| `name=<pet-name>` | Yes | Sets the pet name. The value must contain at least one non-whitespace character. |

443| `imageUrl=<https-image-url>` | Yes | Provides an absolute HTTPS URL for the pet image or sprite sheet. |

444| `description=<text>` | No | Adds a description to the install flow. |

445| `spriteVersionNumber=<1-or-2>` | No | Selects the sprite-sheet format. The default is `1`; the only other supported value is `2`. |

446 

447The install link accepts only these query parameters. Invalid names, non-HTTPS

448image URLs, unsupported sprite versions, or extra path segments cause the link

449to do nothing.

450 

451## See also

452 

453- [Features](https://learn.chatgpt.com/docs/features)

454- [Settings](https://learn.chatgpt.com/docs/reference/settings)

455- [Slash commands](https://learn.chatgpt.com/docs/reference/slash-commands)

ide/settings.md +0 −135 deleted

File Deleted View Diff

1# Settings

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.

4 

5Use the settings panel to personalize the app and manage everyday preferences.

6Open [**Settings**](codex://settings) from the app menu or press

7 

8<kbd>Cmd</kbd>+<kbd>,</kbd> on macOS or <kbd>Ctrl</kbd>+<kbd>,</kbd> on Windows.

9 

10## General

11 

12Require <kbd>Cmd</kbd>+<kbd>Enter</kbd> for multiline prompts, or turn on

13**Prevent sleep while running** so local chats can continue while you step away.

14Under **Follow-up behavior**, choose whether a message sent while ChatGPT works

15should steer the current run or wait for the next run.

16 

17## Profile

18 

19Use **Profile** to review activity insights, lifetime tokens, peak tokens,

20streaks, your longest task, and token activity. You can also update your profile

21details, such as your picture, display name, and username, and save a profile

22card with usage highlights. Sharing profile cards is available on consumer

23ChatGPT plans.

24 

25Eligible users can also send Codex invitations from the profile menu. Choose

26**Invite a friend** on an eligible personal plan or **Invite a coworker** in an

27eligible Business workspace. See

28[Invite friends and coworkers](https://learn.chatgpt.com/docs/pricing#invite-friends-and-coworkers) for

29current rewards, limits, and eligibility.

30 

31## Keyboard shortcuts

32 

33Open **Keyboard Shortcuts** to review commands, change bindings, or reset custom

34shortcuts to their defaults. Use the search field to find shortcuts by command

35name, or switch to keystroke search and press a key combination to find the

36command that uses it.

37 

38## Notifications

39 

40Choose when turn completion notifications appear, and whether the app should prompt for

41notification permissions.

42 

43## Appearance

44 

45In **Settings**, you can change the app appearance by choosing a base theme,

46adjusting accent, background, and foreground colors, and changing the UI and

47code fonts. You can also share your custom theme with friends.

48 

49 

50

51 

52> Illustration: ChatGPT desktop app Appearance settings showing theme selection, color controls, and font options

53 

54 

55 

56 

57## Pets

58 

59 

60 

61

62 

63 Pets are optional animated companions for the app. In **Settings > Pets**,

64 choose a built-in or custom pet, then use `/pet`, **Show pet**, or **Hide pet**

65 to control the floating overlay. Choose **Mini** to keep the chat controls

66 visible without a pet.

67 

68 See [Pets](https://learn.chatgpt.com/docs/pets?surface=app) to start chats, use voice, follow

69 activity, or create your own pet.

70 

71

72 

73 

74 <CodexPetsDemo client:load />

75 

76 

77 

78<a id="browser-use"></a>

79 

80## Browser

81 

82Use these settings to install or enable the bundled Browser plugin, set up the

83[browser extension](https://learn.chatgpt.com/docs/chrome-extension), and manage allowed and blocked

84websites. ChatGPT asks before using a website unless you've allowed it. Removing

85a blocked site lets ChatGPT ask again before using it in the browser.

86 

87See [Built-in browser](https://learn.chatgpt.com/docs/browser?surface=app) for browser preview, comment, and

88Computer Use workflows.

89 

90## Computer Use

91 

92Check your Computer Use settings to review desktop-app access and related

93preferences after setup. On macOS, revoke system-level access by updating Screen

94Recording or Accessibility permissions in macOS Privacy & Security settings.

95 

96## Personalization

97 

98Choose **Friendly**, **Pragmatic**, or **None** as your default personality. Use

99**None** to disable personality instructions. You can update this at any time.

100 

101You can also add your own custom instructions. Editing custom instructions updates your

102[personal instructions in `AGENTS.md`](https://learn.chatgpt.com/docs/agent-configuration/agents-md).

103 

104## Suggested prompts

105 

106Use context-aware suggestions to surface follow-ups and tasks you may want to resume when you

107start or return to ChatGPT.

108 

109## Memories

110 

111Enable Memories, where available, to let ChatGPT carry useful context from past

112chats into future work. See [Memories](https://learn.chatgpt.com/docs/customization/memories)

113for setup, storage, and controls for individual chats.

114 

115<a id="archived-tasks"></a>

116 

117## Archived chats

118 

119The **Archived chats** section lists archived chats with dates and project

120context. Use **Unarchive** to restore a chat.

121 

122<a id="keep-an-app-task-near-your-work"></a>

123<a id="keep-an-app-chat-near-your-work"></a>

124<a id="keep-a-task-near-your-work"></a>

125 

126## Keep a chat near your work

127 

128In the ChatGPT desktop app, pop out an active chat into a separate window and place it

129next to your browser, editor, or design preview. Turn on **Always on top** when

130you want the chat to remain visible while you work in another app.

131 

132 

133

134 

135> Illustration: ChatGPT desktop app chat displayed in a floating pop-out window

ide/slash-commands.md +0 −455 deleted

File Deleted View Diff

1# Commands

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.

4 

5Use these commands and keyboard shortcuts to navigate the app.

6 

7## Keyboard shortcuts

8 

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

10 

11### macOS

12 

13 

14 

15| General | Shortcut |

16| --- | --- |

17| Open command menu | **⌘+⇧+P** or **⌘+K** |

18| Open settings | **⌘+,** |

19| Open keyboard shortcuts | **⌘+/** |

20| Open folder (Codex and Work only) | **⌘+O** |

21| Navigate back | **⌘+[** or **Mouse Back** |

22| Navigate forward | **⌘+]** or **Mouse Forward** |

23| Increase font size | **⌘++** or **⌘+Numpad +** |

24| Decrease font size | **⌘+-** or **⌘+Numpad −** |

25| Reset font size | **⌘+0** or **⌘+Numpad 0** |

26| Toggle sidebar | **⌘+B** |

27| Toggle bottom panel (Codex only) | **⌘+J** |

28| Toggle terminal (Codex only) | **⌃+`** |

29| Clear terminal (When the terminal is focused) | **⌃+L** or **⌘+K** |

30| Clear all unread indicators (Codex only) | **⇧+Esc** |

31| Undo last app action | **⌘+Z** |

32| Redo last app action | **⌘+⇧+Z** |

33| Close current tab or window | **⌘+W** |

34| Toggle full screen | **⌘+⌃+F** |

35| Quit the app | **⌘+Q** |

36 

37| Chats | Shortcut |

38| --- | --- |

39| New chat | **⌘+N** or **⌘+⇧+O** |

40| New standalone chat (Codex only) | **⌘+⌥+O** |

41| Quick chat (ChatGPT only) | **⌘+⌥+N** |

42| New temporary chat (ChatGPT only) | **⌘+⇧+N** |

43| Archive chat | **⌘+⇧+A** |

44| Mark chat as unread | **⌘+⇧+U** |

45| Pin or unpin chat | **⌘+⌥+P** |

46| Rename chat | **⌘+⌥+R** |

47| Open side chat (Codex only) | **⌘+⌥+S** |

48| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

49| Find in chat | **⌘+F** |

50| Find next match | **⌘+G** |

51| Find previous match | **⌘+⇧+G** |

52| Previous chat or tab | **⌃+⇧+Tab** or **⌘+⇧+[** or **⌘+⌥+←** |

53| Next chat or tab | **⌃+Tab** or **⌘+⇧+]** or **⌘+⌥+→** |

54| Next chat needing attention (Codex only) | **⌘+⌥+A** |

55| Open recent chat 1–6 | **⌘+⌥+1–6** |

56| Go to chat 1–9 | **⌘+1–9** |

57 

58| Input and modes | Shortcut |

59| --- | --- |

60| Open model picker | **⌃+⇧+M** |

61| Open project picker | **⌘+⌥+⇧+O** |

62| Start voice chat (When voice chat is available) | **⌃+⇧+V** |

63| Start dictation (When dictation is available) | **⌃+⇧+D** |

64| Restore previous composer prompt (When the composer is empty) | **↑** |

65| Approve request (When an approval request is open) | **⏎** |

66| Decline request (When an approval request is open) | **Esc** |

67| Switch to Chat, Work, or Codex (In the order shown) | **⌃+1** or **⌃+2** or **⌃+3** |

68| Toggle Activity view (When Activity is available) | **⌘+⌥+U** |

69 

70| Workspace and browser | Shortcut |

71| --- | --- |

72| Run environment action 1 (When the environment defines a primary action) | **⌘+⇧+D** |

73| Search files (Codex only) | **⌘+P** |

74| Toggle file tree (Codex only) | **⌘+⇧+E** |

75| Open review tab (Codex only) | **⌃+⇧+G** |

76| Toggle review panel (Codex only) | **⌘+⌥+B** |

77| Open browser tab (When the built-in browser is available) | **⌘+T** |

78| Toggle browser panel (When the built-in browser is available) | **⌘+⇧+B** |

79| Go to line or focus browser address bar (Depends on the focused view) | **⌘+L** |

80| Browser back (When the built-in browser is focused) | **⌘+←** |

81| Browser forward (When the built-in browser is focused) | **⌘+→** |

82| Reload browser page (When the built-in browser is focused) | **⌘+R** |

83| Reload browser page without cache (When the built-in browser is focused) | **⌘+⇧+R** |

84| Copy browser URL (When the built-in browser is focused) | **⌘+⇧+C** |

85| Toggle browser browse or comment mode (When browser commenting is available) | **⌘+.** |

86| Copy conversation path (Codex only) | **⌘+⌥+⇧+C** |

87| Copy chat deep link | **⌘+⌥+L** |

88| Copy session ID | **⌘+⌥+C** |

89| Copy working directory (Codex only) | **⌘+⇧+C** |

90| Take an Appshot (press both keys simultaneously) | **⌘+⌘** |

91 

92### Windows

93 

94 

95 

96| General | Shortcut |

97| --- | --- |

98| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

99| Open settings | **Ctrl+,** |

100| Open keyboard shortcuts | **Ctrl+/** |

101| Open folder (Codex and Work only) | **Ctrl+O** |

102| Navigate back | **Ctrl+[** or **Mouse Back** |

103| Navigate forward | **Ctrl+]** or **Mouse Forward** |

104| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

105| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

106| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

107| Toggle sidebar | **Ctrl+B** |

108| Toggle bottom panel (Codex only) | **Ctrl+J** |

109| Toggle terminal (Codex only) | **Ctrl+`** |

110| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

111| Clear all unread indicators (Codex only) | **Shift+Esc** |

112| Undo last app action | **Ctrl+Z** |

113| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

114| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

115| Toggle full screen | **F11** |

116| Quit the app | **Ctrl+Q** |

117 

118| Chats | Shortcut |

119| --- | --- |

120| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

121| New standalone chat (Codex only) | **Ctrl+Alt+O** |

122| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

123| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

124| Archive chat | **Ctrl+Shift+A** |

125| Mark chat as unread | **Ctrl+Shift+U** |

126| Pin or unpin chat | **Ctrl+Alt+P** |

127| Rename chat | **Ctrl+Alt+R** |

128| Open side chat (Codex only) | **Ctrl+Alt+S** |

129| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

130| Find in chat | **Ctrl+F** |

131| Find next match | **Ctrl+G** |

132| Find previous match | **Shift+F3** |

133| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

134| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

135| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

136| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

137| Go to chat 1–9 | **Ctrl+1–9** |

138 

139| Input and modes | Shortcut |

140| --- | --- |

141| Open model picker | **Ctrl+Shift+M** |

142| Open project picker | **Ctrl+Alt+Shift+O** |

143| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

144| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

145| Restore previous composer prompt (When the composer is empty) | **↑** |

146| Approve request (When an approval request is open) | **⏎** |

147| Decline request (When an approval request is open) | **Esc** |

148| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

149| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

150 

151| Workspace and browser | Shortcut |

152| --- | --- |

153| Run environment action 1 (When the environment defines a primary action) | **Win+Shift+D** |

154| Search files (Codex only) | **Ctrl+P** |

155| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

156| Open review tab (Codex only) | **Ctrl+Shift+G** |

157| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

158| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

159| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

160| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

161| Browser back (When the built-in browser is focused) | **Alt+←** |

162| Browser forward (When the built-in browser is focused) | **Alt+→** |

163| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

164| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

165| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

166| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

167| Copy chat deep link | **Ctrl+Alt+L** |

168| Copy session ID | **Ctrl+Alt+C** |

169| Copy working directory (Codex only) | **Ctrl+Shift+C** |

170 

171### Linux

172 

173 

174 

175| General | Shortcut |

176| --- | --- |

177| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

178| Open settings | **Ctrl+,** |

179| Open keyboard shortcuts | **Ctrl+/** |

180| Open folder (Codex and Work only) | **Ctrl+O** |

181| Navigate back | **Ctrl+[** or **Mouse Back** |

182| Navigate forward | **Ctrl+]** or **Mouse Forward** |

183| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

184| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

185| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

186| Toggle sidebar | **Ctrl+B** |

187| Toggle bottom panel (Codex only) | **Ctrl+J** |

188| Toggle terminal (Codex only) | **Ctrl+`** |

189| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

190| Clear all unread indicators (Codex only) | **Shift+Esc** |

191| Undo last app action | **Ctrl+Z** |

192| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

193| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

194| Toggle full screen | **F11** |

195| Quit the app | **Ctrl+Q** |

196 

197| Chats | Shortcut |

198| --- | --- |

199| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

200| New standalone chat (Codex only) | **Ctrl+Alt+O** |

201| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

202| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

203| Archive chat | **Ctrl+Shift+A** |

204| Mark chat as unread | **Ctrl+Shift+U** |

205| Pin or unpin chat | **Ctrl+Alt+P** |

206| Rename chat | **Ctrl+Alt+R** |

207| Open side chat (Codex only) | **Ctrl+Alt+S** |

208| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

209| Find in chat | **Ctrl+F** |

210| Find next match | **Ctrl+G** |

211| Find previous match | **Shift+F3** |

212| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

213| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

214| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

215| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

216| Go to chat 1–9 | **Ctrl+1–9** |

217 

218| Input and modes | Shortcut |

219| --- | --- |

220| Open model picker | **Ctrl+Shift+M** |

221| Open project picker | **Ctrl+Alt+Shift+O** |

222| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

223| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

224| Restore previous composer prompt (When the composer is empty) | **↑** |

225| Approve request (When an approval request is open) | **⏎** |

226| Decline request (When an approval request is open) | **Esc** |

227| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

228| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

229 

230| Workspace and browser | Shortcut |

231| --- | --- |

232| Run environment action 1 (When the environment defines a primary action) | **Super+Shift+D** |

233| Search files (Codex only) | **Ctrl+P** |

234| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

235| Open review tab (Codex only) | **Ctrl+Shift+G** |

236| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

237| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

238| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

239| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

240| Browser back (When the built-in browser is focused) | **Alt+←** |

241| Browser forward (When the built-in browser is focused) | **Alt+→** |

242| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

243| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

244| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

245| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

246| Copy chat deep link | **Ctrl+Alt+L** |

247| Copy session ID | **Ctrl+Alt+C** |

248| Copy working directory (Codex only) | **Ctrl+Shift+C** |To find, customize, or reset app shortcuts, open **Settings > Keyboard

249Shortcuts**.

250 

251You can search by command name or switch the search field into keystroke mode

252and press the shortcut you want to find. Appshots use a separate global shortcut

253under **Settings > Appshots**.

254 

255On Linux, experimental native Wayland can affect shortcut support. See the

256[Linux desktop app guide](https://learn.chatgpt.com/docs/linux/linux-app#wayland-support).

257 

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

259 

260## Search past chats and find in a chat

261 

262Use **Search chats** to reopen a past chat. Search chats doesn't have a default

263shortcut. You can assign one under **Settings > Keyboard Shortcuts**. When

264expanded matching is available, search can also match chat content and Git

265branch names, so you can search for a phrase from the chat or a branch such as

266`fix/login-redirect`.

267 

268Use **Find in chat** after opening a chat to find text within it. It doesn't

269search across other chats.

270 

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

272 

273## Deep links

274 

275The ChatGPT desktop app keeps the `codex://` URL scheme for compatibility, so

276links can open specific parts of the app directly. Encode query string values

277before adding them to a URL.

278 

279### Supported links

280 

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

282 

283| Deep link | Opens |

284| --------------------------------------------------------------------------- | ------------------------------------------------------- |

285| `codex://threads/new` | A new local chat. |

286| `codex://new?<query>` | A new local chat with at least one query parameter. |

287| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

288| `codex://settings` | Settings. |

289| `codex://settings/connections/<connection-type>` | Computer, device, or SSH connection settings. |

290| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds a host from your SSH config to Codex. |

291| `codex://skills` | Skills. |

292| `codex://automations` | Scheduled with the create flow open. |

293| `codex://plugins/install/<plugin-name>?marketplace=<marketplace-name>` | The install flow for a plugin from a known marketplace. |

294| `codex://plugins/<plugin-id>` | A plugin detail page. |

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

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

297 

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

299 

300### Chats

301 

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

303 

304| Deep link | Opens |

305| ----------------------------- | ------------------------------------------------------------------------------------------------------------ |

306| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

307| `codex://threads/new` | A new local chat. |

308| `codex://threads/new?<query>` | A new local chat with optional query parameters. |

309| `codex://new?<query>` | A new local chat. Include at least one of `prompt`, `path`, or `originUrl`; otherwise the link does nothing. |

310 

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

312 

313| Query parameter | Required | What it does |

314| ---------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |

315| `prompt=<text>` | No | Sets the initial composer text. |

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

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

318 

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

320 

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

322 

323#### Start a chat with a plugin

324 

325To help users start a plugin-backed chat, include a plugin mention in the

326prompt before you encode it:

327 

328```text

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

330```

331 

332Encode the complete prompt as a URI component—for example, with

333`encodeURIComponent` in JavaScript—and pass it to the `prompt` parameter:

334 

335```text

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

337```

338 

339The link opens a new chat with the decoded prompt in the composer. It doesn't

340send the prompt automatically. After the user sends it, Codex can use an

341installed plugin in that chat. If the plugin isn't installed but is available

342to the user, Codex asks the user to install it and connect any required connectors.

343After setup, the user can select **Continue** to resume the same chat. Workspace

344settings can limit which plugins a user can install. For plugin installation

345and permission details, see [Plugins](https://learn.chatgpt.com/docs/plugins).

346 

347### Settings

348 

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

350 

351| Deep link | Opens |

352| ------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |

353| `codex://settings` | Settings. |

354| `codex://settings/browser-use` | Browser settings. |

355| `codex://settings/computer-use/google-chrome` | Google Chrome settings for computer use. |

356| `codex://settings/connections` | Remote connections settings. |

357| `codex://settings/connections/computer` | Settings for controlling this Mac or PC from another device. |

358| `codex://settings/connections/devices` | Settings for controlling other devices. |

359| `codex://settings/connections/ssh` | SSH connection settings. |

360| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds the named host alias as a Codex-managed connection, then opens SSH connection settings. |

361 

362The `name` value must match a host alias in `~/.ssh/config`. The link disables

363automatic connection for the added host. If Codex can't find the named host, it

364opens SSH connection settings and shows an error.

365 

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

367 

368### Skills

369 

370Use these links when you need to open Skills.

371 

372| Deep link | Opens |

373| ---------------- | ------- |

374| `codex://skills` | Skills. |

375 

376### Scheduled

377 

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

379 

380| Deep link | Opens |

381| --------------------- | ------------------------------------ |

382| `codex://automations` | Scheduled with the create flow open. |

383 

384### Plugins

385 

386Plugin 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).

387 

388#### Plugin install

389 

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

391 

392| Deep link | Opens |

393| ---------------------------------------------------------------------- | ----------------------------------------------- |

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

395 

396| Query parameter | Required | What it does |

397| -------------------------------- | -------- | ------------------------------------------------------------------------------- |

398| `marketplace=<marketplace-name>` | Yes | Identifies the marketplace. For an OpenAI-curated plugin, use `openai-curated`. |

399 

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

401 

402#### Plugin detail

403 

404| Deep link | Opens |

405| ----------------------------- | --------------------- |

406| `codex://plugins/<plugin-id>` | A plugin detail page. |

407 

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

409 

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

411 

412| Query parameter | Required | What it does |

413| ------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |

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

415| `source=manage` | No | Preserves the app's plugin-management entry point. It's not admin-only. |

416 

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

418 

419#### Local plugin

420 

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

422 

423| Deep link | Opens |

424| --------------------------------------------------------------------------- | ---------------------------------------------------- |

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

426 

427| Query parameter | Required | What it does |

428| --------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------- |

429| `marketplacePath=<absolute-marketplace-path>` | Yes | Absolute path to the local `marketplace.json`, for example `/Users/alex/.agents/plugins/marketplace.json`. |

430| `mode=share` | No | Opens the share flow for that local plugin. |

431 

432### Pets

433 

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

435 

436| Deep link | Opens |

437| ----------------------------------------------------------------- | --------------------- |

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

439 

440| Query parameter | Required | What it does |

441| ------------------------------ | -------- | ------------------------------------------------------------------------------------------- |

442| `name=<pet-name>` | Yes | Sets the pet name. The value must contain at least one non-whitespace character. |

443| `imageUrl=<https-image-url>` | Yes | Provides an absolute HTTPS URL for the pet image or sprite sheet. |

444| `description=<text>` | No | Adds a description to the install flow. |

445| `spriteVersionNumber=<1-or-2>` | No | Selects the sprite-sheet format. The default is `1`; the only other supported value is `2`. |

446 

447The install link accepts only these query parameters. Invalid names, non-HTTPS

448image URLs, unsupported sprite versions, or extra path segments cause the link

449to do nothing.

450 

451## See also

452 

453- [Features](https://learn.chatgpt.com/docs/features)

454- [Settings](https://learn.chatgpt.com/docs/reference/settings)

455- [Slash commands](https://learn.chatgpt.com/docs/reference/slash-commands)

learn/best-practices.md +0 −223 deleted

File Deleted View Diff

1# Best practices

2 

3If you’re new to Codex or coding agents in general, this guide will help you get better results faster. It covers the core habits that make Codex more effective across the [CLI](https://developers.openai.com/codex/cli), [IDE extension](https://developers.openai.com/codex/ide), and the [Codex app](https://developers.openai.com/codex/app), from prompting and planning to validation, MCP, skills, and automations.

4 

5Codex works best when you treat it less like a one-off assistant and more like a teammate you configure and improve over time.

6 

7A useful way to think about this: start with the right task context, use `AGENTS.md` for durable guidance, configure Codex to match your workflow, connect external systems with MCP, turn repeated work into skills, and automate stable workflows.

8 

9## Strong first use: Context and prompts

10 

11Codex is already strong enough to be useful even when your prompt isn't perfect. You can often hand it a hard problem with minimal setup and still get a strong result. Clear [prompting](https://developers.openai.com/codex/prompting) isn't required to get value, but it does make results more reliable, especially in larger codebases or higher-stakes tasks.

12 

13If you work in a large or complex repository, the biggest unlock is giving Codex the right task context and a clear structure for what you want done.

14 

15A good default is to include four things in your prompt:

16 

17- **Goal:** What are you trying to change or build?

18- **Context:** Which files, folders, docs, examples, or errors matter for this task? You can @ mention certain files as context.

19- **Constraints:** What standards, architecture, safety requirements, or conventions should Codex follow?

20- **Done when:** What should be true before the task is complete, such as tests passing, behavior changing, or a bug no longer reproducing?

21 

22This helps Codex stay scoped, make fewer assumptions, and produce work that's easier to review.

23 

24Choose a reasoning level based on how hard the task is and test what works best for your workflow. Different users and tasks work best with different settings.

25 

26- Low for faster, well-scoped tasks

27- Medium or High for more complex changes or debugging

28- Extra High for long, agentic, reasoning-heavy tasks

29 

30To provide context faster, try using speech dictation inside the Codex app to

31 dictate what you want Codex to do rather than typing it.

32 

33## Plan first for difficult tasks

34 

35If the task is complex, ambiguous, or hard to describe well, ask Codex to plan before it starts coding.

36 

37A few approaches work well:

38 

39**Use Plan mode:** For most users, this is the easiest and most effective option. Plan mode lets Codex gather context, ask clarifying questions, and build a stronger plan before implementation. Toggle with `/plan` or <kbd>Shift</kbd>+<kbd>Tab</kbd>.

40 

41**Ask Codex to interview you:** If you have a rough idea of what you want but aren't sure how to describe it well, ask Codex to question you first. Tell it to challenge your assumptions and turn the fuzzy idea into something concrete before writing code.

42 

43**Use a PLANS.md template:** For more advanced workflows, you can configure Codex to follow a `PLANS.md` or execution-plan template for longer-running or multi-step work. For more detail, see the [execution plans guide](https://developers.openai.com/cookbook/articles/codex_exec_plans).

44 

45## Make guidance reusable with `AGENTS.md`

46 

47Once a prompting pattern works, the next step is to stop repeating it manually. That's where [AGENTS.md](https://developers.openai.com/codex/guides/agents-md) comes in.

48 

49Think of `AGENTS.md` as an open-format README for agents. It loads into context automatically and is the best place to encode how you and your team want Codex to work in a repository.

50 

51A good `AGENTS.md` covers:

52 

53- repo layout and important directories

54- How to run the project

55- Build, test, and lint commands

56- Engineering conventions and PR expectations

57- Constraints and do-not rules

58- What done means and how to verify work

59 

60The `/init` slash command in the CLI is the quick-start command to scaffold a starter `AGENTS.md` in the current directory. It's a great starting point, but you should edit the result to match how your team actually builds, tests, reviews, and ships code.

61 

62You can create `AGENTS.md` files at different levels: a global `AGENTS.md` for personal defaults that sits in `~/.codex`, a repo-level file for shared standards, and more specific files in subdirectories for local rules. If there’s a more specific file closer to your current directory, that guidance wins.

63 

64Keep it practical. A short, accurate `AGENTS.md` is more useful than a long file full of vague rules. Start with the basics, then add new rules only after you notice repeated mistakes.

65 

66If `AGENTS.md` starts getting too large, keep the main file concise and reference task-specific markdown files for things like planning, code review, or architecture.

67 

68When Codex makes the same mistake twice, ask it for a retrospective and update

69 `AGENTS.md`. Guidance stays practical and based on real friction.

70 

71## Configure Codex for consistency

72 

73Configuration is one of the main ways to make Codex behave more consistently across sessions and surfaces. For example, you can set defaults for model choice, reasoning effort, sandbox mode, approval policy, profiles, and MCP setup.

74 

75A good starting pattern is:

76 

77- Keep personal defaults in `~/.codex/config.toml` (Settings → Configuration → Open config.toml from the Codex app)

78- Keep repo-specific behavior in `.codex/config.toml`

79- Use command-line overrides only for one-off situations (if you use the CLI)

80 

81[`config.toml`](https://developers.openai.com/codex/config-basic) is where you define durable preferences such as MCP servers, multi-agent setup, and feature flags. Profile-specific overrides live in separate `$CODEX_HOME/profile-name.config.toml` files.

82 

83Codex ships with operating level sandboxing and has two key knobs that you can control. Approval mode determines when Codex asks for your permission to run a command and sandbox mode determines if Codex can read or write in the directory and what files the agent can access.

84 

85If you're new to coding agents, start with the default permissions. Keep approval and sandboxing tight by default, then loosen permissions only for trusted repos or specific workflows once the need is clear.

86 

87Note that the CLI, IDE, and Codex app all share the same configuration layers. Learn more on the [sample configuration](https://developers.openai.com/codex/config-sample) page.

88 

89Configure Codex for your real environment early. Many quality issues are

90 really setup issues, like the wrong working directory, missing write access,

91 wrong model defaults, or missing tools and connectors.

92 

93## Improve reliability with testing and review

94 

95Don't stop at asking Codex to make a change. Ask it to create tests when needed, run the relevant checks, confirm the result, and review the work before you accept it.

96 

97Codex can do this loop for you, but only if it knows what “good” looks like. That guidance can come from either the prompt or `AGENTS.md`.

98 

99That can include:

100 

101- Writing or updating tests for the change

102- Running the right test suites

103- Checking lint, formatting, or type checks

104- Confirming the final behavior matches the request

105- Reviewing the diff for bugs, regressions, or risky patterns

106 

107Toggle the diff panel in the Codex app to directly [review

108 changes](https://developers.openai.com/codex/app/review) locally. Click on a specific row to provide

109 feedback that gets fed as context to the next Codex turn.

110 

111A useful option here is the slash command `/review`, which gives you a few ways to review code:

112 

113- Review against a base branch for PR-style review

114- Review uncommitted changes

115- Review a commit

116- Use custom review instructions

117 

118If you and your team have a `code_review.md` file and reference it from `AGENTS.md`, Codex can follow that guidance during review as well. This is a strong pattern for teams that want review behavior to stay consistent across repositories and contributors.

119 

120Codex shouldn't just generate code. With the right instructions, it can also help **test it, check it, and review it**.

121 

122If you use GitHub Cloud, you can set up Codex to run [code reviews for your PRs](https://developers.openai.com/codex/integrations/github). At OpenAI, Codex reviews 100% of PRs. You can enable automatic reviews or have Codex reactively review when you @Codex.

123 

124## Use MCPs for external context

125 

126Use MCPs when the context Codex needs lives outside the repo. It lets Codex connect to the tools and systems you already use, so you don't have to keep copying and pasting live information into prompts.

127 

128[Model Context Protocol](https://developers.openai.com/codex/mcp), or MCP, is an open standard for connecting Codex to external tools and systems.

129 

130Use MCP when:

131 

132- The needed context lives outside the repo

133- The data changes frequently

134- You want Codex to use a tool rather than rely on pasted instructions

135- You need a repeatable integration across users or projects

136 

137Codex supports both STDIO and Streamable HTTP servers with OAuth.

138 

139In the Codex App, head to Settings → MCP servers to see custom and recommended servers. Often, Codex can help you install the needed servers. All you need to do is ask. You can also use the `codex mcp add` command in the CLI to add your custom servers with a name, URL, and other details.

140 

141Add tools only when they unlock a real workflow. Do not start by wiring in

142 every tool you use. Start with one or two tools that clearly remove a manual

143 loop you already do often, then expand from there.

144 

145## Turn repeatable work into skills

146 

147Once a workflow becomes repeatable, stop relying on long prompts or repeated back-and-forth. Use a [Skill](https://developers.openai.com/codex/skills) to package the instructions in a SKILL.md file, context, and supporting logic Codex should apply consistently. Skills work across the CLI, IDE extension, and Codex app.

148 

149Keep each skill scoped to one job. Start with 2 to 3 concrete use cases, define clear inputs and outputs, and write the description so it says what the skill does and when to use it. Include the kinds of trigger phrases a user would actually say.

150 

151Don't try to cover every edge case up front. Start with one representative task, get it working well, then turn that workflow into a skill and improve from there. Include scripts or extra assets only when they improve reliability.

152 

153A good rule of thumb: if you keep reusing the same prompt or correcting the same workflow, it should probably become a skill.

154 

155Skills are especially useful for recurring jobs like:

156 

157- Log triage

158- Release note drafting

159- PR review against a checklist

160- Migration planning

161- Telemetry or incident summaries

162- Standard debugging flows

163 

164The `$skill-creator` skill is the best place to start to scaffold the first version of a skill. Keep the first version local while you iterate. When it's ready to share broadly, package it as a [plugin](https://developers.openai.com/codex/plugins/build). One of the most important parts of a skill is the description. It should say what the skill does and when to use it.

165 

166Personal skills are stored in `$HOME/.agents/skills`, and shared team skills

167 can be checked into `.agents/skills` inside a repository. This is especially

168 helpful for onboarding new teammates.

169 

170## Use automations for repeated work

171 

172Once a workflow is stable, you can schedule Codex to run it in the background for you. In the Codex app, [automations](https://developers.openai.com/codex/app/automations) let you choose the project, prompt, cadence, and execution environment for a recurring task.

173 

174Once a task becomes repetitive for you, you can create an automation in the Automations tab on the Codex app. You can choose which project it runs in, the prompt it runs (you can invoke skills), and the cadence it will run. You can also choose whether the automation runs in a dedicated git worktree or in your local environment. Learn more about [git worktrees](https://developers.openai.com/codex/app/worktrees).

175 

176Good candidates include:

177 

178- Summarizing recent commits

179- Scanning for likely bugs

180- Drafting release notes

181- Checking CI failures

182- Producing standup summaries

183- Running repeatable analysis workflows on a schedule

184 

185A useful rule is that skills define the method, automations define the schedule. If a workflow still needs a lot of steering, turn it into a skill first. Once it's predictable, automation becomes a force multiplier.

186 

187Use automations for reflection and maintenance, not just execution. Review

188 recent sessions, summarize repeated friction, and improve prompts,

189 instructions, or workflow setup over time.

190 

191## Organize long-running work with session controls

192 

193Codex sessions aren't just chat history. They're working threads that accumulate context, decisions, and actions over time, so managing them well has a big impact on quality.

194 

195The Codex app UI makes thread management easiest because you can pin threads and create worktrees. If you are using the CLI, these [slash commands](https://developers.openai.com/codex/cli/slash-commands) are especially useful:

196 

197- `/experimental` to toggle experimental features and add to your `config.toml`

198- `/resume` to resume a saved conversation

199- `/fork` to create a new thread while preserving the original transcript

200- `/compact` when the thread is getting long and you want a summarized version of earlier context. Note that Codex does automatically compact conversations for you

201- `/agent` when you are running parallel agents and want to switch between the active agent thread

202- `/theme` to choose a syntax highlighting theme

203- `/apps` to use ChatGPT apps directly in Codex

204- `/status` to inspect the current session state

205 

206Keep one thread per coherent unit of work. If the work is still part of the same problem, staying in the same thread is often better because it preserves the reasoning trail. Fork only when the work truly branches.

207 

208Use Codex’s [subagent](https://developers.openai.com/codex/concepts/subagents) workflows to offload bounded

209 work from the main thread. Keep the main agent focused on the core problem,

210 and use subagents for tasks like exploration, tests, or triage.

211 

212## Common mistakes

213 

214A few common mistakes to avoid when first using Codex:

215 

216- Overloading the prompt with durable rules instead of moving them into `AGENTS.md` or a skill

217- Not letting the agent see its work by not giving details on how to best run build and test commands

218- Skipping planning on multi-step and complex tasks

219- Giving Codex full permission to your computer before you understand the workflow

220- Running live threads on the same files without using git worktrees

221- Turning a recurring task into an automation before it's reliable manually

222- Treating Codex like something you have to watch step by step instead of using it in parallel with your own work

223- Using one thread per project instead of one thread per task. This leads to bloated context and worse results over time

models.md +2 −40

Details

305 }}305 }}

306/>306/>

307 307 

308<ContentModeSwitch group="codex-surface" ids="app,cli,ide">

309 <ModelDetails

310 client:load

311 name="gpt-5.3-codex-spark"

312 slug="gpt-5.3-codex-spark"

313 imageLabel="5.3 Codex Spark"

314 wallpaperUrl="/images/codex/codex-wallpaper-2.webp"

315 description="Text-only research preview model optimized for near-instant, real-time coding iteration. Available to ChatGPT Pro users."

316 data={{

317 features: [

318 {

319 title: "Capability",

320 value: "",

321 icons: ["openai.SparklesFilled", "openai.SparklesFilled"],

322 },

323 {

324 title: "Speed",

325 value: "",

326 icons: [

327 "openai.Flash",

328 "openai.Flash",

329 "openai.Flash",

330 "openai.Flash",

331 "openai.Flash",

332 ],

333 },

334 { title: "ChatGPT desktop app", value: true },

335 { title: "ChatGPT web", value: false },

336 { title: "Codex CLI", value: true },

337 { title: "Codex IDE extension", value: true },

338 { title: "Codex cloud", value: false },

339 { title: "ChatGPT Credits", value: false },

340 { title: "API Access", value: false },

341 ],

342 }}

343 />

344</ContentModeSwitch>

345 

346 308 

347 309 

348 310 


419- **High** and **Extra High** suit difficult work with multiple steps, sources,381- **High** and **Extra High** suit difficult work with multiple steps, sources,

420 or tradeoffs.382 or tradeoffs.

421 383 

422There is no exact mapping from GPT-5.5 reasoning efforts to GPT-5.6. Try a384GPT-5.5 reasoning efforts don't map exactly to GPT-5.6. Try a familiar task

423familiar task at a lower setting and adjust based on the result.385at a lower setting and adjust based on the result.

424 386 

425### Know when to use Max or Ultra387### Know when to use Max or Ultra

426 388 

Details

130 130 

131`codex exec` reuses saved CLI authentication by default. In CI, it's common to provide credentials explicitly:131`codex exec` reuses saved CLI authentication by default. In CI, it's common to provide credentials explicitly:

132 132 

133If your trusted cloud or CI runtime already receives short-lived workload

134tokens, use

135[workload identity federation](https://learn.chatgpt.com/docs/enterprise/workload-identity)

136instead of storing an OpenAI credential.

137 

138### Use API key auth133### Use API key auth

139 134 

140For GitHub Actions, use the [Codex GitHub Action](https://learn.chatgpt.com/docs/github-action) instead of installing and authenticating the CLI yourself. The action is designed to reduce API key exposure by installing Codex, starting a Responses API proxy, and running Codex with a configurable safety strategy.135For GitHub Actions, use the [Codex GitHub Action](https://learn.chatgpt.com/docs/github-action) instead of installing and authenticating the CLI yourself. The action is designed to reduce API key exposure by installing Codex, starting a Responses API proxy, and running Codex with a configurable safety strategy.

Details

130 130 

131`codex exec` reuses saved CLI authentication by default. In CI, it's common to provide credentials explicitly:131`codex exec` reuses saved CLI authentication by default. In CI, it's common to provide credentials explicitly:

132 132 

133If your trusted cloud or CI runtime already receives short-lived workload

134tokens, use

135[workload identity federation](https://learn.chatgpt.com/docs/enterprise/workload-identity)

136instead of storing an OpenAI credential.

137 

138### Use API key auth133### Use API key auth

139 134 

140For GitHub Actions, use the [Codex GitHub Action](https://learn.chatgpt.com/docs/github-action) instead of installing and authenticating the CLI yourself. The action is designed to reduce API key exposure by installing Codex, starting a Responses API proxy, and running Codex with a configurable safety strategy.135For GitHub Actions, use the [Codex GitHub Action](https://learn.chatgpt.com/docs/github-action) instead of installing and authenticating the CLI yourself. The action is designed to reduce API key exposure by installing Codex, starting a Responses API proxy, and running Codex with a configurable safety strategy.

reference/commands.md +0 −455 deleted

File Deleted View Diff

1# Commands

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.

4 

5Use these commands and keyboard shortcuts to navigate the app.

6 

7## Keyboard shortcuts

8 

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

10 

11### macOS

12 

13 

14 

15| General | Shortcut |

16| --- | --- |

17| Open command menu | **⌘+⇧+P** or **⌘+K** |

18| Open settings | **⌘+,** |

19| Open keyboard shortcuts | **⌘+/** |

20| Open folder (Codex and Work only) | **⌘+O** |

21| Navigate back | **⌘+[** or **Mouse Back** |

22| Navigate forward | **⌘+]** or **Mouse Forward** |

23| Increase font size | **⌘++** or **⌘+Numpad +** |

24| Decrease font size | **⌘+-** or **⌘+Numpad −** |

25| Reset font size | **⌘+0** or **⌘+Numpad 0** |

26| Toggle sidebar | **⌘+B** |

27| Toggle bottom panel (Codex only) | **⌘+J** |

28| Toggle terminal (Codex only) | **⌃+`** |

29| Clear terminal (When the terminal is focused) | **⌃+L** or **⌘+K** |

30| Clear all unread indicators (Codex only) | **⇧+Esc** |

31| Undo last app action | **⌘+Z** |

32| Redo last app action | **⌘+⇧+Z** |

33| Close current tab or window | **⌘+W** |

34| Toggle full screen | **⌘+⌃+F** |

35| Quit the app | **⌘+Q** |

36 

37| Chats | Shortcut |

38| --- | --- |

39| New chat | **⌘+N** or **⌘+⇧+O** |

40| New standalone chat (Codex only) | **⌘+⌥+O** |

41| Quick chat (ChatGPT only) | **⌘+⌥+N** |

42| New temporary chat (ChatGPT only) | **⌘+⇧+N** |

43| Archive chat | **⌘+⇧+A** |

44| Mark chat as unread | **⌘+⇧+U** |

45| Pin or unpin chat | **⌘+⌥+P** |

46| Rename chat | **⌘+⌥+R** |

47| Open side chat (Codex only) | **⌘+⌥+S** |

48| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

49| Find in chat | **⌘+F** |

50| Find next match | **⌘+G** |

51| Find previous match | **⌘+⇧+G** |

52| Previous chat or tab | **⌃+⇧+Tab** or **⌘+⇧+[** or **⌘+⌥+←** |

53| Next chat or tab | **⌃+Tab** or **⌘+⇧+]** or **⌘+⌥+→** |

54| Next chat needing attention (Codex only) | **⌘+⌥+A** |

55| Open recent chat 1–6 | **⌘+⌥+1–6** |

56| Go to chat 1–9 | **⌘+1–9** |

57 

58| Input and modes | Shortcut |

59| --- | --- |

60| Open model picker | **⌃+⇧+M** |

61| Open project picker | **⌘+⌥+⇧+O** |

62| Start voice chat (When voice chat is available) | **⌃+⇧+V** |

63| Start dictation (When dictation is available) | **⌃+⇧+D** |

64| Restore previous composer prompt (When the composer is empty) | **↑** |

65| Approve request (When an approval request is open) | **⏎** |

66| Decline request (When an approval request is open) | **Esc** |

67| Switch to Chat, Work, or Codex (In the order shown) | **⌃+1** or **⌃+2** or **⌃+3** |

68| Toggle Activity view (When Activity is available) | **⌘+⌥+U** |

69 

70| Workspace and browser | Shortcut |

71| --- | --- |

72| Run environment action 1 (When the environment defines a primary action) | **⌘+⇧+D** |

73| Search files (Codex only) | **⌘+P** |

74| Toggle file tree (Codex only) | **⌘+⇧+E** |

75| Open review tab (Codex only) | **⌃+⇧+G** |

76| Toggle review panel (Codex only) | **⌘+⌥+B** |

77| Open browser tab (When the built-in browser is available) | **⌘+T** |

78| Toggle browser panel (When the built-in browser is available) | **⌘+⇧+B** |

79| Go to line or focus browser address bar (Depends on the focused view) | **⌘+L** |

80| Browser back (When the built-in browser is focused) | **⌘+←** |

81| Browser forward (When the built-in browser is focused) | **⌘+→** |

82| Reload browser page (When the built-in browser is focused) | **⌘+R** |

83| Reload browser page without cache (When the built-in browser is focused) | **⌘+⇧+R** |

84| Copy browser URL (When the built-in browser is focused) | **⌘+⇧+C** |

85| Toggle browser browse or comment mode (When browser commenting is available) | **⌘+.** |

86| Copy conversation path (Codex only) | **⌘+⌥+⇧+C** |

87| Copy chat deep link | **⌘+⌥+L** |

88| Copy session ID | **⌘+⌥+C** |

89| Copy working directory (Codex only) | **⌘+⇧+C** |

90| Take an Appshot (press both keys simultaneously) | **⌘+⌘** |

91 

92### Windows

93 

94 

95 

96| General | Shortcut |

97| --- | --- |

98| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

99| Open settings | **Ctrl+,** |

100| Open keyboard shortcuts | **Ctrl+/** |

101| Open folder (Codex and Work only) | **Ctrl+O** |

102| Navigate back | **Ctrl+[** or **Mouse Back** |

103| Navigate forward | **Ctrl+]** or **Mouse Forward** |

104| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

105| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

106| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

107| Toggle sidebar | **Ctrl+B** |

108| Toggle bottom panel (Codex only) | **Ctrl+J** |

109| Toggle terminal (Codex only) | **Ctrl+`** |

110| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

111| Clear all unread indicators (Codex only) | **Shift+Esc** |

112| Undo last app action | **Ctrl+Z** |

113| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

114| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

115| Toggle full screen | **F11** |

116| Quit the app | **Ctrl+Q** |

117 

118| Chats | Shortcut |

119| --- | --- |

120| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

121| New standalone chat (Codex only) | **Ctrl+Alt+O** |

122| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

123| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

124| Archive chat | **Ctrl+Shift+A** |

125| Mark chat as unread | **Ctrl+Shift+U** |

126| Pin or unpin chat | **Ctrl+Alt+P** |

127| Rename chat | **Ctrl+Alt+R** |

128| Open side chat (Codex only) | **Ctrl+Alt+S** |

129| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

130| Find in chat | **Ctrl+F** |

131| Find next match | **Ctrl+G** |

132| Find previous match | **Shift+F3** |

133| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

134| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

135| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

136| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

137| Go to chat 1–9 | **Ctrl+1–9** |

138 

139| Input and modes | Shortcut |

140| --- | --- |

141| Open model picker | **Ctrl+Shift+M** |

142| Open project picker | **Ctrl+Alt+Shift+O** |

143| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

144| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

145| Restore previous composer prompt (When the composer is empty) | **↑** |

146| Approve request (When an approval request is open) | **⏎** |

147| Decline request (When an approval request is open) | **Esc** |

148| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

149| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

150 

151| Workspace and browser | Shortcut |

152| --- | --- |

153| Run environment action 1 (When the environment defines a primary action) | **Win+Shift+D** |

154| Search files (Codex only) | **Ctrl+P** |

155| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

156| Open review tab (Codex only) | **Ctrl+Shift+G** |

157| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

158| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

159| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

160| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

161| Browser back (When the built-in browser is focused) | **Alt+←** |

162| Browser forward (When the built-in browser is focused) | **Alt+→** |

163| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

164| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

165| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

166| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

167| Copy chat deep link | **Ctrl+Alt+L** |

168| Copy session ID | **Ctrl+Alt+C** |

169| Copy working directory (Codex only) | **Ctrl+Shift+C** |

170 

171### Linux

172 

173 

174 

175| General | Shortcut |

176| --- | --- |

177| Open command menu | **Ctrl+Shift+P** or **Ctrl+K** |

178| Open settings | **Ctrl+,** |

179| Open keyboard shortcuts | **Ctrl+/** |

180| Open folder (Codex and Work only) | **Ctrl+O** |

181| Navigate back | **Ctrl+[** or **Mouse Back** |

182| Navigate forward | **Ctrl+]** or **Mouse Forward** |

183| Increase font size | **Ctrl++** or **Ctrl+=** or **Ctrl+Numpad +** |

184| Decrease font size | **Ctrl+-** or **Ctrl+Numpad −** |

185| Reset font size | **Ctrl+0** or **Ctrl+Numpad 0** |

186| Toggle sidebar | **Ctrl+B** |

187| Toggle bottom panel (Codex only) | **Ctrl+J** |

188| Toggle terminal (Codex only) | **Ctrl+`** |

189| Clear terminal (When the terminal is focused) | **Ctrl+L** or **Ctrl+K** |

190| Clear all unread indicators (Codex only) | **Shift+Esc** |

191| Undo last app action | **Ctrl+Z** |

192| Redo last app action | **Ctrl+Y** or **Ctrl+Shift+Z** |

193| Close current tab or window | **Ctrl+W** or **Ctrl+F4** |

194| Toggle full screen | **F11** |

195| Quit the app | **Ctrl+Q** |

196 

197| Chats | Shortcut |

198| --- | --- |

199| New chat | **Ctrl+N** or **Ctrl+Shift+O** |

200| New standalone chat (Codex only) | **Ctrl+Alt+O** |

201| Quick chat (ChatGPT only) | **Ctrl+Alt+N** |

202| New temporary chat (ChatGPT only) | **Ctrl+Shift+N** |

203| Archive chat | **Ctrl+Shift+A** |

204| Mark chat as unread | **Ctrl+Shift+U** |

205| Pin or unpin chat | **Ctrl+Alt+P** |

206| Rename chat | **Ctrl+Alt+R** |

207| Open side chat (Codex only) | **Ctrl+Alt+S** |

208| Search chats (Assign one in Settings > Keyboard Shortcuts) | Not assigned by default |

209| Find in chat | **Ctrl+F** |

210| Find next match | **Ctrl+G** |

211| Find previous match | **Shift+F3** |

212| Previous chat or tab | **Ctrl+Shift+Tab** or **Ctrl+Shift+[** or **Ctrl+Page Up** |

213| Next chat or tab | **Ctrl+Tab** or **Ctrl+Shift+]** or **Ctrl+Page Down** |

214| Next chat needing attention (Codex only) | **Ctrl+Alt+A** |

215| Open recent chat 1–6 | **Ctrl+Alt+1–6** |

216| Go to chat 1–9 | **Ctrl+1–9** |

217 

218| Input and modes | Shortcut |

219| --- | --- |

220| Open model picker | **Ctrl+Shift+M** |

221| Open project picker | **Ctrl+Alt+Shift+O** |

222| Start voice chat (When voice chat is available) | **Ctrl+Shift+V** |

223| Start dictation (When dictation is available) | **Ctrl+Shift+D** |

224| Restore previous composer prompt (When the composer is empty) | **↑** |

225| Approve request (When an approval request is open) | **⏎** |

226| Decline request (When an approval request is open) | **Esc** |

227| Switch to Chat, Work, or Codex (In the order shown) | **Alt+1** or **Alt+2** or **Alt+3** |

228| Toggle Activity view (When Activity is available) | **Ctrl+Alt+U** |

229 

230| Workspace and browser | Shortcut |

231| --- | --- |

232| Run environment action 1 (When the environment defines a primary action) | **Super+Shift+D** |

233| Search files (Codex only) | **Ctrl+P** |

234| Toggle file tree (Codex only) | **Ctrl+Shift+E** |

235| Open review tab (Codex only) | **Ctrl+Shift+G** |

236| Toggle review panel (Codex only) | **Ctrl+Alt+B** |

237| Open browser tab (When the built-in browser is available) | **Ctrl+T** |

238| Toggle browser panel (When the built-in browser is available) | **Ctrl+Shift+B** |

239| Go to line or focus browser address bar (Depends on the focused view) | **Ctrl+L** |

240| Browser back (When the built-in browser is focused) | **Alt+←** |

241| Browser forward (When the built-in browser is focused) | **Alt+→** |

242| Reload browser page (When the built-in browser is focused) | **Ctrl+R** |

243| Reload browser page without cache (When the built-in browser is focused) | **Ctrl+Shift+R** |

244| Copy browser URL (When the built-in browser is focused) | **Ctrl+Shift+C** |

245| Toggle browser browse or comment mode (When browser commenting is available) | **Ctrl+.** |

246| Copy chat deep link | **Ctrl+Alt+L** |

247| Copy session ID | **Ctrl+Alt+C** |

248| Copy working directory (Codex only) | **Ctrl+Shift+C** |To find, customize, or reset app shortcuts, open **Settings > Keyboard

249Shortcuts**.

250 

251You can search by command name or switch the search field into keystroke mode

252and press the shortcut you want to find. Appshots use a separate global shortcut

253under **Settings > Appshots**.

254 

255On Linux, experimental native Wayland can affect shortcut support. See the

256[Linux desktop app guide](https://learn.chatgpt.com/docs/linux/linux-app#wayland-support).

257 

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

259 

260## Search past chats and find in a chat

261 

262Use **Search chats** to reopen a past chat. Search chats doesn't have a default

263shortcut. You can assign one under **Settings > Keyboard Shortcuts**. When

264expanded matching is available, search can also match chat content and Git

265branch names, so you can search for a phrase from the chat or a branch such as

266`fix/login-redirect`.

267 

268Use **Find in chat** after opening a chat to find text within it. It doesn't

269search across other chats.

270 

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

272 

273## Deep links

274 

275The ChatGPT desktop app keeps the `codex://` URL scheme for compatibility, so

276links can open specific parts of the app directly. Encode query string values

277before adding them to a URL.

278 

279### Supported links

280 

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

282 

283| Deep link | Opens |

284| --------------------------------------------------------------------------- | ------------------------------------------------------- |

285| `codex://threads/new` | A new local chat. |

286| `codex://new?<query>` | A new local chat with at least one query parameter. |

287| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

288| `codex://settings` | Settings. |

289| `codex://settings/connections/<connection-type>` | Computer, device, or SSH connection settings. |

290| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds a host from your SSH config to Codex. |

291| `codex://skills` | Skills. |

292| `codex://automations` | Scheduled with the create flow open. |

293| `codex://plugins/install/<plugin-name>?marketplace=<marketplace-name>` | The install flow for a plugin from a known marketplace. |

294| `codex://plugins/<plugin-id>` | A plugin detail page. |

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

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

297 

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

299 

300### Chats

301 

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

303 

304| Deep link | Opens |

305| ----------------------------- | ------------------------------------------------------------------------------------------------------------ |

306| `codex://threads/<thread-id>` | A local chat. `<thread-id>` is its technical thread ID. |

307| `codex://threads/new` | A new local chat. |

308| `codex://threads/new?<query>` | A new local chat with optional query parameters. |

309| `codex://new?<query>` | A new local chat. Include at least one of `prompt`, `path`, or `originUrl`; otherwise the link does nothing. |

310 

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

312 

313| Query parameter | Required | What it does |

314| ---------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |

315| `prompt=<text>` | No | Sets the initial composer text. |

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

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

318 

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

320 

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

322 

323#### Start a chat with a plugin

324 

325To help users start a plugin-backed chat, include a plugin mention in the

326prompt before you encode it:

327 

328```text

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

330```

331 

332Encode the complete prompt as a URI component—for example, with

333`encodeURIComponent` in JavaScript—and pass it to the `prompt` parameter:

334 

335```text

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

337```

338 

339The link opens a new chat with the decoded prompt in the composer. It doesn't

340send the prompt automatically. After the user sends it, Codex can use an

341installed plugin in that chat. If the plugin isn't installed but is available

342to the user, Codex asks the user to install it and connect any required connectors.

343After setup, the user can select **Continue** to resume the same chat. Workspace

344settings can limit which plugins a user can install. For plugin installation

345and permission details, see [Plugins](https://learn.chatgpt.com/docs/plugins).

346 

347### Settings

348 

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

350 

351| Deep link | Opens |

352| ------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |

353| `codex://settings` | Settings. |

354| `codex://settings/browser-use` | Browser settings. |

355| `codex://settings/computer-use/google-chrome` | Google Chrome settings for computer use. |

356| `codex://settings/connections` | Remote connections settings. |

357| `codex://settings/connections/computer` | Settings for controlling this Mac or PC from another device. |

358| `codex://settings/connections/devices` | Settings for controlling other devices. |

359| `codex://settings/connections/ssh` | SSH connection settings. |

360| `codex://settings/connections/ssh/add?name=<ssh-config-host>` | Adds the named host alias as a Codex-managed connection, then opens SSH connection settings. |

361 

362The `name` value must match a host alias in `~/.ssh/config`. The link disables

363automatic connection for the added host. If Codex can't find the named host, it

364opens SSH connection settings and shows an error.

365 

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

367 

368### Skills

369 

370Use these links when you need to open Skills.

371 

372| Deep link | Opens |

373| ---------------- | ------- |

374| `codex://skills` | Skills. |

375 

376### Scheduled

377 

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

379 

380| Deep link | Opens |

381| --------------------- | ------------------------------------ |

382| `codex://automations` | Scheduled with the create flow open. |

383 

384### Plugins

385 

386Plugin 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).

387 

388#### Plugin install

389 

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

391 

392| Deep link | Opens |

393| ---------------------------------------------------------------------- | ----------------------------------------------- |

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

395 

396| Query parameter | Required | What it does |

397| -------------------------------- | -------- | ------------------------------------------------------------------------------- |

398| `marketplace=<marketplace-name>` | Yes | Identifies the marketplace. For an OpenAI-curated plugin, use `openai-curated`. |

399 

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

401 

402#### Plugin detail

403 

404| Deep link | Opens |

405| ----------------------------- | --------------------- |

406| `codex://plugins/<plugin-id>` | A plugin detail page. |

407 

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

409 

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

411 

412| Query parameter | Required | What it does |

413| ------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |

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

415| `source=manage` | No | Preserves the app's plugin-management entry point. It's not admin-only. |

416 

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

418 

419#### Local plugin

420 

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

422 

423| Deep link | Opens |

424| --------------------------------------------------------------------------- | ---------------------------------------------------- |

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

426 

427| Query parameter | Required | What it does |

428| --------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------- |

429| `marketplacePath=<absolute-marketplace-path>` | Yes | Absolute path to the local `marketplace.json`, for example `/Users/alex/.agents/plugins/marketplace.json`. |

430| `mode=share` | No | Opens the share flow for that local plugin. |

431 

432### Pets

433 

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

435 

436| Deep link | Opens |

437| ----------------------------------------------------------------- | --------------------- |

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

439 

440| Query parameter | Required | What it does |

441| ------------------------------ | -------- | ------------------------------------------------------------------------------------------- |

442| `name=<pet-name>` | Yes | Sets the pet name. The value must contain at least one non-whitespace character. |

443| `imageUrl=<https-image-url>` | Yes | Provides an absolute HTTPS URL for the pet image or sprite sheet. |

444| `description=<text>` | No | Adds a description to the install flow. |

445| `spriteVersionNumber=<1-or-2>` | No | Selects the sprite-sheet format. The default is `1`; the only other supported value is `2`. |

446 

447The install link accepts only these query parameters. Invalid names, non-HTTPS

448image URLs, unsupported sprite versions, or extra path segments cause the link

449to do nothing.

450 

451## See also

452 

453- [Features](https://learn.chatgpt.com/docs/features)

454- [Settings](https://learn.chatgpt.com/docs/reference/settings)

455- [Slash commands](https://learn.chatgpt.com/docs/reference/slash-commands)

reference/settings.md +0 −135 deleted

File Deleted View Diff

1# Settings

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.

4 

5Use the settings panel to personalize the app and manage everyday preferences.

6Open [**Settings**](codex://settings) from the app menu or press

7 

8<kbd>Cmd</kbd>+<kbd>,</kbd> on macOS or <kbd>Ctrl</kbd>+<kbd>,</kbd> on Windows.

9 

10## General

11 

12Require <kbd>Cmd</kbd>+<kbd>Enter</kbd> for multiline prompts, or turn on

13**Prevent sleep while running** so local chats can continue while you step away.

14Under **Follow-up behavior**, choose whether a message sent while ChatGPT works

15should steer the current run or wait for the next run.

16 

17## Profile

18 

19Use **Profile** to review activity insights, lifetime tokens, peak tokens,

20streaks, your longest task, and token activity. You can also update your profile

21details, such as your picture, display name, and username, and save a profile

22card with usage highlights. Sharing profile cards is available on consumer

23ChatGPT plans.

24 

25Eligible users can also send Codex invitations from the profile menu. Choose

26**Invite a friend** on an eligible personal plan or **Invite a coworker** in an

27eligible Business workspace. See

28[Invite friends and coworkers](https://learn.chatgpt.com/docs/pricing#invite-friends-and-coworkers) for

29current rewards, limits, and eligibility.

30 

31## Keyboard shortcuts

32 

33Open **Keyboard Shortcuts** to review commands, change bindings, or reset custom

34shortcuts to their defaults. Use the search field to find shortcuts by command

35name, or switch to keystroke search and press a key combination to find the

36command that uses it.

37 

38## Notifications

39 

40Choose when turn completion notifications appear, and whether the app should prompt for

41notification permissions.

42 

43## Appearance

44 

45In **Settings**, you can change the app appearance by choosing a base theme,

46adjusting accent, background, and foreground colors, and changing the UI and

47code fonts. You can also share your custom theme with friends.

48 

49 

50

51 

52> Illustration: ChatGPT desktop app Appearance settings showing theme selection, color controls, and font options

53 

54 

55 

56 

57## Pets

58 

59 

60 

61

62 

63 Pets are optional animated companions for the app. In **Settings > Pets**,

64 choose a built-in or custom pet, then use `/pet`, **Show pet**, or **Hide pet**

65 to control the floating overlay. Choose **Mini** to keep the chat controls

66 visible without a pet.

67 

68 See [Pets](https://learn.chatgpt.com/docs/pets?surface=app) to start chats, use voice, follow

69 activity, or create your own pet.

70 

71

72 

73 

74 <CodexPetsDemo client:load />

75 

76 

77 

78<a id="browser-use"></a>

79 

80## Browser

81 

82Use these settings to install or enable the bundled Browser plugin, set up the

83[browser extension](https://learn.chatgpt.com/docs/chrome-extension), and manage allowed and blocked

84websites. ChatGPT asks before using a website unless you've allowed it. Removing

85a blocked site lets ChatGPT ask again before using it in the browser.

86 

87See [Built-in browser](https://learn.chatgpt.com/docs/browser?surface=app) for browser preview, comment, and

88Computer Use workflows.

89 

90## Computer Use

91 

92Check your Computer Use settings to review desktop-app access and related

93preferences after setup. On macOS, revoke system-level access by updating Screen

94Recording or Accessibility permissions in macOS Privacy & Security settings.

95 

96## Personalization

97 

98Choose **Friendly**, **Pragmatic**, or **None** as your default personality. Use

99**None** to disable personality instructions. You can update this at any time.

100 

101You can also add your own custom instructions. Editing custom instructions updates your

102[personal instructions in `AGENTS.md`](https://learn.chatgpt.com/docs/agent-configuration/agents-md).

103 

104## Suggested prompts

105 

106Use context-aware suggestions to surface follow-ups and tasks you may want to resume when you

107start or return to ChatGPT.

108 

109## Memories

110 

111Enable Memories, where available, to let ChatGPT carry useful context from past

112chats into future work. See [Memories](https://learn.chatgpt.com/docs/customization/memories)

113for setup, storage, and controls for individual chats.

114 

115<a id="archived-tasks"></a>

116 

117## Archived chats

118 

119The **Archived chats** section lists archived chats with dates and project

120context. Use **Unarchive** to restore a chat.

121 

122<a id="keep-an-app-task-near-your-work"></a>

123<a id="keep-an-app-chat-near-your-work"></a>

124<a id="keep-a-task-near-your-work"></a>

125 

126## Keep a chat near your work

127 

128In the ChatGPT desktop app, pop out an active chat into a separate window and place it

129next to your browser, editor, or design preview. Turn on **Always on top** when

130you want the chat to remain visible while you work in another app.

131 

132 

133

134 

135> Illustration: ChatGPT desktop app chat displayed in a floating pop-out window

speed.md +0 −9

Details

36 src="/videos/codex/fast-mode-demo.mp4"36 src="/videos/codex/fast-mode-demo.mp4"

37 class="[&_video]:mx-auto [&_video]:max-h-[400px] [&_video]:max-w-full [&_video]:w-auto"37 class="[&_video]:mx-auto [&_video]:max-h-[400px] [&_video]:max-w-full [&_video]:w-auto"

38/>38/>

39 

40## Codex-Spark

41 

42GPT-5.3-Codex-Spark is a separate fast, less-capable Codex model optimized for

43near-instant, real-time coding iteration. Unlike fast mode, which speeds up a

44supported model at a higher credit rate, Codex-Spark is its own model choice

45and has its own usage limits.

46 

47During research preview Codex-Spark is only available for ChatGPT Pro subscribers.

subagents.md +2 −2

Details

420```toml420```toml

421name = "pr_explorer"421name = "pr_explorer"

422description = "Read-only codebase explorer for gathering evidence before changes are proposed."422description = "Read-only codebase explorer for gathering evidence before changes are proposed."

423model = "gpt-5.3-codex-spark"423model = "gpt-5.6-luna"

424model_reasoning_effort = "medium"424model_reasoning_effort = "medium"

425sandbox_mode = "read-only"425sandbox_mode = "read-only"

426developer_instructions = """426developer_instructions = """


518```toml518```toml

519name = "ui_fixer"519name = "ui_fixer"

520description = "Implementation-focused agent for small, targeted fixes after the issue is understood."520description = "Implementation-focused agent for small, targeted fixes after the issue is understood."

521model = "gpt-5.3-codex-spark"521model = "gpt-5.6-luna"

522model_reasoning_effort = "medium"522model_reasoning_effort = "medium"

523developer_instructions = """523developer_instructions = """

524Own the fix once the issue is reproduced.524Own the fix once the issue is reproduced.

Details

13 13 

14- [Create browser-based games](https://developers.openai.com/codex/use-cases/browser-games): Use Codex to turn a game brief into first a well-defined plan, and then a real browser-based...14- [Create browser-based games](https://developers.openai.com/codex/use-cases/browser-games): Use Codex to turn a game brief into first a well-defined plan, and then a real browser-based...

15 15 

16## Tune UI and controls

17 

18Use Codex to adjust HUD details, menus, controls, and small interaction issues after the game is running.

19 

20- [Make granular UI changes](https://developers.openai.com/codex/use-cases/make-granular-ui-changes): Use Codex to make one small UI adjustment at a time in an existing app, verify it in the...

21 

22## Tackle hard game logic16## Tackle hard game logic

23 17 

24Leverage Codex to iterate on complex game algorithms by running a self-evaluation loop.18Leverage Codex to iterate on complex game algorithms by running a self-evaluation loop.

Details

4 4 

5Find and fix vulnerabilities in your code.5Find and fix vulnerabilities in your code.

6 6 

7Use Codex to investigate security findings, assess their impact, and develop and7Use Codex to investigate security risks in your code and dependencies, then

8test fixes. Start with your source code or findings from tools you already use.8develop and test fixes. Start with a repository, a code change, or findings from

9tools you already use.

9 10 

10## Code security11## Find vulnerabilities

11 12 

12Choose a guide to scan a repository, review code changes, assess dependency13Start with a scan of one repository, run a deeper review, or scan a repository

13exposure, or fix an existing finding.14inventory. Automate scans in CI to review code on a schedule or as it changes.

15Review the findings and coverage to decide where to investigate next.

14 16 

17- [Run your first security scan](https://developers.openai.com/codex/use-cases/find-vulnerabilities-in-your-code): Use the Codex Security plugin to scan a local repository, review the evidence and coverage...

15- [Run a deep security scan](https://developers.openai.com/codex/use-cases/deep-security-scan): Use the Codex Security plugin to run a more comprehensive audit of a repository or scoped...18- [Run a deep security scan](https://developers.openai.com/codex/use-cases/deep-security-scan): Use the Codex Security plugin to run a more comprehensive audit of a repository or scoped...

19- [Scan multiple repositories](https://developers.openai.com/codex/use-cases/scan-multiple-repositories): Use the Codex Security CLI to scan a list of repositories at specific commits, review each...

20- [Automate security scans in CI](https://developers.openai.com/codex/use-cases/automate-security-scans-in-ci): Add the Codex Security CLI to your CI pipeline

21 

22## Review changes and dependencies

23 

24Check a pull request or local diff for security regressions, or assess your

25repository's exposure to a package or supply chain advisory. Gather evidence

26before deciding what needs action.

27 

16- [Scan code changes for security](https://developers.openai.com/codex/use-cases/scan-code-changes-for-security): Use the Codex Security plugin to examine a Git-backed change set, validate plausible...28- [Scan code changes for security](https://developers.openai.com/codex/use-cases/scan-code-changes-for-security): Use the Codex Security plugin to examine a Git-backed change set, validate plausible...

17- [Audit dependency incidents](https://developers.openai.com/codex/use-cases/dependency-incident-audits): Use Codex to turn a public package or supply chain advisory into a read-only audit, then...29- [Audit dependency incidents](https://developers.openai.com/codex/use-cases/dependency-incident-audits): Use Codex to turn a public package or supply chain advisory into a read-only audit, then...

30 

31## Fix and verify findings

32 

33Turn a reviewed scan finding into a focused patch, or work through findings from

34an existing backlog. Review each change and its verification evidence before

35preparing it for merge.

36 

37- [Fix a finding from your security scan](https://developers.openai.com/codex/use-cases/fix-a-finding-from-your-security-scan): Use the Codex Security plugin to turn a reviewed scan finding into a focused patch

18- [Remediate a vulnerability backlog](https://developers.openai.com/codex/use-cases/remediate-vulnerability-backlog): Bring in approved findings from ticketing tools or vulnerability reporting systems, then use...38- [Remediate a vulnerability backlog](https://developers.openai.com/codex/use-cases/remediate-vulnerability-backlog): Bring in approved findings from ticketing tools or vulnerability reporting systems, then use...

Details

24Leverage Codex to make targeted changes from visual inputs or prompts, and have it verify its work in the browser.24Leverage Codex to make targeted changes from visual inputs or prompts, and have it verify its work in the browser.

25 25 

26- [Build responsive front-end designs](https://developers.openai.com/codex/use-cases/frontend-designs): Use Codex to translate screenshots and design briefs into code that matches the repo's...26- [Build responsive front-end designs](https://developers.openai.com/codex/use-cases/frontend-designs): Use Codex to translate screenshots and design briefs into code that matches the repo's...

27- [Make granular UI changes](https://developers.openai.com/codex/use-cases/make-granular-ui-changes): Use Codex to make one small UI adjustment at a time in an existing app, verify it in the...

28 27 

29## Pick up scoped Slack tasks28## Pick up scoped Slack tasks

30 29 

Details

1---

2name: Automate security scans in CI

3tagline: Scan pull requests, commits to main, or your repository on a schedule.

4summary: Add the Codex Security CLI to your CI pipeline. Choose when to scan and

5 which code to review, preserve findings and coverage, and decide how results

6 should affect delivery.

7bestFor:

8 - Teams adding security checks to pull or merge requests.

9 - Maintainers scanning their default branch after changes land.

10 - Security teams scheduling recurring repository assessments.

11relatedLinks:

12 - label: Run Codex Security in CI

13 url: /codex/security/cli/ci

14 - label: Run Codex Security in GitLab CI/CD

15 url: /codex/security/cli/ci/gitlab

16 - label: Review code changes in the desktop app

17 url: /codex/use-cases/scan-code-changes-for-security

18---

19 

20> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

21 

22Make security scanning part of your development workflow. Run Codex Security

23on pull requests, after changes reach your default branch, or on a recurring

24schedule. Choose the scan scope that fits each trigger, preserve findings and

25coverage, and give your team a repeatable way to review the results.

26 

27## Choose when to scan

28 

29Start with one trigger that fits your team's workflow. Add others as you learn

30how long scans take, what they cost, and how your team uses the findings.

31 

32| When to run | Suggested scope | What it helps you review |

33| ------------------------- | -------------------------------------------------- | ------------------------------------------------------------ |

34| On a schedule | Full repository, optionally using a deep scan | The broader codebase at a recurring interval. |

35| On commits to main | Full repository at the pushed commit | The integrated code after changes reach your default branch. |

36| On pull or merge requests | Changes between the merge base and proposed commit | Potential security regressions before merge. |

37 

38Use your repository's default branch if it has a name other than `main`.

39Configure both the trigger and the scan scope: a pull-request diff scan covers

40that change, not the entire repository. A scan after changes reach `main`

41cannot block a pull request that has already merged.

42 

43## Before you start

44 

45You'll need a repository you're authorized to assess, permission to configure

46its CI pipeline and secrets, and an OpenAI API key with Codex Security access.

47Use the [CLI quickstart](https://developers.openai.com/codex/security/cli) to check access and setup requirements.

48 

49Use a trusted runner that meets the

50[CI requirements](https://developers.openai.com/codex/security/cli/ci#prepare-the-workflow). Scans run with

51the runner's local permissions. Keep unrelated credentials out of the scan

52job, and follow your platform's restrictions for pull requests from forks

53and other untrusted code.

54 

55## Set up your pipeline

56 

57 

58 

59 

601. Add Codex Security to your pipeline

61 

62 Choose the example for your CI platform. Follow it to install the Codex

63 Security CLI and provide an API key through your CI provider's secret store.

64 

65 Choose a starting point:

66 - **GitHub Actions:** Use the

67 [pull-request workflow](https://developers.openai.com/codex/security/cli/ci#add-the-github-actions-workflow)

68 to scan proposed changes and preserve results.

69 - **GitLab CI/CD:** Use the

70 [pipeline guide](https://developers.openai.com/codex/security/cli/ci/gitlab) for merge requests,

71 default-branch scans, and scheduled scans. It includes a downloadable

72 pipeline and explains which options to enable.

73 - **Other CI platforms:** Adapt the scan and export commands in

74 [Run Codex Security in CI](https://developers.openai.com/codex/security/cli/ci) to your provider's

75 triggers, secret store, checkout, and artifact handling.

76 

772. Configure the trigger and scope

78 

79 Scan the repository at the pushed commit when changes reach `main`,

80 and on a recurring schedule for your chosen branch. Weekly scans are

81 a good place to start; adjust the cadence based on repository activity,

82 scan duration, and cost.

83 

84 For pull or merge requests, fetch the base and head history and scan

85 the committed diff from their merge base.

86 

87 Configure each job to scan the intended code: the full repository for

88 scheduled scans and commits to `main`, or the proposed changes for pull

89 requests. Follow your platform's example to set up the appropriate scan.

90 

91 Set a budget appropriate for the scope and frequency. Full-repository

92 scans can take longer and cost more than diff scans. Treat `--max-cost`

93 as an estimated cost limit, not a hard spending cap. Reaching it can

94 leave coverage incomplete.

95 

963. Run the pipeline and review the results

97 

98 Submit the pipeline change through your normal review process, then

99 trigger a scan. Confirm the target revision and scope in the run and

100 `scan-manifest.json`.

101 

102 Review the findings and supporting evidence in the saved reports. Check

103 `coverage.json` for incomplete or deferred areas, even if the scan

104 reported no findings. Review runtime and cost before increasing the frequency

105 or expanding to more repositories.

106 

107 Preserve reports as CI artifacts. Keep artifact access and retention

108 appropriate for the source code and evidence they contain.

109 

110 Optionally export SARIF, a structured

111 format for security findings, to display results in your platform's

112 security interface. Check the platform guide for supported versions,

113 permissions, and licensing requirements.

114 

1154. Choose whether findings should block merging

116 

117 Start by reviewing findings without blocking merges. Once your team is

118 comfortable with the results, you can require pull requests to pass a

119 security check—for example, blocking merges when the scan finds a high-

120 or critical-severity vulnerability.

121 

122 Always check whether the scan completed and what code it covered. A scan

123 that failed or skipped code needs attention, even if it reported no findings.

124 

125 For setup details, see

126 [Configure severity thresholds and interpret scan results](https://developers.openai.com/codex/security/cli/ci#choose-a-severity-policy).

127 

1285. Follow up on findings

129 

130 Assign findings for investigation or remediation through your team's normal

131 process. Include the scanned commit, affected code, and supporting evidence

132 so another developer can investigate.

133 

134 Verify fixes before closing findings, and address incomplete coverage in a

135 follow-up scan.

Details

107 107 

108The [Sites showcase](https://developers.openai.com/showcase/sites) includes Site examples with full prompts.108The [Sites showcase](https://developers.openai.com/showcase/sites) includes Site examples with full prompts.

109 109 

110{/* vale Vale.Spelling = NO */}

111{/* vale Vale.Terms = NO */}

112 110 

113- **[Onboarding Hub](https://developers.openai.com/showcase/onboarding-hub)** combines a first-week checklist, resources, notes, and uploaded documents. It uses D1 for user state and file metadata, and R2 for uploaded file bytes.111- **[Onboarding Hub](https://developers.openai.com/showcase/onboarding-hub)** combines a first-week checklist, resources, notes, and uploaded documents. It uses D1 for user state and file metadata, and R2 for uploaded file bytes.

114- **[Enablement Hub](https://developers.openai.com/showcase/enablement-hub)** provides a searchable training library with filters and saved bookmarks backed by D1.112- **[Enablement Hub](https://developers.openai.com/showcase/enablement-hub)** provides a searchable training library with filters and saved bookmarks backed by D1.


117- **[Launch Cal](https://developers.openai.com/showcase/launch-cal)** organizes upcoming product launches into a monthly calendar with filters, risk signals, checklists, and connected-source references.115- **[Launch Cal](https://developers.openai.com/showcase/launch-cal)** organizes upcoming product launches into a monthly calendar with filters, risk signals, checklists, and connected-source references.

118- **[Event Planning Hub](https://developers.openai.com/showcase/event-planning-hub)** combines event requests, approvals, templates, milestones, policy readiness, and connected planning resources.116- **[Event Planning Hub](https://developers.openai.com/showcase/event-planning-hub)** combines event requests, approvals, templates, milestones, policy readiness, and connected planning resources.

119 117 

120{/* vale Vale.Terms = YES */}

121{/* vale Vale.Spelling = YES */}

122 118 

123Use those examples as starting points, then narrow the prompt around your team's workflow and source material.119Use those examples as starting points, then narrow the prompt around your team's workflow and source material.

Details

23 23 

24 24 

25 End with the files I should read next.25 End with the files I should read next.

26 suggestedModel: gpt-5.3-codex-spark

27 suggestedEffort: medium26 suggestedEffort: medium

28relatedLinks:27relatedLinks:

29 - label: ChatGPT desktop app28 - label: ChatGPT desktop app

Details

13 13 

14- [Create browser-based games](https://developers.openai.com/codex/use-cases/browser-games): Use Codex to turn a game brief into first a well-defined plan, and then a real browser-based...14- [Create browser-based games](https://developers.openai.com/codex/use-cases/browser-games): Use Codex to turn a game brief into first a well-defined plan, and then a real browser-based...

15 15 

16## Tune UI and controls

17 

18Use Codex to adjust HUD details, menus, controls, and small interaction issues after the game is running.

19 

20- [Make granular UI changes](https://developers.openai.com/codex/use-cases/make-granular-ui-changes): Use Codex to make one small UI adjustment at a time in an existing app, verify it in the...

21 

22## Tackle hard game logic16## Tackle hard game logic

23 17 

24Leverage Codex to iterate on complex game algorithms by running a self-evaluation loop.18Leverage Codex to iterate on complex game algorithms by running a self-evaluation loop.

Details

4 4 

5Find and fix vulnerabilities in your code.5Find and fix vulnerabilities in your code.

6 6 

7Use Codex to investigate security findings, assess their impact, and develop and7Use Codex to investigate security risks in your code and dependencies, then

8test fixes. Start with your source code or findings from tools you already use.8develop and test fixes. Start with a repository, a code change, or findings from

9tools you already use.

9 10 

10## Code security11## Find vulnerabilities

11 12 

12Choose a guide to scan a repository, review code changes, assess dependency13Start with a scan of one repository, run a deeper review, or scan a repository

13exposure, or fix an existing finding.14inventory. Automate scans in CI to review code on a schedule or as it changes.

15Review the findings and coverage to decide where to investigate next.

14 16 

17- [Run your first security scan](https://developers.openai.com/codex/use-cases/find-vulnerabilities-in-your-code): Use the Codex Security plugin to scan a local repository, review the evidence and coverage...

15- [Run a deep security scan](https://developers.openai.com/codex/use-cases/deep-security-scan): Use the Codex Security plugin to run a more comprehensive audit of a repository or scoped...18- [Run a deep security scan](https://developers.openai.com/codex/use-cases/deep-security-scan): Use the Codex Security plugin to run a more comprehensive audit of a repository or scoped...

19- [Scan multiple repositories](https://developers.openai.com/codex/use-cases/scan-multiple-repositories): Use the Codex Security CLI to scan a list of repositories at specific commits, review each...

20- [Automate security scans in CI](https://developers.openai.com/codex/use-cases/automate-security-scans-in-ci): Add the Codex Security CLI to your CI pipeline

21 

22## Review changes and dependencies

23 

24Check a pull request or local diff for security regressions, or assess your

25repository's exposure to a package or supply chain advisory. Gather evidence

26before deciding what needs action.

27 

16- [Scan code changes for security](https://developers.openai.com/codex/use-cases/scan-code-changes-for-security): Use the Codex Security plugin to examine a Git-backed change set, validate plausible...28- [Scan code changes for security](https://developers.openai.com/codex/use-cases/scan-code-changes-for-security): Use the Codex Security plugin to examine a Git-backed change set, validate plausible...

17- [Audit dependency incidents](https://developers.openai.com/codex/use-cases/dependency-incident-audits): Use Codex to turn a public package or supply chain advisory into a read-only audit, then...29- [Audit dependency incidents](https://developers.openai.com/codex/use-cases/dependency-incident-audits): Use Codex to turn a public package or supply chain advisory into a read-only audit, then...

30 

31## Fix and verify findings

32 

33Turn a reviewed scan finding into a focused patch, or work through findings from

34an existing backlog. Review each change and its verification evidence before

35preparing it for merge.

36 

37- [Fix a finding from your security scan](https://developers.openai.com/codex/use-cases/fix-a-finding-from-your-security-scan): Use the Codex Security plugin to turn a reviewed scan finding into a focused patch

18- [Remediate a vulnerability backlog](https://developers.openai.com/codex/use-cases/remediate-vulnerability-backlog): Bring in approved findings from ticketing tools or vulnerability reporting systems, then use...38- [Remediate a vulnerability backlog](https://developers.openai.com/codex/use-cases/remediate-vulnerability-backlog): Bring in approved findings from ticketing tools or vulnerability reporting systems, then use...

Details

24Leverage Codex to make targeted changes from visual inputs or prompts, and have it verify its work in the browser.24Leverage Codex to make targeted changes from visual inputs or prompts, and have it verify its work in the browser.

25 25 

26- [Build responsive front-end designs](https://developers.openai.com/codex/use-cases/frontend-designs): Use Codex to translate screenshots and design briefs into code that matches the repo's...26- [Build responsive front-end designs](https://developers.openai.com/codex/use-cases/frontend-designs): Use Codex to translate screenshots and design briefs into code that matches the repo's...

27- [Make granular UI changes](https://developers.openai.com/codex/use-cases/make-granular-ui-changes): Use Codex to make one small UI adjustment at a time in an existing app, verify it in the...

28 27 

29## Pick up scoped Slack tasks28## Pick up scoped Slack tasks

30 29 

use-cases/daily-work-brief.md +191 −0 created

Details

1---

2name: Set up a work chief of staff

3tagline: Stay on top of your priorities, meetings, messages, and commitments.

4summary: Set up ChatGPT Work as a chief of staff that checks your connected

5 messages, email, calendar, documents, and project trackers every hour, keeps

6 track of what changes, and prepares concise updates and draft replies. On

7 desktop, ask it to create or coordinate a separate task for a specific

8 project.

9skills:

10 - token: google-calendar

11 url: https://github.com/openai/plugins/tree/main/plugins/google-calendar

12 description: Review the day's meetings, timing, and preparation needs.

13 - token: gmail

14 url: https://github.com/openai/plugins/tree/main/plugins/gmail

15 description: Find Gmail messages that need a reply or change your priorities.

16 - token: outlook-email

17 url: https://github.com/openai/plugins/tree/main/plugins/outlook-email

18 description: Find Outlook messages that need a reply or change your priorities.

19 - token: slack

20 url: https://github.com/openai/plugins/tree/main/plugins/slack

21 description: Find direct messages, mentions, decisions, and follow-ups that need

22 attention.

23 - token: teams

24 url: https://github.com/openai/plugins/tree/main/plugins/teams

25 description: Find Teams messages, decisions, and follow-ups that need attention.

26 - token: google-drive

27 url: https://github.com/openai/plugins/tree/main/plugins/google-drive

28 description: Read the approved running notes, trackers, or planning docs behind

29 the day's work.

30bestFor:

31 - People managing priorities and commitments across messages, email,

32 calendars, documents, and project trackers.

33 - Workdays with meetings to prepare for, decisions to make, and follow-ups to

34 track.

35starterPrompt:

36 title: Set up my work chief of staff

37 body: >-

38 Be my chief of staff.

39 

40 

41 Start by checking the work tools and sources available to you, such as Slack

42 or Teams, Gmail or Outlook, my calendar, documents, notes, and project

43 trackers. Figure out what I'm working on, who I work with, what I've

44 committed to, and what needs my attention.

45 

46 

47 Give me a concise update covering:

48 

49 

50 - what changed and what needs a decision;

51 

52 - approaching deadlines, meetings, and commitments;

53 

54 - messages that need a response;

55 

56 - what is blocked or waiting on someone; and

57 

58 - what can wait.

59 

60 

61 Link to the original sources when possible, check the latest replies before

62 resurfacing an older request, and tell me if an important source is

63 unavailable. Separate confirmed facts from assumptions and don't repeat

64 items that have already been resolved.

65 

66 

67 Suggest next steps, draft replies, and prepare meeting briefs when useful.

68 In the desktop app, when I ask you to delegate a project, create or continue

69 a separate project task and share only the context it needs.

70 

71 

72 Set up an hourly check if scheduled tasks are available. Review the

73 connected sources, compare what you find with prior updates, and interrupt

74 me only when a priority, deadline, blocker, decision, or message

75 meaningfully changes. Stay quiet when there's nothing new. If you can't

76 create the schedule, tell me instead of implying that it's active.

77 

78 

79 Apart from the hourly check I just requested, ask before creating a new

80 project task, sending anything, editing documents, changing a schedule, or

81 making commitments.

82 

83 

84 Start by telling me what I should know today.

85 suggestedEffort: medium

86relatedLinks:

87 - label: Set up a project teammate

88 url: /codex/use-cases/project-teammate

89 - label: Scheduled tasks

90 url: /codex/automations

91---

92 

93> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

94 

95## What to expect

96 

97Give ChatGPT Work ongoing responsibility for staying on top of your work. In one thread, it can check the work tools you've connected every hour, bring together your priorities, prepare you for meetings, and flag messages, decisions, or commitments that need your attention. In the desktop app, it can also help you start or coordinate a separate task for a project when you ask.

98 

99Use the sources that apply to your work, such as Slack or Teams, Gmail or Outlook, your calendar, documents, and project trackers. ChatGPT should tell you if it can't access a source rather than guess what's in it.

100 

101Choose the surface that fits how you want your chief of staff to work:

102 

103- **ChatGPT on the web:** Use connected work tools and an hourly [scheduled check](https://developers.openai.com/codex/automations?surface=web) that can continue when your laptop is off. This is a good default when you want updates wherever you are.

104- **ChatGPT desktop app:** Use the same connected sources alongside local files and apps. Your chief of staff can also create, brief, and coordinate separate project teammates when you ask. Keep your computer on and the app running if a [scheduled check](https://developers.openai.com/codex/automations?surface=app) needs local files or desktop tools.

105 

106Here's what an initial check and follow-up can look like:

107 

108**Top priorities**

109 

110- Confirm the launch docs link with Priya before 9:15 AM for the 9:30 AM readiness review.

111- Prepare an accurate customer update, respond to Finance, and review the weekly update.

112 

113**What changed:** Launch copy is approved, the missing docs link is the current blocker, and the earlier team-social request is resolved.

114 

115**Draft reply:** “Copy is approved. I'm checking the docs link now and will confirm it before the readiness review.” The reply stays unsent until you approve it.

116 

117**Catch-up prompt:** I'm back after time away. Catch me up on work by checking my available messages, email, calendar, documents, and project trackers. Show me what changed, include source links, and don't send or change anything.

118 

119 

120 

121 

122## Make it your own

123 

124 

125 

126 

1271. Start a thread using the starter prompt.

1282. Connect the messaging, email, calendar, and document sources relevant to your work.

1293. Review the first update and point out anything important, resolved, or missing.

1304. Keep using the same thread for follow-ups, meeting preparation, and draft replies.

1315. On desktop, ask it to create or continue a separate task when a project needs its own teammate.

1326. Review the hourly heartbeat and adjust its schedule when needed.

133 

134 

135 

136 

137The starter prompt authorizes an hourly check. ChatGPT should ask before creating another task, sending messages, updating documents, changing the schedule, or making commitments.

138 

139**Adjust the hourly heartbeat**

140 

141 

142 

143**Prompt:**

144 

145```text

146Check my connected work sources every hour. Tell me only about meaningful changes, approaching deadlines, decisions, blockers, or messages that need my attention. Don't repeat resolved items. Apart from this hourly check, keep everything read-only unless I approve a specific action.

147```

148 

149**Catch up after time away**

150 

151 

152 

153**Prompt:**

154 

155```text

156Catch me up on what changed while I was away. Review my available messages, email, calendar, documents, and project trackers. Show me decisions, deadlines, blockers, and messages that need a reply. Link to the original sources and tell me if anything is missing. Don't send or change anything.

157```

158 

159**Start a project teammate on desktop**

160 

161When one project needs its own focused working space, ask your chief of staff to [set up a project teammate](https://developers.openai.com/codex/use-cases/project-teammate) and share the relevant context.

162 

163 

164 

165**Prompt:**

166 

167```text

168Create a separate teammate task for [project]. Brief it on what we're trying to accomplish, the relevant messages, documents, decisions, and open questions. Give it only the context it needs, keep its work separate from other projects, and tell me where to find it. Ask before sending messages, editing documents, or making commitments.

169```

170 

171**Continue an existing project teammate**

172 

173 

174 

175**Prompt:**

176 

177```text

178Check on my existing [project] teammate. Give it this follow-up: [what you need]. Then tell me what changed, what's blocked, and what needs my review. Don't create a duplicate task, contact anyone, or change anything without my approval.

179```

180 

181**Prepare the next step**

182 

183 

184 

185**Prompt:**

186 

187```text

188Use the latest context in this thread to draft the reply, handoff, or meeting brief I need next. Keep it concise, show the sources behind your recommendation, and don't send or share anything without my approval.

189```

190 

191Connected sources and scheduled tasks depend on your plan and workspace settings. Set up scheduled tasks in chat rather than in a voice conversation.

Details

1---

2name: Run your first security scan

3tagline: Find vulnerabilities in your code, review the evidence, and decide what

4 needs attention.

5summary: Use the Codex Security plugin to scan a local repository, review the

6 evidence and coverage, and prioritize findings for investigation or a fix.

7skills:

8 - token: $codex-security:security-scan

9 url: /docs/security/plugin/scans

10 description: Scan a repository or scoped folder, validate candidate

11 vulnerabilities, and report findings and coverage.

12bestFor:

13 - Developers assessing a repository or service they own or are authorized to

14 review.

15 - Security teams establishing an initial view of vulnerabilities and areas

16 that need further review.

17 - Reviewers who need code evidence and validation results before deciding what

18 to fix.

19starterPrompt:

20 title: Find vulnerabilities in a repository

21 body: >-

22 Use $codex-security:security-scan to run a standard security scan of

23 [absolute path to this repository or one scoped folder].

24 

25 

26 I am authorized to assess this code. Keep the review within the selected

27 scope.

28 

29 Use the repository's security guidance and supported validation commands.

30 

31 Do not apply fixes or close findings.

32 

33 

34 Return the scan report and summarize:

35 

36 - Findings, affected code, and realistic impact.

37 

38 - Validation evidence and remaining uncertainty.

39 

40 - Reviewed areas, exclusions, and incomplete coverage.

41 

42 - Findings and coverage gaps that need human review first.

43 suggestedEffort: xhigh

44relatedLinks:

45 - label: Install the Codex Security plugin

46 url: /docs/security/plugin

47 - label: Scan settings and recommended model

48 url: /docs/security/plugin/scans#configure-the-scan

49 - label: Fix a finding from your security scan

50 url: /use-cases/fix-a-finding-from-your-security-scan

51---

52 

53> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

54 

55Scan a local repository with the Codex Security plugin, review the evidence

56behind each finding, and decide what needs investigation or a fix. Start with

57one repository or service so you can review its coverage before expanding the

58scan.

59 

60## Before you start

61 

62Open a local repository that you own or have permission to assess in Codex.

63Install and enable the [Codex Security plugin](https://developers.openai.com/docs/security/plugin), and

64confirm that your account and workspace have the required

65[security access](https://developers.openai.com/docs/cyber-safety).

66 

67Start with a standard scan of the repository or one service. It runs the scan

68workflow once and gives you findings, supporting evidence, and coverage to

69review before deciding what to fix. For a large monorepo, choose one folder

70with a clear service or product boundary.

71 

72Use the starter prompt in that repository's Codex project, replacing the path

73with your intended scope. To configure the same scan in the Security sidebar,

74follow [Run your first scan](#run-your-first-scan). Choose one way to start the

75scan.

76 

77## Run your first scan

78 

79 

80 

81 

821. Open **Security**, select **Scans**, then select **+ Scan**.

832. Select your repository and confirm that **Current branch** and **Last

84 commit** match the code you want to review. **Codebase** scans the checked-out

85 code, including local changes.

863. Select **Codebase** and set **Scan area** to **Entire codebase** or one

87 folder. Leave **Deep scan** off for this first pass.

884. Choose a model and reasoning effort using the current

89 [scan recommendations](https://developers.openai.com/docs/security/plugin/scans#configure-the-scan).

905. Open **Additional context** if you want to explain a security rule or area

91 to prioritize, then select **Start scan**.

92 

93 

94 

95 

96For an application that keeps each customer's data in a separate workspace,

97you could add this security context:

98 

99```text

100Users must only retrieve documents from workspaces they belong to.

101Review whether a user can supply another workspace's identifier and

102retrieve its private documents. Check where workspace membership is

103enforced, including background jobs and direct API calls.

104```

105 

106<figure className="not-prose my-8">

107

108 <figcaption className="mt-3 text-sm text-secondary">

109 Example scan setup from the security docs. Confirm your own repository,

110 scope, and settings before starting.

111 </figcaption>

112</figure>

113 

114## Follow the scan and check coverage

115 

116Codex identifies the application's assets and security boundaries, reviews

117code for candidate vulnerabilities, validates candidates, and assesses their

118impact before producing the report. Select **View activity** to inspect the

119underlying Codex task, and wait for the scan to finish.

120 

121Open the completed scan and confirm the target and revision. Review coverage,

122including skipped or deferred areas, before reading the findings. A completed

123scan can contain vulnerabilities; an empty findings list with incomplete

124coverage does not establish that the code is secure.

125 

126If the scan stops or leaves gaps, record those areas for follow-up. Scan time

127and resource use depend on the selected code and the validation work required.

128 

129## Understand a finding

130 

131Select a finding and open **Summary**. Review these questions together:

132 

133- **What can an attacker do?** Read the affected code, root cause, and reported

134 impact.

135- **How can they reach it?** Follow the attack path from attacker-controlled

136 input to the sensitive operation, including any existing safeguards.

137- **What did the scan demonstrate?** Read the validation evidence, severity rationale,

138 and remaining uncertainty. A severity label alone is not enough to accept a

139 finding.

140 

141<figure className="not-prose my-8">

142

143 <figcaption className="mt-3 text-sm text-secondary">

144 Example finding from the security docs, not the result of running this

145 walkthrough.

146 </figcaption>

147</figure>

148 

149In this example, a request supplies a workspace identifier that reaches

150private-document retrieval without a membership check. To assess a similar

151finding in your code, inspect whether another control enforces membership and

152whether the validation demonstrates access across workspaces.

153 

154For help interpreting a finding, open a chat in the same repository project

155and include the finding's title, affected code, and evidence:

156 

157 

158 

159**Prompt:**

160 

161```text

162Help me assess this security finding: [paste the finding, affected code, and validation evidence].

163 

164Explain the attack path, existing safeguards, and whether the evidence supports the reported impact and severity. Cite the relevant code and identify missing information. Do not modify code or close the finding.

165```

166 

167## Choose the next action

168 

169Keep a short record of each reviewed finding: the scanned revision, affected

170code, evidence, remaining uncertainty, and responsible team. Choose the next

171action based on that evidence:

172 

173- **Needs a fix:** Select one accepted finding and continue to

174 [Fix a finding from your security scan](https://developers.openai.com/use-cases/fix-a-finding-from-your-security-scan).

175- **Needs investigation:** Keep it open and identify the missing check or

176 information before making a remediation decision.

177- **Does not need a fix:** Record the supporting evidence and your triage

178 decision. Closing a finding records that decision; it does not change code.

179 

180Your result is a reviewed set of findings and coverage gaps, with a next action

181for each. If you need a more thorough assessment, use

182[Run a deep security scan](https://developers.openai.com/use-cases/deep-security-scan). To assess a

183specific pull request or diff, use

184[Scan code changes for security](https://developers.openai.com/use-cases/scan-code-changes-for-security).

Details

1---

2name: Fix a finding from your security scan

3tagline: Open a finding from your scan, review and apply a patch, and verify the fix.

4summary: Use the Codex Security plugin to turn a reviewed scan finding into a

5 focused patch. Review and apply the change locally, verify the fix, and

6 prepare a pull request with supporting evidence.

7skills:

8 - token: $codex-security:fix-finding

9 url: /docs/security/plugin/fix-findings

10 description: Fix and verify one reviewed security finding with a focused patch

11 and validation evidence.

12bestFor:

13 - Developers ready to address a reviewed finding from a Codex Security scan.

14 - Maintainers who want to inspect a proposed patch before applying it locally.

15 - Reviewers who need verification evidence alongside a focused security fix.

16relatedLinks:

17 - label: Run your first security scan

18 url: /use-cases/find-vulnerabilities-in-your-code

19 - label: Fix and verify security findings

20 url: /docs/security/plugin/fix-findings

21 - label: Remediate a vulnerability backlog

22 url: /use-cases/remediate-vulnerability-backlog

23---

24 

25> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

26 

27## Before you start

28 

29Open the scanned repository in Codex with the

30[Codex Security plugin](https://developers.openai.com/docs/security/plugin) installed and enabled. You'll

31need a finding you've reviewed and decided to address. If you haven't run a

32scan yet, start with

33[Run your first security scan](https://developers.openai.com/use-cases/find-vulnerabilities-in-your-code).

34 

35## Fix the finding

36 

37 

38 

39 

401. Open and review the finding

41 

42 Open the finding from **Findings** or a completed scan in **Scans**. Read

43 the affected code, the reported impact, and the evidence supporting the

44 finding.

45 

46 Confirm what the fix should prevent and which legitimate behavior must

47 continue to work. If the evidence is unclear, investigate the finding

48 before moving to a patch.

49 

502. Generate a focused patch

51 

52 Select the **Patch** tab, then **Generate patch**.

53 

54 Codex validates or reproduces the issue when feasible and generates a

55 proposed patch. Generating the patch does not modify your selected

56 checkout.

57 

583. Review and apply the patch

59 

60 Inspect the proposed diff, including any regression tests or validation

61 artifacts. Check that the change addresses the finding and preserves

62 expected behavior. Resolve unrelated changes or broader refactors before

63 proceeding.

64 

65 When the patch is ready, select **Apply patch**. Review the resulting

66 working-tree diff.

67 

68 <figure className="not-prose my-8">

69

70 <figcaption className="mt-3 text-sm text-secondary">

71 Example patch from the security docs, not the result of running this

72 walkthrough. Review your own diff before applying it.

73 </figcaption>

74 </figure>

75 

764. Verify the fix

77 

78 Select **Verify fix**.

79 

80 Review the evidence that the original vulnerable behavior no longer

81 reproduces and legitimate behavior still works. When safe and practical,

82 a focused regression test should fail before the fix and pass afterward.

83 

84 If verification is incomplete, review the stated limitation and determine

85 what additional testing is needed. An applied patch alone does not

86 establish that the vulnerability is fixed.

87 

885. Prepare the change for review

89 

90 Review the final diff and prepare a pull request through your normal

91 development workflow. Include:

92 - The finding and the behavior the patch corrects.

93 - The relevant code changes.

94 - The verification commands and results.

95 - Any remaining uncertainty or follow-up testing.

96 

97 Verification does not automatically close the finding. Update its status

98 deliberately according to your team's review and release process.

99 

100 

101 

102 

103## Review the result

104 

105You should have one focused patch, evidence showing what Codex verified, and

106enough context for another developer to review the change. If verification

107could not establish that the fix works, keep that gap explicit.

108 

109For more detail, see

110[Fix and verify security findings](https://developers.openai.com/docs/security/plugin/fix-findings).

111To work through existing reports or tickets, use

112[Remediate a vulnerability backlog](https://developers.openai.com/use-cases/remediate-vulnerability-backlog).

use-cases/make-granular-ui-changes.md +0 −97 deleted

File Deleted View Diff

1name: Make granular UI changes

2tagline: Use Codex-Spark for fast, focused UI iteration in an existing app.

3summary: Use Codex to make one small UI adjustment at a time in an existing app,

4 verify it in the browser, and keep iterating quickly from a popped-out chat

5 window near your preview.

6skills:

7 - token: $playwright

8 url: https://github.com/openai/skills/tree/main/skills/.curated/playwright-interactive

9 description: Open the running app in a real browser, inspect the changed route,

10 and verify each small UI adjustment before the next iteration.

11bestFor:

12 - Existing apps where the main structure is already built and you need small

13 visual adjustments

14 - Fast product or design review loops where each note should become one

15 focused code change

16 - UI polish passes that need browser verification but should not turn into a

17 broad redesign

18starterPrompt:

19 title: Make One UI Change

20 body: >-

21 Make this UI change in the existing app:

22 

23 [describe the exact spacing, alignment, color, copy, responsive, or

24 component-state adjustment]

25 

26 

27 Constraints:

28 

29 - Change only the files needed for this UI adjustment.

30 

31 - Reuse existing components, tokens, icons, and layout patterns.

32 

33 - Keep behavior, data flow, and routing unchanged unless I explicitly ask

34 for it.

35 

36 - Start or reuse the dev server, inspect the current UI in the browser, make

37 the smallest patch, and verify the result visually.

38 

39 

40 Stop after this one change and summarize the files changed plus the browser

41 check you ran.

42 suggestedModel: gpt-5.3-codex-spark

43 suggestedEffort: low

44relatedLinks:

45 - label: Codex-Spark

46 url: /codex/agent-configuration/speed#codex-spark

47 - label: Floating pop-out window

48 url: /codex/reference/settings#keep-an-app-chat-near-your-work

49 

50> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

51 

52## Introduction

53 

54When you have an existing app and want to iterate fast on the UI, you can use `gpt-5.3-codex-spark` to make small, focused changes to the UI.

55Codex-Spark is our fastest model, optimized for near-instant, real-time coding iteration.

56 

57This works best as a tight loop: one visual note, one focused edit, one browser check, then the next note.

58 

59You can use the [Codex Spark model](https://developers.openai.com/codex/models) for this task. It is

60 available on Pro plans.

61 

62## Pick your model

63 

64For fast UI iteration, start with `gpt-5.3-codex-spark` if you have access to it. It is less capable that our general-purpose models, but is designed for real-time coding iteration. If you don't have access to it, use `gpt-6-astra` with `medium` or `low` reasoning effort.

65 

66That tradeoff is useful for granular UI work. You usually do not need the deepest model to move a button, tune a breakpoint, or adjust a component state. You need a model that responds quickly, understands the local code, edits the right file, and can repeat the loop without making the iteration feel heavy.

67 

68## Development flow

69 

701. Open the existing app and get the relevant route or component visible.

712. Pop out the active Codex chat into a [floating window](https://developers.openai.com/codex/reference/settings#keep-a-chat-near-your-work) and keep it near your browser, editor, or design preview while you work.

723. Give Codex one specific UI change at a time. Include the route, viewport, current screenshot, target screenshot, or exact product note if you have it.

734. Ask Codex to inspect the current implementation, make the smallest defensible edit, and preserve the app's existing components, tokens, layout primitives, and data flow.

745. Review the result, then send the next small adjustment in the same chat.

75 

76## Write small prompts

77 

78Granular UI prompts should be direct and narrow. A good prompt names the surface, the target change, and the validation you expect.

79 

80If the result is close but not quite right, keep the follow-up equally specific:

81 

82 

83 

84**Prompt:**

85 

86```text

87The change is close. Keep the implementation, but adjust only this detail:

88[describe the remaining mismatch]

89 

90Verify the same route and viewport again before you stop.

91```

92 

93## When to slow down

94 

95Do not keep using the fast loop if the task stops being granular. Switch to a stronger model and a more deliberate prompt when the change needs broad refactoring, a new design system primitive, non-trivial accessibility behavior, or a product decision that affects more than one screen.

96 

97Fast UI iteration works best when Codex is adjusting an already-understood surface, not redesigning the app from scratch.

Details

1---

2name: Scan multiple repositories

3tagline: Run security scans across repositories and review the findings and coverage.

4summary: Use the Codex Security CLI to scan a list of repositories at specific

5 commits, review each result, and decide what needs investigation or a fix.

6bestFor:

7 - Security teams assessing a group of services at specific commits.

8 - Engineering teams that need a repeatable repository inventory and separate

9 scan results.

10 - Reviewers prioritizing findings and coverage gaps across repositories.

11relatedLinks:

12 - label: Install and authenticate the CLI

13 url: /docs/security/cli

14 - label: Bulk scans and repository discovery

15 url: /docs/security/cli/bulk-scans

16 - label: Bulk-scan command reference

17 url: /docs/security/cli/reference#codex-security-bulk-scan

18---

19 

20> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

21 

22## Before you start

23 

24Complete the [CLI quickstart](https://developers.openai.com/docs/security/cli) to install

25and authenticate Codex Security. Confirm that you have security scan access and

26Git access to the repositories you own or have permission to assess. Scans use

27your local permissions and don't pause for approval; review the

28[scan permissions guidance](https://developers.openai.com/docs/security/cli/reference#local-scan-permissions).

29 

30## Prepare the repository inventory

31 

32Start with a small set of repositories. Save this as `repositories.csv`, then

33replace the example URLs and commit placeholders:

34 

35```csv

36id,repository,revision

37payments,https://github.com/YOUR-ORG/payments.git,REPLACE_WITH_FULL_COMMIT_SHA

38identity,https://github.com/YOUR-ORG/identity.git,REPLACE_WITH_FULL_COMMIT_SHA

39```

40 

41Give each repository a unique `id` and a full commit SHA. Get the SHA from a

42local checkout with:

43 

44```bash

45git -C /path/to/repository rev-parse HEAD

46```

47 

48Each scan reviews that commit, including the full repository. Branch names,

49shortened hashes, and uncommitted changes aren't part of this workflow. For

50folder scopes or repository-specific instructions, see the

51[CSV options](https://developers.openai.com/docs/security/cli/bulk-scans#create-a-repository-csv).

52 

53**GitHub option:** You can [choose repositories

54 interactively](https://developers.openai.com/docs/security/cli/bulk-scans#discover-github-repositories)

55 from your GitHub account or organization instead of preparing a CSV.

56 

57## Run the scans

58 

59From the directory containing `repositories.csv`, replace the output path with

60a private directory outside the scanned repositories, then run:

61 

62```bash

63npx @openai/codex-security bulk-scan repositories.csv \

64 --output-dir /path/outside/repositories/security-scans \

65 --workers 2 \

66 --mode standard \

67 --max-attempts 1 \

68 --max-cost 5

69```

70 

71This runs two standard scans at a time, with one attempt per repository.

72`--max-cost 5` stops each attempt when its estimated cost exceeds $5. Work

73already in progress can exceed the estimate, so this is not a hard cap or a

74shared budget for the whole run. Choose these values before starting.

75 

76The CLI saves each repository's results in its own folder under

77`security-scans/artifacts/`. Keep the results private: they can contain source

78excerpts and vulnerability details.

79 

80## Review the results

81 

82Open the results directory and check:

83 

841. **Inventory:** Confirm the repositories and commits in `manifest.json`.

852. **Status:** Read `results.jsonl` for each attempt's status and artifact location.

863. **Coverage and findings:** In each attempt folder, read `coverage.json` for

87 gaps and exclusions, then `report.md` and `findings.json` for findings and

88 supporting evidence.

89 

90Exit code `0` means every repository completed successfully, not that no

91vulnerabilities exist. Exit code `2` indicates incomplete coverage, a repository

92that couldn't complete, or an input or runtime error. An empty findings list

93with incomplete coverage does not establish that the code is secure.

94 

95Record the next action for each repository: investigate a finding,

96[fix an accepted finding](https://developers.openai.com/docs/security/plugin/fix-findings), or follow up on

97coverage gaps. Use the scanned commit and supporting evidence when handing

98work to the responsible team.

99 

100To resume an interrupted run, repeat the same command with the same CSV,

101instructions, and output directory. The CLI skips completed scans and does

102not automatically retry incomplete coverage. Use a new output directory when changing

103the inventory, revisions, scopes, modes, or instructions. See

104[resume and retry guidance](https://developers.openai.com/docs/security/cli/bulk-scans#resume-a-campaign)

105for recovery details.

videos.md +0 −4 deleted

File Deleted View Diff

1# Videos – Codex

2 

3 

4