You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Analysis of all .github/workflows/*.lock.yml in github/gh-aw, generated by run §34525720125.
299 lockfiles, 0 skipped, 45,873,733 bytes total (avg 153.4 KB, min 90.0 KB, max 239.6 KB).
Key findings
Split-permission architecture is universal. Every agent job caps out at contents: read plus a handful of scoped reads (issues 260/299, pull-requests 255/299, actions 114/299, discussions 52/299) — no agent job holds a write scope. Yet the union of all jobs in a workflow shows a write scope in all 299/299 workflows. This confirms every workflow uses a dedicated, more-privileged "apply safe-outputs" job rather than granting the agent job write access directly.
Baseline safe-output scaffolding is near-universal, real writes are selective.noop/missing_data/missing_tool/report_incomplete/create_report_incomplete_issue each appear in 293/299 workflows (98%), but actual write-producing types are far rarer: create_issue 146 (48.8%), create_discussion 92 (30.8%), add_comment 77 (25.8%), create_pull_request 64 (21.4%).
Discussion-category detection was 100% clean — 92/92 create_discussion workflows resolved a category, 0 via fallback, 0 unresolved. Of those, 79 (85.9%) post to audits, with the rest spread across announcements (5), artifacts (2), dev (2), research (2), general (1), daily-news (1).
Engine adoption: copilot leads at 123/299 (41.1%), then codex 74 (24.7%), claude 56 (18.7%), pi 31 (10.4%), with a long tail of 9 other engines (aider, opencode, goose, crush, cursor, deepseek-harness, gemini, kiro, pydantic-ai) at ≤3 workflows each. engine_unknown = 0 — every lockfile resolved an engine from gh-aw-metadata.
No change since 2026-09-09. Every metric in this report is byte-identical to yesterday's snapshot — the lockfile fleet has been stable for at least 24h.
Trigger analysis
Combination
Count
Share
schedule + workflow_dispatch
209
69.9%
workflow_dispatch only
38
12.7%
pull_request + schedule + workflow_dispatch
29
9.7%
pull_request + workflow_dispatch
9
3.0%
pull_request only
3
1.0%
other combinations (10 distinct)
11
3.7%
workflow_dispatch appears in 291/299 (97.3%); schedule in 242/299 (81.0%). The single most common cron is 0 0 */2 * * (every 2 days at 00:00 UTC) at 42 workflows — a potential scheduling thundering-herd (see recommendations).
Notable crons (>1 occurrence):0 0 */2 * *×42, 7 5 * * *×3, then eight distinct crons at ×2, and 20 more at ×1.
Safe outputs analysis
Type
Count
Type
Count
create_issue
146
create_pull_request_review_comment
16
create_discussion
92
submit_pull_request_review
16
add_comment
77
upload_artifact
14
create_pull_request
64
create_check_run
14
push_repo_memory
36
update_issue
11
add_labels
32
push_to_pull_request_branch
11
upload_asset
26
max_bot_mentions
8
mentions
23
close_issue / remove_labels
7 each
safe_outputs_config_missing = 0 — configuration was recovered for every lockfile. Long tail (≤6 workflows each) includes emerging integrations: jira_create_issue, linear_create_issue, create_project_status_update, send-slack-message/post_slack_message variants.
Structural characteristics
Metric
Avg
Max
Jobs / workflow
7.35
14
Steps / workflow
144.15
205
Script (run:) steps / workflow
98.72
136
Permission patterns (agent job vs. union of all jobs)
Scope
Agent job: read / write / none
Union of jobs: read / write / none
contents
299 / 0 / 0
93 / 206 / 0
issues
260 / 0 / 39
0 / 299 / 0
pull-requests
255 / 0 / 44
116 / 146 / 37
actions
114 / 0 / 185
190 / 109 / 0
discussions
52 / 0 / 247
10 / 96 / 193
security-events
14 / 0 / 285
12 / 3 / 284
id-token
0 / 2 / 297
0 / 3 / 296
permissions_unknown = 0. All other scopes (checks, deployments, packages, pages, repository-projects, statuses, attestations) are none for ≥298/299 agent jobs. Note issues: write in 299/299 union — the safe-outputs apply job universally needs it (e.g. for label/comment side effects), independent of whether create_issue itself is configured.
safeoutputs MCP server is present in all 299 workflows; github in 175 (58.5%); agenticworkflows in 44; serena in 25; mcpscripts in 12; smaller usage of tavily, sentry, ast-grep, datadog, deepwiki, microsoftdocs, grafana, kreuzberg, mempalace, graft, agentdb, ruflo (≤5 each). mcp_fallback_used_count = 0 — every server list came from the gh-aw-manifest JSON, no regex fallback needed.
Historical trends
Compared against /tmp/gh-aw/cache-memory/history/2026-09-09.json: no deltas — lockfile count, byte totals, trigger/safe-output/engine/permission distributions are all identical to yesterday.
Recommendations
Stagger the 42 workflows sharing the 0 0 */2 * * cron across the day to avoid a midnight-UTC scheduling spike.
The agent job → read-only / apply job → write permission split is consistently applied fleet-wide; no gaps found worth flagging.
Watch the small but growing set of third-party integrations (Jira, Linear, Slack variants) in the safe-output long tail — worth a shared template if adoption continues.
Methodology: single-script compact JSON analysis (lockfile_stats_v4.py, cached at /tmp/gh-aw/cache-memory/scripts/), reading gh-aw-metadata/gh-aw-manifest header comments and the GH_AW_SAFE_OUTPUTS_CONFIG env JSON per lockfile — never the always-empty top-level permissions: {}.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Lockfile Statistics — 2026-09-10
Analysis of all
.github/workflows/*.lock.ymlingithub/gh-aw, generated by run §34525720125.299 lockfiles, 0 skipped, 45,873,733 bytes total (avg 153.4 KB, min 90.0 KB, max 239.6 KB).
Key findings
contents: readplus a handful of scoped reads (issues 260/299, pull-requests 255/299, actions 114/299, discussions 52/299) — no agent job holds a write scope. Yet the union of all jobs in a workflow shows a write scope in all 299/299 workflows. This confirms every workflow uses a dedicated, more-privileged "apply safe-outputs" job rather than granting the agent job write access directly.noop/missing_data/missing_tool/report_incomplete/create_report_incomplete_issueeach appear in 293/299 workflows (98%), but actual write-producing types are far rarer:create_issue146 (48.8%),create_discussion92 (30.8%),add_comment77 (25.8%),create_pull_request64 (21.4%).create_discussionworkflows resolved a category, 0 via fallback, 0 unresolved. Of those, 79 (85.9%) post to audits, with the rest spread across announcements (5), artifacts (2), dev (2), research (2), general (1), daily-news (1).engine_unknown = 0— every lockfile resolved an engine fromgh-aw-metadata.Trigger analysis
workflow_dispatchappears in 291/299 (97.3%);schedulein 242/299 (81.0%). The single most common cron is0 0 */2 * *(every 2 days at 00:00 UTC) at 42 workflows — a potential scheduling thundering-herd (see recommendations).Full trigger and cron breakdown
Triggers: workflow_dispatch 291, schedule 242, pull_request 43, issues 5, issue_comment 3, workflow_call 3, deployment_status 1, workflow_run 1, discussion 1, discussion_comment 1, push 1, pull_request_review_comment 1.
Notable crons (>1 occurrence):
0 0 */2 * *×42,7 5 * * *×3, then eight distinct crons at ×2, and 20 more at ×1.Safe outputs analysis
safe_outputs_config_missing = 0— configuration was recovered for every lockfile. Long tail (≤6 workflows each) includes emerging integrations:jira_create_issue,linear_create_issue,create_project_status_update,send-slack-message/post_slack_messagevariants.Structural characteristics
Permission patterns (agent job vs. union of all jobs)
permissions_unknown = 0. All other scopes (checks, deployments, packages, pages, repository-projects, statuses, attestations) arenonefor ≥298/299 agent jobs. Noteissues: writein 299/299 union — the safe-outputs apply job universally needs it (e.g. for label/comment side effects), independent of whethercreate_issueitself is configured.Engine distribution
copilot 123 · codex 74 · claude 56 · pi 31 · aider 3 · opencode 3 · goose 3 · crush 1 · cursor 1 · deepseek-harness 1 · gemini 1 · kiro 1 · pydantic-ai 1
Top models:
openai/gpt-5.3-codex(37),copilot/gpt-5.3-codex(33),copilot/auto(19),openai/gpt-5.4(11),copilot/claude-sonnet-4.5(9).Tool & MCP patterns
safeoutputsMCP server is present in all 299 workflows;githubin 175 (58.5%);agenticworkflowsin 44;serenain 25;mcpscriptsin 12; smaller usage of tavily, sentry, ast-grep, datadog, deepwiki, microsoftdocs, grafana, kreuzberg, mempalace, graft, agentdb, ruflo (≤5 each).mcp_fallback_used_count = 0— every server list came from thegh-aw-manifestJSON, no regex fallback needed.Historical trends
Compared against
/tmp/gh-aw/cache-memory/history/2026-09-09.json: no deltas — lockfile count, byte totals, trigger/safe-output/engine/permission distributions are all identical to yesterday.Recommendations
0 0 */2 * *cron across the day to avoid a midnight-UTC scheduling spike.agent job → read-only / apply job → writepermission split is consistently applied fleet-wide; no gaps found worth flagging.Methodology: single-script compact JSON analysis (
lockfile_stats_v4.py, cached at/tmp/gh-aw/cache-memory/scripts/), readinggh-aw-metadata/gh-aw-manifestheader comments and theGH_AW_SAFE_OUTPUTS_CONFIGenv JSON per lockfile — never the always-empty top-levelpermissions: {}.References:
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
api.anthropic.comTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.
All reactions