Single source of truth for Birkly CMS documentation

Marketplace installs require explicit permission consent. Automated scans and manual review protect the catalog. Site owners can further restrict plugins with the security denylist.

Before a plugin installs, the CMS shows a consent screen listing declared permissions, hooks, and data access from plugin.json. Consent is recorded per offer version. The marketplace runs automated preflight (zip structure, dangerous code patterns, capability checks) and manual review for verified-tier offers. Site admins can add collections and admin spaces to the plugin security denylist to hard-block access.

Beginner

Permission consent at install

When you click Install on a marketplace offer, the CMS reads the plugin's declared access:

DeclarationWhat it means
PermissionsAdmin actions the plugin can perform
HooksCMS events the plugin listens to
Data accessWhether the plugin can read or write entries, media, users, or settings

You must Accept before the download starts. The consent is saved with your admin email and timestamp. If you install a new version that changes declarations, you see the consent screen again.

Review before you accept

  • Compare declared access to what the plugin claims to do on its marketplace listing.
  • Prefer verified or official offers for sensitive sites.
  • Decline install if the permissions seem excessive — contact the provider or choose an alternative.

After install — limiting access

Even after consent, you can tighten boundaries:

  1. Open Settings → Security → Plugin security denylist.
  2. Add protected collections (for example payroll, legal/*).
  3. Add denied admin spaces (for example block a plugin from the Commerce admin area).
  4. Save — denylist rules override granted capabilities.

See Plugin security denylist for step-by-step instructions.

Marketplace quality checks

Before an offer reaches the catalog:

CheckWhat it catches
Zip structureMissing files, path traversal (..)
PHP scanDangerous functions (eval, shell_exec, etc.)
Manifest validationInvalid semver, missing required fields
Capability matchDeclarations vs actual plugin behavior (verified tier)

Trust levels

LevelReview depth
CommunityAutomated preflight only
TrustedAutomated plus possible spot-check
VerifiedManual technical review for first release and major updates

Supply chain hygiene

  • Install only from marketplace.birkly.cloud or sources you trust.
  • Verify SHA-256 checksums match the offer page (the CMS does this automatically).
  • Keep Birkly core and plugins updated — see Updates.
  • Revoke or uninstall plugins you no longer use.
Advanced Users

Consent storage

settings/marketplace_consent.json:

{
  "my-plugin-slug": {
    "1.2.0": {
      "accepted_at": "2026-07-24T10:00:00+00:00",
      "accepted_by": "admin@example.com",
      "permissions_manifest": {
        "permissions": ["read_entries"],
        "hooks": ["entry.saved"],
        "data_access": {
          "entries": "read",
          "media": "none",
          "users": "none",
          "settings": "none"
        }
      }
    }
  }
}

Install API returns consent_required: true when no record exists for {slug, version}. Error code consent_required blocks install until the client sends consent_accepted: true.

Denylist-first enforcement

has_plugin_capability() calls is_resource_protected($scope) before permission lookup. is_space_denied($space_id) blocks space-scoped hooks and admin injections. Denylist does not affect core CMS or human admin users — only plugin code paths.

QC pipeline (providers)

Preflight runs on every release upload. Verified-tier offers enqueue manual review before catalog visibility. Providers can connect GitHub for tag-triggered builds that enter the same QC queue — offers are not auto-published without passing checks.

Security scan tiers

TierScope
StructuralZip layout, plugin.json schema
PatternPHP dangerous-function regex scan
ManualCode review for verified first releases
RuntimeCapability and denylist enforcement in CMS

Incident response

Report suspicious offers via marketplace support. Platform operators can delist offers, hold or revoke entitlements, and add slug patterns to blocklists. Site owners should disable affected plugins immediately and review audit logs — see Audit log and activity.