
Reporting Sensitive Encrypted Gh Issues
- 1 installs
- 257 repo stars
- Updated July 24, 2026
- dicklesworthstone/misc_coding_agent_tips_and_scripts
Encrypts, submits, scans, and decrypts age-encrypted (X25519) GitHub issues for reporting and receiving security vulnerabilities.
About
Uses the gh-issue-decrypt tool to encrypt a vulnerability report to a project's age public key, submit it as a GitHub issue, and scan or decrypt encrypted issues. A developer uses it to report or receive sensitive security reports privately.
- One-command encrypt-and-submit using an age public key from the README
- Scans repo issues and decrypts `[enc:age]` blocks with a local private key
Reporting Sensitive Encrypted Gh Issues by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,835 of 2,203 Security skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/dicklesworthstone/misc_coding_agent_tips_and_scripts --skill reporting-sensitive-encrypted-gh-issuesAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 257 |
| Last updated | July 24, 2026 |
| Repository | dicklesworthstone/misc_coding_agent_tips_and_scripts ↗ |
What it does
Encrypts, submits, scans, and decrypts age-encrypted (X25519) GitHub issues for reporting and receiving security vulnerabilities.
Files
<!-- TOC: Dispatch | Encrypt & Submit | Scan & Decrypt | Format | Commands | Notes -->
Encrypted GitHub Issues — gh-issue-decrypt
If `gh-issue-decrypt` is not installed, run:
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/misc_coding_agent_tips_and_scripts/main/gh-issue-decrypt?$(date +%s)" | bash -s -- --installWhat Do You Need?
| Goal | Command |
|---|---|
| Submit encrypted security report | `echo "details" \ |
| Scan repo for encrypted issues | gh-issue-decrypt OWNER/REPO |
| Decrypt a specific issue | gh-issue-decrypt OWNER/REPO 42 |
| Set up receiving (install + keygen) | gh-issue-decrypt --install |
| Full interactive guide | gh-issue-decrypt (no args) |
Encrypt & Submit a Security Report
# 1. Find the project's age public key in their README:
# grep -oE 'age1[a-z0-9]{58}' README.md
# 2. Encrypt + submit in one command:
echo "SQL injection in /api/users — WHERE clause interpolates user input. \
Affects v2.0-2.4. PoC: curl '/api/users?id=1 OR 1=1'" \
| gh-issue-decrypt --encrypt age1PUBKEY_FROM_README \
--submit OWNER/REPO --title "Security: SQLi in /api/users"
# Or encrypt only (outputs [enc:age] block for manual pasting):
echo "details" | gh-issue-decrypt --encrypt age1PUBKEY_FROM_READMEThe script auto-installs age if missing. Requires gh auth login for --submit.
Scan & Decrypt Issues
gh-issue-decrypt OWNER/REPO # all open issues
gh-issue-decrypt OWNER/REPO 42 # specific issue + comments
gh-issue-decrypt --json OWNER/REPO # machine-readable outputOutput:
-> Scanning open issues in OWNER/REPO...
=== Issue #42 -- encrypted block(s) found ===
ok Block #1 decrypted:
SQL injection in /api/users — WHERE clause interpolates user input.Private key: ~/.config/age/issuebot.key (set AGE_KEY env var to override).
Issue Format
Encrypted blocks in issue bodies look like:
[enc:age]
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA...
-----END AGE ENCRYPTED FILE-----
[/enc:age]The [enc:age] markers are optional — bare BEGIN AGE ENCRYPTED FILE headers are detected too. Plaintext and encrypted blocks can be mixed in the same issue.
All Commands
| Command | Purpose |
|---|---|
gh-issue-decrypt | Quickstart guide (detects local keys) |
gh-issue-decrypt OWNER/REPO | Scan open issues |
gh-issue-decrypt OWNER/REPO 42 | Decrypt specific issue |
gh-issue-decrypt --encrypt PUBKEY | Encrypt stdin → armored block |
gh-issue-decrypt --encrypt PUBKEY --submit O/R --title "T" | Encrypt + create issue |
gh-issue-decrypt --json OWNER/REPO | JSON output |
gh-issue-decrypt --install | Install age + gh + keygen |
gh-issue-decrypt --keygen | Generate age keypair |
gh-issue-decrypt --key FILE | Alternate private key |
Notes
- No authentication: age encrypts but doesn't prove sender identity. Pair with SSH signatures or minisign if sender verification matters.
- Back up the private key (
~/.config/age/issuebot.key) — loss means encrypted messages are unrecoverable. - Public keys are 62 chars:
age1+ 58 lowercase alphanumeric (Bech32). Safe to publish in READMEs.