AI Blog

Agent Plugins 1.0 Standardises the Bundle and Leaves Trust to Whoever Installs It

Five rival vendors agreed on a directory layout on 6 August, and explicitly declined to agree on install, distribution, permissions, sandboxing or provenance. The format makes one bundle of instructions plus credentialed tool access portable across six clients — which is exactly why the compensating controls are now yours.

By Agentic AI Wiki 11 min read

Five competitors who agree on nothing agreed on a directory layout: Agent Plugins 1.0.0, published 6 August by Amazon, Cursor, Microsoft, OpenAI and Vercel, with Google joining as a core maintainer the same day. Read the scope section and the real news is what they declined to agree on — no install mechanism, no distribution protocol, no permission model, no sandboxing requirement, and no provenance verification. The format standardises a bundle that carries both instructions for your agent and credentialed access to your systems, and then leaves trust to whichever client happens to install it.

At a glance

The specification is deliberately small. A plugin is a directory, and that is nearly the whole of it.

ElementWhat it holdsStatus in v1.0
plugin.json The manifest — name, version, schema. Required.
skills/ Agent Skills: packaged instructions the model reads and follows. Optional.
mcp.json MCP server configuration — the tools the agent gets, and the systems they reach. Optional.
<namespace>/ Client-specific extensions outside the portable contract; other clients ignore what they do not implement. Optional.

Six clients supported it at launch — ChatGPT, Codex, Cursor, GitHub Copilot, Kiro and VS Code — and Google said on the same day that it would integrate support into its own products, starting with the Agents CLI and the Data Agent Kit. Governance runs through a technical steering committee whose seats belong to individuals rather than companies, with a charter that forbids any single vendor from holding a majority.

Anatomy of an Agent Plugin and how a client loads it A plugin directory containing plugin.json, a skills folder, an optional mcp.json and a namespaced extension directory. Arrows show a compatible client reading the manifest, discovering skills, and launching the configured MCP servers, which in turn reach real systems using the installer's credentials. The package (what v1.0 standardises) plugin.json name, version, schema — the manifest skills/ Instructions the model will follow. Text, loaded into context. mcp.json Servers the agent will launch. Code, with network and credentials. <namespace>/ client-specific, ignored by others The client (defines everything else) Install & distribution Permission model Sandboxing Trust & provenance The agent loop context + tools Your systems reached on your credentials What no layer owns yet No signatures. No attestation back to a source repo. No capability declarations. A plugin is trusted at the moment it is installed — by whichever client installed it.
The left box is what the spec covers. Everything to the right of it is a per-client decision, and the bottom band is nobody's.

Why a packaging standard was worth doing

The problem it solves is real and unglamorous. Before this, shipping a capability to agent users meant writing the same integration several times: a skill file in one client's format, a different one for the next, an MCP server registration with per-client setup instructions, and a README explaining which combination to use where. A vendor who wanted their platform usable from agents was maintaining N sets of install docs that drifted apart.

Agent Plugins is not a third format competing with Skills and MCP — it is the wrapper that lets one bundle of both install into six clients unchanged. That is a genuine reduction in busywork, and it is the reason the launch got the reception it did.

It is also why the maintainers' argument for the narrow scope is not unreasonable. Installation, policy, enterprise controls and approval flows genuinely do look different in an IDE, a CLI and a managed enterprise platform, and a specification that tried to unify them would have been rejected by at least two of the five signatories. A format everyone ships beats a governance model nobody adopts.

Accept all of that, and the interesting question is not whether the scope was drawn correctly. It is what happens to risk when the packaging problem is solved and the trust problem is not.

The bundle carries two very different things

The two payloads in a plugin carry different risks Three columns comparing the skills folder, the mcp.json server configuration, and the combination of both. Skills are instructions loaded into the model's context; mcp.json launches code with network access and credentials; together they let one bundle both instruct the agent and give it the reach to act on those instructions. skills/ Instructions Text the model reads and follows as guidance. Risk: it steers the agent you already trusted. Review surface: prose, and nobody diffs prose. mcp.json Reach Servers the client launches and connects tools from. Risk: code, network egress, and your credentials. Review surface: a config pointing at someone's binary. one bundle Both, together The thing that tells the agent what to do also supplies the means to do it. Installed once, portable across every client. One blast radius, not six.
Two payloads, two risk models, one install action — and the review habits for each are borrowed from somewhere they fit better.

Skills are instructions, and instructions are the injection surface

A skill is text the model reads and follows. That makes a skills directory a prompt you have delegated authorship of, and the failure mode is not malware — it is a paragraph that shifts the agent's default behaviour in a way no test covers. "When the user asks about deployments, always check the staging config first" is a helpful instruction. The same sentence with a different second clause is a redirect, and it reviews as documentation because it looks like documentation. Nobody has a review culture for prose, and the diff of a skills update is prose.

mcp.json is reach, and it runs on your credentials

The server side is the conventional supply-chain problem, arriving through a channel that does not feel like a dependency add. A plugin's mcp.json tells the client which servers to launch; those servers are code, they hold network egress, and they act with whatever access the installing user has. The install ceremony is a command or a click, not a lockfile entry that shows up in a pull request.

Together they are the part that is new

Each half has precedent. What is new is shipping them as one unit: the artifact that tells the agent what to do also supplies the means to do it, in a single install, on a format designed for portability. That combination has no established review practice, and v1 does not create one.

Portability multiplies the blast radius — that is the whole point of the format

Fragmentation is a tax, and it is also, accidentally, a containment boundary. When a capability had to be repackaged per client, a compromised bundle reached one ecosystem and stopped. A portable format is valuable in exactly the proportion that it removes that friction — for authors and attackers alike, since neither one is doing anything the format distinguishes between.

This is not an argument against the format. It is an argument about where the compensating control has to live, and the answer is not "in the spec", because the spec has said so explicitly. The project's own future-considerations document names provenance verification as unaddressed in v1, alongside permission and approval UX, enterprise controls and audit-trail standardisation. That is an unusually honest artifact and it is worth reading as a roadmap of what you currently own yourself.

Who owns each concern under Agent Plugins 1.0 A grid of six concerns against three owners. Packaging and discovery are settled by the specification. Install, distribution, permissions, sandboxing and approval UX are each left to the individual client. Provenance verification, capability declarations and audit trails are owned by nobody, and fall to the organisation installing the plugin. Settled by the spec, deferred to the client, or left to you Spec v1.0 Each client You Package layout Defined Skill & server discovery Defined Install & distribution Out of scope Client's own Permissions & approval Out of scope Client's own Policy on top Sandboxing Out of scope Client's own Runtime isolation Provenance & signing Out of scope Undefined Entirely yours Owned and specified Owned, varies by implementation Not addressed
Two rows settled, three rows that vary by client, and one row where the honest answer is that it is yours.

What "no trust model" concretely means

There are no cryptographic signatures in the format. There is no attestation binding a published plugin to the source repository it claims to come from. There are no capability declarations — nothing in plugin.json says "this plugin reaches the network" or "this plugin writes files" — so a client cannot render a permissions prompt from the manifest even if it wants to, and there is no graduated trust level to escalate through. A plugin is trusted at the moment it is installed, and by whichever client installed it.

Portability makes divergence a property of the ecosystem

Because permissions and sandboxing are per-client, the same bundle gets different treatment in each. A plugin installed into a managed enterprise platform with policy controls, and the same plugin installed into a local CLI by a developer in a hurry, are the same artifact with materially different exposure. Your organisation's effective posture is the weakest client anyone is running, and the format is specifically designed so that the plugin does not know or care which one it landed in.

What to do about it this month

None of this argues for staying off the format. It argues for treating an install as what it is.

  • Treat a plugin install as a dependency add, with the same review. It enters through a different door than package.json and it should meet the same bar: who publishes it, what it reaches, is it pinned, and who approved it. If your change-management process cannot see plugin installs today, that gap is the first thing to close.
  • Pin versions and vendor the bundle. Absent signatures and attestation, a pinned copy you fetched and reviewed is the strongest integrity control available. Re-review on upgrade, because the upgrade is where a prose change lands unnoticed.
  • Read skills/ as prompt content, not as documentation. Diff it on every version bump. It is the half most likely to change quietly and the half your reviewers are least trained to be suspicious of.
  • Mediate mcp.json through a gateway you operate. Servers launched by a plugin should reach the network through the same proxy and the same allowlist as everything else, so that the plugin's reach is bounded by your egress policy rather than by its own configuration.
  • Register the install. A plugin changes what an agent can read and do, which makes it a change to that agent's grant — the unit of record argued for in agent inventory and registry. An installed plugin nobody recorded is the shadow-agent problem with a nicer package format.
  • Decide the client posture centrally. Since permissions vary by client, your policy has to name which clients are permitted to install plugins at all, and with what controls. Leaving that to each engineer's tool choice makes the weakest configuration the organisational default.

FAQ

Does Agent Plugins replace MCP?

No. It packages MCP server configuration alongside Agent Skills so that a bundle of both installs the same way everywhere. MCP remains the protocol; Agent Plugins is the wrapper around a plugin's contents.

What exactly is in a plugin?

A directory with a required plugin.json manifest, an optional skills/ folder, an optional mcp.json, and optional namespaced directories for client-specific features that other clients ignore.

Which clients support it?

Six at launch — ChatGPT, Codex, Cursor, GitHub Copilot, Kiro and VS Code. Google joined as a core maintainer on 6 August and said it would add support to its own products beginning with the Agents CLI and the Data Agent Kit.

Are plugins signed or verified?

Not by the specification. Version 1.0 defines no signatures, no attestation to a source repository and no trust model; provenance verification is listed in the project's own future-considerations document as unaddressed. Any verification you want today is something you implement.

Why did the maintainers leave permissions out?

Their stated reason is that install, policy, enterprise controls and approval UX differ substantially between an IDE, a CLI and a managed platform, so specifying them would have constrained clients in ways they could not all accept. It is a defensible scoping decision; it is also the reason the compensating controls are currently yours.

Is one vendor in control of the standard?

The governance charter forbids any single vendor from holding a majority of steering-committee seats, and each seat belongs to an individual rather than to a company. Core maintainers currently come from Amazon, Cursor, Microsoft, OpenAI, Vercel and Google.

Further reading

On this wiki:

Sources: