Skip to content

Plugin Issues

Terminal window
# Audit all installed plugins
scc audit plugins
# Check for blocked plugins
scc config explain --field blocked_items
# Check governance status
scc config explain

The scc audit plugins command checks plugin manifests and reports issues.

Symptom: Audit shows “malformed” with line/column number.

⚠ my-plugin@marketplace
.mcp.json: malformed (line 15, col 8: Expected ',' but found '}')

Cause: Invalid JSON syntax in manifest file.

Fix:

  1. Locate the plugin directory

    Terminal window
    # Plugins are installed at:
    ls ~/.claude/plugins/
  2. Find and fix the syntax error

    Terminal window
    # Check the manifest file
    cat ~/.claude/plugins/my-plugin/.mcp.json
    # Use a JSON validator
    cat ~/.claude/plugins/my-plugin/.mcp.json | python -m json.tool
  3. Common JSON errors:

    • Missing comma between properties
    • Trailing comma after last property
    • Missing quotes around strings
    • Unescaped special characters

Symptom: Audit shows “unreadable” with permission error.

⚠ my-plugin@marketplace
hooks/hooks.json: unreadable (Permission denied)

Cause: File permissions prevent reading the manifest.

Fix:

Terminal window
# Check permissions
ls -la ~/.claude/plugins/my-plugin/
# Fix permissions
chmod -R u+r ~/.claude/plugins/my-plugin/

Symptom: scc audit plugins shows empty list.

Cause: No plugins installed or registry file missing.

Check:

Terminal window
# Check plugin registry
cat ~/.claude/plugins/installed_plugins.json
# Check if plugins directory exists
ls -la ~/.claude/plugins/

Fix: Install plugins through your organization config or Claude Code.


Symptom: scc audit plugins exits with code 1 in CI.

Cause: One or more plugins have malformed or unreadable manifests.

Exit codes:

  • 0 — All plugins OK (or no plugins installed)
  • 1 — One or more plugins have problems

Fix for CI:

Terminal window
# Run audit with JSON output for parsing
scc audit plugins --json
# In CI script, check specific plugins:
scc audit plugins --json | jq '.plugins[] | select(.status_summary == "malformed")'

Each plugin can have two manifest files:

FilePurpose
.mcp.jsonMCP server declarations
hooks/hooks.jsonHook definitions
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["server.js"],
"description": "My MCP server"
}
}
}
{
"hooks": {
"PreToolUse": [
{
"type": "command",
"command": "./scripts/check.sh"
}
]
}
}

Symptom: Plugin doesn’t appear in effective config despite being installed.

Diagnose:

Terminal window
# Check blocked patterns
scc config explain --field blocked_items
# See which plugins are blocked
scc config explain | grep -A5 "blocked_plugins"

Common causes:

PatternWhat it blocks
*experimental*Any plugin with “experimental” in name
*beta*Any plugin with “beta” in name
*@untrustedAll plugins from “untrusted” marketplace

Fix options:

  1. Use a different plugin that’s not blocked
  2. Request policy exception from org admin (for security blocks)
  3. Create local exception for delegation denials:
    Terminal window
    scc unblock my-plugin@marketplace --reason "Approved use case"

Symptom: Plugin installed but not available in Claude Code session.

Check effective config:

Terminal window
scc start --dry-run --json | jq '.plugins'

Common causes:

Not in enabled_plugins

Plugin must be listed in org/team enabled_plugins or additional_plugins.

Blocked by pattern

Plugin matches a blocked_plugins pattern in security config.

Delegation denied

Team config doesn’t allow project to add this plugin.

Wrong marketplace

Plugin marketplace not defined in org config.

Debug with dry-run:

Terminal window
# See full effective config
scc start --dry-run --json --pretty
# Check specific fields
scc config explain --field plugins
scc config explain --field denied_additions

Claude Code stores plugin information at:

~/.claude/
├── plugins/
│ ├── installed_plugins.json # Registry of installed plugins
│ ├── my-plugin/ # Plugin directory
│ │ ├── .mcp.json # MCP server declarations
│ │ └── hooks/
│ │ └── hooks.json # Hook definitions
│ └── another-plugin/
│ └── ...