You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
P2 feature expansion with availability gating. Research date 2026-09-06; Agent Bundle baseline 5fc8de37c9695b816d55bdcf18a6bcb1dfee69f5. Official docs read, no Devin CLI installation or authenticated run. The current plugin guide labels the feature closed beta. Do not advertise generally available support until tested with an eligible host/account/version.
This issue primarily targets local Devin CLI. Cloud Devin and Devin Desktop have related but different capabilities; do not claim cloud parity from a local test or confuse the Devin MCP service with the CLI's MCP-client configuration.
Devin's native root marker is .devin-plugin/plugin.json, with shared skills, optional AGENTS.md, triggered rules, custom agents, root hooks.json, and .mcp.json. The documented compatibility order is native Devin manifest, Claude manifest, then root Agent Plugins manifest. Therefore merely adding portable plugin.json to an existing Claude composite does not ensure Devin will use portable semantics.
The native manifest supports explicit skill paths and MCP declarations. Empty skill lists and empty MCP declarations have different convention-suppression behavior; do not apply a generic empty-means-disabled rule. Required/optional/forbidden plugin lists are host policy, not ordinary npm dependencies.
This is an illustrative emitted manifest, not a request for authors to duplicate their application declarations. The exclusive MCP binding is useful only when accepted by the pinned native parser; test that it really suppresses a foreign .mcp.json.
Local plugin installations are linked references with changes visible on a subsequent session. Keep the reference at a stable owned location; do not leave a native registration pointing to a deleted temporary epoch. Preserve native installation confirmation and governance lists. Do not automatically use --yes, install optional dependencies, or delete required plugins that the host intentionally retains after removing the parent.
MCP configuration differences
The official reference documents a change beginning with v3000.3: MCP moves from main config files to dedicated mcp_config.json files. Project/local/user locations differ; current local overrides use .devin/mcp_config.local.json. Reuse the actual host CLI instead of hardcoding an old config location:
devin mcp add -s project example -- node /absolute/composite-root/mcp/example.mjs
devin mcp list
devin mcp get example
Do not register that independent definition if the plugin already supplies the same server. Keep secrets in native operator configuration/OAuth; plugin-supplied confidential OAuth secrets are not permitted by the plugin contract. Native versus portable root/data interpolation and data deletion on uninstall must be tested, not copied from another host.
Hooks and runtime mapping
Use event-specific native payload codecs. Session and per-turn identifiers are distinct. Before-tool hooks can modify input or express a decision; prompt/stop events have their own output shapes. Current plugin documentation explicitly describes hooks as best-effort/fail-open: do not sell them as a security boundary or guarantee blocking when loading fails.
Reuse canonical preflight/operation execution only for supported semantics. A typed operation exposed by MCP does not require a native subagent or hook. Local custom agents and prompt hooks must not be projected into cloud sessions where unsupported. Avoid arbitrary Python/shell authoring solely to match documentation examples; generate the needed native envelope around existing compiled JS.
Composite, packaging and acceptance
Pin eligible CLI version/account prerequisite and native/Claude/portable manifest precedence.
Test a skills-only package with no synthetic MCP/Flight/state runtime.
Verify configured skill paths, empty-list behavior, triggered rules and namespace collisions through native discovery.
Test explicit MCP source precedence and suppression with existing Claude/portable documents present.
Run an actual generated tool from a relocated read-only artifact without source, preserving input/schema/outcome/argv/env.
No cloud orchestration, automatic beta enrollment, organization governance changes, shared credential storage, new dependency manager, second compiler, or guarantee that all Devin surfaces have the same feature set.
Scope / evidence
P2 feature expansion with availability gating. Research date 2026-09-06; Agent Bundle baseline
5fc8de37c9695b816d55bdcf18a6bcb1dfee69f5. Official docs read, no Devin CLI installation or authenticated run. The current plugin guide labels the feature closed beta. Do not advertise generally available support until tested with an eligible host/account/version.This issue primarily targets local Devin CLI. Cloud Devin and Devin Desktop have related but different capabilities; do not claim cloud parity from a local test or confuse the Devin MCP service with the CLI's MCP-client configuration.
Primary specifications
Verified integration model
Devin's native root marker is
.devin-plugin/plugin.json, with shared skills, optionalAGENTS.md, triggered rules, custom agents, roothooks.json, and.mcp.json. The documented compatibility order is native Devin manifest, Claude manifest, then root Agent Plugins manifest. Therefore merely adding portableplugin.jsonto an existing Claude composite does not ensure Devin will use portable semantics.The native manifest supports explicit skill paths and MCP declarations. Empty skill lists and empty MCP declarations have different convention-suppression behavior; do not apply a generic empty-means-disabled rule. Required/optional/forbidden plugin lists are host policy, not ordinary npm dependencies.
Proposed native fixture
{ "name": "example-plugin", "version": "1.0.0", "skills": ["skills"], "mcpServers": { "paths": ["config/devin-mcp.json"], "exclusive": true } }This is an illustrative emitted manifest, not a request for authors to duplicate their application declarations. The exclusive MCP binding is useful only when accepted by the pinned native parser; test that it really suppresses a foreign
.mcp.json.Operator workflow
Local plugin installations are linked references with changes visible on a subsequent session. Keep the reference at a stable owned location; do not leave a native registration pointing to a deleted temporary epoch. Preserve native installation confirmation and governance lists. Do not automatically use
--yes, install optional dependencies, or delete required plugins that the host intentionally retains after removing the parent.MCP configuration differences
The official reference documents a change beginning with v3000.3: MCP moves from main config files to dedicated
mcp_config.jsonfiles. Project/local/user locations differ; current local overrides use.devin/mcp_config.local.json. Reuse the actual host CLI instead of hardcoding an old config location:Example dedicated configuration:
{"mcpServers":{"example":{"command":"node","args":["/absolute/composite-root/mcp/example.mjs"]}}}Do not register that independent definition if the plugin already supplies the same server. Keep secrets in native operator configuration/OAuth; plugin-supplied confidential OAuth secrets are not permitted by the plugin contract. Native versus portable root/data interpolation and data deletion on uninstall must be tested, not copied from another host.
Hooks and runtime mapping
Use event-specific native payload codecs. Session and per-turn identifiers are distinct. Before-tool hooks can modify input or express a decision; prompt/stop events have their own output shapes. Current plugin documentation explicitly describes hooks as best-effort/fail-open: do not sell them as a security boundary or guarantee blocking when loading fails.
Reuse canonical preflight/operation execution only for supported semantics. A typed operation exposed by MCP does not require a native subagent or hook. Local custom agents and prompt hooks must not be projected into cloud sessions where unsupported. Avoid arbitrary Python/shell authoring solely to match documentation examples; generate the needed native envelope around existing compiled JS.
Composite, packaging and acceptance
Non-goals
No cloud orchestration, automatic beta enrollment, organization governance changes, shared credential storage, new dependency manager, second compiler, or guarantee that all Devin surfaces have the same feature set.