GitHub Security Lab's MIT-licensed Fuzzing Taskflow, built on its Taskflow Agent framework, takes a GitHub owner/repo and lets an agent pick entrypoints, analyze the build, write harnesses, run AFL++, iterate on coverage, and write a per-crash vulnerability report with root cause and a suggested patch. Claude Sonnet 5 is the default model; GitHub warns to run it only in disposable environments.

Key Takeaways

  • ✓One command: ./scripts/fuzzing/run_fuzzing.sh owner/repo, ideally inside a Codespace
  • ✓Per-iteration budgets double from 30s to 960s (~32 min per target); the loop stops after two iterations each gain <1% line coverage
  • ✓Every harness is built twice: an .afl binary (afl-clang-lto with ASan/UBSan) for fuzzing and a .cov binary for real line/branch coverage
  • ✓Crashes are minimized with afl-tmin, replayed under ASan, deduplicated by stack-top hash, and given one of seven verdicts
  • ✓LLM-chosen build commands run on the host with no container, so GitHub says to use only disposable, unprivileged environments
GitHub Security Lab open-sources Fuzzing Taskflow: an LLM agent runs the C/C++ fuzzing loop from harness writing to vulnerability reports
🖼️Official Media
Click to view high-res
🧭

Turn your technical choice into a development budget

Compare 40 dev plans & simulate token costs vs $20/mo subscriptions

🔬

In-Depth Technical Analysis

GitHub Security Lab's Fuzzing Taskflow (MIT, built on the Taskflow Agent framework) automates the human loop of continuous fuzzing for C/C++ projects. Given an owner/repo slug, the agent installs AFL++, clones the repo, picks entrypoints, writes harnesses, fuzzes, reads real coverage, and improves harnesses until a plateau, then triages crashes. Architecture: a shell driver, one taskflow YAML per stage, and MCP tools for execution; the agent decides, tools execute, and state lives in SQLite. Each harness is built as an AFL-instrumented binary and a coverage binary. Budgets double from 30s to 960s per iteration (~32 min/target) with a default 1% line-coverage plateau threshold. Structure-aware mutators cover JSON, XML, regex, PNG and TLV, plus source-derived dictionaries that grow toward uncovered guards. Crashes are minimized, ASan-replayed, deduplicated by stack-top hash, and written up with root cause, reachability, exploitability, a suggested diff and a regression-test sketch, marked review required. GitHub published no bug-count benchmarks. Claude Sonnet 5 is the default model. Run it only in a Codespace or throwaway VM because LLM-chosen build commands execute on the host.

Action HubReady to adopt this in production?

Benchmark side-by-side against alternatives, or calculate monthly token cost vs subscription break-even.