# OpenAI Plugins Installation Policies: Understanding the "AVAILABLE" Constraint

> Understand OpenAI plugins installation policies, focusing on the AVAILABLE constraint. Learn how end-users can install plugins via the marketplace manifest.

- Repository: [OpenAI/plugins](https://github.com/openai/plugins)
- Tags: best-practices
- Published: 2026-06-24

---

**The OpenAI Plugins repository currently defines only one installation policy—`"AVAILABLE"`—which grants end-users permission to install plugins via the marketplace manifest located at [`/.agents/plugins/marketplace.json`](https://github.com/openai/plugins/blob/main//.agents/plugins/marketplace.json).**

The `openai/plugins` repository centralizes plugin governance through a strict policy framework defined in its marketplace configuration. Understanding the installation policies for plugins is essential for developers integrating with the Codex ecosystem, as these policies determine whether a plugin can be deployed by end-users. Currently, the repository maintains a uniform availability standard across all listed plugins, with no alternative restriction states implemented.

## Where Installation Policies Are Defined

### The Marketplace Manifest File

All plugin installation policies reside in the [`/.agents/plugins/marketplace.json`](https://github.com/openai/plugins/blob/main//.agents/plugins/marketplace.json) file. This central manifest serves as the authoritative source for plugin metadata, including source paths, categories, and policy configurations. Each plugin entry contains a `policy` object that explicitly declares its installation permissions according to the repository's schema.

### The Single "AVAILABLE" Value

According to the source code, **every** plugin in the repository specifies `"installation": "AVAILABLE"` within its policy block. This string literal indicates that the plugin is installable by end-users, whether through the Codex UI or API calls. Notably, the repository does not currently implement alternative states such as `"UNAVAILABLE"`, `"RESTRICTED"`, or `"PENDING"`.

## Installation Policy Structure and Examples

The JSON schema in [`marketplace.json`](https://github.com/openai/plugins/blob/main/marketplace.json) follows a consistent pattern for each plugin entry. The `policy` object contains the installation field alongside authentication settings, though only the installation aspect maintains a fixed value across the repository.

```json
{
  "name": "linear",
  "source": {
    "source": "local",
    "path": "./plugins/linear"
  },
  "policy": {
    "installation": "AVAILABLE",
    "authentication": "ON_INSTALL"
  },
  "category": "Productivity"
}

```

This structure repeats identically for plugins such as `gmail`, `slack`, `figma`, and `build-web-apps`. The `"installation"` field remains strictly constrained to the `"AVAILABLE"` string, indicating universal installability for current marketplace entries.

## Installation vs. Authentication Policies

While installation policies remain limited to a single value, the repository implements more granular **authentication policies** that control when credentials are validated. These include `"ON_INSTALL"` (requiring immediate authentication) and `"ON_USE"` (deferring authentication until plugin invocation). However, these authentication settings operate independently from the installation policy, which uniformly permits plugin acquisition.

## Implications for Plugin Developers

Developers contributing to the `openai/plugins` repository should recognize that the centralized [`marketplace.json`](https://github.com/openai/plugins/blob/main/marketplace.json) manifest governs all installation permissions. Unlike plugin-specific metadata files such as `plugins/<plugin>/.codex-plugin/plugin.json`, which describe functional capabilities, the marketplace manifest exclusively controls deployment eligibility. Currently, no mechanism exists within the repository to restrict installation through policy flags, meaning all submitted plugins must be ready for immediate public availability.

## Summary

- **Single Policy Value**: The [`/.agents/plugins/marketplace.json`](https://github.com/openai/plugins/blob/main//.agents/plugins/marketplace.json) file assigns `"installation": "AVAILABLE"` to every plugin without exception.
- **Universal Availability**: No restricted, unavailable, or pending installation states currently exist in the repository.
- **Centralized Control**: Installation permissions are defined in the marketplace manifest, not in individual plugin configuration files.
- **Authentication Separation**: While installation is always permitted, authentication timing (`ON_INSTALL` vs `ON_USE`) varies by plugin.

## Frequently Asked Questions

### What values can the installation policy field contain in OpenAI Plugins?

Currently, the installation policy field only accepts the string `"AVAILABLE"`. The repository does not define any alternative values such as `"UNAVAILABLE"` or `"RESTRICTED"`, meaning all plugins listed in [`marketplace.json`](https://github.com/openai/plugins/blob/main/marketplace.json) are installable by end-users.

### Where is the installation policy for plugins defined?

Installation policies are defined centrally in the [`/.agents/plugins/marketplace.json`](https://github.com/openai/plugins/blob/main//.agents/plugins/marketplace.json) file. Each plugin entry contains a `policy` object with an `installation` key that controls whether the plugin can be deployed.

### How does the installation policy differ from the authentication policy?

The installation policy determines whether a plugin can be installed (currently always `"AVAILABLE"`), while the authentication policy controls when users must provide credentials, either `"ON_INSTALL"` or `"ON_USE"`. These operate independently within the same `policy` object in the manifest.

### Can a plugin be marked as unavailable for installation?

Based on the current source code, no mechanism exists to mark plugins as unavailable. All entries in the marketplace manifest use `"installation": "AVAILABLE"`, indicating that restriction functionality has not been implemented in the current version of the repository.