mcpField
G
GitHub Actions Audit

GitHub Actions Audit

Remote
github.com/UnbearableDevSecurity0Updated 20w ago
Repository

About GitHub Actions Audit

GitHub Actions Audit is an MCP server for reviewing GitHub Actions workflow files for security and supply-chain risks. It returns findings with severity, affected location, remediation, and a YAML fix snippet.

Key features

  1. 0121 workflow security checks
  2. 02Audit YAML content or URL
  3. 03Focused checks for secrets and permissions
  4. 04Supply-chain and runner checks
  5. 05Findings with remediation and fix snippets

Use cases

  1. 01Review workflows before merging
  2. 02Find secret exposure and script injection
  3. 03Check action pinning and token permissions

MCP support

Exposes workflow audit and check-catalog tools to MCP clients. Clients can submit YAML content or an HTTPS workflow URL.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://unbearable-dev--github-actions-audit.apify.actor/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

All endpoints
Streamable HTTPhttps://unbearable-dev--github-actions-audit.apify.actor/mcpAuth required

Tools

Details

From the project README

GitHub Actions Security Audit

MCP server that audits .github/workflows/*.yml files for supply-chain risks. Catches script injection, leaked tokens, unpinned actions, broad permissions, and pull_request_target foot-guns — the patterns behind several 2024–2025 supply-chain incidents.

Built by Unbearable Labs. Pay-per-event — only billed when a tool is actually called.


Available on

  • Apify Actor Store — primary, metered usage (PPE)
  • MCPize — pending submission
  • MCP.so — pending submission
  • PulseMCP — pending submission
  • Smithery — pending submission
  • Glama — pending submission

Newsletter: Unbearable TechTips Weekly · All Actors: github.com/UnbearableDev

What it does

Point any MCP-capable client (Claude Desktop, Cursor, n8n, Make, Zapier, custom agents) at this server, hand it a workflow YAML, and get back structured findings with:

  • Severity — critical / high / medium / low / info
  • Affected job and step — exact location of the problem
  • Description — why it matters, with the actual attack vector
  • Remediation — what to do about it
  • Fix snippet — YAML you can paste directly

Tools

ToolPurpose
audit_workflow(workflow_yaml? | workflow_url?, min_severity='low')Run all checks
check_secrets(...)Secret-leakage paths only
check_permissions(...)GITHUB_TOKEN scope issues only
check_action_pinning(...)Action version-pinning only
check_runner_security(...)Self-hosted runner + script injection
check_workflow_config(...)Timeout / config hygiene
check_supply_chain_advanced(...)TeamPCP-class supply-chain patterns (GHA-201..208)
list_checks(category?)Browse the catalog

Provide exactly one of workflow_yaml (paste the content) or workflow_url (HTTPS URL — typically a GitHub raw URL to a specific workflow file).

Check catalog (v2: 21 checks)

IDCategorySeverityTitle
GHA-001secretshighSecret interpolated directly into run: script
GHA-002secretshighSecret printed via echo / set-output
GHA-003secretsmediumSecret used in if: condition
GHA-004secretshighHardcoded credential pattern in env:
GHA-010permissionshighpermissions: write-all granted
GHA-011permissionsmediumNo top-level permissions: (inherits broad default)
GHA-013permissionshighpull_request_target + checkout PR head = PWNing pattern
GHA-020action_pinninghighThird-party action pinned to mutable tag
GHA-021action_pinninghighThird-party action pinned to mutable branch
GHA-022action_pinningmediumFirst-party action not SHA-pinned
GHA-030runner_securitymediumSelf-hosted runner used on pull_request from forks
GHA-032runner_securityhighScript injection via untrusted github.event.* interpolation
GHA-040workflow_configlowNo timeout-minutes on job
GHA-201supply_chain_advancedhighAction pinned to unpinned branch ref (TeamPCP-class: @main/@master)
GHA-202supply_chain_advancedhighAction pinned to mutable tag — SHA pin recommended
GHA-203supply_chain_advancedcriticalpull_request_target + checkout of PR head SHA/ref (codecov/tj-actions exploitation path)
GHA-204supply_chain_advancedhighScript injection via github.event.* user-controlled field in run:
GHA-205supply_chain_advancedmediumAction from non-allowlisted owner (untrusted 3rd-party)
GHA-206supply_chain_advancedhighTop-level permissions: write-all or contents: write without per-job scoping
GHA-207supply_chain_advancedmediumSecret logged via echo / cat in run: block
GHA-208supply_chain_advancedlowAction uses a known-retired tag

Pricing

EventUSD
Any audit / check_* tool call$0.02
list_checks discovery$0.005

Connecting from Claude Desktop

{
  "mcpServers": {
    "gha-audit": {
      "transport": "streamable-http",
      "url": "https://YOUR-ACTOR-URL.apify.actor/mcp"
    }
  }
}

Sibling MCPs from Unbearable Labs

What's NOT covered (yet)

  • Reusable workflow auditing (multi-file resolution)
  • CodeQL-grade dataflow tracking
  • Marketplace-listed action reputation scoring

Source / contact

Source: github.com/UnbearableDev/github-actions-audit. Issues + ideas: [email protected].


📬 Built by Noel @ Unbearable Labs. More MCP servers + audit tips in the newsletter: https://unbearabletechtips.beehiiv.com

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.