issuebrief
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.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d01f21f6c5050eafe8ab85717ea3ae25fe6f5885dcc072474bcd6eea238268ab
|
|
| MD5 |
34fa5185050c7f83ad17514dfaff86c1
|
|
| BLAKE2b-256 |
11a9f0a36cff85270507ab156ecd38a6b00031b9ead3bb2803cf73dcc92db707
|
Provenance
The following attestation bundles were made for issuebrief-0.1.1.tar.gz:
Publisher:
release.yml on huangwentao1108-arch/issuebrief
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
issuebrief-0.1.1.tar.gz -
Subject digest:
d01f21f6c5050eafe8ab85717ea3ae25fe6f5885dcc072474bcd6eea238268ab - Sigstore transparency entry: 2287750508
- Sigstore integration time:
-
Permalink:
huangwentao1108-arch/issuebrief@9463a7a7f3e5772489c28edda874a78da4a65cbc -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/huangwentao1108-arch
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9463a7a7f3e5772489c28edda874a78da4a65cbc -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
696cefe22fc980a7601dbca6d3950cf930f49610e0d96584ec3c58a688e74bd8
|
|
| MD5 |
b6d814e2f1fd0481f53427ec3c4f0587
|
|
| BLAKE2b-256 |
e31c4da372d03c4fec9728114b5d3819a045c03018cbd66bb1ea0fd3837b7e96
|
Provenance
The following attestation bundles were made for issuebrief-0.1.1-py3-none-any.whl:
Publisher:
release.yml on huangwentao1108-arch/issuebrief
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
issuebrief-0.1.1-py3-none-any.whl -
Subject digest:
696cefe22fc980a7601dbca6d3950cf930f49610e0d96584ec3c58a688e74bd8 - Sigstore transparency entry: 2287750636
- Sigstore integration time:
-
Permalink:
huangwentao1108-arch/issuebrief@9463a7a7f3e5772489c28edda874a78da4a65cbc -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/huangwentao1108-arch
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9463a7a7f3e5772489c28edda874a78da4a65cbc -
Trigger Event:
push
-
Statement type: