Manifest, permissions and trustOne file per plugin, four trust states, and permissions that are declared up front and shown at install time.The manifest{ "id": "dev.example.jira-sync", "version": "0.4.0", "apiVersion": ">=0.1 <0.3", "hooks": ["stage.transition", "panel.slot"], "permissions": { "network": ["your-org.atlassian.net"], "cardWrite": true, "filesystem": [], "shell": false }, "activation": ["stage:deliver", "view:board"]}
FIELDRULESidReverse-domain, immutable once published.versionSemVer. A permission change is at minimum a minor bump.apiVersionThe plugin API range you support. Grid Console refuses to load outside it.permissionsExplicit and narrow: paths, network domains, card write, shell.activationLazy by default: on view, on stage, on command.
Trust statesSTATEMEANINGOfficialBuilt and signed by us.VerifiedReviewed code, verified publisher identity.CommunityPublished, automated checks passed, not code-reviewed.UnverifiedSideloaded or unsigned. Blocked unless you enable "Allow unverified plugins" in Settings, which leaves a banner visible while it is on.
EntitlementsA paid plugin checks what the user bought with grid.entitlements.has("dev.example.plugin"). On Crew a purchase is workspace-wide, so every seat is entitled. Cached entitlements keep working for as long as the licence does, including offline.Enterprise policyFleet administrators can require verified-only, keep an allowlist or blocklist, force plugins on, pin versions, mirror a private registry, and block the public marketplace entirely.