GitHub Agentic Workflows

Blog

Weekly Update – August 3, 2026

Another packed week in github/gh-aw: five releases (v0.83.4 through v0.84.2) and over 100 merged pull requests. This week’s theme was hardening — shell script safety, container security, and closing sneaky edge cases in the safe-outputs pipeline.

A maintenance release focused on stability and security, with no breaking changes.

  • Fixed an argument injection vulnerability (CWE-88) in the git archive fallback path (#49500)
  • Hardened the PR Description Updater against one-shot safe-output exhaustion (#49463)
  • Stacked PR runs now default to top-of-stack, with a configurable on.pull_request.max-stack option extended to pull_request_review gating (#49420, #49453)
  • Explicit auto-merge strategies are now supported in safe-outputs.create-pull-request (#49412)
  • CLI version bumps across the board: Copilot 1.0.77, Pi 0.83.0, Playwright Browser v1.62.1, Syft v1.50.0, Grype v0.116.1 (#49521)

These releases rolled out a shellcheck linting phase for generated run steps in the compile pipeline, plus continued security patching for third-party MCP containers.

Agent of the Week: Dead Code Removal Agent

Section titled “ Agent of the Week: Dead Code Removal Agent”

Every day, this quiet janitor scans the codebase for functions nobody calls anymore — and deletes them, no drama required.

This week it stayed characteristically productive: across its last three scheduled runs it logged zero errors and zero warnings, chewing through roughly 43K tokens total, and its August 1st run (#49801) walked away with four confirmed dead functions removed in a single pass. One earlier run did hit a rough patch — a merge-conflict-heavy branch tripped it into a “risky” classification — but it shrugged that off and came back clean the very next scheduled run.

It’s the kind of agent that never asks for credit: three runs, one clean PR, and a repo that’s just a little tidier than it was last Tuesday.

Usage tip: Schedule dead-code cleanup agents like this one on a low-traffic cadence (daily or every few days) so PRs stay small, reviewable, and easy to revert if a “dead” function turns out to have a reflection-based caller.

View the workflow on GitHub

Update to v0.84.2 and give the new shellcheck flags a spin with --validate. As always, bug reports, security findings, and PRs are welcome in github/gh-aw.

Weekly Update – July 27, 2026

It was a busy week in github/gh-aw — four releases landed between Monday and Friday, each one stacking new capabilities on top of the last. Here’s a look at what shipped.

A focused security and developer-experience release.

  • Three new ESLint rules ship in one go: stringsjoinone catches unnecessary single-element strings.Join calls, no-setfailed-then-exit-zero prevents masked CI failures, and require-execfilesync-try-catch enforces error handling around execFileSync.
  • Sub-30s make test-unit — tests now run impacted packages first, giving you fast feedback without waiting for the full suite.
  • close_issue state-reason — agents that close issues can now pick the closure reason dynamically (completed, not-planned, etc.), making your workflows more expressive.

This one expanded gh aw compile into a proper security pipeline.

  • Container vulnerability scanning with Grype (#47474) — compile now checks gh-* workflow container images for CVEs before deployment.
  • License auditing and YAML linting are also now part of the compile pass, catching problems before they hit production.

Reliability and security fixes.

  • Smarter gh aw add (#47690) — local skill references are now auto-rewritten to fully-qualified specs on gh aw add, so workflows stay portable when you share them.
  • Shell injection detection improvements and a WIF auth regression fix round out the security hardening.

The biggest release of the week.

  • Git argument injection fix (VULN-001) (#47957) — a security fix for unvalidated ref/path values in remote import fallbacks that could allow command injection via crafted ref names.
  • GraphQL injection fix (#47952) — resolved two code scanning alerts for GraphQL injection in getOwnerNodeId.
  • GitHub MCP Server v1.7.0 (#47923) — all workflows now get the latest MCP tool improvements out of the box.
  • stringsconcatloop linter (#47894) — a new Go analyzer catches string += inside loops and guides you toward strings.Builder.
  • Post-update SHA integrity validation (#47959) — actions-lock entries are now SHA-verified after updates, closing a supply-chain tampering vector.
  • WASM panic recovery (#47854) — playground users will no longer see stuck promises after a compile panic.

Agent of the Week: Daily GitHub Docs SEO Optimizer

Section titled “ Agent of the Week: Daily GitHub Docs SEO Optimizer”

The newest addition to the workflow roster — quietly making sure GitHub Docs can actually find gh-aw when you need it.

daily-github-docs-seo-optimizer was shipped in v0.83.3 (#47975) and immediately got to work. Its job is to scan GitHub Docs pages and identify minimal, targeted updates that would help Copilot CLI surface Agentic Workflows as solutions to repository automation tasks. It’s not trying to game search engines — it’s trying to make sure that when a developer asks Copilot “how do I automate issue triage?”, the answer actually mentions gh aw.

Fresh off the assembly line this week, it hasn’t accumulated a rich log history yet (give it time), but the design is interesting: it runs daily on gpt-5.4 with a bare driver and creates issues prefixed [github-docs-seo] when it finds documentation gaps worth flagging. No filesystem writes, no PR spam — just targeted observations filed as issues for humans to review.

Usage tip: If you’re maintaining a library or CLI tool, a similar workflow can continuously audit whether your documentation appears in the right Copilot/LLM context for common developer questions — without needing a dedicated SEO team.

View the workflow on GitHub

Upgrade to v0.83.3 to get the full set of security fixes, the new GitHub MCP Server v1.7.0, and the expanded linter suite. Questions and contributions are always welcome in github/gh-aw.

Weekly Update – July 20, 2026

Another action-packed week in github/gh-aw! Between a fresh release, a firewall bump, improved rootless runner support, and a thoroughly redesigned workshop experience, there was plenty to keep the bots busy.

v0.82.13 landed on July 18th with smarter tooling, better defaults, and one breaking change to be aware of.

  • gh aw add now rejects packages with aw.yml config (#46273): If you maintain packages that include an aw.yml configuration file, update them before upgrading — the CLI will now refuse to install them outright.
  • Auto-configure COPILOT_PROVIDER_WIRE_API from the model catalog (#46156): The CLI now resolves the provider wire API endpoint automatically, so you don’t have to set it by hand.
  • Default-on issue intent metadata (#46207): set_issue_type, set_issue_field, and add_labels now emit intent metadata by default — richer audit trails with zero extra config.
  • NO_COLOR support (#46197): The CLI now honours the NO_COLOR environment variable for cleaner output in CI and accessibility-focused terminals.
  • Stronger ESLint alias detection (#46365): The no-core-setoutput and exportvariable rules now catch aliased and destructured @actions/core bindings, closing a common bypass pattern.
  • Firewall bump to v0.27.37: The default gh-aw-firewall was updated from v0.27.35 to v0.27.37, bringing ANTHROPIC_AUTH_TOKEN credential isolation, ~/.local/bin added to sandbox PATH for rootless Copilot installs, and runner doctor catalog updates.

  • Rootless flag for ARC/DinD runners: install_copilot_cli.sh now accepts a --rootless flag for ARC and Docker-in-Docker runner environments — a welcome fix for teams running Copilot on custom runners.

  • New timenowsub linter: The linter-miner contributed another Go linter that flags time.Now().Sub(t) and auto-rewrites it to the idiomatic time.Since(t). Small but satisfying.

  • Workshop redesign: The workshop has been moved to /workshop/, simplified to match docs styling (#46593), and now shows step counts on entry and scenario cards (#46622) — making it much easier to gauge how much is left before you start.

  • MCP toolsets sync: GitHub MCP toolset mappings were synced with the upstream github-mcp-server main branch, keeping tool definitions up to date.

The CI guardian who never sleeps — Avenger runs every hour, checks whether CI is passing, and if it’s not, merges main, runs recompile/fmt/lint/test, and opens a PR with any fixable issues.

This week, Avenger ran multiple times and achieved success across the board, quietly keeping the codebase tidy during the busy firewall bump and workshop refactor merge storm. Each run it faithfully pulled in the latest main, ran the full quality gauntlet, and — finding nothing broken — went back to sleep without making a fuss.

The highlight of Avenger’s week was its run right after the v0.27.37 firewall bump landed, where it dutifully checked that all 258 recompiled .lock.yml files hadn’t introduced any CI regressions. They hadn’t. Avenger nodded once and clocked out.

Usage tip: Avenger shines in repos where automated PRs (dependency bumps, codegen, lock file updates) can quietly break CI — it catches those regressions within the hour so humans don’t have to.

View the workflow on GitHub

Grab v0.82.13 and take the redesigned workshop for a spin. As always, feedback and contributions are welcome in github/gh-aw.

Weekly Update – July 13, 2026

Another active week in github/gh-aw! We shipped v0.82.8, landed several impactful features, and squashed a frustrating Docker authentication bug that had been interrupting sbx-runtime workflows.

v0.82.8 published on July 11th with a broad set of reliability and security improvements.

  • gVisor container runtime (#44796): Set sandbox.agent.runtime: gvisor in your workflow frontmatter to run the agent inside a gVisor sandbox for stronger isolation — great for workflows processing untrusted input.

  • Shared partials can declare sandbox.agent.mounts (#44500): Partial workflow files can now define mount configurations that get merged into the parent, enabling reusable sandbox setups without copy-paste.

  • AI authorship disclosure header (#44497): A new disclosure-header safe-output message type lets agents declare AI authorship inline in PR comments and issues.

  • gh aw add resolves transitive uses: references (#44763): Importing a workflow partial now automatically pulls in any nested imports — no more manual dependency hunting.

  • OAuth token failures surface in conclusion job (#44777, #44756): Token failures are no longer silently swallowed — they now show up where you’d expect.

  • docker-sbx runtime support — You can now run your agent inside a KVM-isolated Docker sbx microVM (sandbox.agent.runtime: docker-sbx) while keeping infrastructure containers on the host. Full hardware-virtualization isolation for workloads that need it.

  • Emit sbx credential refresh before agent execution — Fixes those maddening intermittent "user is not authenticated to Docker" errors. Docker Hub OAuth tokens from the daemon-setup step could expire by the time the agent ran. Now a fresh sbx login runs immediately before agent execution for all sbx-runtime workflows.

  • private-to-public-flows: allow frontmatter field — Wires the full frontmatter → struct → gateway JSON pipeline for tools.github.private-to-public-flows, letting you opt specific MCP servers out of sink-visibility enforcement when you explicitly trust those flows.

  • Bump gVisor release to 20250707.0 — Keeps the pinned gVisor release current with upstream security and reliability patches.

  • Add missing copilot safe-output fixture files — Adds fixtures for close-discussion, assign-to-agent, assign-to-user, and unassign-from-user, filling gaps in the safe-output test suite.

Agent of the Week: aw-failure-investigator

Section titled “ Agent of the Week: aw-failure-investigator”

Your on-call teammate who never sleeps — it wakes up every 6 hours, scans recent workflow run failures, and files GitHub issues so problems don’t fall through the cracks.

This week aw-failure-investigator ran three times across July 11–12, filing 3 issues in total (2 in one run, 1 in another). Each run clocked in around 15 minutes and consumed 250+ AI credits running on claude-opus-4-8 — because when you’re investigating failures, you don’t want to cut corners. The July 11th run had its own failure (meta!), but bounced back cleanly on its next scheduled cycle.

In one particularly busy shift it made 13 GitHub API calls in 15 minutes, which is either impressive efficiency or evidence that it found a lot to worry about. Probably both.

Usage tip: Pair aw-failure-investigator with a label-based notification rule so the right team gets pinged when it files an issue — that way failures surface asynchronously without requiring anyone to watch the Actions tab.

View the workflow on GitHub

Update to v0.82.8 and explore the new docker-sbx and gvisor sandbox runtimes. If you’ve been hitting Docker auth errors on sbx workflows, the credential refresh fix should put those to rest. Contributions and feedback are always welcome at github/gh-aw.

Weekly Update – July 6, 2026

It was a productive week in github/gh-aw — with dozens of pull requests landing across the compiler, linters, JavaScript setup scripts, and documentation. Here’s a look at the highlights.

A sneaky compiler bug was generating skillet.lock.yml files with broken actionlint expressions: safe_outputs and conclusion jobs referenced ${{ needs.pre_activation.outputs.skill_name }} without actually declaring pre_activation as a dependency. This fix auto-wires the dependency whenever a message template references pre_activation outputs — no more cryptic expression errors in generated lock files.

The linter suite had quietly grown several copies of the same helper functions — enclosingFuncType, context-type resolution, OS-call detection — scattered across individual analyzers. This PR gathers them all into a single pkg/linters/internal/astutil package and rewires the affected analyzers, eliminating drift risk and making future linter work easier to reason about.

copilot-agent-analysis was the largest ambient-context payload at 27,299 characters — most of it content that’s rarely needed at runtime. By gating cold-start rebuild content behind an optional import, this PR trims the first-request size to 11,876 characters, cutting token costs on every agent activation that uses this analysis path.

Agent effectiveness scores had been stuck around 61–62 for several weeks — a signal that prompt design, not runtime bugs, was the limiting factor. This PR introduces a reusable quality rubric shared across analyzer and reviewer workflows, giving those workflows a concrete target for what “good” looks like and a path out of the plateau.

A sweep across 23 files in actions/setup/js replaced global isNaN (which silently coerces inputs) with Number.isNaN, fixed core.setOutput value types, and cleaned up unhandled async rejections. Small correctness improvements that prevent subtle runtime surprises in CI steps.

Your Monday morning data journalist — scans all issue activity from the past week and compiles trends, charts, and resolution statistics into a single digest comment.

weekly-issue-summary has been running quietly every Monday around 3 PM UTC, pulling 30 days of issue data, generating CSV trend files, and rendering two charts: one for issue open/close velocity and one for resolution time distributions. In its last three runs it made 13 GitHub API calls each time and burned through roughly 59 AI credits — efficient for a workflow that touches every open and closed issue in the repo. Two of the three runs succeeded without any write-side effects, posting the full digest to a tracking issue, while one run hit a timeout on the data preparation phase and bailed cleanly.

The June 15th failure is the fun part: the observability report flagged it with the note “this run consumed a heavy execution profile for its task shape” and gently suggested the team might want to swap in a smaller model. The workflow took the feedback in stride and came back the following Monday working perfectly.

Usage tip: Pair weekly-issue-summary with a label strategy — the chart breakdowns are most useful when issues are consistently labeled, since resolution-time distributions get interesting when you can split them by category.

View the workflow on GitHub

All of this week’s changes are already on main — pull the latest and run gh aw compile to pick up the compiler and linter improvements. Got feedback or spotted something worth fixing? Contributions are always welcome at github/gh-aw.