SpyBara
Go Premium Account
2026
27 Mar 2026, 18:23
18 May 2026, 22:01 14 May 2026, 21:00 14 May 2026, 07:00 13 May 2026, 00:57 12 May 2026, 01:59 11 May 2026, 18:00 7 May 2026, 20:02 7 May 2026, 17:08 5 May 2026, 23:00 2 May 2026, 06:45 2 May 2026, 00:48 1 May 2026, 18:29 30 Apr 2026, 18:36 29 Apr 2026, 12:40 29 Apr 2026, 00:50 25 Apr 2026, 06:37 25 Apr 2026, 00:42 24 Apr 2026, 18:20 24 Apr 2026, 12:28 23 Apr 2026, 18:31 23 Apr 2026, 12:28 23 Apr 2026, 00:46 22 Apr 2026, 18:29 22 Apr 2026, 00:42 21 Apr 2026, 18:29 21 Apr 2026, 12:30 21 Apr 2026, 06:45 20 Apr 2026, 18:26 20 Apr 2026, 06:53 18 Apr 2026, 18:18 17 Apr 2026, 00:44 16 Apr 2026, 18:31 16 Apr 2026, 00:46 15 Apr 2026, 18:31 15 Apr 2026, 06:44 14 Apr 2026, 18:31 14 Apr 2026, 12:29 13 Apr 2026, 18:37 13 Apr 2026, 00:44 12 Apr 2026, 06:38 10 Apr 2026, 18:23 9 Apr 2026, 00:33 8 Apr 2026, 18:32 8 Apr 2026, 00:40 7 Apr 2026, 00:40 2 Apr 2026, 18:23 31 Mar 2026, 06:35 31 Mar 2026, 00:39 28 Mar 2026, 06:26 28 Mar 2026, 00:36 27 Mar 2026, 18:23 27 Mar 2026, 00:39 26 Mar 2026, 18:27 25 Mar 2026, 18:24 23 Mar 2026, 18:22 20 Mar 2026, 00:35 18 Mar 2026, 12:23 18 Mar 2026, 00:36 17 Mar 2026, 18:24 17 Mar 2026, 00:33 16 Mar 2026, 18:25 16 Mar 2026, 12:23 14 Mar 2026, 00:32 13 Mar 2026, 18:15 13 Mar 2026, 00:34 11 Mar 2026, 00:31 9 Mar 2026, 00:34 8 Mar 2026, 18:10 8 Mar 2026, 00:35 7 Mar 2026, 18:10 7 Mar 2026, 06:14 7 Mar 2026, 00:33 6 Mar 2026, 00:38 5 Mar 2026, 18:41 5 Mar 2026, 06:22 5 Mar 2026, 00:34 4 Mar 2026, 18:18 4 Mar 2026, 06:20 3 Mar 2026, 18:20 3 Mar 2026, 00:35 27 Feb 2026, 18:15 24 Feb 2026, 06:27 24 Feb 2026, 00:33 23 Feb 2026, 18:27 21 Feb 2026, 00:33 20 Feb 2026, 12:16 19 Feb 2026, 20:53 19 Feb 2026, 20:37
31 Mar 2026, 00:39
18 May 2026, 22:01 14 May 2026, 21:00 14 May 2026, 07:00 13 May 2026, 00:57 12 May 2026, 01:59 11 May 2026, 18:00 7 May 2026, 20:02 7 May 2026, 17:08 5 May 2026, 23:00 2 May 2026, 06:45 2 May 2026, 00:48 1 May 2026, 18:29 30 Apr 2026, 18:36 29 Apr 2026, 12:40 29 Apr 2026, 00:50 25 Apr 2026, 06:37 25 Apr 2026, 00:42 24 Apr 2026, 18:20 24 Apr 2026, 12:28 23 Apr 2026, 18:31 23 Apr 2026, 12:28 23 Apr 2026, 00:46 22 Apr 2026, 18:29 22 Apr 2026, 00:42 21 Apr 2026, 18:29 21 Apr 2026, 12:30 21 Apr 2026, 06:45 20 Apr 2026, 18:26 20 Apr 2026, 06:53 18 Apr 2026, 18:18 17 Apr 2026, 00:44 16 Apr 2026, 18:31 16 Apr 2026, 00:46 15 Apr 2026, 18:31 15 Apr 2026, 06:44 14 Apr 2026, 18:31 14 Apr 2026, 12:29 13 Apr 2026, 18:37 13 Apr 2026, 00:44 12 Apr 2026, 06:38 10 Apr 2026, 18:23 9 Apr 2026, 00:33 8 Apr 2026, 18:32 8 Apr 2026, 00:40 7 Apr 2026, 00:40 2 Apr 2026, 18:23 31 Mar 2026, 06:35 31 Mar 2026, 00:39 28 Mar 2026, 06:26 28 Mar 2026, 00:36 27 Mar 2026, 18:23 27 Mar 2026, 00:39 26 Mar 2026, 18:27 25 Mar 2026, 18:24 23 Mar 2026, 18:22 20 Mar 2026, 00:35 18 Mar 2026, 12:23 18 Mar 2026, 00:36 17 Mar 2026, 18:24 17 Mar 2026, 00:33 16 Mar 2026, 18:25 16 Mar 2026, 12:23 14 Mar 2026, 00:32 13 Mar 2026, 18:15 13 Mar 2026, 00:34 11 Mar 2026, 00:31 9 Mar 2026, 00:34 8 Mar 2026, 18:10 8 Mar 2026, 00:35 7 Mar 2026, 18:10 7 Mar 2026, 06:14 7 Mar 2026, 00:33 6 Mar 2026, 00:38 5 Mar 2026, 18:41 5 Mar 2026, 06:22 5 Mar 2026, 00:34 4 Mar 2026, 18:18 4 Mar 2026, 06:20 3 Mar 2026, 18:20 3 Mar 2026, 00:35 27 Feb 2026, 18:15 24 Feb 2026, 06:27 24 Feb 2026, 00:33 23 Feb 2026, 18:27 21 Feb 2026, 00:33 20 Feb 2026, 12:16 19 Feb 2026, 20:53 19 Feb 2026, 20:37
Tue 3 00:35 Tue 3 18:20 Wed 4 06:20 Wed 4 18:18 Thu 5 00:34 Thu 5 06:22 Thu 5 18:41 Fri 6 00:38 Sat 7 00:33 Sat 7 06:14 Sat 7 18:10 Sun 8 00:35 Sun 8 18:10 Mon 9 00:34 Wed 11 00:31 Fri 13 00:34 Fri 13 18:15 Sat 14 00:32 Mon 16 12:23 Mon 16 18:25 Tue 17 00:33 Tue 17 18:24 Wed 18 00:36 Wed 18 12:23 Fri 20 00:35 Mon 23 18:22 Wed 25 18:24 Thu 26 18:27 Fri 27 00:39 Fri 27 18:23 Sat 28 00:36 Sat 28 06:26 Tue 31 00:39 Tue 31 06:35

cli.md +1 −1

Details

69 69 

70Launch a Codex Cloud task, choose environments, and apply the resulting diffs without leaving your terminal.](https://developers.openai.com/codex/cli/features#working-with-codex-cloud)[### Scripting Codex70Launch a Codex Cloud task, choose environments, and apply the resulting diffs without leaving your terminal.](https://developers.openai.com/codex/cli/features#working-with-codex-cloud)[### Scripting Codex

71 71 

72Automate repeatable workflows by scripting Codex with the `exec` command.](https://developers.openai.com/codex/sdk#using-codex-cli-programmatically)[### Model Context Protocol72Automate repeatable workflows by scripting Codex with the `exec` command.](https://developers.openai.com/codex/noninteractive)[### Model Context Protocol

73 73 

74Give Codex access to additional third-party tools and context with Model Context Protocol (MCP).](https://developers.openai.com/codex/mcp)[### Approval modes74Give Codex access to additional third-party tools and context with Model Context Protocol (MCP).](https://developers.openai.com/codex/mcp)[### Approval modes

75 75 

Details

57Use skill folders to author and iterate on workflows locally. If a plugin57Use skill folders to author and iterate on workflows locally. If a plugin

58already exists for the workflow, install it first to reuse a proven setup. When58already exists for the workflow, install it first to reuse a proven setup. When

59you want to distribute your own workflow across teams or bundle it with app59you want to distribute your own workflow across teams or bundle it with app

60integrations, package it as [plugins](https://developers.openai.com/codex/plugins). Skills remain the60integrations, package it as a [plugin](https://developers.openai.com/codex/plugins/build). Skills remain the

61authoring format; plugins are the installable distribution unit.61authoring format; plugins are the installable distribution unit.

62 62 

63A skill is typically a `SKILL.md` file plus optional scripts, references, and assets.63A skill is typically a `SKILL.md` file plus optional scripts, references, and assets.

Details

161- Telemetry or incident summaries161- Telemetry or incident summaries

162- Standard debugging flows162- Standard debugging flows

163 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 its ready to share broadly, package it as a [plugin](https://developers.openai.com/codex/plugins). One of the most important parts of a skill is the description. It should say what the skill does and when to use it.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 165 

166Personal skills are stored in `$HOME/.agents/skills`, and shared team skills166Personal skills are stored in `$HOME/.agents/skills`, and shared team skills

167 can be checked into `.agents/skills` inside a repository. This is especially167 can be checked into `.agents/skills` inside a repository. This is especially

plugins.md +72 −334

Details

1# Plugins1# Plugins

2 2 

3## What plugins are3## Overview

4 4 

5Plugins are installable bundles for reusable Codex workflows. They make it5Plugins bundle skills, app integrations, and MCP servers into reusable

6easier to share the same setup across projects or teams, and they can package6workflows for Codex.

7skills, optional app integrations, and MCP server configurations in a single7 

8place.8Extend what Codex can do, for example:

9 

10- Install the Gmail plugin to let Codex read and manage Gmail.

11- Install the Google Drive plugin to work across Drive, Docs, Sheets, and

12 Slides.

13- Install the Slack plugin to summarize channels or draft replies.

9 14 

10A plugin can contain:15A plugin can contain:

11 16 

12- **Skills:** prompts that describe workflows to Codex and can be17- **Skills:** reusable instructions for specific kinds of work. Codex can load

13 progressively discovered by the agent.18 them when needed so it follows the right steps and uses the right references

14- **Apps:** optional app integrations or connector mappings packaged with the19 or helper scripts for a task.

15 plugin.20- **Apps:** connections to tools like GitHub, Slack, or Google Drive, so

16- **MCP servers:** remote tools or shared context the plugin needs.21 Codex can read information from those tools and take actions in them.

22- **MCP servers:** services that give Codex access to additional tools or

23 shared information, often from systems outside your local project.

17 24 

18More plugin components are coming soon.25More plugin capabilities are coming soon.

19 26 

20## Use and install plugins27## Use and install plugins

21 28 

22### In the Codex app29### Plugin Directory in the Codex app

23 30 

24Plugins curated by OpenAI appear in the Codex directory. Start there when you31Open **Plugins** in the Codex app to browse and install curated plugins.

25want ready-made workflows or app integrations.

26 32 

27![Codex plugin directory](/images/codex/plugins/directory.png)33![Codex Plugins page](/images/codex/plugins/directory.png)

28 34 

29### In the CLI35### Plugin directory in the CLI

30 36 

31In Codex CLI, run the following command to open the plugins surface:37In Codex CLI, run the following command to open the plugins list:

32 38 

33```text39```text

34codex40codex

35/plugins41/plugins

36```42```

37 43 

38![Plugin directory in Codex CLI](/images/codex/plugins/cli_light.png)44![Plugins list in Codex CLI](/images/codex/plugins/cli_light.png)

39 

40### Use plugins locally

41 

42For the fastest setup, use the built-in `@plugin-creator` skill to scaffold a

43local plugin.

44 

45![plugin-creator skill in Codex](/images/codex/plugins/plugin-creator.png)

46 

47It creates the required `.codex-plugin/plugin.json` manifest and

48can also generate a local marketplace entry for testing.

49 

50If you already have a plugin from another ecosystem or a plugin you built

51yourself, you can add it to your local marketplace with `@plugin-creator`.

52 

53![how to invoke the plugin-creator skill](/images/codex/plugins/plugin-creator-invoke.png)

54 

55In the plugin directory, you can also load your own local marketplace with a

56custom marketplace name and browse the plugins there.

57 

58![custom local marketplace in the plugin directory](/images/codex/plugins/codex-local-plugin-light.png)

59 

60#### Install a local plugin manually

61 

62Use a repo marketplace or a personal marketplace, depending on who should be

63able to access the plugin.

64 

65Add a marketplace file at `$REPO_ROOT/.agents/plugins/marketplace.json`

66and store your plugins under `$REPO_ROOT/plugins/`.

67 

68**Repo marketplace example**

69 

70Step 1: Copy the plugin folder into `$REPO_ROOT/plugins/my-plugin`.

71 

72```

73mkdir -p ./plugins

74cp -R /absolute/path/to/my-plugin ./plugins/my-plugin

75```

76 

77Step 2: Add or update `$REPO_ROOT/.agents/plugins/marketplace.json` so

78that `source.path` points to that plugin directory with a `./`-prefixed

79relative path:

80 

81```

82{

83 "name": "local-repo",

84 "plugins": [

85 {

86 "name": "my-plugin",

87 "source": {

88 "source": "local",

89 "path": "./plugins/my-plugin"

90 },

91 "policy": {

92 "installation": "AVAILABLE",

93 "authentication": "ON_INSTALL"

94 },

95 "category": "Productivity"

96 }

97 ]

98}

99```

100 

101Step 3: Restart Codex and verify that the plugin appears.

102 

103Add a marketplace file at `~/.agents/plugins/marketplace.json` and store

104your plugins under `~/.codex/plugins/`.

105 

106**Personal marketplace example**

107 

108Step 1: Copy the plugin folder into `~/.codex/plugins/my-plugin`.

109 

110```

111mkdir -p ~/.codex/plugins

112cp -R /absolute/path/to/my-plugin ~/.codex/plugins/my-plugin

113```

114 

115Step 2: Add or update `~/.agents/plugins/marketplace.json` so that the

116plugin entry’s `source.path` points to that directory.

117 

118Step 3: Restart Codex and verify that the plugin appears.

119 

120The marketplace file points to the plugin location, so those directories are

121examples rather than fixed requirements. Codex resolves `source.path` relative

122to the marketplace root, not relative to the `.agents/plugins/` folder. See

123[Marketplace metadata](#marketplace-metadata) for the file format.

124 

125After you change the plugin, update the plugin directory that your marketplace

126entry points to and restart Codex so the local install picks up the new files.

127 

128### Marketplace metadata

129 

130If you maintain a repo marketplace, define it in

131`$REPO_ROOT/.agents/plugins/marketplace.json`. For a personal marketplace, use

132`~/.agents/plugins/marketplace.json`. A marketplace file controls plugin

133ordering and install policies in Codex-facing catalogs. Before you add a plugin

134to a marketplace, make sure its `version`, publisher metadata, and

135install-surface copy are ready for other developers to see.

136 

137```

138{

139 "name": "openai-curated",

140 "interface": {

141 "displayName": "ChatGPT Official"

142 },

143 "plugins": [

144 {

145 "name": "my-plugin",

146 "source": {

147 "source": "local",

148 "path": "./plugins/my-plugin"

149 },

150 "policy": {

151 "installation": "AVAILABLE",

152 "authentication": "ON_INSTALL"

153 },

154 "category": "Productivity"

155 }

156 ]

157}

158```

159 

160- Use top-level `name` to identify the marketplace.

161- Use `interface.displayName` for the marketplace title shown in Codex.

162- Point each plugin entry’s `source.path` at the plugin directory you want

163 Codex to load. For repo installs, that often lives under

164 `./plugins/`. For personal installs, it often lives under

165 `~/.codex/plugins/`.

166- Keep `source.path` relative to the marketplace root, start it with `./`, and

167 keep it inside that root.

168- Always include `policy.installation`, `policy.authentication`, and

169 `category` on each plugin entry.

170- Use `policy.installation` values such as `AVAILABLE`,

171 `INSTALLED_BY_DEFAULT`, or `NOT_AVAILABLE`.

172- Use `policy.authentication` to decide whether auth happens on install or

173 first use.

174 45 

175The marketplace controls where Codex loads the plugin from. `source.path` can46### Install and use a plugin

176point somewhere else if your plugin lives outside those example directories. A

177marketplace file can live in the repo where you are developing the plugin or in

178a separate marketplace repo, and one marketplace file can point to one plugin

179or many.

180 47 

181### How Codex uses marketplaces48Once you open the plugin directory:

182 49 

183A plugin marketplace is a JSON catalog of plugins that Codex can read and501. Search or browse for a plugin, then open its details.

184install.512. Select the install button. In the app, select the plus button or

52 **Add to Codex**. In the CLI, select `Install plugin`.

533. If the plugin needs an external app, connect it when prompted. Some plugins

54 ask you to authenticate during install. Others wait until the first time you

55 use them.

564. After installation, start a new thread and ask Codex to use the plugin.

185 57 

186Codex can read marketplace files from:58After you install a plugin, you can use it directly in the prompt window:

187 59 

188- the curated marketplace that powers the official Plugin Directory60![Codex Plugins page](/images/codex/plugins/plugin-github-invoke.png)

189- a repo marketplace at `$REPO_ROOT/.agents/plugins/marketplace.json`

190- a personal marketplace at `~/.agents/plugins/marketplace.json`

191 61 

192You can install any plugin exposed through a marketplace. Codex installs62Describe the task directly

193plugins into

194`~/.codex/plugins/cache/$MARKETPLACE_NAME/$PLUGIN_NAME/$VERSION/`. For local

195plugins, `$VERSION` is `local`, and Codex loads the installed copy from that

196cache path rather than directly from the marketplace entry.

197 63 

198You can enable or disable each plugin individually. Codex stores each plugin’s64 Ask for the outcome you want, such as "Summarize unread Gmail threads

199on or off state in `~/.codex/config.toml`.65 from today" or "Pull the latest launch notes from Google Drive."

200 66 

201## Build and distribute plugins67 Use this when you want Codex to choose the right installed tools for the

68 task.

202 69 

203### When to create a plugin70Choose a specific plugin

204 71 

205Use local skills when:72 Type <code>@</code> to invoke the plugin or one of its bundled skills

73 explicitly.

206 74 

207- You are iterating on one repo or one workflow.75 Use this when you want to be specific about which plugin or skill Codex

208- The behavior is personal or project-specific.76should use. See [Codex app commands](https://developers.openai.com/codex/app/commands) and

209- You are experimenting before you package something reusable.77[Skills](https://developers.openai.com/codex/skills).

210 78 

211Use plugins when:79### How permissions and data sharing work

212 80 

213- You want the same skills or app integrations available across teams or81Installing a plugin makes its workflows available in Codex, but your existing

214 projects.82[approval settings](https://developers.openai.com/codex/agent-approvals-security) still apply. Any

215- You want to bundle skills, MCP config, and app integrations into one83connected external services remain subject to their own authentication,

216 installable unit.84privacy, and data-sharing policies.

217- You want a stable, versioned package for teammates or a marketplace.

218 85 

219Start local, then package the workflow as a plugin when you are ready to share86- Bundled skills are available as soon as you install the plugin.

220it.87- If a plugin includes apps, Codex may prompt you to install or sign in to

88 those apps in ChatGPT during setup or the first time you use them.

89- If a plugin includes MCP servers, they may require additional setup or

90 authentication before you can use them.

91- When Codex sends data through a bundled app, that app's terms and privacy

92 policy apply.

221 93 

222### Plugin structure94### Remove or turn off a plugin

223 95 

224Every plugin has a manifest at `.codex-plugin/plugin.json`. It can also include96To remove a plugin, reopen it from the plugin browser and select

225a `skills/` directory, an `.app.json` file that points at one or more apps or97**Uninstall plugin**.

226connectors, and assets used to present the plugin across supported surfaces.

227 98 

228- my-plugin/99Uninstalling a plugin removes the plugin bundle from Codex, but bundled apps

100stay installed until you manage them in ChatGPT.

229 101 

230 - .codex-plugin/102If you want to keep a plugin installed but turn it off, set its entry in

103`~/.codex/config.toml` to `enabled = false`, then restart Codex:

231 104 

232 - plugin.json Required: plugin manifest105```toml

233 - skills/106[plugins."gmail@openai-curated"]

234 107enabled = false

235 - my-skill/

236 

237 - SKILL.md Optional: skill instructions

238 - .app.json Optional: app or connector mappings

239 - .mcp.json Optional: MCP server configuration

240 - assets/ Optional: icons, logos, screenshots

241 

242Only `plugin.json` belongs in `.codex-plugin/`. Keep `skills/`, `assets/`,

243`.mcp.json`, and `.app.json` at the plugin root.

244 

245Published plugins typically use a richer manifest than the minimal example that

246appears in quick-start scaffolds. The manifest has three jobs:

247 

248- Identify the plugin.

249- Point to bundled components such as skills, apps, or MCP servers.

250- Provide install-surface metadata such as descriptions, icons, and legal links.

251 

252Here’s a complete manifest example:

253 

254```

255{

256 "name": "my-plugin",

257 "version": "0.1.0",

258 "description": "Bundle reusable skills and app integrations.",

259 "author": {

260 "name": "Your team",

261 "email": "team@example.com",

262 "url": "https://example.com"

263 },

264 "homepage": "https://example.com/plugins/my-plugin",

265 "repository": "https://github.com/example/my-plugin",

266 "license": "MIT",

267 "keywords": ["research", "crm"],

268 "skills": "./skills/",

269 "mcpServers": "./.mcp.json",

270 "apps": "./.app.json",

271 "interface": {

272 "displayName": "My Plugin",

273 "shortDescription": "Reusable skills and apps",

274 "longDescription": "Distribute skills and app integrations together.",

275 "developerName": "Your team",

276 "category": "Productivity",

277 "capabilities": ["Read", "Write"],

278 "websiteURL": "https://example.com",

279 "privacyPolicyURL": "https://example.com/privacy",

280 "termsOfServiceURL": "https://example.com/terms",

281 "defaultPrompt": [

282 "Use My Plugin to summarize new CRM notes.",

283 "Use My Plugin to triage new customer follow-ups."

284 ],

285 "brandColor": "#10A37F",

286 "composerIcon": "./assets/icon.png",

287 "logo": "./assets/logo.png",

288 "screenshots": ["./assets/screenshot-1.png"]

289 }

290}

291```

292 

293`.codex-plugin/plugin.json` is the required entry point. The other manifest

294fields are optional, but published plugins commonly use them.

295 

296### Create your first plugin

297 

298Start with a minimal plugin that packages one skill.

299 

3001. Create a plugin folder with a manifest at `.codex-plugin/plugin.json`.

301 

302```

303mkdir -p my-first-plugin/.codex-plugin

304```108```

305 109 

306`my-first-plugin/.codex-plugin/plugin.json`110## Build your own plugin

307 

308```

309{

310 "name": "my-first-plugin",

311 "version": "1.0.0",

312 "description": "Reusable greeting workflow",

313 "skills": "./skills/"

314}

315```

316 

317Use a stable plugin `name` in kebab-case. Codex uses it as the plugin

318identifier and component namespace.

319 

3202. Add a skill under `skills/<skill-name>/SKILL.md`.

321 

322```

323mkdir -p my-first-plugin/skills/hello

324```

325 

326`my-first-plugin/skills/hello/SKILL.md`

327 

328```

329name: hello

330description: Greet the user with a friendly message.

331 

332Greet the user warmly and ask how you can help.

333```

334 

3353. Follow [Use plugins locally](#use-plugins-locally) to load the plugin in

336 Codex.

337 

338From there, you can add MCP config, app integrations, or marketplace metadata

339as needed.

340 

341### Manifest fields

342 

343Use the top-level fields to define package metadata and point to bundled

344components:

345 

346- `name`, `version`, and `description` identify the plugin.

347- `author`, `homepage`, `repository`, `license`, and `keywords` provide

348 publisher and discovery metadata.

349- `skills`, `mcpServers`, and `apps` point to bundled components relative to

350 the plugin root.

351- `interface` controls how install surfaces present the plugin.

352 

353Use the `interface` object for install-surface metadata:

354 

355- `displayName`, `shortDescription`, and `longDescription` control the title and

356 descriptive copy.

357- `developerName`, `category`, and `capabilities` add publisher and capability

358 metadata.

359- `websiteURL`, `privacyPolicyURL`, and `termsOfServiceURL` provide external

360 links.

361- `defaultPrompt`, `brandColor`, `composerIcon`, `logo`, and `screenshots`

362 control starter prompts and visual presentation.

363 

364### Path rules

365 

366- Keep manifest paths relative to the plugin root and start them with `./`.

367- Store visual assets such as `composerIcon`, `logo`, and `screenshots` under

368 `./assets/` when possible.

369- Use `skills` for bundled skill folders, `apps` for `.app.json`, and

370 `mcpServers` for `.mcp.json`.

371 

372### Publish official public plugins

373 

374Adding plugins to the official Plugin Directory is coming soon.

375 111 

376Self-serve plugin publishing and management are coming soon.112If you want to create, test, or distribute your own plugin, see

113[Build plugins](https://developers.openai.com/codex/plugins/build). That page covers local scaffolding,

114manual marketplace setup, plugin manifests, and packaging guidance.

plugins/build.md +359 −0 added

Details

1# Build plugins

2 

3This page is for plugin authors. If you want to browse, install, and use

4plugins in Codex, see [Plugins](https://developers.openai.com/codex/plugins). If you are still iterating on

5one repo or one personal workflow, start with a local skill. Build a plugin

6when you want to share that workflow across teams, bundle app integrations or

7MCP config, or publish a stable package.

8 

9## Create a plugin with `$plugin-creator`

10 

11For the fastest setup, use the built-in `$plugin-creator` skill.

12 

13![plugin-creator skill in Codex](/images/codex/plugins/plugin-creator.png)

14 

15It scaffolds the required `.codex-plugin/plugin.json` manifest and can also

16generate a local marketplace entry for testing. If you already have a plugin

17folder, you can still use `$plugin-creator` to wire it into a local

18marketplace.

19 

20![how to invoke the plugin-creator skill](/images/codex/plugins/plugin-creator-invoke.png)

21 

22### Build your own curated plugin list

23 

24A marketplace is a JSON catalog of plugins. `$plugin-creator` can generate one

25for a single plugin, and you can keep adding entries to that same marketplace

26to build your own curated list for a repo, team, or personal workflow.

27 

28In Codex, each marketplace appears as a selectable source in the plugin

29directory. Use `$REPO_ROOT/.agents/plugins/marketplace.json` for a repo-scoped

30list or `~/.agents/plugins/marketplace.json` for a personal list. Add one

31entry per plugin under `plugins[]`, point each `source.path` at the plugin

32folder with a `./`-prefixed path relative to the marketplace root, and set

33`interface.displayName` to the label you want Codex to show in the marketplace

34picker. Then restart Codex. After that, open the plugin directory, choose your

35marketplace, and browse or install the plugins in that curated list.

36 

37You don't need a separate marketplace per plugin. One marketplace can expose a

38single plugin while you are testing, then grow into a larger curated catalog as

39you add more plugins.

40 

41![custom local marketplace in the plugin directory](/images/codex/plugins/codex-local-plugin-light.png)

42 

43### Create a plugin manually

44 

45Start with a minimal plugin that packages one skill.

46 

471. Create a plugin folder with a manifest at `.codex-plugin/plugin.json`.

48 

49```bash

50mkdir -p my-first-plugin/.codex-plugin

51```

52 

53`my-first-plugin/.codex-plugin/plugin.json`

54 

55```json

56{

57 "name": "my-first-plugin",

58 "version": "1.0.0",

59 "description": "Reusable greeting workflow",

60 "skills": "./skills/"

61}

62```

63 

64Use a stable plugin `name` in kebab-case. Codex uses it as the plugin

65identifier and component namespace.

66 

672. Add a skill under `skills/<skill-name>/SKILL.md`.

68 

69```bash

70mkdir -p my-first-plugin/skills/hello

71```

72 

73`my-first-plugin/skills/hello/SKILL.md`

74 

75```md

76---

77name: hello

78description: Greet the user with a friendly message.

79---

80 

81Greet the user warmly and ask how you can help.

82```

83 

843. Add the plugin to a marketplace. Use `$plugin-creator` to generate one, or

85 follow [Build your own curated plugin list](#build-your-own-curated-plugin-list)

86 to wire the plugin into Codex manually.

87 

88From there, you can add MCP config, app integrations, or marketplace metadata

89as needed.

90 

91### Install a local plugin manually

92 

93Use a repo marketplace or a personal marketplace, depending on who should be

94able to access the plugin or curated list.

95 

96 Add a marketplace file at `$REPO_ROOT/.agents/plugins/marketplace.json`

97 and store your plugins under `$REPO_ROOT/plugins/`.

98 

99 **Repo marketplace example**

100 

101 Step 1: Copy the plugin folder into `$REPO_ROOT/plugins/my-plugin`.

102 

103```bash

104mkdir -p ./plugins

105cp -R /absolute/path/to/my-plugin ./plugins/my-plugin

106```

107 

108 Step 2: Add or update `$REPO_ROOT/.agents/plugins/marketplace.json` so

109 that `source.path` points to that plugin directory with a `./`-prefixed

110 relative path:

111 

112```json

113{

114 "name": "local-repo",

115 "plugins": [

116 {

117 "name": "my-plugin",

118 "source": {

119 "source": "local",

120 "path": "./plugins/my-plugin"

121 },

122 "policy": {

123 "installation": "AVAILABLE",

124 "authentication": "ON_INSTALL"

125 },

126 "category": "Productivity"

127 }

128 ]

129}

130```

131 

132 Step 3: Restart Codex and verify that the plugin appears.

133 

134 Add a marketplace file at `~/.agents/plugins/marketplace.json` and store

135 your plugins under `~/.codex/plugins/`.

136 

137 **Personal marketplace example**

138 

139 Step 1: Copy the plugin folder into `~/.codex/plugins/my-plugin`.

140 

141```bash

142mkdir -p ~/.codex/plugins

143cp -R /absolute/path/to/my-plugin ~/.codex/plugins/my-plugin

144```

145 

146 Step 2: Add or update `~/.agents/plugins/marketplace.json` so that the

147 plugin entry's `source.path` points to that directory.

148 

149 Step 3: Restart Codex and verify that the plugin appears.

150 

151The marketplace file points to the plugin location, so those directories are

152examples rather than fixed requirements. Codex resolves `source.path` relative

153to the marketplace root, not relative to the `.agents/plugins/` folder. See

154[Marketplace metadata](#marketplace-metadata) for the file format.

155 

156After you change the plugin, update the plugin directory that your marketplace

157entry points to and restart Codex so the local install picks up the new files.

158 

159### Marketplace metadata

160 

161If you maintain a repo marketplace, define it in

162`$REPO_ROOT/.agents/plugins/marketplace.json`. For a personal marketplace, use

163`~/.agents/plugins/marketplace.json`. A marketplace file controls plugin

164ordering and install policies in Codex-facing catalogs. It can represent one

165plugin while you are testing or a curated list of plugins that you want Codex

166to show together under one marketplace name. Before you add a plugin to a

167marketplace, make sure its `version`, publisher metadata, and install-surface

168copy are ready for other developers to see.

169 

170```json

171{

172 "name": "local-example-plugins",

173 "interface": {

174 "displayName": "Local Example Plugins"

175 },

176 "plugins": [

177 {

178 "name": "my-plugin",

179 "source": {

180 "source": "local",

181 "path": "./plugins/my-plugin"

182 },

183 "policy": {

184 "installation": "AVAILABLE",

185 "authentication": "ON_INSTALL"

186 },

187 "category": "Productivity"

188 },

189 {

190 "name": "research-helper",

191 "source": {

192 "source": "local",

193 "path": "./plugins/research-helper"

194 },

195 "policy": {

196 "installation": "AVAILABLE",

197 "authentication": "ON_INSTALL"

198 },

199 "category": "Productivity"

200 }

201 ]

202}

203```

204 

205- Use top-level `name` to identify the marketplace.

206- Use `interface.displayName` for the marketplace title shown in Codex.

207- Add one object per plugin under `plugins` to build a curated list that Codex

208 shows under that marketplace title.

209- Point each plugin entry's `source.path` at the plugin directory you want

210 Codex to load. For repo installs, that often lives under `./plugins/`. For

211 personal installs, a common pattern is `./.codex/plugins/<plugin-name>`.

212- Keep `source.path` relative to the marketplace root, start it with `./`, and

213 keep it inside that root.

214- Always include `policy.installation`, `policy.authentication`, and

215 `category` on each plugin entry.

216- Use `policy.installation` values such as `AVAILABLE`,

217 `INSTALLED_BY_DEFAULT`, or `NOT_AVAILABLE`.

218- Use `policy.authentication` to decide whether auth happens on install or

219 first use.

220 

221The marketplace controls where Codex loads the plugin from. `source.path` can

222point somewhere else if your plugin lives outside those example directories. A

223marketplace file can live in the repo where you are developing the plugin or in

224a separate marketplace repo, and one marketplace file can point to one plugin

225or many.

226 

227### How Codex uses marketplaces

228 

229A plugin marketplace is a JSON catalog of plugins that Codex can read and

230install.

231 

232Codex can read marketplace files from:

233 

234- the curated marketplace that powers the official Plugin Directory

235- a repo marketplace at `$REPO_ROOT/.agents/plugins/marketplace.json`

236- a personal marketplace at `~/.agents/plugins/marketplace.json`

237 

238You can install any plugin exposed through a marketplace. Codex installs

239plugins into

240`~/.codex/plugins/cache/$MARKETPLACE_NAME/$PLUGIN_NAME/$VERSION/`. For local

241plugins, `$VERSION` is `local`, and Codex loads the installed copy from that

242cache path rather than directly from the marketplace entry.

243 

244You can enable or disable each plugin individually. Codex stores each plugin's

245on or off state in `~/.codex/config.toml`.

246 

247## Package and distribute plugins

248 

249### Plugin structure

250 

251Every plugin has a manifest at `.codex-plugin/plugin.json`. It can also include

252a `skills/` directory, an `.app.json` file that points at one or more apps or

253connectors, and assets used to present the plugin across supported surfaces.

254 

255- my-plugin/

256 

257 - .codex-plugin/

258 

259 - plugin.json Required: plugin manifest

260 - skills/

261 

262 - my-skill/

263 

264 - SKILL.md Optional: skill instructions

265 - .app.json Optional: app or connector mappings

266 - .mcp.json Optional: MCP server configuration

267 - assets/ Optional: icons, logos, screenshots

268 

269Only `plugin.json` belongs in `.codex-plugin/`. Keep `skills/`, `assets/`,

270`.mcp.json`, and `.app.json` at the plugin root.

271 

272Published plugins typically use a richer manifest than the minimal example that

273appears in quick-start scaffolds. The manifest has three jobs:

274 

275- Identify the plugin.

276- Point to bundled components such as skills, apps, or MCP servers.

277- Provide install-surface metadata such as descriptions, icons, and legal

278 links.

279 

280Here's a complete manifest example:

281 

282```json

283{

284 "name": "my-plugin",

285 "version": "0.1.0",

286 "description": "Bundle reusable skills and app integrations.",

287 "author": {

288 "name": "Your team",

289 "email": "team@example.com",

290 "url": "https://example.com"

291 },

292 "homepage": "https://example.com/plugins/my-plugin",

293 "repository": "https://github.com/example/my-plugin",

294 "license": "MIT",

295 "keywords": ["research", "crm"],

296 "skills": "./skills/",

297 "mcpServers": "./.mcp.json",

298 "apps": "./.app.json",

299 "interface": {

300 "displayName": "My Plugin",

301 "shortDescription": "Reusable skills and apps",

302 "longDescription": "Distribute skills and app integrations together.",

303 "developerName": "Your team",

304 "category": "Productivity",

305 "capabilities": ["Read", "Write"],

306 "websiteURL": "https://example.com",

307 "privacyPolicyURL": "https://example.com/privacy",

308 "termsOfServiceURL": "https://example.com/terms",

309 "defaultPrompt": [

310 "Use My Plugin to summarize new CRM notes.",

311 "Use My Plugin to triage new customer follow-ups."

312 ],

313 "brandColor": "#10A37F",

314 "composerIcon": "./assets/icon.png",

315 "logo": "./assets/logo.png",

316 "screenshots": ["./assets/screenshot-1.png"]

317 }

318}

319```

320 

321`.codex-plugin/plugin.json` is the required entry point. The other manifest

322fields are optional, but published plugins commonly use them.

323 

324### Manifest fields

325 

326Use the top-level fields to define package metadata and point to bundled

327components:

328 

329- `name`, `version`, and `description` identify the plugin.

330- `author`, `homepage`, `repository`, `license`, and `keywords` provide

331 publisher and discovery metadata.

332- `skills`, `mcpServers`, and `apps` point to bundled components relative to

333 the plugin root.

334- `interface` controls how install surfaces present the plugin.

335 

336Use the `interface` object for install-surface metadata:

337 

338- `displayName`, `shortDescription`, and `longDescription` control the title

339 and descriptive copy.

340- `developerName`, `category`, and `capabilities` add publisher and capability

341 metadata.

342- `websiteURL`, `privacyPolicyURL`, and `termsOfServiceURL` provide external

343 links.

344- `defaultPrompt`, `brandColor`, `composerIcon`, `logo`, and `screenshots`

345 control starter prompts and visual presentation.

346 

347### Path rules

348 

349- Keep manifest paths relative to the plugin root and start them with `./`.

350- Store visual assets such as `composerIcon`, `logo`, and `screenshots` under

351 `./assets/` when possible.

352- Use `skills` for bundled skill folders, `apps` for `.app.json`, and

353 `mcpServers` for `.mcp.json`.

354 

355### Publish official public plugins

356 

357Adding plugins to the official Plugin Directory is coming soon.

358 

359Self-serve plugin publishing and management are coming soon.

skills.md +3 −3

Details

2 2 

3Use agent skills to extend Codex with task-specific capabilities. A skill packages instructions, resources, and optional scripts so Codex can follow a workflow reliably. Skills build on the [open agent skills standard](https://agentskills.io).3Use agent skills to extend Codex with task-specific capabilities. A skill packages instructions, resources, and optional scripts so Codex can follow a workflow reliably. Skills build on the [open agent skills standard](https://agentskills.io).

4 4 

5Skills are the authoring format for reusable workflows. Plugins are the installable distribution unit for reusable skills and apps in Codex. Use skills to design the workflow itself, then package it as a [plugin](https://developers.openai.com/codex/plugins) when you want other developers to install it.5Skills are the authoring format for reusable workflows. Plugins are the installable distribution unit for reusable skills and apps in Codex. Use skills to design the workflow itself, then package it as a [plugin](https://developers.openai.com/codex/plugins/build) when you want other developers to install it.

6 6 

7Skills are available in the Codex CLI, IDE extension, and Codex app.7Skills are available in the Codex CLI, IDE extension, and Codex app.

8 8 


69 69 

70These locations are for authoring and local discovery. When you want to70These locations are for authoring and local discovery. When you want to

71distribute reusable skills beyond a single repo, or optionally bundle them with71distribute reusable skills beyond a single repo, or optionally bundle them with

72app integrations, use [plugins](https://developers.openai.com/codex/plugins).72app integrations, use [plugins](https://developers.openai.com/codex/plugins/build).

73 73 

74## Distribute skills with plugins74## Distribute skills with plugins

75 75 

76Direct skill folders are best for local authoring and repo-scoped workflows. If76Direct skill folders are best for local authoring and repo-scoped workflows. If

77you want to distribute a reusable skill, bundle two or more skills together, or77you want to distribute a reusable skill, bundle two or more skills together, or

78ship a skill alongside an app integration, package them as a78ship a skill alongside an app integration, package them as a

79[plugin](https://developers.openai.com/codex/plugins).79[plugin](https://developers.openai.com/codex/plugins/build).

80 80 

81Plugins can include one or more skills. They can also optionally bundle app81Plugins can include one or more skills. They can also optionally bundle app

82mappings, MCP server configuration, and presentation assets in a single82mappings, MCP server configuration, and presentation assets in a single

Details

101 101 

102Use Codex to update existing presentations or build new decks by editing slides directly...102Use Codex to update existing presentations or build new decks by editing slides directly...

103 103 

104Data Automation](https://developers.openai.com/codex/use-cases/generate-slide-decks)[![](/images/codex/codex-wallpaper-1.webp)104Data Workflow](https://developers.openai.com/codex/use-cases/generate-slide-decks)[![](/images/codex/codex-wallpaper-1.webp)

105 105 

106### Create browser-based games106### Create browser-based games

107 107 

Details

130 130 

131Mention `@Codex` in Slack to start a task tied to the right repo and environment, then...131Mention `@Codex` in Slack to start a task tied to the right repo and environment, then...

132 132 

133Integrations Automation](https://developers.openai.com/codex/use-cases/slack-coding-tasks)[![](/images/codex/codex-wallpaper-2.webp)133Integrations Workflow](https://developers.openai.com/codex/use-cases/slack-coding-tasks)[![](/images/codex/codex-wallpaper-2.webp)

134 134 

135### Analyze datasets and ship reports135### Analyze datasets and ship reports

136 136 

Details

66 66 

67Use Codex to update existing presentations or build new decks by editing slides directly...67Use Codex to update existing presentations or build new decks by editing slides directly...

68 68 

69Data Automation](https://developers.openai.com/codex/use-cases/generate-slide-decks)[![](/images/codex/codex-wallpaper-2.webp)69Data Workflow](https://developers.openai.com/codex/use-cases/generate-slide-decks)[![](/images/codex/codex-wallpaper-2.webp)

70 70 

71### Kick off coding tasks from Slack71### Kick off coding tasks from Slack

72 72 

73Mention `@Codex` in Slack to start a task tied to the right repo and environment, then...73Mention `@Codex` in Slack to start a task tied to the right repo and environment, then...

74 74 

75Integrations Automation](https://developers.openai.com/codex/use-cases/slack-coding-tasks)75Integrations Workflow](https://developers.openai.com/codex/use-cases/slack-coding-tasks)

Details

44 44 

45Use Codex to update existing presentations or build new decks by editing slides directly...45Use Codex to update existing presentations or build new decks by editing slides directly...

46 46 

47Data Automation](https://developers.openai.com/codex/use-cases/generate-slide-decks)[![](/images/codex/codex-wallpaper-2.webp)47Data Workflow](https://developers.openai.com/codex/use-cases/generate-slide-decks)[![](/images/codex/codex-wallpaper-2.webp)

48 48 

49### Analyze datasets and ship reports49### Analyze datasets and ship reports

50 50