Skip to main content
Glama

actions_audit

Read-onlyIdempotent

Static security audit of GitHub Actions workflow files. Flags template injection (attacker-controlled github.* contexts such as a PR title or branch name expanded inside run: or actions/github-script), pull_request_target and workflow_run triggers and the pwn-request pattern of checking out the pull request head under them, actions and reusable workflows not pinned to a full 40-character commit SHA, container images not pinned by digest, missing or write-all GITHUB_TOKEN permissions, secrets used under untrusted triggers or passed with secrets: inherit, actions/checkout persisting credentials, self-hosted runners on public repositories, curl or wget piped to a shell, hardcoded credentials (reported by kind and line, never echoed), jobs with no timeout-minutes, and caching in release or tag-publish workflows. Up to 50 files of 256 KB each, 1 MB request body; YAML anchors and aliases are rejected. Nothing referenced is fetched, so pinned SHAs are not checked to exist and called actions are not audited. Rules follow zizmor and GitHub's Actions hardening guide. Deterministic, no LLM.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "actions_audit"
  }
}

Input Schema

NameRequiredDescriptionDefault
workflowNoAlternative to workflows: a single workflow YAML string. Reported with path "workflow".
workflowsNoThe workflow files to audit, e.g. everything under .github/workflows/. Max 50 files, 256 KB each, 1 MB request body. Send this or workflow, not both.
repo_visibilityNoVisibility of the repository the workflows live in. Only "public" runs the self-hosted-runner rule.public

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, closed-world behavior, and the description adds substantial context: deterministic/no-LLM operation, no network fetching, YAML anchor rejection, input limits, and that hardcoded credentials are reported by kind and line without being echoed. This is rich behavioral disclosure beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and scope, then lists the security rules compactly in one dense paragraph. The rule enumeration is long but earns its place by telling the agent what will be detected; minor improvement would come from structuring the rule list for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex static-analysis tool with no output schema, the description covers input constraints, audit scope, rule provenance, and key limitations such as not checking that pinned SHAs exist. It does not fully describe the findings output format or severity model, leaving a modest gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters, including workflow vs workflows and repo_visibility. The description repeats some input constraints but does not add parameter meaning beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: "Static security audit of GitHub Actions workflow files." It then enumerates the exact vulnerability classes detected, making the tool's purpose clearly distinct from generic linting or supply-chain scanning tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives strong contextual guidance for when this tool applies: auditing Actions workflow YAML, with limits on file count and size. It also clarifies that nothing referenced is fetched and that called actions are not audited. However, it does not explicitly name alternatives such as supply_chain_scan or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.