[daily secrets] Daily Secrets Analysis Report - 2026-03-31 #23790
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by Daily Secrets Analysis Agent. A newer discussion is available at Discussion #23962. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
🔐 Daily Secrets Analysis Report
Date: 2026-03-31
Workflow Files Analyzed: 178
Run: §23822098059
📊 Executive Summary
secrets.*referencesgithub.tokenreferences🛡️ Security Posture
✅ Universal Redaction: All 178 workflows include
⚠️ HTTP MCP Header Injection: 2 workflows embed
redact_secretssteps — no unmasked secrets in logs✅ Permissions Defined: All 178 workflows have explicit
permissions:blocks — no over-permissioned workflows✅ No Output Leakage: Zero instances of secrets referenced in
outputs:blocks✅ Token Cascade Pattern: All workflows use
GH_AW_GITHUB_MCP_SERVER_TOKEN || GH_AW_GITHUB_TOKEN || GITHUB_TOKENfallback chains for resilient authsecrets.TAVILY_API_KEYdirectly inside MCP HTTP header JSON configs inrun:blocks (see details below)🎯 Key Findings
GitHub tokens dominate (84.3%): The vast majority of secret usage (5,541 individual refs across 9 names) is GitHub access tokens, reflecting the GitHub-native nature of these workflows. The token cascade pattern (
GH_AW_GITHUB_MCP_SERVER_TOKEN → GH_AW_GITHUB_TOKEN → GITHUB_TOKEN) ensures workflows remain functional across different repo configurations.AI provider key distribution: 382 references across ANTHROPIC (160), OPENAI (108), CODEX (108), GEMINI (4), and SENTRY_OPENAI (2) keys — Anthropic leads at 41.9% of AI provider secret usage, reflecting Claude/Anthropic being the primary non-Copilot AI engine.
MCP HTTP header secret interpolation pattern:
scout.lock.ymlandsmoke-claude.lock.ymlembed$\{\{ secrets.TAVILY_API_KEY }}directly inside JSON MCP configuration strings withinrun:blocks (for Tavily HTTP MCP server auth headers). GitHub masks secrets in logs, but this is a structural pattern difference from the standard env-variable approach.💡 Recommendations
Review HTTP MCP header secret pattern: The
secrets.TAVILY_API_KEYdirect interpolation into MCP JSON configs (scout, smoke-claude) is functionally safe (GitHub masks values) but deviates from the env-var best practice. Consider if the compiler can emit these as env vars and reference them via$TAVILY_API_KEYin the JSON instead.Monitor CODEX_API_KEY adoption: With 108 references (equal to OPENAI_API_KEY), Codex engine usage appears significant. Verify these are active workflows and not residual from migration.
CI trigger token scope audit:
GH_AW_CI_TRIGGER_TOKENappears in 42 workflows — periodically review which workflows genuinely need cross-repo trigger capabilities.🔑 All 26 Secrets by Usage
GITHUB_TOKENGH_AW_GITHUB_TOKENGH_AW_GITHUB_MCP_SERVER_TOKENCOPILOT_GITHUB_TOKENANTHROPIC_API_KEYOPENAI_API_KEYCODEX_API_KEYGH_AW_CI_TRIGGER_TOKENGH_AW_SIDE_REPO_PATTAVILY_API_KEYGH_AW_PROJECT_GITHUB_TOKENNOTION_API_TOKENGH_AW_AGENT_TOKENGEMINI_API_KEYBRAVE_API_KEYDD_SITEDD_APPLICATION_KEYDD_API_KEYSENTRY_OPENAI_API_KEYSENTRY_ACCESS_TOKENCONTEXT7_API_KEYAZURE_TENANT_IDAZURE_CLIENT_SECRETAZURE_CLIENT_IDSLACK_BOT_TOKENGH_AW_PLUGINS_TOKEN📂 Secret Categories Breakdown
Two workflows contain
secrets.TAVILY_API_KEYdirectly interpolated into MCP HTTP header JSON configuration strings insiderun:blocks:scout.lock.ymlline 772smoke-claude.lock.ymlline 1976This pattern is used for HTTP MCP server authentication. GitHub Actions automatically masks secret values in logs, so there is no actual log leakage risk. However, the recommended pattern is to assign the secret to an environment variable first and reference it indirectly.
All other secrets follow the safe env-var pattern:
📖 Reference Documentation
scratchpad/secrets-yml.mdactions/setup/js/redact_secrets.cjsskills/http-mcp-headers.mdGenerated: 2026-03-31T22:20Z
Workflow: daily-secrets
Beta Was this translation helpful? Give feedback.
All reactions