# Claude Plugin Security Review Response Schema: Complete Field Reference

> Understand the Claude plugin security review response schema. Discover fields for plugin name, status, score, issues, and scan metadata from the anthropics/claude-plugins-community repository.

- Repository: [Anthropic/claude-plugins-community](https://github.com/anthropics/claude-plugins-community)
- Tags: api-reference
- Published: 2026-08-31

---

**The Claude plugin security review response schema specifies a JSON object containing the plugin name, a status enum of `PASS`, `WARN`, or `FAIL`, a 0-100 numeric score, an array of detailed issue objects, and metadata about the scan, as defined in the `anthropics/claude-plugins-community` repository.**

The `anthropics/claude-plugins-community` repository maintains a standardized security review process for all submitted plugins. The security review response schema provides a machine-readable JSON structure that automated scanners and Claude Code use to report security findings against plugin manifests.

## Core Schema Structure

The security review response follows a strict JSON schema with five top-level fields. Each field serves a specific purpose in communicating the outcome of automated security analysis performed on a plugin's configuration files.

### Top-Level Fields

- **plugin**: A string containing the unique identifier of the plugin under review (e.g., `claude-security-linter`).
- **status**: A string enum indicating the overall outcome. Valid values are `"PASS"` (no blocking issues), `"WARN"` (non-blocking warnings present), or `"FAIL"` (one or more blocking security problems detected).
- **score**: A numeric value between 0 and 100 representing the aggregated security rating based on finding severity.
- **issues**: An array of issue objects, each describing a specific security finding. Empty arrays indicate clean scans.
- **metadata**: An object containing contextual information including the scan timestamp, policy version, and Claude model identifier used for the review.

### Issue Object Structure

Each object within the `issues` array contains detailed information about a specific security finding:

- **id**: A stable string identifier for the finding (e.g., `SEC-001`).
- **severity**: A string enum classifying the risk level as `"HIGH"`, `"MEDIUM"`, or `"LOW"`.
- **title**: A concise, human-readable description of the security problem.
- **description**: An in-depth explanation of the vulnerability and its potential impact.
- **location**: An object specifying where the issue was detected, containing:
  - `file`: The path to the affected file (typically [`manifest.json`](https://github.com/anthropics/claude-plugins-community/blob/main/manifest.json)).
  - `line`: The line number where the issue occurs, if applicable.
- **remediation**: A string providing specific steps or code changes to fix the vulnerability.
- **evidence**: An array of strings containing code snippets or configuration excerpts that triggered the finding.

## Example Response Objects

The following examples demonstrate valid response objects for different security scan outcomes.

### Successful Scan Response

A `PASS` status indicates the plugin manifest met all security requirements with no blocking issues:

```json
{
  "plugin": "claude-security-linter",
  "status": "PASS",
  "score": 97,
  "issues": [],
  "metadata": {
    "scannedAt": "2024-10-12T14:32:07Z",
    "policyVersion": "v2.3",
    "model": "claude-3-sonnet-20240229"
  }
}

```

### Failed Scan with Blocking Issues

A `FAIL` status occurs when high-severity blocking issues are detected, such as hard-coded credentials:

```json
{
  "plugin": "my-awesome-plugin",
  "status": "FAIL",
  "score": 58,
  "issues": [
    {
      "id": "SEC-007",
      "severity": "HIGH",
      "title": "Hard-coded API key",
      "description": "A literal API key is present in the plugin's config file, which may be exposed to anyone with repository access.",
      "location": { "file": "manifest.json", "line": 42 },
      "remediation": "Replace the literal key with a reference to a secret stored in the MCP vault.",
      "evidence": [ "\"apiKey\": \"ABCD-1234-EFGH-5678\"" ]
    },
    {
      "id": "SEC-015",
      "severity": "MEDIUM",
      "title": "Unrestricted URL fetch",
      "description": "The plugin can fetch arbitrary URLs without domain whitelisting, increasing the risk of remote code execution.",
      "location": { "file": "manifest.json", "line": 78 },
      "remediation": "Add an `allowedUrls` whitelist to restrict network access.",
      "evidence": [ "\"fetch\": \"*\"" ]
    }
  ],
  "metadata": {
    "scannedAt": "2024-10-12T14:32:07Z",
    "policyVersion": "v2.3",
    "model": "claude-3-sonnet-20240229"
  }
}

```

### Warning-Only Response

A `WARN` status indicates non-blocking issues that should be addressed but do not prevent deployment:

```json
{
  "plugin": "tiny-utils",
  "status": "WARN",
  "score": 84,
  "issues": [
    {
      "id": "SEC-022",
      "severity": "LOW",
      "title": "Missing content-security-policy header",
      "description": "The plugin does not declare a CSP header for its web UI assets.",
      "location": { "file": "manifest.json", "line": 15 },
      "remediation": "Add a `csp` entry to the manifest.",
      "evidence": [ "\"csp\": null" ]
    }
  ],
  "metadata": {
    "scannedAt": "2024-10-12T14:32:07Z",
    "policyVersion": "v2.3",
    "model": "claude-3-sonnet-20240229"
  }
}

```

## Schema Definition and Validation

The formal definition of the security review response schema resides in the repository's marketplace configuration. The `securityReviewResponse` type documented in [`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json) enumerates all valid fields and their constraints.

Individual plugin manifests located at `plugins/*/.claude-plugin/manifest.json` serve as the input documents for the security review process. The response schema reflects findings extracted from these manifest files during automated analysis.

Validation occurs through the GitHub Actions workflow defined in [`.github/actions/validate-plugins/scripts/11-validate-invariants.sh`](https://github.com/anthropics/claude-plugins-community/blob/main/.github/actions/validate-plugins/scripts/11-validate-invariants.sh). This enforcement script verifies that every security review response conforms to the expected schema before a plugin receives approval for the marketplace.

## Summary

- The **Claude plugin security review response schema** requires five top-level JSON fields: `plugin`, `status`, `score`, `issues`, and `metadata`.
- The **status** field accepts three enum values: `PASS`, `WARN`, and `FAIL`, representing clean scans, non-blocking warnings, and blocking issues respectively.
- Each **issue object** contains seven required fields including severity classification (`HIGH`, `MEDIUM`, `LOW`), location data, and remediation guidance.
- The schema is formally defined in [`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json) and enforced by the validation script at [`.github/actions/validate-plugins/scripts/11-validate-invariants.sh`](https://github.com/anthropics/claude-plugins-community/blob/main/.github/actions/validate-plugins/scripts/11-validate-invariants.sh).

## Frequently Asked Questions

### Where is the Claude plugin security review response schema defined?

According to the `anthropics/claude-plugins-community` source code, the schema is formally defined in [`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json), which documents the `securityReviewResponse` type and enumerates all valid fields and constraints for automated security review outputs.

### What are the possible values for the status field in a security review response?

The `status` field accepts three string enum values: `"PASS"` indicates no blocking issues were found, `"WARN"` signals non-blocking warnings that should be addressed, and `"FAIL"` denotes one or more blocking security problems that must be resolved before marketplace acceptance.

### How is the security score calculated in the review response?

The `score` field contains a numeric value between 0 and 100 that aggregates the severity of all findings in the `issues` array, with higher severities reducing the score more significantly. A score of 100 indicates no security issues detected, while lower scores reflect cumulative risk from identified vulnerabilities.

### What validation ensures responses conform to the schema?

The repository enforces schema compliance through [`.github/actions/validate-plugins/scripts/11-validate-invariants.sh`](https://github.com/anthropics/claude-plugins-community/blob/main/.github/actions/validate-plugins/scripts/11-validate-invariants.sh), a validation script that checks every security review response against the formal schema definition before permitting plugin acceptance into the marketplace.