Skip to main content

issuebrief

CI PyPI Python License: MIT

Create a shareable GitHub Issue Markdown report from a command's output—locally, with best-effort redaction.

Before sharing, review every generated report yourself. Redaction is heuristic and cannot guarantee that every secret, personal detail, or sensitive path has been removed.

简体中文 README

In 30 seconds

# After the v0.1.1 release workflow has successfully published to PyPI:
python -m pip install "issuebrief==0.1.1"

# Before PyPI publication succeeds, install the versioned source tag instead:
python -m pip install "git+https://github.com/huangwentao1108-arch/issuebrief.git@v0.1.1"
issuebrief run --output issue.md -- python -m your_package --diagnose

Open issue.md, inspect it for sensitive material, then paste it into a GitHub Issue if it is safe to do so.

issuebrief never sends your command output anywhere: no network requests, no account, no telemetry, and no background service. It runs the command you explicitly provide and writes only the requested report.

Commands

Run and report

issuebrief run [--output PATH] [--timeout SECONDS] [--no-system-info] -- COMMAND...

The command runs without a shell. Its standard output, standard error, displayed command, and the current user's home path are passed through the built-in redactor before Markdown is written.

# Default output is issue-report.md
issuebrief run -- python -m pip --version

# Stop the child process after ten seconds
issuebrief run --timeout 10 --output diagnostics.md -- your-command --flag

# Do not include OS and Python version metadata
issuebrief run --no-system-info -- your-command

The report contains the command, status, exit code, duration, sanitized working directory, optional system information, sanitized stdout/stderr, and replacement counts.

What the report looks like

# Issue Brief

## Result

- Status: completed
- Exit code: 2
- Duration: 0.055s

## Standard Error

    configuration invalid

## Redaction

- HOME_PATH: 1

Sanitize existing text

issuebrief sanitize [FILE|-]

With no argument (or -), reads standard input and writes sanitized text to standard output:

issuebrief sanitize app.log > app-sanitized.log
some-command 2>&1 | issuebrief sanitize

Exit codes

For run, the child command's exit code is returned when it completes. A timeout returns 124; a command that cannot be started returns 127. Argument, input, and output errors are reported by the CLI and exit nonzero. sanitize returns 0 after successfully writing sanitized text.

Redaction and its limits

The built-in rules target common credentials (including GitHub-style tokens, bearer credentials, private-key blocks, common API key assignments, and credential URLs), email addresses, home-directory paths, and non-loopback IPv4 addresses. Replacements are visibly marked, for example [REDACTED:GITHUB_TOKEN].

This is deliberately a small, deterministic first-pass safety tool—not a security boundary or a complete secret scanner. Custom formats, encoded values, context that identifies a person or company, and newly introduced credential patterns can remain. Never run untrusted commands merely to make a report; never publish a report until a human has reviewed it.

Requirements and development

  • Python 3.10 or newer
  • No runtime network access or third-party runtime dependency

The v0.1.1 release workflow is configured for PyPI Trusted Publishing. Do not assume issuebrief==0.1.1 is available on PyPI until that workflow has completed successfully; until then, use the versioned source tag shown above.

Run the standard-library test suite from a checkout:

python -m pip install -e ".[dev]"
ruff check src tests
ruff format --check src tests
python -m unittest discover -s tests -v
python -m build
python -m twine check dist/*

See CONTRIBUTING.md for contribution guidance, SECURITY.md for vulnerability reporting, and CHANGELOG.md for releases.

License

MIT. See LICENSE.

Download files

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

Source Distribution

issuebrief-0.1.1.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

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

issuebrief-0.1.1-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

Details for the file issuebrief-0.1.1.tar.gz.

File metadata

  • Download URL: issuebrief-0.1.1.tar.gz
  • Upload date:
  • Size: 21.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for issuebrief-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d01f21f6c5050eafe8ab85717ea3ae25fe6f5885dcc072474bcd6eea238268ab
MD5 34fa5185050c7f83ad17514dfaff86c1
BLAKE2b-256 11a9f0a36cff85270507ab156ecd38a6b00031b9ead3bb2803cf73dcc92db707

See more details on using hashes here.

Provenance

The following attestation bundles were made for issuebrief-0.1.1.tar.gz:

Publisher: release.yml on huangwentao1108-arch/issuebrief

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

File details

Details for the file issuebrief-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: issuebrief-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 12.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for issuebrief-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 696cefe22fc980a7601dbca6d3950cf930f49610e0d96584ec3c58a688e74bd8
MD5 b6d814e2f1fd0481f53427ec3c4f0587
BLAKE2b-256 e31c4da372d03c4fec9728114b5d3819a045c03018cbd66bb1ea0fd3837b7e96

See more details on using hashes here.

Provenance

The following attestation bundles were made for issuebrief-0.1.1-py3-none-any.whl:

Publisher: release.yml on huangwentao1108-arch/issuebrief

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