Skip to main content

Example taskflows to use with the the GitHub Security Lab Taskflow Agent Framework (https://github.com/GitHubSecurityLab/seclab-taskflow-agent)

Project description

GitHub Security Lab Taskflows

This repository contains example taskflows to use with the SecLab Taskflow Agent, as well as the custom MCP servers that are needed to run the taskflows.

Quick start

python -m seclab_taskflow_agent -t seclab_taskflows.taskflows.audit.ghsa_variant_analysis_demo -g repo=github/cmark-gfm -g ghsa=GHSA-c944-cv5f-hpvr

Now try running our auditing taskflows on one of your projects. Here, we're using the OWASP Juice Shop as an example:

./scripts/audit/run_audit.sh juice-shop/juice-shop

⚠️ Note: the auditing taskflows can take several hours to run, especially on larger projects, and make a lot of AI requests, which can cost a non-trivial amount of money. By default, the taskflows use the Copilot API. You can find out more information about Copilot Billing here. Alternatively, you could use a different AI API by setting the AI_API_ENDPOINT environment variable, as explained here.

The results of the audit are written to an SQLite database, which is opened automatically in an SQLite viewer at the end of the run. The results are in the table named "audit_result". The table has a column named "has_vulnerability", with checkmarks in the rows that are most likely to be genuine vulnerabilities.

Running with docker script

We recommend running taskflows in a sandboxed environment. GitHub Codespaces are convenient, or if you prefer you can use the script run_seclab_agent.sh to run a docker container of the seclab-taskflow-agent as outlined here. Note that this script needs to be run from the main directory of the repo, and the .env file with the environment variables for the custom MCP servers to store data needs to be in the same directory.

First, create a .env file in the main directory of the repo. For run_seclab_agent.sh you can use:

MEMCACHE_STATE_DIR=/app/data
CODEQL_DBS_BASE_PATH=/app/data
DATA_DIR=/app/data
LOG_DIR=/app/logs

The MEMCACHE_STATE_DIR is needed to persist some intermediate data in the memcache, DATA_DIR is needed for various mcp servers to store intermediate results, and LOG_DIR is used to store log files generated by the servers. These can be set in a .env file in the main directory. If no environment variables are set for the custom MCP servers, relevant folders will be created automatically. The location depends on the platform, and is set by platformdirs.

In addition, AI API endpoints and secrets also need to be configured via environment variables or Codespace secrets. In particular, the environment variables AI_API_TOKEN and AI_API_ENDPOINT need to be set to the appropriate AI API endpoints and credentials. If not set, the default AI_API_ENDPOINT is GitHub Copilot:

AI_API_ENDPOINT="https://api.githubcopilot.com"

In addition, the GH_TOKEN environment variable also needs to be set to allow interaction with the GitHub API, such as fetching content, creating issues etc.

Individual taskflows may need additional setup, please refer to the README.md in the relevant subdirectories for further requirements.

After setting the relevant env vars, run an example taskflow with:

./scripts/run_seclab_agent.sh -t seclab_taskflows.taskflows.audit.ghsa_variant_analysis_demo -g repo=github/cmark-gfm -g ghsa=GHSA-c944-cv5f-hpvr

Background

SecLab Taskflows is a companion repository to the SecLab Taskflow Agent repository. SecLab Taskflow Agent is an experimental agentic framework maintained by GitHub Security Lab. This repository provides example taskflows and supporting resources for use with the SecLab Taskflow Agent. We are using the agent and these taskflows to experiment with using AI Agents for security purposes, such as auditing code for vulnerabilities or triaging issues.

We'd love to hear your feedback. Please create an issue to send us a feature request or bug report. We also welcome pull requests (see our contribution guidelines for more information if you wish to contribute).

Requirements

Python >= 3.10 or Docker

License

This project is licensed under the terms of the MIT license. Please refer to the LICENSE file for the full terms.

Maintainers

CODEOWNERS

Support

SUPPORT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

seclab_taskflows-0.1.0.tar.gz (86.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

seclab_taskflows-0.1.0-py3-none-any.whl (131.5 kB view details)

Uploaded Python 3

File details

Details for the file seclab_taskflows-0.1.0.tar.gz.

File metadata

  • Download URL: seclab_taskflows-0.1.0.tar.gz
  • Upload date:
  • Size: 86.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for seclab_taskflows-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a86d48953df44af3551d423bdbc3ceb0161c5f860e7f9a6e7cd92e06bcdbec2c
MD5 9319a4d95a9960a481f058124be9d604
BLAKE2b-256 f7e98ab0730047e9ca9e6ec24223da07a86f2aa74041d36724b1d47b3debd732

See more details on using hashes here.

Provenance

The following attestation bundles were made for seclab_taskflows-0.1.0.tar.gz:

Publisher: publish-to-pypi.yaml on GitHubSecurityLab/seclab-taskflows

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file seclab_taskflows-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for seclab_taskflows-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 124e5a5b8f0ab74ab96f45f25f5fe8fc4f068dd79105fb71d9a6e5f99b3dbb59
MD5 85951dd6e31f2ff41c884e4fa0cd279d
BLAKE2b-256 e3e096bc713b7d8b6bdbbef31234fa3b5da65842a46f7b831c67ced255168eba

See more details on using hashes here.

Provenance

The following attestation bundles were made for seclab_taskflows-0.1.0-py3-none-any.whl:

Publisher: publish-to-pypi.yaml on GitHubSecurityLab/seclab-taskflows

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page