GitHub Actions Secret Exposure Audit
v1.0.0Audit GitHub Actions workflow files for secret exposure risks like pull_request_target secret usage, secret echo commands, and unpinned action secret passing.
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
Name/description match the shipped files and runtime needs: a shell wrapper plus a Python script that scans workflow YAMLs. Required binaries (bash, python3) are appropriate for the implementation and purpose.
Instruction Scope
SKILL.md and the script stick to scanning files matched by WORKFLOW_GLOB and reporting findings. The script reads files from disk (user-specified glob) and does not call external endpoints or attempt to read unrelated environment variables. Note: because WORKFLOW_GLOB is user-controlled, running the skill with a broad glob could cause it to read arbitrary files on disk — this is expected behavior for a file-scanning tool but is something to be cautious about.
Install Mechanism
No install spec; instruction-only with bundled script. Nothing is downloaded or written to disk by an installer.
Credentials
The skill requires no secret environment variables or credentials. The environment variables it uses (WORKFLOW_GLOB, OUTPUT_FORMAT, thresholds, regex filters) are appropriate configuration knobs for a scanner.
Persistence & Privilege
always is false and the skill does not modify other skills or system settings. It runs on demand and only reads files matched by the glob; it does not persist or attempt to store credentials.
Assessment
This skill appears to do exactly what it says: statically scan GitHub Actions workflow YAMLs for risky secret usage patterns. It does not contact external services or request credentials. Before running, review WORKFLOW_GLOB to ensure you only scan intended paths (avoid globs that expose unrelated sensitive files). You can test using the bundled fixtures first. If you will allow autonomous agent invocation, remember the skill can read any files the agent's process user can read — limit its scope by controlling the glob and agent permissions if that is a concern.Like a lobster shell, security has layers — review code before you run it.
Runtime requirements
Binsbash, python3
latest
GitHub Actions Secret Exposure Audit
Use this skill to catch risky secret handling patterns in workflow YAML before they leak credentials or allow unsafe token use.
What this skill does
- Scans workflow YAML files (
.github/workflows/*.ymlby default) - Flags
pull_request_targetworkflows that also reference${{ secrets.* }} - Flags shell output commands that print secret expressions (
echo,printf,tee,::set-output) - Flags secret values passed into unpinned third-party actions (
@main,@master,@v1, etc.) - Flags likely hardcoded credential values in workflow config
- Supports text/json output and CI fail gate
Inputs
Optional:
WORKFLOW_GLOB(default:.github/workflows/*.y*ml)TOP_N(default:20)OUTPUT_FORMAT(textorjson, default:text)WARN_SCORE(default:4)CRITICAL_SCORE(default:8)WORKFLOW_FILE_MATCH/WORKFLOW_FILE_EXCLUDE(regex, optional)ALLOW_REF_REGEX(regex, optional) — allow listed action refs (for example^v1\.2\.3$)FAIL_ON_CRITICAL(0or1, default:0)
Run
Text report:
WORKFLOW_GLOB='.github/workflows/*.yml' \
WARN_SCORE=4 \
CRITICAL_SCORE=8 \
bash skills/github-actions-secret-exposure-audit/scripts/secret-exposure-audit.sh
JSON output + fail gate:
WORKFLOW_GLOB='.github/workflows/*.y*ml' \
OUTPUT_FORMAT=json \
FAIL_ON_CRITICAL=1 \
bash skills/github-actions-secret-exposure-audit/scripts/secret-exposure-audit.sh
Run against bundled fixtures:
WORKFLOW_GLOB='skills/github-actions-secret-exposure-audit/fixtures/*.y*ml' \
bash skills/github-actions-secret-exposure-audit/scripts/secret-exposure-audit.sh
Output contract
- Exit
0in reporting mode (default) - Exit
1whenFAIL_ON_CRITICAL=1and one or more workflows are critical - Text mode prints summary + top risky workflows
- JSON mode prints summary + ranked workflows + critical workflows
Comments
Loading comments...
