Audits GitHub Actions workflow YAML for script injection via untrusted expressions, unpinned third-party actions, missing permissions blocks, and dangerous pull_request_target + head-checkout combinations
Two tools with clear security-focused purpose, but significant gaps in parameter documentation and output schema specification. Both tools have descriptions (good), but lack detailed parameter descriptions and explicit output schemas. The audit_workflow tool accepts a single string parameter with minimal guidance on expected format or constraints. check_expression_injection similarly lacks parameter validation hints. No error handling guidance visible. Naming is verb-forward and clear (audit_*, check_*), following pattern:tool conventions. No evidence of output schema documentation.
Audits a GitHub Actions workflow YAML file for security issues including script injection risks, unpinned actions, missing permissions blocks, and dangerous pull_request_target with head checkout combinations
Checks a single run command string for script injection risks from untrusted GitHub Actions expressions
No output schema documented for either tool. LLMs cannot plan downstream actions or extract structured data without knowing what fields to expect.
Parameter descriptions are minimal. 'workflow_yaml' and 'run_command' lack format guidance, constraints, or examples of valid input. Rubric baseline: 72 chars avg param annotation.
No error handling guidance. If audit_workflow receives invalid YAML or check_expression_injection receives malformed input, no recovery path is documented.
Tool descriptions are functional but brief (audit_workflow ~180 chars, check_expression_injection ~140 chars). Rubric baseline is 194 chars avg; descriptions should explain WHEN to use each tool vs the other.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
No pagination or result limits documented. If audit_workflow returns many findings, no guidance on how results are structured or truncated.