Skip to main content

CLI for efficiently coordinating vulnerability reports and remediations with GitHub Security Advisories (GHSA)

Project description

ghsa-cli

CLI for efficiently coordinating vulnerability reports and remediations with GitHub Security Advisories (GHSA).

Install from PyPI (python -m pip install ghsa-cli) and authenticate using a GH_TOKEN environment variable within the shell session with a GitHub personal access token. Repository automatically resolves to the upstream/origin remote of the current working directory git repository or can be set manually via GH_REPO or --repo.

Below are some common workflows this tool is designed for:

Assigning yourself as 'Coordinator' for a ticket

Assign yourself as a coordinator. The alias me works for options specified via the command line to mean the currently authenticated user.

ghsa-cli credit GHSA-xxxx-xxxx-xxxx --coordinator me

Adding collaborators by name

Adds collaborators by name, either teams or individual users.

ghsa-cli collaborators GHSA-xxxx-xxxx-xxxx --login sethmlarson
ghsa-cli collaborators GHSA-xxxx-xxxx-xxxx --team python/fuzzers

Moving a GHSA to a public GitHub issue

Prompts the user with a new GitHub issue templated with the same title and description as the current ticket. By default, closes the GHSA if the GHSA isn't already closed.

ghsa-cli move-to-issue GHSA-xxxx-xxxx-xxxx

You can skip closing the GHSA after the issue templating page is opened by passing --no-close.

Listing open GHSAs where you are assigned 'Coordinator'

Useful for prioritizing which ticket you should work on next depending on their state, age, and whether a fix has been developed and reviewed.

ghsa-cli list --coordinator me

┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━┓
┃ id                  ┃ title ┃ state  ┃ age  ┃ cvss ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━┩
│ GHSA-xxxx-xxxx-xxxx │ ...   │ triage │ 10d  │ 6.5  │
│ GHSA-xxxx-xxxx-xxxx │ ...   │ draft  │ 16d  │ 7.0  │
│ GHSA-xxxx-xxxx-xxxx │ ...   │ draft  │ 21d  │ 2.0  │
│ GHSA-xxxx-xxxx-xxxx │ ...   │ draft  │ 60d  │ 2.0  │
└─────────────────────┴───────┴────────┴──────┴──────┘

Prioritizing reports based on CVSS or age

ghsa-cli list --sort cvss age

┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━┓
┃ id                  ┃ title ┃ state  ┃ age  ┃ cvss ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━┩
│ GHSA-xxxx-xxxx-xxxx │ ...   │ draft  │ 16d  │ 7.0  │
│ GHSA-xxxx-xxxx-xxxx │ ...   │ triage │ 10d  │ 6.5  │
│ GHSA-xxxx-xxxx-xxxx │ ...   │ draft  │ 60d  │ 2.0  │
│ GHSA-xxxx-xxxx-xxxx │ ...   │ draft  │ 21d  │ 2.0  │
└─────────────────────┴───────┴────────┴──────┴──────┘

Creating reports and integrating with CVE APIs

CVE APIs require a CVE Services API key. Set the CVE_USERNAME, CVE_CNA, and CVE_API_KEY environment variables to access properties about CVE IDs and records.

Use the --columns parameter with list to add additional columns to the report.

ghsa-cli list --state triage draft closed --columns id state cve_id cve_state

┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ id                  ┃ state  ┃ cve_id         ┃ cve_state ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ GHSA-xxxx-xxxx-xxxx │ triage │                │           │
│ GHSA-xxxx-xxxx-xxxx │ closed │ CVE-YYY-YYYY   │ published │
│ GHSA-xxxx-xxxx-xxxx │ draft  │ CVE-YYY-YYYY   │ reserved  │
└─────────────────────┴────────┴────────────────┴───────────┘

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

ghsa_cli-2026.4.14.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

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

ghsa_cli-2026.4.14-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file ghsa_cli-2026.4.14.tar.gz.

File metadata

  • Download URL: ghsa_cli-2026.4.14.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for ghsa_cli-2026.4.14.tar.gz
Algorithm Hash digest
SHA256 bf4ddc173377fbf69224336a27c5d4d7874befe4d6b7b0745e89497f7b27dc25
MD5 b7f9efe82e39f7ed1927d38992c5c9b2
BLAKE2b-256 162e7f295a64d529a2cc47ec2d89eab70f1b417dc418742a219143e9d4e1d916

See more details on using hashes here.

File details

Details for the file ghsa_cli-2026.4.14-py3-none-any.whl.

File metadata

  • Download URL: ghsa_cli-2026.4.14-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for ghsa_cli-2026.4.14-py3-none-any.whl
Algorithm Hash digest
SHA256 4f2816d82d3b7745edefe453a33c83e18b787b34c7da80f89fa1863b9ea1a5be
MD5 d23e74da7afce97476827224a5938cb2
BLAKE2b-256 9b23ed9e7b2f427d61224205f21edc9339c047603e74f3c200c96a6ad531eed4

See more details on using hashes here.

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